语言课程设计食堂就餐餐费管理系统_第1页
语言课程设计食堂就餐餐费管理系统_第2页
语言课程设计食堂就餐餐费管理系统_第3页
语言课程设计食堂就餐餐费管理系统_第4页
语言课程设计食堂就餐餐费管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、1课程设计任务书课程设计任务书课程设计任务书课程设计任务书题目题目题目题目:食堂就餐餐费管理系统食堂就餐餐费管理系统食堂就餐餐费管理系统食堂就餐餐费管理系统(1)(1)(1)(1)一一一一、课程设计时间课程设计时间课程设计时间课程设计时间共计1周,20学时。二二二二、课程设计内容课程设计内容课程设计内容课程设计内容用C语言编写软件完成以下任务:1添加学生信息;2添加菜谱信息;3菜谱查询;4按学号添加餐费;三三三三、课程设计要求课程设计要求课程设计要求课程设计要求1.程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“添加学生信息”、“添加菜谱信息”

2、、“菜谱查询”、“按学号添加餐费”、“退出”5项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四四四四、指导教师和学生签字指导教师和学生签字指导教师和学生签字指导教师和学生签字指导教师指导教师指导教师指导教师:_学生签名学生签名学生签名学生签名:_五五五五、说明书成绩说明书成绩说明书成绩说明书成绩六六六六、教师评语教师评语教师评语教师评语I目目目目录录录录一、需求分析.1二、程序流程图.1三、核心技术的实现说明及相应程序段.6四、课设总结.9五、参考文献.9六、源程序.91一一一一、

3、需求分析需求分析需求分析需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为十一个模块,每一个模块对应一个函数。在这些函数当中,添加学生数据函数,添加食谱函数,就餐买单函数,餐费查询函数的实现严格按照题目的要求,而更改数据函数和显示函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1.添加学生数据函数主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;2.添加食谱数据函数主要实现程序最初运行时食谱数据的录入以及其后的运行中食谱数据的追加功能;3.删除学生数据函数实现的功能是按照学号对学生的数据记录进行删除

4、;4.菜谱查询函数按照题目的具体要求实现的是学生就餐及每次餐费累加的更新。5.餐费查询函数允许按照学号对学生的总餐费进行查询;6.显示学生数据函数实现的是显示目前所有的有效学生记录信息。7.显示食谱信息函数实现的是显示目前所有的有效食谱记录信息。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含学号、姓名,以及餐费,在程序当中,将学生(食谱)记录类型定义为结构体类型,添加以及追加的学生(食谱)信息直接写入E盘的student(caipu).txt文件中,其它函数每次对学生(食谱)记录的访问,其数据来源都是stud

5、ent(caipu).txt文件,这样做不但可以保证学生(食谱)数据的一致性,而且可以对学生(食谱)数据进行永久保存,保证每次运行程序都可以采用原来的数据。二二二二、程序流程图程序流程图程序流程图程序流程图1.程序总体结构图2图1程序总体结构图2.具体功能框图(1)添加学生(食谱)数据函数add(ad) 当1输入值 n=1?真假添加学生信息函数 add()n=2?真假显示学生信息函数 show()n=3?真假删除函数 del()真假n=4?添加食谱信息函数 ad()n=5?真假就餐买单函数 all()菜谱查询函数 query()n=6?真假显示食谱函数sho()退出n=7?真假3以追加方式打开

6、E盘student.txt(caipu.txt)文件成功?真假以追加方式打开E盘student.txt真(caipu.txt)文件成功假?输入添加学生(食谱)数量n循环变量i=1输出文件失败当i<=n时输入学号(编码)、姓名(名称)和餐费(价格)返回学生(食谱)信息写入文件i+关闭文件图2添加学生(食谱)数据函数(2)读取学生(食谱)数据函数reads(read)4以读方式打开E盘student.txt(caipu.txt)文件成功?真假循环变量i=0文件未结束时输出文件打开失败读取学生(食谱)信息到数组元素stui(cai)中i+关闭文件返回返回学生(食谱)数i图3读取学生(食谱)数据

