1.课程设计的目的
随着网络技术的发展,各种电子设备在人群中普及开来,人们的生活方式也发生 了很大的变化。现金付款逐渐被方便、安全、卫生的刷卡消费所代替。例如校园餐厅的 就餐卡的使用就让学生在方便的同时最大限地减少了疾病的传播。这就需要一个操作系
统来管理餐卡数据。于是尝试用C语言编写了一个小的餐厅餐卡管理系统, 希望对餐厅 有所帮助,也可以参考使用。
本程序一共有六个选项,可以进行添加用户、查询用户、充值、消费、删除用户、 退出系统等功能。能够实现学生在餐厅充值、刷卡消费、余额查询等活动。操作界面简 洁,操作方法简单实用,足以帮助餐厅管理学生消费。
程序用了条件、循环、函数、结构体等知识点,综合了链表和文件的打开和保存 编写的。本程序可运用于小的餐厅餐卡管理软件。本软件运用菜单实现交互式管理,用 户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足餐厅 工作人员的需要。
2 .设计方案论证
2 . 1设计思路
建立一个函数,用来保存学生的学号、姓名、电话号码、班级、餐卡余额、密码 等信息,完成餐厅就餐卡的功能。主函数可以调用六个子函数,分别完成添加用户、查 询用户、充值、消费、删除用户、退出系统六个功能。在主函数中可以1、2、3、4、5、
6数字键分别可以执行某个功能模块。
主要功能模块即如图1所示:
入主菜单,显示函数各功能
其运行的流程图如图2所示
正确读取?
图2.就餐卡主函数运行流程图
select()主菜单⑴,主菜单链接各个分菜单,其功能即如图 1所示。 add newcard(),添加用户函数。
searchcard(),查询用户函数。
addbalance(),充值函数函数。
charge(),收费函数函数。
deletecard(),删除用户函数。
exit(O), 退出系统函数。
用户可以键入相应数字进入各个功能的操作界面。同时设置一个断点,即当返回
值为“6”时运行exit(O)函数来结束程序,以免造成死循环。其运行流程图如图3所示
图3.就餐卡菜单函数流程图
newrecord()添加用户菜单。餐厅管理人员可以按需要根据提示来直接添加学生
用户,每次添加完毕系统会询问“是否继续添加?(Y/N) ”当返回值为“ n”或不是系统
要求输入数值时,系统自动保存数据并返回主菜单。
searchcard()查询用户[2]。在主菜单输入“ 2”时自动进入查询学生信息,每次 当输入卡号不存在时系统自动警告没有该用户。查询结束按任意键返回主菜单。其流程 图如图4所示。
addbalance()、charge(),充值/收费模块[3]。这两个模块十分相似餐厅管理人 员只要输入所要充值学生的学号,就可以对相应学生充值或者扣除相应金额,操作十分 简单。充值或扣费结束后系统自动显示操作后该学生信息并自动保存。餐卡充值运行流
程图如图5所示。收费流程图类似充值,不再重复。
deletecard()删除用户模块[5]。餐卡管理人员可以通过该模块选择删除需要注销 的就餐卡。如果餐卡内余额不为零,系统则提示返还相应金额给学生。
输入添加金额k
图4.查询用户流程图
图5?充值流程图
23源程序
#in elude #in elude
#in elude #in elude #in elude struct reeord
ehar eard nu mber[10];
ehar n ame[20];
ehar phon e[20];
ehar class n[4 0];
ehar password[10];
int bala nee;
stude nt[500];
int num=0;
/*外部变量num为文件中的纪录数*/
FILE *fp;
void seleet();
/*主菜单*/
void add newcard();
/*添加用户*/
void seareheard();
/*查询用户*/
void readfile();
/*读取文件*/
/*删除用户
/*删除用户*/
void addbala nce();
/*
充值
*/
void password。;
/*
密码
*/
void charge();
/*
收费
*/
void mai n()
/*
主函数
*/
{
readfile();
/*读取文件
*/
while (1)
{
select();
/*
王采单
*/
}
}
void readfile()/*导入文件,打开欢迎进入界面*/
{
if((fp=fope n( "stude nt.bi n","rb"))==NULL)
{
if ((fp=fope n( "stud