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

付费下载

下载本文档

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

文档简介

1、精品文档1. 课程设计的目的随着网络技术的发展,各种电子设备在人群中普及开来,人们的生活方式也发生 了很大的变化。现金付款逐渐被方便、安全、卫生的刷卡消费所代替。例如校园餐厅的 就餐卡的使用就让学生在方便的同时最大限地减少了疾病的传播。这就需要一个操作系统来管理餐卡数据。于是尝试用 C语言编写了一个小的餐厅餐卡管理系统,希望对餐厅 有所帮助,也可以参考使用。本程序一共有六个选项,可以进行添加用户、查询用户、充值、消费、删除用户、 退出系统等功能。能够实现学生在餐厅充值、刷卡消费、余额查询等活动。操作界面简 洁,操作方法简单实用,足以帮助餐厅管理学生消费。程序用了条件、循环、函数、结构体等知识点

2、,综合了链表和文件的打开和保存 编写的。本程序可运用于小的餐厅餐卡管理软件。本软件运用菜单实现交互式管理,用 户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足餐厅 工作人员的需要。精品文档2. 设计方案论证2. 1设计思路建立一个函数,用来保存学生的学号、姓名、电话号码、班级、餐卡余额、密码 等信息,完成餐厅就餐卡的功能。主函数可以调用六个子函数,分别完成添加用户、查 询用户、充值、消费、删除用户、退出系统六个功能。在主函数中可以1、2、3、4、5、6数字键分别可以执行某个功能模块。主要功能模块即如图1所示:图1.就餐卡主要功能模块2.2程序设计图2.就餐卡主函数运行流

3、程图 main ()主函数:主函数十分简洁,定义了本程序 用到的各个变量及函数,然后读取文件后进 入主菜单,显示函数各功能。 其运行的流程图如图2所示。精品文档 select()主菜单,主菜单链接各个分菜单,其功能即如图1所示addnewcard(),添加用户函数。 searchcard(),查询用户函数。 addbalance(),充值函数函数。 charge(),收费函数函数。deletecard(),删除用户函数。 exit(O),退出系统函数。用户可以键入相应数字进入各个功能的操作界面。同时设置一个断点,即当返回值为“6”时运行exit(O)函数来结束程序,以免造成死循环。其运行流程图

4、如图3所示。图3.就餐卡菜单函数流程图精品文档精品文档 newrecord()添加用户菜单。餐厅管理人员可以按需要根据提示来直接添加学生用户,每次添加完毕系统会询问“是否继续添加?(Y/N) ”当返回值为“ n”或不是系统要求输入数值时,系统自动保存数据并返回主菜单。 searchcard()查询用户2。在主菜单输入“ 2”时自动进入查询学生信息,每次 当输入卡号不存在时系统自动警告没有该用户。查询结束按任意键返回主菜单。其流程 图如图4所示。 addbalance()、charge(),充值/收费模块。这两个模块十分相似餐厅管理人 员只要输入所要充值学生的学号,就可以对相应学生充值或者扣除相

5、应金额,操作十分 简单。充值或扣费结束后系统自动显示操作后该学生信息并自动保存。餐卡充值运行流程图如图5所示。收费流程图类似充值,不再重复。 deletecard()删除用户模块。餐卡管理人员可以通过该模块选择删除需要注销 的就餐卡。如果餐卡内余额不为零,系统则提示返还相应金额给学生。精品文档图4.查询用户流程图23源程序#in elude <stdio.h> #in elude <stdlib.h> #in elude <stri ng.h>#in elude <coni o.h>#in elude <math.h> struct

6、record char card nu mber10; char n ame20;char phon e20; char class n4 0;char password10; int bala nee;stude nt500;int num=0;/*外部变量num为文件中的纪录数FILE *fp;void select();/*主菜单*/void add newcard();/*添加用户*/void searchcard();/*查询用户*/void readfile();/*读取文件*/void deletecard();/*删除用户*/void addbala nce();/* 充值*/