7、(3)删除学生记录函数del5图4删除学生记录(4)就餐买单函数all6m=read(ca)循环变量i=0当num2=cai.numberq=cai.pricen=reads(stu)循环变量i=0当num1=stui.numStui.A=q+stui.Asave(stu,n)更新文件输出就餐成功图5就餐买单三三三三、核心技术的实现说明及相应程序段核心技术的实现说明及相应程序段核心技术的实现说明及相应程序段核心技术的实现说明及相应程序段本程序主要由十一个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、添加食谱数据函数、就餐买

8、单函数和查询餐费函数是程序中较为核心的部分,下面分别进行说明。1.添加学生数据函数添加数据分为两种情况,其一是在学生文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中;其二是在学生文件(student.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:if(fp=fopen("e:student.txt","a")=NULL)/如果文件已经存在,可以追加学生信息if(fp=fopen("e:student.txt",&qu

9、ot;w")=NULL)/文件不存在时,创建新文件,输入学生信息printf("文件打开失败!n");7return;printf("请输入要添加的学生数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i+)printf("n请输入第%d个学生的学号、姓名、餐费,用空格分开,并按回车键确认:n",i);scanf("%d%s%f",&j,,&stu.A);if(j=0)break;stu.num=j;fpri

10、ntf(fp,"%d%s%fn",stu.num,,stu.A);2.添加食谱数据函数添加数据分为两种情况,其一是在食谱文件(caipu.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的食谱信息写入该文件当中;其二是在食谱文件(caipu.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:if(fp=fopen("e:caipu.txt","a")=NULL)/如果文件已经存在如果文件已经存在如果文件已经存在如果文件已经存在,可以追加食可以追加食可

11、以追加食可以追加食谱谱谱谱信息信息信息信息if(fp=fopen("e:caipu.txt","w")=NULL)/文件不存在时文件不存在时文件不存在时文件不存在时,创建新创建新创建新创建新文文文文件件件件,输入食谱信息输入食谱信息输入食谱信息输入食谱信息printf("文件打开失败文件打开失败文件打开失败文件打开失败!n");return;printf("请输入要添加的食谱数量请输入要添加的食谱数量请输入要添加的食谱数量请输入要添加的食谱数量,按回车键确认按回车键确认按回车键确认按回车键确认:");scanf(&

12、quot;%d",&n);for(i=1;i<=n;i+)printf("n请输入第请输入第请输入第请输入第%d个食谱的编码个食谱的编码个食谱的编码个食谱的编码、名称名称名称名称,价格价格价格价格,用空格分开用空格分开用空格分开用空格分开,并并并并按回车键确认按回车键确认按回车键确认按回车键确认:n",i);scanf("%d%s%f",&j,ca.nam,&ca.price);if(j=0)8break;ca.number=j;fprintf(fp,"%d%s%fn",ca.number,ca

13、.nam,ca.price);3.菜谱查询函数对于就餐买单函数,这部分程序调用了reads和read函数,整个程序的实现是在结构体数组stu和ca中实现的。由于这个程序的实现涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。就餐买单函数使学生数据发生了变化,因此也需要对源文件进行更新,将更新的学生信息写入信息源。具体的程序段如下:structstudentstuN;structcaipucaN;intnum1,num2,n,i,m;floatq;printf("n请输入食谱编码n");scanf("%d",&num2);m=read

14、(ca);for(i=0;i<m;i+)if(num2=cai.number)q=cai.price;printf("请输入学生卡号n");scanf("%d",&num1);n=reads(stu);for(i=0;i<n;i+)if(num1=stui.num)stui.A=q+stui.A;save(stu,n);printf("就餐成功!nn");4餐费查询函数在餐费查询函数中,这个程序仍然调用了reads函数,整个过程是在结构体数组stu中实现。实现了对学生的餐费按学号查询的功能。具体的程序段如下:int

15、d;inti,n;n=reads(stu);printf("n请输入待查询的学生学号,按回车键确认:n");scanf("%d",&d);for(i=0;i<n;i+)9if(d=stui.num)break;if(i>=n)printf("没有找到该学生信息!n");return;elseprintf("n%d%s%fn",stui.num,,stui.A);四四四四、课设总结课设总结课设总结课设总结五五五五、参考文献参考文献参考文献参考文献1谭浩强C程序设计北京:清华大学出

16、版社,2005六六六六、源程序源程序源程序源程序#include<stdio.h>#include<stdlib.h>#include"conio.h"#defineN20structstudentcharnum20;charname10;floatcanfei;structfoodcharnum20;charname10;floatprice;10voidmenu();intreads(structstudentstuN);voidsave(structstudentstuN,intn);intreads2(structfoodfoN);voids

17、ave2(structfoodfoN,intn);voidadd();voidadd2();voidquery();voidshow();voidmain()intn;while(1)menu();printf("n请输入您要选择的操作序号,按回车键确认:");scanf("%d",&n);switch(n)case1:add();break;case2:add2();break;case3:show();break;case4:query();break;case5:exit(0);default:printf("输入错误,请输入列表

18、中存在的序号!n");voidmenu()printf("*食堂就餐餐费管理系统*");11printf("n1添加学生信息");printf("n2添加菜谱信息");printf("n3菜谱查询");printf("n4按学号添加餐费");printf("n5退出");intreads(structstudentstuN)/读取学生文件中的内容FILE*fp;inti=0;if(fp=fopen("e:student.txt","r&

19、quot;)=NULL)printf("文件打开失败!n");return0;elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s%s%fn",stui.num,,&stui.canfei);fclose(fp);returni;voidsave(structstudentstuN,intn)/学生信息改变后更新文件FILE*fp;inti=0;if(fp=fopen("e:student.txt","w")=NULL)printf("文件打开失败!n&q

20、uot;);return;else12for(i=0;i<n;i+)fprintf(fp,"%s%s%fn",stui.num,,stui.canfei);fclose(fp);intreads2(structfoodfoN)/读取菜谱文件中的内容FILE*fp;inti=0;if(fp=fopen("e:food.txt","r")=NULL)printf("文件打开失败!n");return0;elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s%s%f

21、n",foi.num,,&foi.price);fclose(fp);returni;voidsave2(structfoodfoN,intn)/菜谱信息改变后更新文件FILE*fp;inti=0;if(fp=fopen("e:food.txt","w")=NULL)printf("文件打开失败!n");return;elsefor(i=0;i<n;i+)fprintf(fp,"%s%s%fn",foi.num,,foi.price);13fclose(fp)

22、;voidadd()/*添加学生信息*/FILE*fp;intn,i;structstudentstu;if(fp=fopen("e:student.txt","a")=NULL)/如果文件已经存在,可以追加学生信息if(fp=fopen("e:student.txt","w")=NULL)/文件不存在时,创建新文件,输入学生信息printf("文件打开失败!n");return;printf("请输入要添加的学生数量,按回车键确认:");scanf("%d&quo

23、t;,&n);for(i=1;i<=n;i+)printf("n请输入第%d个学生的学号、姓名,用空格分开,并按回车键确认:n",i);scanf("%s%s",stu.num,);printf("n请输入第%d个学生的餐费,并按回车键确认:n",i);scanf("%f",&stu.canfei);fprintf(fp,"%s%s%fn",stu.num,,stu.canfei);fclose(fp);voidadd2()/*添加菜谱信息*

24、/FILE*fp;intn,i;structfoodfo;14if(fp=fopen("e:food.txt","a")=NULL)/如果文件已经存在,可以追加菜谱信息if(fp=fopen("e:food.txt","w")=NULL)/文件不存在时,创建新文件,输入菜谱信息printf("文件打开失败!n");return;printf("请输入要添加的菜谱数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i+)printf("n请输入第%d个菜的编号、名称,用空格分开,并按回车键确认:n",i);scanf("%s%s",fo.num,);printf("n请输入第%d个菜的价格,并按回车键确认:n",i);scanf("%f&qu

温馨提示

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

最新文档

评论

0/150

提交评论