ASP.NET基于web的訂餐系統(tǒng)的設(shè)計與實現(xiàn)(源代碼+論文)
ASP.NET基于web的訂餐系統(tǒng)的設(shè)計與實現(xiàn)(源代碼+論文),ASP,NET,基于,web,系統(tǒng),設(shè)計,實現(xiàn),源代碼,論文
分類號:TP315 UDC: D10621-408-(2007) 6157-0
密 級 :公開 編號 :2003031291
成都信息工程學(xué)院
學(xué)位論文
基于web的訂餐系統(tǒng)的設(shè)計與實現(xiàn)
論文作者姓名:
李倩
申請學(xué)位專業(yè):
計算機科學(xué)與技術(shù)
申請學(xué)位類別:
工學(xué)學(xué)士
指導(dǎo)教師姓名(職稱):
陳麟(副教授)
論文提交日期:
2007年6月1日
基于web的訂餐系統(tǒng)的設(shè)計與實現(xiàn)
摘要
隨著市場、經(jīng)濟的全球化,越來越多的企業(yè)認(rèn)識到:提高企業(yè)的競爭力,選擇信息化是必由之路。本文論述的訂餐系統(tǒng)是針對餐飲娛樂業(yè)而設(shè)計的一種商務(wù)服務(wù)網(wǎng)站。其主要功能是完成外賣的前期和輔助工作,即通過網(wǎng)絡(luò)進(jìn)行定餐和對服務(wù)進(jìn)行評價。而餐飲工作流程的其他部分如送外賣、付款等后期工作依舊采用傳統(tǒng)方式。
微軟的. NET平臺作為新一代的互聯(lián)網(wǎng)平臺,提供了支持未來計算的高效的Web服務(wù)開發(fā)工具。利用.NET平臺進(jìn)行訂餐系統(tǒng)的開發(fā)是此類系統(tǒng)未來開發(fā)的趨勢之一。本文所設(shè)計的系統(tǒng)在.NET平臺上進(jìn)行開發(fā),采用了最新的ASP.NET技術(shù),用VB.NET進(jìn)行了編碼,并使用SQL server進(jìn)行數(shù)據(jù)庫設(shè)計,基本實現(xiàn)了預(yù)定的目標(biāo),建立起一個比較完整的外賣系統(tǒng)。其特點是方便快捷的操作方式,簡單易懂的管理方法,因此對于企業(yè)和用戶來說,都是一種新型的、節(jié)約型的系統(tǒng)。
關(guān)鍵詞:企業(yè)信息化;訂餐系統(tǒng);.NET;ASP.NET;SQL server
The Design and Implementation of Bespeak Meal System Based on Web
Abstract
With 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, MS's .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
目 錄
論文總頁數(shù):24頁
1引言 1
1.1 課題背景 1
1.2 本課題的研究內(nèi)容 1
1.3 本課題研究的意義 1
2 開發(fā)環(huán)境和相關(guān)技術(shù) 2
2.1 .NET開發(fā)平臺及VB.NET開發(fā)語言 2
2.2 信息安全性 2
3 數(shù)據(jù)庫設(shè)計 3
3.1 關(guān)于SQL語言 3
3.2 數(shù)據(jù)庫設(shè)計結(jié)構(gòu) 3
4 系統(tǒng)設(shè)計 5
4.1系統(tǒng)總體流程 5
4.1 系統(tǒng)模塊設(shè)計 6
4.1.1 用戶模塊 6
4.1.2 管理員模塊 8
5 系統(tǒng)實現(xiàn) 8
5.1 用戶功能模塊實現(xiàn) 8
5.1.1 新用戶注冊 8
5.1.2 登錄 11
5.1.3 訂餐 12
5.1.4 留言 16
5.2 管理員模塊 17
5.2.1 訂單管理 17
5.2.2 留言管理 19
5.2.3 菜單管理 20
5.2.4 用戶管理 21
結(jié) 論 21
參考文獻(xiàn) 22
致 謝 23
聲 明 24
1引言
1.1 課題背景
隨著21世紀(jì)網(wǎng)絡(luò)信息時代的到來,現(xiàn)代社會都是利用快速高效率的Internet來傳播大量信息資源。人們通過IE瀏覽信息,當(dāng)然這種方式也是最常用的,這種方式的需求形成了電子商務(wù)。它的是指利用簡單、快捷、低成本的電子通訊方式,買賣雙方不出面也可以進(jìn)行各種商貿(mào)活動。電子商務(wù)真正的發(fā)展將是建立在Internet技術(shù)上。
現(xiàn)代化企業(yè)越來越明白,為了提高產(chǎn)品的銷量,贏得更多的客戶,不僅要在產(chǎn)品生產(chǎn)制造這一前方戰(zhàn)場上增加實力,還必須在服務(wù)和效率上投入更多的力量。在產(chǎn)品質(zhì)量相差不大的情況下,誰的服務(wù)好,效率高,誰就能贏得更多的顧客。這也是當(dāng)今市場經(jīng)濟競爭機制下對企業(yè)的客觀要求。
近年來,由于互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展及其逐步普及,企業(yè)對信息進(jìn)行網(wǎng)絡(luò)化管理的條件已經(jīng)日趨成熟,而傳統(tǒng)的通過電話和傳真來處理信息的傳統(tǒng)方式已經(jīng)越來越難以滿足企業(yè)的需求。建立基于網(wǎng)絡(luò)的管理和銷售信息系統(tǒng),成為企業(yè)提高效率、降低成本、完善服務(wù)的有力保證。而對于餐飲業(yè),由于一個行業(yè)本身的特性,它的流通性是非常高的,所以更對企業(yè)的效率提出了更高的要求。
微軟的NET平臺作為新一代的互聯(lián)網(wǎng)平臺,提供了支持未來計算的高效的Web服務(wù)開發(fā)工具。利用.NET平臺進(jìn)行管理和銷售系統(tǒng)的開發(fā)成為此類系統(tǒng)未來開發(fā)的趨勢。
1.2 本課題的研究內(nèi)容
本系統(tǒng)采用B/S(Browser/Server)結(jié)構(gòu)進(jìn)行設(shè)計,使用SQL Server 2000構(gòu)建數(shù)據(jù)庫,并在.NET環(huán)境下使用Visual Basic.net語言開發(fā)的一個功能較為完善的訂餐系統(tǒng)。其具有一定的實用性,用戶可以在網(wǎng)上瀏覽菜單,瀏覽留言和評分,訂餐,留言和評分;同時,管理員也可以對整個系統(tǒng)的信息和數(shù)據(jù)進(jìn)行管理,可以管理菜單信息、會員信息、留言信息和訂單信息。
1.3 本課題研究的意義
本課題的目標(biāo)是將傳統(tǒng)的通過電話和面對面的銷售的方式,轉(zhuǎn)換到基于網(wǎng)絡(luò)這樣一個更方便快捷的方式。為企業(yè)節(jié)約了很多的時間和精力。時間就是金錢,對企業(yè)來說,節(jié)約時間就是節(jié)約成本,就是盈利。對用戶來說,足不出戶,就可以購買到自己想要吃的東西,對于所有的上班族來說,無疑是好之又好的事情。而且現(xiàn)在的網(wǎng)絡(luò)發(fā)展速度相當(dāng)?shù)捏@人,那么基于網(wǎng)絡(luò)的訂餐也會越來越流行,必定是一個趨勢。
2 開發(fā)環(huán)境和相關(guān)技術(shù)
2.1 .NET開發(fā)平臺及VB.NET開發(fā)語言
.NET框架是Microsoft公司推出的一種全新的開發(fā)平臺,提供了統(tǒng)一的、面向?qū)ο蟛⑶铱梢詳U展的編程類庫和完善的集成開發(fā)環(huán)境,大大簡化了應(yīng)用程序的開發(fā)過程,并且具有良好的移植性和安全性。ASP.NET是建立在公共語言運行庫上的Web編程框架,相對于ASP而言,ASP.NET提供了更強的性能、更方便的工具支持、更好的平臺支持和靈活性。其一大革命性進(jìn)步是可以將應(yīng)用程序邏輯與表示代碼清楚地分開,這樣一來Web應(yīng)用程序的開發(fā)人員可以使用和Windows桌面程序開發(fā)類似的編程模型,從而大大降低了開發(fā)難度。
同時,ASP.NET在進(jìn)行用戶界面開發(fā)和基礎(chǔ)程序結(jié)構(gòu)生成時具有很多優(yōu)勢。首先,ASP.NET是一個已編譯的、基于.NET的開發(fā)環(huán)境,利用整個.NET框架,開發(fā)人員可以方便的進(jìn)行程序開發(fā);其次,ASP.NET可以無縫地與其它HTML編輯器及其編程工具一起工作,使得Web開發(fā)更加方便;再次,在ASP.NET中利用.NET框架中的ADO.NET的強大功能,可以高效便捷的訪問數(shù)據(jù)庫,ASP.NET提供了簡單的模型,該模型使開發(fā)人員能夠編寫應(yīng)用程序的運行邏輯,并且保留了會話狀態(tài)功能;最后,.NET框架和ASP.NET中提供了默認(rèn)授權(quán)和驗證方案,可以根據(jù)需要方便地移除、添加或者替換這些方案。
Visual Basic.NET語言是Visual Basic 6.0的后繼版本,但它除了在語法上還保留Visual Basic原有的蹤影外,在其他的很多方面都和Visual Basic截然不同。
Visual Basic.NET是一種完全面向?qū)ο蟮腂ASIC語言,它能夠繼承,重載,共享成員,結(jié)構(gòu)化異常處理。它有強壯的語言,嚴(yán)格的類型檢查,變量聲明時候初始化,支持垃圾收集。功能強大,支持委托,F(xiàn)reethreading、Variant數(shù)據(jù)類型被Object代替。VB.NET還提供了很多的類型轉(zhuǎn)換函數(shù)型運算符,如果不是標(biāo)準(zhǔn)類型,就要用函數(shù)型運算符CType來實現(xiàn)。在本次課題中也有一定的使用。
2.2 信息安全性
在大多數(shù)系統(tǒng)中,用戶的密碼信息在數(shù)據(jù)庫中是以明文的方式存放的,數(shù)據(jù)庫管理員稍有疏忽就有可能導(dǎo)致用戶的隱私泄漏,尤其是對于一些涉及金融、商業(yè)領(lǐng)域的網(wǎng)絡(luò)應(yīng)用,這一點漏洞將會導(dǎo)致十分嚴(yán)重的后果。所以,為了加強本系統(tǒng)信息的安全性,在用戶登錄模塊中,對密碼這樣的敏感信息進(jìn)行加密是十分必要的。本課題使用了一種常見的哈希加密算法——MD5加密算法。MD5加密算法是不可逆的,經(jīng)過哈希加密的數(shù)據(jù)是沒有相應(yīng)的解密算法回到原狀的,在應(yīng)用中是通過比較兩個數(shù)據(jù)的哈希值是否相等,從而達(dá)到校驗的目的。本課題中,在新客戶注冊的時候,對客戶設(shè)置的登錄密碼用MD5加密算法進(jìn)行加密,那么存入數(shù)據(jù)庫的將是客戶登錄密碼的MD5哈希值,在登錄驗證時根據(jù)用戶輸入的密碼計算響應(yīng)的MD5哈希值進(jìn)行比較。
可見,通過MD5算法實現(xiàn)了數(shù)據(jù)的加密存儲和驗證,同時,MD5加密是不可逆的,即使惡意攻擊者獲得了數(shù)據(jù)庫的訪問權(quán)限,也仍然無法得知用戶的密碼信息,從而提高了系統(tǒng)的安全性!
3 數(shù)據(jù)庫設(shè)計
3.1 關(guān)于SQL語言
SQL語言作為關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的一種通用的結(jié)構(gòu)化查詢語言,已經(jīng)被眾多的數(shù)據(jù)庫管理系統(tǒng)所采用。使用Visual Basic.NET開發(fā)數(shù)據(jù)庫應(yīng)用程序時,用戶可以使 SQL語言編程,這是Visual Basic.NET作為一個強大的數(shù)據(jù)庫應(yīng)用開發(fā)工具的一個重要標(biāo)志。
SQL語言被廣泛采用是因為它有很多的優(yōu)點:它是一個非過程化的語言,一次處理一個記錄,對數(shù)據(jù)提供自動導(dǎo)航;SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而部隊單個記錄進(jìn)行操作,可操作記錄集;接受集合作為輸入,返回集合作為輸出;允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。SQL不要求用戶指定對數(shù)據(jù)的存放方法,是用戶更易集中精力于要得到的記過。SQL可用于所有的用戶,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其他類型的中斷用戶。由于所有的主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可以將使用SQL的技能從一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)轉(zhuǎn)到另一個;所有用SQL編寫的程序都是可以移植的。
3.2 數(shù)據(jù)庫設(shè)計結(jié)構(gòu)
本設(shè)計主要由6個數(shù)據(jù)表組成:菜單表(dish),用戶表(shopper),管理員表(manager),新訂單表(neworder),添加訂單表(orderadd)存儲用戶的訂餐信息,留言信息表(message)存儲留言,這些表都集中在一個數(shù)據(jù)庫里面。
數(shù)據(jù)表:
與用戶相關(guān)的數(shù)據(jù)表有:菜單表(dish),用戶表(shopper),新訂單表(neworder),添加訂單表(orderadd),留言信息表(message)。分別如表1,表2,表3,表4所示。
表1 菜單表(dish)
主鍵和外鍵均為(cdishid)
列名
中文名稱
數(shù)據(jù)類型
長度
是否允許空
Cdishid
菜品編號
Char
10
Not null
Vdishname
菜名
Varchar
60
Not null
Vdishdescription
簡介
Varchar
300
Not null
Cdishrate
價格
Char
10
Not null
表2 用戶表(shopper)
主鍵和外鍵均為(cshopperid)
列名
中文名稱
數(shù)據(jù)類型
長度
是否允許空
Cshopperid
用戶名
Char
10
Not null
Cpassword
密碼
Char
50
Not null
Vemail
電子郵箱
Varchar
50
Not null
Cphone
電話
Char
15
Null
Vmemo
備注
Varchar
200
Null
Csex
性別
Char
10
Not null
Cage
年齡
Char
10
Null
Dregistertime
注冊時間
Datatime
8
Not null
Dlastlandtime
最后登錄時間
Datatime
8
Null
Vaddress
地址
Varchar
50
null
表3 新訂單表(neworder)
主鍵為(oid) 外鍵為(dishid和userid)
列名
中文名稱
數(shù)據(jù)類型
長度
是否允許空
oid
訂單序號
numeric
9
Not null
Orderid
訂單號
Char
10
Not null
Dishnumber
數(shù)量
Int
4
Not null
Userid
用戶名
Char
10
Not null
Status
是否確認(rèn)
Int
4
Not null
dedate
處理日期
varChar
20
Null
Birdate
訂餐時間
Varchat
20
Not null
表4添加訂單表(orderadd)
列名
中文名稱
數(shù)據(jù)類型
長度
是否允許空
Orderid
訂單號
Char
10
Not null
Orderaddress
送餐地址
Varchar
50
Not null
表5 留言信息表(message)
主鍵為(cmessageid)外鍵為(cshopperid)
列名
中文名稱
數(shù)據(jù)類型
長度
是否允許空
Cmessageid
留言編號
Char
10
Not null
Cshopperid
用戶
Char
10
Not null
Dmessagetime
留言時間
Datatime
8
Not null
Vmessage
留言內(nèi)容
Varchar
500
Not null
Cscore
評分
Char
10
Not null
與管理員相關(guān)的數(shù)據(jù)表有:管理員表(manager),如表6。
表6 管理員表(manager)
主鍵為和外鍵均為(cmanagerid)
列名
中文名稱
數(shù)據(jù)類型
長度
是否允許空
Cmanagerid
管理員ID
Char
20
Not null
Cpassword
密碼
Char
50
Not null
cpurview
權(quán)限
Char
10
Not null
4 系統(tǒng)設(shè)計
4.1系統(tǒng)總體流程
系統(tǒng)的總體流程如圖1所示,注冊用戶可以進(jìn)行訂餐和留言、評分;管理員可以進(jìn)行訂單管理,留言和評分管理,用戶管理,菜單管理等操作。
圖1 系統(tǒng)總體流程圖
4.1 系統(tǒng)模塊設(shè)計
總體分為用戶和管理員兩個模塊
4.1.1 用戶模塊
圖2 用戶模塊流程圖
1.新用戶注冊:填寫注冊信息。
2.注冊用戶登錄:只有登錄才能查看留言和訂餐。
3.訂餐:記錄用戶的訂餐信息。
4.留言:記錄用戶的留言和評分信息。
4.1.2 管理員模塊
結(jié)束
圖3 管理員模塊流程圖
1.訂單管理:對用戶的訂單進(jìn)行處理或刪除。
2.留言管理:對用戶的留言進(jìn)行查看或刪除。
3.用戶管理:對用戶信息進(jìn)行查看或刪除。
4.菜單管理:對菜單進(jìn)行修改或者刪除,添加新菜品。
5 系統(tǒng)實現(xiàn)
5.1 用戶功能模塊實現(xiàn)
用戶模塊包括:新用戶注冊,注冊用戶登錄,注冊用戶訂餐,注冊用戶留言和評分。
5.1.1 新用戶注冊
用戶填寫注冊信息包括必填項:用戶名,密碼,驗證密碼,email;和可選填寫的信息。注冊成功后返回登錄成功頁面,可以選擇進(jìn)行訂餐和留言、評分操作。
流程圖如下:
填寫注冊信息
信息檢測
N
寫入數(shù)據(jù)庫
顯示注冊成功
Y
圖4 注冊流程圖
注冊頁面設(shè)計如圖:
圖5 注冊頁面
在提交的時候,檢測用戶名是否已經(jīng)存在,若存在,則返回錯誤信息,重新填寫注冊信息。從工作流上看,只有注冊成功后才可以進(jìn)行訂餐和留言。
代碼如下:
conn.ConnectionString = "Connect Timeout=5;packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password=''"‘鏈接數(shù)據(jù)庫
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()
所有信息正確便將密碼加密之后,將所有信息插入數(shù)據(jù)表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 ‘將注冊信息插入數(shù)據(jù)庫
cmd1.ExecuteNonQuery()
conn1.Close()
注冊成功頁面如下:
圖6 注冊成功
5.1.2 登錄
用戶需要填寫用戶名和密碼,對輸入的用戶名與數(shù)據(jù)庫的進(jìn)行比較,若沒有則返回錯誤,對密碼也進(jìn)行判斷,因為密碼在保存時是經(jīng)過MD5加密的,所以在判斷的時候也把輸入的密碼先進(jìn)行MD5加密,然后進(jìn)行比較。登錄成功進(jìn)入登錄成功頁面。
注冊用戶
登錄
與數(shù)據(jù)庫記錄進(jìn)行匹配
N
Y
登錄成功
流程圖如下:
圖7 登錄流程圖
登錄頁面設(shè)計如下:
圖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加密密碼文本框的值,用于下面跟數(shù)據(jù)庫里面的值進(jìn)行比較
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")) ‘檢測用戶名是否已經(jīng)存在
Response.Redirect("login_suc.aspx")
Else
Session("cshopperid") = Nothing
wrong.Text = "用戶名或者密碼錯誤!"
End If
conn.Close()
登錄成功后界面如下:
圖9 登錄成功
5.1.3 訂餐
使用DATAGRID綁定DISH表顯示菜單,在DATAGRID上每行綁定一個多選按鈕和下拉列表,進(jìn)行多選和數(shù)量的選擇。然后在文本框中輸入送餐的地點,電話和其他的備注信息。若菜品和地址都填寫好,則進(jìn)入訂餐成功頁面,可以查看自己的訂餐信息,可以進(jìn)行修改和刪除。若錯誤,則報告錯誤信息,返回訂餐頁面。
流程圖如下:
圖10 訂餐流程圖
訂餐頁面設(shè)計如下:
圖11 訂餐頁面
綁定數(shù)據(jù),代碼如下:
'指定數(shù)據(jù)源并綁定到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表的內(nèi)容
adpt1.Fill(DS, "OUTER")
DataGrid1.DataSource = DS
DataGrid1.DataBind()
conn.Close()
End Sub
‘在綁定每行時,判斷多選按鈕的狀態(tài)和下拉列表的狀態(tài)
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
在點擊提交時,判斷選定的菜品及數(shù)量和輸入的信息,并插入數(shù)據(jù)庫。
代碼如下:
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() ‘調(diào)用GetDishCart將數(shù)據(jù)寫入數(shù)據(jù)庫
Me.lb_info.Text = "suc"
Response.Write("")
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" ‘調(diào)用存儲過程向neworder表插入數(shù)據(jù)
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
'插入相應(yīng)訂單地址
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 留言
在留言頁面,用戶可以對服務(wù)進(jìn)行評分,同時進(jìn)行留言
對留言的顯示同樣采用DATAGRID對數(shù)據(jù)庫進(jìn)行讀取然后顯示。提交留言的時候?qū)Ψ謹(jǐn)?shù)進(jìn)行判斷,然后對留言內(nèi)容是否為空進(jìn)行判斷,然后寫進(jìn)數(shù)據(jù)庫。
流程圖如下:
圖13 留言流程圖
代碼如下:
If Request("word") = "" Then
Response.Write("")
End If
sqlstr = "insert message([cmessageid],[cshopperid],[dmessagetime],[cscore],[vmessage]) values('++ cmessageid ','" & Session("cshopperid") & "','" & System.DateTime.Now & "','"
‘判斷評分的分?jǐn)?shù)值
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("")
留言成功后,將DATAGRID重新綁定,返回到留言頁面。
5.2 管理員模塊
在此模塊中,采用技術(shù)都是一樣的,所以同一種操作只列出一個。
5.2.1 訂單管理
使用DATAGRID綁定數(shù)據(jù)庫顯示訂單信息,
訂單信息分為三類,已經(jīng)確認(rèn)的和沒有確認(rèn)的還有已經(jīng)處理的。
沒有確認(rèn)的訂單信息,管理員都可以進(jìn)行確認(rèn)或者刪除。
流程圖如下:
圖14 訂單管理流程圖
確認(rèn)訂單代碼如下:
'command事件處理
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(2).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 neworder where dishid =" & Selected_Id
cmd.ExecuteNonQuery()
conn.Close()
ElseIf e.CommandName = "Select" Then
Dim Selected_Id As Integer
Selected_Id = CInt(e.Item.Cells(2).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
'形成更新語句修改處理的標(biāo)志位
cmd.CommandText = "update neworder set status= status+1 where dishid =" & Selected_Id
cmd.ExecuteNonQuery()
conn.Close()
處理訂單操作和確認(rèn)訂單相似,都含有處理和刪除兩個按鈕列,以便于進(jìn)行操作。所有已經(jīng)處理過的訂單,都可以通過另一個頁面進(jìn)行管理操作,里面只包含了一個按鈕列:刪除。
5.2.2 留言管理
使用DATAGRID綁定數(shù)據(jù)庫顯示留言信息,在DATAGRID上添加一列按鈕列進(jìn)行刪除操作。
流程圖如下:
圖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 Sub
5.2.3 菜單管理
使用DATAGRID綁定數(shù)據(jù)庫顯示留言信息,在DATAGRID上添加兩個按鈕列進(jìn)行刪除操作和更新操作,還可進(jìn)行新菜品的添加。
流程圖如下:
圖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
objReader.Close()
conn2.ConnectionString = "Connect Timeout=5;packet size=4096;persist security info=False;initial catalog=dishsale;data source=32A5C0037011401;user id=sa;password=''"
cmd2.Connection = conn2
cmd2.CommandType = CommandType.Text
conn2.Open()
strsql = "Insert Into dish (cdishid,vdishname,vdishdescription,cdishrate ) Values('x','" & Trim(name.Text) & "','" & Trim(description.Text) & "','" & Trim(dishrate.Text) & "')"
cmd2.CommandText = strsql
cmd2.ExecuteNonQ
收藏