C语言饭卡管理系统(附代码).doc_第1页
C语言饭卡管理系统(附代码).doc_第2页
C语言饭卡管理系统(附代码).doc_第3页
C语言饭卡管理系统(附代码).doc_第4页
C语言饭卡管理系统(附代码).doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

C语言饭卡管理系统,代码超简单,纯c语言基础知识,本人大一时期自己打的代码与实验报告(作图是直接word,可直接修改,不需安装visio),上传只为赚取百度财富值,支持原创,请勿下载后再传播,谢谢!目 录第1部分 实训题目与要求21. 问题提出22. 功能要求2第2部分 设计实训题目功能31. 总体设计32. 算法设计33. 数据结构84. 程序代码设计85. 测试与调试20第3部分 实训总结211. 个人总结212. 结束语21附录A 程序清单21附录B 用户使用说明书35参考文献36C程序设计综合实践评分表37第1部分 实训题目与要求1. 问题提出学校等大单位的集体食堂买饭时间非常集中,这时如果饭堂使用饭票买饭,大家就得排长队等候,而且还要经过先去买饭票等麻烦的经历。因此食堂提出使用计算机进行管理,食堂用饭卡买饭,不仅提高了买饭的速度,还更易于管理,减少不必要的麻烦,同时减轻管理人员的工作负担。2. 功能要求重复显示以下的主菜单,在主菜单中任意选择一项,均实现其相应的功能. 请输入选择编号(0-7) . 1、建立饭卡文件 2、买饭 3、续钱 4、添加新饭卡 5、注销旧饭卡 6、设置与解除挂失 7、遍历 0、退出系统 .在主菜单中选择1:建立名为card.dat的文件,并在其中添加若干人的饭卡号、姓名、金额、挂失信息,要求饭卡号是唯一的。在主菜单中选择2:要求用户输入饭卡号、饭费,然后系统自动从该人的饭卡减去饭钱并分别显示饭卡前后的金额,如果原来饭卡中的余额不足5元,则你不能买饭,而且显示“余额不足,请续钱”,如果挂失信息为真,则显示“本卡已冻结”。在主菜单中选择4:添加新饭卡,此时要求新饭卡卡号和已有的饭卡号不能重号。在主菜单中选择5:注销旧饭卡。在主菜单中选择6:要求用户输入饭卡号和挂失信息,然后更新该饭卡的挂失信息。在主菜单中选择7:遍历,使用该功能查出你饭卡的余额和查询个人的信息。在主菜单中选择0:显示结束信息“感谢使用本文件!已正常退出,按任意键束。” 第2部分 设计实训题目功能1. 总体设计 各函数的主要功能:main函数:显示主菜单;void create()函数:创建名为card.dat的饭卡文件,建立个人饭卡信息;void buy()函数:买饭,并在饭卡中扣除饭钱,如有不足五元的显示“余额不足,请续钱”;void con()函数:续钱,输入续钱金额并在成功续钱后显示续钱前和续钱后的金额;void add()函数:添加新饭卡;void mov()函数:注销旧饭卡;void set()函数:更新饭卡的更新信息,包括挂失和解除挂失;void bianli()函数:访问饭卡文件的内容;主函数 addconbuysetmovcreatbianlii 2. 算法设计 (1)主函数(main函数)。显示主菜单,通过输入不为0的choice而实现各函数的功能 显示主菜单输入choicechoice!=0? NYreturn 0 (2)void creat()函数,在输入个人饭卡信息的时候同时判断饭卡号是否符合要求num=pow(10,15)并检查其中的卡号是否重合了,该函数主要是为了将个人的饭卡信息写入文件中。 打开文件 num!=0? N Y 输入饭卡信息 将饭卡信息读入文件中去 、 关闭文件 (3)void buy()函数,输入饭前后显示饭卡余额。 打开文件 输入卡号 flag=-1? N Y studentflaginfo=1? Y 输出“本卡已冻结” N studentflag.moneymtemp? Y 显示付钱前后的金额 N 输出“余额不足,请续钱” 并返回主菜单 关闭文件(4)con函数的主要功能是为了续钱,在续钱后显示续钱前后的饭卡金额。 打开文件 i=0? Y 输出请先建立饭卡文件! N 输入卡号 flag=-1? Y “找不到该卡!请重新输入你的卡号” N Y flag=-1? N S=0? Y 完成续钱 N 输出“此卡已经冻结!” 关闭文件(5)void add()函数的主要功能是添加新饭卡。 i=0? 输出“数据库已满” 打开文件 将个人饭卡信息写入文件 a=1? 将饭卡信息写入文件 关闭文件(6)void mov()函数的主要功能是为了注销已经不用的饭卡。 打开文件 i=0? Y 输出“请先建立饭卡文件!” N 输入饭卡号 flag=-1? Y 输出“此卡不存在!请重新输入” NY flag=-1? N 进行移除 将饭卡信息重新写入文件 关闭文件(7)void set()函数的主要功能是为了设置挂失信息,包括注销挂失和挂失。 打开文件 i=0? 输出“请先建立饭卡文件!” 打开文件 输入卡号 flag=-1? Y 输出“请先建立饭卡文件!” N Y flag=-1? N 更新挂失信息 重新将饭卡信息写入文件 关闭文件(7)void bianli()函数的主要功能是为了查询饭卡文件中的信息。 打开文件 从文件中读入饭卡信息 读出饭卡信息 关闭文件3. 数据结构struct carddouble num; int info; /表示挂失信息,info=0表示没有挂失,info=1表示已经挂失char name20;double money;student100;在程序首部中定义了一个名为“card”的结构类型,其中的成员分别代表学生饭卡的基本信息项。int i=0,info;double num;char name20;double money;FILE *fp;在程序首部定义了各项的全局变量,其中包括由int类型定义的变量i和info,分别代表人数和挂失信息(info=0表示没有挂失,info=1表示已经挂失);double类型定义的变量num和money,分别表示饭卡号和饭卡金额;char类型定义的数组变量name,表示学生饭卡的名字;定义文件指针 *fp,用于对文件的操作。4. 程序代码设计本程序中共调用了七个函数,分别为void creat(),void buy(),void con(),void add(),void mov(),void set(),void bianli()。主函数的代码如下:int main(void)int choice;do printf(.n); printf( 请输入选择编号(0-7) n); printf(.n); printf( 1、建立饭卡文件 n); printf( 2、买饭 n); printf( 3、续钱 n); printf( 4、添加新饭卡 n); printf( 5、注销旧饭卡 n); printf( 6、设置与解除挂失 n); printf( 7、遍历 n); printf( 0、退出系统 n); printf(.n); scanf(%d,&choice); switch(choice) case 0:printf(感谢使用本软件!已正常退出,按任意键结束n);break; case 1:creat();break; case 2:buy();break; case 3:con();break; case 4:add();break; case 5:mov();break; case 6:set();break;case 7:bianli();break; default:exit(0);while(choice!=0);return 0;void creat()函数的代码如下:printf(当输入的卡号为0时停止输入饭卡信息n); printf(请输入你的卡号,而且卡号不得超过15位数n);scanf(%lf,&num);while(num!=0)while(numpow(10,15)printf(你输入的卡号超过15位数!n); printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num);while(num=0)printf(输入的饭卡号不能为负数!n); printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num); studenti.num=num;printf(请输入你的姓名n); scanf(%s,name);strcpy(,name);printf(请输入你的饭卡钱n);scanf(%lf,&money);while(money0)printf(输入的金额必须为正数!n); printf(请输入你的饭卡钱n); scanf(%lf,&money);studenti.money=money;printf(请输入你的挂失信息(0表示没有挂失,1表示已经挂失):n);scanf(%d,&info);=info; fprintf(fp,%.0f%s%.0f%dn,studenti.num,,studenti.money,); i+;do printf(请输入你的卡号n); scanf(%lf,&num);for(k=0;kpow(10,15)printf(你输入的卡号超过15位数!n);printf(请输入你的卡号,而且卡号不得超过15位数:); scanf(%lf,&num1); while(num10)printf(输入的饭卡号不能为负数!n); printf(请输入你的卡号,而且卡号不得超过15位数:); scanf(%lf,&num1); for(j=0;ji;j+)if(studentj.num=num1) flag=j;break; if(flag=-1) /查明是否有该卡count+; printf(找不到该卡!请重新输入你的卡号:n); if(count=5)printf(你输入的无效卡号已经达到5次,系统将自动返回主菜单!n);return;while(flag=-1);if(=1)printf(本卡已冻结。n);return;elseif(studentflag.money5)printf(余额不足,请续钱。n);return;elseprintf(请输入你的饭费:);scanf(%lf,&mtemp); while(mtempmtemp)printf(之前:%.2f money.n,studentflag.money);studentflag.money=studentflag.money-mtemp;printf(之后:%.2f money.n,studentflag.money); for(k=0;kpow(10,15)printf(你输入的卡号超过15位数!n);printf(请输入你的饭卡号,而且卡号不得超过15位数:); scanf(%lf,&num2); while(num20)printf(输入的饭卡号不能为负数!n); printf(请输入你的饭卡号,而且卡号不得超过15位数:); scanf(%lf,&num2); for(k=0;ki;k+) if(studentk.num=num2) flag=k; break; if(flag=-1) /查明是否有该卡 count+; printf(找不到该卡!请重新输入你的卡号:n); if(count=5)printf(你输入的无效卡号已经达到5次,系统将自动返回主菜单!n);return;while(flag=-1); if(=0) printf(请输入你的续钱额:); scanf(%d,&conmoney); while(conmoney0)printf(输入的金额必须为正数!n); printf(请输入你的续钱额:); scanf(%d,&conmoney); printf(之前:%.2f money.n,studentflag.money); studentflag.money=studentflag.money+conmoney; printf(之后:%.2f money.n,studentflag.money); for(k=0;kpow(10,15) printf(你输入的卡号超过15位数!n);printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num); while(num0) printf(输入的饭卡号不能为负数!n); printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num); for(k=0;ki;k+) if(studentk.num=num)a=1;count+;printf(此号已经被注册了!请重新输入:n);break;else a=0; if(count=5) printf(你输入的无效卡号已经达到5次,系统将自动返回主菜单!n); return;while(a=1);studenti.num=num;printf(请输入你的姓名n);scanf(%s,name); strcpy(,name);printf(请输入你的饭卡钱n);scanf(%lf,&money); while(money0)printf(输入的金额必须为正数!n);printf(请输入你的饭卡钱n); scanf(%lf,&money);studenti.money=money;printf(请输入你的挂失信息(0表示没有挂失,1表示已经挂失):n);scanf(%d,&info);=info;for(k=0;kpow(10,15) printf(你输入的卡号超过15位数!n);printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num3); while(num30)printf(输入的饭卡号不能为负数!n); printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num3); for(j=0;ji;j+) if(studentj.num=num3) i-; flag=j; break; if(flag=-1) /查明是否有该卡count+; printf(此卡不存在!请重新输入:n);if(count=5)printf(你输入的卡号已经输入超过5次,系统将自动返回主菜单!n);return;while(flag=-1);for(k=flag;ki;k+)studentk=studentk+1;for(k=0;kpow(10,15)printf(你输入的卡号超过15位数!n);printf(请输入你的饭卡号,而且卡号不得超过15位数:n); scanf(%lf,&num4); while(num40)printf(输入的饭卡号不能为负数!n); printf(请输入你的饭卡号,而且卡号不得超过15位数:n); scanf(%lf,&num4); for(m=0;mi;m+) if(studentm.num=num4) flag=m; break; if(flag=-1)/查明是否有该卡count+; printf(找不到该卡!请重新输入:n); if(count=5)printf(你输入的卡号已经输入超过5次,系统将自动返回主菜单!n);return; while(flag=-1);printf(请输入你要修改的挂失信息(info=0表示没有挂失,info=1表示已经挂失):n);scanf(%d,&info1); =info1; for(k=0;ki;k+)fprintf(fp,%.0f%s%.0f%dn,studentk.num,,studentk.money,);void set()此函数为“设置与解除挂失”,此函数主要是将所要挂失的用户,把其数据中“info”挂失信息的值“0”(未挂失)改为“1”(已挂失)。函数首先判断是否存在该卡号,若存在,将对数据进行操作;否则,程序将推出系统。void bianli()的主要代码如下:if(i=0)printf(请先建立饭卡文件!n);return;for(l=0;li;l+)fscanf(fp,%lf%s%lf%d,&studentl.num,,&studentl.money,&);if(studentl.num=0)continue;fprintf(%.0f%s%.0f%dn,studentl.num,,studentl.money,);void bianli()此函数为“遍历”,主要是将文本的数据输出,再显示在屏幕上。完整程序请参见附录A5. 测试与调试 表1 测试用例测试数据类型测试数据预期结果实测结果合法数据首先输入1,然后输入7 输入各项信息,读入文件,然后在屏幕显示饭卡信息 在屏幕上显示饭卡信息 在没有建立饭卡文件时,输入7会在屏幕显示上次所记录的饭卡信息屏幕上无显示非法数据输入卡号时,若输入的是字母 会显示由字母构成的卡号 形成死循环 输入饭卡金额时,若输入的是字母会显示由字母构成的金额形成死循环第3部分 实训总结1. 个人总结2. 结束语附录A 程序清单#include#include#include#includestruct carddouble num; int info; /表示挂失信息,info=0表示没有挂失,info=1表示已经挂失char name20;double money;student100;void creat(); /创建文件void buy(); /买饭void con(); /续钱void add(); /添加新饭卡void mov(); /注销旧饭卡void set(); /设置与解除挂失void bianli(); /遍历int i=0,info;double num;char name20;double money;FILE *fp;int main(void)int choice;do printf(.n); printf( 请输入选择编号(0-7) n); printf(.n); printf( 1、建立饭卡文件 n); printf( 2、买饭 n); printf( 3、续钱 n); printf( 4、添加新饭卡 n); printf( 5、注销旧饭卡 n); printf( 6、设置与解除挂失 n); printf( 7、遍历 n); printf( 0、退出系统 n); printf(.n); scanf(%d,&choice); switch(choice) case 0:printf(感谢使用本软件!已正常退出,按任意键结束n);break; case 1:creat();break; case 2:buy();break; case 3:con();break; case 4:add();break; case 5:mov();break; case 6:set();break;case 7:bianli();break; default:exit(0);while(choice!=0);return 0;void creat()int a=0,k;i=0;if(fp=fopen(card.dat,w+)=NULL)printf(File open error!n);exit(0);printf(当输入的卡号为0时停止输入饭卡信息n); printf(请输入你的卡号,而且卡号不得超过15位数n);scanf(%lf,&num);while(num!=0)while(numpow(10,15)printf(你输入的卡号超过15位数!n); printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num);while(num=0)printf(输入的饭卡号不能为负数!n); printf(请输入你的卡号,而且卡号不得超过15位数n); scanf(%lf,&num); studenti.num=num;printf(请输入你的姓名n); scanf(%s,name);strcpy(,name);printf(请输入你的饭卡钱n);scanf(%lf,&money);while(money0)printf(输入的金额必须为正数!n); printf(请输入你的饭卡钱n); scanf(%lf,&money);studenti.money=money;printf(请输入你的挂失信息(0表示没有挂失,1表示已经挂失):n);scanf(%d,&info);=info; fprintf(fp,%.0f%s%.0f%dn,studenti.num,,studenti.money,); i+;do printf(请输入你的卡号n);

温馨提示

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

评论

0/150

提交评论