基于Visual C++的餐厅点菜管理系统
- 格式:pdf
- 大小:709.87 KB
- 文档页数:3
基于C#的酒店餐饮管理系统开发研究酒店餐饮管理系统是酒店管理系统中的一个重要组成部分,它能够帮助酒店管理者更好地管理餐饮业务,提高餐饮服务质量,提升酒店整体竞争力。
针对酒店餐饮管理系统的开发研究,使用C#作为开发语言,可以帮助提高系统的稳定性和可靠性,同时也可以更好地满足餐饮业务的特殊需求。
本文将对基于C#的酒店餐饮管理系统开发进行深入研究,并探讨其应用前景和优势。
基于C#的酒店餐饮管理系统主要包括以下功能模块:餐厅桌台管理、菜单管理、订单管理、库存管理、收银管理、报表统计等。
通过这些功能模块的协同作用,可以实现餐厅餐饮业务的全面管理和控制。
1. 餐厅桌台管理:包括桌台的预订、开台、换台、并台等功能,能够帮助餐厅提高桌台利用率,提升就餐体验。
2. 菜单管理:包括菜品的添加、修改、删除、定价等功能,能够根据市场需求灵活调整菜单,提供更多元化的餐饮选择。
3. 订单管理:包括点菜、下单、取消、结账等功能,能够有效管理客人点菜和结账流程,提高服务效率。
4. 库存管理:包括原料采购、入库、出库、库存盘点等功能,能够帮助餐厅控制成本,保障原料的新鲜和质量。
5. 收银管理:包括现金、刷卡、支付宝、微信支付等多种支付方式的管理,能够提供便捷的结账渠道,满足不同客人的支付需求。
6. 报表统计:包括营业报表、销售统计、菜品分析、客户消费分析等功能,能够帮助餐厅管理者了解经营状况,制定有效的经营策略。
基于C#的酒店餐饮管理系统通过以上功能模块的完善设计和实现,能够帮助餐厅更好地管理餐饮业务,提升服务质量和竞争力。
基于C#的酒店餐饮管理系统相比其他开发语言的系统具有以下几个显著优势:1. 稳定性高:C#是一种稳定性高的开发语言,能够保障系统的稳定性和可靠性,有效避免系统的崩溃和故障。
2. 开发效率高:C#具有丰富的类库和强大的集成开发环境,能够大大提高开发效率,减少开发成本和周期。
4. 兼容性强:C#可以在Windows平台上运行,能够兼容各种Windows操作系统,保障系统的兼容性和稳定性。
VB程序设计及数据库应用课程设计题目饭店菜式管理系统课程名称 VB程序设计及数据库应用课程设计目录1.选题的意义 (1)1.1 选该题目的原因 (1)1.2 完成此题目用到的数据结构和知识点 (1)2.系统功能简介 (2)2.1登录 (2)2.2菜式管理系统 (2)2.3 菜式浏览 (2)2.4点菜系统 (2)3. 概要设计 (2)3.1 各模块之间关系 (3)3.2 各模块流程图 (3)4.系统实现 (4)4.1 主界面 (4)4.2 登录、注册、修改密码 (5)4.3 菜式管理界面 (8)4.4 菜式浏览界面 (11)4.5 点菜界面 (16)5.总结 (17)5.1 疑难点 (17)5.2 体会 (18)参考文献: (18)1.选题的意义1.1 选该题目的原因通过对饭店菜式管理系统的程序设计,了解软件开发基本步骤,诸如问题分析、系统设计、程序编码、测试等基本方法和技能。
本程序可实现顾客点菜,按菜名、价格、菜系浏览菜式功能,同时饭店内部人员可以通过该程序对菜式添加、删除、修改功能。
1.2 完成此题目用到的数据结构和知识点数据结构:通过可视化数据管理器可以进行数据库操作。
建立数据库:启动可视化数据管理器,创建数据库,创建数据库表,然后编辑数据库。
知识点:Access技术:可以开发关系数据库,数据库能汇集各种信息以供查询、存储和检索。
数据库(Database)是由一些有意义和有关系的数据(data)所组合而成。
一个数据库中,包含了许多条记录(Record),而每条记录是由多个字段(Field)所组成,不同的字段存放这不同的数据。
所以数据库的严格定义是一组相关记录的集合,而字段则是最基本的数据项,也是数据库中最小的单位。
在计算机中用来帮我们管理数据库的系统,我们称之为数据库管理管理系统(Database Management System DBMS)。
数据库管理系统是架构在一个或多个数据库之上,并针对数据库中的数据进行管理运用。
摘要在深入研究中小餐饮企业工作流程的基础上,分析制约餐饮企业工作效率的各种因素,发现影响效率的主要因素是普遍使用手工登记菜谱的现象,本系统运用计算机系统来实现餐饮企业工作流的信息化管理,采用面向对象的开发方法以及C#语言,依靠Visual studio2012作为开发工具,使用SQL Server 2008网络数据库存储数据。
实现了客户点餐、客户订餐、收银管理、用户管理四大功能,解决餐饮企业中客户点餐速度慢、服务员登记不清晰、厨师配餐漏配、菜谱更新不及时且不直观、会员管理混乱的现象。
关键词:餐饮点餐;Visual studio;SQL serve11系统简介 (1)1。
1编写目的 (1)1.2编写背景 (1)1。
3任务概述 (1)2需求分析 (2)2.1需求调查 (2)2.1。
1.餐馆的基本情况 (2)2。
1.2用户对系统的要求 (2)2.2数据流程图 (4)2.2。
1系统总体流程图 (4)2。
2。
2订餐业务流程图 (4)2.2.3功能模块图 (6)2。
3数据字典 (6)2.3。
1数据项 (6)2.3.2数据结构 (7)2。
3。
3数据流 (8)2。
3。
4数据存储 (8)2.3。
5处理过程 (8)3 概念结构设计 (10)3.1实体E-R图 (10)13。
2总体E—R图 (12)4逻辑结构设计 (13)4.1实体所对应的关系模式 (13)4。
2数据库表 (13)5物理结构设计 (20)5.1关系模式存取方法选择 (20)5。
2确定数据库的存储结构 (20)5。
2.1确定数据的存放位置 (20)5.2。
2数据库的系统配置 (21)6。
系统主要查询功能及SQL语句 (22)6。
1主要查询功能 (22)6。
2 SQL语句 (23)7系统实现 (29)7。
1系统的功能模块图 (29)7.2部分程序代码 (29)7。
3系统运行截图 (35)8设计小结 (41)8。
1心得与体会 (41)参考文献 (42)11系统简介1.1编写目的本文档是餐厅点菜系统设计文档的组成部分,编写此文档的目的是:明确此系统的需求和要具体实现什么功能,用来指导后期的数据库脚本的开发。
饭店点菜系统一、开发简介(一)背景本学期系统学习了VB程序设计课程,按照惯例,在学期结束时进行VB程序设计课程软件的开发,也就是本次课程设计。
(二)课题名称这次课程设计的课题为饭店点菜系统(三)开发工具及开发环境开发工具:Microsoft Visual Basic 6.0开发环境:Windows 20003 Server二、开发流程其中软件设计部分采用的流程:三、需求分析(1).登录打开饭店菜式管理系统程序,进入主界面。
通过输入用户名和密码登录到菜品式管理界面两个按钮可以分别进入菜式管理系统和退出系统。
(2).菜式管理系统通过输入用户名和密码进入到了菜式管理界面,点击菜式管理菜单,对菜式进行添加和删除,以及退出程序。
三个按钮可以分别进入到点菜系统、菜式浏览系统以及返回主界面。
(3).点菜系统通过点击菜式管理系统的点菜按钮进入到点菜系统。
此界面有两个列表框,分别放饭店里所有菜式以及已点的菜,再通过点菜按钮将饭店菜式列表框里的菜点到已点列表框里,通过退菜按钮对已点列表框里的菜进行删除。
在点菜和退菜的同时还对菜式价格进行计算。
点菜完成后进行落单,点击返回管理界面按钮返回管理系统界面。
(4).菜式管理系统通过点击菜式管理系统的菜式浏览按钮进入到菜式浏览系统。
通过点击按菜名、价格和菜系浏览菜单,对菜式分别进行浏览。
点击返回管理界面按钮返回管理里系统。
四、软件设计(一)解决方案和软件特色解决方案:由于本人才刚接触VB,所学的知识还比较浅,所以就用比较简单的语句来完整本次设计。
软件特色:本软件具有操作简单方便,能给服务员和顾客朋友们提供很大的便利,这是本系统的一大特色!(二)具体设计下面我就从软件的使用流程来具体介绍软件的功能和实现原理:(1)各模块之间的关系以及代码和图列:Public i As IntegerPublic sum As SingleType caidan cm As Stringcx As Stringjg As Integeryl As Stringzk As SingleEnd TypePublic s() As caidanFunction chazhao(ByVal n As String) As IntegerDim j As IntegerFor j = 1 To iIf n = s(j).cm Then chazhao = jIf n = s(j).cx Then chazhao = jIf n = Str(s(j).jg) Then chazhao = jIf n = s(j).yl Then chazhao = jIf n = Str(s(j).zk) Then chazhao = jNext jEnd Function1.酒店菜单登陆系统:附本窗体代码:Private Sub Command1_Click()Dim mes%If Text1.Text = "jane" And Text2.Text = "123456" ThenForm1.HideForm2.ShowElsemes = MsgBox("用户名或密码错误,请重新输入!") Text1.Text = "" Text2.Text = ""End IfEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Text2.PasswordChar = "*"End Sub2.菜式管理系统:Private Sub mnufileadd_Click()ReDim Preserve s(1 To (i + 1)) As caidani = i + 1s(i).cm = InputBox("请输入菜名", "新增")s(i).cx = InputBox("请输入菜系", "新增")s(i).jg = InputBox("请输入价格", "新增")s(i).yl = InputBox("请输入原料", "新增")s(i).zk = InputBox("请输入折扣", "新增") End SubPrivate Sub mnufiledel_Click()Dim j As IntegerDim k As IntegerDim n As Stringn = InputBox("请输入查找的关键字", "查找")j = chazhao(n)For k = j To i - 1s(k) = s(k + 1)Next ki = i – 1End SubPrivate Sub mnufileqiute_Click()EndEnd SubPublic Function chazhao(ByVal n As String) As IntegerDim j As IntegerFor j = 1 To iIf n = s(j).cm Then chazhao = jIf n = s(j).cx Then chazhao = jIf n = Str(s(j).jg) Then chazhao = jIf n = s(j).yl Then chazhao = jIf n = Str(s(j).zk) Then chazhao = jNext jEnd Function3.点菜系统:主要由a 菜品类别选择b显示所选菜品c显示菜品的样图三部分实现,用到了select case语句对项目进行选择a点comb1进行选则菜品类别,包括热菜,凉菜,点心,主食,饮品、Comb1中自动加载菜品的几大种类,代码为:Private Sub Form_Load()Combo1.AddItem "凉菜"Combo1.AddItem "热菜"Combo1.AddItem "饮品"Combo1.AddItem "点心"Combo1.AddItem "主食"End Subb单击comb1中的不同的项,comb2加载相应的菜品内容单击凉菜,comb2清除原有内容,显示凉菜种类及价格Private Sub Combo1_Click()Select Case Combo1.TextCase "凉菜" ‘单击“凉菜”Combo2.ClearCombo2.AddItem "拌黑白木耳 15"‘comb2添加 "拌黑白木耳 15Combo2.AddItem "酱汁牛肚 20"‘comb2添加项”酱汁牛肚 20”Combo2.AddItem "凉拌海带丝 15"‘comb2添加项"凉拌海带丝 15"Combo2.AddItem "凉拌海蜇皮 10"‘comb2添加项凉拌海蜇皮 10Combo2.AddItem "凉拌胡萝卜 10" ‘comb2添加项凉拌胡萝卜 10 、Combo2.AddItem "麻辣黄瓜 10" ‘comb2添加项麻辣黄瓜 10Combo2.AddItem "什锦大拌菜 20" ‘comb2添加项什锦大拌菜 20Combo2.AddItem "香鲁鸡爪 25" ‘comb2添加项香鲁鸡爪 25单击热菜,comb2中加在相应热菜的名称及价格Case "热菜"Combo2.ClearCombo2.AddItem "炒茄丝 15"Combo2.AddItem "海陆包 15"Combo2.AddItem "荷叶蒸粉肉 20"Combo2.AddItem "糖醋排骨 30"Combo2.AddItem "虾子面筋 25"Combo2.AddItem "杏仁炖肉 25"Combo2.AddItem "云蒸西芹炒肉片 25"Combo2.AddItem "炸鸡肉串 20"Combo2.AddItem "鲍汁扣鹅掌 30"Combo2.AddItem "叉烧 25"Combo2.AddItem "二头鲍鱼 30"Combo2.AddItem "佛手咸水鱼 35"Combo2.AddItem "海虾咸水饺 20"Combo2.AddItem "肉酱蒸河粉 20"单击”饮品”,comb2中加在相应饮品的名称及价格Case "饮品"Combo2.ClearCombo2.AddItem "山城啤酒 3"Combo2.AddItem "泸州老窖 60"Combo2.AddItem "橙汁 8"Combo2.AddItem "葡萄酒 50"Combo2.AddItem "花生奶 15"Combo2.AddItem "芒果饮料 15"Combo2.AddItem "花样饮乳 20"单击主食,comb2中加载主食的名称及价格Case "主食"Combo2.ClearCombo2.AddItem "米饭 5"Combo2.AddItem "香菜饺 10"Combo2.AddItem "肉混沌 15"单击点心,comb2中加载主食及其价格Case "点心"Combo2.ClearCombo2.AddItem "草莓点心 20"Combo2.AddItem "脆锅饼 15"Combo2.AddItem "凉粉卷 15"Combo2.AddItem "糖果点心 15"Combo2.AddItem "银耳果羹 20"Combo2.AddItem "早茶 20"End Select ‘结束筛选End Suc在image1中显示所选菜品的图片用if end if语句, 代码及解释Private Sub Combo2_Click() ‘单击comb2中的项Dim str As Stringstr = Combo2.List(Combo2.ListIndex)List1.AddItem Combo2.TextIf Combo2.Text = "米饭 5" ThenImage1.Picture = LoadPicture(App.Path & "\图片\主食\米饭.jpg")‘在其同源文件夹中加载图片名为米饭,属性为jpg的图片,到image1中End IfIf Combo2.Text = "香菜饺 10" ThenImage1.Picture = LoadPicture(App.Path & "\图片\主食\香菜饺.jpg")‘在其同源文件夹中加载图片名为香菜饺,属性为jpg的图片,到image1中 End IfIf Combo2.Text = "肉混沌 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\主食\肉混沌.jpg")‘在其同源文件夹中加载图片名为肉混沌,属性为jpg的图片,到image1 End IfIf Combo2.Text = "草莓点心 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\点心\草莓点心.jpg")End IfIf Combo2.Text = "脆锅饼 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\点心\脆锅饼.jpg")End IfIf Combo2.Text = "凉粉卷 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\点心\凉粉卷.jpg")If Combo2.Text = "银耳果羹 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\点心\银耳果羹.jpg")End IfIf Combo2.Text = "糖果点心 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\点心\糖果点心.jpg")End IfIf Combo2.Text = "早茶 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\点心\早茶.jpg")End IfIf Combo2.Text = "拌黑白木耳 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\拌黑白木耳.jpg")End IfIf Combo2.Text = "酱汁牛肚 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\酱汁牛肚.jpg")End IfIf Combo2.Text = "凉拌海带丝 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\凉拌海带丝.jpg")End IfIf Combo2.Text = "凉拌海蜇皮 10" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\凉拌海蜇皮.jpg")End IfIf Combo2.Text = "凉拌胡萝卜 10" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\凉拌胡萝卜.jpg")End IfIf Combo2.Text = "麻辣黄瓜 10" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\麻辣黄瓜.jpg") End If If Combo2.Text = "什锦大拌菜 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\什锦大拌菜.jpg")End IfIf Combo2.Text = "酱汁牛肚 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\酱汁牛肚.jpg")End IfIf Combo2.Text = "香鲁鸡爪 25" ThenImage1.Picture = LoadPicture(App.Path & "\图片\凉菜\香鲁鸡爪.jpg")End IfIf Combo2.Text = "炒茄丝 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\炒茄丝.jpg")End IfIf Combo2.Text = "海陆包 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\海陆包.jpg")End IfIf Combo2.Text = "荷叶蒸粉肉 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\荷叶蒸粉肉.jpg")If Combo2.Text = "糖醋排骨 30" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\糖醋排骨.jpg")End IfIf Combo2.Text = "虾子面筋 25" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\虾子面筋.jpg")End IfIf Combo2.Text = "杏仁炖肉 25" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\杏仁炖肉.jpg")End IfIf Combo2.Text = "云蒸西芹炒肉片 25" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\云蒸西芹炒肉片.jpg") End IfIf Combo2.Text = "炸鸡肉串 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\炸鸡肉串.jpg")End IfIf Combo2.Text = "鲍汁扣鹅掌 30" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\鲍汁扣鹅掌.jpg") End IfIf Combo2.Text = "叉烧 25" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\叉烧.jpg")End IfIf Combo2.Text = "二头鲍鱼 30" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\二头鲍鱼.jpg")End IfIf Combo2.Text = "佛手咸水鱼 35" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\佛手咸水鱼.jpg") End IfIf Combo2.Text = "海虾咸水饺 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\海虾咸水饺.jpg") End IfIf Combo2.Text = "肉酱蒸河粉 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\热菜\肉酱蒸河粉.jpg") End IfIf Combo2.Text = "山城啤酒 3" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\山城啤酒.jpg")End IfIf Combo2.Text = "泸州老窖 60" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\泸州老窖.jpg")End IfIf Combo2.Text = "橙汁 8" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\橙汁.jpg")End IfIf Combo2.Text = "葡萄酒 50" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\葡萄酒.jpg") End IfIf Combo2.Text = "花样饮乳 20" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\花样饮乳.jpg") End IfIf Combo2.Text = "芒果饮料 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\芒果饮料.jpg") End IfIf Combo2.Text = "花生奶 15" ThenImage1.Picture = LoadPicture(App.Path & "\图片\饮品\花生奶.jpg") End Ifd计价模块在label 5中计算消费金额其代码为Sum = Sum + Val(Right(List1.Text, 2))Label5 = "消费金额:" & Sum & "元"End Sube删除不需要的菜品单击command1事件触发代码为rivate Sub Command1_Click()If List1.ListIndex <> -1 Then‘如果list1中选中的项目不为空X = List1.ListIndexList1.RemoveItem X ‘删除X项ElseEnd If4.菜式浏览器:Private Sub cm_Click()For j = 1 To i - 1For k = i To j + 1 Step -1If s(k).cm < s(k - 1).cm Thenm = s(k).cm: s(k).cm = s(k - 1).cm: s(k - 1).cm = mm = s(k).cx: s(k).cx = s(k - 1).cx: s(k - 1).cx = mm = s(k).jg: s(k).jg = s(k - 1).jg: s(k - 1).jg = mm = s(k).yl: s(k).yl = s(k - 1).yl: s(k - 1).yl = mm = s(k).zk: s(k).zk = s(k - 1).zk: s(k - 1).zk = mEnd IfNext kNext jClsPrint Chr(13), Chr(13), Chr(13), Chr(13), Chr(13) For j = 1 To iPrint s(j).cm, s(j).cx, s(j).jg, s(j).yl, s(j).zkNext jEnd SubPrivate Sub Command1_Click()Unload Form4Form3.ShowEnd SubPrivate Sub cx_Click()For j = 1 To i - 1For k = i To j + 1 Step -1 If s(k).cx < s(k - 1).cx Then m = s(k).cm: s(k).cm = s(k - 1).cm: s(k - 1).cm = mm = s(k).cx: s(k).cx = s(k - 1).cx: s(k - 1).cx = mm = s(k).jg: s(k).jg = s(k - 1).jg: s(k - 1).jg = mm = s(k).yl: s(k).yl = s(k - 1).yl: s(k - 1).yl = mm = s(k).zk: s(k).zk = s(k - 1).zk: s(k - 1).zk = mEnd IfNext kNext jClsPrint Chr(13), Chr(13), Chr(13), Chr(13), Chr(13)For j = 1 To iPrint s(j).cm, s(j).cx, s(j).jg, s(j).yl, s(j).zkNext jEnd SubPrivate Sub Form_Load()ShowPrintPrint Chr(13), Chr(13), Chr(13), Chr(13), Chr(13)For j = 1 To iPrint s(j).cm, s(j).cx, s(j).jg, s(j).yl, s(j).zkNext jEnd SubPrivate Sub jg_Click()For j = 1 To i - 1For k = i To j + 1 Step -1If s(k).jg < s(k - 1).jg Thenm = s(k).cm: s(k).cm = s(k - 1).cm: s(k - 1).cm = mm = s(k).cx: s(k).cx = s(k - 1).cx: s(k - 1).cx = mm = s(k).jg: s(k).jg = s(k - 1).jg: s(k - 1).jg = mm = s(k).yl: s(k).yl = s(k - 1).yl: s(k - 1).yl = mm = s(k).zk: s(k).zk = s(k - 1).zk: s(k - 1).zk = mEnd IfNext kNext jClsPrint Chr(13), Chr(13), Chr(13), Chr(13), Chr(13)For j = 1 To iPrint s(j).cm, s(j).cx, s(j).jg, s(j).yl, s(j).zkNext jEnd Sub5.留言板系统:Private Sub Command1_Click()If Text1.Text = "" ThenMsgBox "留言不能为空!", vbOKOnly + vbExclamation, "注意" '留言为空时,弹出对话框,提醒顾客留言Text1.SetFocusEnd IfIf Text2.Text = "" ThenMsgBox "签名不能为空!", vbOKOnly + vbExclamation, "注意" '签名为空时,弹出对话框,提醒顾客签名Text2.SetFocusEnd IfIf Text1.Text <> "" And Text2.Text <> "" ThenList1.AddItem Text2.Text & "说:" & Text1.Text & " " & Now Open App.Path & "\data\留言.dat" For Append As #1Write #1, Text2.Text & "说:" & Text1.Text & " " & Now '把留言内容保存到文件夹内Close #1Text1.Text = "" '清空留言和Text2.Text = ""End IfEnd SubPrivate Sub Command2_Click()Form2.Show '关闭留言板界面加载主界面Form5.Hide End SubPrivate Sub Command3_Click()End '退出程序End SubPrivate Sub Command4_Click()Open App.Path & "\data\留言.dat" For Output As #1 '点击清楚时,保存在文件中的所有留言被清空Write #1, ""Close #1Dim a As StringList1.Clear End SubPrivate Sub Form_Load()Open App.Path & "\data\留言.dat" For Input As #1 '当留言板窗体被载入,系统读取文件夹中所有留言,并将其显示在留言板中While Not EOF(1)Line Input #1, aList1.AddItem aWendClose #1label1.Left = Form1.ScaleWidthEnd SubPrivate Sub Timer1_Timer()If label1.Left + label1.Width > 0 Then '滚动字幕label1.Move label1.Left – 50Elselabel1.Left = Form1.ScaleWidthEnd IfEnd SubPrivate Sub Timer3_Timer()Label2.Caption = "小老鼠报时: " & Now '显示当前的日期和时间End6抽奖系统:Dim i As Integer, j As Integer, k As Integer, m As IntegerPrivate Sub Form_Load()Timer1.Interval = 100 '设置时间间隔为100毫秒Timer1.Enabled = False 'timer1事件不允许执行End SubPrivate Sub Timer1_Timer()Label5.Caption = Round(Rnd() * 9, 0)i = Label5.Caption 'i 等于Label5上产生的0-9间的随机数 Label6.Caption = Round(Rnd() * 9, 0)j = Label6.Caption 'j 等于Label6上产生的0-9间的随机数 Label7.Caption = Round(Rnd() * 9, 0)k = Label7.Caption 'k 等于Label7上产生的0-9间的随机数 Label8.Caption = Round(Rnd() * 9, 0)m = Label8.Caption 'm 等于Label8上产生的0-9间的随机数End SubPrivate Sub Command1_Click() 'command1单击事件Timer1.Enabled = True 'timer1事件允许执行Command1.Enabled = False 'command1事件不允许执行 End Sub Private Sub Command2_Click() 'command2单击事件Timer1.Enabled = False 'timer1事件不允许执行If i = j And j = k And k = m Then '进入if then循环Label10.Caption = "恭喜您获得特等奖!!"Image1.Picture = LoadPicture(App.Path & "\菜谱\奖品\特等奖.jpg") 'Image1加载特等奖图片ElseIf i = j And j = k Then '当前三个相同时Label10.Caption = "恭喜您获得一等奖!!"Image1.Picture = LoadPicture(App.Path & "\菜谱\奖品\一等奖.jpg")'Image1加载一等奖图片ElseIf i <> j And j = k And k <> m Then '当只有中间二个相同时Label10.Caption = "恭喜您获得二等奖!!"Image1.Picture = LoadPicture(App.Path & "\菜谱\奖品\二等奖.jpg") 'Image1加载二等奖图片ElseIf i <> k And j <> k And k = m Then '当最后二个相同时 Label10.Caption = "恭喜您获得三等奖!!"Image1.Picture = LoadPicture(App.Path & "\菜谱\奖品\三等奖.jpg") 'Image1加载三等奖图片 ElseLabel10.Caption = "谢谢回顾"Image1.Picture = LoadPicture(App.Path & "\菜谱\奖品\谢谢.gif") 'Image1加载谢谢图片End IfCommand2.Enabled = False'command2不允许执行 End SubPrivate Sub Command3_Click() 'command3单击事件Form4.Hide 'form4隐藏Form2.Show 'form2显示End Sub五、设计心得经过这几天的VB课程设计,我解决实际问题的能力提高了并学会了自主学习,自我提高和自我完善,用已学过VB知识及的自学数据库技术编写程序。
餐馆管理系统设计餐馆管理系统设计随着营业规模的扩展,许多中小型餐饮娱乐企业单位都面临着如何高效管理整个企业经营业务的问题,而目前最为广泛的解决方案就是MIS系统的应用。
本系统就是这样一个MIS系统,其中包含了服务行业的主要经营项目的信息管理,它使原先人工的管理统计工作统一由MIS系统进行规范化管理,提供了高效的管理手段。
经过分析,我要使用Microsoft公司的Visual Basic开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一个能方便又简洁操纵数据库的智能对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
本文首先介绍了管理信息系统的发展现状和C/S模式的多层应用程序体系结构,以及本系统所用开发环境的技术介绍。
接着,文章介绍了本收银管理系统的整体设计方案,并且详细讨论了各功能模块的设计和实现,最后分析了系统调试阶段的工作。
目录目录..............................................................III 1 绪言1.1 MIS系统简介 (1)1.2 本课题研究的意义 (2)2 发展研究现状及设计目标2.1 餐饮娱乐管理信息系统综述 (3)2.1.1 餐饮娱乐管理信息系统发展历史 (3)2.1.2 餐饮娱乐管理信息系统的作用 (3)2.1.3饭店管理信息系统的构成 (4)2.2 MIS系统的特点 (5)2.3 MIS系统的开发 (5)2.4 系统研究设计的目标 (6)3 开发环境选择与简介3.1 编程环境的选择 (7)3.1.1 Visual Basic的开发环境介绍 (7)3.1.2 Visual Basic的特点和功能 (8)3.1.3 Visual Basic的基本操作及界面介绍 (10)3.2 数据库系统的选择 (11)3.2.1 Access的发展现状 (11)3.2.2 什么是“数据库”? (12)3.2.3 什么是数据库管理系统 (12)3.2.4 Microsoft Access 2000提供了各式全新的資料库服务 (12) 3.2.5 Access2000基本操作 (13)3.3 开发方法的确定 (18)3.4 组织基础 (18)3.5 技术基础 (18)4 系统可行性研究与需求分析4.1 可行性 (19)4.1.1 经济可行性分析 (19)4.1.2 技术可行性分析 (19)4.1.3 社会可行性分析 (19)4.2 需求分析 (19)5 系统结构与模型设计5.1 系统总体结构设计 (20)5.1.1 系统功能分析 (20)5.1.2 系统功能模块设计 (20)5.2 数据库的设计 (21)5.2.1 数据库需求分析 (21)5.2.2 数据库概念结构设计 (22)5.2.3 数据库系统的体系结构 (23)5.2.4 数据库结构的实现 (28)6 系统实现6.1 数据库的实现 (29)6.2 系统界面及各功能模块的实现 (29)6.2.1 登录界面的实现 (29)6.2.2 软件的各个功能模块介绍 (32)6.2.3 模块处理过程 (42)7 系统测试与分析7.1 测试环境 (44)7.2 测试过程 (44)7.3 测试策略 (45)7.4 测试用例 (45)7.5 性能分析 (45)8 总结与展望 (46)1 绪言本章阐述了餐饮娱乐行业的研究背景、现状以及发展方向,明确指出了餐饮娱乐行业在中国所面临的问题。
c语言餐馆点菜课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言基础语法,包括变量声明、数据类型、运算符和表达式。
2. 学生能运用结构体数组创建并管理餐馆菜单项目。
3. 学生能够使用循环和条件判断实现点菜过程中的用户交互。
技能目标:1. 学生能够设计并编写C程序,模拟餐馆点菜系统的基本功能。
2. 学生能够通过编程实践,提升问题分析能力,掌握基本的算法设计方法。
3. 学生能够运用所学知识解决实际问题,培养计算思维和编程解决问题的能力。
情感态度价值观目标:1. 学生在课程中培养对编程的兴趣,增强学习信息技术的自信心。
2. 学生通过团队协作完成项目,学会分享和交流,培养合作精神。
3. 学生通过解决实际场景问题,认识到编程在现实生活中的应用价值,增强社会责任感。
课程性质:本课程设计以实践性为主,结合理论教学,注重培养学生的动手能力和创新能力。
学生特点:考虑到学生为初中或高一阶段,已有一定的逻辑思维能力和基础数学知识,对新鲜事物充满好奇。
教学要求:在教学过程中,需注重理论与实践相结合,关注学生个体差异,鼓励学生主动探索,充分调动学生的积极性与创造性。
通过具体的学习成果分解,使学生在完成课程设计的同时,达到预设的知识和技能目标,并促进情感态度价值观的全面发展。
二、教学内容1. C语言基础语法:- 变量声明、数据类型(整型、浮点型、字符型)- 运算符和表达式(算术、关系、逻辑运算符)- 控制语句(if、for、while循环)2. 结构体与数组:- 结构体定义和使用- 结构体数组创建和初始化- 结构体作为函数参数3. 函数与模块化:- 函数定义、声明和调用- 作用域规则- 模块化编程思想4. 餐馆点菜系统设计:- 系统需求分析- 功能模块划分(菜单展示、点菜、计算总价)- 用户交互设计(输入输出控制)5. 编程实践:- 设计并编写菜单结构体- 实现菜单展示功能- 编写点菜和计算总价模块- 整合各模块,完成点菜系统教材关联章节:- C语言基础语法:第三章- 结构体与数组:第四章- 函数与模块化:第五章- 餐馆点菜系统设计:综合实践章节教学内容安排和进度:- 第一周:C语言基础语法学习,完成基础编程练习- 第二周:结构体与数组学习,设计菜单结构体- 第三周:函数与模块化学习,编写各功能模块- 第四周:整合系统,调试优化,完成点菜系统设计教学内容旨在确保学生掌握C语言基础知识,学会运用结构体和函数进行模块化编程,并通过实际项目设计,将所学知识应用于实际问题解决中,提高学生的编程能力和实践能力。
餐饮点菜系统的设计与实现摘要餐饮点菜系统是一款专业的餐饮管理软件,它集收费系统,员工管理系统,菜品管理系统等强大功能于一身,餐饮管理系统总体上有三大模块:(1)登录模块 ,主要是处理登录、退出、数据库备份还原及导出excel;(2)顾客管理模块,主要是对顾客开单、加菜、退菜、结账、外卖、预定餐桌等业务;(3)后台管理模块,主要包括顾客会员管理、操作员管理、菜品管理、财务统计等业务。
本系统是我跟舍友许朋共同完成的,我在本系统中负责顾客管理模块和登录部分模块。
主要实现了登录成功的操作员可以对顾客点菜的各种操作,如开单加菜结账外卖预定等业务。
该系统的使用Java开发,后台数据库为SQL Server 2005, 采用JDBC与数据库连接,使Java代码可以对数据库的增删改查中,是应用程序的各个窗体都能够共享对表的操作,无需重复编码,使程序更加易于维护,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。
关键字:餐饮,管理系统,点菜,外卖ICatering to order the design and realization of the systemABSTRACTPurple Butterfly Restaurant Management System is a professional catering management software, which combines the powerful features of the charge system, employee management system, dishes, etc. in a system interface is simple and beautiful, intuitive and simple to operate, without special training can be used normally. Can be widely used in hotel and catering management, hotel food and beverage management, and other occasions. Purple butterflies food and beverage management system is to improve the level of catering business, you eliminate regulatory loopholes, increase the effectiveness of a powerful weapon.Overall food and beverage management system has three modules: (1) login module to service the logon exit, database backup and restore and export excel;(2) customer management module, the main customer billing, food to eat, retreat before checkout. The take-away and booked a table and other business;(3) Admin module, including the customer membership management, operator management, dishes, management, financial statistics and other business.The system using Java development, back-end database for SQL Server 2005 using JDBC database connection, so that Java code can change the database additions and deletions to check, is the application form are able to share the operating table, no need to repeat coding , making the program easier to maintain, and successfully applied to the object-oriented programming ideas in the design of the database application.Keywords: catering, management system, the SQL Server 2005 database, the Java development languageII目录ABSTRACT (II)目录................................................................................................................ I II 1 绪论.. (1)1.1 课题研究的背景和意义 (1)1.3 本论文研究的内容 (2)1.4本文组织结构 (2)2 系统工具 (3)2.1 项目名称 (3)2.2 开发环境 (3)3 系统分析与总体设计 (4)3.1 需求分析 (4)3.1.1 名词解释 (4)3.1.2 详细模块功能分析 (5)3.2 总体设计 (6)3.2.1 功能模块分类及设计流程 (6)3.2.2 系统流程图 (7)3.2.3 数据库设计 (9)4 详细设计 (10)4.1 登录窗体及主窗体的设计 (10)4.1.1 登录窗体的设计 (10)4.1.2 主界面的设计 (11)4.2 顾客管理模块的设计 (13)4.2.1 顾客开单管理模块的设计 (13)4.2.2 顾客增加消费模块的设计 (15)4.3 顾客结账管理模块的设计 (16)4.4外卖业务管理对话框的设计 (18)4.5 宴席预定对话框的设计 (19)4.5.1宴席预定对话框的设计 (19)4.5.2添加顾客预约对话框的设计 (20)4.5.3修改顾客预约对话框的设计 (21)4.6 本系统其它模块及业务 (21)5 结论 (22)III5.1 总结 (22)5.2 系统的不足之处 (22)致谢 (22)参考文献 (23)IV1 绪论1.1 课题研究的背景和意义近十年来,随着社会科技,文化和经济的发展,特别是计算机网络技术和通信技术的大发展,随着人类社会从工业社会向信息社会过渡的趋势越来越明显,Internet几乎走进了每个人的生活,成为集资料搜索、娱乐、交流联络人脉、学习、管理的一个平台。
基于 C/S 结构的校园食堂智能点餐系统的研究高应波【摘要】高校食堂是各学校不可或缺的一个组成部分,是学生们学习和生活的重要保证。
随着我国各高校规模的不断扩大,高校在校生人数动辄数以万计,最少的也有几千人,这给学校的食堂管理工作带来了巨大的挑战。
作为高校食堂的管理者,要解决每天上万人同时就餐的问题,就必须借助信息化工具,通过信息化管理手段来提升食堂的管理和工作效率,本文主要根据我国各高校的实际情况,运用信息化的技术手段,开发研究基于C/S结构的校园食堂点餐系统,以期为校园食堂的管理工作的高效开展做出有益探索。
【期刊名称】《湖北科技学院学报》【年(卷),期】2016(036)004【总页数】3页(P150-152)【关键词】C/S结构;智能点餐系统;信息化食堂【作者】高应波【作者单位】贵州理工学院信息网络中心,贵州贵阳 550003【正文语种】中文【中图分类】G647目前,我国高校食堂采用的点餐方式多以手工点餐和专用POS点餐机两种形式。
大部分食堂还是采用专用POS机点餐的形式,学生在食堂某个窗口点餐,服务人员根据学生的点餐情况合计费用,并在POS机上按下该学生所花费用,学生出示校园卡刷卡消费。
整个业务流程均由手工操作完成。
这种点餐方式存在许多问题:一是浪费时间,工作效率低,浪费人力成本,同时因人多或工作人员疏忽导致算错价格的事情时有发生;二是手工点餐因经手人多,易造成误操作,影响服务质量。
因此,为降低成本,提高服务质量,引入智能点餐系统将成为今后高校食堂管理的一个重要发展方向。
该系统的结构主要分为两个部分:服务器部分和客户端部分。
客户端的功能是点餐和合计费用两部分。
点餐功能包括:查阅菜谱、选择菜品、确认点餐、后续加菜等操作;结账功能包括:查阅消费清单、结账付款等操作;通过提交按钮向服务器端提交点菜清单。
服务器端用于查阅已点菜品,以按顺序烹饪菜品。
由于厨房的厨师有多位,所以厨师烹饪菜品时须标记“正在烹饪”,以知会别的厨师。
C语⾔实现餐饮点餐管理系统本⽂实例为⼤家分享了C语⾔实现餐饮点餐管理系统的具体代码,供⼤家参考,具体内容如下具体代码如下/*项⽬名称:南航餐饮管理系统组员:梁⽂新,刘青林,刘艺,施瑞⽂(组长)*///当注册⽤户名为:root,密码为:root的账号时,系统默认为初始管理员//头⽂件#include<stdio.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<windows.h>#include<string.h>//宏定义区#define M sizeof(struct User)//⽤户表的⼤⼩#define N sizeof(struct stapleFood)//主⾷表⼤⼩#define P sizeof(struct non_stapleFood)//副⾷表⼤⼩#define Q sizeof(struct Drink_beverage) //饮品表⼤⼩#define X sizeof(struct Table)//餐桌表⼤⼩#define Y sizeof(struct Form)//订单表⼤⼩//结构体struct User //⽤户表{char userName[10];//⽤户名char passWord[18];//密码int isVIP;//会员标记int isAdministrator;//管理员标记float money;//余额struct User *next;//指针域};typedef struct User user;typedef user* pUser;struct stapleFood //主⾷{char name[20];float price;struct stapleFood *next;};struct non_stapleFood //副⾷{char name[20];float price;struct non_stapleFood *next;};typedef struct non_stapleFood non_staple_food;typedef non_staple_food *pNon_stapleFood;struct Drink_beverage //饮品{char name[20];float price;struct Drink_beverage *next;};typedef struct Drink_beverage drinkBeverage;typedef drinkBeverage *pDrinkBeverage;struct Table //餐桌{int ID;//餐桌编号int People;//已坐⼈数int count;//可容纳⼈数char Username[10];//订餐⼈struct Table *next;};typedef struct Table table;typedef table *pTable;struct Form //订单{char name[20];float price;struct Form *next;};typedef struct Form orderForm;typedef orderForm *pOrder;//⾃定义函数区//⽤户客户端void Default();//欢迎界⾯void User_Login();//⽤户登录界⾯void Logon();//注册界⾯pUser readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址void save_User(pUser p1);//将⽤户信息保存到⽂件中void User_Menu();//⽤户菜单void User_Order();//点餐void Order_StapleFood();//主⾷void Order_nonStapleFood();//副⾷void Order_DrinkBeverage();//饮品void Order_Form(int ID,int number);//订单void User_List_Table();//餐桌列表void Apply_VIP_Menu();//会员办理菜单void Add_money(pUser head);//充值void Updata_User(pUser head);//更新⽤户表void Apply_VIP(pUser head);//办理会员void User_Wallet();//我的钱包//管理员客户端void Administrator_Menu();//管理员菜单void Administrator_Login();//管理员登录void Check_User();//查看⽤户void Find_User();//查找⽤户void All_User();//查看所有⽤户void All_VIP();//本店会员void Setup_administrator();//设置管理员void Food();//菜品信息void Add_Food();//添加菜单void save_stapleFood(pStapleFood p);//保存主⾷信息void save_non_stapleFood(pNon_stapleFood p);//保存副⾷信息void save_drinkBeverage(pDrinkBeverage p);//保存饮品信息pStapleFood readStapleFoodFile();//从主⾷⽂件中读取⽤户信息,返回⼀个表头地址pNon_stapleFood readNonStapleFoodFile();//从副⾷⽂件中读取⽤户信息,返回⼀个表头地址pDrinkBeverage readDrinkBeverageFile();//从饮品⽂件中读取⽤户信息,返回⼀个表头地址void Table();//餐桌管理void Add_Table();//添加餐桌void save_Table(pTable p);//保存餐桌信息pTable readTableFile(); //从餐桌⽂件中读取⽤户信息,返回⼀个表头地址void Clear_Table();//清理餐桌void Clear_oneTable();//清理指定餐桌void Administrator_List_Table();//餐桌列表//公共函数void toxy(int x,int y);//将光标移动到x,y坐标处void HideCursor(int x);//隐藏光标char *HidePassword();//隐藏密码void Exit();//退出系统void Change();//切换账号void Amend_passWord();//修改密码void List_Food();//菜单列表//全局变量区char _userName[10];char _passWord[18];//记录当前⽤户pOrder orderHead=NULL,p2=NULL;//记录当前⽤户的订单int num=0;//函数实现区void toxy(int x,int y)//将光标移动到x,y坐标处{COORD pos={x,y};HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out,pos);}void HideCursor(int x)//隐藏光标 ,当x为0时,隐藏,为1时,显⽰{CONSOLE_CURSOR_INFO cursor_info ={1,x};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); }void Default()//欢迎界⾯{char t;//⽤于选择do{HideCursor(0); //隐藏光标system("color 72");toxy(28,8);printf(" 欢迎来到南航餐饮! ");toxy(26,9);printf("-----------------------------");toxy(27,11);printf("1.登录 2.注册 3.管理员登录");while(1) //死循环为防⽌其他按键⼲扰{t=getch();//不回显函数if(t=='1')//如果按1,则进⼊登录界⾯User_Login();else if(t=='2')//如果按2,则进⼊注册界⾯Logon();else if(t=='3')Administrator_Login();}//如果既不是1也不是2和3,则循环输⼊}while(1);//永远为真}void User_Menu()//⽤户菜单{char t;//⽤于选择菜单选项do{system("cls");HideCursor(0); //隐藏光标system("color 74");toxy(32,3);printf("南航餐饮点餐系统!");toxy(32,4);printf("当前⽤户:%s",_userName);toxy(30,5);printf("*********************");toxy(32,7);printf("| 1.菜单列表 |");toxy(32,9);printf("| 2.餐桌列表 |");toxy(32,11);printf("| 3.会员办理 |");toxy(32,13);printf("| 4.修改密码 |");toxy(32,15);printf("| 5.我的钱包 |");toxy(32,17);printf("| 7.退出系统 |");t=getch();//不回显函数,输⼊⼀个值switch(t){case '1':User_Order();break;case '2':User_List_Table();break;case '3':Apply_VIP_Menu();break;case '4':Amend_passWord();break;case '5':User_Wallet();break;case '6':Change();break;case '7':Exit();break;default :break;}}while(1);//永远为真}char *HidePassword()//隐藏密码{char password[18];//密码char *p;//指向密码的指针int i=0;//记录密码位数char t;//输⼊密码for(;;) //此处为输⼊密码不回显操作{t=getch(); //输⼊kif(t=='\r') //如果输⼊k为回车,则跳出循环{break;}else if(t=='\b') //如果输⼊k为删除键{if(i>0) //如若密码还没完全删除{printf("\b");printf(" ");printf("\b");i--;}}else //如果输⼊的k既不是删除键,也不是回车键{password[i]=t; //把k的值赋给_password[i];printf("*"); //输出*号,保护⽤户隐私i++; //密码位数加1}}password[i]='\0';//在数组末端加⼀个结束符p=password;//让p指向该数组return p; //返回⼀个指向密码的指针}pUser readUserFile()//从⽂件中读取⽤户信息,返回⼀个表头地址{FILE *fp; //⽂件指针int n=0;//记录链表的结点数pUser head=NULL;//定义头指针pUser p2,p,pre;fp=fopen("User.txt","a+"); //以只读的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}else{while(!feof(fp)) //判断⽂件位置标志是否移动到⽂件末尾{n++;p=(pUser)malloc(M); //向内存申请⼀段空间fread(p,M,1,fp); //将fp所指向的⽂件中的内容赋给pif(n==1){head=p;p2=p;}else //创建链表{pre=p2;p2->next=p;p2=p;}}p2->next=NULL;}if(n<=2)head->next=NULL;elsereturn head; //返回头指针}void save_User(pUser p1) //将p1所指向的内容存储到⽂件中{FILE *fp; //⽂件指针fp=fopen("User.txt","a+"); //以追加的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}if(fwrite(p1,M,1,fp)!=1) //将p1所指向的1个⼤⼩为N的数据结构写⼊fp所指向的⽂件中{printf("file write error\n");}fclose(fp); //关闭⽂件}void User_Login()//登录页⾯{char *q,t,c;//q指针⽤于接收 *HidePassword()函数返回的指向密码的指针,t和c均⽤于选择pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址do{HideCursor(1);//显⽰管光标system("cls");//清屏system("color 73");//设置颜⾊toxy(28,8);printf("南航餐饮管理系统登录界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(40,11);scanf("%s",_userName);toxy(40,13);q=HidePassword();//输⼊密码strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组while(p!=NULL&&strcmp(p->userName,_userName)!=0) //遍历链表,寻找当前输⼊的账户的账号 {p=p->next;}if(p!=NULL) //如果p不为空{if(strcmp(p->passWord,_passWord)==0) //如果输⼊的密码正确{toxy(32,16);printf("正在登陆....");Sleep(500); //暂停0.5秒system("cls");toxy(32,10);printf("登陆成功!");break; //跳出循环}else //如果输⼊的密码错误{toxy(32,16);printf("正在登陆....");Sleep(500);system("cls");toxy(30,8);printf("-------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 密码错误!是否继续? |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("-------------------------");while(1)//⽆限循环为防⽌其他按键⼲扰{t=getch(); //输⼊tif(t=='1'){system("cls"); //清屏break;}else if(t=='2') //如果输⼊t为n,进⼊开始界⾯{system("cls"); //清屏Default();break;}}else //如果p为空,即输⼊的账号不正确{toxy(32,16);printf("正在登陆....");Sleep(500);system("cls");toxy(30,8);printf("-------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 账号错误!是否继续? |");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("-------------------------");while(1) //死循环防⽌其他按键⼲扰{c=getch();if(c=='1'){system("cls");break;}else if(c=='2'){system("cls"); //清屏Default();}}}}while(1);Sleep(500); //暂停0.5秒User_Menu(); //账号密码均正确,进⼊⽤户主菜单}void Logon()//注册界⾯{pUser p1;pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址p1=(pUser)malloc(M); //向内存申请⼀段空间char *q1,*q2;//q1,q2分别⽤于接收 *HidePassword()函数返回的值char userName[10],passWord[18],againPassword[18],c,k,t;//c,k,t均⽤于选择 do{system("cls");system("color 73");HideCursor(1);//显⽰光标int flag=0;//标记信息库中是否存在要注册⽤户名toxy(28,8);printf("南航餐饮管理系统注册界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(32,15);printf("确认密码:");toxy(42,11);scanf("%s",userName);//输⼊⽤户名toxy(42,13);q1=HidePassword();//输⼊密码strcpy(passWord,q1);toxy(42,15);q2=HidePassword();//输⼊确认密码strcpy(againPassword,q2);while(p!=NULL) //遍历链表,寻找当前输⼊的账户的账号{if(strcmp(p->userName,userName)==0)//如果信息库中存在该⽤户名{toxy(32,17);printf("⽤户名已存在,请重新注册!");flag=1;//flag为1时表⽰⽤户名已存在break;//跳出循环}p=p->next;}if(flag)//如果⽤户名已存在{HideCursor(0);//隐藏光标toxy(32,21);printf("1.是\t2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='1')//如果继续,则重新注册continue;else if(t=='2')//如果不继续,则回到⾸页{system("cls");//清屏Default();//回到⾸页}}if(strcmp(passWord,againPassword)==0) //如果输⼊的两次密码均正确 {strcpy(p1->userName,userName);strcpy(p1->passWord,passWord);strcpy(_userName,userName);strcpy(_passWord,passWord);p1->isVIP=0;p1->money=0;if(strcmp(userName,"root")==0&&strcmp(passWord,"root")==0)p1->isAdministrator=1;elsep1->isAdministrator=0;toxy(32,16);printf("正在注册....");Sleep(500);break; //跳出循环}else //如果输⼊的两次密码不同{toxy(32,16);printf("正在注册....");Sleep(500);system("cls");toxy(30,8);printf("------------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("|两次密码不⼀致!是否继续注册?|");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("------------------------------");while(1){c=getch();if(c=='1'){system("cls");break;}else if(c=='2'){system("cls");Default();break;}}}}while(1);save_User(p1); //调⽤函数,将p1所指向的内容存储到⽂件中system("cls");toxy(32,10);printf("注册成功!");Sleep(500); //暂停0.5秒toxy(32,12);printf("正在⾃动为您登陆....");Sleep(500);User_Menu(); //注册成功后进⼊主菜单}void User_Order()//点餐{int ID;int number;do{while(1){system("cls");HideCursor(1);int flag=0;pTable T,Thead;Thead=readTableFile();T=Thead;int j=11;toxy(12,6);printf("餐桌列表(按任意键继续)");toxy(2,8);printf("餐桌编号 | 可坐⼈数 | 已坐⼈数");toxy(0,9);printf("--------------------------------------");while(T!=NULL){toxy(6,j);printf("%-10d%-10d%d",T->ID,T->count,T->People); j++;T=T->next;}toxy(38,12);printf("请选择餐桌号:");scanf("%d",&ID);toxy(40,14);printf("请选择⼈数:");scanf("%d",&number);T=Thead;while(T!=NULL){if(T->ID==ID){if((T->count)-(T->People)>=number){toxy(38,16);printf("占座成功!按任意键继续点餐");flag=1;break;}else{toxy(38,16);printf("占座失败!该餐桌座位不够");flag=0;break;}}T=T->next;}if(T==NULL&&flag==0){toxy(38,16);printf("该餐桌编号不存在,请重新输⼊");Sleep(1000);continue;}else if(T!=NULL&&flag==0){toxy(38,17);printf("是否继续 1.是 2.否");while(1){ch=getch();if(ch=='1'||ch=='2')break;}if(ch=='1')continue;else if(ch=='2')break;}else if(flag)break;}if(ch=='2')break;getch();do{system("cls");printf("-----------------");toxy(28,10);printf("1) 主⾷");toxy(28,12);printf("2) 副⾷");toxy(28,14);printf("3) 饮品");toxy(28,16);printf("4)订单");toxy(28,18);printf("5)返回");t=getch();switch(t){case '1':Order_StapleFood();break;case '2':Order_nonStapleFood();break;case '3':Order_DrinkBeverage();break;case '4':Order_Form(ID,number);break;case '5':break;default :break;}if(t=='5')break;}while(1);if(t=='5')break;}while(1);}void Order_StapleFood()//主⾷{char t;do{system("cls");pStapleFood p,head=readStapleFoodFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("主⾷菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0) {p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(40,10);printf("点餐成功!是否继续?1.是 2.否");while(1){if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);}void Order_nonStapleFood()//副⾷{char t;do{system("cls");pNon_stapleFood p,head=readNonStapleFoodFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("副⾷菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0){p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(36,10);printf("点餐成功!是否继续?1.是 2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);pDrinkBeverage p,head=readDrinkBeverageFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("饮品菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0){p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(36,10);printf("点餐成功!是否继续?1.是 2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);}void Order_Form(int ID,int number)//订单{do{system("cls");int i=10;char t;float totalPrice=0;float actualPayment=0;pOrder p=orderHead;pUser q,head;pTable T,Thead;q=head;if(orderHead==NULL){printf("我的订单");toxy(22,8);printf("菜品名称\t\t价格");toxy(20,9);printf("***************************");while(p!=NULL){toxy(22,i);printf("%-18s%.2f",p->name,p->price);i++;totalPrice+=p->price;p=p->next;}head=readUserFile();q=head;toxy(20,i);printf("***************************");while(q!=NULL&&strcmp(q->userName,_userName)!=0) {q=q->next;}if(q){toxy(24,++i);printf("总价: %.2f",totalPrice);if(q->isVIP)actualPayment=totalPrice*0.85;elseactualPayment=totalPrice;toxy(24,++i);printf("实付: %.2f",actualPayment);}toxy(22,++i);printf("1.确认⽀付 2.取消订单 3.返回");while(1){t=getch();if(t=='1'||t=='2'||t=='3')break;}if(t=='1'){Thead=readTableFile();T=Thead;while(T!=NULL&&T->ID!=ID){T=T->next;}toxy(24,++i);printf("正在⽀付....");if(q->money>=actualPayment){q->money-=actualPayment;T->People+=number;Updata_User(head);Updata_Table(Thead);Sleep(1500);system("cls");toxy(24,10);printf("⽀付成功!按任意键返回");orderHead=NULL;getch();break;}else{Sleep(1500);system("cls");toxy(24,10);printf("余额不⾜!按任意键返回");getch();break;}}else if(t=='2'){orderHead=NULL;break;}else if(t=='3')void User_List_Table()//餐桌列表{system("cls");pTable p,head;head=readTableFile();p=head;int i=11;toxy(32,6);printf("餐桌列表(按任意键继续)");toxy(22,8);printf("餐桌编号 | 可坐⼈数 | 已坐⼈数");toxy(20,9);printf("--------------------------------------");while(p!=NULL){toxy(26,i);printf("%-10d%-10d%d",p->ID,p->count,p->People);i++;p=p->next;}getch();}void Apply_VIP_Menu()//办理会员{char t; //t⽤于选择do{system("cls");system("color 75");HideCursor(0);pUser head=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址toxy(32,6);printf("会员办理");toxy(30,8);printf("1) 充值 ");toxy(30,10);printf("2) 办理会员");toxy(30,12);printf("3) 返回");t=getch();switch(t){case '1':Add_money(head);break;case '2':Apply_VIP(head);break;case '3':break;default :break;}if(t=='3')//如果输⼊3,则跳出循环,该函数⽣命周期结束,回到上⼀级菜单break;}while(1);}void Add_money(pUser head)//充值{float money;//输⼊要充值的钱pUser p;p=head;//head为从上⼀级菜单传过来的参数,为⽤户信息链表的头结点while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息 {p=p->next;}while(1){system("cls");system("color 76");toxy(32,6);printf("南航餐饮充值中⼼");if(p!=NULL){if(p->isVIP==0)//如果不是会员{toxy(20,8);printf("对不起,您还不是会员,请先办理会员后再来充值!");toxy(32,10);printf("请按任意键返回!");break;}else if(p->isVIP==1)//如果是会员{HideCursor(1);toxy(32,8);printf("请输⼊充值⾦额(⼀次不少于200):");printf("正在充值....");Updata_User(head);//更新⽤户表toxy(32,10);printf("充值成功 ");toxy(32,12);printf("请按任意键返回!");break;}else//如果充值⾦额⼩于200{toxy(32,10);printf("⼀次⾄少充值200元!");Sleep(1500);continue;}}}}getch();}void Apply_VIP(pUser head)//办理会员{system("cls");system("color 76");pUser p=head;//head为从上⼀级菜单传过来的参数,为⽤户信息链表的头结点char t;float money;toxy(32,6);printf("南航餐饮会员办理中⼼");while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息 {p=p->next;}do{if(p!=NULL){if(p->isVIP==1)//如果已经是会员{toxy(20,8);printf("您已是本店尊贵会员,⽆需再次办理!");toxy(32,10);printf("请按任意键返回!");getch();break;}else if(p->isVIP==0)//如果还没办理会员{toxy(30,8);printf("提⽰:");toxy(30,9);printf("1.办理会员⾄少充值500");toxy(30,10);printf("2.冲500送200,冲1000送500");toxy(32,12);printf("是否确认办理会员?");toxy(32,13);printf("1.是\t2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='1'){while(1){system("cls");HideCursor(1);toxy(32,10);printf("请输⼊充值⾦额:");scanf("%f",&money);if(money>=500&&money<1000){money+=200;p->money+=money;p->isVIP=1;Updata_User(head);toxy(32,12);}else if(money>=1000){money+=500;p->money+=money;p->isVIP=1;Updata_User(head);toxy(32,12);printf("恭喜,您已成为本店尊贵会员!");toxy(32,14);printf("请按任意键返回主菜单");getch();User_Menu();}else{toxy(32,12);printf("办理会员⾄少充值500");Sleep(2000);}}}else if(t=='2')break;}}}while(1);}void Updata_User(pUser head)//更新⽂件{FILE *fp;pUser p=head->next; //使p指向第⼆个结点fp=fopen("User.txt","w"); //先清空原⽂件内容再将修改后的信息写⼊⽂件if(fp==NULL){printf("cannot open file\n");}if(fwrite(head,M,1,fp)!=1) //将head所指向的数据写⼊fp所指向的⽂件{printf("file write error\n");}fclose(fp); //关闭⽂件fp=fopen("User.txt","a"); // 打开User.txt⽂件,⽅式为追加while(p!=NULL) //p不为空就执⾏循环体{if(fwrite(p,M,1,fp)!=1) //将p所指向的1个⼤⼩为N的数据结构写⼊fp所指向的⽂件{printf("file write error\n");}p=p->next; //使p指向下⼀个结点}fclose(fp); //关闭⽂件}void Amend_passWord()//修改密码{system("cls"); //清屏HideCursor(0); //隐藏光标,看着更舒服pUser p,head;head=readUserFile();do{p=head;char password[18],newpassword[18],t,k,*q1,*q2;int i=0;toxy(34,5); //将光标移动到坐标为(50,5)的位置printf("南航餐饮点餐系统");toxy(34,8);printf("修改密码");toxy(32,10);printf("请输⼊旧密码:");q1=HidePassword();strcpy(password,q1);toxy(32,12);printf("请输⼊新密码:");q2=HidePassword();strcpy(newpassword,q2);while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登陆账户的账号 {p=p->next;}if(p!=NULL) //如果p不为空break; //跳出循环}else //如果旧密码输⼊错误{system("cls");toxy(30,8);printf("--------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 密码错误!是否继续? |");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("--------------------------");while(1){t=getch(); //输⼊tif(t=='1'){system("cls");break;}else if(t=='2')User_Menu();}}}}while(1); //永远为真Updata_User(head);//修改密码toxy(32,14);printf("修改成功!正在跳转...");Sleep(500); //暂停0.5秒}void User_Wallet()//我的钱包{system("cls");system("color 78");pUser p,head;head=readUserFile();p=head;while(p!=NULL&&strcmp(p->userName,_userName)!=0) {p=p->next;}if(p!=NULL){toxy(32,10);printf("账户余额为:%.2f",p->money);toxy(32,12);printf("请按任意键返回");}getch();}void Change()//切换账号{system("cls");Default();}void Exit()//退出点餐系统{char t;toxy(30,10);printf("-----------------------");toxy(30,11);printf("| 您确定要退出吗? |");toxy(30,13);printf("| 1.确定 2.取消 |");toxy(30,14);printf("-----------------------");while(1){t=getch(); //输⼊tswitch(t){case '1':system("cls");toxy(32,10);printf("已安全退出软件");toxy(32,12);printf("谢谢使⽤!");toxy(32,14);printf("by-by^_^");exit(0); break; //终⽌程序case '2':break; //调⽤函数,进⼊菜单default :break;}if(t=='2')break;}}void Administrator_Menu()//管理员菜单{char t;//⽤于选择菜单选项do{system("cls");HideCursor(0); //隐藏光标system("color 74");toxy(32,3);printf("南航餐饮管理系统!");toxy(32,4);printf("当前管理员:%s",_userName);toxy(30,5);printf("*********************");toxy(32,7);printf("| 1.菜品信息 |");toxy(32,9);printf("| 2.餐桌管理 |");toxy(32,11);printf("| 3.查看⽤户 |");toxy(32,13);printf("| 4.本店会员 |");toxy(32,15);printf("| 5.设置管理员 |");toxy(32,17);printf("| 6.修改密码 |");toxy(32,19);printf("| 7.切换账号 |");toxy(32,21);printf("| 8.退出系统 |");t=getch();//不回显函数,输⼊⼀个值switch(t){case '1':Food();break;case '2':Table();break;case '3':Check_User();break;case '4':All_VIP();break;case '5':Setup_administrator();break;case '6':Amend_passWord();break;case '7':Change();break;case '8':Exit();break;default :break;}}while(1);//永远为真}void Administrator_Login()//管理员登录{char *q,t,c;//q指针⽤于接收 *HidePassword()函数返回的指向密码的指针,t和c均⽤于选择 pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址do{HideCursor(1);//显⽰管光标system("cls");//清屏system("color 73");//设置颜⾊toxy(28,8);printf("南航餐饮管理员登录界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(40,11);scanf("%s",_userName);toxy(40,13);q=HidePassword();//输⼊密码strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组。