收藏 分享(赏)

编程方法导论课程论文报告—餐厅信息管理程序 _郝晋奎_.doc

上传人:cjc2202537 文档编号:1138144 上传时间:2018-06-14 格式:DOC 页数:20 大小:236KB
下载 相关 举报
编程方法导论课程论文报告—餐厅信息管理程序 _郝晋奎_.doc_第1页
第1页 / 共20页
编程方法导论课程论文报告—餐厅信息管理程序 _郝晋奎_.doc_第2页
第2页 / 共20页
编程方法导论课程论文报告—餐厅信息管理程序 _郝晋奎_.doc_第3页
第3页 / 共20页
编程方法导论课程论文报告—餐厅信息管理程序 _郝晋奎_.doc_第4页
第4页 / 共20页
编程方法导论课程论文报告—餐厅信息管理程序 _郝晋奎_.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、中国地质大学(武汉)课程论文报告课程名称 编程方法导论 论文题目 餐厅信息管理程序学 院 _环境学院_专 业 _生物科学_姓 名 _郝晋奎_学 号 20131001325 2指导老师 綦广 目录一、 前言 .3二、 设计内容 .3三、 总体设计思路 .3四、 功能模块的详细设计 .31) 数据的存储结构 .32) 函数之间的调用关系说明 .43) 各函数实现 .4五、 程序的调试及测试 .111) 菜单功能 .112) 点菜功能 .123) 订餐功能 .124) 结账功能 .135) 修改菜单功能 .13六、 心得体会 .13七、 参考文献 .13八、 程序源代码 .143一、 前言因为喜欢编

2、程所以选择了编程方法导论这门课。也因为专业所限从没有用学习过编程课程,对编程了解也是通过自学。通过这门课程使我对编程有了一个更为宏观的了解,也学到了很多课本上没有的东西,收获很多。这次的程序设计,用到了我学到的所有知识,一定会有很多不足,也会略显稚嫩,请老师批评指正。二、 设计内容主要利用 c 语言的文件操作能力设计开发一个小型的餐厅信息管理程序,至少具有如下功能:点菜、结账、餐桌预定、菜单修改、餐厅信息统计等功能。操作菜单要能使使用者看懂,以便使用者正确使用。三、 总体设计思路通过程序实现餐厅管理的便捷化。主要围绕餐厅日常常用的功能来编写程序,一个函数实现一个功能,尽量做到相互之间互不影响,

3、为整个程序服务。程序遵循以下思路:1) 以结构化各个功能模块,函数间的调用精简整个函数。2) 以全局结构来随时定义结构数组以及机构。3) 以写一个信息存一个的思想,实现多个添加功能。4) 以读一个打印一个的思想,实现显示全部信息。5) 以先判断再打印的思想,来实现查找是否有这个餐桌。4四、 功能模块的详细设计1) 数据的存储结构因为菜、餐桌信息均不只含有一项内容,所以使用结构体数组typedef struct f /菜信息char name30; /菜名int price; /菜定价_food;typedef struct t /餐桌信息int flag; /定义变量名用于判断int foo3

