饭店管理系统实验报告(c语言)

合集下载

c语言点餐系统实训报告

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语言来设计餐饮管理系统,以提高餐饮服务的效率。

第一步:确定需求和功能在进行任何的软件设计前,我们首先需要确定我们的需求和功能。

餐饮管理系统的主要目标是提供高效的管理和服务。

因此,我们需要确保系统能够进行订单管理、库存管理、员工管理和顾客管理等功能。

通过这些功能,管理者和员工可以更好地掌握餐厅的运营情况,从而提供更好的服务。

第二步:设计数据结构在使用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酒店管理系统实训报告

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++程序设计实习报告-酒店点菜管理系统

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语言课程设计报告餐厅自动化点餐系统

计算机程序设计基础(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语言作为一种强大而灵活的编程语言,可以实现餐饮管理系统的各种功能。

本文将介绍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语言实训
本次实训将利用C语言开发一个酒店管理系统,该系统将包括以下模块:
1. 登录模块:实现用户登录和权限控制,管理员和普通用户登录后能看到不同的界面。

2. 客房管理模块:管理员可以添加、修改、删除客房信息,普通用户只能查看客房信息和预订客房。

3. 订单管理模块:管理员和普通用户都可以查看订单信息,管理员还可以修改订单状态。

4. 员工管理模块:管理员可以添加、修改、删除员工信息。

5. 数据统计模块:管理员可以查看酒店的收入、客房利用率等统计数据。

该系统将采用文件存储数据,包括客房信息、订单信息、员工信息等。

同时,还将使用结构体、指针等C语言特性实现数据的存储和操作。

此外,系统的界面将使用C语言的图形界面库进行开发,以增加用户的交互性和易用性。

通过本次实训,学生将掌握C语言的基本语法和数据操作方法,了解实际项目的开发流程和技术要求,提高了解决问题的能力和独立开发的能力。

- 1 -。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;}}五.测试数据及其结果分析总体测试中基本能够符合要求主要不好的原因还是界面太难看以及操作有点繁琐。

相关文档
最新文档