食堂就餐餐费管理系统Word格式文档下载.docx
- 文档编号:20867502
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:17
- 大小:141.12KB
食堂就餐餐费管理系统Word格式文档下载.docx
《食堂就餐餐费管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《食堂就餐餐费管理系统Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
指导教师:
________学生签名:
________
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段2
四、课设总结7
五、参考文献11
六、源程序11
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:
添加学生信息函数(addstudent),添加食谱信息函数(adddiet),按学号添加餐费函数(addfee),查询某日食谱函数(query),显示学生信息函数(show)。
在这些函数当中,前四个函数的实现严格按照题目的要求,而后面的一个函数属于附加功能。
1、添加学生信息函数主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;
2、添加食谱信息函数实现的功能是按照日期添加某日的早饭,午饭,晚饭的样式和费用的信息;
4、食谱查询函数允许按照日期对某日的各时段食物进行查询;
5、添加餐费函数可以实现对学生按照学号添加总的就餐餐费;
6、显示函数实现的是显示目前所有的有效学生记录信息。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名,以及即时的餐费总费用,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入E盘的student.dat文件中,其他函数每次对学生记录的访问,其数据来源都是student.dat文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
每一个食谱记录都包含日期,以及早,午,晚三餐的样式和费用。
在程序当中,将食谱记录类型定义为结构体类型,添加以及追加的食谱信息直接写入E盘的diet.dat文件中,其他函数每次对食谱记录的访问,其数据来源都是diet.dat文件,这样做不但可以保证食谱数据的一致性,而且可以对食谱数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)添加学生数据函数addstudent
图2添加学生数据函数
(2)添加食谱数据函数adddiet()
图3添加食谱数据函数
(3)读取学生数据reads
图4读取学生数据
三、核心技术的实现说明及相应程序段
本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,添加学生数据函数、添加食谱数据函数和添加学生餐费函数是程序中较为核心的部分,下面分别进行说明。
1、添加数据函数
添加数据分为录入学生信息和录入食谱信息两部分。
(1)录入学生信息,添加数据分为两种情况,其一是在学生文件(student.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中;
其二是在学生文件(student.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。
具体的程序段如下:
voidaddstudent()//添加学生信息
{FILE*fp;
intn,i,j;
structstudentstu;
if((fp=fopen("
e:
\\student.dat"
"
rb+"
))!
=NULL)//读写
{j=getw(fp);
rewind(fp);
printf("
请输入要添加的学生数量,按回车键确认:
"
);
scanf("
%d"
&
n);
putw(j+n,fp);
fseek(fp,0L,2);
//移动位置指针
for(i=1;
i<
=n;
i++)
{printf("
\n请输入第%d个学生的学号和姓名:
\n"
i);
%s%s"
stu.num,stu.name);
\n请输入第%d个学生的总餐费:
%f"
stu.dietcost);
fwrite(&
stu,sizeof(structstudent),1,fp);
//向文件写一组数据
}
else//文件不存在时,新建一个文件,并将数据写入该文件
{
wb"
=NULL)//只写
{
请输入要添加的学生数量:
putw(n,fp);
}
}
fclose(fp);
}
(2)录入食谱信息,与录入学生信息方法类似,具体的程序段如下:
voidadddiet()//添加食谱信息
{FILE*fp2;
structdietdie;
if((fp2=fopen("
\\diet.dat"
=NULL)
{j=getw(fp2);
rewind(fp2);
请输入要添加的食谱数量:
putw(j+n,fp2);
fseek(fp2,0L,2);
\n请输入第%d个食谱的日期:
%s"
die.date);
\n请输入第%d个食谱的早餐和费用,午餐和费用,晚餐和费用:
%s%s%s"
die.breakfast,&
die.lunch,&
die.supper);
die,sizeof(structdiet),1,fp2);
else//文件不存在时,新建一个文件,并将数据写入该文件
putw(n,fp2);
fclose(fp2);
2、按学号添加餐费函数函数
该函数的核心内容是首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待添加餐费学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则采用加法算法增加,否则输出学生信息不存在的提示信息。
对学生信息的具体加法算法是在结构体数组中实现的。
在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。
具体程序如下:
voidaddfee()//添加学生餐费
{structstudentstu[N],temp;
intn,i;
floatg;
FILE*fp;
\n请输入要增加餐费学生学号:
temp.num);
reads(stu,&
for(i=0;
n;
if(strcmp(temp.num,stu[i].num)==0)
break;
if(i>
=n)
{printf("
无此学生信息!
return;
\n请输入增加该学生的餐费数:
g);
stu[i].dietfee+=g;
/*strcpy(stu[i].dietfee,temp.dietfee);
*/
))==NULL)
打开文件失败!
stu[i],sizeof(structstudent),1,fp);
四、课设总结
虽然我在大一下学期学过C语言,但都是些皮毛。
经过课设这一个星期的学习,在老师精心的指导,同学的热心帮助下我的C语言编程知识有着突飞猛进的增长,受益匪浅。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include<
stdio.h>
string.h>
stdlib.h>
#defineN20
#defineM20
structstudent
{charnum[20];
charname[10];
floatdietfee;
};
structdiet
{chardate[20];
charbreakfast[100];
charlunch[100];
charsupper[100];
voidmenu();
voidreads();
voidreadss();
voidaddstudent();
voidadddiet();
voidaddfee();
voidquery();
voidshow();
main()
{
intn;
while
(1)
menu();
\n请输入您要选择的操作序号:
switch(n)
{case1:
addstudent();
break;
case2:
show();
case3:
adddiet();
case4:
addfee();
case5:
query();
case6:
exit(0);
default:
输入错误!
\n"
voidmenu()
{printf("
****************************食堂就餐餐费管理系统************************"
\n1添加学生信息"
\n2显示学生信息"
\n3添加食谱信息"
\n4按学号添加餐费"
\n5查询某日食谱"
\n6退出"
voidreads(structstudentstu[N],int*n)//读取学生信息文件
inti=0;
rb"
文件打开失败!
else
*n=getw(fp);
*n;
fread(&
stu.dietfee);
//向文件写一组数据
voidreadss(structdietdie[M],int*t)//读取食谱文件
FILE*fp2;
*t=getw(fp2);
*t;
die[i],sizeof(structdiet),1,fp2);
else//文件不存在时,新建一个文件,并将数据写入该文件
voidshow()//显示学生信息
{structstudentstu[N];
inti,n;
if(n==0)
\n学号:
姓名:
餐费:
%f\n"
stu[i].num,stu[i].name,stu[i].dietfee);
voidaddfee()//添加学生餐费
voidquery()//查询某日食谱信息
structdietdie[M];
chardate[20];
readss(die,&
\n请输入待查询食谱日期:
date);
if(strcmp(date,die[i].date)==0)break;
没有找到该日食谱信息!
\n日期:
早餐:
午餐:
晚餐:
die[i].date,die[i].breakfast,die[i].lunch,die[i].supper);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 食堂 餐餐 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)