ASP.NET基于Web的招投標系統(tǒng)的設(shè)計與實現(xiàn)(源代碼+論文),ASP,NET,基于,Web,投標,系統(tǒng),設(shè)計,實現(xiàn),源代碼,論文
分類號:TP311.1 U D C:D10621-408-(2007)5950-0
密 級:公 開 編 號:2003032183
成都信息工程學院
學位論文
基于Web的招投標系統(tǒng)的設(shè)計與實現(xiàn)
論文作者姓名:
趙遠強
申請學位專業(yè):
網(wǎng)絡(luò)工程
申請學位類別:
工學學士
指導教師姓名(職稱):
蔣毅(講師)
論文提交日期:
2007年6月 1日
基于Web的招投標系統(tǒng)的設(shè)計與實現(xiàn)
摘 要
招標拍賣的歷史悠久,在近兩千年的發(fā)展歷程中,人們對拍賣的理論和技術(shù)做了大量的探討。隨著計算機網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展和日益成熟,為了提高招投標及采購工作的效率,為廉政建設(shè)和防止腐敗提供技術(shù)保障,傳統(tǒng)的拍賣招標向網(wǎng)上招投標過渡, 基于Web的招投標技術(shù)將成為今后招投標發(fā)展的方向。
本文對招投標國內(nèi)外研究現(xiàn)狀進行分析;闡述了ASP.Net技術(shù),SQL數(shù)據(jù)庫技術(shù),以及B/S結(jié)構(gòu);并對招投標系統(tǒng)總體流程,系統(tǒng)的功能,招投標系統(tǒng)的數(shù)據(jù)庫設(shè)計進行了相關(guān)的描述。采用ASP.Net運作方式和SQL2000的新技術(shù)和新工具,基于Web方式的招投標系統(tǒng)設(shè)計方法,構(gòu)建了以B/S為結(jié)構(gòu)的招投標系統(tǒng)。
關(guān)鍵詞:招投標;數(shù)據(jù)庫;B/S;ASP.Net
The Design and Implementation of Bidding and Tendering System Based on Web
Abstract
The history of tender and auction is glorious. In nearly 2000 years of development,the people have made the massive discussions to the auction theory and technology. With the development of computer network technology, to improve work efficiency of public bidding and provide guarantee for preventing corruption and clean government, traditional online auction tender to the tender transition. So bidding and tendering technology based on Web become the development direction of information systems.
This paper analyses the current situation and development trend of bidding and tendering technology.?An explanation of ASP.Net, SQL database technology, B/S structure was introduced. The general flowchart of the system designing plan and describes the system functions are described. In this paper, the design concept of setting up bidding and tendering system based on Web is presented and attempted by adopting new technology and tools based on ASP.Net and SQL2000, the system architecture of Bidding and Tendering system based on B/S structure is constructed
Key words: Bid and Tender; Database; B/S;ASP.Net
目 錄
論文總頁數(shù):23頁
1 引言 1
2 系統(tǒng)概述 1
2.1國內(nèi)外招投標的發(fā)展狀況 1
2.2 招投標過程的概述 2
3 系統(tǒng)開發(fā)相關(guān)技術(shù) 2
3.1 系統(tǒng)開發(fā)ASP.NET 1.1技術(shù) 2
3.1.1 .NET的組成 2
3.1.2 .NET技術(shù) 2
3.2 SQL數(shù)據(jù)庫技術(shù) 3
3.3 B/S技術(shù) 3
4 系統(tǒng)總體分析 3
4.1 系統(tǒng)總體功能模塊 3
4.2 用戶注冊模塊 4
4.3 標書下載模塊 5
4.4 項目信息發(fā)布模塊 5
4.5項目競標模塊 6
5 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計與實現(xiàn) 7
5.1 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 7
5.2 數(shù)據(jù)表的創(chuàng)建 7
5.3 創(chuàng)建表的腳本文件 10
5.4 存儲過程 10
6 系統(tǒng)總體實現(xiàn) 11
6.1 Web.Config文件 11
6.2 系統(tǒng)首頁面 12
6.3用戶注冊和登錄頁面的實現(xiàn) 12
6.4招競標頁面 18
結(jié) 論 21
參考文獻 21
致 謝 22
聲 明 23
1 引言
隨著網(wǎng)絡(luò)的推廣與網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,電子商務(wù)已經(jīng)被越來越多的人所接受,在某些方面之處利用網(wǎng)絡(luò)的方便甚至已經(jīng)取代了傳統(tǒng)的商店。充當了買主和賣主之間的零售商。用非常小的開銷,人們就可以用電子方式進行招標項目或者競標項目,通過虛擬的網(wǎng)絡(luò)方式將買主和賣主聯(lián)系起來。本系統(tǒng)將設(shè)計一個有關(guān)買賣雙方之間商業(yè)行為的網(wǎng)上競標系統(tǒng)。賣方可以在該系統(tǒng)中發(fā)布自己的廣告,同時給出自己所希望得到的最底價格,然后由買方出價競標,最后到截止日期時出價最高者獲得項目。
本系統(tǒng)以保證招投標活動的公平、公正和公開的原則,采用競爭的手段實現(xiàn)大宗貨物和服務(wù)的采購最優(yōu)化的方式。
本文闡述的就是在B/S模式下的Web應(yīng)用程序,運用Visual Studio.NET和SQL Server 2000等開發(fā)工具來設(shè)計和實現(xiàn)--完成招投標的過程,其中招標功能模塊主要是實現(xiàn)會員資格審核,用戶招投標委托管理,發(fā)布招標公告,發(fā)布中標信息,澄清、修改項目信息,以及添加項目和下載標書。投標功能模塊主要是實現(xiàn)投標文件的接收和管理。該系統(tǒng)作為買方和賣方的一個媒介,一方面由買方出價購買,一方面由賣方發(fā)布物品信息,由一段時間內(nèi)的價高者獲得此項目,最后由買賣雙方進行確認,最終完成買方和賣方之間的成功交易。
2 系統(tǒng)概述
2.1國內(nèi)外招投標的發(fā)展狀況
招標拍賣作為一種常見的價格決定與資源分配機制己經(jīng)存在了幾千年,大約公元前500年,古巴比倫人就采用拍賣方式出售妻子;公元193年,羅馬皇帝的皇冠被拍賣掉了,如今,通過拍賣進行的交易數(shù)額巨大,交易所涉及的行業(yè)眾多。許多國家政府采用拍賣方式出售國家債券、外匯、各種開采和開發(fā)(如油田的開采權(quán),土地的開發(fā)權(quán));許多大型項目合同也是通過招標的方式來實現(xiàn)的。
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,招投標由原來手工操作方式逐步轉(zhuǎn)變到Internet網(wǎng)上進行的方式,網(wǎng)上招投標系統(tǒng)是指招投標過程中各個角色,如供應(yīng)商、招標機構(gòu)等連接起來,企業(yè)、機關(guān)和個人網(wǎng)上傳遞投標數(shù)據(jù),評標、開標均采用電子手段,通過網(wǎng)絡(luò)發(fā)布中標結(jié)果的一種投標方式。網(wǎng)上招標將傳統(tǒng)的招投標過程轉(zhuǎn)變?yōu)橐粋€簡單、方便、快捷的過程,并通過網(wǎng)絡(luò)將招投標信息傳送到各企業(yè)。目前,網(wǎng)上招標采購越來越常見,各種各樣的在線招標拍賣網(wǎng)站開始興起,如被人們熟知的Ebay.com, On sale.com、中國的雅寶(Yabuy.com ) ,酷必得(CoolBid.com)等都是拍賣網(wǎng)站,另外,作為商品消費的大戶一政府也開始進行網(wǎng)上招標采購,相關(guān)的各級招投標網(wǎng)站也累見不鮮。
2.2 招投標過程的概述
在招投標過程中招標過程主要是負責會員資質(zhì)審核,用戶招標信息委托管理,招標文件形成,以及招標文件的管理。發(fā)布招標公告,發(fā)布招標邀請函?,發(fā)布中標信息?,澄清、修改招標書,在線下載標書。并針對投標信息管理所需要的更新修改,提供相應(yīng)的機制。
投標過程主要是進行投標管理和投標后的銷毀管理,能夠異步和同步參與投標并公開投標結(jié)果,并以保存。當投標結(jié)束后,根據(jù)一定的機制注銷投標。
因此從總體來看,目前世界各國和有關(guān)國際組織的有關(guān)采購法律、規(guī)則都規(guī)定了公開招標、邀請招標、議標等三種招標投標方式。
3 系統(tǒng)開發(fā)相關(guān)技術(shù)
3.1 系統(tǒng)開發(fā)ASP.NET 1.1技術(shù)
ASP.NET 1.1(Active Serever Page.NET 1.1)是微軟公司推出的Web開發(fā)平臺。是在Internet環(huán)境中連接各種信息,系統(tǒng)與設(shè)備的軟件架構(gòu)。.NET系列服務(wù)軟件最終目標是形成Internet的操作系統(tǒng),進而控制其他基于次平臺上的服務(wù)應(yīng)用軟件。從而,企業(yè)和客戶都能從微軟或他的盟友中獲得任何有價值的基于Internet的服務(wù)。在ASP.NET運行時,公共語言運行(CLR)是整個.NET框架賴以存在的基礎(chǔ),它為Microsfot .NET應(yīng)用程序提供了一個托管的代碼執(zhí)行環(huán)境。它實際上是駐留在內(nèi)存里的一段代理代碼,主要負責應(yīng)用程序在整個執(zhí)行期間的代碼管理工作,比較典型的有內(nèi)存管理、線程管理、安全管理、遠程管理、即時編譯和代碼強制安全類型檢查等。
3.1.1 .NET的組成
.NET主要由3個部分組成,下面分別對這3個部分進行簡單的介紹。
(1) .NET戰(zhàn)略,.NET戰(zhàn)略基于這樣一種想法,即所有的設(shè)備在將來都會通過Internet連接在一起,而.NET就會為Internet網(wǎng)絡(luò)上提供的一種服務(wù)。
(2) .NET Framework,.NET Framework為ASP.NET提供了具體的服務(wù)和技術(shù),方便了開發(fā)人員對應(yīng)用程序的開發(fā),同樣也滿足了已經(jīng)連接到Internet上用戶的需要。
(3) Windows服務(wù)器系統(tǒng),Windows服務(wù)器系統(tǒng)是指像SQL Server 2000 等數(shù)據(jù)庫一樣,由.NET Framework應(yīng)用程序使用的服務(wù)器產(chǎn)品。
3.1.2 .NET技術(shù)
(1) .NET Framework為 Microsoft 公司建立 .NET戰(zhàn)略提供了基礎(chǔ)。所有設(shè)備都將在標準化或共享協(xié)議的基礎(chǔ)賞識用類似XML這樣的公共語言,在不同的操作系統(tǒng)和設(shè)備上執(zhí)行眾多軟件。
(2) .NET Framework提供了各種基礎(chǔ)服務(wù),而這些服務(wù)在Microsoft公司看來是實現(xiàn)其.NET戰(zhàn)略的基本所在。要使網(wǎng)絡(luò)上的兩端交換數(shù)據(jù)庫和連網(wǎng)工作更加容易,最好有一個全球網(wǎng)絡(luò)和類似XML這樣的開發(fā)標準。
3.2 SQL數(shù)據(jù)庫技術(shù)
隨著數(shù)據(jù)庫技術(shù)的不斷完善,用戶數(shù)據(jù)的不斷積累,用戶的需求也不斷提高,在此之上,更高級的應(yīng)用應(yīng)運而生,這包括已經(jīng)成熟的數(shù)據(jù)倉庫應(yīng)用、廣為接受的商業(yè)智能(BI)應(yīng)用、以及方興未艾的SOA等。當數(shù)據(jù)庫能夠容納幾乎所有數(shù)據(jù)之后,我們必然面臨的一個問題是如何快速獲得我們需要的數(shù)據(jù)。
當用戶訪問數(shù)據(jù)庫時,怎樣減少用戶的等待,快速返回用戶需要的數(shù)據(jù)是所有數(shù)據(jù)庫都需要解決的問題。這也就需要另外一項高級增強--面向搜索的增強,從某種意義上說面向需求的增強-數(shù)據(jù)分析和挖掘也正是這個方向上的高級應(yīng)用之一。目前各數(shù)據(jù)庫在這一方面都不夠完善,我們相信在未來,數(shù)據(jù)庫能夠容納和存儲各種數(shù)據(jù)之后,必然向快速搜索和查詢方面進行增強。
3.3 B/S技術(shù)
B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著 Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端 (Browser)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。
以目前的技術(shù)看,局域網(wǎng)建立的B/S結(jié)構(gòu)網(wǎng)絡(luò)應(yīng)用,通過Internet/Intranet模式下數(shù)據(jù)庫應(yīng)用,相對易于把握、成本也是較低的。它是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不同的接入方式來訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。
4 系統(tǒng)總體分析
4.1 系統(tǒng)總體功能模塊
網(wǎng)上招投標系統(tǒng)要實現(xiàn)的主要功能是:用戶注冊,項目招標信息發(fā)布,招標信息查詢,項目投標單位查看,項目競標。在系統(tǒng)中,非注冊用戶可以瀏覽競拍中的項目,但不可以參與項目拍賣和競拍活動。當注冊為本系統(tǒng)的會員后,可以實現(xiàn)招標和競標等相關(guān)操作。下面是系統(tǒng)的總體功能模塊如圖4-1所示。
網(wǎng)上招投標系統(tǒng)
項目競標模塊
用戶注冊模塊
項目信息發(fā)布模塊
標書下載模塊
下載標書
登
錄
注
冊
參與競標
瀏覽項目
更新項目
添加其它
添加項目
圖4-1 系統(tǒng)總體功能結(jié)構(gòu)
在頁面瀏覽器中第一次進入該系統(tǒng),所看到的是默認的首頁,在該頁面中主要包括一個系統(tǒng)功能簡介和登錄、注冊等的鏈接。如果用戶還沒有自己的帳號,需要首先進行注冊,單擊首頁中相應(yīng)的鏈接,進入注冊頁面。用戶正確填寫注冊信息后,系統(tǒng)將頁面自動跳轉(zhuǎn)到主頁面,標記用戶已經(jīng)登錄。對于已經(jīng)注冊過的用戶,可以單擊系統(tǒng)首頁中的“登錄”鏈接,進入登錄界面,此時用戶使用正確的帳號和密碼登錄系統(tǒng)后,頁面將自動跳轉(zhuǎn)到登錄用戶的歡迎界面。該頁面對登錄用戶顯示歡迎信息,并提供了一個簡單的可供選擇的菜單,通過該菜單,用戶可以使用系統(tǒng)所提供的各種功能。本系統(tǒng)最主要的功能是招標與競標,對于某些曾經(jīng)有過交易記錄的用戶,該頁面同時還會顯示出用戶在以前訪問站點過程中為哪些項目競過價。若用戶單擊該列表中的某個項目時,系統(tǒng)會彈出是否確認交易,如果用戶確認,那么就可以完成該項目的交易了。
4.2 用戶注冊模塊
用戶注冊流程,當用戶還沒有成為本系統(tǒng)的會員時。如果需要成為會員,那么就需要注冊為本系統(tǒng)的會員,才能進行相關(guān)的服務(wù)操作。如圖4-2所示,此模塊提供了用戶信息的錄入功能,首先在將用戶注冊信息添加到數(shù)據(jù)庫的應(yīng)用中時,調(diào)用了存儲過程。實現(xiàn)了用戶注冊的功能。
開始
錄入用戶信息
數(shù)據(jù)是否完整
否
是
調(diào)用存儲過程
實現(xiàn)用戶信息添加
結(jié)束
圖4-2 用戶注冊模塊流程
4.3 標書下載模塊
用戶在注冊為會員后,通過使用正確的帳號和密碼即可登錄系統(tǒng)。但是沒有注冊會員的用戶只能瀏覽項目列表,但不能進行任何相關(guān)的操作。此時用戶通過注冊鏈接,單擊注冊進行注冊為會員。此時用戶就可以通過上述的兩種方式進入系統(tǒng),通過瀏覽項目列表后,若想采購某種項目,那么就需要下載標書了,如圖4-3所示。
開始
成為會員后
系統(tǒng)主頁
標書下載
結(jié)束
圖4-3 標書下載模塊流程
4.4 項目信息發(fā)布模塊
項目信息發(fā)布管理流程,如圖4-4所示。此模塊提供了項目信息的錄入,編輯等功能。若想發(fā)布項目信息,首要條件是用戶已經(jīng)成為系統(tǒng)會員,然后可以添加要競拍的項目,并編輯以添加項目的信息。
開始
添加項目編號
添加其它信息
保存
結(jié)束
圖4-4 項目信息發(fā)布模塊流程
4.5項目競標模塊
項目競標模塊的流程,如圖4-5所示。此模塊提供了用戶從競標項目列表到交易完成的全部功能。競標結(jié)束時,會判斷誰為出價最高的用戶,此用戶為競拍此項目的成功者。競拍成功的用戶將會聯(lián)系賣方,進行項目的交易。
開始
查詢到競標的項目
瀏覽項目詳細信息
是否最高出價人
競標失敗
是 否
競標成功
結(jié)束
聯(lián)系賣方項目交易
結(jié)束
圖4-5 項目競標模塊的流程
5 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計與實現(xiàn)
5.1 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計
圖5-1 設(shè)計關(guān)系模型
5.2 數(shù)據(jù)表的創(chuàng)建
在該系統(tǒng)中,作為買方和賣方的一個媒介,一方面由賣方發(fā)布項目的信息,另一方面由買方出價購買,由一段時間內(nèi)的價高者獲得此項目,最后買賣雙方進行確認,完成網(wǎng)絡(luò)銷售的過程。因此該系統(tǒng)要滿足以下的數(shù)據(jù)庫需求分析:
招標投標系統(tǒng)需要提供信息的查詢,保存,更新以及刪除等功能,這就要求數(shù)據(jù)庫能充分滿足各種信息的輸入和輸出,通過上述系統(tǒng)功能的分析,根據(jù)招標投標系統(tǒng)的需求,總結(jié)如下的需求信息:
(1)用戶需要注冊才能進行招標投標等一系列的相關(guān)操作。
(2)在項目中,包括待招和已交易的項目信息。
(3)在投標中需要包含對每個項目的出價的信息。
(4)包含每個已被出價的項目和出價者的ID號。
(5)另外還需要包含用戶招標的項目信息。
所以在該系統(tǒng)中共需要創(chuàng)建5個數(shù)據(jù)表,用于存放網(wǎng)絡(luò)招投標管理系統(tǒng)所需要的數(shù)據(jù)。
在數(shù)據(jù)庫模型中不僅列出了各個表中的所有字段,同時也標出了各表的主鍵和外鍵等重要的信息,如果仔細閱讀前面關(guān)于系統(tǒng)功能分析及系統(tǒng)流程的介紹之后,一定可以很好地理解這些數(shù)據(jù)表中各字段所代表的含義,同時也應(yīng)該思考為何各表時間的關(guān)系。
下表5-1至5-6是每個數(shù)據(jù)表的簡要描述,以及它們與數(shù)據(jù)庫中其他表關(guān)系的說明。在解決方案中依次具體的思考了每個表中字段的數(shù)據(jù)類型、鍵和null值等內(nèi)容。下面是系統(tǒng)數(shù)據(jù)表5-1至5-6的簡要描述。
表5-1 系統(tǒng)數(shù)據(jù)表的簡要描述
表
描述
Person
包含系統(tǒng)中所有注冊用戶的資料
Item
包含待售或以售項目的信息
Bid
包含每個Item出價的信息
Sale
包含每項銷售的信息,包括被出價的項目和出價者Id
Seller
包含Person出售的項目信息
表5-2 用戶信息表(Person)
字段名
數(shù)據(jù)類型
長度
允許為空
是否為主鍵
說明
PersonID
bigint
8
否
是
唯一標識
FamilyName
varchar
255
否
登錄名
GivenName
varchar
255
否
真實名
EmailAddress
varchar
255
否
郵箱地址
Password
varchar
255
否
密碼
StreetAddress1
varchar
255
否
單位地址
StreetAddress2
varchar
255
是
地址
City
varchar
255
是
城市
State
varchar
255
是
狀態(tài)
PostalCode
varchar
10
是
郵政編碼
Country
varchar
255
是
所屬國家
Active
char
1
是
行為
LastLogin
datetime
8
是
最后登錄時間
表5-3 Seller表
字段名
數(shù)據(jù)類型
長度
是否允許為空
是否為主鍵
說明
ID
bigint
8
是
唯一標識
PersonID
bigint
8
用戶ID
ItemsListed
int
4
所列項目
ItemsActive
int
4
活躍項目
LastActivity
datetime
8
最后一項活動
表5-4 Item表
字段名
數(shù)據(jù)類型
長度
是否允許為空
是否為主鍵
說明
ItemID
bigint
8
是
唯一標識
ItemName
varchar
500
項目名稱
Description
varchar
1000
是
項目描述
AskingPrice
money
8
要求價格
NotifyPrice
money
8
是
通報價格
SellerID
bigint
8
賣方ID
ListingDate
datetime
8
上部時間
ExpirationDate
datetime
8
到期
ItemStatus
varchar
10
狀態(tài)
表5-5 Bid表
字段名
數(shù)據(jù)類型
長度
是否允許為空
是否為主鍵
說明
BidID
bigint
8
是
唯一標識
ItemID
bigint
8
項目ID
BidderID
bigint
8
投標者ID
Timestamp
datetime
8
時間戳
BidAmount
money
8
投標金額
BidChange
money
8
變更
表5-6 sale表
字段名
數(shù)據(jù)類型
長度
是否允許為空
是否為主鍵
說明
SaleID
bigint
8
是
唯一標識
ItemID
bigint
8
項目ID
WinningBid
money
8
中標
BuyerID
bigint
8
買家ID
sellerApproval
char
1
賣方審批
BuyerAcceptance
char
1
買方驗收
Completiondate
Datetime
8
竣工日期
5.3 創(chuàng)建表的腳本文件
數(shù)據(jù)表在創(chuàng)建完畢后,前面已經(jīng)介紹了所有表數(shù)據(jù)表的結(jié)構(gòu)、內(nèi)容及各表之間的關(guān)系,還要生成SQL腳本文件。這里選擇的是使用可視化工具還是使用SQL Server腳本文件在查詢分析器中直接運行來創(chuàng)建一個表的腳本文件。
5.4 存儲過程
為了遵循好的設(shè)計原則,可以使用良種方法對這些表進行訪問。如創(chuàng)建一組存儲過程,存儲過程是Web應(yīng)用程序后臺數(shù)據(jù)存儲的組成部分。應(yīng)用程序與存儲過程通信,而存儲過程則與表通信。這意味著如果經(jīng)常需要改變表的內(nèi)容,就必須確保存儲過程以同樣的方式工作,這樣才能確保應(yīng)用程序繼續(xù)工作。而且使用存儲過程訪問表比直接訪問更快。
本系統(tǒng)的存儲過程比較多,前面已經(jīng)詳細介紹各個存儲過程的功能,下面將本系統(tǒng)的整個存儲過程做簡要的描述,如下表5-7所示。
表5-7 存儲過程表
存 儲 過 程
描 述
sp_bid_isp
添加一條用戶的競價
sp_Get_Bid_Details
獲取某件項目所有競價的詳細信息
sp_item_dsp
刪除某件項目
sp_get_highest_bid
獲取某件項目的最高競價
sp_item_isp
添加一件項目
sp_item_sel
返回某用戶的項目
sp_item_usp
更新某件項目信息
sp_items_for_sale
返回所有可以競價的項目
sp_login
處理用戶登錄事件
sp_my_winning_bids
返回某用戶當前競標于領(lǐng)先地位的所有項目
sp_person_isp
添加一個用戶信息
sp_person_sel
通過用戶名即郵件地址來查詢一個用戶
sp_person_sel_by_id
查詢某條競標信息的競標者信息
sp_person_usp
更新用戶信息
sp_sale_complete
完成某個項目的交易
sp_sale_isp
為某個項目增加一次成功的交易記錄
6 系統(tǒng)總體實現(xiàn)
本系統(tǒng)使用Pagelet控件技術(shù)編寫了Header.ascx和Footer.ascx兩個用戶控件。其中Header.ascx控件用來顯示系統(tǒng)標題,F(xiàn)ooter.ascx控件用來顯示系統(tǒng)的版本和版權(quán)信息。
本系統(tǒng)還主要提供了那些與項目基本信息相關(guān)的數(shù)據(jù)庫操作方法,在項目類中首先為了用戶參與招標投標,其中主要的部分是為某個項目添加一個招競信息,在添加項目的時候通過對項目發(fā)布,項目信息的說明,以及對項目信息的修改,刪除,更新等操作來實現(xiàn)了用戶在本系統(tǒng)中的招標功能,其功能的實現(xiàn)主要是在數(shù)據(jù)庫中對相關(guān)的數(shù)據(jù)與信息進行修改,刪除,更新等,即實現(xiàn)發(fā)布招標信息使用戶參與招標。
此外,當用戶登錄本系統(tǒng)后,可以對一系列項目進行瀏覽,當用戶欲求購項目時,那么就需要參與競標,在參與競標之前需要對標書進行下載等工作。其頁面顯示了一個表,該表對每個當前招競標的項目作了簡單的說明。注冊用戶可以選擇某個特定的待招項目,單擊后到達BidItem.aspx頁面查看別人的競價或者自己欲對該項目出價,其功能的實現(xiàn)主要是對一個項目出價,出價后利用數(shù)據(jù)綁定將出價信息寫入數(shù)據(jù)庫,在數(shù)據(jù)庫中通過對出價信息進行比較,將出價最高的用戶判定為競標獲勝者,再從數(shù)據(jù)庫中將數(shù)據(jù)讀取出來并將用戶參與競標的項目發(fā)布在系統(tǒng)的主頁面上,同時還公布出參與競標的用戶的詳細信息。
6.1 Web.Config文件
主要介紹Web.Config文件為了避免頁面重復連接數(shù)據(jù)庫操作的設(shè)置。
6.2 系統(tǒng)首頁面
該頁面為系統(tǒng)首頁(圖6-1系統(tǒng)首頁),提供了登錄、注冊和瀏覽列表的鏈接。該頁面非常簡單,如果用戶已經(jīng)是系統(tǒng)會員,那么只要輸入正確的用戶名和密碼就可以進入改系統(tǒng)了。如果用戶不是會員,那么用戶只要按照要求填寫相關(guān)的信息就可以成功的注冊為本系統(tǒng)會員。在不是會員的情況下,用戶可以瀏覽本系統(tǒng)中正在招標的相關(guān)信息,但是不能進行任何相關(guān)的操作。
圖6-1 系統(tǒng)首頁
6.3用戶注冊和登錄頁面的實現(xiàn)
用戶注冊頁面主要調(diào)用Person類提供了用戶的詳細信息相關(guān)的各個屬性。這些屬性分別與數(shù)據(jù)表中的字段相對應(yīng)。在首頁面單擊“注冊”鏈接進入該頁面,此頁面不僅可以讓用戶注冊添加個人用戶信息,同時它也是修改注冊信息的界面。在該頁面中使用了幾個Panel組件,通過設(shè)置它們的Visible屬性可以實現(xiàn)上面的操作。在寫入數(shù)據(jù)庫時,首先調(diào)用了Tools類中的public static bool IsLoggedIn()方法來實現(xiàn)判定用戶是否已經(jīng)登錄,這樣才能進行安全驗證,確定用戶是否具有權(quán)限訪問某些頁面。如果沒有登錄需要注冊,則添加用戶詳細信息,通過Customer方法和系統(tǒng)引用文件.dll向數(shù)據(jù)庫添加注冊信息。
下面是Person類設(shè)計方案方法的定義和描述。如下表6-2所示:
表6-2 Person類設(shè)計方案方法的定義和描述
方 法 名 稱
描 述
public string AddCustomer(string FamilyName,string GiveName,string EmailAddress,string Password,string Add1,string Add2,string City,string State,string Zip,string Country)
添加一個用戶信息
public PersonDetails GetPersonByID(Int32 intPersonID)
獲取某條競標信息的競標者信息
public PersonDetails GetPersonByID(string strEmail)
通過用戶名即郵件地址來查詢一個用戶
public PersonDetails Login(string strEmail,string strPassword)
處理用戶登錄事件
public string ModifyCustomer(string FamilyName,string GiveName,string EmailAddress,string Password,string Add1,string Add2,string City,string State,string Zip,string Country)
更新用戶信息
其頁面和幾個事件代碼如下圖6-2所示::
圖6-2 用戶注冊頁面
下面主要介紹的是注冊頁面中核心代碼部分,其代碼如下:
private string Process;
//判定是否為注冊用戶
private void Page_Load(object sender, System.EventArgs e)
{
if (Tools.IsLoggedIn())
{
Process = "MODIFY";
Bid.PersonDetails myPersonDetails =
new Bid.PersonDetails();
Bid.Person obj = new Bid.Person();
myPersonDetails=obj.GetPersonDetails
(Request.Cookies["email"].Value);
txtFamilyName.Text = myPersonDetails.FamilyName;
txtGivenName.Text = myPersonDetails.GivenName;
txtEmail.Text = Request.Cookies["email"].Value;
txtPwd.Text = myPersonDetails.Password;
txtAdd1.Text = myPersonDetails.StreetAddress1;
txtAdd2.Text = myPersonDetails.StreetAddress2;
txtCity.Text = myPersonDetails.City;
txtState.Text = myPersonDetails.State;
txtZip.Text = myPersonDetails.PostalCode;
txtCountry.Text = myPersonDetails.Country;
txtEmail.Enabled = false;
obj = null;
GuestMenu.Visible = false;
RegisteredMenu.Visible = true;
}
else
{
Process = "ADD";
GuestMenu.Visible = true;
RegisteredMenu.Visible = false;
}
}
//添加用戶信息
private void btnSubmit_Click(object sender, System.EventArgs e)
{
if (Page.IsValid)
{
Bid.Person obj = new Bid.Person();
string strStatus;
if (Process == "ADD")
{
strStatus = obj.AddCustomer(txtFamilyName.Text,
txtGivenName.Text,
txtEmail.Text,
txtPwd.Text,
txtAdd1.Text,
txtAdd2.Text,
txtCity.Text,
txtState.Text,
txtZip.Text,
txtCountry.Text);
try
{
Int32.Parse(strStatus);
Response.Cookies["GivenName"].Value= txtGivenName.Text;
Response.Cookies["email"].Value = txtEmail.Text;
Response.Cookies["PersonID"].Value = strStatus;
Response.Redirect("MenuForRegisteredUsers.aspx");
}
catch (FormatException ex)
{
lblMsg.Text = strStatus;
}
}
else
{
// 更新用戶信息
strStatus=obj.ModifyCustomer(txtFamilyName.Text,
txtGivenName.Text,
txtEmail.Text,
txtPwd.Text,
txtAdd1.Text,
txtAdd2.Text,
txtCity.Text,
txtState.Text,
txtZip.Text,
txtCountry.Text);
if (strStatus == "1")
{
Response.Cookies["GivenName"].Value=
Request.Form["txtGivenName"];
Response.Cookies["email"].Value=txtEmail.Text;
Response.Redirect("MenuForRegisteredUsers.aspx");
}
else if(strStatus.Length > 1)
{
lblMsg.Text = "Update Failed! " + strStatus;
}
}
}
}
}
}
用戶登錄頁面主要是為會員提供服務(wù),在用戶已經(jīng)成為會員時,只要該用戶輸入正確的用戶名和密碼,就能進入系統(tǒng),進行一些相關(guān)的具體操作。因此,重點是按鈕的單擊事件響應(yīng)程序,其功能主要是通過判定用戶輸入的用戶名和密碼是否和曾經(jīng)注冊時寫入在數(shù)據(jù)庫中的數(shù)據(jù)是否相同,來實現(xiàn)的登錄功能。該頁面(圖6-3用戶登錄頁面)與代碼如下:
圖6-3 系統(tǒng)登錄頁面
private void btnSubmit_Click(object sender, System.EventArgs e)
{
if (Page.IsValid)
{
Bid.Person obj = new Bid.Person();
Bid.PersonDetails myPersonDetails =
new Bid.PersonDetails();
myPersonDetails =
obj.Login(txtEmail.Text, txtPwd.Text);
if (myPersonDetails.PersonID != 0)
{
Response.Cookies["email"].Value = txtEmail.Text;
Response.Cookies["GivenName"].Value =
myPersonDetails.GivenName;
Response.Cookies["PersonID"].Value =
myPersonDetails.PersonID.ToString();
Response.Redirect("MenuForRegisteredUsers.Aspx");
}
else
lblMsg.Text = "Login failed. Please try again.";
}
}
}
}
6.4招競標頁面
該頁面顯示了一個表,該表對每個當前招競標的項目作了簡單的說明。從該頁面中,注冊用戶可以選擇某個特定的待招項目,單擊后到達BidItem.aspx頁面查看別人的競價或者自己為該項目出價。該頁面功能的實現(xiàn)主要是對一個項目出價后,利用數(shù)據(jù)綁定將出價信息寫入數(shù)據(jù)庫,通過都出價信息的比較,將出價最高的用戶判定為競標獲勝者,并發(fā)布出該用戶的信息。該頁面(圖6-4項目工程)如下:
圖6-4 項目工程
該頁面項目類的數(shù)據(jù)層設(shè)計的方法和Page_Load主要事件處理程序與頁面如下(圖6-4項目工程):
表6-2列出了Item數(shù)據(jù)層類的設(shè)計方案方法的定義和描述?! ?
表6-2 Item類設(shè)計方案方法的定義和描述
方 法 名 稱
描 述
public string AddBid(Int32 ItemID)
為某個項目增加一個競標信息
public string AddItem(string ItemName,string ItemDesc,Double ItemAsk,Double ItemNotify,Int32 ItemSellerID,DateTime ItemExpDate)
增加一個項目用于競標
public string AddSale(Int32 ItemID,Int32 BidID)
為某項目添加一次成功的交易記錄
public string CompleteSale(Int32 ItemID,Double WinningBid)
完成某件項目的交易
public string DeleteItem(Int32 ItemID)
刪除某件項目
public SqlDataReader GetBidDetails(Int32 intItemID)
獲取某件項目所有競價的詳細信息
public string GetHighestBid(Int32 intItemID)
獲得某個項目的最高競價
public SqlDataReader GetMyWinningBids(Int32 intPersonID)
返回某用戶當前競標處于領(lǐng)先地位的所有項目
public string UpdateItem(string strItemID,string strItemName,string strItemDesc,string strAskPrice,string strNotifyPrice)
更新某件項目的信息
public SqlDataReader ViewItems(Int32 ingSellerID)
返回某用戶的項目
public SqlDataReader ViewItemsForSale()
返回所有可以競價的項目
在介紹了該類的方法與頁面實現(xiàn)后,下面主要介紹的是該頁面中核心代碼部分,其代碼如下:
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
//通過Tools類中的:public static bool IsLoggedIn()方法,并用該方法去判斷用戶是否已經(jīng)登錄。
if (Tools.IsLoggedIn())
{
lblUserName.Text = "Welcome" +
Request.Cookies["email"].Value +"";
GuestMenu.Visible = false;
RegisteredMenu.Visible = true;
}
else
{
lblUserName.Text = "Welcome guest";
GuestMenu.Visible = true;
RegisteredMenu.Visible = false;
}
}
}
private void BindGrid()//創(chuàng)建項目對象信息,添加一個招投標信息。
{
Bid.Item objItemList = new Bid.Item();
myItems.DataSource = objItemList.ViewItemsForSale();
myItems.DataBind();
}
public string FormatUrl(Int32 intID, string strName, string strDesc)
{
if (Tools.IsLoggedIn())
return "BidItem.aspx?itemid=" + intID.ToString() +
"&itemname=" +
Server.UrlEncode(strName) + "&itemdesc=" +
Server.UrlEncode(strDesc);
else
return "";
}
}
}
以上只是本系統(tǒng)中類的實現(xiàn),以及涉及到的頁面及代碼的實現(xiàn),由于篇幅有限,因此就不一一多舉了。
結(jié) 論
本文主要分析了實現(xiàn)招投標系統(tǒng)的主要方法,并對招投標的主要功能做了描述。同時設(shè)計并實現(xiàn)了一個簡單的招投標系統(tǒng)。該系統(tǒng)是基于B/S下利用Visual Studio.NET和SQL2000開發(fā)的,是一個實驗性的系統(tǒng)。對系統(tǒng)總體流程進行了說明,對系統(tǒng)的功能進了了描述;招投標系統(tǒng)的數(shù)據(jù)庫設(shè)計;系統(tǒng)界面的設(shè)計與代碼實現(xiàn)。
此本系統(tǒng)開發(fā)了一個網(wǎng)絡(luò)招標投標系統(tǒng),必要重要的內(nèi)容是三個通用模塊即三個類文件,這三個類文集成了系統(tǒng)中數(shù)據(jù)庫應(yīng)用的方法,大部分的應(yīng)用程序都是通過掉用其中的方法完成操作的。
其中對數(shù)據(jù)的操作,基本上都是調(diào)用存儲過程完成的。存儲過程的應(yīng)用對于系統(tǒng)的維護和提高速度都具有重要的作用。
當然,此系統(tǒng)還有很多需要改進的地方,可以讓應(yīng)用程序作些適當?shù)男薷?,使之更健壯。例如:許多數(shù)字項字段沒有驗證;當編輯用戶信息時,必須強制輸入密碼,確保密碼匹配等等。返回網(wǎng)絡(luò)設(shè)備的鏈表,以供使用。
參考文獻
[1] 吉根林,崔海源.ASP.NET程序設(shè)計教程[M].北京:電子工業(yè)出版社,2004。
[2] 東方人華.Visual C#.NET Web應(yīng)用程序設(shè)計入門與提高[M].北京:清華大學出版社, 2005。
[3] 楊浩.ASP.NET.1.1入門經(jīng)典[M].北京:清華大學出版社, 2005。
[4] 劉振巖,劉慧敏,王歡.ASP.NET數(shù)據(jù)庫開發(fā)[M].北京:清華大學出版社, 2004。
[5] 劉斌,張軍.ASP.NET+SQL Server動態(tài)網(wǎng)站開發(fā)案例精選[M].北京:清華大學出版社,2005。
[6] 張閱廷,王小科,許文武.ASP.NET數(shù)據(jù)庫系統(tǒng)開發(fā)完全手[M].北京:人民郵電出版社,2007。
[7] 李明剛, 肖建.ASP.NET Web 站點高級編程范例[M].北京:清華大學出版社,2004。
[8] 吉根林,崔海源.Web程序設(shè)計[M].北京:電子工業(yè)出版社,2002。
[9] 李偉紅.SQL Server 2000數(shù)據(jù)庫及應(yīng)用[M].北京:清華大學出版社,2005。
致 謝
在論文完成之際,學生謹向蔣毅老師和萬武南老師以深切誠摯的謝意!
感謝成都信息工程學院中所有傳授知識給我的老師們。
感謝所有我身邊的同學,朋友,與你們的相識是我人生最大的幸福之一,謝謝你們。
作者簡介
姓 名:趙遠強 性別:男
出生年月:1982年10月08日 民族:漢
E-mail:lasyaji@126.Com
聲 明
本論文的工作是 2007年 2月至2007年 6月在成都信息工程學院網(wǎng)絡(luò)工程系完成的