C语言课程设计-学生饭卡管理系统(共19页).doc





《C语言课程设计-学生饭卡管理系统(共19页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计-学生饭卡管理系统(共19页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1.课程设计的目的随着网络技术的发展,各种电子设备在人群中普及开来,人们的生活方式也发生了很大的变化。现金付款逐渐被方便、安全、卫生的刷卡消费所代替。例如校园餐厅的就餐卡的使用就让学生在方便的同时最大限地减少了疾病的传播。这就需要一个操作系统来管理餐卡数据。于是尝试用C语言编写了一个小的餐厅餐卡管理系统,希望对餐厅有所帮助,也可以参考使用。本程序一共有六个选项,可以进行添加用户、查询用户、充值、消费、删除用户、退出系统等功能。能够实现学生在餐厅充值、刷卡消费、余额查询等活动。操作界面简洁,操作方法简单实用,足以帮助餐厅管理学生消费。程序用了条件、循环、函数、结构体等知
2、识点,综合了链表和文件的打开和保存编写的。本程序可运用于小的餐厅餐卡管理软件。本软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足餐厅工作人员的需要。2设计方案论证21设计思路建立一个函数,用来保存学生的学号、姓名、电话号码、班级、餐卡余额、密码等信息,完成餐厅就餐卡的功能。主函数可以调用六个子函数,分别完成添加用户、查询用户、充值、消费、删除用户、退出系统六个功能。在主函数中可以1、2、3、4、5、6数字键分别可以执行某个功能模块。主要功能模块即如图1所示:添加用户查询用户删除用户充 值收 费主菜单退出系统图1. 就餐卡主要功能模块开 始2
3、.2程序设计main ()主函数:读取文件主函数十分简洁,定义了本程序用到的各个变量及函数,然后读取文件后进入主菜单,显示函数各功能。正确读取?其运行的流程图如图2所示。NY输出主菜单 结 束 图2. 就餐卡主函数运行流程图select()主菜单1,主菜单链接各个分菜单,其功能即如图1所示。addnewcard(),添加用户函数。searchcard(),查询用户函数。addbalance(),充值函数函数。charge(), 收费函数函数。deletecard(),删除用户函数。exit(0), 退出系统函数。用户可以键入相应数字进入各个功能的操作界面。同时设置一个断点,即当返回值为“6”时
4、运行exit(0)函数来结束程序,以免造成死循环。其运行流程图如图3所示。开 始输入 iNi=1?YNYi=2?NY调 用addnewcard()i=3? NYi=4?N调 用searchcard()Yi=5?Y调 用addbalance() 调 用charge()调 用deletecard()结 束图3.就餐卡菜单函数流程图newrecord()添加用户菜单。餐厅管理人员可以按需要根据提示来直接添加学生用户,每次添加完毕系统会询问“是否继续添加?(Y/N)”当返回值为“n”或不是系统要求输入数值时,系统自动保存数据并返回主菜单。searchcard()查询用户2。在主菜单输入“2”时自动进入
5、查询学生信息,每次当输入卡号不存在时系统自动警告没有该用户。查询结束按任意键返回主菜单。其流程图如图4所示。addbalance()、charge(),充值/收费模块3。这两个模块十分相似餐厅管理人员只要输入所要充值学生的学号,就可以对相应学生充值或者扣除相应金额,操作十分简单。充值或扣费结束后系统自动显示操作后该学生信息并自动保存。餐卡充值运行流程图如图5所示。收费流程图类似充值,不再重复。deletecard()删除用户模块5。餐卡管理人员可以通过该模块选择删除需要注销的就餐卡。如果餐卡内余额不为零,系统则提示返还相应金额给学生。开 始输入学号n开 始输入学号n输入学号nm=student
6、i.cardnumberi=0m=studenti.cardnumberi=0i=i+1i=i+1Nm=nNm=nY输出该学生信息Y输入添加金额k输出该学生信息studenti.balance+=k结 束输出该学生信息图4.查询用户流程图 结 束图5.充值流程图2.3.源程序#include #include #include #include #include struct record char cardnumber10; char name20; char phone20; char classn40; char password10; int balance; student500;
7、int num=0; /*外部变量num为文件中的纪录数 */FILE *fp; void select(); /* 主菜单 */void addnewcard(); /*添加用户*/ void searchcard(); /*查询用户*/void readfile(); /*读取文件*/ void deletecard(); /*删除用户*/ void addbalance(); /* 充值 */void password(); /* 密码 */void charge(); /* 收费 */void main() /* 主函数 */ readfile(); /*读取文件*/while (1)
8、 select(); /* 主菜单 */ void readfile() /*导入文件,打开欢迎进入界面*/ if(fp=fopen(student.bin,rb)=NULL) if (fp=fopen(student.bin,wb)=NULL) exit(0); else getch(); return; exit(0); fseek(fp,0,2); if (ftell(fp)0) /*文件非空*/ rewind(fp); for (num=0;!feof(fp) & fread(&studentnum,sizeof(struct record),1,fp);num+); return;
9、void select() /* 主菜单 */ char choic; system(cls); printf(ntt* 主菜单 *); printf(ntt* 1-添加用户 2-查询用户 *); printf(ntt* 3- 充 值 4- 消 费 *); printf(ntt* 5-删除用户 6-退出系统 *); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1:addnewcard();break; case 2:searchcard();break; case 3:addbalance();break;
10、 case 4:charge();break; case 5:deletecard();break; case 6:exit(0); default:select(); void addnewcard() /*添加用户*/ printf(ntt* 请输入学生信息 *n); printf(ntt输入学号:); scanf(%s,&studentnum.cardnumber); printf(ntt输入姓名:); scanf(%s,&studentnum.name); printf(ntt输入电话号码:); scanf(%s,&studentnum.phone); printf(ntt输入班级:)
11、; scanf(%s,&studentnum.classn); printf(ntt输入密码:); scanf(%s,&studentnum.password); printf(ntt输入添加金额:); scanf(%d,&studentnum.balance); num+; printf(ntt是否继续添加?(Y/N):); if (getch()=y) addnewcard(); return; void searchcard() /*查询用户 */ int mark=0; int i; int a=0; printf(ntt* 按学号查找 *n); char cardnumber10;
12、printf(ntt请输入学号:); scanf(%s,cardnumber); for(i=0;inum;i+) if (strcmp(studenti.cardnumber,cardnumber)=0) printf(ntt* 以下是您查找的学生信息 *); printf(ntt学号: %s,studenti.cardnumber); printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt班级: %s,studenti.classn); printf(ntt余额: %d,studenti.b
13、alance);printf(ntt密码: %s,studenti.password); printf(ntt*); printf(ntt按任意键返回主菜单:); mark+; getch(); return; if (mark=0) printf(ntt没有改学生的信息); printf(ntt按任意键返回主菜单); getch(); return; void addbalance() /*充值*/ int i; int m; int a=0; printf(ntt* 按学号添加金额 *n); char cardnumber10; printf(ntt请输入学号:); scanf(%s,ca
14、rdnumber); for(i=0;inum;i+) if (strcmp(studenti.cardnumber,cardnumber)=0) printf(ntt* 以下是您所选择学生信息 *); printf(ntt学号: %s,studenti.cardnumber); printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt班级: %s,studenti.classn); printf(ntt余额: %d,studenti.balance); printf(ntt密码: %s,stud
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 管理 系统 19

限制150内