7、void password();/* 密码*/void charge();/* 收费*/void mai n()/*主函数*/*/readfile(); while (1) seleet();/*读取文件/*主菜单*/*/*导入文件,打开欢迎进入界面*/void readfile()if(fp=fope n( "stude nt.bi n","rb")=NULL)if (fp=fope n("stude nt.bi n" ,"wb")=NULL) exit(0);elsegetch();return;exit(O)

8、;fseek(fp,0,2);if (ftell(fp)>0)/* 文件非空 */rewi nd(fp);for (num=0;!feof(fp) && fread(&stude ntnu m,sizeof(struct record),1,fp); nu m+); return;void select()char choic;/*主菜单*/printf("ntt*主菜单 *");prin tf("ntt* 1-添加用户2 查询用户*"prin tf("ntt* 3-充值4了消 费*"prin tf(&q

9、uot;ntt* 5-删除用户6 退出系统*"system("cls");prin tf("ntt*“);printf("ntt 请选择:");choic=getch();switch (choic)case '1':add newcard();break; case '2':searchcard();break;case 3:addbala nce();break;case '4':charge();break;case '5':deletecard();break;c

10、ase '6':exit(0); default:select();void add newcard() /*添加用户*/prin tf("ntt*请输入学生信息* n");printf("ntt 输入学号:");sca nf("%s", &stude ntnu m.card nu mber);printf("ntt 输入姓名:");sca nf("%s", &stude ntnu m. name); printf("ntt输入电话号码:");

11、 sca nf("%s", &stude ntnu m.ph on e); printf("ntt 输入班级:");sca nf("%s", &stude ntnu m.class n);printf("ntt 输入密码:”);sea nf("%s", &stude nt nu m.password); printf("ntt输入添加金额:");scan f("%d",& stude nt nu m.bala nee);nu m+;p

12、rintf("ntt 是否继续添加?(Y/N):"); if (getch()='y')add newcard();return;void searchcard()/*查询用户*/int mark=0;int i;int a=0;prin tf("ntt* *char card nu mber10;printf("ntt 请输入学号:");sca nf("%s",card nu mber);for(i=0;i< nu m;i+)if (strcmp(stude nti.card nu mber,card

13、 nu mber)=0) prin tf("ntt* *prin tf("nttprin tf("nttprin tf("nttprin tf("nttprin tf("nttprin tf("nttprin tf("ntt*printf("ntt按任意键返回主菜单:"); mark+;getch(); return;if (mark=0)学号 姓名 电话 班级 余额 密码按学号查找* n")以下是您查找的学生信息%s",stude nti.card nu mber);%s&

14、quot;,stude nti. name);%s",stude nti.pho ne);%s",stude nti .class n);%d",stude nti.bala nee);%s",stude nti.password);*");printf("ntt没有改学生的信息"); printf("ntt按任意键返回主菜单");getch();return;void addbala nce()/*充值*/*");int i;int m;int a=0;prin tf("ntt* *

15、 char card nu mber10;printf("ntt 请输入学号:"); sca nf("%s",card nu mber);for(i=0;i< nu m;i+)按学号添加金额* n");if (strcmp(stude nti.card nu mber,card nu mber)=0) prin tf("ntt* *prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf(&q

16、uot;ntt prin tf("ntt* printf("ntt是否添加金额?(y/in门; if (getch()='y')以下是您所选择学生信息%s",stude nti.card nu mber);%s",stude nti. name);%s",stude nti.pho ne);%s",stude nti .class n);%d",stude nti.bala nee);%s",stude nti.password);学号 姓名 电话 班级 余额 密码*");void cha

17、rge()int i;*");printf("ntt请输入你要添加金额:”);sca nf("%d",&m);printf("tt 确认添加 %d 元给 %s(y/n)?",m,); if (getch()='y') stude nti.bala nce=stude nti.bala nce+m; printf("ntt添加金额成功”);prin tf("ntt*prin tf("ntt prin tf("ntt prin tf("nt

18、t prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt* printf("ntt按任意键返回主菜单"); getch();return;以下是您选择学生添加金额后信息%s",stude nti.card nu mber);%s",stude nti. name);%s",stude nti.pho ne);%s",stude nti .class n);%d",stude nti.bala nee);%s",stude nt

19、i.password);学号 姓名 电话 班级 余额 密码*");/*收费*/*");int k;int a=0;prin tf("ntt* *char card nu mber10; printf("ntt 请输入学号:"); sca nf("%s",card nu mber); for(i=0;i< nu m;i+)按学号扣费* n")if (strcmp(stude nti.card nu mber,card nu mber)=0) prin tf("ntt* *prin tf("n

20、tt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt* printf("ntt是否扣除金额?(y/in门; if (getch()='y')以下是您选择学生信息%s",stude nti.card nu mber);%s",stude nti. name);%s",stude nti.pho ne);%s",stude nti .class n); %d"

