联系方式: 微信:biyebang QQ: 629001810
摘要
随着市场、经济的全球化,越来越多的企业认识到:提高企业的竞争力,选择信息化是必由之路。本文论述的订餐系统是针对餐饮娱乐业而设计的一种商务服务网站。其主要功能是完成外卖的前期和辅助工作,即通过网络进行定餐和对服务进行评价。而餐饮工作流程的其他部分如送外卖、付款等后期工作依旧采用传统方式。
微软的. NET平台作为新一代的互联网平台,提供了支持未来计算的高效的Web服务开发工具。利用.NET平台进行订餐系统的开发是此类系统未来开发的趋势之一。本文所设计的系统在.NET平台上进行开发,采用了最新的ASP.NET技术,用VB.NET进行了编码,并使用SQL server进行数据库设计,基本实现了预定的目标,建立起一个比较完整的外卖系统。其特点是方便快捷的操作方式,简单易懂的管理方法,因此对于企业和用户来说,都是一种新型的、节约型的系统。
目录
系统设计
1 数据库设计
1.1 关于SQL语言
SQL语言作为关系数据库管理系统中的一种通用的结构化查询语言,已经被众多的数据库管理系统所采用。使用Visual Basic.NET开发数据库应用程序时,用户可以使SQL语言编程,这是VisualBasic.NET作为一个强大的数据库应用开发工具的一个重要标志。
SQL语言被广泛采用是因为它有很多的优点:它是一个非过程化的语言,一次处理一个记录,对数据提供自动导航;SQL允许用户在高层的数据结构上工作,而部队单个记录进行操作,可操作记录集;接受集合作为输入,返回集合作为输出;允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法,是用户更易集中精力于要得到的记过。SQL可用于所有的用户,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的中断用户。由于所有的主要的关系数据库管理系统都支持SQL语言,用户可以将使用SQL的技能从一个关系数据库管理系统转到另一个;所有用SQL编写的程序都是可以移植的。
1.2 数据库设计结构
本设计主要由6个数据表组成:菜单表(dish),用户表(shopper),管理员表(manager),新订单表(neworder),添加订单表(orderadd)存储用户的订餐信息,留言信息表(message)存储留言,这些表都集中在一个数据库里面。
数据表:
与用户相关的数据表有:菜单表(dish),用户表(shopper),新订单表(neworder),添加订单表(orderadd),留言信息表(message)。分别如表1,表2,表3,表4所示。
1 系统设计
4.1系统总体流程
系统的总体流程如图1所示,注册用户可以进行订餐和留言、评分;管理员可以进行订单管理,留言和评分管理,用户管理,菜单管理等操作。
1.1 系统模块设计
总体分为用户和管理员两个模块
1.1.1 用户模块
1.新用户注册:填写注册信息。
2.注册用户登录:只有登录才能查看留言和订餐。
3.订餐:记录用户的订餐信息。
4.留言:记录用户的留言和评分信息。
管理员模块
1.订单管理:对用户的订单进行处理或删除。
2.留言管理:对用户的留言进行查看或删除。
3.用户管理:对用户信息进行查看或删除。
4.菜单管理:对菜单进行修改或者删除,添加新菜品。
系统实现
1 系统实现
1.1 用户功能模块实现
用户模块包括:新用户注册,注册用户登录,注册用户订餐,注册用户留言和评分。
1.1.1 新用户注册
用户填写注册信息包括必填项:用户名,密码,验证密码,email;和可选填写的信息。注册成功后返回登录成功页面,可以选择进行订餐和留言、评分操作。
流程图如下:
在提交的时候,检测用户名是否已经存在,若存在,则返回错误信息,重新填写注册信息。从工作流上看,只有注册成功后才可以进行订餐和留言。
代码如下:
conn.ConnectionString = "ConnectTimeout=5;packet size=4096;persist security info=False;initialcatalog=dishsale;data source=32A5C0037011401;user id=sa;password=''"‘链接数据库
cmd.Connection = conn
cmd.CommandType = CommandType.Text
conn.Open()
Dimstrsql As String= "select * from shopper where cshopperid='" & Trim(txtName.Text)& "'"
cmd = New SqlCommand(strsql, conn)
Dimreader As SqlDataReader = cmd.ExecuteReader()
If reader.Read() = True Then
namewrong.Text = "已有此用户名"
conn.Close()
Else
conn.Close()
所有信息正确便将密码加密之后,将所有信息插入数据表shopper中。
代码如下:
Dimconn1 As NewSystem.Data.SqlClient.SqlConnection
Dimcmd1 As NewSystem.Data.SqlClient.SqlCommand
Dimstr1 As String
Dimstr2 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;initialcatalog=dishsale;data source=32A5C0037011401;user id=sa;password=''"
cmd1.Connection = conn1
cmd1.CommandType =CommandType.Text
conn1.Open()
sqlstr = "insertshopper([cshopperid],[cpassword],[csex],[cage],[vaddress],[cphone],[vemail],[vmemo],[dregistertime],[dlastlandtime])values('"
sqlstr += txtName.Text &"','"
sqlstr += str2 &"','"
Ifman.Checked Then
sqlstr += "男','"
ElseIfwoman.Checked Then
sqlstr += "女','"
EndIf
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()
注册成功页面如下:
1.1.1 登录
用户需要填写用户名和密码,对输入的用户名与数据库的进行比较,若没有则返回错误,对密码也进行判断,因为密码在保存时是经过MD5加密的,所以在判断的时候也把输入的密码先进行MD5加密,然后进行比较。登录成功进入登录成功页面。
代码如下:
Dim cmd As NewSystem.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 AsSqlDataReader = 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()
1.1.1 订餐
使用DATAGRID绑定DISH表显示菜单,在DATAGRID上每行绑定一个多选按钮和下拉列表,进行多选和数量的选择。然后在文本框中输入送餐的地点,电话和其他的备注信息。若菜品和地址都填写好,则进入订餐成功页面,可以查看自己的订餐信息,可以进行修改和删除。若错误,则报告错误信息,返回订餐页面。
流程图如下:
绑定数据,代码如下:
'指定数据源并绑定到DataGrid控件
Private SubBindGrid()
Dim conn AsNew SqlConnection
Dim cmd AsNew SqlCommand
Dim DS AsNew DataSet
conn.ConnectionString = "Connect Timeout=5;packet size=4096;persistsecurity info=False;initial Catalog=dishsale;data source=32A5C0037011401;userid=sa;password=''"
conn.Open()
cmd.Connection = conn
Dim adpt1 AsNew SqlDataAdapter("selectcdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish", conn) ‘显示dish表的内容
adpt1.Fill(DS, "OUTER")
DataGrid1.DataSource = DS
DataGrid1.DataBind()
conn.Close()
End Sub
‘在绑定每行时,判断多选按钮的状态和下拉列表的状态
Private Sub DataGrid1_ItemDataBound(ByValsender As Object,ByVal e AsSystem.Web.UI.WebControls.DataGridItemEventArgs) HandlesDataGrid1.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim offset AsInteger
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
DimChkSelected As HtmlInputCheckBox = CType(e.Item.Cells(0).FindControl("ChkSelect"),HtmlInputCheckBox)
ChkSelected.Checked = True
offset =txtSaveValue.Value.IndexOf(",", offset)
Dimnumoffset As String
numoffset =txtSaveValue.Value.Substring(offset + 1, 1)
DimNumSelected As HtmlSelect = CType(e.Item.Cells(2).FindControl("snumber"),HtmlSelect)
Dimx As Integer
x = CInt(numoffset)- 1
NumSelected.SelectedIndex = x
End If
End If
End Sub
在点击提交时,判断选定的菜品及数量和输入的信息,并插入数据库。
代码如下:
Private SubSubmit_Click(ByVal sender As System.Object, ByVale As System.EventArgs) HandlesSubmit.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("<SCRIPT language=JavaScript>alert('提交成功!');")
Response.Write("this.location.href='order_suc.aspx';</SCRIPT>")
End If
End Sub
Private SubGetDishCart()
Dim IdList() AsString =txtSaveValue.Value.ToString().Split(";")
Dim tconn AsNew SqlConnection
Dim tcmd AsNew SqlCommand
Dim objReader AsSqlDataReader
Dim x AsInteger
tconn.ConnectionString ="Connect Timeout=5;packet size=4096;persist security info=False;initialcatalog=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 AsInteger = 0 ToIdList.Length - 2 Step 1
Dim NuList() AsString = IdList(i).Split(",")
tconn.Open()
tcmd.CommandType = CommandType.StoredProcedure
tcmd.CommandText = "orderinsert" ‘调用存储过程向neworder表插入数据
tcmd.Parameters.Clear()
tcmd.Parameters.Add(NewSqlParameter("@orderid", x))
tcmd.Parameters.Add(NewSqlParameter("@dishid", NuList(0)))
tcmd.Parameters.Add(NewSqlParameter("@dishnumber", NuList(1)))
tcmd.Parameters.Add(NewSqlParameter("@userid", Session("cshopperid")))
tcmd.Parameters.Add(NewSqlParameter("@birdate", DateTime.Now.ToLongDateString()))
tcmd.ExecuteNonQuery()
tconn.Close()
Next
'插入相应订单地址
Dim tsql AsString
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
源文件
版权所有© 帮我毕业网 并保留所有权利