《程序设计实践》中小餐馆点餐系统课程项目报告
- 格式:doc
- 大小:89.50 KB
- 文档页数:15
c语言点餐系统实训报告本报告旨在介绍c语言点餐系统实训的目的和背景,并概括说明报告的结构。
点餐系统是一种常见的应用程序,可以帮助餐厅提高工作效率和顾客体验。
通过实现一个简单的c语言点餐系统,我们可以加深对c语言程序设计的理解,并掌握系统开发的基本方法和技巧。
本报告将分为以下几个部分:实训目的:阐述我们进行此实训的目的,以及期望达到的研究效果。
方案设计:介绍我们设计点餐系统的基本思路与方法,包括所需功能和用户界面设计。
程序实现:详细说明我们在实训过程中所使用的c语言编程技术和工具,以及程序实现的具体步骤。
功能测试:描述我们对点餐系统进行的功能测试,以验证系统的正确性和稳定性。
总结和展望:总结本次实训的收获和问题,并展望未来可能的优化和改进方向。
通过本报告的阅读,读者将了解到点餐系统实训的背景、目的和结构,以及我们在实训过程中所遇到的挑战和解决方法。
同时,读者还可以对c语言程序设计和系统开发有一个简单的认识,并通过点餐系统实战掌握更多实际的编程技巧和经验。
本部分将对点餐系统的功能需求和非功能需求进行分析,包括用户界面、数据存储、订单管理等方面的要求。
功能需求用户界面:系统应提供简洁直观的用户界面,方便用户浏览菜单、选择菜品和提交订单等操作。
菜单管理:系统应能够展示餐厅的菜单信息,包括菜品名称、价格、描述等,并支持菜单的查询、编辑和更新。
订单管理:系统应能够处理顾客的点餐请求,包括接收订单、记录订单详情、计算订单金额,并提供相应的订单状态跟踪功能。
数据存储:系统应能够可靠地存储菜单数据和订单数据,以便于后续查询和统计分析。
非功能需求可靠性:系统应具备较高的稳定性和可靠性,能够在高并发情况下正常运行,并且能够处理异常情况,如网络故障或数据丢失等。
安全性:系统应采取必要的安全措施,保护用户的隐私信息和订单数据,防止未经授权的访问和篡改。
性能:系统应能够在合理的时间范围内响应用户的操作,快速加载菜单信息和处理订单请求。
一、实习背景随着移动互联网的快速发展,点餐系统已成为人们日常生活中不可或缺的一部分。
为了深入了解点餐系统的运作原理,提升自身实践能力,我于20XX年X月至20XX 年X月在XX公司进行点餐系统实习。
以下是实习期间的学习和实践总结。
二、实习单位及岗位实习单位:XX公司实习岗位:点餐系统开发实习生三、实习目标1. 熟悉点餐系统的开发流程和基本原理;2. 掌握点餐系统前端和后端技术;3. 提高团队协作能力和沟通能力;4. 培养对编程的热爱和持续学习的动力。
四、实习内容1. 项目背景及需求分析实习期间,我首先参与了项目需求分析会议,了解了点餐系统的功能模块和业务流程。
主要包括:(1)用户注册、登录和密码找回功能;(2)菜品展示、搜索和筛选功能;(3)购物车、订单提交和支付功能;(4)订单管理、评价和退款功能;(5)收货地址管理、个人信息管理等功能。
2. 前端开发在实习过程中,我主要负责点餐系统的前端开发。
主要使用了以下技术:(1)HTML/CSS/JavaScript:负责页面的布局、样式和交互逻辑;(2)Vue.js:用于构建用户界面和实现数据绑定;(3)Axios:用于发送HTTP请求,与后端进行数据交互。
在开发过程中,我学习了如何使用Vue.js组件化开发,提高了代码的可维护性和复用性。
同时,通过编写样式和交互逻辑,使页面更加美观和易用。
3. 后端开发为了实现点餐系统的功能,我参与了后端开发。
主要使用了以下技术:(1)Node.js:作为服务器端运行环境;(2)Express:用于构建Web应用程序;(3)MySQL:用于存储用户数据、菜品信息和订单数据。
在开发过程中,我学习了如何使用Express框架搭建服务器,实现RESTful API接口,并与前端进行数据交互。
同时,通过编写SQL语句,实现了数据的增删改查操作。
4. 项目部署与维护在完成开发任务后,我参与了项目的部署和上线。
主要内容包括:(1)配置服务器环境,安装Node.js、Express和MySQL等依赖;(2)编写自动化部署脚本,实现快速部署;(3)监控服务器运行状态,及时发现并解决线上问题。
点餐系统实习报告模板项目背景介绍点餐系统是为了方便餐厅或者其他餐饮服务场景的客户点餐而设计的软件,顾客可以通过电子设备在点餐系统上下单,餐厅服务员可以从系统中轻松管理订单和服务。
实习背景为了更好地掌握点餐系统的开发,我在一家小型软件公司完成了一次为期两个月的实习,实习期间我参与了该公司点餐系统的开发和测试工作。
实习内容开发环境在实习中,我们使用了以下开发工具和技术:•操作系统:Windows 10•编程语言:Java•开发环境:Eclipse•开发框架:Spring Boot•数据库:MySQL•协同工具:Git实习任务1.架构设计:参与点餐系统的基础架构设计,包括服务端和客户端的架构设计与实现。
2.功能开发:负责点餐系统中的部分功能开发,包括菜单管理、订单管理和支付接口。
3.测试工作:负责点餐系统的测试工作,包括单元测试和集成测试等。
工作成果在实习期间,我完成了以下工作:1.架构设计:参与了点餐系统服务端的架构设计和实现,组织了团队进行模块划分和接口设计,使得系统的开发变得更加高效。
2.功能开发:负责了系统菜单管理、订单管理和支付接口的相关开发工作,采用了Spring Boot和MySQL等技术,代码实现了业务逻辑和持久化操作,同时保证了系统的健壮性和可扩展性。
3.测试工作:参与了对点餐系统的功能测试、单元测试和集成测试等,尽可能的发现和修复了系统存在的问题。
实习收获通过这次实习,我学到了很多关于软件开发和协作的知识和技能,包括:1.学会了如何优化代码架构和优化代码的性能,使得系统更加高效、稳定。
2.了解了如何进行软件的测试与调试,不断提升系统的品质和用户体验。
3.从实际工作中了解了如何与团队协作,如何处理人际关系和团队交流。
总结这次实习让我更深入地认识到了软件开发的本质和难度,也让我对未来职业规划更具有明确的方向。
在实习期间,我通过不断的学习和实践,提高了代码编写和协作的能力,为以后的工作打下了坚实的基础。
Python设计点餐系统实验报告
由于科学技术的快速进步,社会的每个领域都离不开电脑技术。
随着电脑技术的不断进步,互联网的领域也不断扩大,带来了网络信息的增多。
有些应用到通信领域,有些应用到商业领域,如在通过互联网出售菜品等,目前,互联网已成成为社会上不可或缺的元素,而这个网络里最关键的元素就是网站。
当今的社会已进入信息化社会时代,信息化已经受到社会的高度关注,被看作社会和科学技术发展三大支柱之一。
信息是餐馆管理的基础,是餐馆进行决策的重要依据。
信息已经作为人力、物力、财力之外的第四种能源,占有重要的地位。
然而,信息是一种非物质的,有别于基本资源的新形式的资源。
同时信息也是管理的对象,必须进行管理和控制。
俗话说:“民以食为天”,随着人们的生活水平的提高,对饮食的要求已不再是解决温饱问题,很多人在紧张的工作之余会选择享受美食来进行放松。
餐饮业作为一种个性化、多样化的服务产业,随着网络技术的快速发展与普及,将餐饮服务和个性化、多样化服务的电子商务相结合,从而形成了方便快捷、个性化的网上订餐系统,通过网上订餐,顾客们在家便可以为自己、家人、朋友聚会等置办一份既营养又实惠的美食大餐。
其最大的优点在于:图文并茂,信息能够及时更新与在线查看,并有效地解决了传统就餐过程出现的排队,拥挤,
信息不能及时更新的现象。
这样既节省了时间,也可以为广大用户提供更多选择。
设计主要采用了DJANGO页面作为开发语言,后台设计主要采用MySQL作为数据库管理系统,开发环境采用了pycharmp,服务器采用python的web服务器。
是一种基于Web技术上开发出的B/S结构的网上订餐系统。
程序设计实习》报告题目: 酒店点菜管理系统专业班级:学号:姓名:起止日期:指导老师: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;”表达式必须是可修改的左值。
一、实验名称:饭店点菜系统二、程序设计指导思想:理解软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;掌握利用VB开发数据库系统的方法,以及VB与数据库连接的方法。
三、程序算法设计1、程序的主要功能:菜式浏览功能:能分类浏览饭店的所有菜式、采样及价格;点菜功能:进行点菜操作后能预览点菜结果,并可对其进一步修改;留言板功能:记录顾客的意见和建议,并具有浏览功能;抽奖功能:当顾客的消费达到指定金额时,可抽取小奖品。
2、程序算法的总体设计:(1)、系统分析,设置三个主要界面主要包括管理员管理菜谱界面、顾客点菜界面、顾客留言及查看留言界面,还有一个抽奖的小程序。
(2)、分别进入各个页面在点菜板块中中进行菜式浏览并进行点菜,删菜及落单顾客留言中可以添加对饭店的建议以及浏览历史留言抽奖功能:当顾客的消费达到指定金额时,可抽取小奖品。
所运用的程序:Visual basic 和access数据库四、设计过程(界面)1、首页(1)、界面(2)、使用介绍:单击“顾客端”进入顾客点菜系统,单击“管理端”进入管理员登陆界面参数确定在各个命令按钮的属性窗口分别确认其caption属性代码窗口设置功能(3)、显示测试2、管理端登陆界面(1)、界面(2)、使用介绍:单击登陆进入菜谱管理界面,单击取消返回首页参数确定:在各个命令按钮、标签的属性窗口分别确认其caption属性代码窗口设置功能:3、菜谱管理界面(1)、界面(2)、使用介绍:该界面主要有三个功能,可以实现菜式的添加、修改和删除,还可返回首页、退出整个程序。
添加功能:选择菜式,并输入菜名及价格,上传图片,单击添加保存。
修改功能:单击要修改的菜,直接在文本框中修改。
删除功能:单击要删除的菜,单击删除按钮删除该界面要用到数据库,vb和数据库连接实现功能(用到adodc控件和datagrid控件)参数确定:Adodc和datagrid的属性窗口设置属性:命令按钮和标签的属性在属性窗口确认属性:代码窗口设置功能:添菜功能显示图片:修改功能:删除功能:与数据库连接功能:(3)、显示测试4、顾客点菜系统首页(1)、界面(2)、使用介绍:单击“顾客点菜天地”进入点菜系,单击“留言板”进入留言板界面参数确定在各个命令按钮的属性窗口分别确认其caption属性代码窗口设置功能5、顾客点菜界面(1)、界面(2)、使用介绍该界面包含菜系浏览、点菜、减菜、提交菜单等功能。
计算机程序设计基础(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语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面,做的越来越好。
订餐系统实习报告在实习公司名称的实习期间,我参与了订餐系统的相关工作,这段经历让我对软件开发和系统运营有了更深入的理解和认识。
一、实习背景随着互联网技术的飞速发展,线上订餐已经成为人们日常生活中不可或缺的一部分。
实习公司名称为了满足市场需求,提升用户体验,决定开发一款高效、便捷的订餐系统。
我有幸在这个项目中贡献自己的一份力量,并在实践中不断学习和成长。
二、实习目的通过参与订餐系统的开发和维护,我希望能够提升自己的编程技能,了解软件开发的全流程,掌握系统设计和优化的方法,同时培养团队合作精神和解决问题的能力。
三、实习内容1、需求分析在项目启动初期,我与团队成员一起与业务部门进行沟通,了解用户需求和业务流程。
我们通过问卷调查、用户访谈等方式收集了大量的数据,并对这些数据进行了整理和分析。
在这个过程中,我学会了如何从用户的角度出发,挖掘他们的真实需求,并将其转化为系统的功能需求和非功能需求。
2、系统设计根据需求分析的结果,我们开始进行系统设计。
我参与了数据库设计、架构设计和界面设计等工作。
在数据库设计中,我需要考虑数据的存储结构、关系和索引等,以确保数据的完整性和查询效率。
在架构设计中,我们选择了合适的技术框架和开发工具,并对系统的模块进行了划分和职责定义。
在界面设计中,我们注重用户体验,力求设计出简洁、美观、易用的界面。
3、编码实现在系统设计完成后,我开始进行编码实现。
我主要负责用户注册登录模块、菜品管理模块和订单管理模块的开发。
在开发过程中,我严格按照编码规范进行编写,并进行了充分的测试,以确保代码的质量和稳定性。
同时,我还积极与团队成员进行代码审查和交流,学习他人的优秀编码经验和技巧。
4、系统测试在完成编码实现后,我们进行了系统测试。
测试包括单元测试、集成测试和系统测试等。
我参与了部分测试用例的编写和执行,并对测试中发现的问题进行了及时的修复和优化。
通过系统测试,我们确保了系统的功能完整性和性能稳定性,为系统的上线运行提供了有力的保障。
订餐系统实践报告1. 引言本报告旨在对订餐系统的实践过程进行总结和分析。
通过实践,我们构建了一个完整的订餐系统,包括用户注册、登录、选择菜品、下单、支付等功能。
本报告将介绍系统的设计思路、技术选型、开发过程和遇到的问题以及解决方法。
2. 设计思路订餐系统的设计思路是实现一个简单、易用、高效的订餐平台,用户可以方便地浏览菜单、选择菜品、下单并进行支付。
系统的核心目标是提供良好的用户体验和高效的订单处理。
为了实现这个目标,我们进行了以下设计:2.1 用户模块用户模块是系统的核心模块之一,包括用户注册、登录、个人信息管理等功能。
我们设计了用户表,用于存储用户的基本信息,包括用户名、密码、手机号等。
用户注册时需要填写必要的信息并进行验证,注册成功后可以使用自己的账号登录系统。
2.2 菜单模块菜单模块用于展示系统的菜品列表,并提供相应的筛选和排序功能。
菜品信息包括菜品名称、价格、描述等。
用户可以浏览菜品列表、查看详细信息,并选择自己喜欢的菜品加入购物车。
2.3 订单模块订单模块用于处理用户的下单请求,并生成相应的订单。
用户下单时需要选择菜品和配送地址,并完成支付操作。
订单信息包括订单号、下单时间、菜品列表、配送地址等。
3. 技术选型为了实现系统的设计思路,我们选用了以下技术:•前端技术:使用HTML、CSS和JavaScript进行前端开发,采用Vue.js作为主要的前端框架,使得界面更加美观且交互更加流畅。
•后端技术:使用Python作为后端开发语言,搭配Django框架进行后端开发,实现用户管理、菜单管理和订单管理等功能。
•数据库技术:使用MySQL作为系统的数据库,用于存储用户信息、菜品信息和订单信息等。
4. 开发过程在开发过程中,我们按照以下步骤进行:4.1 搭建环境首先,我们搭建了开发环境,包括安装Python、Django和MySQL等必要的软件和依赖库。
4.2 数据库设计接下来,我们设计了系统的数据库结构,包括用户表、菜单表和订单表等。
订餐系统实习报告1. Introduction在过去的实习期间,我有幸参与了一家订餐系统的开发项目。
本文将对此次实习的经历和取得的成果进行详细阐述。
2. 背景和目标2.1 实习背景本次实习是在某软件公司进行的,公司主要专注于餐饮行业的软件开发。
他们决定开发一个订餐系统,以满足餐饮企业的需求。
2.2 目标与挑战我们的目标是开发出一款功能齐全、易于使用且具备良好用户体验的订餐系统。
然而,实现这一目标并不容易,我们面临着以下几个挑战:2.2.1 技术挑战订餐系统需要涉及到前端开发、后端开发、数据库设计和安全性等多个方面的技术。
因此,我们需要充分利用所学知识并学习新技术来解决问题。
2.2.2 用户需求挑战餐饮行业的竞争激烈,用户对订餐系统的要求也越来越高。
我们需要深入了解用户需求,并根据其反馈进行系统的改进与优化。
3. 工作内容在实习期间,我主要参与了以下几个方面的工作:3.1 系统分析与设计在系统的初期阶段,我与团队成员一起进行了需求分析,并负责编写了详细的功能规格说明书。
我们充分考虑用户需求,设计了一个直观易用的界面,同时确保系统的可扩展性和安全性。
3.2 前端开发作为前端开发人员,我使用HTML、CSS和JavaScript等技术,实现了系统的用户界面。
我注重细节,通过优化布局和提高响应速度,提升了用户体验。
3.3 后端开发在后端开发方面,我主要使用Java语言和Spring框架。
我负责处理用户的请求,并与数据库进行交互。
为了提高系统的性能,我还进行了一系列的优化措施。
3.4 数据库设计为了满足系统的需求,我设计了一个合理的数据库结构,并使用MySQL进行实现。
我优化了数据库查询语句,提高了系统的查询性能。
4. 工作成果通过我和团队的努力,我们成功地开发出了一款符合需求的订餐系统。
该系统具备以下几个特点:4.1 用户友好的界面通过进行用户体验测试和不断改进设计,我们开发了一个直观、易于使用的界面。
课程项目报告课程项目任务书成绩评定教师:1 需求分析题目要求设计并编写一个中小餐馆点餐系统,要求有一个餐厅管理员和若干个服务员,并要加入管理员对菜单,餐桌以及服务员的管理,并能够查看菜品选择情况以及服务员每天服务顾客数目。
服务员要求能实现顾客点餐,加减菜品,创建菜品单以及结账功能。
加入在管理员和服务员登入系统的时候进行密码验证,以及对服务员和管理员修改密码的管理。
2 概要设计(1)数据结构:a)程序的服务员,菜单,餐桌,菜品单采用链表。
每一个链表的结点存储一个结构体信息,可以灵活插入,删除,遍历和修改。
b)管理员采用结构体。
因为只需要一个管理员,所以只定义一个管理员结构体gly,保存管理员的编号和密码。
(2)模块划分a)头文件ui.h:程序使用者界面。
包含17个void ui函数。
b)头文件cpd.h:创建,浏览,查询,删除,更新菜品单。
包含8个void cpxx函数和一个结构体定义。
c)头文件file.h:打开,创建,写入,读取,关闭文件。
包含6个void file函数。
d)头文件menu.h:程序基于ui的功能实现。
包含20个void menu函数。
e)头文件lianbiao.h:创建,插入,浏览,删除,查询链表。
包含21个链表实现函数。
f)主函数main.c:包含头文件,定义程序全局变量,实现程序的运行。
(3)程序总体框架mainmenuui lianbiao file cpd3 详细设计(1)链表实现(以服务员为例)://服务员结构struct stud_fwy{int num;//服务员编号char name[20];//服务员姓名int fwgknum;//服务顾客数目char mima[20];//密码struct stud_fwy *next;//链表指针};//建立服务员struct stud_fwy *jl_fwy(){struct stud_fwy *charu_fwy(struct stud_fwy *head, struct stud_fwy *p);int num;int size = sizeof(struct stud_fwy);char name[20], mima[20];printf("输入您的编号:");scanf("%d", &num);printf("输入您的姓名:");scanf("%s", name);printf("输入你的密码:");scanf("%s", mima);p_fwy = (struct stud_fwy *) malloc(size);p_fwy->num = num;p_fwy->fwgknum = 0;strcpy(p_fwy->name, name);strcpy(p_fwy->mima, mima);head_fwy = charu_fwy(head_fwy, p_fwy);fwydenum++;return head_fwy;}//插入服务员struct stud_fwy *charu_fwy(struct stud_fwy *head, struct stud_fwy *p) {struct stud_fwy *ptr, *ptr1, *ptr2;ptr2 = head;ptr = p;ptr1 = NULL;ptr1 = NULL;if (head == NULL){head = ptr;head->next = NULL;}else{while ((ptr->num>ptr2->num) && (ptr2->next != NULL)){ptr1 = ptr2;ptr2 = ptr2->next;}if (ptr->num <= ptr2->num){if (head == ptr2)head = ptr;elseptr1->next = ptr;ptr->next = ptr2;}else{ptr2->next = ptr;ptr->next = NULL;}}return head;}//删除服务员struct stud_fwy *shanchu_fwy(struct stud_fwy *head, int num) {struct stud_fwy *ptr1, *ptr2;while (head != NULL&&head->num == num){ptr2 = head;head = head->next;free(ptr2);}if (head == NULL)return NULL;ptr1 = head;ptr2 = head->next;while (ptr2 != NULL){if (ptr2->num == num){ptr1->next = ptr2->next;free(ptr2);}elseptr1 = ptr2;ptr2 = ptr1->next;}return head;}//遍历服务员void bianli_fwy(struct stud_fwy *head){struct stud_fwy *ptr;if (head == NULL){printf("\n没有服务员信息,请新建!\n");return;}printf("\n服务员信息:\n");printf("编号\t姓名\t服务员每天服务顾客数目\n");for (ptr = head; ptr != NULL; ptr = ptr->next)printf("%d\t%s\t%d \n", ptr->num, ptr->name, ptr->fwgknum);}//查询服务员void chaxun_fwy(struct stud_fwy *head, int num){struct stud_fwy *ptr;if (head == NULL){printf("\n没有服务员信息,请新建!\n");return;}for (ptr = head; ptr != NULL; ptr = ptr->next){if (ptr->num == num){printf("\n服务员信息:\n");printf("编号\t姓名\t服务员每天服务顾客数目\n");printf("%d\t%s\t%d \n", ptr->num, ptr->name,ptr->fwgknum);return;}}printf("\n没有编号为%d的服务员,请重试(按任意键返回)!\n", num);getchar();getchar();return;}//修改服务员信息struct stud_fwy *xiugai_fwy(struct stud_fwy *head, int num){struct stud_fwy *ptr;char name[20];if (head == NULL){printf("\n没有服务员信息,请新建!\n");return NULL;}for (ptr = head; ptr != NULL; ptr = ptr->next){if (ptr->num == num){printf("\n服务员信息:\n");printf("编号\t姓名\n");printf("%d\t%s \n", ptr->num, ptr->name);printf("请输入新的信息:\n");printf("输入您的编号:");scanf("%d", &num);printf("输入您的姓名:");scanf("%s", name);ptr->num = num;strcpy(ptr->name, name);bwc();return head_fwy;}}printf("\n没有编号为%d的服务员,请重试(按任意键返回)!\n", num);getchar();getchar();return 0;}(2)界面实现(部分)//主菜单void ui(){system("cls");printf("################欢迎使用###############\n");printf("主菜单:\n");printf(" 1.管理员登陆.\n");printf(" 2.服务员登陆.\n");printf(" 0.退出.\n");printf("#######################################\n");}//主菜单-管理员登陆界面void ui_glydljm(){system("cls");printf("################欢迎使用###############\n");printf("主菜单-管理员登陆:\n");}//主菜单-管理员void ui_gly(){system("cls");printf("################欢迎使用###############\n");printf("主菜单-管理员:\n");printf(" 1.系统用户信息.\n");printf(" 2.餐桌信息.\n");printf(" 3.菜单信息.\n");printf(" 4.点菜情况.\n");printf(" 5.统计分析.\n");printf(" 6.旧账单浏览.\n");printf(" 7.返回上一级.\n");printf(" 0.退出.\n");printf("#######################################\n");}//主菜单-管理员-系统用户信息void ui_gly_xtyhxx(){system("cls");printf("################欢迎使用###############\n");printf("主菜单-管理员-系统用户信息:\n");printf(" 1.服务员信息.\n");printf(" 2.修改管理员密码.\n");printf(" 3.返回上一级.\n");printf(" 0.退出.\n");printf("#######################################\n");}//主菜单-管理员-系统用户信息-服务员信息void ui_gly_xtyhxx_fwyxx(){system("cls");printf("################欢迎使用###############\n");printf("主菜单-管理员-系统用户信息-服务员信息:\n");printf(" 1.建立.\n");printf(" 2.删除.\n");printf(" 3.修改.\n");printf(" 4.查询.\n");printf(" 5.浏览.\n");printf(" 6.修改服务员密码.\n");printf(" 7.返回上一级.\n");printf(" 0.退出.\n");printf("#######################################\n");}(3)菜单实现(部分)//主菜单void menu(){void menu_gly();void menu_fwy();void menu_glydl();void menu_fwydl();int n,i;i = panduanfile();ui();printf("输入您的选择:");scanf("%d", &n);switch (n){case 1:system("cls");if (i == 1){printf("################欢迎使用###############\n");printf("您是第一次使用该系统,账号为1,请输入密码:");scanf("%s", gly1.mima);printf("程序退出,请重新开启!\n");bwc();getchar();getchar();exit(0);}ui_glydljm();menu_glydl();menu_gly();break;case 2:if (head_fwy == NULL){system("cls");printf("暂无服务员信息,请新建(按任意键返回)!\n");getchar();getchar();break;}ui_fwydljm();menu_fwydl();menu_fwy();break;case 0:exit(0);default:printf("\n您的输入有误,请重新输入!\n");printf("按任意键返回!\n");getchar();getchar();break;}}//主菜单-管理员登陆void menu_glydl(){int num, i = 0;char mima[20];while (i < 3){printf("输入管理员编号:");scanf("%d", &num);printf("输入管理员密码:");scanf("%s", mima);if (num == gly1.num){if (strcmp(gly1.mima, mima) == 0){fwynum = num;printf("登陆成功(按任意键继续)!\n");getchar();getchar();return;}else{system("cls");printf("密码错误,登陆失败,你还有%d次机会!\n", 2 - i);i++;}}else{system("cls");printf("编号错误,登陆失败,你还有%d次机会!\n", 2 - i);i++;}}printf("3次输入错误,程序结束!\n");getchar();getchar();exit(0);}//主菜单-管理员void menu_gly(){void menu_gly_xtyhxx();void menu_gly_czxx();void menu_gly_dcqk();void menu_gly_cdxx();void menu_gly_tjfx();void menu_gly_jzdll();int n;while (1){ui_gly();printf("输入您的选择:");scanf("%d", &n);switch (n){case 1:menu_gly_xtyhxx();break;case 2:menu_gly_czxx();break;case 3:menu_gly_cdxx();break;case 4:menu_gly_dcqk();break;case 5:menu_gly_tjfx();break;case 6:menu_gly_jzdll();break;case 7:return;case 0:exit(0);default:printf("\n您的输入有误,请重新输入!\n");printf("按任意键返回!\n");getchar();getchar();break;}}}(4)文件实现(部分)//建立文件void buildfile(){if ((fcz = fopen("cz.txt", "wb")) == NULL){printf("cz文件建立失败!\n");exit(0);}if ((fcd = fopen("cd.txt", "wb")) == NULL){printf("cd文件建立失败!\n");exit(0);}if ((ffwy = fopen("fwy.txt", "wb")) == NULL){ printf("fwy文件建立失败!\n");exit(0);}if ((fgly = fopen("gly.txt", "wb")) == NULL){ printf("gly文件建立失败!\n");exit(0);}if ((fcpd_x = fopen("cpd_x.txt", "wb")) == NULL){ printf("cpd_x文件建立失败!\n");exit(0);}if ((fqjbl = fopen("qjbl.txt", "wb")) == NULL){ printf("qjbl文件建立失败!\n");exit(0);}}//打开文件void openfile(){if ((fcz = fopen("cz.txt", "rb")) == NULL){ printf("cz文件打开失败!\n");exit(0);}if ((fcd = fopen("cd.txt", "rb")) == NULL){ printf("cd文件打开失败!\n");exit(0);}if ((ffwy = fopen("fwy.txt", "rb")) == NULL){ printf("fwy文件打开失败!\n");exit(0);}if ((fgly = fopen("gly.txt", "rb")) == NULL){ printf("gly文件打开失败!\n");exit(0);}if ((fcpd_x = fopen("cpd_x.txt", "rb")) == NULL){ printf("cpd_x文件打开失败!\n");exit(0);}if ((fqjbl = fopen("qjbl.txt", "rb")) == NULL){ printf("qjbl文件打开失败!\n");exit(0);}}//关闭文件void closefile(){if (fclose(fcz)){printf("cz文件关闭失败!\n");exit(0);}if (fclose(fcd)){printf("cd文件关闭失败!\n");exit(0);}if (fclose(ffwy)){printf("fwy文件关闭失败!\n");exit(0);}if (fclose(fgly)){printf("gly文件关闭失败!\n");exit(0);}if (fclose(fcpd_x)){printf("cpd_x文件关闭失败!\n");exit(0);}if (fclose(fqjbl)){printf("qjbl文件关闭失败!\n");exit(0);}}(5)主函数(框架)#include<stdio.h>#include<stdlib.h>#include<string.h>#include"ui.h"#include"lianbiao.h"#include"cpd.h"#include"file.h"#include"menu.h"int main(void){while (1){menu();}return 0;}4 调试分析(1)程序前期设计不足,导致编写代码时出现各种意想不到的困难,程序函数调用混乱,没有条理,导致程序后期修复,debug有很大的困难。