管理信息系统设计课程设计网上订餐系统的设计与实现.doc
河南科技大学课 程 设 计 说 明 书餐品名称 管理信息系统设计 题 目 网上订餐系统的设计与实现分组名单(第2小组)班级学号姓名信管081信管082院 系 国际教育学院 年级专业 信管08级 指导教师 日 期 2011年5月13日 课程设计任务书(指导教师填写)课程设计名称 管理信息系统设计 学生姓名 年级专业 信管08级 设计题目 网上订餐系统的设计与实现 一、课程设计目的本系统设计是学习完管理信息系统分析与设计后进行的一次全面的综合练习。其目的在于让顾客结合教学内容参与一个完整的管理信息系统的开发全过程,从中了解管理信息系统开发的具体方法和步骤,培养学生的管理信息系统分析与设计能力,培养学生的团队意识,以及对管理信息系统的剖析能力。二、设计内容、技术条件和要求1、设计内容完成网上订餐系统的UML建模,并采用一种面向对象语言编写程序,实现该系统。该系统的功能主要有:(1)管理员管理和维护顾客和餐品信息。查看所有的顾客信息和餐品信息,对以上信息进行添加、修改、删除。(2)顾客在线订餐。选择好餐品后进行提交,系统要记录顾客所选择的餐品和提交的时间;顾客也可以撤销提交。(3)订餐中心处理订餐数据。查看订餐信息,统计每门餐品的订餐人数,停开订餐人数少于规定人数的餐品。2、技术条件系统地学习了管理信息系统分析与设计餐品,掌握了UML的基本理论,能熟练使用Rational Rose完成系统建模,并熟练掌握一种面向对象的编程语言。3、要求UML建模分为需求分析、系统分析、系统设计三个环节。编程的语言不限,可采用自己熟悉的任意一种面向对象语言编写程序,实现该系统。三、时间进度安排需求分析4学时 系统分析8学时 数据库设计与建立4学时实体类与数据库访问类的建立4学时 人机界面设计4学时 程序设计16学时程序测试4学时 编写使用说明书4学时四、主要参考文献1蔡敏,徐慧慧,黄炳强.UML基础与Rose建模教程M.北京:人民邮电出版社,20062刁成嘉,刁奕.UML系统建模与分析设计课程设计M.北京:机械工业出版社,2008指导教师签字: 年 月 日目 录第一章 需求分析4一、需求调查4二、建立用例图4三、描述用例5第二章 系统分析10一、寻找系统中的类10二、建立交互图并寻找类的操作11三、建立类图17第三章 系统设计18一、类图的调整与完善19二、人机界面设计19三、数据库设计22第四章 系统实现23一、开发环境23二、建立数据库23三、程序设计25四、系统测试31五、使用说明38第一章 需求分析一、 需求调查 为提高顾客订餐的准确性,提高数据处理的工作效率,特开发网上订餐管理信息系统,经过调查,发现该系统的需求如下: 管理员管理和维护顾客和餐品信息。查看所有的顾客信息和餐品信息,对以上信息进行添加、修改、删除。 顾客在线订餐。选择好餐品后进行提交,系统要记录顾客所选择的餐品和提交的时间;顾客也可以撤销提交。 订餐中心处理订餐数据。查看订餐信息,统计每门餐品的订餐人数,停开订餐人数少于规定人数的餐品。 业务拓展目的:受实体店面的限制,供应能力未能完全挖掘。订餐实行限时派送和提前订餐业务。这在很大程度上是能够扩大餐厅营业量和营业额度的。 可行性分析:由于现在电脑的普及,上网已经变成了人们的一部分。对于学生来说,尤其是如此。所以通过网上订餐势必会获得很多的顾客。 二、 建立用例图从以上需求陈述中,我们能发现系统中的参与者有:管理员、顾客、订餐中心。识别出参与者后,从参与者的角度就可以发现系统的用例,并绘制出系统的用例图,如下图所示。用例图 三、描述用例1、“查询顾客信息”的用例描述 用例名称查询顾客信息用例标识UC1001基本操作流程1、 输入顾客的编号和密码确认顾客存在2、 将顾客信息在页面上显示出来可选操作流程如果要查询的顾客不存在,则显示相应的提示信息2、“添加顾客信息”的用例描述用例名称添加顾客信息用例标识UC1002基本操作流程1、 通过查询确认顾客信息不存在2、 将顾客信息保存到数据库中3、 将顾客信息在页面上显示出来可选操作流程如果要添加的顾客信息已经存在,则显示相应的提示信息3、“统计每种餐品的订餐人数”的用例描述用例名称统计每种餐品的订餐人数用例标识UC1003基本操作流程1、 进入订餐中心界面2、 统计每种餐品的订餐人数,并将结果显示在界面上4、“查询所有顾客的订餐信息”的用例描述用例名称查询所有顾客的订餐信息用例标识UC1004基本操作流程1、 通过查询确认顾客信息存在2、 将全部订餐信息显示在界面上5、“添加餐品信息”的用例描述用例名称添加餐品信息用例标识UC1005基本操作流程1、通过查询确认餐品信息不存在2、将餐品信息保存到数据库中3、将餐品信息在页面上显示出来可选操作流程如果要添加的餐品信息已经存在,则显示相应的提示信息6、“修改餐品信息”的用例描述用例名称修改餐品信息用例标识UC1006基本操作流程1、 通过查询确认餐品信息存在2、 将修改后的餐品信息保存到数据库中3、 将修改后的餐品信息在页面上显示出来可选操作流程如果要修改的餐品信息不存在,则显示相应的提示信息7、“删除餐品信息”的用例描述用例名称删除餐品信息用例标识UC1007基本操作流程1、通过查询确认餐品信息存在2、删除该餐品信息可选操作流程如果要删除的餐品信息不存在,则显示相应的提示信息8、“查询餐品信息”的用例描述用例名称查询餐品信息用例标识UC1008基本操作流程1、 通过查询确认餐品信息存在2、 将餐品信息在页面上显示出来可选操作流程如果要查询的餐品信息不存在,则显示相应的提示信息9、“查询每位顾客的订餐信息”的用例描述用例名称查询每位顾客的订餐信息用例标识UC1009基本操作流程1、 通过查询确认顾客信息存在 2、 将顾客的订餐信息将显示在页面上10、“提交订餐信息”的用例描述用例名称提交订餐信息用例标识UC1010基本操作流程1、 通过查询确认顾客信息存在2、 选择餐品信息3、 将顾客的订餐信息显示在页面上11、 “删除订餐信息”的用例描述用例名称删除订餐信息用例标识UC1011基本操作流程1、 通过查询确认顾客信息存在2、 选择餐品信息3、 撤销选择的餐品信息12、 “删除订餐人数不足的餐品”的用例描述13、 “删除顾客信息”的用例描述14、 “修改顾客信息”的用例描述第二章 系统分析一、寻找系统中的类1、实体类通过对系统需求的分析,我们发现系统中的实体类有:顾客信息类、餐品信息类、订餐信息类。(1) CustomerInfo该类为顾客信息类,用于描述顾客的基本信息,主要包括顾客姓名和顾客编号两个基本属性,如下表所示:CustomerInfo的属性和操作属性说明CustomerID顾客编号CustomerName顾客姓名(2) FoodInfo该类为餐品信息类,用于描述餐品的基本信息,包括餐品编号和餐品名称两个基本属性,如下表所示:FoodInfo的属性和操作属性说明FoodID餐品编号FoodName餐品名称(3) SelectInfo该类为顾客订餐信息类,用于描述顾客订餐的基本信息,主要记录了哪位顾客订了哪些餐品,以及订餐的具体时间,如下表所示:SelectInfo的属性和操作属性说明CustomerID顾客编号FoodID餐品编号SelectTime订餐时间 2、数据库访问类为便于将相关数据从数据库中读出来,或写入数据库中,需设置一个数据库访问类Data。该类的属性和操作如下表所示:属性或操作说明strCon用于连接数据库的字符串MySqlExecuteReader根据SQL语句进行查询MySqlExecuteNonQuery根据SQL语句进行修改、添加、删除 3、用户界面类本系统设置如下几个用户界面类:CustomerWindow:顾客订餐窗口dczxWindow:订餐中心维护订餐信息的窗口glyManageCustomerWindow:管理员维护顾客信息的窗口glyManageFoodWindow:管理员维护餐品信息的窗口 二、建立交互图并寻找类的操作1、“查询顾客信息”的时序图 1、GetCustomerInfoAllToGridView( ):将所有的顾客信息显示在界面上2、 GetCustomerInfoAll( ):获取所有的顾客信息3、 MySqlExecuteReader( ):从数据库中读取顾客的信息2、“添加顾客信息”的时序图1、 AppendCustomerInfo( ):添加顾客记录2、 AddCustomerInfo( ):添加顾客信息3、 MySqlExecuteNonQuery( ):将顾客信息写入数据库中3、“修改学顾客信息”的时序图 1、 ModifyCustomerInfo( ):修改顾客记录2、 ModifyCustomerInfo( ):修改顾客信息3、 MySqlExecuteNonQuery( ):将顾客信息写入数据库中4、“删除顾客信息”的时序图1、 DeleteCustomerInfo( ):删除顾客信息2、 DelelteCustomerInfoByCustomerID( ):根据顾客编号删除顾客信息3、 MySqlExecuteNonQuery( ):将顾客信息从数据库中删除5、 “查询餐品信息”的时序图1、 GetFoodInfoAllToGridView( ):将餐品信息显示在窗口上2、 GetFoodInfoAll( ):查询所有餐品的信息3、 MySqlExecuteReader( ):从数据库中读取餐品信息6、“添加餐品信息”的时序图1、 AddFoodInfo( ):添加餐品记录2、 AddFoodInfo( ):添加餐品信息3、 MySqlExecuteNonQuery( ):将餐品信息写入数据库中7、“修改餐品信息”的时序图1、 ModifyFoodInfo( ):修改餐品记录2、 ModifyFoodInfo( ):修改餐品信息3、 MySqlExecuteNonQuery( ):将餐品信息写入数据库中8、“删除餐品信息”的时序图1、 DeleteFoodInfo( ):删除餐品记录2、 DeleteFoodInfoByFoodID( ):删除餐品信息3、 MySqlExecuteNonQuery( ):将餐品信息从数据库中删除9、“查询所有顾客的订餐信息”的时序图1、 GetSelectInfoAlltoGridView:将所有的订餐信息显示在窗口上2、 GetSelectInfoAll( ):获取所有的订餐信息3、 MySqlExecuteReader( ):从数据库中读取订餐信息10、 “统计每种餐品的订餐人数”的时序图1、 GetSelectInfoGroupByFoodIDToGridView( ):将订餐信息根据餐品编号分组统计后显示在窗口上2、 GetSelectInfoGroupByFoodID( ):根据餐品编号分组查询订餐信息3、 MySqlExecuteReader( ):将订餐信息从数据库中读取相出来11、 “删除订餐人数不足的餐品”的时序图1、 DeleteSelectInfo( ):删除订餐信息2、 DeleteSelectInfoLowerX( ):删除人数不足x人的订餐信息3、 MySqlExecuteNonQuery( ):将订餐信息从数据库中删除12、 “查询每位顾客的订餐信息”的协作图1、 GetSelectInfoByCustomerIDToGridView( ):将顾客个人的订餐信息显示在窗口上2、 GetSelectInfoByCustomerID( ):根据顾客编号查询顾客的订餐信息3、 MySqlExecuteReader( ):将订餐信息从数据库中读取出来13、 “提交订餐信息”的协作图1、 AddSelectInfo( ):添加订餐记录2、 AddSelectInfo( ):添加订餐信息3、 MySqlExecuteNonQuery( ):将订餐信息写入数据库中14、 “删除订餐信息”的协作图1、 DeleteSelectInfo( ):删除订餐信息2、 DeleteSelectInfoByCustomerID( ):根据顾客编号删除顾客的订餐信息3、 MySqlExecuteNonQuery( ):将订餐信息从数据库中删除 三、建立类图绘制此系统的类图: 系统分析阶段类图 第三章 系统设计 在系统设计阶段,要考虑系统的实现环境,对分析阶段的类图模型进行调整与完善,并对人机界面和数据库进行设计,最终形成一个可以实现的系统设计模型。本系统将采用C#进行编程。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。 一、类图的调整与完善 系统设计阶段的类图 二、人机界面设计1、首页的设计首页是系统的第一个界面,主要功能是提供给各类人员登陆,其界面设计如下图所示。2、顾客订餐界面的设计该页面是顾客提交订餐结果或进行订餐撤销的页面,其界面设计如下图所示。3、订餐中心处理订餐数据页面的设计该界面是订餐中心完成查看订餐信息、统计订餐信息、删除订餐不足等操作的界面,其界面设计如下图所示。4、管理员维护餐品信息页面的设计该页面是管理员查看、添加、删除、修改餐品信息的页面,其界面设计如下图所示。 5、管理员维护顾客信息页面的设计该页面是管理员查看、添加、删除、修改顾客信息的页面,其界面设计如下图所示。 三、数据库设计CustomerInfo(CustomerID, CustomerName, PassWord)FoodInfo(FoodID, FoodName)SelectInfo(CustomerID, FoodID, SelectTime )AdminInfo(AdminID, PassWord, Type)第四章 系统实现一、开发环境本系统采用B/S(Browser/Server)架构进行开发。前台的页面制作工具为Microsoft Visual Studio 2005, 网页采用XHTML+CSS技术进行布局。后台的而开发语言为C#,通过ASP.NET2.0技术访问和操作数据库。采用Microsof SQL Server 2000建立数据库。 二、建立数据库本系统采用Microsoft SQL Server 2000 建立数据库,数据库名称为“Food”, 其中包括4张表,如下图所示:建立的数据库1、 表AdminInfo该表用于存储订餐信息和管理员的认证信息,表的结构如下图:2、 表FoodInfo该表用于存储餐品信息,结构如下:3、 表SelectInfo该表用于存储订餐信息,表的结构如下图:4、 表CustomerInfo该表用于存储顾客信息,表的结构如下图: 三、程序设计(一)系统的主要文件系统中主要包括三种类型的文件:SQL Server 数据库文件、自定义类、页面文件,如下图所示:系统的主要文件(二) 部分模块的程序代码本系统的每个模块都是基于三层架构进行开发。三层架构将整个系统划分为:表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)三个层次,以实现“高内聚,低耦合”的思想。1、 数据访问层using System.Data.SqlClient;public class data private static string strCon = "server=(local);database=Food;uid=sa;pwd=sa" public static SqlDataReader MySqlExecuteReader(string strSQL) SqlConnection myCon = new SqlConnection(strCon); SqlCommand myCom = new SqlCommand(strSQL, myCon); try myCon.Open(); SqlDataReader myReader = myCom.ExecuteReader(CommandBehavior.CloseConnection); return myReader; catch (System.Data.SqlClient.SqlException e) throw new Exception(e.Message); finally myCom.Dispose(); public static int MySqlExecuteNonQuery(string strSQL) SqlConnection myCon = new SqlConnection(strCon); SqlCommand myCom = new SqlCommand(strSQL, myCon); try myCon.Open(); int n = myCom.ExecuteNonQuery(); return n; catch (System.Data.SqlClient.SqlException e) throw new Exception(e.Message); finally myCom.Dispose(); myCon.Close(); 2、 顾客订餐模块的代码该模型的界面如下图所示:(1) 表示层的前台代码<% Page Language="C#" AutoEventWireup="true" CodeFile="CustomerWindow.aspx.cs" Inherits="Customerwindow" %><!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http:/www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title> <link href="mycss.css" rel="stylesheet" type="text/css" /> </head><body> <form id="form1" runat="server"> <div> <div class="modelTitle">顾客订餐窗口</div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <a href ="default.aspx">返回首页</a> <br /><br /> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="FoodID" HorizontalAlign="Center" SelectIndexChanged="GridView1_SelectedIndexChanged" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> <Columns> <asp:BoundField DataField="FoodID" HeaderText="餐品编号" /> <asp:BoundField DataField="FoodName" HeaderText="餐品名称" /> <asp:TemplateField HeaderText="订餐操作"> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" Text="选择" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:Button ID="Button1" runat="server" Text="提交" OnClick="AddSelectInfo" /> <asp:Button ID="Button2" runat="server" Text="撤销提交" OnClick="DeleteSelectInfo" /> <br /> <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" Caption="订餐信息" HorizontalAlign="Center" > <Columns> <asp:BoundField DataField="CustomerID" HeaderText="顾客编号" /> <asp:BoundField DataField="FoodID" HeaderText="餐品编号" /> <asp:BoundField DataField="SelectTime" HeaderText="订餐时间" /> </Columns> </asp:GridView>(2) 表示层的后台代码using System.Data.SqlClient;public partial class dczxWindow : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) Label1.Text = "欢迎" + Request.QueryString"LoginID" + "进入系统," GetSelectInfoGroupByFoodIDToGridView(); GetSelectInfoAllToGridView(); public void GetSelectInfoGroupByFoodIDToGridView() /分组显示每种餐品订餐人数 SelectInfo s = new SelectInfo(); SqlDataReader myreader = s.GetSelectInfoGroupByFoodID(); GridView1.DataSource = myreader; GridView1.DataBind(); myreader.Close(); private void GetSelectInfoAllToGridView() /显示所有订餐信息 SelectInfo s = new SelectInfo(); SqlDataReader myreader = s.GetSelectInfoAll(); GridView2.DataSource = myreader; GridView2.DataBind(); myreader.Close(); protected void DeleteSelectInfo(object sender, EventArgs e) /删除订餐人数小于指定数的订餐信息 SelectInfo s = new SelectInfo(); s.DeleteSelectInfoLowerX(Convert.ToInt32(TextBox1.Text); GetSelectInfoGroupByFoodIDToGridView(); GetSelectInfoAllToGridView();(3) 业务逻辑层using System.Data.SqlClient;public class CustomerInfo public string CustomerID; public string CustomerName; public string Password; public CustomerInfo() ; public CustomerInfo(string x,string y,string z) CustomerID = x; CustomerName = y; Password = z; public SqlDataReader GetCustomerInfoAll() /查询所有顾客信息 string strSQl = "select * from CustomerInfo order by CustomerID asc" return data.MySqlExecuteReader(strSQl); public void AddCustomerInfo() /添加顾客信息 string strSQL = "insert into CustomerInfo values('" + CustomerID + "','" + CustomerName + "','" + Password + "')" data.MySqlExecuteNonQuery(strSQL); public void ModifyCustomerInfo() /修改顾客信息 string strSQL = "update CustomerInfo set CustomerID='" + CustomerID + "',CustomerName='" +CustomerName + "',Password='" + Password + "' where CustomerID='" + CustomerID + "'" data.MySqlExecuteNonQuery(strSQL); public void DeleteCustomerInfoByCustomerID() /根据顾客编号删除顾客信息 string strSQL = "delete from CustomerInfo where CustomerID='" + CustomerID + "'" data.MySqlExecuteNonQuery(strSQL); 四、系统测试(一)添加顾客信息模块的测试该模块的界面如下图所示: 测试目的:测试能否正确录入顾客信息。测试用例:顾客编号=C1018,姓名=何炅,密码=C1018执行操作:分别输入上述数据后,点击“添加顾客记录”按钮。预期结果:顾客记录保存到数据库中,并在页面上显示。实际结果:如下图所示:测试结论:没有错误(二) 登陆模块的测试该模块的界面如下所示: 测试目的:测试能否正确登陆。测试用例:顾客编号=C1003, 顾客密码=C1003, 选择顾客单选钮。执行操作:执行完上述操作后,点击“登陆”按钮。预期结果:进入到顾客订餐界面。实际结果:(三) 添加餐品信息模块的测试该模块的界面如下图所示: 测试目的:测试能否录入餐品信息测试用例:餐品编号=F1011, 餐品名称=情人锅贴执行操作:在上述操作后,点击“提交”按钮预期结果:顾客订餐信息保存到数据库中,并在页面上显示。实际结果: (四) 订餐中心模块的测试该模块的界面如下所示:测试目的:测试删除订餐人数不足的餐品测试用例:订餐人数<=3的订餐信息删除执行操作:执行上述操作后,点击“删除”按钮预期结果:订餐人数小于设置的人数时,该订餐信息将会被删除实际结果: (五)顾客订餐模块的测试该模块的界面如下所示:测试目的:测试顾客订餐的提交与撤销提交测试用例:选择鱼头豆腐汤、红烧茄子、酸辣土豆丝、宫爆鸡丁执行操作:在上述操作后,点击“提交”或撤销提交预期结果:顾客的订餐信息将会保存在数据库中,并在页面中显示实际结果: 五、使用说明(一) 运行环境由于本系统采用B/S框架进行开发,因此需要分别对服务器端和客户机端进行配置1、 服务器端在服务器端需要安装如下组建:(1)Microsoft Windows NETMicrosoft Windows 2000/XP/2003/2008(2) Microsoft SQL ServerMicrosoft SQL Server 2000/2005/2008.(3) IISInternet Infomation Server 5.1/6.0及以上版本(4) .NET框架Microsoft .NET Framework 2.0/3.0/3.54.02、 客户机端(1)操作系统Windows 2000及以上版本(2)浏览器Microsoft Internet Explorer 6.0及以上版本(二) 系统安装1、 将本系统的所有文件复制到硬盘中(由于本计算机安装IIS无法安装,故存在U盘上在别人的电脑里运行的)的任意目录(以“D:H:第2小组_韩雅静_孙展红订餐系统程序”为例)中。2、 打开IIS,右击“默认网站”,选择“新建目录”->“虚拟目录”,如下图所示。新建虚拟目录3、 在“新建目录创建向导”窗口中输入一个别名,如“dingcan”,点击“下一步”,如下图:输入虚拟目录名称4、 在“新建目录创建向导”窗口中的“目录”文本框中输入“H:第2小组_韩雅静_孙展红订餐系统程序”,如下图所示。依次点击“下一步”,即可完成系统的配置。选择网站所在位置5、 单击“默认网络”中的“订餐系统程序”文件夹,在右侧右击“Default.aspx”,选择“浏览”即可打开本网站,如下图所示。浏览网站(三)注意事项本系统的网页采用XHTML+CSS进行布局。由于目前各大浏览器各自为战,对CSS标准的支持不一致,因此,建议在IE8.0中以1440*990分辨率浏览本系统的网页。在其他浏览器中页面可能会出现布局混乱。课程设计评分表