公交IC卡管理系统实验报告.doc_第1页
公交IC卡管理系统实验报告.doc_第2页
公交IC卡管理系统实验报告.doc_第3页
公交IC卡管理系统实验报告.doc_第4页
公交IC卡管理系统实验报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计课程设计公交IC卡管理系统一 目的运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计提高学生综合运用所学知识来解决实际问题及进行科学实验或技术设计的初步能力。对于本课程设计而言重点在熟悉C语言基本语法规范以及灵活运用C语言编程解决实际问题。二 需求分析1、该程序主要为实现某公交公司关于公交IC卡的管理,首先应包括基本卡号及其相关信息(如卡号所对应的初始金额)的录入系统;2、应拥有用户乘车处理系统,即记录用户乘车明细(如乘车日期,所称车辆)并实现将乘车费用在相应卡上进行扣除;3、当某卡余额不足时,用户可对其进行充值以实现长久使用;4、应具有查询功能,即输入某一卡号,便可对该卡内余额,扣费明细进行查询;5、以上功能以菜单方式出现并执行。三 概要设计1、主函数模块定义一个结构体组,用来储存IC卡信息typedef struct informationchar cardnumber11; /*卡号*/float balance; /*余额*/long dateN; /*乘车日期*/int busnumberN; /*所乘车*/float expensesN; /*费用*/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 infN,int n,float *p)/*函数功能:输入用户卡号及充值金额进行充值函数参数:inf为结构体组,n为录入卡号总数,*p为账户余额地址函数返回值:无*/定义变量及其初始化;在主函数中输入卡号并调用函数找到该卡号对应余额地址传值给该函数;由键盘录入用户想要充值的金额并进行充值;void InquiryBusiness(INFORMATION inf,int n,int m)/*函数功能:性息查询,用户输入卡号,程序打印相关信息函数参数:inf为结构体组,n为录入卡号总数,m为乘车次数函数返回值:无*/定义变量及其初始化;输入卡号并调用查找函数找到该卡号所对应下标值;打印出有关该卡号的信息; int Linsearch(INFORMATION infN,char x,int n)/*函数功能:运用线性查找法查找用户输入的卡号函数参数:inf为结构体组,x为用户输入的卡号,n为录入卡号总数函数返回值:若找到则返回其下标值,找不到则返回-1*/定义变量及其初始化;输入卡号并调用查找函数找到该卡号所对应下标值并返回给调用函数;int InputInformationTwo(INFORMATION inf,int n)/*函数功能:第二次及其以后再次录入基本信息函数参数:inf为结构体组, n为录入卡号总数函数返回值:录入卡号个数*/定义变量及其初始化;利用do-while进行基本信息即卡号(只允许录入十位)及初始金额的录入,并记录每位卡号所对应的下标值;由键盘录入的字符来确定是否停止对该函数的调用;返回录入的卡号个数;整个程序的流程图如下所示:开始显示菜单录入orderorder=1,输入基本信息order=2,进行乘车扣费处理order=3,进入充值系统order=4,进入信息查询系统order=5,退出系统显示菜单结束录入order order不等于5四 详细设计/*主题:公交IC卡管理系统 功能:基本信息包括卡号,初始金额的录入;输入卡号进行乘车扣费,充值,乘车明细答应 编程语言:C*/#include #include #include #define N 100typedef struct informationchar cardnumber11; /*卡号*/float balance; /*余额*/long dateN; /*乘车日期*/int busnumberN; /*所乘车*/float expensesN; /*费用*/INFORMATION;int InputInformation(INFORMATION inf);int InputInformationTwo(INFORMATION inf,int n);void Recharge(INFORMATION inf,int n,float *p);int Linsearch(INFORMATION infN,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 x11;INFORMATION infN;printf(Enter 1 to input the basic informationn); printf(Enter 2 to enter to processing servicen); printf(Enter 3 to rechargen); printf(Enter 4 to inquiry businessn); printf(Enter 5 to stop the programn);doprintf(Input the number which you choosen);scanf(%d,&order);while(order!=1&order!=2&order!=3&order!=4&order!=5); if(order=1) n=InputInformation(inf); printf(There are %d cardsn,n); else if(order=2|order=3|order=4)do printf(Please choose 1 and input the basic informationn); scanf(%d,&order);while(order!=1); n=InputInformation(inf); printf(There are %d cardsn,n); else exit(0);doprintf(Enter 1 to input the basic informationn); printf(Enter 2 to enter to processing servicen); printf(Enter 3 to rechargen); printf(Enter 4 to inquiry businessn); printf(Enter 5 to stop the programn); doprintf(Input the number which you choosen); scanf(%d,&order);while(order!=1&order!=2&order!=3&order!=4&order!=5); if(order=1)n=InputInformationTwo(inf,n); printf(There are %d cardsn,n);if(order=2) do printf(input your card numbern); scanf(%s,x); i=Linsearch(inf,x,n); while(i=-1); j=ProcessingService(inf,i,&infi.balance);/*j为乘车次数*/ if(order=3) do printf(input your card numbern); scanf(%s,x); i=Linsearch(inf,x,n);while(i=-1); Recharge(inf,n,&infi.balance); if(order=4) InquiryBusiness(inf,n,j);while(order!=5);return 0;/*输入用户卡号及充值金额进行充值,无返回值*/void Recharge(INFORMATION infN,int n,float *p) float money; printf(your cards balance is %.2fn,*p); doprintf(How much money do you want to recharge?n); scanf(%f,&money);while(money=0&infi.cardnumberj=9) digit+; else ; while(digit!=10); doprintf(Input initial moneyn);scanf(%f,&infi.balance);while(infi.balance0);printf(Do you want to continue?n);printf(enter yis continue,and nis stopn);scanf( %c,&reply);while(reply=y|reply=Y); a=i+1;return a;/*运用线性查找法查找用户输入的卡号,若找到则返回其下标值,找不到则返回-1*/int Linsearch(INFORMATION infN,char x,int n)int i;for(i=0;in;i+) if(strcmp(x,infi.cardnumber)=0) return i; else; return -1;/*性息查询,用户输入卡号,程序打印相关信息,无返回值*/void InquiryBusiness(INFORMATION inf,int n,int m)char x11;int i;int j; do printf(input your card numbern); scanf(%s,x); i=Linsearch(inf,x,n);while(i=-1);printf(the information is :n);printf(the card number is %sn,infi.cardnumber); printf(the balance is %.2fn,infi.balance); for(j=0;j=m;j+) printf(the date is %ldn,infi.datej); printf(the bus number is %dn,infi.busnumberj); printf(the expenses is %.2fn,infi.expensesj);/*乘车明细输入以及对帐户进行扣费处理,若余额不足则进行提示,返回值为乘车次数*/int ProcessingService(INFORMATION inf,int i,float *p)int j=-1; int flag=1; char reply; doj+;do printf(Input the date,bus number and expensesn); scanf(%ld,&infi.datej); scanf(%d,&infi.busnumberj); scanf(%f,&infi.expensesj);while(infi.datej=0|infi.busnumberj=0|infi.expensesj=0); *p=*p-infi.expensesj; if(*p=0&infi.cardnumberj=9) digit+; else ; while(digit!=10); doprintf(Input initial moneyn); scanf(%f,&infi.balance); while(infi.balance0); printf(Do you want to continue?n); printf(enter yis continue,and nis stopn); scanf( %c,&reply);while(reply=y|reply=Y); a=i+1;return a;五 调试分析1、应使用循环以确保录入的初始金额,充值金额,乘车费用均不为负值;2、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论