4、0; /餐桌编号_table;struct r /订单信息_food food20; /所选菜信息_table table30; /所选餐桌信息2) 函数之间的调用关系说明在主函数中通过 case 选择语句调用:system(“cls“);menu(order(save(book(bill(total_information(change_menu(entry(九个函数,其中各函数中又个别嵌套调用了其他函数。3) 各函数实现 order(struct r*restaurant) 订餐的函数:5order(struct r*restaurant) /实现点菜功能int i,j;printf(“n

5、n*nn“);printf(“ttt 订 餐 nn“);printf(“*nn“);printf(“请先输入选择的桌子号码(1-30):“);scanf(“%d“, /读入桌子号码if(restaurant-tablei.flag=1|restaurant-tablei.flag=2) /当餐桌为已有人或已被预订情况时提示重新选择printf(“%d 号桌已经被定n“,i);printf(“按回车,请重新选择!n“);getchar();order(restaurant); /调用 order 函数return;restaurant-tablei.flag=1;/将 1 赋值给 flag,定义

6、此时为printf(“请输入您要选择的菜号码(1-20),以空格分开,以 999 结束n“);for(j=1;restaurant-tablei.fooj-1!=999;j+) /当最后一位为 999 时结束 for 循环,否则全部读入内存scanf(“%d“, /从键盘读入所选菜编号printf(“点菜成功!n“);system(“pause“);restaurant 是指向 struct r 结构体的指针。输入餐桌号 i,如果 tablei.flag 是 1 或 2,则显示该桌已被选定,系统提示重新选择餐桌号,通过嵌套函数 order(restaurant)再次选择。如果 tablei.f

7、lag 不是 1 或 2,则该桌可用,同时使 tablei.flag 变为 1 防止重复选定。然后是 for 语句循环,直到输入999 之前可以持续点餐,点餐通过输入菜对应的编号实现,想重复点同一道菜可以再次输入编号。 book(struct r * restaurant) 预定餐桌和菜的函数:book(struct r * restaurant) /实现预定功能,记录存入内存int i,j;printf(“n*nn“);printf(“ttt 预 定 nn“);6printf(“*nn“);printf(“请输入预定的桌子号码(1-30):“);scanf(“%d“, /读入桌子号码if(r

8、estaurant-tablei.flag=1|restaurant-tablei.flag=2) /当 flag 等于 1 或等于 2 时提示重新选择printf(“%d 号桌已经被定n“,i);printf(“按回车,请重新选择!n“);getchar();book(restaurant); /调用 book 函数return;restaurant-tablei.flag=2; /将 2 复制给 flag,定义此时预定桌位及菜printf(“请输入您要预定的菜号码,以空格分开,以 999 结束n“);for(j=1;restaurant-tablei.fooj-1!=999;j+) /当最

9、后一位为 999 时结束 for 循环,否则全部读入内存scanf(“%d“, /从键盘读入菜编号printf(“预定成功!n“);system(“pause“);restaurant 是指向 struct r 结构体的指针。系统提示“请输入预定的桌子号码(1-30):”同 order 函数,若 tablei.flag 是 1 或 2,则显示该桌已被选定,系统提示重新选择餐桌号,通过嵌套函数 book(restaurant)再次选择。如果 tablei.flag 不是 1 或 2,则该桌可预定,同时使 tablei.flag 变为 2防止重复预定。 for(j=1;restaurant-tab

10、lei.fooj-1!=999;j+) scanf(“%d“, 意思是只要输入的编号不是999 就可以持续点菜(bill 函数有设置,即使输入的编号超过菜单范围也不会被收费。特别注意 for 语句循环中是 j-1 而不是 j,因为从第二次循环开始,先 j+后判断)printf(“预定成功!n“);getchar();getchar();其中第一个getchar();用以接收回车键,第二个 getchar();返回主界面。 bill(struct r * restaurant) 用于结账的函数:bill(struct r * restaurant) /实现结账功能7int bill=0,i,j;

11、 /对 bill 初始化printf(“*nn“);printf(“ttt 结 账nn“);printf(“*nn“);printf(“请输入要结账的桌子号码:n“);scanf(“%d“, /读入餐桌号if(restaurant-tablei.flag!=1getchar();getchar();return;elsefor(j=1;restaurant-tablei.fooj!=999;j+) /读入该桌所选菜的信息if(restaurant-tablei.foojtablei.fooj0)/如果该道菜存在bill+=restaurant-foodrestaurant-tablei.foo

12、j.price;/统计菜的总价printf(“%d 号桌一共消费%d 元.n“,i,bill);printf(“1、释放该桌位 2、返回上一层n“);scanf(“%d“,if(j=1)restaurant-tablei.flag=-1; /将-1 赋值给 flag,此时释放所选桌位elsegetchar();return;getchar();getchar();若 tablei.flag 是 1,表示正被使用,可以结帐;若 tablei.flag 是 2,表示已被预定,可以结账。如果不是 1 或 2,则表示没人,不能结账。restaurant-foodrestaurant-tablei.fo

13、oj.price 表示第 i 张桌子点的菜的编号,bill+=restaurant-foodrestaurant-tablei.fooj.price是把所有的菜单价格相加。8restaurant-tablei.foojtablei.fooj0 表示如果输入的编号不在菜单范围内就不能算入账单,否则会出错,这提高了容错性。结账后,若是输入 1,由 if(j=1)restaurant-tablei.flag=-1;知该桌位会被释放供其他客人使用,再按 2 return 返回界面。 函数 total_information(struct r *restaurant) 显示所有进账和餐厅信息total_

14、information(struct r *restaurant) /显示所有进账和餐厅信息int bill=0,i,j,count=0; /初始化 bill 和 countprintf(“*nn“);printf(“ttt 进账和餐厅的信息nn“);printf(“*nn“);for(i=1;itablei.flag=1|restaurant-tablei.flag=2) /当餐桌被选择或预定时 count 增加count+;for(j=1;restaurant-tablei.fooj-1!=999;j+)if(restaurant-tablei.foojtablei.fooj0)bill+

15、=restaurant-foodrestaurant-tablei.fooj.price;printf(“总共进账%d 元n“,bill); /输出进账金额printf(“目前总共有%d 个桌子被预定或有人n“,count);/输出预定或有人的桌子数量printf(“目前有%d 个空桌子n“,30-count);/输出剩余桌子数量getchar();getchar();此函数无返回值,首先定义并初始化变量,输出标题后通过 for 循环计算出进账金额及被使用的桌子和剩余桌子数for(i=1;itablei.flag=1 或 restaurant-tablei.flag=2否 是count+for

16、(j=1;restaurant-tablei.fooj!=999;j+)restaurant-tablei.foojtablei.fooj0否 是输出进账 0元有 0 桌被预定或有人剩余 30 桌 无 bill+=restaurant-foodrestaurant-tablei.fooj.price 函数 save(struct r * restaurant) 将记录存入磁盘中实现方法:save(struct r * restaurant) /将记录存入磁盘中FILE * fp; /定义文件类型指针fp=fopen(“cxq.txt“,“wb“); /以只写方式打开“cxq.txt”文件fwr

17、ite(restaurant,sizeof(struct r),1,fp);/写入文件,一次写入一条fclose(fp); /关闭文件参数为结构体指针首先定义文件类型指针 fp;然后以只写方式打开“cxq.txt”文件 fp=fopen(“cxq.txt“,“wb“); 然后向 restaurant 所指内存区写入文件,一次写入一条,长度为 struct r 的长度 fwrite(restaurant,sizeof(struct r),1,fp); 关闭文件 fclose(fp); 函数 load(struct r * restaurant) 加载磁盘中文件实现方法:load(struct r

18、 * restaurant) /加载磁盘中的文件FILE * fp; /定义文件类型指针fp=fopen(“cxq.txt“,“rb“); /以只读方式打开“cxq.txt”文件fread(restaurant,sizeof(struct r),1,fp);/写入文件,一次写入一条fclose(fp); /关闭文件10定义文件类型指针 fp 以只读方式打开“cxq.txt”文件 fp=fopen(“cxq.txt“,“rb“);从 restaurant 所指内存区读取文件,一次读取一条长度为 struct r 的长度 fread(restaurant,sizeof(struct r),1,fp

19、);关闭文件 fclose(fp); 函数 entry(struct r * restaurant) 实现清空菜单实现方法:entry(struct r * restaurant) /实现清空菜单int i;for(i=1;ifoodi.name,“空“);/字符串替换函数,清空菜名restaurant-foodi.price=0; /清空菜定价首先定义参数 i使用 for 循环,定义参数 i 初始量为 1当 i 小于 21 时,字符串 restaurant-foodi.name 替换函数并且清空菜名直到 i 大于等于 21 后退出循环 函数 change_menu(struct r * re

20、staurant) 实现修改菜单功能实现方法:change_menu(struct r * restaurant) /实现修改菜单功能int i,n;menu(restaurant); /首先输出修改前的全部列表do /使用 do while 循环printf(“请输入要修改的菜名的号码: “);/输入编号scanf(“%d“,printf(“请输入修改后的菜名: “);/输入菜名scanf(“%s“,restaurant-foodn.name);printf(“请输入修改后的价格: “);/出入定价scanf(“%d“,printf(“1、继续修改t2、返回n“);scanf(“%d“,if(i=1) /继续修改

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报