C语言课程设计-学生饭卡管理系统_第1页
C语言课程设计-学生饭卡管理系统_第2页
C语言课程设计-学生饭卡管理系统_第3页
C语言课程设计-学生饭卡管理系统_第4页
C语言课程设计-学生饭卡管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、1.课程设计的目的本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个食堂刷卡的系统,并能最终实现本系统的功能要求。程序用了条件、循环、函数、结构体等知识点,综合了文件的打开和保存编写的。2设计思路建立一个函数,用来保存学生的学号、姓名、电话号码、班级、餐卡余额、密码等信息,完成餐厅就餐卡的功能。主函数可以调用七个子函数,分别完成卡登记、饭卡充值、食堂消费、有奖消费、财务统计退出系统六个功能。在主函数中可以1、2、3、4、5、6数字键分别可以执行某个功能模块。主要功能模块即如图1所示:卡登记饭卡充值财务统计食堂消费有奖消费主菜单退出系统图1. 就餐卡主要功能

2、模块开 始3程序设计流程图main ()主函数:读取文件主函数十分简洁,定义了本程序用到的各个变量及函数,然后读取文件后进入主菜单,显示函数各功能。正确读取?其运行的流程图如图2所示。NY输出主菜单 结 束 图2. 食堂刷卡主函数运行流程图menu()主菜单1,主菜单链接各个分菜单,其功能即如图1所示。register(Stu*),卡登记函数。CZ(), 饭卡充值函数。XF(), 食堂消费函数。Award(), 有奖消费函数。TJ(), 财务统计函数。exit(0), 退出系统函数。用户可以键入相应数字进入各个功能的操作界面。同时设置一个断点,即当返回值为“6”时运行exit(0)函数来结束程

3、序,其运行流程图如图3所示。开 始输入 iNi=1?YNYi=2?NY调 用register(Stu*)i=3? NYi=4?N调 用CZ()Yi=5?Y调 用XF() 调 用TJ()调 用Exit(0)结 束图3.食堂刷卡菜单函数流程图register(Stu*)卡登记菜单。餐厅管理人员输入将要登记的人数,添加完毕系统自动保存数据并返回主菜单,这个过程需要函数完成二进制到十进制的转换。CZ()饭卡充值菜单。在主菜单输入“2”时自动进入该菜单,输入正确的32位二进制卡号即可充值,若输入错误按提示信息操作即可。 XF()输入所要消费学生的二进制卡号,就可以对相应学生扣除相应金额,操作十分简单。扣

4、费结束后系统自动保存操作后该学生信息。卡充值运行流程图如图5所示。收费流程图类似充值,不再重复。TJ()统计模块5。可以通过该模块完成学生的总消费和平均消费。开 始输入卡号是否登记 Y输入添加金额ka-case+=k保存该学生信息结 束图5.充值流程图2.3.源程序/ kchsj.cpp : Defines the entry point for the console application./#include stdafx.h#include #include #include #include #include #include #include #define MAX 100 /定义学

5、生人数为100 #define Stu struct student /定义学生信息结构体 int Num; CComPtr pVoice; HRESULT hr; Stuchar name10; /学生姓名int kh; /学生卡号char bm33; /学生卡编码float cash; /金额float xf; /消费;void menu();void _10_2(Stu*);void Register(Stu*);void CZ();void XF();void Award();void Tj();int InitVoice()CComPtrpEnum;CComPtr pVoiceTok

