1、第 1 页 毕 业 论 文基于 web 的订餐系统的设计与实现论文作者姓名: 申请学位专业: 申请学位类别: 指 导 教 师 姓 名 ( 职 称 ): 论文提交日期: 第 2 页 基于 web 的订餐系统的设计与实现摘要随着市场、经济的全球化,越来越多的企业认识到:提高企业的竞争力,选择信息化是必由之路。本文论述的订餐系统是针对餐饮娱乐业而设计的一种商务服务网站。其主要功能是完成外卖的前期和辅助工作,即通过网络进行定餐和对服务进行评价。而餐饮工作流程的其他部分如送外卖、付款等后期工作依旧采用传统方式。微软的. NET 平台作为新一代的互联网平台,提供了支持未来计算的高效的 Web 服务开发工具
2、。利用.NET 平台进行订餐系统的开发是此类系统未来开发的趋势之一。本文所设计的系统在.NET 平台上进行开发,采用了最新的ASP.NET 技术,用 VB.NET 进行了编码,并使用 SQL server 进行数据库设计,基本实现了预定的目标,建立起一个比较完整的外卖系统。其特点是方便快捷的操作方式,简单易懂的管理方法,因此对于企业和用户来说,都是一种新型的、节约型的系统。关键词:企业信息化;订餐系统;.NET;ASP.NET;SQL server第 3 页 The Design and Implementation of Bespeak Meal System Based on WebAbs
3、tractWith the globalization of market and economy, more and more enterprises realize that informatization is the only way to elevate their competence. Management Information System (MIS) is a critical component of Enterprise informatization。When diversified electronic business affairs web setup, ser
4、vice vocations have to come up with. Bespeak Meal System mostly used to accomplish accessorial work, namely order dish and grad the service. The evening as distribute and gathering we are still using traditional methods.As a new age Internet platform, MS's .NET provides efficiency Web service De
5、velopment tools which supports future computation. The development of take-away online system by .NET is necessarily the trend of this kind of system development in the coming years. The system development bases on the .NET platform, while adopts the most recent ASP.NET tech. The coding part is fini
6、shed by VB.NET. Finally, a comparatively entire Bespeak Meal system is completed, which satisfies the general requirements. As a new, conservation-oriented system, it is simple operation for user and manager. Key Words: Enterprise Informatization; Bespeak Meal System; .NET; ASP.NET; SQL server第 4 页
7、1 引言1.1 课题背景随着 21 世纪网络信息时代的到来,现代社会都是利用快速高效率的Internet 来传播大量信息资源。人们通过 IE 浏览信息,当然这种方式也是最常用的,这种方式的需求形成了电子商务。它的是指利用简单、快捷、低成本的电子通讯方式,买卖双方不出面也可以进行各种商贸活动。电子商务真正的发展将是建立在 Internet 技术上。现代化企业越来越明白,为了提高产品的销量,赢得更多的客户,不仅要在产品生产制造这一前方战场上增加实力,还必须在服务和效率上投入更多的力量。在产品质量相差不大的情况下,谁的服务好,效率高,谁就能赢得更多的顾客。这也是当今市场经济竞争机制下对企业的客观要求
8、。 近年来,由于互联网技术的飞速发展及其逐步普及,企业对信息进行网络化管理的条件已经日趋成熟,而传统的通过电话和传真来处理信息的传统方式已经越来越难以满足企业的需求。建立基于网络的管理和销售信息系统,成为企业提高效率、降低成本、完善服务的有力保证。而对于餐饮业,由于一个行业本身的特性,它的流通性是非常高的,所以更对企业的效率提出了更高的要求。微软的 NET 平台作为新一代的互联网平台,提供了支持未来计算的高效的Web 服务开发工具。利用 .NET 平台进行管理和销售系统的开发成为此类系统未来开发的趋势。1.2 本课题的研究内容本系统采用 B/S(Browser/Server)结构进行设计,使用
9、 SQL Server 2000构建数据库,并在.NET 环境下使用 Visual B 语言开发的一个功能较为完善的订餐系统。其具有一定的实用性,用户可以在网上浏览菜单,浏览留言和评分,订餐,留言和评分;同时,管理员也可以对整个系统的信息和数据进行管理,可以管理菜单信息、会员信息、留言信息和订单信息。1.3 本课题研究的意义本课题的目标是将传统的通过电话和面对面的销售的方式,转换到基于网络这样一个更方便快捷的方式。为企业节约了很多的时间和精力。时间就是金钱,对企业来说,节约时间就是节约成本,就是盈利。对用户来说,足不出户,就可以购买到自己想要吃的东西,对于所有的上班族来说,无疑是好之又好的事情
10、。而且现在的网络发展速度相当的惊人,那么基于网络的订餐也会越来越流行,必定是一个趋势。第 5 页 2 开发环境和相关技术2.1 .NET 开发平台及 VB.NET 开发语言.NET 框架是 Microsoft 公司推出的一种全新的开发平台,提供了统一的、面向对象并且可以扩展的编程类库和完善的集成开发环境,大大简化了应用程序的开发过程,并且具有良好的移植性和安全性。ASP.NET 是建立在公共语言运行库上的 Web 编程框架,相对于 ASP 而言,ASP.NET 提供了更强的性能、更方便的工具支持、更好的平台支持和灵活性。其一大革命性进步是可以将应用程序逻辑与表示代码清楚地分开,这样一来 Web
11、 应用程序的开发人员可以使用和Windows 桌面程序开发类似的编程模型,从而大大降低了开发难度。同时,ASP.NET 在进行用户界面开发和基础程序结构生成时具有很多优势。首先,ASP.NET 是一个已编译的、基于.NET 的开发环境,利用整个.NET 框架,开发人员可以方便的进行程序开发;其次,ASP.NET 可以无缝地与其它 HTML 编辑器及其编程工具一起工作,使得 Web 开发更加方便;再次,在 ASP.NET 中利用.NET 框架中的 ADO.NET 的强大功能,可以高效便捷的访问数据库,ASP.NET提供了简单的模型,该模型使开发人员能够编写应用程序的运行逻辑,并且保留了会话状态功
12、能;最后,.NET 框架和 ASP.NET 中提供了默认授权和验证方案,可以根据需要方便地移除、添加或者替换这些方案。Visual Basic.NET 语言是 Visual Basic 6.0 的后继版本,但它除了在语法上还保留 Visual Basic 原有的踪影外,在其他的很多方面都和 Visual Basic 截然不同。Visual Basic.NET 是一种完全面向对象的 BASIC 语言,它能够继承,重载,共享成员,结构化异常处理。它有强壮的语言,严格的类型检查,变量声明时候初始化,支持垃圾收集。功能强大,支持委托,Freethreading、Variant 数据类型被 Object
13、 代替。VB.NET 还提供了很多的类型转换函数型运算符,如果不是标准类型,就要用函数型运算符 CType 来实现。在本次课题中也有一定的使用。2.2 信息安全性在大多数系统中,用户的密码信息在数据库中是以明文的方式存放的,数据库管理员稍有疏忽就有可能导致用户的隐私泄漏,尤其是对于一些涉及金融、商业领域的网络应用,这一点漏洞将会导致十分严重的后果。所以,为了加强本系统信息的安全性,在用户登录模块中,对密码这样的敏感信息进行加密是十分必要的。本课题使用了一种常见的哈希加密算法MD5 加密算法。MD5 加密算法是不可逆的,经过哈希加密的数据是没有相应的解密算法回到原状的,在应用中是通过比较两个数据
14、的哈希值是否相等,从而达到校验的目的。本课第 6 页 题中,在新客户注册的时候,对客户设置的登录密码用 MD5 加密算法进行加密,那么存入数据库的将是客户登录密码的 MD5 哈希值,在登录验证时根据用户输入的密码计算响应的 MD5 哈希值进行比较。可见,通过 MD5 算法实现了数据的加密存储和验证,同时,MD5 加密是不可逆的,即使恶意攻击者获得了数据库的访问权限,也仍然无法得知用户的密码信息,从而提高了系统的安全性!3 数据库设计3.1 关于 SQL 语言SQL 语言作为关系数据库管理系统中的一种通用的结构化查询语言,已经被众多的数据库管理系统所采用。使用 Visual Basic.NET
15、开发数据库应用程序时,用户可以使 SQL 语言编程,这是 Visual Basic.NET 作为一个强大的数据库应用开发工具的一个重要标志。SQL 语言被广泛采用是因为它有很多的优点:它是一个非过程化的语言,一次处理一个记录,对数据提供自动导航;SQL 允许用户在高层的数据结构上工作,而部队单个记录进行操作,可操作记录集;接受集合作为输入,返回集合作为输出;允许一条 SQL 语句的结果作为另一条 SQL 语句的输入。SQL 不要求用户指定对数据的存放方法,是用户更易集中精力于要得到的记过。SQL 可用于所有的用户,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的中断用
16、户。由于所有的主要的关系数据库管理系统都支持 SQL 语言,用户可以将使用 SQL 的技能从一个关系数据库管理系统转到另一个;所有用 SQL 编写的程序都是可以移植的。3.2 数据库设计结构本设计主要由 6 个数据表组成:菜单表(dish) ,用户表(shopper) ,管理员表(manager) ,新订单表(neworder) ,添加订单表(orderadd)存储用户的订餐信息,留言信息表(message)存储留言,这些表都集中在一个数据库里面。数据表:与用户相关的数据表有:菜单表(dish) ,用户表(shopper) ,新订单表(neworder) ,添加订单表(orderadd) ,留
17、言信息表(message) 。分别如表1,表 2,表 3,表 4 所示。表 1 菜单表(dish)第 7 页 主键和外键均为(cdishid)列名 中文名称 数据类型 长度 是否允许空Cdishid 菜品编号 Char 10 Not nullVdishname 菜名 Varchar 60 Not nullVdishdescription 简介 Varchar 300 Not nullCdishrate 价格 Char 10 Not null表 2 用户表(shopper)主键和外键均为(cshopperid)列名 中文名称 数据类型 长度 是否允许空Cshopperid 用户名 Char 10
18、 Not nullCpassword 密码 Char 50 Not nullVemail 电子邮箱 Varchar 50 Not nullCphone 电话 Char 15 NullVmemo 备注 Varchar 200 NullCsex 性别 Char 10 Not nullCage 年龄 Char 10 NullDregistertime 注册时间 Datatime 8 Not nullDlastlandtime 最后登录时间 Datatime 8 NullVaddress 地址 Varchar 50 null表 3 新订单表(neworder)主键为(oid) 外键为(dishid 和
19、 userid)列名 中文名称 数据类型 长度 是否允许空oid 订单序号 numeric 9 Not nullOrderid 订单号 Char 10 Not nullDishnumber 数量 Int 4 Not nullUserid 用户名 Char 10 Not nullStatus 是否确认 Int 4 Not nulldedate 处理日期 varChar 20 NullBirdate 订餐时间 Varchat 20 Not null表 4 添加订单表(orderadd)列名 中文名称 数据类型 长度 是否允许空Orderid 订单号 Char 10 Not nullOrderadd
20、ress 送餐地址 Varchar 50 Not null表 5 留言信息表(message)第 8 页 主键为(cmessageid)外键为(cshopperid)列名 中文名称 数据类型 长度 是否允许空Cmessageid 留言编号 Char 10 Not nullCshopperid 用户 Char 10 Not nullDmessagetime 留言时间 Datatime 8 Not nullVmessage 留言内容 Varchar 500 Not nullCscore 评分 Char 10 Not null与管理员相关的数据表有:管理员表(manager) ,如表 6。表 6 管
21、理员表(manager)主键为和外键均为(cmanagerid)列名 中文名称 数据类型 长度 是否允许空Cmanagerid 管理员 ID Char 20 Not nullCpassword 密码 Char 50 Not nullcpurview 权限 Char 10 Not null4 系统设计4.1 系统总体流程系统的总体流程如图 1 所示,注册用户可以进行订餐和留言、评分;管理员可以进行订单管理,留言和评分管理,用户管理,菜单管理等操作。第 9 页 图 1 系统总体流程图4.1 系统模块设计总体分为用户和管理员两个模块4.1.1 用户模块第 10 页 图 2 用户模块流程图1.新用户注
22、册:填写注册信息。2.注册用户登录:只有登录才能查看留言和订餐。3.订餐:记录用户的订餐信息。4.留言:记录用户的留言和评分信息。第 11 页 4.1.2 管理员模块图 3 管理员模块流程图1.订单管理:对用户的订单进行处理或删除。2.留言管理:对用户的留言进行查看或删除。3.用户管理:对用户信息进行查看或删除。4.菜单管理:对菜单进行修改或者删除,添加新菜品。5 系统实现5.1 用户功能模块实现用户模块包括:新用户注册,注册用户登录,注册用户订餐,注册用户留言和评分。5.1.1 新用户注册用户填写注册信息包括必填项:用户名,密码,验证密码,email;和可选填写的信息。注册成功后返回登录成功
23、页面,可以选择进行订餐和留言、评分操作。流程图如下:结束第 12 页 图 4 注册流程图注册页面设计如图:图 5 注册页面在提交的时候,检测用户名是否已经存在,若存在,则返回错误信息,重新填写注册信息。从工作流上看,只有注册成功后才可以进行订餐和留言。代码如下:conn.ConnectionString = “Connect Timeout=5;packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password='
24、9;“链接数据库cmd.Connection = conncmd.CommandType = CommandType.Textconn.Open()Dim strsql As String = “select * from shopper where cshopperid='“ packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password=''“cmd1.Connection = conn1cmd1
25、.CommandType = CommandType.Textconn1.Open()sqlstr = “insert shopper(cshopperid,cpassword,csex,cage,vaddress,cphone,vemail,vmemo,dregistertime,dlastlandtime) values('“sqlstr += txtName.Text packet size=4096;persist security info=False;initial Catalog=dishsale;data source=32A5C0037011401;user id=s
26、a;password=''“第 17 页 conn.Open()cmd.Connection = connDim adpt1 As New SqlDataAdapter(“select cdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish“, conn) 显示dish表的内容adpt1.Fill(DS, “OUTER“)DataGrid1.DataSource = DSDataGrid1.DataBind()conn.Close()End Sub 在绑定每行时,判断多选按钮的状态和下拉列表的状态Pri
27、vate Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBoundIf e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem ThenDim offset As Integeroffset = txtSaveValue.Value.IndexOf(CT
28、ype(e.Item.Cells(1).FindControl(“TitleShow“), Literal).Text)If txtSaveValue.Value.IndexOf(CType(e.Item.Cells(1).FindControl(“TitleShow“), Literal).Text) = 0 ThenDim ChkSelected As HtmlInputCheckBox = CType(e.Item.Cells(0).FindControl(“ChkSelect“), HtmlInputCheckBox)ChkSelected.Checked = Trueoffset =
29、 txtSaveValue.Value.IndexOf(“,“, offset)Dim numoffset As Stringnumoffset = txtSaveValue.Value.Substring(offset + 1, 1)Dim NumSelected As HtmlSelect = CType(e.Item.Cells(2).FindControl(“snumber“), HtmlSelect)Dim x As Integerx = CInt(numoffset) - 1NumSelected.SelectedIndex = xEnd IfEnd IfEnd Sub在点击提交时
30、,判断选定的菜品及数量和输入的信息,并插入数据库。代码如下:Private Sub Submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit.ClickIf txtSaveValue.Value = “ ThenMe.lb_info.Text = “请选择菜品!“第 18 页 ElseIf Request(“memo“) = “ ThenMe.lb_info.Text = “请输入您的地址!“ElseGetDishCart() 调用GetDishCart将数据写入数
31、据库Me.lb_info.Text = “suc“Response.Write(“alert('提交成功!');“)Response.Write(“this.location.href='order_suc.aspx'“)End IfEnd SubPrivate Sub GetDishCart()Dim IdList() As String = txtSaveValue.Value.ToString().Split(“;“)Dim tconn As New SqlConnectionDim tcmd As New SqlCommandDim objReader
32、As SqlDataReaderDim x As Integertconn.ConnectionString = “Connect Timeout=5;packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password=''“tconn.Open()tcmd.Connection = tconntcmd.CommandText = “select orderid from neworder order by oi
33、d desc“objReader = tcmd.ExecuteReader()If objReader.Read Thenx = CInt(objReader(“orderid“) + 1End IfobjReader.Close()tconn.Close()For i As Integer = 0 To IdList.Length - 2 Step 1Dim NuList() As String = IdList(i).Split(“,“)tconn.Open()tcmd.CommandType = CommandType.StoredProceduretcmd.CommandText =
34、“orderinsert“ 调用存储过程向neworder表插入数据tcmd.Parameters.Clear()tcmd.Parameters.Add(New SqlParameter(“orderid“, x)tcmd.Parameters.Add(New SqlParameter(“dishid“, NuList(0)tcmd.Parameters.Add(New SqlParameter(“dishnumber“, NuList(1)tcmd.Parameters.Add(New SqlParameter(“userid“, Session(“cshopperid“)tc
35、md.Parameters.Add(New SqlParameter(“birdate“, DateTime.Now.ToLongDateString()tcmd.ExecuteNonQuery()第 19 页 tconn.Close()Next'插入相应订单地址Dim tsql As Stringtsql = “Insert into orderadd values('“ “)Response.Write(“this.location.href='message.aspx'“)End Ifsqlstr = “insert message(cmessageid,
36、cshopperid,dmessagetime,cscore,vmessage) values('+ cmessageid ','“ “)Response.Write(“this.location.href='message.aspx '“)留言成功后,将 DATAGRID 重新绑定,返回到留言页面。5.2 管理员模块第 21 页 在此模块中,采用技术都是一样的,所以同一种操作只列出一个。5.2.1 订单管理使用 DATAGRID 绑定数据库显示订单信息,订单信息分为三类,已经确认的和没有确认的还有已经处理的。没有确认的订单信息,管理员都可以进行确认或者
37、删除。流程图如下:图 14 订单管理流程图确认订单代码如下:'command事件处理Sub PickArt(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)If e.CommandName = “Delete“ ThenDim Selected_Id As IntegerSelected_Id = CInt(e.Item.Cells(2).Text)Dim conn As New SqlConnectionDim cmd As New SqlCommandconn.ConnectionString = “Conne
38、ct Timeout=5;packet size=4096;persist security info=False;initial Catalog=dishsale;data source=32A5C0037011401;user id=sa;password=''“conn.Open()cmd.Connection = conn'形成delete语句cmd.CommandText = “delete from neworder where dishid =“ packet size=4096;persist security info=False;initial Ca
39、talog=dishsale;data source=32A5C0037011401;user id=sa;password=''“第 22 页 conn.Open()cmd.Connection = conn'形成更新语句修改处理的标志位cmd.CommandText = “update neworder set status= status+1 where dishid =“ packet size=4096;persist security info=False;initial Catalog=dishsale;data source=32A5C003701140
40、1;user id=sa;password=''“conn.Open()第 23 页 cmd.Connection = conn'形成delete语句cmd.CommandText = “delete from message where id “ packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password=''“cmd2.Connection = conn2cmd2.Comman
41、dType = CommandType.Textconn2.Open()strsql = “Insert Into dish (cdishid,vdishname,vdishdescription,cdishrate ) Values('x','“ “)Response.Write(“this.location.href='menumanage.aspx '“)5.2.4 用户管理同样采用 DATAGRID 绑定数据库进行显示,在 DATAGRID 上添加按钮列:删除,进行删除操作。流程图如下:图 17 用户管理流程图结 论随着互联网的兴起和
42、普及,网络信息化的发展,在线订餐作为一种较为典型的 Web 电子商务系统也迅速的发展并深入人们的日常生活中。Web 订餐系统跨越了时间和空间的限制,给餐饮业带来了不一样的变革,也给消费者带来了第 25 页 便捷。本系统采用 B/S(Browser/Server)结构进行设计,使用 SQL Server 2000构建数据库,并在.NET 环境下使用 Visual B 语言开发的一个功能较为完善的订餐系统。其具有一定的实用性,用户可以在网上浏览菜单,浏览留言和评分,订餐,留言和评分;同时,管理员也可以对整个系统的信息和数据进行管理,可以管理菜单信息、会员信息、留言信息和订单信息。虽然这次的订餐系统
43、它是电子商务系统,但是它只具备电子商务系统的一些功能,距离实际应用还有一定距离,需要进一步增强系统的功能。今后在程序中可以增加模块,例如建立起银行字符网关接口和安全通道,并利用数字签名和身份认证等技术,使用户在网上可以直接进行电子支付等,最后建成一个真正的电子商务系统!参考文献1 方睿,刁仁宏,吴四九.网络数据库原理及应用M.成都:四川大学出版社,2010。2 吉根林,崔海源.ASP.NET 程序设计教程M. 北京:电子工业出版社,20103 何明国.Visual Basic.NET 程序设计ADO.NET 详解M.北京:中国水利出版社,2009。4 陈语林.Visual Basic.NET
44、程序设计教程M.北京:中国水利出版社,2005。5 Ken Spencer美.Visual Basic.NET 面向对象可重用组件开发M.北京:清华大学出版社,2010。6 Micheal Halvorson美.Visual Basic.NET 程序设计M.北京:清华大学出版社,2002。7 Bill Forgey美,Denise Gosnell美,Matthew Reynolds美.Visual Basic.NET 数据库开发入门经典M.北京:清华大学出版社,20108 Evangelos Petroutsos美,Asli Bilgin美.Visual Basic.NET 数据库编程从入门到精通M.北京:电子工业出版社,2008。第 26 页 致 谢本文是在老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!感谢所有给予过我帮助和指导的各位老师,感谢他们大学四年来对我学习和知识实践上的帮助和指导。同时,感谢所有给予过我帮助的同学和朋友。感谢我所有家人的鼓励与支持!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!