饭店管理系统实验报告(c语言)
c语言点餐系统实训报告
c语言点餐系统实训报告本报告旨在介绍c语言点餐系统实训的目的和背景,并概括说明报告的结构。
点餐系统是一种常见的应用程序,可以帮助餐厅提高工作效率和顾客体验。
通过实现一个简单的c语言点餐系统,我们可以加深对c语言程序设计的理解,并掌握系统开发的基本方法和技巧。
本报告将分为以下几个部分:实训目的:阐述我们进行此实训的目的,以及期望达到的研究效果。
方案设计:介绍我们设计点餐系统的基本思路与方法,包括所需功能和用户界面设计。
程序实现:详细说明我们在实训过程中所使用的c语言编程技术和工具,以及程序实现的具体步骤。
功能测试:描述我们对点餐系统进行的功能测试,以验证系统的正确性和稳定性。
总结和展望:总结本次实训的收获和问题,并展望未来可能的优化和改进方向。
通过本报告的阅读,读者将了解到点餐系统实训的背景、目的和结构,以及我们在实训过程中所遇到的挑战和解决方法。
同时,读者还可以对c语言程序设计和系统开发有一个简单的认识,并通过点餐系统实战掌握更多实际的编程技巧和经验。
本部分将对点餐系统的功能需求和非功能需求进行分析,包括用户界面、数据存储、订单管理等方面的要求。
功能需求用户界面:系统应提供简洁直观的用户界面,方便用户浏览菜单、选择菜品和提交订单等操作。
菜单管理:系统应能够展示餐厅的菜单信息,包括菜品名称、价格、描述等,并支持菜单的查询、编辑和更新。
订单管理:系统应能够处理顾客的点餐请求,包括接收订单、记录订单详情、计算订单金额,并提供相应的订单状态跟踪功能。
数据存储:系统应能够可靠地存储菜单数据和订单数据,以便于后续查询和统计分析。
非功能需求可靠性:系统应具备较高的稳定性和可靠性,能够在高并发情况下正常运行,并且能够处理异常情况,如网络故障或数据丢失等。
安全性:系统应采取必要的安全措施,保护用户的隐私信息和订单数据,防止未经授权的访问和篡改。
性能:系统应能够在合理的时间范围内响应用户的操作,快速加载菜单信息和处理订单请求。
C语言课程设计餐馆管理系统
C语言课程设计餐馆管理系统一、教学目标本课程的目标是让学生掌握C语言的基本知识,通过构建一个简单的餐馆管理系统,培养学生的实际编程能力和问题解决能力。
在知识目标方面,学生需要理解C语言的数据类型、控制结构、函数等基本概念。
在技能目标方面,学生应掌握C语言的编程技巧,能够独立完成一个小型的软件系统。
在情感态度价值观目标方面,学生应培养对计算机科学的兴趣,具备良好的团队合作精神和自主学习能力。
二、教学内容教学内容主要包括C语言的基本语法、数据类型、控制结构、函数等。
具体的教学内容安排如下:1.引言:介绍C语言的发展历程和特点,让学生了解C语言的重要性和应用范围。
2.数据类型和变量:讲解整型、浮点型、字符型等数据类型的定义和使用方法。
3.控制结构:介绍条件语句、循环语句等控制结构的使用和原理。
4.函数:讲解函数的定义、声明和调用,以及函数的参数传递和返回值。
5.餐馆管理系统:通过构建一个简单的餐馆管理系统,让学生将所学知识应用于实际问题的解决。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
在讲授法中,教师将系统地讲解C语言的基本概念和语法。
在讨论法中,教师将引导学生进行思考和讨论,培养学生的创新思维和问题解决能力。
在案例分析法中,教师将通过分析具体的编程案例,让学生了解C语言在实际应用中的重要性。
在实验法中,教师将学生进行上机实验,让学生在实际操作中掌握C语言的编程技巧。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备适当的教学资源。
教材方面,我们选择《C程序设计语言》作为主教材,辅以《C语言编程实例教程》进行实践操作。
参考书方面,我们推荐《C Primer Plus》和《C和指针》。
多媒体资料方面,我们将制作PPT课件和视频教程,以便学生更好地理解和掌握知识。
实验设备方面,我们将提供计算机实验室,让学生进行上机实验和编程实践。
c语言程序设计餐饮管理
c语言程序设计餐饮管理以下是一篇关于用C语言进行餐饮管理的文章,文章将一步一步回答中括号内的内容。
C语言程序设计餐饮管理餐饮管理作为一项重要的服务行业,为了更好地管理和提供优质的服务,我们可以使用C语言进行餐饮管理。
本文将介绍如何使用C语言来设计餐饮管理系统,以提高餐饮服务的效率。
第一步:确定需求和功能在进行任何的软件设计前,我们首先需要确定我们的需求和功能。
餐饮管理系统的主要目标是提供高效的管理和服务。
因此,我们需要确保系统能够进行订单管理、库存管理、员工管理和顾客管理等功能。
通过这些功能,管理者和员工可以更好地掌握餐厅的运营情况,从而提供更好的服务。
第二步:设计数据结构在使用C语言进行餐饮管理系统的设计之前,我们需要设计系统的数据结构。
在这个例子中,我们可以使用结构体来表示不同的数据类型,如订单、菜品和员工等。
以下是一个简单的例子:ctypedef struct{int orderId;char dishName[50];int quantity;float price;struct tm orderTime; 订单时间struct tm serveTime; 服务时间} Order;typedef struct{char dishName[50];int quantity;float price;int stock;} Dish;typedef struct{char name[50];char position[50];float salary;} Employee;使用上述数据结构,我们可以轻松地表示订单、菜品和员工等信息。
第三步:实现功能模块在我们确定了需求和数据结构后,我们可以开始实现各个功能模块。
我们可以根据需求设计不同的函数,如添加菜品、下订单、显示库存等功能。
例如,对于添加菜品的功能,我们可以定义如下函数:cvoid addDish(Dish* dishes, int* numDishes){printf("请输入菜品名称:\n");scanf("s", dishes[*numDishes].dishName);printf("请输入菜品数量:\n");scanf("d", &dishes[*numDishes].quantity);printf("请输入菜品价格:\n");scanf("f", &dishes[*numDishes].price);printf("请输入库存数量:\n");scanf("d", &dishes[*numDishes].stock);(*numDishes)++;}通过这个函数,我们可以添加新的菜品信息,并将其保存到菜品数组中。
c酒店管理系统实训报告
C#课程实训报告项目组:酒店管理系统项目组专业:计算机软件技术学院:软件职业技术学院指导教师:王大亮闻喆实训时间:2012年6月24日-2012年7月12日软件职业技术学院CCUTSOFT酒店管理系统第一局部团队构成与分工第二局部系统开发进度计划第三局部需求分析第四局部概要设计第五局部详细设计第六局部系统实现第七局部测试第八局部代码清单第九局部参考文献第十局部实训总结目录1.团队构成与分工12. 系统开发进度计划23. 需求分析33.1 导言33.1.1 目的33.1.2 背景43.1.3 定义与缩写43.1.4 参考文献53.2 系统定义53.2.1 项目来源与背景53.2.2 用户特点53.2.3 项目目标63.2.4 应用环境63.3 功能需求73.3.1 角色定义73.3.2 系统用例图73.3.3 用例描述103.4 性能需求133.4.1 界面需求133.4.2 响应时间需求143.4.3 可靠性需求143.4.4 开发性需求143.4.5 可扩展性需求143.4.6 系统安全需求144.概要设计154.1 导言154.1.1 目的154.1.2 定义与缩写154.1.3 参考文献154.2 功能设计164.2.1 功能层次设计164.2.2 房间信息模块详述164.2.3 入住信息模块详述174.2.4 订房模块详述174.2.5 退房模块详述184.2.6 登录模块详述184.2.7 历史记录模块详述184.3 界面流程194.4 数据设计204.4.1 数据概念结构设计204.4.2 数据逻辑结构设计204.4.3 数据物理结构设计265. 详细设计285.1 导言285.1.1 目的285.1.2 定义与缩写285.1.3 参考文献285.2 界面设计285.2.1 酒店管理系统登录模块界面设计295.2.2 房间信息模块界面设计305.2.3 入住信息界面设计315.2.4 订房界面设计325.2.5 退房界面设计345.2.6 历史记录界面设计355.3 功能详细设计365.3.1 酒店管理系统登录界面详细设计365.3.2 房间信息模块详细设计395.3.3 入住信息模块详细设计415.3.4 订房信息模块详细设计435.3.5 退房界面详细设计465.3.6 历史记录界面详细设计476. 系统实现516.1 导言516.1.1 目的516.1.2 缩写与定义516.1.3 参考文献516.2 编码格式规X516.2.1 缩进规那么516.2.2 断行规那么526.3 命名规X526.3.1 控件526.3.2 类/接口526.3.3 方法526.3.4 变量/常量526.4 注释规X536.5 功能实现536.5.1 系统登录功能实现536.5.2 房间信息模块实现546.5.3 入住信息模块实现556.5.4 订房模块实现566.5.5 退房模块实现586.5.6 历史记录模块实现597. 测试607.1 用户登录测试617.2 用户订房测试647.3 用户退房测试688. 代码清单719. 参考文献8010. 实训总结811.团队构成与分工指导教师签字:年月日2. 系统开发进度计划3.需求分析3.1 导言3.1.1 目的随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
C++程序设计实习报告-酒店点菜管理系统
程序设计实习》报告题目: 酒店点菜管理系统专业班级:学号:姓名:起止日期:指导老师:2018年7月14日目录一、实习内容及设计思路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯1二、调试分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2三、测试结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3四、程序的使用及相关说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7五、实习总结及心得体会⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8六、对课程的建议或意见⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8一、实习内容及设计思路1. 问题描述为了适应现代信息点餐的需求,采用新信息技术,研究设计了一个计算机点餐系统。
能够完成权限管理、点餐管理、订单管理、结账管菜谱评分等功能。
2. 设计要求设计出一款可以提供信息传递和人机交互的实用性服务系统,同时具有如下功能:1) .权限管理:包括用户注册、登录、用户信息管理;2) .点餐功能:包括餐单的增加、修改、删除、查看;3) .订单管理:包括生成订单、修改、删除、查找;4) .结账管理:统计消费的总额;5) .查看历史:查看消费历史;6) .菜谱评分:对各菜谱中经常点取的菜肴进行评分。
3. 设计思路2). 代码流程设计结构体date、dish、order、myuser,基类Menu,继承与派生类User。
成员函数GetMessage读取Message.txt文件信息,成员函数GetDish 读取Menu.txt 文件信息,储存在结构体中。
利用成员函数对读取信息进行处理(用户注册、登录,历史记录查询,用户信息管理,菜单查看与点菜等) ,最后成员函数Save 将信息储存在文本文件中。
4.源代码#include <iostream>#include <string>#include <cstdlib>#include <fstream>#include <sstream>#include <iomanip>#include <time.h> #pragma warning(disable:4996) using namespace std;const int TodayMenuNum = 10; //菜单最大值const int UserNum = 3; //注册用户最大值const int RecordNum = 5; //用户可保存历史记录最大值const int DishMenuNum = 5; //点菜可点菜品数量最大值struct date //时间{int year = 0;int month = 0;int day = 0;};struct dish //菜品{string dishnum = "0";string dishname = "0";int dishprice = 0;float dishgrade = 0;int dishgradenum = 0;};struct order //菜单{int dishtable = 0;char dishtime[64];int pricesum = 0;dish dishmenu[DishMenuNum];int dishnum = 0;};struct myuser //用户{string myusername = "0";string mypassword = "0";char mysex = '0';date mybirth;order myrecord[RecordNum];};class Menu //菜单类{protected:order menu;dish todaymenu[TodayMenuNum]; public: char sign;void GetDish();void YourDish();void Time();void Score();};class User:public Menu //用户类{private:string username;string userpassword;char usersex;date userbirth;myuser myusers[UserNum]; int usernum;public:void Register();void Login();void GetMessage();void Message();void Order();void History();void Change();void Save();void Add();void Delete();};int main(){int flag = 1, operate;User auser;auser.GetMessage();//auser.Message();do{cout << " ★★酒店点菜管理系统★★ \n";cout << "┌────────────────── \n";cout << "│请选择您所需的操作│ \n";cout << "│ 新人注册:1,并按回车键│\n";cout << "│ 用户登录:2,并按回车键│\n"; cout << "│ 退出系统:3,并按回车键│ \n";cout << "└────────────────── \n";cout << " 请选择一个操作:";cin >> operate;switch (operate){case 1:auser.Register();auser.Save();break;case 2:auser.Login();auser.Order();break;case 3:auser.Save();exit(0);//强制结束程序运行!break;default:cout << "输入错误,请重新1-3 输入" << endl; break;} while (1);system("pause");return 0;}void Menu::Time() // 获取计算机当前时间{time_t t = time(0);strftime(menu.dishtime, sizeof(menu.dishtime), "%Y/%m/%d|%X", localtime(&t));puts(menu.dishtime);}void Menu::Score() //菜品打分{for (int j = 0; j < menu.dishnum; j++){cout << "请为" << menu.dishmenu[j].dishname << "评分(十分制):";cin >> menu.dishmenu[j].dishgrade;for (int k = 0; k < TodayMenuNum; k++)if (menu.dishmenu[j].dishnum == todaymenu[k].dishnum){todaymenu[k].dishgrade = (todaymenu[k].dishgrade *todaymenu[k].dishgradenum + menu.dishmenu[j].dishgrade) /(todaymenu[k].dishgradenum + 1);todaymenu[k].dishgradenum = todaymenu[k].dishgradenum + 1;}}fstream file;file.open("f://ZL//Menu.txt", ios::in | ios::out | ios::trunc);for (int i = 0; i < TodayMenuNum; i++)file << "# "<< todaymenu[i].dishnum << " " << todaymenu[i].dishname << " "<< todaymenu[i].dishprice << " " << todaymenu[i].dishgrade << " " <<todaymenu[i].dishgradenum << endl;file.close();cout << " 感谢您的评价" << endl;}void Menu::GetDish() // 从文件中获取菜单信息{int i = 0;ifstream file("f://ZL//Menu.txt", ios::out);char line[1024] = { 0 };while (file.getline(line, sizeof(line))){stringstream word(line);word >> sign;word >> todaymenu[i].dishnum;word >> todaymenu[i].dishname;word >> todaymenu[i].dishprice;word >> todaymenu[i].dishgrade;word >> todaymenu[i].dishgradenum;i++;}cout << setiosflags(ios::left) << setiosflags(ios::fixed) << setprecision(1) << endl;cout << " 今日菜单:" << endl;cout << setw(5) << "编号" << setw(15) << "菜名" << setw(6) << "价格" << setw(6) << "评分" << setw(9) << "评分人次" << endl;for (int i = 0; i < TodayMenuNum; i++)cout << setw(5) << todaymenu[i].dishnum << setw(15) <<todaymenu[i].dishname << setw(6) << todaymenu[i].dishprice << setw(6) << todaymenu[i].dishgrade << setw(9) << todaymenu[i].dishgradenum << endl;file.close();}void Menu::YourDish() // 用户点菜{int flag = 0;menu.dishnum = 0;cout << endl;cout << " 点餐页面" << endl;while (1){cout << "请输入您当前桌号(1-19):" << endl;cin >> menu.dishtable;if ((menu.dishtable < 20)&(menu.dishtable > 0))break;elsecout << " 桌号输入错误!" << endl;}cout << "请输入菜品编号与份数,输入666结束:" << endl;for (int j = 0; j < DishMenuNum; j++){cout << "菜品编号:";cin >> menu.dishmenu[j].dishnum;if (menu.dishmenu[j].dishnum == "666")break;for (int k = 0; k < TodayMenuNum; k++)if (menu.dishmenu[j].dishnum == todaymenu[k].dishnum){menu.dishmenu[j].dishname = todaymenu[k].dishname;menu.dishmenu[j].dishprice = todaymenu[k].dishprice; flag = 1;break;}if (flag == 0){cout << " 输入编码不正确! " << endl; j = j - 1; continue;}cout << "菜品份数 :";cin >> menu.dishmenu[j].dishgradenum; menu.dishnum++;}menu.pricesum = 0;cout << setiosflags(ios::left) << setiosflags(ios::fixed) << setprecision(1) << endl; cout << menu.dishtable << "号桌 "; Time(); << endl;cout << setw(5) << "编号" << setw(15) << "菜名" << setw(6) << "单价 " << setw(6) << "份数" << endl;for (int j = 0; j < menu.dishnum; j++){cout << setw(5) << menu.dishmenu[j].dishnum << setw(15) <<menu.dishmenu[j].dishname << setw(6) << menu.dishmenu[j].dishprice << setw(6) << menu.dishmenu[j].dishgradenum << endl;menu.pricesum = menu.pricesum + menu.dishmenu[j].dishpricemenu.dishmenu[j].dishgradenum;<< endl;cout << "总计 :" << menu.pricesum << "元" << endl; cout << endl; char b;cout << " 您是否愿意对菜品进行评价 :Y/N?" << endl; cin >> b; if (b == 'Y' || b == 'y') Score();}cout <<cout <<void User::Register() //注册{string password1, password2;int flag = 0, j;cout << endl;cout << " 新用户注册:" << endl;for (j = 0; j < UserNum; j++){if (myusers[j].mysex == '0') //?while (1){cout << "请输入用户名:";cin >> username; for (int i = 0; i < j; i++)if (username == myusers[i].myusername) /用/ 户名重复判断{cout << "用户名重复!" << endl; break;}elseflag = 1;if (flag == 0)continue;cout << "请输入性别(男M 女W):";cin >> usersex;程序设计实习》报告}cout << "请输入生日(年月日):";cin >> userbirth.year >> userbirth.month >> userbirth.day; cout<< "请输入六位数字密码:";cin >> password1;cout << "请再次输入密码:";cin >> password2;if (password2 != password1) //密码判断cout << " 密码输入不一致,请重新输入!" << endl; elseflag = 2;if (flag == 2){myusers[j].myusername = username;myusers[j].mypassword = password1; myusers[j].mysex =usersex; myusers[j].mybirth.year = userbirth.year;myusers[j].mybirth.month = userbirth.month;myusers[j].mybirth.day = userbirth.day; cout << " 注册成功!" << endl;break;}}if (flag == 2)break;}if (flag == 0)cout << "错误!无法注册~" << endl;cout << endl;void User::Login() // 登录{int flag = 0;while (1){cout << endl;cout << "请登录系统" << endl;cout << "请输入用户名:";cin >> username;cout << "请输入密码:";cin >> userpassword;for (int i = 0; i < UserNum; i++){if ((username == myusers[i].myusername) & (userpassword == myusers[i].mypassword)){cout << "登录成功!" << endl; usernum = i;flag = 1; break;}}if (flag == 1)break;elsecout << " 错误,重新输入!" << endl;}}void User::GetMessage() //从文件中获取用户信息{int i = 0, j;fstream file("f://ZL//Message.txt", ios::out | ios::in); char line[1024] = { 0 };while (file.getline(line, sizeof(line))){stringstream word(line);word >> sign;if (sign == '#'){word >> myusers[i].myusername;word >> myusers[i].mypassword; word >> myusers[i].mysex;word >> myusers[i].mybirth.year;word >> myusers[i].mybirth.month; word >> myusers[i].mybirth.day; i++;j = 0;}else if (sign == '*'){word >> myusers[i - 1].myrecord[j].dishtable;word >> myusers[i - 1].myrecord[j].dishtime;word >> myusers[i - 1].myrecord[j].pricesum;for (int k = 0; k < DishMenuNum; k++) {word >> myusers[i - 1].myrecord[j].dishmenu[k].dishname; word >>myusers[i - 1].myrecord[j].dishmenu[k].dishprice; word >> myusers[i- 1].myrecord[j].dishmenu[k].dishgradenum;} j++;}} file.close();}void User::Message() //展示信息(调试用) {for (int i = 0; i < UserNum; i++){cout << myusers[i].myusername << myusers[i].mypasswordmyusers[i].mysex;cout << myusers[i].mybirth.year << myusers[i].mybirth.month myusers[i].mybirth.day << endl;for (int j = 0; j < RecordNum; j++){cout << myusers[i].myrecord[j].dishtablemyusers[i].myrecord[j].dishtime << myusers[i].myrecord[j].pricesum;for (int k = 0; k < DishMenuNum; k++){cout << myusers[i].myrecord[j].dishmenu[k].dishname; cout <<myusers[i].myrecord[j].dishmenu[k].dishprice;cout << myusers[i].myrecord[j].dishmenu[k].dishgradenum;}cout << endl;}}}void User::Change() //信息管理{int s, flag = 0;do{cout << endl;cout << " ★★请选择所需更改信息★★ \n";cout << "┌─────────────── ┐\n";cout << "│请选择您所需的操作│\n"; << <<<<cout << "│生日更改:1,并按回车键│\n";cout << "│密码更改:2,并按回车键│\n";cout << "│性别更改:3,并按回车键│\n";cout << "│退出更改:4,并按回车键│\n";cout << "└┘\n";cout << " 请选择一个操作:";cin >> s;switch (s){case 1:cout << " 当前生日为:" << myusers[usernum].mybirth.year << myusers[usernum].mybirth.month << myusers[usernum].mybirth.day << endl;cout << "请输入新的生日(年月日):";cin >> myusers[usernum].mybirth.year >>myusers[usernum].mybirth.month >> myusers[usernum].mybirth.day;cout << " 更改成功!新信息为:";cout << myusers[usernum].mybirth.year <<myusers[usernum].mybirth.month << myusers[usernum].mybirth.day << endl;break;case 2:cout << " 请输入新的密码:";cin >> myusers[usernum].mypassword;cout << " 更改成功!新密码为:" << myusers[usernum].mypassword << endl;break;case 3:if(myusers[usernum].mysex == 'M')cout << "当前性别为:男" << endl;elsecout << "当前性别为:女" << endl;cout << "请输入性别(男M 女W):";cin >> myusers[usernum].mysex;cout << " 更改成功!" << endl;break;case 4:flag = 1;break;default:cout << "输入错误,请重新1-4 输入" << endl;break;}if (flag = 1)break;} while (1);}void User::Add() // 历史记录增加{int flag = 0;for (int i = 0; i < RecordNum; i++)if (myusers[usernum].myrecord[i].dishtable == 0){strcpy(myusers[usernum].myrecord[i].dishtime, menu.dishtime);myusers[usernum].myrecord[i].dishtable = menu.dishtable;myusers[usernum].myrecord[i].pricesum = menu.pricesum;for (int j = 0; j < menu.dishnum; j++){myusers[usernum].myrecord[i].dishmenu[j].dishname menu.dishmenu[j].dishname;myusers[usernum].myrecord[i].dishmenu[j].dishprice menu.dishmenu[j].dishprice;myusers[usernum].myrecord[i].dishmenu[j].dishgradenum menu.dishmenu[j].dishgradenum;}flag = 1;break;}if (flag == 0)cout << "错误,无法储存~" << endl;}void User::History() // 历史记录{int year, month, min, max, flag;cout << endl;do{int s;cout << endl;cout << " ★★酒店点菜历史系统★★ \n";cout << "┌────────────────────────┐\n";cout << "│请选择您所需的操作│ \n";程序设计实习》报告0)cout << "│全部历史:1,并按回车键│\n"; //cout << "│时间查询:2,并按回车键│\n cout << "│金额查询:3,并按回车键│\n"; cout << "│退出系统:4,并按回车键│\n"; cout << "└┘\n";cout << " 请选择一个操作:";cin >> s;switch (s){case 1:flag = 0;cout << "\n";cout << myusers[usernum].myusername << " 的全部历史订单:" << endl;for (int j = 0; j < RecordNum; j++){if (myusers[usernum].myrecord[j].dishtable != 0){cout << setiosflags(ios::left) << setiosflags(ios::fixed) << setprecision(1) << endl;cout << myusers[usernum].myrecord[j].dishtable << "号桌";cout << myusers[usernum].myrecord[j].dishtime << endl;<< endl;cout << setw(15) << " 菜名" << setw(6) << " 单价" << setw(6) << " 份数" << endl;for (int k = 0; k < DishMenuNum; k++)if (myusers[usernum].myrecord[j].dishmenu[k].dishprice !=cout <<myusers[usernum].myrecord[j].dishmenu[k].dishgradenum << endl;}<< endl;cout << " 共消费 " << myusers[usernum].myrecord[j].pricesum<< "元" << endl;flag++;}}if (flag == 0)cout << "无历史订单记录! " elseDelete(); Save(); break; case 2:cout << "\n";cout << myusers[usernum].myusername << " 的部分历史订单 :" <<endl;cout << "请输入年份和月份 :"; cin >> year >> month;for (int j = 0; j < RecordNum; j++){for (int i = 0; i < 4; i++)max = max * 10 +(int)myusers[usernum].myrecord[j].dishtime[i];cout << setw(15)myusers[usernum].myrecord[j].dishmenu[k].dishname;cout<<setw(6)myusers[usernum].myrecord[j].dishmenu[k].dishprice;cout<< setw(6)<<<<<<cout <<for (int i = 5; i < 7; i++)(int)myusers[usernum].myrecord[j].dishtime[i];for (int j = 0; j < RecordNum; j++)if (myusers[usernum].myrecord[j].dishtable != 0)if ((max == year)&(min == month))cout << setiosflags(ios::left) << setiosflags(ios::fixed)<< setprecision(1) << endl;cout << myusers[usernum].myrecord[j].dishtable << "号桌 ";cout << myusers[usernum].myrecord[j].dishtime <<endl;cout << "***************************" << endl;cout << setw(15) << " 菜名" << setw(6) << setw(6) << "份数" << endl;for (int k = 0; k < DishMenuNum; k++)if(myusers[usernum].myrecord[j].dishmenu[k].dishprice != 0)myusers[usernum].myrecord[j].dishmenu[k].dishname;myusers[usernum].myrecord[j].dishmenu[k].dishprice;myusers[usernum].myrecord[j].dishmenu[k].dishgradenum << endl;cout << "***************************" << endl; cout << " 共 消 费 " <<minmax 10单价" <<cout<< setw(15) << cout<< setw(6) << cout<<setw(6)<<myusers[usernum].myrecord[j].pricesum << "元" << endl;}elsecout << " 没有记录!" << endl;}} break;case 3: flag = 0; cout << "\n";cout << myusers[usernum].myusername << " 的部分历史订单:" << endl;cout << " 请输入消费金额最大值和最小值:";cin >> max >> min;for (int j = 0; j < RecordNum; j++) {if (myusers[usernum].myrecord[j].dishtable != 0)if ((myusers[usernum].myrecord[j].pricesum >min)&(myusers[usernum].myrecord[j].pricesum < max)){ cout << setiosflags(ios::left) << setiosflags(ios::fixed) << setprecision(1) << endl;cout << myusers[usernum].myrecord[j].dishtable << " 号桌cout << myusers[usernum].myrecord[j].dishtime << endl;<< endl;cout <<cout << setw(15) << "菜名" << setw(6) << "单价" << setw(6) << "份数" << endl;for (int k = 0; k < DishMenuNum; k++)myusers[usernum].myrecord[j].pricesum << "元 " << endl; flag = 1;}}if (flag == 0)cout << "没有相应记录! " << endl;break; case 4:flag = 1; break; default:cout << "输入错误,请重新 1-4 输入" << endl; break;}if (flag == 1)break;} while (1);if(myusers[usernum].myrecord[j].dishmenu[k].dishprice != 0){cout << setw(15)myusers[usernum].myrecord[j].dishmenu[k].dishname;cout<<setw(6)myusers[usernum].myrecord[j].dishmenu[k].dishprice;cout<<setw(6)myusers[usernum].myrecord[j].dishmenu[k].dishgradenum << endl;<<<<<<cout <<<< endl;cout<<共消费<<void User::Save() //储存信息到文本文件中 {fstream file; file.open("f://ZL//Message.txt", ios::in | ios::out|ios::trunc); for (int i = 0; i < UserNum; i++){file << "# " << myusers[i].myusername << " " << myusers[i].mypassword " " << myusers[i].mysex << " ";file << myusers[i].mybirth.year << " " << myusers[i].mybirth.month << " "<< myusers[i].mybirth.day << endl;for (int j = 0; j < RecordNum; j++){file << "* " << myusers[i].myrecord[j].dishtable << " "myusers[i].myrecord[j].dishtime << " " << myusers[i].myrecord[j].pricesum << " ";for (int k = 0; k < DishMenuNum; k++){file << myusers[i].myrecord[j].dishmenu[k].dishname << " "; file << myusers[i].myrecord[j].dishmenu[k].dishprice << " ";file << myusers[i].myrecord[j].dishmenu[k].dishgradenum << " "; }file << "\n";}}file.close();}void User::Delete() //记录删除{char flag, time[64]; int flag1 = 0;<<<<cout << "想删除某次历史记录,Y/N ?";cin >> flag;if (flag == 'Y' || flag == 'y'){cout << "请输入时间:";cin >> time;for (int j = 0; j < RecordNum; j++)if (myusers[usernum].myrecord[j].dishtable != 0)if(time == myusers[usernum].myrecord[j].dishtime)//if (strcmp(time, myusers[usernum].myrecord[j].dishtime) == 0) {flag1 = 1;myusers[usernum].myrecord[j].dishtable = 0;strcpy(myusers[usernum].myrecord[j].dishtime, "0");myusers[usernum].myrecord[j].pricesum = 0;for (int k = 0; k < DishMenuNum; k++)if (myusers[usernum].myrecord[j].dishmenu[k].dishprice != 0){myusers[usernum].myrecord[j].dishmenu[k].dishnamemyusers[usernum].myrecord[j].dishmenu[k].dishprice = 0;myusers[usernum].myrecord[j].dishmenu[k].dishgradenum = 0;}break;}if (flag1 == 1)cout << " 删除成功!" << endl;elsecout << " 输入错误!" << endl;}}void User::Order() //点菜管理{int s;do{cout << endl;cout << " ★★酒店点菜管理系统★★ \n";cout << "┌─────────────── ┐\n";cout << "│请选择您所需的操作│\n";cout << "│菜单点菜:1,并按回车键│\n";cout << "│历史查询:2,并按回车键│\n";cout << "│信息更改:3,并按回车键│\n";cout << "│退出系统:4,并按回车键│\n";cout << "└┘\n";cout << " 请选择一个操作:";cin >> s;switch (s){case 1:GetDish();YourDish();Add();Save();break;case 2: History(); break;case 3:Change();Save(); break;case 4:exit(0);//强制结束程序运行!break;default:cout << "输入错误,请重新1-4 输入" << endl; break;}} while (1);}二、调试分析1. 问题:“ myusers[usernum].myrecord[i].dishtime = menu.dishtime;”表达式必须是可修改的左值。
c语言课程设计报告餐厅自动化点餐系统
计算机程序设计基础(C语言)课程设计说明书设计题目:餐厅自动化点餐系统班级:姓名:学号:2020年6月设计任务书设计题目:餐厅自动化点餐系统内容:用所学c语言知识设计一个餐厅点餐系统,使用结构体及文件相关知识。
完成以下要求:(1)用C语言实现系统;(2)利用结构体数组实现各餐桌、菜品等信息的数据结构设计;(3)系统具有增加,查询,插入,排序等基本功能;(4)系统的各个功能模块要求用函数的形式实现;(5)将各类信息存在文件中。
一、需求分析该课题是餐厅自动化点餐系统,有以下需求。
(1)程序需要实现用户的点餐功能。
(2)程序出现菜单和菜品相应价格。
(3)程序能对客人所点菜品的总价格进行计算。
(4)程序最后可以呈现给客人其点菜品和价格。
(5)客人可以查询所点菜品。
所以为存储菜品信息,需要定义一个结构体类型。
二、总体设计系统功能模块图二、详细设计1.结构体本系统在菜品定义上运用了结构体2.关于所用函数四、程序运行结果测试和分析1.主界面如同所示用户可以输入自己想要的操作并进行相对应的页面。
2.凉菜界面3.热菜界面4.干锅界面5.主食界面6.饮品界面7.查看界面8.结算界面五、讨论与心得通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。
在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。
在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面,做的越来越好。
C语言实现的餐饮管理系统
C语言实现的餐饮管理系统在餐饮行业中,餐厅、酒店以及其他餐饮企业需要一个高效的管理系统来处理订单、库存、员工管理等重要业务。
C语言作为一种强大而灵活的编程语言,可以实现餐饮管理系统的各种功能。
本文将介绍C语言实现的餐饮管理系统的设计和功能,以及其对餐饮行业的重要意义。
一、系统设计1. 数据库设计餐饮管理系统的数据库设计是系统设计的重要一环。
数据库应包含以下表格:菜品表、订单表、库存表、员工表和顾客表。
这些表格应包含相应的字段,如菜品名称、价格、库存量、销售量、员工姓名、职位、顾客姓名等。
2. 功能设计餐饮管理系统的功能设计是系统设计的核心。
系统应该具备以下功能:(1)菜品管理:包括菜品信息的录入、查询和修改功能,以及对菜品库存量和销售量的统计。
(2)订单管理:包括新建订单、查询订单、修改订单和删除订单的功能,以及对订单信息的统计分析。
(3)库存管理:包括库存量的录入、查询和修改功能,以及库存量的统计和报警功能。
(4)员工管理:包括员工信息的录入、查询和修改功能,以及员工职位的调整和离职处理。
(5)顾客管理:包括顾客信息的录入、查询和修改功能,以及对顾客消费信息的统计和分析。
二、系统实现餐饮管理系统的实现需要使用C语言进行编程。
下面是系统实现的主要步骤:1. 数据库连接使用C语言中的数据库连接库,如MySQL的C API等,连接数据库。
2. 菜品管理实现菜品信息的录入、查询和修改功能,使用C语言的文件操作函数来进行读写操作。
3. 订单管理实现订单的新建、查询、修改和删除功能,使用C语言的数据结构来存储订单信息,并使用文件操作函数进行读写操作。
4. 库存管理实现库存量的录入、查询和修改功能,使用C语言的文件操作函数来进行读写操作。
5. 员工管理实现员工信息的录入、查询和修改功能,使用C语言的文件操作函数来进行读写操作。
6. 顾客管理实现顾客信息的录入、查询和修改功能,使用C语言的文件操作函数来进行读写操作。
酒店管理系统c语言实训
酒店管理系统c语言实训
本次实训将利用C语言开发一个酒店管理系统,该系统将包括以下模块:
1. 登录模块:实现用户登录和权限控制,管理员和普通用户登录后能看到不同的界面。
2. 客房管理模块:管理员可以添加、修改、删除客房信息,普通用户只能查看客房信息和预订客房。
3. 订单管理模块:管理员和普通用户都可以查看订单信息,管理员还可以修改订单状态。
4. 员工管理模块:管理员可以添加、修改、删除员工信息。
5. 数据统计模块:管理员可以查看酒店的收入、客房利用率等统计数据。
该系统将采用文件存储数据,包括客房信息、订单信息、员工信息等。
同时,还将使用结构体、指针等C语言特性实现数据的存储和操作。
此外,系统的界面将使用C语言的图形界面库进行开发,以增加用户的交互性和易用性。
通过本次实训,学生将掌握C语言的基本语法和数据操作方法,了解实际项目的开发流程和技术要求,提高了解决问题的能力和独立开发的能力。
- 1 -。
酒店管理系统c语言实训
酒店管理系统c语言实训
1. 学习C语言的基础知识。
在编写酒店管理系统之前,您需要了解C语言的基础语法和编程原理。
2. 设计系统的主要功能。
酒店管理系统应该具备哪些功能?例如,客房预订、客房入住和退房、账单管理等。
3. 使用适当的算法和数据结构。
对于酒店管理系统,您需要选择适当的算法和数据结构来存储和处理数据。
4. 实现用户界面。
设计一个合适的用户界面是很重要的。
您可以使用C语言的窗口API或者第三方库来开发用户界面。
5. 进行测试和调试。
在发布您的酒店管理系统之前,您需要对系统进行测试和调试,以确保其总体性能和功能不受影响。
希望这些建议能够帮助您。
祝您实训顺利!。
C语言程序课程设计报告-餐饮结账管理系统设计
C语言程序课程设计报告-餐饮结账管理系统设计C语言程序设计课程设计报告设计题目:餐饮结账管理系统设计1 设计任务1.1 设计题目的描述功能:餐饮结账信息包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。
试设计一餐饮结账管理系统,使之能提供以下功能:1结账信息录入、修改、删除功能;2查询浏览功能:按台面号查询、按接待服务生查询;3 按照实收金额排序。
4统计总收入、顾客总数等功能。
1.2 设计要求(1)仔细审题,明确题目要求。
(2)按照结构化的程序设计思想,将程序模块化,将相对独立的功能写成函数。
(3)要求编程、调试通过并演示;程序编写规范,添加适当注释。
(4)按照课程设计报告的内容和格式要求,撰写课程设计报告,并且打印。
2 设计方案说明2.1 数据的存储结构餐饮结账信息包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。
因此需要使用结构体,而结账信息又不止是一个,所以使用结构体数组,这里定义结构体struct bill,定义数组bill[M]。
struct bill{int num; //编号int time[4]; //时间int table; //台面号int count; //顾客数量1char name[20]; //服务生姓名int money; //实收金额}bill[M]; numberincome 2.2函数之间的调用关系说明sortsearch2 mainsearch menudeleterInput modifymodify_a save display Display_all readFromFile 2.3函数说明1)函数 void menu()void menu() 菜单函数此函数为主菜单,从此处进入其他模块。
变量 c :使用c选择进入其它功能。
2C=1,是否C=2,执行是否Input执行C=…………Modify2)函数void input()void input() 信息录入,将录入的信息存入文件bill中此函数将从键盘输入的信息录入文件bill中。
C程序设计课程设计报告-酒店菜谱管理系统
功能:已有账户的用户可以输入账户名和密码登录系统,密码有三次错误机会,错误超过三
次结束程序
16.makekind/修改菜品种类链表
形参:LINKKIND Z(菜品种类链表头指针),char kind[20](种类字符串指针),
int i(数量),int flag(标志量)
输出:void
用户可以根据菜品名称,菜品种类,菜品价格对菜品进行查询。
2、数据分析
用户信息,菜品信息等数据利用文件进行存储,利用链表对文件进行读取存盘操作。
有关菜品的数据由名称,价格,菜系构成。
用户数据由用户名和密码构成。
(三)概要设计
本程序包含34个函数:
1.主函数main()
2.添加菜品函数add()
3.修改账户信息函数change()
struct xc *next;
}KIND,*LINKKIND;
5.菜品信息结构体
typedef struct
{
char name[50];
float price;
char kind[50];
}FOOD;
6.菜品信息链表
typedef struct xb
{
FOOD food;
struct xb *next;
30.价格升序sortza()
31.类别排序sortkind()
32.价格降序sortaz()
33.系统最初界面start()
34.等待函数wait()
各函数间关系如下:
findname
add makekind
makekindmenu0
findmenu03
change menu04
inpass
C语言下的智能餐饮管理系统设计与实现
C语言下的智能餐饮管理系统设计与实现智能餐饮管理系统是一种利用计算机技术和信息管理技术,对餐饮行业进行智能化管理的系统。
在当今信息化社会,智能餐饮管理系统已经成为餐饮行业提高效率、降低成本、提升服务质量的重要工具。
本文将介绍如何利用C语言设计和实现智能餐饮管理系统。
一、系统需求分析在设计智能餐饮管理系统之前,首先需要进行系统需求分析。
智能餐饮管理系统通常包括以下功能模块:菜单管理:包括菜品的添加、删除、修改和查询功能。
订单管理:包括订单的生成、结算、打印和查询功能。
库存管理:包括原材料的采购、入库、出库和库存查询功能。
员工管理:包括员工信息的录入、修改、删除和查询功能。
报表统计:包括销售统计、库存统计等报表生成功能。
二、系统设计1. 数据结构设计在C语言中,可以利用结构体来定义菜品、订单、原材料等数据结构,例如:示例代码star:编程语言:ctypedef struct {int id;char name[50];float price;} Dish;typedef struct {int id;Dish dishes[50]; int dishCount;float totalPrice; } Order;typedef struct {int id;char name[50];float price;int quantity;} Material;示例代码end2. 模块设计根据系统需求分析,可以将系统划分为菜单管理模块、订单管理模块、库存管理模块、员工管理模块和报表统计模块。
每个模块包含相应的函数实现,实现模块化开发。
三、系统实现1. 菜单管理模块实现示例代码star:编程语言:cvoid addDish(Dish *menu, int *dishCount) {// 添加菜品逻辑}void deleteDish(Dish *menu, int *dishCount) {// 删除菜品逻辑}void updateDish(Dish *menu, int dishCount) {// 修改菜品逻辑}void queryDish(Dish *menu, int dishCount) {// 查询菜品逻辑}示例代码end2. 订单管理模块实现示例代码star:编程语言:cvoid createOrder(Order *orders, int *orderCount) { // 生成订单逻辑}void settleOrder(Order *orders, int orderCount) {// 结算订单逻辑}void printOrder(Order *orders, int orderCount) {// 打印订单逻辑}void queryOrder(Order *orders, int orderCount) {// 查询订单逻辑}示例代码end3. 库存管理模块实现示例代码star:编程语言:cvoid purchaseMaterial(Material *materials, int*materialCount) {// 原材料采购逻辑}void inStock(Material *materials, int materialCount) {// 原材料入库逻辑}void outStock(Material *materials, int materialCount) { // 原材料出库逻辑}void queryStock(Material *materials, int materialCount){// 查询库存逻辑}示例代码end4. 员工管理模块实现示例代码star:编程语言:cvoid addEmployee(Employee *employees, int *employeeCount) {// 添加员工逻辑}void deleteEmployee(Employee *employees, int*employeeCount) {// 删除员工逻辑}void updateEmployee(Employee *employees, int employeeCount) {// 修改员工信息逻辑}void queryEmployee(Employee *employees, int employeeCount) {// 查询员工信息逻辑}示例代码end5. 报表统计模块实现示例代码star:编程语言:cvoid salesStatistics(Order *orders, int orderCount) { // 销售统计逻辑}void stockStatistics(Material *materials, int materialCount) {// 库存统计逻辑}示例代码end四、系统测试与优化在完成系统开发后,需要进行系统测试,确保系统各功能正常运行。
大一c语言饭店管理系统
大一c语言饭店管理系统以下是一个简单的C语言实现的饭店管理系统,包括菜单显示、点餐、结账等功能:```cinclude <>include <>define MAX_DISHES 100define MAX_TABLES 10typedef struct {char name[50];float price;} Dish;typedef struct {int table_num;Dish dishes[MAX_DISHES];int dish_count;} Table;Table tables[MAX_TABLES];int table_count = 0;void display_menu() {printf("菜单:\n");for (int i = 0; i < table_count; i++) {printf("桌 %d:\n", tables[i].table_num);for (int j = 0; j < tables[i].dish_count; j++) {printf("%s - %.2f 元\n", tables[i].dishes[j].name, tables[i].dishes[j].price);}}}void add_dish(Dish dish) {for (int i = 0; i < table_count; i++) {if (tables[i].dish_count < MAX_DISHES) {tables[i].dishes[tables[i].dish_count] = dish;tables[i].dish_count++;break;}}}void take_order(int table_num, Dish dish) {for (int i = 0; i < table_count; i++) {if (tables[i].table_num == table_num) {for (int j = 0; j < tables[i].dish_count; j++) { if (strcmp(tables[i].dishes[j].name, ) == 0) { printf("点餐成功!\n");return;}}}}printf("没有找到该菜品!\n");}void pay(int table_num) {float total = 0;for (int i = 0; i < table_count; i++) {if (tables[i].table_num == table_num) {for (int j = 0; j < tables[i].dish_count; j++) { total += tables[i].dishes[j].price;}printf("总计:%.2f 元\n", total);printf("请输入支付金额:");float pay = 0;scanf("%f", &pay);if (pay == total) {printf("支付成功!\n");} else {printf("支付失败!\n");}break;}}}```。
餐饮系统实验报告
一、实验目的本次实验旨在通过对餐饮系统的设计与实现,了解餐饮业信息管理的基本原理和方法,掌握餐饮系统开发的基本流程,提高实际操作能力。
通过实验,使学生能够:1. 理解餐饮系统的基本功能和模块;2. 掌握餐饮系统数据库的设计与实现;3. 熟悉餐饮系统界面设计与用户交互;4. 学会餐饮系统代码的编写与调试;5. 提高团队协作和项目管理能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 数据库:MySQL 5.74. 编程语言:C#三、实验内容1. 餐饮系统需求分析2. 餐饮系统数据库设计3. 餐饮系统界面设计4. 餐饮系统功能实现5. 餐饮系统测试与优化四、实验步骤1. 需求分析(1)收集餐饮业信息管理的基本需求,包括:菜品管理、订单管理、库存管理、员工管理、财务管理等。
(2)分析餐饮系统功能模块,确定系统架构。
2. 数据库设计(1)根据需求分析,设计餐饮系统数据库表结构。
(2)创建数据库表,并设置主键、外键、索引等约束。
(3)编写SQL语句,实现数据的增删改查操作。
3. 界面设计(1)使用Visual Studio 2019的窗体设计器,设计系统界面。
(2)根据功能需求,添加相应的控件,如文本框、按钮、列表框等。
(3)调整控件布局,确保界面美观、易用。
4. 功能实现(1)编写C#代码,实现各个功能模块。
(2)调用数据库操作,实现数据的存储和查询。
(3)进行界面与功能的交互,实现用户操作。
5. 测试与优化(1)对餐饮系统进行功能测试,确保各个模块正常运行。
(2)对系统进行性能测试,优化数据库查询、代码效率等。
(3)修复测试过程中发现的问题,完善系统功能。
五、实验结果1. 餐饮系统功能模块实现如下:(1)菜品管理:实现菜品信息的增删改查、菜品分类管理等。
(2)订单管理:实现订单信息的录入、查询、修改、删除等。
(3)库存管理:实现库存信息的查询、更新、预警等。
餐厅管理系统实训报告
程序实践报告(C语言)东北大学软件学院一、程序实践概述1、题目名称:餐厅信息管理程序2、3、开发环境:Microsoft visual studio 20055二、问题分析1、功能说明:(1)实现客户的点菜过程,客户结帐,帐目的管理,餐厅系统的维护。
(2)能够生成文本文件来完成数据的存储与读取,完成帐单的管理。
2、解决方案:(1)使用三种不同的结构体来分别存储餐桌,菜单以及订单信息。
(2)使用链表来实现创建客户订单与客户结帐等操作。
三、方案设计1、数据结构:(1)订单结构体typedef struct Order{int Table_ID; //记录餐桌号int Dish_ID[N]; //记录菜的信息int Dish_State[N];struct Order *next;}ORDER;(2)餐桌结构体typedef struct Table{int Table_ID; //餐桌编号int Capacity; //餐桌最多能容纳的人数int Table_State; //1 有人在用,0 没人用}TABLE;(3)菜的结构体typedef struct Dish{int Dish_ID; //菜的编名char Dish_Name[10]; //菜名float Dish_Price; //价格}DISH;(4)2、总体流程:Menu_select()-Load_Dish()Dish_Order(ORDER*CreateOne)Payment(head)List_Management()ListMenu()ModifyPW()Observe()Menu_select()Get_Rank()⑴点菜功能的实现先调用search()函数,查找客户所需要的餐桌,找到后调用Dish_Menu()函数打印菜谱,接着调用Create(float)函数创建一个订单节点,最后调用Dish_Order()函数,将新创建的订单链到链表表尾;⑵结账功能的实现先让客户输入自己就餐的编号,根据编号查找客户消费的具体情况,并调用Display ()函数打印客户点的菜的信息,接着调用Save_Inform()函数将订单信息写入历史记录文本文件中进行保存,作为统计的基础,然后调用saveList()函数将客户消费总额和消费的具体时间存入名为“账本”的文件中,作为账目管理的基础;⑶账目管理调用void List_Management()函数并且通过密码验证,进入ListMenu()函数。
C#餐饮管理系统设计报告
Windows程序设计实训报告(计算机与软件学院)设计课题:餐饮管理系统专业班级:计算机网络技术1001班学生姓名:*****学生学号:******指导教师:*****目录第一章餐饮信息管理系统的开发背景 (1)1.1开发背景 (1)1.2开发工具 (1)第二章系统定义与系统需求 (2)2.1系统定义 (2)2.2系统需求分析 (2)第三章系统总体设计 (3)3.1系统功能模块的划分 (3)3.2管理员权限模块划分 (4)3.3员工权限模块划分 (4)3.4系统流程分析 (5)3.5数据库设计 (5)3.5.1 数据库规划 (5)3.5.2 E-R图 (6)3.5.3 数据表的设计 (6)第四章系统详细设计 (7)4.1用户登陆模块 (7)4.2系统主界面 (9)4.3点菜界面 (10)4.4食品信息界面 (10)4.5职员信息界面 (11)总结 (12)参考文献 (12)摘要:随着经济的发展社会的进步,去饭店过节聚会成为了一种新的时尚。
因此每逢过年过节,饭店都会迎来大量的顾客,随之而来的就是大量的预定和结算信息将会使得饭店的工作人员不堪重负,并且不可避免的会出现这样或那样的错误。
餐饮信息管理软件的诞生可以为他们提供便捷的管理服务。
并且几乎为零的错误率也使得餐馆可以更好的为顾客服务。
它不仅可以为餐馆降低人力资源的付出,节省了成本,而且也可以提升自身的形象,使餐厅迎来更多的食客。
本系统使用了C#技术,饭店服务人员使用它可以快速准确地为客户服务,人性化的系统界面设计使得软件便于使用者的快速掌握,计算机几乎为零的错误率和高效的处理能力使得原本繁琐的餐饮管理变得更加科学、快捷以及人性化。
使用本系统,员工将可以快速地编辑顾客资料信息。
管理员使用本系统,既可以完成员工的所有工作,又可以更好地管理员工,精准地了解员工账面的资金情况。
关键字:餐饮管理;C#窗口程序设计;餐饮软件第一章餐饮信息管理系统的开发背景1.1 开发背景传统的餐饮管理现在已经很难应对当今社会对餐饮业的管理要求,它与现在的基于计算机技术发展起来的餐饮信息管理系统对比,有以下几大不同:便捷性方面:传统的人工对餐饮信息进行管理,如:顾客信息管理,菜单信息管理和订餐信息的管理,都是很繁琐的过程,其中的任何一步过程都要浪费大量的时间,而随着计算机技术的发展,这些原本繁琐的问题都会变得轻而易举。
C语言程序设计酒店管理系统实验报告韩国齐
课程设计报告书题目:酒店管理系统设计报告专业:电子信息工程(移动互联网)班级:一班姓名:韩国齐学号:教师:朴海光一:程序功能酒店系统管理包括:主菜单、查看客房入住情况、登记入住、修改客房信息、修改客房信息及退房六个功能模块。
每个功能用一个函数来实现,从而达到功能的模块化。
主菜单模块:主菜单模块包括1.查看客房入住情况、2.登记入住、3.客房信息修改、4. 退房及显示入住的总费用、5.返回主菜单、6.直接退出程序。
1)查看客房入住情况功能模块:主要功能是查看房间的入住情况和继续查看已入住的房间的客户信息。
2)登记入住功能模块:采用结构体数组来记录客户的信息,包括姓名、性别、年龄、身份证号、入住时间,入住单价及入住人数,登记完一个房间后可选择继续下一个房间的登记,也可以选择返回主菜单进行其他功能的操作。
3)修改客房信息功能模块:包括修改客户信息模块和修改房间信息模块。
4)修改客户信息模块:主要功能是可选择性的修改客户某个信息,也可以一次性全部修改。
5)修改客房信息功能模块:用来对客户换房时对客户信息和房间号的修改。
实现的功能是只要输入客户以前住的房间号和现在想住的房间号,就将客户的信息全部移到现在想住的房间上,而以前的房间将被置为未使用。
6)退房及显示总费用功能模块:当客户退房时,将客户使用的客房置为未使用,删除客户信息。
并且显示客户从入住到退房时的总费用。
二:程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#define M 80int j,s;int hj[81]={0};FILE *fp; //定义文件指针变量struct date //定义结构体类型{int month;int day;int year;}final;struct client{char name[20];int sex;int age;char ID_card[20];int count;struct date start;};struct hotel{int price;int room_ID;struct client personal;}room[M];void save(); //声明文件函数void check_siru(); //声明查看客房入住情况函数void registration_live(); //声明登记入住信息函数void modify_infor(); //声明修改客房信息函数void amend_one(); //声明修改个人信息函数void amend_room(); //声明修改房间信息函数void cost(); //声明退房及显示入住费用函数void get_back(); //声明返回主菜单函数void check_siru1(); //声明查看客房入住情况的调用函数void registration_live1(); //声明登记入住信息的调用函数void amend_one1(); //声明修改个人信息的调用函数void amend_room1(); //声明修改房间信息的调用函数void cost1(); //声明显示入住费用的调用函数int main() //主函数{int menu();void print_message();printf("\n\n\n\n\n");print_message();menu();save();return 0;}void print_message(){printf("\t\t\t 欢迎入住黄金酒店\n\n\n"); }menu() //主菜单函数{int n;printf("\n");printf("\t\t\t 主菜单 \n\n");printf("\t\t\t 按 1 查看客房入住情况\n");printf("\t\t\t 按 2 登记入住信息\n");printf("\t\t\t 按 3 修改客房信息\n");printf("\t\t\t 按 4 退房、及显示入住费用\n");printf("\t\t\t 按 5 返回主菜单\n");printf("\t\t\t 按 6 退出程序\n");printf("\n\t请输入要进行操作的选项(1、2、3、4、5、6): ");scanf("%d",&n);while(n<1||n>6){printf("\t\t\t 输入错误,请重新输入选项!");scanf("%d",&n);}switch(n){case 1:check_siru();break;case 2:registration_live();break;case 3:modify_infor();break;case 4:cost();break;case 5:get_back();break;case 6:exit(0);}return 0;}void check_siru() //查看房间使用情况函数{int a,g,count=0;for(g=1;g<=80;g++){++count;elseif(hj[g]==1)printf("\n\t\t\t正在使用的房间号:%d",g);}printf("\n\n\t\t\t未使用的房间数:%d",count);printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:printf("\n\n");printf("\n\t\t\t请输入要查询的房间号: ");scanf("%d",&s);{printf("\n\t\t\t 姓名:%s",room[s]);printf("\n\t\t\t性别(其中:1表示男,2表示女!):%d",room[s].personal.sex);printf("\n\t\t\t 年龄:%d",room[s].personal.age);printf("\n\t\t\t身份证号:%s",room[s].personal.ID_card);printf("\n\t\t\t 房间号:%d",room[s].room_ID);printf("\n\t\t\t客房单价:%d",room[s].price);printf("\n\t\t\t入住人数:%d",room[s].personal.count);printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续\n");scanf("%d",&a);switch(a){case 1:menu();break;case 2:check_siru1();break;}}elseprintf("\n\t\t\t该房间未被使用!");}save();printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:check_siru1();break;}}void registration_live() //登记入住函数{int a;printf("\t\t请输入登记的相关信息:\n");printf("\n\t\t\t房间号");scanf("%d",&j);room[j].room_ID=j;printf("\n\t\t\t 姓名:");scanf("%s",room[j]);printf("\n\t性别(其中:1表示男,2表示女!):"); scanf("%d",&room[j].personal.sex);printf("\n\t\t\t 年龄:");scanf("%d",&room[j].personal.age);printf("\n\t\t\t身份证号:");scanf("%s",room[j].personal.ID_card);printf("\n\t\t\t入住年份:");printf("\n\t\t\t 月份:");scanf("%d",&room[j].persprintf("\n\t\t\t 日期:");printf("\n\t\t\t客房单价:");scanf("%d",&room[j].price);printf("\n\t\t 请输入入住人数: ");scanf("%d",&room[j].personal.count);hj[j]=1;save();printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:registration_live1();break;}}void modify_infor() //修改客房函数{int r,m;printf("\t\t\t 菜单 \n\n\n");printf("\t\t\t1:修改客户信息\n");printf("\t\t\t2:修改房间信息\n");printf("\t\t\t3:返回主菜单\n");printf("\t\t\t4:退出程序\n");printf("\n\n\t\t 请选择输入选项(1、2、3、4): ");scanf("%d",&m);if(m<1||m>3){r=1;}else r=0;switch(m){case 1:amend_one1();break;case 2:amend_room1();break;case 3:menu();case 4:exit(0);}save();}void amend_one() //修改客人信息函数{int i,q;char a[20];printf("\n\n\t\t\t请输入现住的房间号: ");scanf("%d",&j);printf("\n\t\t\t请选择您要修改的个人选项\n");printf("\t\t\t1:代表姓名 \n\t\t\t2:代表性别(其中1表示男,2表示女) \n\t\t\t3:年龄 \n\t\t\t4:代表身份证号 \n\t\t\t5:代表入住年份\n\t\t\t6:代表入住月份 \n\t\t\t7:代表入住日期 \n\t\t\t8:入住人数\n");printf("\t\t\t请选择输入选项(1、2、3、4、5、6、7、8): ");scanf("%d",&q);switch(q){int t,p;case 1:printf("\n\t\t\t请输入新名字: ");scanf("%s",a);strcpy(room[j],a);printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 1:menu();break;case 2:amend_one1();break;}case 2:printf("\n\t\t请输入新性别(其中:1表示男,2表示女): ");scanf("%d",&p);room[j].personal.sex=p;printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 1:menu();break;case 2:amend_one1();break;}case 3:printf("\n\t\t\t请输入年龄: ");scanf("%d",&p);room[j].personal.age=p;printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 1:menu();break;case 2:amend_one1();break;}case 4:printf("\n\t\t\t请输入新身份证号: ");scanf("%s",room[j].personal.ID_card);printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 1:menu();break;case 2:amend_one1();break;}case 5:printf("\n\t\t\t请输入新年份: ");printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 2:amend_one1();break;}case 6:printf("\n\t\t\t请输入新月份: ");printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 1:menu();break;case 2:amend_one1();break;}case 7:printf("\n\t\t\t请输入新日期: ");printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 2:amend_one1();break;}case 8:printf("\n\t\t\t请输入新入住人数: ");scanf("%d",&p);room[j].personal.count=p;printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&i);switch(i){case 1:menu();break;case 2:amend_one1();break;}}menu();}void amend_room() //修改房间信息函数{int a,l,x;printf("\n\t\t\t\t请输入你要修改的客房信息\n\n");printf("\t\t\t\t1:房间号\n\n\t\t\t\t2:客房单价\n\n\t\t\t\t3:入住人数\n\n\t\t\t\t4:返回\n\n");printf("\t\t\t请选择输入选项(1、2、3、4): ");scanf("%d",&l);switch(l){case 1:printf("\n\t\t\t请输入旧房号: ");scanf("%d",&j);printf("\t\t\t请输入新房号: ");scanf("%d",&s);strcpy(room[s],room[j]);//room[j]={'\0'};room[s].personal.sex=room[j].personal.sex;room[j].personal.sex=0;room[s].personal.age=room[j].personal.age;room[j].personal.age=0;strcpy(room[s].personal.ID_card,room[j].personal.ID_card); //room[j].personal.ID_card={'\0'};room[s].room_ID=s;room[s].price=room[j].price;room[s].personal.count=room[j].personal.count;hj[s]=1;hj[j]=0;printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:amend_room1();break;}case 2:printf("\n\t\t\t 请输入房号: ");scanf("%d",&s);printf("\t\t\t请输入新单价: ");scanf("%d",&x);room[s].price=x;printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:amend_room1();break;}case 3:printf("\n\t\t\t 请输入房号: ");scanf("%d",&s);printf("\t\t\t请输入新入住人数: ");scanf("%d",&x);room[s].personal.count=x;printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:amend_room1();break;}case 4:break;}save();menu();}void cost() //退房、显示入住费用函数{int a,i,sum;printf("\t\t\t请输入房间号: ");scanf("%d",&j);room[j].room_ID=j;printf("\n\t\t\t 房间单价为: ");printf("%d",room[j].price);printf("\n\t\t\t请输入退房时间: ");printf("\n\t\t\t 请输入年份: ");scanf("%d",&final.year);printf("\n\t\t\t 请输入月份: ");scanf("%d",&final.month);printf("\n\t\t\t 请输入日期: ");scanf("%d",&final.day);printf("\n\t\t\t请输入入住天数: "); scanf("%d",&i);sum=room[j].price*i;printf("\n\t\t\t 总费用sum=%d\n",sum);hj[j]=0;save();printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");scanf("%d",&a);switch(a){case 1:menu();break;case 2:cost1();break;}}void get_back() //返回主菜单的调用函数{menu();}void check_siru1() //声明查看客房入住情况的调用函数{check_siru();}void registration_live1() //声明登记入住信息的调用函数{registration_live();}void amend_one1() //声明修改个人信息的调用函数{amend_one();}void amend_room1() //声明修改房间信息的调用函数{amend_room();}void cost1() //声明显示入住费用的调用函数{cost();}void save(){FILE *fp;int i;if((fp=fopen("客房管理.txt","w+"))==NULL){printf("cannot open file\n");exit(0);}for(i=0;i<M;i++){if(fwrite((&room[i]), sizeof(room[M]),1,fp)!=1) printf("file write error\n");fflush(fp);}fclose(fp);}三:运行(主菜单功能)(登记客户入住信息(可以按 2 继续登记下个房间客户的信息))(查看登记过的客户信息(刚刚登记的李明的信息已存在))(修改客户信息(这页修改的是名字,把李明改为张三))(这页查看修改的客户信息是否成功(已成功的把李明改为了张三))(这页继续修改客户信息(这里修改的是性别,把刚才的男(1)改为了女(2)))(这里继续查看刚才修改的性别是否成功(这里已经把男(1)改成了女(2)))依此类推下面的年龄、身份证号、入住年份、月份、日期、人数都依此方法修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
饭店管理系统一.需求分析设计一个饭店的系统用来实现预约订餐等基本功能。
饭店管理系统的主要功能:1.餐饮管理包括提前预约、点菜的功能;通过这项功能从而能够使得客户在到饭店以前就可以提前预约好,从而可以使客户能够在未到饭店以前就可以约定好了.2.收银管理为结账.3.查询管理包括账单查询和预约查询。
预约查询可以查询客户已经预约的情况。
从而当预约的客户过来时能够方便的验证。
账单查询能够方便的显示出各个桌子的消费情况。
二.思路分析首先编写一个程序用来存储本店的菜单以及菜的价格,这样就可以快捷方便的调用出来,接下来开始编写主要的程序。
本系统总共有三个模块,分辨是餐饮管理,查询管理,以及收银管理,餐饮管理用来存储顾客的预约信息和点菜的信息,查询管理用来查看顾客的预约信息,从而来确认以及每个桌子上的消费信息,最后收银管理用来结账。
三.概要设计四.详细设计菜单设定程序代码#include<stdio.h>#define size 15struct caidan_type{char cainame[15];int jiage;}caidan[10000];void save(){FILE *fp;int i;if((fp=fopen("caidan_list","wb"))==NULL) {printf("cannot open file");return;}for(i=0;i<size;i++){if( fwrite(&caidan[i],sizeof(struct caidan_type),1,fp)!=1) printf ("file write error\n");}fclose(fp);}void main(){int i;for(i=0;i<size;i++){scanf("%s%d",caidan[i].cainame,&caidan[i].jiage);save();}}饭店系统代码#include<stdio.h>#define size 10000struct yuyuexitong_type//定义顾客的预约信息{char name[10];int mobilenum;int time;}yuyue[10000];struct caidan_type//定义菜单的信息{char cainame[15];int jiage;}caidan[10000];struct diancai_type//定义每个桌子点菜的信息{int zhuoweihao;char caiming[15];int jiage;}dian[1000];void save(int i,int f)//储存预约人信息{FILE *fp;if((fp=fopen("yuyu_list","wb"))==NULL){printf("cannot open file");return;}for(i=0;i<f;i++){if( fwrite(&yuyue[i],sizeof(struct yuyuexitong_type),1,fp)!=1) printf ("file write error\n");}fclose(fp);}void savedian(int g,int e)//储存每个桌子的点菜的信息{FILE *fp;if((fp=fopen("diancai_list","wb"))==NULL){printf("cannot open file");return;}for(g=0;g<e;g++){if( fwrite(&dian[g],sizeof(struct diancai_type),1,fp)!=1)printf ("file write error\n");}fclose(fp);}void caidanxianshi()//显示菜单{int i;FILE *fp;fp=fopen("caidan_list","rb");for(i=0;i<15;i++){fread(&caidan[i],sizeof(struct caidan_type),1,fp);printf("%-12s %-12d\n",caidan[i].cainame,caidan[i].jiage);}fclose(fp);}void xianshi(int f)//显示预约者的信息{int i;FILE *fp;fp=fopen("yuyu_list","rb");//显示每个桌子的点菜的信息for(i=0;i<f;i++){fread(&yuyue[i],sizeof(struct yuyuexitong_type),1,fp);printf("%-12s %-12d %-12d\n",yuyue[i].name,yuyue[i].mobilenum,yuyue[i].time);}fclose(fp);}void diancaixianshi(int h){int i;FILE *fp;fp=fopen("diancai_list","rb");for(i=0;i<h;i++){fread(&dian[i],sizeof(struct diancai_type),1,fp);printf("%-12d %-12s %-12d\n",dian[i].zhuoweihao,dian[i].caiming,dian[i].jiage);}fclose(fp);}void main()//主函数{int i=0,n,f,nn,m,a=0,b,d,e,g,h=0,j,k,l;long z;re: printf("请输入6位密码进入系统\n");//输入密码用来组织非本店人员的进入scanf("%d",&z);if(z==695730){ printf("进入饭店管理系统\n");kaishi: printf("功能选项1.餐饮管理 2.查询管理3.收银管理4.退出系统\n");scanf("%d",&nn);if(nn==1)//进入餐饮管理功能{ss: printf("餐饮管理选项1.预约记录2.桌台点菜3.退出\n");scanf("%d",&n);f=i;b=a;if(n==1){printf("记录预约信息\n");printf("姓名手机后四位时间(点)\n");scanf("%s%d%d",yuyue[i].name,&yuyue[i].mobilenum,&yuyue[i].time);save(i,f);printf("记录完毕\n");i++;goto ss;}if(n==2){ printf("分配桌位号为(总共有35个桌子)\n");scanf("%d",&d);printf("显示菜单\n");printf("菜名价格(元)\n");caidanxianshi();printf("记录客人点的菜\n");printf("所点菜的数目:");scanf("%d",&e);printf("桌位号菜名价格(元)\n");for(g=h;g<h+e;g++){scanf("%d%s%d",&dian[g].zhuoweihao,dian[g].caiming,&dian[g].jiage);savedian(g,e);}printf("记录完毕\n");h=h+e;goto ss;}if(n==3){goto kaishi;}else{printf("输入有误请重新输入\n");goto ss;}}if(nn==2)//进入查询管理功能{mm: printf("功能选项1.预约信息查询 2.消费查询3.退出\n");scanf("%d",&m);if(m==1){printf("显示预约信息\n");printf("姓名手机后四位时间(点)\n");xianshi(f);goto mm;}if(m==2){printf("显示消费信息\n");printf("桌位号菜名价格(元)\n");diancaixianshi(h);goto mm;}if(m==3){goto kaishi;}else{printf("输入有误请重新输入\n");goto mm;}}if(nn==3)//进入收银管理功能{l=0;printf("请输入要结账的桌位号\n");scanf("%d",&j);for(k=0;k<g;k++){if(j==dian[k].zhuoweihao){l=dian[k].jiage+l;}}printf("%d",l);printf("元\n");printf("收银成功\n");goto kaishi;}if(nn==4){printf("退出系统\n");}else{printf("输入有误请重新输入\n");goto kaishi;}}else{printf("输入有误请重新输入\n");goto re;}}五.测试数据及其结果分析总体测试中基本能够符合要求主要不好的原因还是界面太难看以及操作有点繁琐。