最新C语言课程设计学生饭卡管理系统资料.docx
- 文档编号:504381
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:22
- 大小:192.09KB
最新C语言课程设计学生饭卡管理系统资料.docx
《最新C语言课程设计学生饭卡管理系统资料.docx》由会员分享,可在线阅读,更多相关《最新C语言课程设计学生饭卡管理系统资料.docx(22页珍藏版)》请在冰豆网上搜索。
最新C语言课程设计学生饭卡管理系统资料
1.课程设计的目的
随着网络技术的发展,各种电子设备在人群中普及开来,人们的生活方式也发生了很大的变化。
现金付款逐渐被方便、安全、卫生的刷卡消费所代替。
例如校园餐厅的就餐卡的使用就让学生在方便的同时最大限地减少了疾病的传播。
这就需要一个操作系统来管理餐卡数据。
于是尝试用C语言编写了一个小的餐厅餐卡管理系统,希望对餐厅有所帮助,也可以参考使用。
本程序一共有六个选项,可以进行添加用户、查询用户、充值、消费、删除用户、退出系统等功能。
能够实现学生在餐厅充值、刷卡消费、余额查询等活动。
操作界面简洁,操作方法简单实用,足以帮助餐厅管理学生消费。
程序用了条件、循环、函数、结构体等知识点,综合了链表和文件的打开和保存编写的。
本程序可运用于小的餐厅餐卡管理软件。
本软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足餐厅工作人员的需要。
2.设计方案论证
2.1设计思路
建立一个函数,用来保存学生的学号、姓名、电话号码、班级、餐卡余额、密码等信息,完成餐厅就餐卡的功能。
主函数可以调用六个子函数,分别完成添加用户、查询用户、充值、消费、删除用户、退出系统六个功能。
在主函数中可以1、2、3、4、5、6数字键分别可以执行某个功能模块。
主要功能模块即如图1所示:
图1.就餐卡主要功能模块
2.2程序设计
①main()主函数:
主函数十分简洁,定义了本程序
用到的各个变量及函数,然后读取文件后进
入主菜单,显示函数各功能。
其运行的流程图如图2所示。
图2.就餐卡主函数运行流程图
②select()主菜单[1],主菜单链接各个分菜单,其功能即如图1所示。
addnewcard(),添加用户函数。
searchcard(),查询用户函数。
addbalance(),充值函数函数。
charge(),收费函数函数。
deletecard(),删除用户函数。
exit(0),退出系统函数。
用户可以键入相应数字进入各个功能的操作界面。
同时设置一个断点,即当返回值为“6”时运行exit(0)函数来结束程序,以免造成死循环。
其运行流程图如图3所示。
Y
图3.就餐卡菜单函数流程图
③newrecord()添加用户菜单。
餐厅管理人员可以按需要根据提示来直接添加学生用户,每次添加完毕系统会询问“是否继续添加?
(Y/N)”当返回值为“n”或不是系统要求输入数值时,系统自动保存数据并返回主菜单。
④searchcard()查询用户[2]。
在主菜单输入“2”时自动进入查询学生信息,每次当输入卡号不存在时系统自动警告没有该用户。
查询结束按任意键返回主菜单。
其流程图如图4所示。
⑤addbalance()、charge(),充值/收费模块[3]。
这两个模块十分相似餐厅管理人员只要输入所要充值学生的学号,就可以对相应学生充值或者扣除相应金额,操作十分简单。
充值或扣费结束后系统自动显示操作后该学生信息并自动保存。
餐卡充值运行流程图如图5所示。
收费流程图类似充值,不再重复。
⑥deletecard()删除用户模块[5]。
餐卡管理人员可以通过该模块选择删除需要注销的就餐卡。
如果餐卡内余额不为零,系统则提示返还相应金额给学生。
图4.查询用户流程图
图5.充值流程图
2.3.源程序
#include
#include
#include
#include
#include
structrecord
{
charcardnumber[10];
charname[20];
charphone[20];
charclassn[40];
charpassword[10];
intbalance;
}
student[500];
intnum=0;/*外部变量num为文件中的纪录数*/
FILE*fp;
voidselect();/*主菜单*/
voidaddnewcard();/*添加用户*/
voidsearchcard();/*查询用户*/
voidreadfile();/*读取文件*/
voiddeletecard();/*删除用户*/
voidaddbalance();/*充值*/
voidpassword();/*密码*/
voidcharge();/*收费*/
voidmain()/*主函数*/
{
readfile();/*读取文件*/
while
(1)
{
select();/*主菜单*/
}
}
voidreadfile()/*导入文件,打开欢迎进入界面*/
{
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(&student[num],sizeof(structrecord),1,fp);num++);
return;
}
}
voidselect()/*主菜单*/
{
charchoic;
system("cls");
printf("\n\t\t********************主菜单********************");
printf("\n\t\t***********1-添加用户2-查询用户************");
printf("\n\t\t***********3-充值4-消费************");
printf("\n\t\t***********5-删除用户6-退出系统************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:
");
choic=getch();
switch(choic)
{
case'1':
addnewcard();break;
case'2':
searchcard();break;
case'3':
addbalance();break;
case'4':
charge();break;
case'5':
deletecard();break;
case'6':
exit(0);
default:
select();
}
}
voidaddnewcard()/*添加用户*/
{
printf("\n\t\t***************请输入学生信息***************\n");
printf("\n\t\t输入学号:
");
scanf("%s",&student[num].cardnumber);
printf("\n\t\t输入姓名:
");
scanf("%s",&student[num].name);
printf("\n\t\t输入电话号码:
");
scanf("%s",&student[num].phone);
printf("\n\t\t输入班级:
");
scanf("%s",&student[num].classn);
printf("\n\t\t输入密码:
");
scanf("%s",&student[num].password);
printf("\n\t\t输入添加金额:
");
scanf("%d",&student[num].balance);
num++;
printf("\n\t\t是否继续添加?
(Y/N):
");
if(getch()=='y')
addnewcard();
return;
}
voidsearchcard()/*查询用户*/
{
intmark=0;
inti;
inta=0;
printf("\n\t\t*****************按学号查找*****************\n");
charcardnumber[10];
printf("\n\t\t请输入学号:
");
scanf("%s",cardnumber);
for(i=0;i { if(strcmp(student[i].cardnumber,cardnumber)==0) { printf("\n\t\t**************以下是您查找的学生信息**********"); printf("\n\t\t学号: %s",student[i].cardnumber); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t班级: %s",student[i].classn); printf("\n\t\t余额: %d",student[i].balance); printf("\n\t\t密码: %s",student[i].password); printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单: "); mark++; getch(); return; } } if(mark==0) { printf("\n\t\t没有改学生的信息"); printf("\n\t\t按任意键返回主菜单"); getch(); return; } } voidaddbalance()/*充值*/ { inti; intm; inta=0; printf("\n\t\t***************按学号添加金额***************\n"); charcardnumber[10]; printf("\n\t\t请输入学号: "); scanf("%s",cardnumber); for(i=0;i { if(strcmp(student[i].cardnumber,cardnumber)==0) { printf("\n\t\t**********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语言 课程设计 学生 管理 系统 资料