上海应用技术学院课程设计任务书指导教师(签名):教研室主任(签名):"2015年7月17 日2015 年7月17 日目录1 ....................................................................................................................................................... 概述1餐饮管理系统的目标 (1)开发环境及工具 (1)小组分工 (2)2需求分析 (3)问题陈述 (3)功能需求 (3)系统总体功能模块图 (3)3概念结构设计 (5)设计思想 (5)系统总E--R图 (6)局部E-R图 (7)、实体属性的描述 (8)4逻辑结构设计 (11)关系模式 (11)建表逻辑设计 (11)5物理结构设计 (13)数据流图 (13)总体数据流图 (13)分功能数据数据流图 (15)数据字典 (16)数据项 (16)数据结构 (16)数据流 (17)数据存储 (17)处理过程 (17)6数据库实施 (19)界面设计 (19)~登录界面设计 (19)登录界面主要代码 (19)主界面设计 (21)主界面对应代码 (21)桌台信息管理 (24)桌台管理模块页面设计 (24)桌台管理主要代码 (26)菜单管理设计 (33)&菜单管理界面设计 (33)菜单管理功能主要代码 (34)数据的存储与表的设计 (37)菜单的数据存储 (37)桌台信息数据存储 (37)7结束语 (39)8参考文献 (40)参考文献 (41)@1概述近年来,随着人民的生活水平的不断提高,餐饮业的消费持续增长,竞争愈来愈激烈。
然而,传统餐饮企业的日常运作还是靠人工管理,从原材料入库到客人点单,再到结账基本上由人工完成记录,这样做不仅耗费人力资源而且容易导致记录丢失或重复等错误,造成管理水平低下。
这就迫切需要标准的、高效率的计算机管理方式引导其发展,通过计算机管理该企业的日常运作,给管理者以决策参考的模型,来不断完善管理水平,提高工作效率。
本系统选择目前市场上价格比较低廉的数据库服务器产品:sql server2005及配套的平台Windows XP。
而前台开发工具采用.NET,语言用C#,利用其可视化的开发环境、丰富的控件资源,快速开发出了餐饮管理信息系统应用程序。
1.1餐饮管理系统的目标面对服务行业的高速发展和餐饮企业信息发展的过程中出现的各种情况,本系统应达到以下目标:系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。
对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。
实现对消费账目自动结算。
实现对消费的历史记录进行查询,支持模糊查询。
系统应最大限度地实现易维护性和易操作性1.2开发环境及工具数据库环境选择SQL server 2005中文版;前台编程语言使用C#语言来编写。
开发环境使用Windows xp 系统。
1.3小组分工:员工管理模块、用户管理模块:辅助功能设计、结账模块:桌台管理模块、菜单管理模块:消费查询模块、点餐加餐模块2需求分析问题陈述、系统需完成的功能;系统总体功能模块图,即描述每一个功能所完成的任务情况。
个人完成部分数据流图或数据字典。
2.1问题陈述随着餐饮业的不断发展,餐饮管理系统的内容对于餐饮业的决策者和管理者来说都非常重要。
本系统主要包括桌台显示、消费查询、人事档案管理及权限等极大部分功能,具有良好的用户接口,使用方便;具有完善的查询,对于维护系统起到了辅助决策的作用,能及时、方便的进行查询修改删除等维护性操作。
2.2功能需求餐饮管理系统中主要包括对以下几种功能:基础信息模块,开台消费,辅助工具模块,系统维护模块,系统设置模块,登录退出模块。
基础信息模块:包括员工管理功能,可以进行员工信息的增加,删除,查询,修改的功能;桌台信息管理:包括对桌台信息的增加,删除,查询,修改的功能。
开台消费模块:开台、取消开台、点菜加菜、消费查询、结账等功能。
辅助功能模块:直接调用日历,记事本,计算器的功能,方便用户使用。
系统维护模块:数据库备份与恢复系统设置模块:锁定系统、用户设置,对于用户信息进行增加,删除,查询,修改。
登录退出模块:用户的登录与退出。
2.3系统总体功能模块图餐饮管理系统基础信息开台消费辅助工具系统维护系统设置退出桌台信息管理员工信息管理菜单修改开台单点菜加菜消费查询结账日历记事本计算器备份数据库恢复数据库系统锁定用户管理退出登录3概念结构设计设计思想、系统总E-R图。
个人完成部分的局部E-R图,要有实体属性的描述。
3.1设计思想餐饮管理系统的设计思想应该包含以下几个功能模块:基础信息模块:包括员工管理功能,可以进行员工信息的增加,删除,查询,修改的功能;桌台信息管理:包括对桌台信息的增加,删除,查询,修改的功能。
开台消费模块:开台、取消开台、点菜加菜、消费查询、结账等功能。
辅助功能模块:直接调用日历,记事本,计算器的功能,方便用户使用。
系统维护模块:数据库备份与恢复系统设置模块:锁定系统、用户设置,对于用户信息进行增加,删除,查询,修改。
登录退出模块:用户的登录与退出。
3.2系统总E--R图餐饮管理系统E-R图3.3局部E-R图桌台管理的E-R图菜单信息管理的E-R图3.4实体属性的描述桌台(桌台编号、桌台名称、桌台简称、桌台包间费、桌台位置、桌台状态、桌台类型、桌台备注、桌台其他信息、)服务员(服务员编号. 服务员姓名、身份证号码、性别、年龄、电话)用户(用户ID、用户登录名、用户登录密码、用户权限)菜肴(菜品编号,菜品名称,菜品类别,菜品价格)4逻辑结构设计完成E-R图转换为关系模式,分析关系模式是否符合一定级别的范式要求,不符合的话需要进行模式分解。
紫颜色字体内容为可选。
4.1关系模式桌台(桌台编号、桌台名称、桌台简称、桌台包间费、桌台位置、桌台状态、桌台类型、桌台备注、桌台其他信息、顾客姓名、开台时间、顾客人数、操作员姓名)结账(消费桌台、菜品代号、菜品名称、消费数量、菜品价格、操作员姓名、备注、消订餐(菜品类别编号、菜品代号、菜品名称、菜品价格)类别(类别编号、菜品类别名称)职员(职员编号. 职员姓名、身份证号码、性别、年龄、电话)系统管理(用户ID、用户登录名、用户登录密码、用户权限)4.2建表逻辑设计表表表表表5物理结构设计(1)确定数据存放位置、系统配置等。
个人承担模块所所涉及的表结构、各属性名称、数据类型、约束等的说明。
5.1数据流图5.1.1总体数据流图顶层数据流图5.1.2分功能数据数据流图桌台信息管理数据流图菜单管理数据流图5.2数据字典5.2.1数据项桌台信息:5.2.2数据结构5.2.4数据存储6数据库实施界面设计、建表、数据输入、应用程序设计与调试等、数据库运行与维护(数据库安全性完整性的控制、数据库备份)等。
报告中可以先展示系统登录和主界面,重点写个人承担的内容,可以包括---数据库中的表、视图、存储过程(如果使用)的结构和定义(可以用SQL脚本提供)、表间关系、界面和代码段、测试用例和结果等。
6.1界面设计6.1.1登录界面设计6.1.2登录界面主要代码namespace MrCy{public partial class frmLogin : Form{public frmLogin(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){();}private void txtPwd_KeyPress(object sender, KeyPressEventArgs e){if== 13){btnSubmit_Click(sender, e);}private void btnSubmit_Click(object sender, EventArgs e){if== ""){("请输入用户名", "警告", , ;}else{if== ""){("请输入密码", "警告", , ;}else{SqlConnection conn = ();SqlCommand cmd = new SqlCommand("select count(*) from tb_User where UserName='" + + "' and UserPwd='" + + "'", conn);int i = ());if (i > 0){cmd = new SqlCommand("select * from tb_User where UserName='" + + "'", conn);SqlDataReader sdr = ();();string UserPower = sdr["power"].ToString().Trim();();Main main = new Main();= UserPower;= ;= ();();}else{("用户名或密码错误");}}}}private void btnConcel_Click(object sender, EventArgs e){if ("确定退出系统吗", "提示", , =={();}}}}6.1.3主界面设计6.1.4主界面对应代码private void Main_Load(object sender, EventArgs e)switch (power){case "0": = "超级管理员"; break;case "1": = "经理"; break;case "2": = "服务员"; break;}= Names;= Times;if (power == "2"){= false;= false;= false;}if (power == "1"){= false;= false;}= 0;= 0;}private void button1_Click(object sender, EventArgs e){= 480;= 0;();"桌台信息", 9);"职员信息", 18);"菜单修改", 19);}private void AddItems(string rzt){string rName = sdr["RoomName"].ToString().Trim();if (rzt == "使用"){if (0, ("-")) == "大厅"){"RoomName"].ToString(), 1);}else{"RoomName"].ToString(), 3);}}else{if (0, ("-")) == "大厅"){"RoomName"].ToString(), 0);}else{"RoomName"].ToString(), 2);}}}private void frmMain_Activated(object sender, EventArgs e){SqlConnection conn = ();SqlCommand cmd = new SqlCommand("select * from tb_Room", conn);sdr = ();while ()){string zt = sdr["RoomZT"].ToString().Trim();AddItems(zt);}();}private void button2_Click(object sender, EventArgs e){= 480;= 0;frmMain_Activated(sender,e);}private void button3_Click(object sender, EventArgs e){= 480;= 0;();"日历", 13);"记事本", 10);"计算器", 11);}private void button4_Click(object sender, EventArgs e){= 480;= 0;();"系统备份", 16);"系统恢复", 15);}private void button5_Click(object sender, EventArgs e){= 480;= 0;();"锁定系统", 14);"用户管理", 15);}private void button6_Click(object sender, EventArgs e){if ("确定退出登录吗", "提示", , =={();frmLogin fms = new frmLogin();();}}private void listView1_DoubleClick(object sender, EventArgs e) {frmDetails details = new frmDetails();= [0].SubItems[0].Text;();}private void listView2_DoubleClick(object sender, EventArgs e) {if [0].SubItems[0].Text == "桌台信息"){Desks mDes = new Desks();();}if [0].SubItems[0].Text == "职员信息"){Staff zy = new Staff();();}if [0].SubItems[0].Text == "菜单修改"){cdAlter cd = new cdAlter();();}if [0].SubItems[0].Text == "系统备份"){();}if [0].SubItems[0].Text == "系统恢复"){frmHF hf = new frmHF();();}if [0].SubItems[0].Text == "用户管理"){userAlter usa = new userAlter();();}if [0].SubItems[0].Text == "日历"){frmCalender rl = new frmCalender();();}if [0].SubItems[0].Text == "记事本"){"");}if [0].SubItems[0].Text == "计算器"){"");}if [0].SubItems[0].Text == "锁定系统"){frmLock sd = new frmLock();();}}6.2桌台信息管理6.2.1桌台管理模块页面设计桌台信息管理开台桌台信息6.2.2桌台管理主要代码桌台管理public partial class Desks : Form{public Desks(){InitializeComponent();}private void Desks_Load(object sender, EventArgs e);= [1].();= [2].();= [3].();= [4].();= [5].();}private void Bind() + "'", conn);();();Bind();}else{cmd = new SqlCommand("insert intotb_Room(RoomName,RoomJC,RoomBJF,RoomWZ,RoomZT,RoomBZ) values('" + + "','" ++ "','" + + "','" + + "','" + "待用" + "','" + + "')", conn);();();Bind();}}else{("房间名称,编号和桌台位置不能为空");}}private void button2_Click(object sender, EventArgs e) + "'", conn);();();Bind();}private void button3_Click(object sender, EventArgs e)oString().Trim());}= ();();cmd = new SqlCommand("select * from tb_Waiter",conn);sdr = ();while ()){"WaiterName"].ToString().Trim());}= 0;();}private void txtNum_KeyPress(object sender, KeyPressEventArgs e){if ( != 8 && !) && != 13){("请输入数字");= true;}}private void btnSave_Click(object sender, EventArgs e){if== ""||<=0||>=13){("人数不正确,请重新输入(-12)");}else{string RoomName = SqlCommand cmd1 = new SqlCommand("update tb_Room set GuestName='" + + "',zhangdanDate='" + + "',Num='" + + "',WaiterName='" + + "',RoomZT='使用'"+",RoomBZ='"+"' where RoomName='" + name + "'", conn);();();}}private void btnExit_Click(object sender, EventArgs e){();}}桌台信息public partial class frmDetails : Form{public frmDetails(){InitializeComponent();}public string TableName;private void frmDetails_Load(object sender, EventArgs e){= ();SqlConnection conn = ();SqlCommand cmd = new SqlCommand("select * from tb_Room where RoomName='"++"'",conn);SqlDataReader sdr = ();();= sdr["ID"].ToString().Trim();= sdr["RoomJC"].ToString().Trim();= sdr["RoomBJF"].ToString().Trim();=sdr["RoomWZ"].ToString().Trim();= sdr["RoomZT"].ToString().Trim();= sdr["RoomType"].ToString().Trim();= sdr["RoomBZ"].ToString().Trim();string qt = sdr["zhangdandate"].ToString() + "开始用餐" + "\n" + "用餐人数:" + sdr["Num"].ToString();if =="待用"){= "暂时没有其他信息...";}else{= qt;}();();}private void button1_Click(object sender, EventArgs e){();}}6.3菜单管理设计6.3.1菜单管理界面设计6.3.2菜单管理功能主要代码public partial class cdAlter : Form{public cdAlter(){InitializeComponent();}private void cdAlter_Load(object sender, EventArgs e){"热菜");"凉菜");"甜品");"汤类");"主食");"饮料");Bind();}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){= [0].();= [1].();= [2].();= [3].();}private void Bind(){SqlConnection conn = SqlDataAdapter sda = new SqlDataAdapter("selectfoodty,foodnum,foodname,foodprice,ID from tb_food order by ID desc", conn);DataSet ds = new DataSet();(ds);= [0];}private void button1_Click(object sender, EventArgs e){SqlConnection conn = ();try{SqlCommand cmd = new SqlCommand("select count(*) from tb_food where foodnum='" + + "'", conn);int i = ());if (i > 0){cmd = new SqlCommand("update tb_food set foodty='" + + "',foodnum='" + + "',foodname='"+ + "',foodprice='" + + "' where ID='" + [4].() + "'", conn);();();Bind();}else{cmd = new SqlCommand("insert into tb_food(foodty,foodnum,foodname,foodprice) values('" + + "','" ++ "','" + + "','" + + "')", conn);();();Bind();}}catch{("不能为空");}}private void button2_Click(object sender, EventArgs e){SqlConnection conn = ();SqlCommand cmd = new SqlCommand("delete from tb_food where foodnum='" + [1].() + "'", conn);();();Bind();}private void button3_Click(object sender, EventArgs e){if!= "" || != "" || != "" || != ""){if!= ""){SqlConnection conn = SqlDataAdapter sda = new SqlDataAdapter("select foodty,foodnum,foodname,foodprice,ID from tb_food Where foodty ='" + + "'", conn);DataSet ds = new DataSet();(ds);= [0];}if!= ""){SqlConnection conn = SqlDataAdapter sda = new SqlDataAdapter("selectfoodty,foodnum,foodname,foodprice,ID from tb_food Where foodnum ='" + + "'", conn);DataSet ds = new DataSet();(ds);= [0];}if!= ""){SqlConnection conn = SqlDataAdapter sda = new SqlDataAdapter("select foodty,foodnum,foodname,foodprice,ID from tb_food Where foodname ='" + + "'", conn);DataSet ds = new DataSet();(ds);= [0];}if!= ""){SqlConnection conn = SqlDataAdapter sda = new SqlDataAdapter("select foodty,foodnum,foodname,foodprice,ID from tb_food Where foodprice ='" + + "'", conn);DataSet ds = new DataSet();(ds);= [0];}}else{("不能为空");}}private void button4_Click(object sender, EventArgs e){= "";= "";= "";= "";Bind();}}6.4数据的存储与表的设计6.4.1菜单的数据存储6.4.2桌台信息数据存储7结束语两周的课程设计很快就过去了,这其中不敢说自己有多大的收获,但还是学到了一点东西的。