6、en;int i;:CoInitialize(NULL);if(FAILED(hr=SpEnumTokens(SPCAT_VOICES,LLanguage=804,NULL,&pEnum)return 0;for(i=0;iNext(1, &pVoiceToken, NULL);if(FAILED(hr=pVoice.CoCreateInstance(CLSID_SpVoice)return 0;if(FAILED(hr = pVoice-SetVoice(pVoiceToken)return 0;return 1;void ReleaseVoice()pVoice.Release();CoU

7、ninitialize();void Speak(char *Txt)CSpDynamicStrings(Txt);pVoice-Speak(s,0,0);void main()menu();void menu() /主菜单Stu strStu;char ch;loop: /若超出选择范围则自动返回主界面system(cls); /系统清零printf(*n);printf( 1: 卡登记 n);printf( 2: 饭卡充值 n);printf( 3: 食堂消费 n);printf( 4: 有奖消费 n);printf( 5: 财务统计 n);printf( 6: 退出 n);printf(

8、 *n);printf( n);printf( 请选择输入选项123456:); if(!InitVoice() return ; Speak(请 选 择 输 入 选 项); ReleaseVoice();while(ch=getch()switch(ch)case 1: Register(&strStu);goto loop;case 2: CZ();case 3: XF();case 4: Award();case 5: Tj();case 6: exit(0); goto loop;void Register(Stu *a) /卡登记FILE *fp;system(cls); /系统清零

9、a-xf=0;printf(*卡登记*n);if(!InitVoice()return ;Speak(卡登记);ReleaseVoice();printf(输入姓名:);if(!InitVoice()return ;Speak(输入姓名);ReleaseVoice();scanf(%s,a-name);printf(输入卡号:);if(!InitVoice()return ;Speak(输入卡号);ReleaseVoice();scanf(%d,&a-kh);printf(输入初始金额:);if(!InitVoice()return ;Speak(输入初始金额);ReleaseVoice();

10、scanf(%f,&a-cash);_10_2(a);printf(你的二进制卡编码是:%s,a-bm);if(!InitVoice()return ;Speak(你的二进制卡编码是);ReleaseVoice();if(!InitVoice()return ;Speak(a-bm);ReleaseVoice();if(fp=fopen(stu.txt,a)=NULL) /判断文件能否打开,下同printf(ERRORn);exit(0);fprintf(fp,%st%dt%st%.2ft%.2f,a-name,a-kh,a-bm,a-cash,a-xf); /操作后将信息写入文件,下同fpu

11、tc(n,fp);fclose(fp); /关闭文件void _10_2(Stu*a) /10 进制转2进制int n,i,t=1;n=a-kh;getchar();for(a-bm0=1,i=1;n;i+)a-bmi=n%2+48;n/=2;if(a-bmi=1) t+;if(t%2=1) a-bm31=1; /使孔值为1的个数是偶数else a-bm31=0;for(i;ibmi=0;a-bm32=0;void CZ() /卡充值FILE *fp;char bm33;Stu strshareMAX;float cash;int nNum=0,i;system(cls); /系统清零prin

12、tf(*卡充值*n);if(!InitVoice()return ;Speak(卡充值);ReleaseVoice();printf(请输入你的卡编码:);if(!InitVoice()return ;Speak(请输入你的卡编码);ReleaseVoice();gets(bm);if(fp=fopen(stu.txt,r)=NULL) /判断并读取文件中的信息printf(ERRORn);exit(0);while(!feof(fp)fscanf(fp,%s%*c%d%*c%s%*c%f%*c%f%*c,strsharenN,&strsharenNum.kh,strsharen

13、Num.bm,&strsharenNum.cash,&strsharenNum.xf);nNum+;nNum-; /避免将最后一次转行操作后的的信息写入文件,下同fclose(fp);for(i=0;inNum;i+) /判断学生信息是否存在,并将操作后的信息写入文件if(strcmp(strsharei.bm,bm)=0)printf(请输入充值金额:); if(!InitVoice() return ; Speak(请输入充值金额); ReleaseVoice();scanf(%f,&cash);strsharei.cash+=cash; if(fp=fopen(stu.txt,w)=NU

14、LL) printf(ERRORn); exit(0);for(i=0;i=nNum)printf(你尚未登记!n); if(!InitVoice() return ; Speak(你尚未登记); ReleaseVoice(); menu();menu();void XF() / 卡消费FILE *fp;char bm33;Stu strshareMAX;float xf;int nNum=0,i;system(cls); /系统清零printf(*食堂消费*n);if(!InitVoice()return ;Speak(食堂消费);ReleaseVoice();printf(请输入你的卡编码

15、:);if(!InitVoice()return ;Speak(请输入你的卡编码);ReleaseVoice();gets(bm);if(fp=fopen(stu.txt,r)=NULL)printf(ERRORn);exit(0);while(!feof(fp) /读取文件中的信息fscanf(fp,%s%*c%d%*c%s%*c%f%*c%f%*c,strsharenN,&strsharenNum.kh,strsharenNum.bm,&strsharenNum.cash,&strsharenNum.xf);nNum+;nNum-;fclose(fp);for(i=0;inN

16、um;i+) /判断该学生信息是否存在并消费if(strcmp(strsharei.bm,bm)=0)printf(请输入消费金额:); if(!InitVoice() return ; Speak(请输入消费金额); ReleaseVoice();scanf(%f,&xf);strsharei.xf+=xf;strsharei.cash-=strsharei.xf; if(fp=fopen(stu.txt,w)=NULL) printf(ERRORn); exit(0);for(i=0;i=nNum) /登记判断printf(你尚未登记!n); if(!InitVoice() return

17、; Speak(你尚未登记); ReleaseVoice();menu();menu();void Award() /有奖消费FILE *fp;Stu strshareMAX,*pMAX,*temp=NULL;int nNum=0,i,j;system(cls);printf(*有奖消费*n); if(!InitVoice() return ; Speak(有奖消费); ReleaseVoice();if(fp=fopen(stu.txt,r)=NULL)printf(ERROR!n);exit(0);while(!feof(fp)fscanf(fp,%s%*c%d%*c%s%*c%f%*c%

18、f%*c,strsharenN,&strsharenNum.kh,strsharenNum.bm,&strsharenNum.cash,&strsharenNum.xf);nNum+;nNum-;fclose(fp);for(i=0;inNum;i+) /按消费金额由大到小排序pi=&strsharei;for(i=0;inNum-1;i+)for(j=0;jxfxf)temp=pj;pj=pj+1;pj+1=temp;for(i=0;icash+=(pi-xf)/100*5; printf(今日大胃王:n); if(!InitVoice() return ; Speak(今日大

19、胃王); ReleaseVoice();for(i=0;iname,pi-kh,pi-bm,pi-cash,pi-xf);if(fp=fopen(stu.txt,w)=NULL)printf(ERROR!n);exit(0);for(i=0;inNum;i+)fprintf(fp,%st%dt%st%.2ft%.2fn,,strsharei.kh,strsharei.bm,strsharei.cash,strsharei.xf);fclose(fp);menu();void Tj() /财务统计FILE *fp;Stu strshareMAX;int nNum=0,i;float total=0,ave;system(cls);printf(*校方统计*n); if(!InitVoice() return ; Speak(校方统计); ReleaseVoice();if(fp=fopen(stu.txt,r)=NULL)printf(ERROR!n);exit(0);while(!feof(fp) /逐个读取文件中学生的信息fscanf(fp,%s%*c%d%*c%s%*c%f%*c%f%*c,strsharenN,&strsharenNum.kh,strsharenNum.bm,&strshar

温馨提示

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

评论

0/150

提交评论