21、;,stude nti.bala nee);%s",stude nti.password);学号 姓名 电话 班级 余额 密码*");*");printf("ntt请输入你要扣除金额:”);sca nf("%d",&k);printf("tt 确认扣除 %d 元给 %s?(y/n)",k,); if (getch()='y')stude nti.bala nce=stude nti.bala nce-k;printf("ntt扣除金额成功”);prin t

22、f("ntt*prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt prin tf("ntt* printf("ntt按任意键返回主菜单"); getch();return;以下是您所选择学生扣除金额后信息%s",stude nti.card nu mber);%s",stude nti. name);%s",stude nti.pho ne);%s",s

23、tude nti .class n);%d",stude nti.bala nee);%s",stude nti.password);学号 姓名 电话 班级 余额 密码*");*");void deletecard()/*删除用户*/int i,j;int deletemark=O;char card nu mber10;printf("ntt请输入要删除学生学号:”);sca nf("%s",card nu mber);if(num=O)printf("ntt对不起,文件中无任何纪录");printf(

24、"ntt按任意键返回主菜单");getch();return;for (i=0;i< nu m;i+) if (strcmp(stude nti.card nu mber,card nu mber)=NULL)printf("ntt以下是您要删除的学生纪录: ");printf("ntt 学号printf("ntt 姓名printf("ntt 电话printf("ntt 班级printf("ntt 余额%s",stude nti.card nu mber); %s",stude

25、nti. name);%s",stude nti.pho ne); %s",stude nti .class n);%d",stude nti.bala nee);printf("ntt 密码%s",stude nti.password);printf("ntt 是否删除?(y/n)");if (getch()='y') printf("nntt!退还 %d 元给 %s.!nn",studenti.balance,); for (j=i;j<num-1;j+

