公交IC卡管理系统实验报告
时间:2025-05-15
时间:2025-05-15
公交IC卡管理系统
一 目的
运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计提高学生综合运用所学知识来解决实际问题及进行科学实验或技术设计的初步能力。
对于本课程设计而言重点在熟悉C语言基本语法规范以及灵活运用C语言编程解决实际问题。
二 需求分析
1、该程序主要为实现某公交公司关于公交IC卡的管理,首先应包括基本卡号及其相关信息(如卡号所对应的初始金额)的录入系统;
2、应拥有用户乘车处理系统,即记录用户乘车明细(如乘车日期,所称车辆)并实现将乘车费用在相应卡上进行扣除;
3、当某卡余额不足时,用户可对其进行充值以实现长久使用;
4、应具有查询功能,即输入某一卡号,便可对该卡内余额,扣费明细进行查询;
5、以上功能以菜单方式出现并执行。
三 概要设计
1、主函数模块
定义一个结构体组,用来储存IC卡信息
typedef struct information
{
char cardnumber[11]; /*卡号*/ float balance; /*余额*/ long date[N]; /*乘车日期*/ int busnumber[N]; /*所乘车*/ float expenses[N]; /*费用*/
}INFORMATION;
main()
{
定义变量及对其进行初始化;
利用do-while循环执行菜单;
将调用函数插入菜单中;
由键盘录入来确定循环是否继续;
2、被调用函数模块
①int InputInformation(INFORMATION inf[])
/*函数功能:基本信息包括卡号(只允许录入十位卡号)和初始金额的录入
函数参数:inf为结构体组
函数返回值:录入卡号个数
*/
{
定义变量及其初始化;
利用do-while进行基本信息即卡号(只允许录入十位)及初始金额的录入,并记录每位卡号所对应的下标值;
由键盘录入的字符来确定是否停止对该函数的调用;
返回录入的卡号个数;
}
②int ProcessingService(INFORMATION inf[],int i,float *p)
/*函数功能:乘车明细输入以及对帐户进行扣费处理,若余额不足则进行提示
函数参数:inf为结构体组,i为所输卡号对应下标值,*p为账户余额地址
函数返回值:乘车次数
*/
{
定义变量及其初始化;
在主函数中输入卡号并调用查找函数找到该卡号所对应下标值传值给该函数; 记录该卡号的扣费明细;
当卡内余额不足时不予以扣费并提示尽快充值;
由键盘录入的字符来确定是否停止对该函数的调用;
}
③void Recharge(INFORMATION inf[N],int n,float *p)
/*函数功能:输入用户卡号及充值金额进行充值
函数参数:inf为结构体组,n为录入卡号总数,*p为账户余额地址
函数返回值:无
*/
{
定义变量及其初始化;
在主函数中输入卡号并调用函数找到该卡号对应余额地址传值给该函数;
由键盘录入用户想要充值的金额并进行充值;
}
④void InquiryBusiness(INFORMATION inf[],int n,int m)
/*函数功能:性息查询,用户输入卡号,程序打印相关信息
函数参数:inf为结构体组,n为录入卡号总数,m为乘车次数
函数返回值:无
{
定义变量及其初始化;
输入卡号并调用查找函数找到该卡号所对应下标值;
打印出有关该卡号的信息;
}
⑤int Linsearch(INFORMATION inf[N],char x[],int n)
/*函数功能:运用线性查找法查找用户输入的卡号
函数参数:inf为结构体组,x为用户输入的卡号,n为录入卡号总数
函数返回值:若找到则返回其下标值,找不到则返回-1
*/
{
定义变量及其初始化;
输入卡号并调用查找函数找到该卡号所对应下标值并返回给调用函数;
}
⑥int InputInformationTwo(INFORMATION inf[],int n)
/*函数功能:第二次及其以后再次录入基本信息
函数参数:inf为结构体组, n为录入卡号总数
函数返回值:录入卡号个数
*/
{
定义变量及其初始化;
利用do-while进行基本信息即卡号(只允许录入十位)及初始金额的录入,并记录每位卡号所对应的下标值;
由键盘录入的字符来确定是否停止对该函数的调用;
返回录入的卡号个数;
}
整个程序的流程图如下所示:
/*主题:公交IC卡管理系统 功能:基本信息包括卡号,初始金额的录入;输入卡号进行乘车扣费,充值,乘车明细答应
编程语言:C
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef struct information
{
char cardnumber[11]; /*卡号*/ float balance; /*余额*/
long date[N]; /*乘车日期*/
int busnumber[N]; /*所乘车*/
float expenses[N]; /*费用*/
}INFORMATION;
int InputInformation(INFORMATION inf[]);
int InputInformationTwo(INFORMATION inf[],int n);
void Recharge(INFORMATION inf[],int n,float *p);
int Linsearch(INFORMATION inf[N],char x[],int n);
void InquiryBusiness(INFORMATION inf[],int n,int m);
int ProcessingService(INFORMATION inf[],int i,float *p);
int main()
{
int order;
int n; /*录入卡号的个数*/
int i; /*用户输入查找卡号的返回下标值*/
int j; /*某卡号记载的乘车明细的下标值*/
char x[11];
< …… 此处隐藏:5159字,全部文档内容请下载后查看。喜欢就下载吧 ……