收藏 分销(赏)

餐厅管理系统设计报告.doc

上传人:w****g 文档编号:9224767 上传时间:2025-03-17 格式:DOC 页数:39 大小:289KB 下载积分:12 金币
下载 相关 举报
餐厅管理系统设计报告.doc_第1页
第1页 / 共39页
餐厅管理系统设计报告.doc_第2页
第2页 / 共39页


点击查看更多>>
资源描述
餐厅管理系统设计报告 33 2020年6月23日 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 课程设计成绩评价表 指导老师评阅成绩表 文献综述( 20%) 研究水平与设计能力( 40%) 课程设计说明说( 论文) 撰写质量( 40%) 总分 指导老师签名: 年 月 日 课程设计答辩记录及评价表 学生 讲述情况 教师主要 提问记录 学生回答 问题情况 答辩评分 评分项目 分值 评价参考标准 评分 总分 优 良 中 及格 差 文献综述 15 研究水平与设计能力 25 课程设计说明书( 论文) 撰写质量 25 答辩效果 35 是否同意论文( 设计) 经过答辩 □同意 □不同意 答辩小组成员签名 答辩小组组长签名: 年 月 日 课程设计成绩评定表 成绩汇总 评分项目 评分 比例 分数 课程设计总分 指导老师评分 50% 答辩小组评分 50% 封面 成都信息工程学院 课程设计 题目: 餐厅管理系统 作者姓名: 李文静 班 级: 物联网121班 学 号: 指导教师: 张路桥 日 期: 1 月 7日 作者签名: 摘 要 餐厅管理系统的设计与实现 摘 要 随着计算机网络技术的飞速发展, 网络技术越来越受到人们的重视, 它已逐渐渗入我们生活各个层面。现代企业具有一个现代化的管理系统,是企业管理的科学化、 正规化的重要条件, 也在企业的高效运行中扮演了重要的角色。餐厅管理系统应是一种基于开放式网络环境, 能够保证数据输入、 输出的准确性、 快捷性而且方便用户使用的网络应用系统。 本设计从现代企业管理中的人事管理现状出发, 针对小型餐厅当前餐厅业务管理的工作程序, 开发出来的一个操作简单、 方便实用的餐厅管理系统。本文首先介绍餐厅管理系统的开发背景, ; 接着介绍了C 语言等相关理论知识, 并对现代小型餐厅管理系统进行了较详细的需求分析; 然后重点讨论该系统的设计与实现; 最后, 经过测试与分析, 说明该系统运行稳定、 可靠, 具有一定的实用价值。 关键词: 小型餐饮企业; 餐厅管理系统; C语言 目 录 1 前言 1 1.1 背景 1 2 餐厅管理系统需求分析及开发工具 2 2.1 系统目标及基本功能 2 2.2 开发工具 3 3 系统总体设计 4 3.2 功能模块介绍 4 4 系统流程与实现 15 4.1 设计流程 15 4.2 设计代码 24 5 测试与分析 25 5.1 调试过程中遇到的主要问题 25 结 论 26 参考文献 26 1 前言 1.1 背景 20世纪90年代末餐厅管理系统发生革命性变革, 为了满足市场需求, 实现现代化运营管理, 餐饮企业对餐饮管理系统的需求也在不断提高; 我们生活在一个信息化的世界, 网络为我们的生活带来许多便利, 其中也包括, 餐厅等服务性行业对信息化管理的普及, 因此, 餐厅管理系统出现了; 同时由于电脑的普及, 数据库技术、 客户服务器技术, 特别是网络技术的发展, 使得第三代餐饮管理系统的出现成为必然。餐厅管理系统有哪些特点呢? 首先, 它能够经过计算机进行一些复杂、 繁琐的计算, 帮助我们快捷、 准确高效地完成一些价格、 成本, 利润等的计算和统计; 其次, 餐厅管理系统还能代替人工进行数据的管理和存储, 大大地提高了我们的工作效率; 然后, 使用此系统, 操作简单, 能够节约对人力资源的大量投资, 使企业收入得到提高。 2 餐厅管理系统需求分析及开发工具 2.1 目标及基本功能 设计一个餐厅管理系统, 对餐厅的菜品信息进行管理, 具有统计、 查询、 录入等功能, 并能任意指定文件进行保存和查询。能够以不同身份登录系统, 客户登录进信查询, 管理员登录对菜品信息进行查询、 修改、 记录等操作。 主要功能: 客户: 1.查询菜品信息 餐厅管理员: 1.录入菜品信息 2.查看菜品信息 3.插入菜品信息 4.删除菜品信息 5.修改菜品信息 6.保存菜品信息 2.2 开发工具 VISUAL C++ 6.0 3 系统总体设计 3.1 设计框架 餐厅管理系统 管理员: 输入密码进入系统 顾客: 查询 查看总利润 添加菜品 退出系统 保存菜品信息 查询菜品 修改菜品 删除菜品 显示菜品信息 记录菜品信息 3.2 系统功能模块介绍 1.进入登陆界面 2. 选择身份 3. 以客户身份进行查询 4. 以管理员身份登录管理系统 1.记录每天的售菜情况 2.显示菜品信息 3. 查看总利润( 降序) 4.添加菜品 5.删除菜品 6.修改菜品 7. 查询菜品信息 8.保存菜品信息 9. 退出管理员操作系统 4 系统流程与实现 查找菜品 开始 1.记录菜品信息 2 输入查找的菜名 结束 录入结束, 调用save() 保存记录到文件 Scanf ”%d %s ...” Printf ”菜品编号、 名字等” 在菜单里查找 For (i = 0;i <now_no;i ++) Strcmp(cai[i].name =name )找到菜品 是否找到要查找的记录 没找到 找到 结束 输出找到的记录 3. 查看输入的信息: 经过display () 函数以一个循环的形式输出要查看的信息, 再调用save函数保存数据。 4. 排序: 经过sort函数对数据进行降序排序, 再调用save函数 。 5. 添加: 经过insert函数实现, 并调用save函数保存数据。 6. 删除: 经过delete函数实现信息删除。 7. 修改: 经过modify函数实现数据的修改。 8. 保存: 经过save函数向文件写入数据。 4.2 设计代码 #include<stdio.h> #include <stdlib.h> //显示目录 #include<string.h> #include<conio.h> //清屏 void Xianshi(); void Xianshi1(); void Chazhao(); void Chazhao1(); void Shan(); void Xiugai(); void Duwenjian(); void Baocun(); void Pai(); void lirun(); void Charu(); void Luru(); #define MAX 80 int initno=0; struct caidan { int no; char name[20]; char fenlei[4]; char shicai[100]; float chengben; float jiage; float lirun; float sort; int nian; int yue; }; struct caidan cai[MAX],*p; void Chazhao1()//查询 { int i,k=0; char str[20],as; do { printf("要查询的菜品名:"); gets(str); for(i=0;i<initno;i++) if(strcmp(cai[i].name,str)==0) { k=i; printf("\t编号\t菜名\t类别\t原料\t售价\t日期\n "); printf("\t%d\t%s\t%s\t%s\t%.2f\t%d-%d\n",cai[k].no,cai[k].name,cai[k].fenlei,cai[k].shicai,cai[k].jiage,cai[k].nian,cai[k].yue); } as=getch(); } while(!as); } void Xianshi1()//显示1 { int i; char as; do { printf("\t编号\t菜名\t类别\t原料\t售价\t日期\n "); for(i=0;i<initno&&cai[i].name[0];i++) printf("\t%d\t%s\t%s\t%s\t%.2f\t%d-%d\n",cai[i].no,cai[i].name,cai[i].fenlei,cai[i].shicai,cai[i].jiage,cai[i].nian,cai[i].yue); as=getch(); } while(!as); system("cls"); } void Duwenjian()//读文件 { FILE *fp; int j; char filepath[20]; printf("读入的文件路径:"); gets(filepath); if((fp=fopen(filepath,"rb"))==NULL) { printf("找不到%s文件!\n",filepath); system("pause"); exit(0); } initno=0; for(j=0;j<MAX&&!feof(fp);j++) { fread(&cai[j],sizeof(struct caidan),1,fp); initno++; } fclose(fp); system("pause"); //按任意键继续 system("cls"); } void main()//主函数 { long z ; int as,n; char ch; do{ printf("\n\n\t\t欢迎使用餐厅管理系统\n"); ch=getch(); } while(!ch); system("cls"); printf("请选择登录身份: 0-顾客1-管理人员\n"); scanf("%d",&n); switch(n){ case 0: printf("\n欢迎进入查询系统\n"); Chazhao1(); Duwenjian(); Xianshi1(); break ; case 1: printf("请输入6位密码进入系统\n");//输入密码 scanf("%d",&z); if(z== 15) { printf("\n进入餐厅管理系统\n"); /*以下为功能选择模块*/ do { printf("\n\t\t\t\t1.记录每天的售菜情况\n\t\t\t\t2.显示菜品信息\n\t\t\t\t3.查看总利润\n\t\t\t\t4.添加菜品\n\t\t\t\t5.删除菜品\n\t\t\t\t6.修改菜品\n\t\t\t\t7.查询菜品\n\t\t\t\t8.保存菜品信息\n"); printf("\t\t\t\t选择功能选项(输入所选功能前的数字):"); scanf("%d",&as); switch(as) { case 1: Luru(); break; case 2: Xianshi(); break; case 3: Pai(); break; case 4: Charu(); break; case 5: Shan(); break; case 6: Xiugai(); break; case 7: Chazhao(); break; case 8: Baocun(); break; } }while(1);/*while(1), 1表示真, 因此while(1)表示永远循环下去, 一般在while(1)的循环体内都有break 或者return 跳出循环*/ }break; } } void Luru()//录入菜单 { int i=0; char ch; do { printf("\t\t\t1.录入菜品\n第%d个菜品的信息\n",i+1); printf("\n菜品编号:"); scanf("%d",&cai[i].no); printf("\n菜名:"); gets(cai[i].name); printf("\n类别:"); gets(cai[i].fenlei); printf("\n原料:"); gets(cai[i].shicai); printf("\n菜品成本:"); scanf("%f",&cai[i].chengben); printf("\n菜品售价:"); scanf("%f",&cai[i].jiage); printf("\n日期:"); scanf("%d-%d",&cai[i].nian,&cai[i].yue); printf("\n\n"); i++; initno=i; printf("是否继续?(Y/N)"); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); system("cls"); } void Xianshi()//显示 { int i; char as; lirun(); do { printf("\t编号\t菜名\t类别\t原料\t总成本\t总售价\t总利润\t日期\n"); for(i=0;i<initno&&cai[i].name[0];i++) printf("\t%d\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%d-%d\n",cai[i].no,cai[i].name,cai[i].fenlei,cai[i].shicai,cai[i].chengben,cai[i].jiage,cai[i].lirun,cai[i].nian,cai[i].yue); as=getch(); } while(!as); system("cls"); } void Pai()//排序 { struct caidan temp; int i,j; lirun(); for(i=1;i<initno;i++) { for(j=1;j<=initno-i;j++) { if(cai[j-1].lirun<cai[j].lirun) { temp=cai[j]; cai[j]=cai[j-1]; cai[j-1]=temp; } } } system("pause"); system("cls"); } void Charu()//插入 { char ch; do { printf("\n\n\t\t输入新菜品\n"); printf("\n\n菜品编号:"); scanf("%d",&cai[initno].no); printf("\n\n菜名:"); gets(cai[initno].name); printf("\n\n菜品类别:"); gets(cai[initno].fenlei); printf("\n\n原料:"); gets(cai[initno].shicai); printf("\n\n菜品成本:"); scanf("%f",&cai[initno].chengben); printf("\n\n菜品售价:"); scanf("%f",&cai[initno].jiage); printf("\n\n日期:"); scanf("%d-%d",&cai[initno].nian,&cai[initno].yue); printf("\n\n"); initno=initno+1; Pai(); printf("是否继续?(Y/N)"); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); } void Shan()//删除 { int inum,i; printf("要删除菜品的编号:"); scanf("%d",&inum); for(i=0;i<initno;i++) { if(cai[i].no==inum) { if(i==initno)initno-=1; else { cai[i]=cai[initno-1]; initno-=1; } Pai(); break; } } system("cls"); } void Chazhao()//查询 { int i; char str[20],as; lirun(); do { printf("要查询的菜品名:"); gets(str); for(i=0;i<initno;i++) if(!strcmp(cai[i].name,str)) { printf("\t编号\t菜名\t类别\t原料\t成本\t售价\t利润\t日期\n"); printf("\t%d\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%d-%d\n",cai[i].no,cai[i].name,cai[i].fenlei,cai[i].shicai,cai[i].chengben,cai[i].jiage,cai[i].lirun,cai[i].nian,cai[i].yue); } as=getch(); } while(!as); system("cls"); } void Xiugai()//修改 { int i; char str[20]; printf("输入要修改的菜品名:"); gets(str); for(i=0;i<initno;i++) { if(!strcmp(cai[i].name,str)) { printf("\n\t\t输入新插入菜品类别信息\n"); printf("\n菜品编号:"); scanf("%d",&cai[i].no); printf("\n菜品类别:"); gets(cai[i].fenlei); printf("\n原料:"); gets(cai[i].shicai); printf("\n菜品成本:"); scanf("%f",&cai[i].chengben); printf("\n菜品售价:"); scanf("%f",&cai[i].jiage); printf("\n日期:"); scanf("%d-%d",&cai[i].nian,&cai[i].yue); printf("\n\n"); Pai(); break; } } system("cls"); } void Baocun()//保存 { FILE *fp; int i; char filepath[20]; printf("输入要保存的文件路径:"); gets(filepath); if((fp=fopen(filepath,"a"))==NULL) { printf("\n保存失败!"); exit(0); } for(i=0;i<initno;i++) { cai[i].lirun=cai[i].jiage-cai[i].chengben; fprintf(fp,"\t%d\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%d-%d\n ",cai[i].no,cai[i].name,cai[i].fenlei,cai[i].shicai,cai[i].chengben,cai[i].jiage,cai[i].lirun,cai[i].nian,cai[i].yue); } fclose(fp); printf("菜品信息已保存在%s中!\n",filepath); system("pause"); system("cls"); } void lirun()//求利润 { int i; for(i=0;i<initno;i++) { cai[i].lirun=cai[i].jiage-cai[i].chengben; } } 5 系统测试与分析 调试过程中遇到的主要问题 1.显示结果出错 描述: 显示功能在显示信息时, 部分信息未对齐或被覆盖。 解决: 调整printf 中每一项的位置, 并重复检查是否有漏项或多项, 是每一项输出与上面的内容对齐。经检查漏掉了”食材”, 因此, 增加了”食材”这一项, 并调整空格字符”\t”,使其对齐。 2. 客户查找菜品信息出错: 描述: 查找的指定菜品信息显示不出来。 解决: 调用显示函数display1()。 结 论 本设计经过近7天的努力, 系统基本满足餐厅管理方面的需要。经过本次设计, 我更加深刻的了解了C语言中每个函数的含义, 更能熟练的调用函数, 加深了对文件的理解和使用。对循环的使用和含义也有了深刻的了解。 在此之前, 对于C语言编程技术或是其它的编程知识都只是略知皮毛, 尽管编了些程序, 但都是功能较小、 容易实现的设计, 对知识没有深入了解。因此, 在编写程序时, 有几项功能, 深深的困扰了我, 于是和其它同学讨论、 而且向老师请教, 这使我在短短的时间里, 更加认真学习了C语言、 C++等相关的编程知识, 初步认识到C语言的强大功能及其重要性, 对编程思想有了进一步的体会, 养成了一些良好的编程习惯。系统虽然完成, 可是距离优秀仍存在一定差距, 用C语言编程制作网页也需要继续学习。希望自己能不断学习和实践, 争取以后做得更好。 限于作者知识水平和经验有限, 此系统还有许多有待完善和改正的地方, 恳请各位老师和读者批评指正。 参考文献 [1].Visual Basic精彩编程200例 机械工业出版社 赛奎春、 高春艳等 1月 [2].Visual Basic工程应用与项目实践 机械工业出版社 高春艳、 李俊民等 1月 [3].Visual C++工程应用与项目实践 机械工业出版社 张雨、 阮伟良等 50 1月 [4].Power Builder数据库开发实例解析 机械工业出版社 华传铭、 张振坤等 9月 [5].Visual C++ 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 7月 [6].PowerBuilder 精彩编程200例 机械工业出版社 张振坤、 李文立等 9月 [7].Visual FoxPro 精彩编程200例 机械工业出版社 王国辉、 董韶华等 9月
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服