26、)/*纪录移动,从 stud数组中删除*/stude ntj=stude ntj+1;nu m_;deletemark+;printf("ntt 删除成功");printf("ntt是否继续删除?(y/n门; if (getch()='y')deletecard();return;elsereturn;con ti nue; if (deletemark=0) printf("ntt没有该同学的纪录"); printf("ntt 是否继续删除?(y/n)");if (getch()='y')

27、deletecard();return;void writetofile()/* 保存文件 */int i;if (fp=fope n("stude nt.b in ",”wb")=NULL)printf("ntt文件打开失败");for (i=0;i< nu m;i+)if (fwrite(&stude nti,sizeof(struct record),1,fp)!=1) printf("ntt 写入文件错误!n”);fclose(fp);printf("ntt餐卡系统文件已保存”);printf(&quo

28、t;ntt按任意键退出程序ntt"); exit(0);3. 设计结果与分析在Microsoft Visual C+软件中输入源程序,在没有提示错误的情况下编译,生成相应的后缀为“ jiucankaguanli .exe ”的可执行文件。双击文件,可以看到如图 6 所示的界面。*C : DocuBeiitE and SettingsuEeri-添加K iOCJOf MXWiGM: 3 充八1A . 匕涓再XXX柑XKXXXK 5-删除用户&-退出茶统请选择;.图6.运行程序进入的主菜单界面运行主函数时,首先调用readfile() 读取文件2,读取成功后运行select()主

29、菜单 函数,打开主菜单函数界面。函数使用switch语句实现各功能模块的转移。用getch() 来获取餐厅工作人员的选择数据,分别调用相应的自定义函数。从而实现对各个函数的 调用。在输入“ 1”后会提示“请输入学生信息”这时餐厅管理人员可以根据需要按照 提示分别输入学生的学号、姓名、电话号码、班级、密码及充值金额。输入完毕后系统 自动提示是不是继续添加学生信息。其运行效果图如图 7所示。e:< C' .Doeiueiitsacnd S et t ingsViiserSoDebug:S. j i ueaiLkaEg7Kail i . exeNMdHFif NHIrN WHHF 主菜

30、单K杠“朴朴"i-添.加甩户HKKXEJCKIOtlOt 3 f 盲mumx 5_删葆用户6_退则IM 住;M JI瓮:胃;M请选择:请输入学注信息r 1 1*< ix-r 1T xj * tr » n m ir输入学号= 200855001输入姓名:zhang输入电话号码:13325G23212输入班级:jisuinj 13 ban输入密:12345S输入添加金额:10®是否继续添加图7.添加用户界面这一函数实现了对字符串赋值的功能 。系统提示餐厅管理人员输入相应信息, 然后用scanf函数获取输入数据。每次输入结束后,系统输出询问是否继续添加的信息, 然

31、后执行if语句,如果返回值是“ y”,则继续执行addnewcard()函数添加用户,否则 返回主菜单。在主菜单界面输入数字“ 2”,执行searchcard()函数查询用户,系统会根据管理员输入数据查找相应学生的信息并输出。界面如图8所示图8.查询用户信息界面(1)请输入学号汐图8.查询用户信息界面(2)这一函数提示餐厅管理人员输入卡号后,调用scanf函数获取输入信息,然后执行for语句,同餐卡库里第一个用户卡号比较 ,如果相等,则输出该学号学生的信息, 如图8.查询用户信息界面(1)所示;如果不相等,贝U执行i+,同下一用户比较,以 此循环,若找到目标用户则输出用户信息,而当没有发现相同

32、学号学生时,贝U输出没有 该学生的信息,即如图8.查询用户信息界面(2)所示。 在主菜单界面输入数字“ 3”,执行addbalance()函数为就餐卡充值。为保险起 见系统会询问两次以确认充值:“是否添加金额”、“确认添加d元给%so其运行界面 效果如图9所示。M-WiW«f卄S阻用请选择=XKMSJOtKXMtKlrt!按学号添加金额请胸入学冇=2 008552 01SS“X""以下是您所选择学生信息200855201zhaIsuarji3ban100123456沌沌籍K W X It8 n 兰、5 / 李 >氮0<选 5

33、ns a 籃 3 bW 金zh劉015613 ?<加给催5284nJ6 额添元功1T7豊45 金要50成匸豊33益23 抑你加额=2 否话级额码 是请專F学姓电班畫王菜单XX52-查询用户4- 消借 *« 七E-退由系2充«按任意犍返回主菜单图9.就餐卡充值界面本函数首先根据管理者输入的数据来查询相应学生的信息,查到就输出征求确认,查不到则输出没有该学生的信息,界面和图8.查询用户信息界面(2) 样。征得确认后提示管理者输入添加金额,用scanf函数获得输入信息后征得再次确认。然后函数自 动调用加法函数,通过stude nti.bala nce=stude nti.b

34、ala nce+m 将输入的整型数值加上餐卡里原有的余额,并将添加金额后的学生信息输出。 在主菜单界面输入数字“ 4”执行charge()函数为就餐卡扣费以实现刷卡消费。 同样为保险起见系统会询问两次以确认充值:“是否扣除金额”,“确认扣除d元给s 其运行界面效果如图10所示。图10.就餐卡充值界面 其执行方法与充值特别相似,不再重复说明。 在主菜单界面输入数字“ 5”,执行deletecard()函数删除用户。当管理者输入 要删除学生的学号后,系统会搜索数据库并将搜索结果输出。然后征求确认。确认后系 统会弹出退还餐卡里的余额给餐卡主人的提醒。每次删除成功后系统会询问是否继续删 除,然后执行相应操作。其运行界面效果如图11所示。M m" L-

温馨提示

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

最新文档

评论

0/150

提交评论