毕业设计(论文)-ASP.NET某酒店订餐系统的设计.doc_第1页
毕业设计(论文)-ASP.NET某酒店订餐系统的设计.doc_第2页
毕业设计(论文)-ASP.NET某酒店订餐系统的设计.doc_第3页
毕业设计(论文)-ASP.NET某酒店订餐系统的设计.doc_第4页
毕业设计(论文)-ASP.NET某酒店订餐系统的设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

某酒店订餐系统的设计摘要随着市场、经济的全球化,越来越多的企业认识到:提高企业的竞争力,选择信息化是必由之路。本文论述的订餐系统是针对餐饮娱乐业而设计的一种商务服务网站。其主要功能是完成外卖的前期和辅助工作,即通过网络进行定餐和对服务进行评价。而餐饮工作流程的其他部分如送外卖、付款等后期工作依旧采用传统方式。微软的. NET平台作为新一代的互联网平台,提供了支持未来计算的高效的Web服务开发工具。利用.NET平台进行订餐系统的开发是此类系统未来开发的趋势之一。本文所设计的系统在.NET平台上进行开发,采用了最新的ASP.NET技术,用VB.NET进行了编码,并使用SQL server进行数据库设计,基本实现了预定的目标,建立起一个比较完整的外卖系统。其特点是方便快捷的操作方式,简单易懂的管理方法,因此对于企业和用户来说,都是一种新型的、节约型的系统。关键词:企业信息化;订餐系统;.NET;ASP.NET;SQL serverThe Design and Implementation of Bespeak Meal System Based on WebAbstractWith 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, service 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, MSs .NET provides efficiency Web service Development 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 finished 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目 录论文总页数:24页1引言11.1课题背景11.2本课题的研究内容11.3本课题研究的意义12开发环境和相关技术22.1.NET开发平台及VB.NET开发语言22.2信息安全性23数据库设计33.1关于SQL语言33.2数据库设计结构34系统设计54.1系统总体流程54.1系统模块设计64.1.1用户模块64.1.2管理员模块85系统实现85.1用户功能模块实现85.1.1新用户注册85.1.2登录115.1.3订餐125.1.4留言165.2管理员模块175.2.1订单管理175.2.2留言管理195.2.3菜单管理205.2.4用户管理21结 论21参考文献221引言1.1 课题背景随着21世纪网络信息时代的到来,现代社会都是利用快速高效率的Internet来传播大量信息资源。人们通过IE浏览信息,当然这种方式也是最常用的,这种方式的需求形成了电子商务。它的是指利用简单、快捷、低成本的电子通讯方式,买卖双方不出面也可以进行各种商贸活动。电子商务真正的发展将是建立在Internet技术上。现代化企业越来越明白,为了提高产品的销量,赢得更多的客户,不仅要在产品生产制造这一前方战场上增加实力,还必须在服务和效率上投入更多的力量。在产品质量相差不大的情况下,谁的服务好,效率高,谁就能赢得更多的顾客。这也是当今市场经济竞争机制下对企业的客观要求。 近年来,由于互联网技术的飞速发展及其逐步普及,企业对信息进行网络化管理的条件已经日趋成熟,而传统的通过电话和传真来处理信息的传统方式已经越来越难以满足企业的需求。建立基于网络的管理和销售信息系统,成为企业提高效率、降低成本、完善服务的有力保证。而对于餐饮业,由于一个行业本身的特性,它的流通性是非常高的,所以更对企业的效率提出了更高的要求。微软的NET平台作为新一代的互联网平台,提供了支持未来计算的高效的Web服务开发工具。利用.NET平台进行管理和销售系统的开发成为此类系统未来开发的趋势。1.2 本课题的研究内容本系统采用B/S(Browser/Server)结构进行设计,使用SQL Server 2000构建数据库,并在.NET环境下使用Visual B语言开发的一个功能较为完善的订餐系统。其具有一定的实用性,用户可以在网上浏览菜单,浏览留言和评分,订餐,留言和评分;同时,管理员也可以对整个系统的信息和数据进行管理,可以管理菜单信息、会员信息、留言信息和订单信息。1.3 本课题研究的意义本课题的目标是将传统的通过电话和面对面的销售的方式,转换到基于网络这样一个更方便快捷的方式。为企业节约了很多的时间和精力。时间就是金钱,对企业来说,节约时间就是节约成本,就是盈利。对用户来说,足不出户,就可以购买到自己想要吃的东西,对于所有的上班族来说,无疑是好之又好的事情。而且现在的网络发展速度相当的惊人,那么基于网络的订餐也会越来越流行,必定是一个趋势。2 开发环境和相关技术2.1 .NET开发平台及VB.NET开发语言.NET框架是Microsoft公司推出的一种全新的开发平台,提供了统一的、面向对象并且可以扩展的编程类库和完善的集成开发环境,大大简化了应用程序的开发过程,并且具有良好的移植性和安全性。ASP.NET是建立在公共语言运行库上的Web编程框架,相对于ASP而言,ASP.NET提供了更强的性能、更方便的工具支持、更好的平台支持和灵活性。其一大革命性进步是可以将应用程序逻辑与表示代码清楚地分开,这样一来Web应用程序的开发人员可以使用和Windows桌面程序开发类似的编程模型,从而大大降低了开发难度。同时,ASP.NET在进行用户界面开发和基础程序结构生成时具有很多优势。首先,ASP.NET是一个已编译的、基于.NET的开发环境,利用整个.NET框架,开发人员可以方便的进行程序开发;其次,ASP.NET可以无缝地与其它HTML编辑器及其编程工具一起工作,使得Web开发更加方便;再次,在ASP.NET中利用.NET框架中的ADO.NET的强大功能,可以高效便捷的访问数据库,ASP.NET提供了简单的模型,该模型使开发人员能够编写应用程序的运行逻辑,并且保留了会话状态功能;最后,.NET框架和ASP.NET中提供了默认授权和验证方案,可以根据需要方便地移除、添加或者替换这些方案。Visual Basic.NET语言是Visual Basic 6.0的后继版本,但它除了在语法上还保留Visual Basic原有的踪影外,在其他的很多方面都和Visual Basic截然不同。Visual Basic.NET是一种完全面向对象的BASIC语言,它能够继承,重载,共享成员,结构化异常处理。它有强壮的语言,严格的类型检查,变量声明时候初始化,支持垃圾收集。功能强大,支持委托,Freethreading、Variant数据类型被Object代替。VB.NET还提供了很多的类型转换函数型运算符,如果不是标准类型,就要用函数型运算符CType来实现。在本次课题中也有一定的使用。2.2 信息安全性在大多数系统中,用户的密码信息在数据库中是以明文的方式存放的,数据库管理员稍有疏忽就有可能导致用户的隐私泄漏,尤其是对于一些涉及金融、商业领域的网络应用,这一点漏洞将会导致十分严重的后果。所以,为了加强本系统信息的安全性,在用户登录模块中,对密码这样的敏感信息进行加密是十分必要的。本课题使用了一种常见的哈希加密算法MD5加密算法。MD5加密算法是不可逆的,经过哈希加密的数据是没有相应的解密算法回到原状的,在应用中是通过比较两个数据的哈希值是否相等,从而达到校验的目的。本课题中,在新客户注册的时候,对客户设置的登录密码用MD5加密算法进行加密,那么存入数据库的将是客户登录密码的MD5哈希值,在登录验证时根据用户输入的密码计算响应的MD5哈希值进行比较。可见,通过MD5算法实现了数据的加密存储和验证,同时,MD5加密是不可逆的,即使恶意攻击者获得了数据库的访问权限,也仍然无法得知用户的密码信息,从而提高了系统的安全性!3 数据库设计3.1 关于SQL语言SQL语言作为关系数据库管理系统中的一种通用的结构化查询语言,已经被众多的数据库管理系统所采用。使用Visual Basic.NET开发数据库应用程序时,用户可以使SQL语言编程,这是Visual Basic.NET作为一个强大的数据库应用开发工具的一个重要标志。SQL语言被广泛采用是因为它有很多的优点:它是一个非过程化的语言,一次处理一个记录,对数据提供自动导航;SQL允许用户在高层的数据结构上工作,而部队单个记录进行操作,可操作记录集;接受集合作为输入,返回集合作为输出;允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法,是用户更易集中精力于要得到的记过。SQL可用于所有的用户,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的中断用户。由于所有的主要的关系数据库管理系统都支持SQL语言,用户可以将使用SQL的技能从一个关系数据库管理系统转到另一个;所有用SQL编写的程序都是可以移植的。3.2 数据库设计结构本设计主要由6个数据表组成:菜单表(dish),用户表(shopper),管理员表(manager),新订单表(neworder),添加订单表(orderadd)存储用户的订餐信息,留言信息表(message)存储留言,这些表都集中在一个数据库里面。数据表:与用户相关的数据表有:菜单表(dish),用户表(shopper),新订单表(neworder),添加订单表(orderadd),留言信息表(message)。分别如表1,表2,表3,表4所示。表1 菜单表(dish)主键和外键均为(cdishid)列名中文名称数据类型长度是否允许空Cdishid菜品编号Char10Not nullVdishname菜名Varchar60Not nullVdishdescription简介Varchar300Not nullCdishrate价格Char10Not null表2 用户表(shopper)主键和外键均为(cshopperid)列名中文名称数据类型长度是否允许空Cshopperid用户名Char10Not nullCpassword密码Char50Not nullVemail电子邮箱Varchar50Not nullCphone电话Char15NullVmemo备注Varchar200NullCsex性别Char10Not nullCage年龄Char10NullDregistertime注册时间Datatime8Not nullDlastlandtime最后登录时间Datatime8NullVaddress地址Varchar50null表3 新订单表(neworder)主键为(oid) 外键为(dishid和userid)列名中文名称数据类型长度是否允许空oid订单序号numeric9Not nullOrderid订单号Char10Not nullDishnumber数量Int4Not nullUserid用户名Char10Not nullStatus是否确认Int4Not nulldedate处理日期varChar20NullBirdate订餐时间Varchat20Not null表4添加订单表(orderadd)列名中文名称数据类型长度是否允许空Orderid订单号Char10Not nullOrderaddress送餐地址Varchar50Not null表5 留言信息表(message)主键为(cmessageid)外键为(cshopperid)列名中文名称数据类型长度是否允许空Cmessageid留言编号Char10Not nullCshopperid用户Char10Not nullDmessagetime留言时间Datatime8Not nullVmessage留言内容Varchar500Not nullCscore评分Char10Not null与管理员相关的数据表有:管理员表(manager),如表6。表6 管理员表(manager)主键为和外键均为(cmanagerid)列名中文名称数据类型长度是否允许空Cmanagerid管理员IDChar20Not nullCpassword密码Char50Not nullcpurview权限Char10Not null4 系统设计4.1系统总体流程系统的总体流程如图1所示,注册用户可以进行订餐和留言、评分;管理员可以进行订单管理,留言和评分管理,用户管理,菜单管理等操作。图1 系统总体流程图4.1 系统模块设计总体分为用户和管理员两个模块4.1.1 用户模块图2 用户模块流程图1.新用户注册:填写注册信息。2.注册用户登录:只有登录才能查看留言和订餐。3.订餐:记录用户的订餐信息。4.留言:记录用户的留言和评分信息。4.1.2 管理员模块结束图3 管理员模块流程图1.订单管理:对用户的订单进行处理或删除。2.留言管理:对用户的留言进行查看或删除。3.用户管理:对用户信息进行查看或删除。4.菜单管理:对菜单进行修改或者删除,添加新菜品。5 系统实现5.1 用户功能模块实现用户模块包括:新用户注册,注册用户登录,注册用户订餐,注册用户留言和评分。5.1.1 新用户注册用户填写注册信息包括必填项:用户名,密码,验证密码,email;和可选填写的信息。注册成功后返回登录成功页面,可以选择进行订餐和留言、评分操作。流程图如下:填写注册信息信息检测N写入数据库显示注册成功Y图4 注册流程图注册页面设计如图:图5 注册页面在提交的时候,检测用户名是否已经存在,若存在,则返回错误信息,重新填写注册信息。从工作流上看,只有注册成功后才可以进行订餐和留言。代码如下: conn.ConnectionString = Connect Timeout=5;packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password=链接数据库 cmd.Connection = conn cmd.CommandType = CommandType.Text conn.Open() Dim strsql As String = select * from shopper where cshopperid= & Trim(txtName.Text) & cmd = New SqlCommand(strsql, conn) Dim reader As SqlDataReader = cmd.ExecuteReader() If reader.Read() = True Then namewrong.Text = 已有此用户名 conn.Close() Else conn.Close()所有信息正确便将密码加密之后,将所有信息插入数据表shopper中。代码如下: Dim conn1 As New System.Data.SqlClient.SqlConnection Dim cmd1 As New System.Data.SqlClient.SqlCommand Dim str1 As String Dim str2 As String str1 = Password1.Text str2 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str1, MD5)使用MD5加密算法加密密码文本框的值 conn1.ConnectionString = Connect Timeout=5;packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password= cmd1.Connection = conn1 cmd1.CommandType = CommandType.Text conn1.Open() sqlstr = insert shopper(cshopperid,cpassword,csex,cage,vaddress,cphone,vemail,vmemo,dregistertime,dlastlandtime) values( sqlstr += txtName.Text & , sqlstr += str2 & , If man.Checked Then sqlstr += 男, ElseIf woman.Checked Then sqlstr += 女, End If sqlstr += txtAge.Text & , sqlstr += txtAddress.Text & , sqlstr += txtPhone.Text & , sqlstr += txtEmail.Text & , sqlstr += txtMemo.Text & , sqlstr += System.DateTime.Now & , sqlstr += System.DateTime.Now & ) cmd1.CommandText = sqlstr 将注册信息插入数据库 cmd1.ExecuteNonQuery() conn1.Close() 注册成功页面如下:图6 注册成功5.1.2 登录用户需要填写用户名和密码,对输入的用户名与数据库的进行比较,若没有则返回错误,对密码也进行判断,因为密码在保存时是经过MD5加密的,所以在判断的时候也把输入的密码先进行MD5加密,然后进行比较。登录成功进入登录成功页面。注册用户登录与数据库记录进行匹配NY登录成功流程图如下:图7 登录流程图登录页面设计如下:图8 登录页面代码如下: Dim cmd As New System.Data.SqlClient.SqlCommand conn.Open()Dim str As String str = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPass.Text, MD5) 使用MD5加密密码文本框的值,用于下面跟数据库里面的值进行比较 cmd.CommandText = select * from shopper where cshopperid= & Trim(txtName.Text) & and cpassword= & str & cmd.Connection = conn Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then Session(cshopperid) = Trim(reader(cshopperid) 检测用户名是否已经存在 Response.Redirect(login_suc.aspx) Else Session(cshopperid) = Nothing wrong.Text = 用户名或者密码错误! End If conn.Close() 登录成功后界面如下:图9 登录成功5.1.3 订餐使用DATAGRID绑定DISH表显示菜单,在DATAGRID上每行绑定一个多选按钮和下拉列表,进行多选和数量的选择。然后在文本框中输入送餐的地点,电话和其他的备注信息。若菜品和地址都填写好,则进入订餐成功页面,可以查看自己的订餐信息,可以进行修改和删除。若错误,则报告错误信息,返回订餐页面。流程图如下:图10 订餐流程图订餐页面设计如下:图11 订餐页面 绑定数据,代码如下: 指定数据源并绑定到DataGrid控件 Private Sub BindGrid() Dim conn As New SqlConnection Dim cmd As New SqlCommand Dim DS As New DataSet conn.ConnectionString = Connect Timeout=5;packet size=4096;persist security info=False;initial Catalog=dishsale;data source=32A5C0037011401;user id=sa;password= conn.Open() cmd.Connection = conn Dim adpt1 As New SqlDataAdapter(select cdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish, conn) 显示dish表的内容 adpt1.Fill(DS, OUTER) DataGrid1.DataSource = DS DataGrid1.DataBind() conn.Close() End Sub 在绑定每行时,判断多选按钮的状态和下拉列表的状态Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then Dim offset As Integer offset = txtSaveValue.Value.IndexOf(CType(e.Item.Cells(1).FindControl(TitleShow), Literal).Text) If txtSaveValue.Value.IndexOf(CType(e.Item.Cells(1).FindControl(TitleShow), Literal).Text) = 0 Then Dim ChkSelected As HtmlInputCheckBox = CType(e.Item.Cells(0).FindControl(ChkSelect), HtmlInputCheckBox) ChkSelected.Checked = True offset = txtSaveValue.Value.IndexOf(, offset) Dim numoffset As String numoffset = txtSaveValue.Value.Substring(offset + 1, 1) Dim NumSelected As HtmlSelect = CType(e.Item.Cells(2).FindControl(snumber), HtmlSelect) Dim x As Integer x = CInt(numoffset) - 1 NumSelected.SelectedIndex = x End If End If End Sub在点击提交时,判断选定的菜品及数量和输入的信息,并插入数据库。代码如下: Private Sub Submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit.Click If txtSaveValue.Value = Then Me.lb_info.Text = 请选择菜品! ElseIf Request(memo) = Then Me.lb_info.Text = 请输入您的地址! Else GetDishCart() 调用GetDishCart将数据写入数据库 Me.lb_info.Text = suc Response.Write(alert(提交成功!);) Response.Write(this.location.href=order_suc.aspx;) End If End Sub Private Sub GetDishCart() Dim IdList() As String = txtSaveValue.Value.ToString().Split(;) Dim tconn As New SqlConnection Dim tcmd As New SqlCommand Dim objReader As SqlDataReader Dim x As Integer tconn.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 = tconn tcmd.CommandText = select orderid from neworder order by oid desc objReader = tcmd.ExecuteReader() If objReader.Read Then x = CInt(objReader(orderid) + 1 End If objReader.Close() tconn.Close() For i As Integer = 0 To IdList.Length - 2 Step 1 Dim NuList() As String = IdList(i).Split(,) tconn.Open() tcmd.CommandType = CommandType.StoredProcedure tcmd.CommandText = 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) tcmd.Parameters.Add(New SqlParameter(birdate, DateTime.Now.ToLongDateString() tcmd.ExecuteNonQuery() tconn.Close() Next 插入相应订单地址 Dim tsql As String tsql = Insert into orderadd values( & x & , & Request(memo) & ) tcmd.CommandType = CommandType.Text tcmd.CommandText = tsql tconn.Open() tcmd.ExecuteNonQuery() tconn.Close() Session(orderid) = CStr(x) End Sub 订餐成功后,页面如下:图12 订餐成功页面5.1.4 留言在留言页面,用户可以对服务进行评分,同时进行留言对留言的显示同样采用DATAGRID对数据库进行读取然后显示。提交留言的时候对分数进行判断,然后对留言内容是否为空进行判断,然后写进数据库。流程图如下:图13 留言流程图代码如下:If Request(word) = Then Response.Write(alert(留言信息不能为空!);) Response.Write(this.location.href=message.aspx;) End If sqlstr = insert message(cmessageid,cshopperid,dmessagetime,cscore,vmessage) values(+ cmessageid , & Session(cshopperid) & , & System.DateTime.Now & ,判断评分的分数值 If s1.Checked Then sqlstr += 1, ElseIf s2.Checked Then sqlstr += 2, ElseIf s3.Checked Then sqlstr += 3, ElseIf s4.Checked Then sqlstr += 4, ElseIf s5.Checked Then sqlstr += 5, End If sqlstr += Request(word) & ) cmd1.CommandText = sqlstr cmd1.ExecuteNonQuery() conn1.Close() BindGrid() Response.Write(alert(留言成功!);) Response.Write(this.location.href=message.aspx ;)留言成功后,将DATAGRID重新绑定,返回到留言页面。5.2 管理员模块在此模块中,采用技术都是一样的,所以同一种操作只列出一个。5.2.1 订单管理5.2.2 留言管理使用DATAGRID绑定数据库显示留言信息,在DATAGRID上添加一列按钮列进行删除操作。流程图如下:图15 留言管理流程图代码如下: 删除事件处理 Sub PickArt(ByVal sender As Object, ByVal e As DataGridCommandEventArgs) If e.CommandName = Delete Then Dim Selected_Id As Integer Selected_Id = CInt(e.Item.Cells(1).Text) Dim conn As New SqlConnection Dim cmd As New SqlCommand conn.ConnectionString = Connect 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 message where id & Selected_Id cmd.ExecuteNonQuery() conn.Close() End If BindGrid()End Sub5.2.3 菜单管理使用DATAGRID绑定数据库显示留言信息,在DATAGRID上添加两个按钮列进行删除操作和更新操作,还可进行新菜品的添加。流程图如下:图16 菜单管理流程图添加菜品代码如下: cmd1.CommandText = select max(cdishid) maxcdishid from dish 查找菜品ID 的最大值 objReader = cmd1.ExecuteReader() If objReader.Read Then x = CInt(objReader(maxcdishid) + 1 将最大值+1 End If objR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论