ASPNET高鐵車票訂票系統(tǒng)前臺(tái)設(shè)計(jì)_第1頁(yè)
ASPNET高鐵車票訂票系統(tǒng)前臺(tái)設(shè)計(jì)_第2頁(yè)
ASPNET高鐵車票訂票系統(tǒng)前臺(tái)設(shè)計(jì)_第3頁(yè)
ASPNET高鐵車票訂票系統(tǒng)前臺(tái)設(shè)計(jì)_第4頁(yè)
ASPNET高鐵車票訂票系統(tǒng)前臺(tái)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、高鐵車票訂票系統(tǒng)前臺(tái)設(shè)計(jì)摘 要 本文是針對(duì)高鐵車票訂票實(shí)際情況,按照軟件工程的結(jié)構(gòu)化設(shè)計(jì)思想,經(jīng)過(guò)項(xiàng)目的可行性研究和需求分析數(shù)據(jù)庫(kù)設(shè)計(jì)總體設(shè)計(jì)詳細(xì)設(shè)計(jì),以及代碼的實(shí)現(xiàn)和測(cè)試等步驟設(shè)計(jì)開(kāi)發(fā)了高鐵車票訂票系統(tǒng)。運(yùn)用了數(shù)據(jù)流圖和數(shù)據(jù)字典E-R圖和數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)層次圖系統(tǒng)流程圖以及程序流程圖,對(duì)該系統(tǒng)的數(shù)據(jù)需求數(shù)據(jù)庫(kù)系統(tǒng)軟件結(jié)構(gòu)系統(tǒng)流程以及處理過(guò)程等進(jìn)行了分析和設(shè)計(jì)。軟件工具應(yīng)用了和Microsoft SQL Server 2005數(shù)據(jù)庫(kù)來(lái)開(kāi)發(fā)這個(gè)高鐵車票訂票系統(tǒng)。該系統(tǒng)可以解決的是高鐵車票訂票系統(tǒng)所要解決的問(wèn)題,可以基本滿足高鐵車票訂票的基本要求,包括會(huì)員注冊(cè)、車次查詢、車票預(yù)訂、費(fèi)用在線支付、訂單

2、查詢/修改、個(gè)人信息維護(hù)模塊、留言板、訂票須知、信息公告,其中主要實(shí)現(xiàn)了查詢、訂票、退票等三個(gè)方面的功能。該系統(tǒng)能運(yùn)用到高鐵的訂票工作中,可以根據(jù)用戶的需求設(shè)者其權(quán)限,方便快捷的為用戶提供服務(wù)。關(guān)鍵詞:信息管理;高鐵售票; ;Microsoft SQL Server 2005High iron ticket system front desk designAbstractThis article focuses on the actual situation of high-speed rail ticket booking,structured according to the softwa

3、re engineering design, talked about the project feasibility study and needs analysis 、Overall Design, Database Design, detailed design, and code implementation and testing procedures designed and developed high-speed railway ticket booking system。The use of a data flow diagram and ER diagrams and da

4、ta dictionary logical structure or hierarchy database system flow chart diagram and process flow chart, the data needs of the system software 、 database structure or system processes and processing were analyzed And design。The application software development tools and Microsoft SQL Server 2005 data

5、base to develop the high-speed railway ticket booking system。The system can solve the problem of high-speed rail ticket booking system to solve the problem。You can basically meet the high-speed rail ticket booking, the basic requirements, including membership registration, train number, ticket booki

6、ng, for online payment, order inquiry / modification Personal information maintenance module, message board, booking instructions, information bulletin, mainly to achieve the query, ticketing, refunds and other three functions。The system can be applied to work in high-speed rail bookings, according

7、to the needs of users who set their permissions to provide users with convenient and efficient service.Keywords: information management; high-speed rail ticketing; ; Microsoft SQL Server 2005目 錄第1章 緒論51.1 引言51.2 國(guó)內(nèi)外現(xiàn)狀51.3 課題意義61.4 應(yīng)用范圍6第2章 系統(tǒng)地可行性研究與需求分析72.1 可行性分析72.1.1 法律方面的可行性72.1.2 使用方面的可行性72.1.3

8、經(jīng)濟(jì)可行性72.1.4 技術(shù)可行性72.1.5 操作可行性72.2 需求分析72.2.1 功能需求72.2.2 數(shù)據(jù)需求92.2.3 性能需求92.2.4 數(shù)據(jù)流圖102.2.5 數(shù)據(jù)字典102.2.6 實(shí)體聯(lián)系圖11第3章 數(shù)據(jù)庫(kù)設(shè)計(jì)133.1 SQL Server 2005數(shù)據(jù)庫(kù)簡(jiǎn)介133.2 系統(tǒng)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)133.2.1 車次表133.2.2 訂單表133.2.3 售票表143.2.4 系統(tǒng)表143.2.5 退票表14第4章 系統(tǒng)的總體設(shè)計(jì)154.1 系統(tǒng)軟件的結(jié)構(gòu)設(shè)計(jì)154.1.1 軟件結(jié)構(gòu)154.1.2 模塊算法154.2 系統(tǒng)流程圖17第5章 系統(tǒng)的詳細(xì)設(shè)計(jì)195.1 用戶操作

9、業(yè)務(wù)流程圖195.1.1 用戶系統(tǒng)主程序流程圖。如圖5.1 所示:195.1.2 車次信息查詢業(yè)務(wù)流程圖.如圖5.2所示:205.1.3 訂票處理流程圖.如圖5.3所示:215.1.4 訂票信息查詢處理流程圖.如圖5.4所示:225.1.5 退票處理流程圖.如圖5.5所示:235.2 接口設(shè)計(jì)245.2.1 用戶接口245.2.2 外部接口245.2.3 內(nèi)部接口245.3 詳細(xì)頁(yè)面設(shè)計(jì)245.4 物理結(jié)構(gòu)設(shè)計(jì)要點(diǎn)245.4.1 系統(tǒng)登錄主界面255.4.2 售票車票系統(tǒng)的主界面255.4.3 車票預(yù)定系統(tǒng)主界面265.4.4 退票系統(tǒng)主界面27第6章 測(cè)試286.1 數(shù)據(jù)與數(shù)據(jù)庫(kù)完整性的測(cè)試

10、286.2 功能的測(cè)試286.3 業(yè)務(wù)周期測(cè)試286.4 用戶界面的測(cè)試29結(jié) 論30致 謝31參 考 文 獻(xiàn)32附錄A 譯文33附錄B 外文原文40第1章 緒論1.1 引言1969年,美國(guó)IBM公司首次宣布除操作系統(tǒng)繼續(xù)隨計(jì)算機(jī)配送外,其余軟件一律計(jì)價(jià)出售,從此開(kāi)創(chuàng)了軟件成為獨(dú)立商品的先河。短短四十幾年的時(shí)間,計(jì)算機(jī)軟件的重要性與日俱增。從PC機(jī)到筆記本電腦,從因特網(wǎng)到移動(dòng)電話,從先進(jìn)的武器到現(xiàn)代的家電,計(jì)算機(jī)軟件幾乎無(wú)處不在,無(wú)時(shí)不在。世界上最大的軟件公司微軟公司及其創(chuàng)始人,已成為全球知名度最高的企業(yè)之一。在很多發(fā)達(dá)國(guó)家,軟件產(chǎn)業(yè)已成為社會(huì)的支柱產(chǎn)業(yè),軟件工程師也成為最受青睞的一種職業(yè)。正

11、是由于軟件的發(fā)展,使計(jì)算機(jī)應(yīng)用逐步滲透到社會(huì)生活的各個(gè)角落,使各行各業(yè)都發(fā)生了很大的變化。這同時(shí)也促使人們對(duì)軟件的品種,數(shù)量,功能和質(zhì)量等提出了越來(lái)越高的要求。然而,軟件的規(guī)模越大,越復(fù)雜,人們的軟件開(kāi)發(fā)能力越顯得力不從心。于是,人們開(kāi)始重視軟件開(kāi)發(fā)過(guò)程,方法,工具和環(huán)境的研究,軟件工程應(yīng)運(yùn)而生。軟件工程技術(shù)歷經(jīng)四十多年的發(fā)展,目前已進(jìn)入成熟期。軟件過(guò)程改善的熱潮使軟件企業(yè)對(duì)軟件工程技術(shù)的認(rèn)識(shí)有了質(zhì)的飛躍,正在被越來(lái)越廣泛地接收。過(guò)程改善和技術(shù)提升的結(jié)合是軟件產(chǎn)業(yè)發(fā)展的趨勢(shì)。軟件復(fù)用和軟件構(gòu)件技術(shù),再工程技術(shù)及領(lǐng)域工程技術(shù)正逐步成為主流軟件技術(shù),是軟件工程化,工業(yè)化生產(chǎn)技術(shù)的核心技術(shù)。也推動(dòng)了

12、一些行業(yè)的發(fā)展,比如說(shuō)票務(wù)方面,本次設(shè)計(jì)我選擇了具有比較典型的并且有一定實(shí)際應(yīng)用價(jià)值的課題-高鐵車票訂票系統(tǒng)。1.2 國(guó)內(nèi)外現(xiàn)狀“目前,從技術(shù)上看,軟件開(kāi)發(fā)的主要模式仍以手工作坊式為住,但工程化技術(shù)的采用呈穩(wěn)步上升趨勢(shì)。軟件企業(yè)的過(guò)程改善,規(guī)范化,規(guī)模化正成為一種趨勢(shì)。推行軟件的工程化,工業(yè)化生產(chǎn)技術(shù)和模式是軟件企業(yè)發(fā)展并形成規(guī)模經(jīng)濟(jì)的必由之路,這已成為學(xué)術(shù)界和產(chǎn)業(yè)界的共識(shí)?!?當(dāng)前,學(xué)術(shù)界和產(chǎn)業(yè)界的共識(shí)是:在注重軟件工程技術(shù)研究的同時(shí)應(yīng)注重軟件過(guò)程的研究;軟件開(kāi)發(fā)單位不僅需要技術(shù)創(chuàng)新(采用先進(jìn)技術(shù)),更需要將其過(guò)程改善放在首位。過(guò)程改善和技術(shù)的緊密結(jié)合才是完善的軟件開(kāi)發(fā)解決方案。進(jìn)入九十年代

13、以來(lái),軟件過(guò)程研究及企業(yè)過(guò)程改善成為熱潮,和軟件工程技術(shù)研究及企業(yè)技術(shù)創(chuàng)新受到同等重視,兩方面都得到了長(zhǎng)足的發(fā)展。在技術(shù)方面,軟件工程技術(shù)不斷發(fā)展,軟件工具市場(chǎng)不斷擴(kuò)大。我國(guó)政府支持的國(guó)家重點(diǎn)科技攻關(guān)項(xiàng)目青鳥(niǎo)工程長(zhǎng)期從事對(duì)軟件工程技術(shù)的研究,在上述幾方面及其集成上均有卓有成效的成果,保持了和國(guó)際前沿同步,同時(shí),為我國(guó)軟件產(chǎn)業(yè)基礎(chǔ)設(shè)施建設(shè)以及軟件工程學(xué)科建設(shè)做出了積極貢獻(xiàn)。1.3 課題意義隨著高鐵的興起,火車站市場(chǎng)的管理和規(guī)范問(wèn)題,已經(jīng)是困擾我們多年的一個(gè)老問(wèn)題,也是政府部門(mén)管理中的一個(gè)重點(diǎn)、難點(diǎn).訂票是客運(yùn)業(yè)務(wù)中的一個(gè)最最基本的業(yè)務(wù),從表面上來(lái)看,它只是高鐵業(yè)務(wù)中的一個(gè)簡(jiǎn)單部分,但是它涉及到管

14、理與客戶服務(wù)等多方面的問(wèn)題,因此,過(guò)去傳統(tǒng)的售票方式遠(yuǎn)遠(yuǎn)不能夠滿足現(xiàn)代客運(yùn)業(yè)務(wù)流量急速增長(zhǎng)的趨勢(shì),這就要求研發(fā)出一種全新的訂票方式來(lái)滿足客戶的需要,那就是網(wǎng)上訂票,這種方式可以大大地緩解車票訂購(gòu)高峰時(shí)期的客運(yùn)壓力,并可以為用戶提供方便快捷的訂票服務(wù).1.4 應(yīng)用范圍高鐵車票的管理和規(guī)范問(wèn)題,是困擾我們多年的一個(gè)老問(wèn)題,也是政府管理中的一個(gè)難點(diǎn),訂票是客運(yùn)業(yè)務(wù)中的一個(gè)最基本的業(yè)務(wù),表面上看,它只是長(zhǎng)途客運(yùn)業(yè)務(wù)的一個(gè)簡(jiǎn)單的部分,但是它涉及到管理與客戶服務(wù)等多方面,因此,過(guò)去傳統(tǒng)的售票方式已經(jīng)不能滿足現(xiàn)代客運(yùn)業(yè)務(wù)流量劇增的客觀要求,這就要求一種全新的訂票方式網(wǎng)上訂票,來(lái)緩解訂票高峰時(shí)期的客運(yùn)壓力,并

15、為用戶提供方便快捷的訂票服務(wù)。本次設(shè)計(jì)便是利用開(kāi)發(fā)工具asp和SQL Server 2005數(shù)據(jù)庫(kù)共同開(kāi)發(fā)的一個(gè)高鐵車票訂票系統(tǒng),它能方便快捷地運(yùn)用在訂票業(yè)務(wù)的營(yíng)運(yùn)之中。本系統(tǒng)設(shè)計(jì)主要是根據(jù)訂票業(yè)務(wù)的基本流程進(jìn)行的,系統(tǒng)功能主要包括如下幾個(gè)方面:查詢:分為對(duì)信息的查詢和客戶對(duì)已訂車票信息的查詢訂票:通過(guò)查詢系統(tǒng),客戶根據(jù)自己的需求找到滿意的車次,直接通過(guò)網(wǎng)上訂票確定已預(yù)訂選中的高鐵車票。第2章 系統(tǒng)地可行性研究與需求分析2.1 可行性分析該階段主要通過(guò)對(duì)系統(tǒng)目標(biāo)地初步調(diào)研和分析,從而提出可行性方案并進(jìn)行研究論證.我在這主要從法律方面的可行性、使用方面的可行性、經(jīng)濟(jì)可行性、技術(shù)可行性、操作可行性

16、五方面進(jìn)行分析論證。2.1.1 法律方面的可行性 該系統(tǒng)的開(kāi)發(fā)和研制,將不會(huì)侵犯他人、集體和國(guó)家的利益,不會(huì)違反國(guó)家的相關(guān)政策和法律。2.1.2 使用方面的可行性 該系統(tǒng)操作簡(jiǎn)單,需要高鐵售票人員熟悉業(yè)務(wù)流程,一般的工作人員即可勝任。2.1.3 經(jīng)濟(jì)可行性 由于本系統(tǒng)是為了高鐵車票訂票所使用的系統(tǒng),安裝該應(yīng)用程序,即可馬上使用此系統(tǒng),系統(tǒng)成本主要集中在系統(tǒng)軟件的開(kāi)發(fā)上,當(dāng)系統(tǒng)投入運(yùn)行后,可以節(jié)省大量的人力、財(cái)力、物力,所帶來(lái)的經(jīng)濟(jì)效益是遠(yuǎn)遠(yuǎn)大于系統(tǒng)軟件的開(kāi)發(fā)成本。所以,從經(jīng)濟(jì)的角度來(lái)看,是完全可行的。2.1.4 技術(shù)可行性 開(kāi)發(fā)工具: 數(shù)據(jù)庫(kù)環(huán)境: Microsoft SQL Server 2

17、005 系統(tǒng)環(huán)境: Microsoft Windows 2005或以上版本系統(tǒng)實(shí)現(xiàn)依靠開(kāi)發(fā)工具和Microsoft SQL Server 2005數(shù)據(jù)庫(kù)系統(tǒng),其基本操作實(shí)質(zhì)還是對(duì)數(shù)據(jù)庫(kù)進(jìn)行查找、刪除、添加等操作,暫時(shí)沒(méi)有技術(shù)問(wèn)題。2.1.5 操作可行性 界面設(shè)計(jì)時(shí),充分考慮了使用人員的習(xí)慣,界面友好簡(jiǎn)潔,操作方便;數(shù)據(jù)輸入簡(jiǎn)單、迅速、規(guī)范、可靠;統(tǒng)計(jì)、計(jì)算準(zhǔn)確等優(yōu)點(diǎn)。2.2 需求分析 需求分析是軟件設(shè)計(jì)的一個(gè)極其重要的環(huán)節(jié)。本階段將對(duì)高鐵車票訂票系統(tǒng)的應(yīng)用情況作出全面了解,以確保系統(tǒng)的目標(biāo),并對(duì)系統(tǒng)所需要的相關(guān)數(shù)據(jù)以及數(shù)據(jù)處理要求進(jìn)行分析,從而確保用戶的需求。用戶對(duì)系統(tǒng)的需求我將從以下幾方面進(jìn)

18、行分析。2.2.1 功能需求 本高鐵車票訂票系統(tǒng)應(yīng)該具備如下功能:(1) 會(huì)員注冊(cè) 此系統(tǒng)通過(guò)注冊(cè)會(huì)員成為本系統(tǒng)的會(huì)員,來(lái)獲得用戶名和密碼,才能進(jìn)入本系統(tǒng)。(2) 車次查詢 車次查詢分為對(duì)車次信息的查詢和客戶對(duì)已訂車票信息的查詢.要求:1) 對(duì)車次的查詢,可以按照發(fā)車車次進(jìn)行查詢。2) 車次信息包括:車號(hào)、出發(fā)地、目的地、發(fā)車日期、開(kāi)出時(shí)刻、票價(jià)。3) 座位類型設(shè)定:軟座和硬座。4) 車次信息只允許用戶查詢,不能修改。(3) 預(yù)定車票 通過(guò)查詢系統(tǒng),客戶根據(jù)自己的需求找到滿意并適合自己的車次,再輸入個(gè)人信息后直接通過(guò)網(wǎng)上訂票確定并預(yù)定選中的車票.要求: 訂票記錄包括:車號(hào)、種類、開(kāi)車時(shí)間、車票

19、價(jià)格。(4) 取消預(yù)訂 由于某些原因,或者突發(fā)情況,無(wú)法趕到預(yù)定車票的時(shí)間,客戶通過(guò)退回車票,可以找到預(yù)定的車票,可以通過(guò)取消預(yù)定來(lái)退去已購(gòu)車票。 (5) 留言板通過(guò)留言板你可以發(fā)表心中的疑惑,對(duì)高鐵的一切情況,也可以發(fā)表自己的見(jiàn)解.對(duì)售票人員的服務(wù)滿意度,對(duì)高鐵上服務(wù)人員的看法等問(wèn)題都可以通過(guò)留言板來(lái)留言,讓管理人員及時(shí)了解情況,以便迅速做出調(diào)整,做到每一個(gè)乘客滿意放心。(6) 訂票須知 通過(guò)訂票須知,可以回答你一些簡(jiǎn)單的疑惑,如高鐵上不允許帶的違禁物品,坐高鐵要注意的事項(xiàng),多少升高以下的兒童可以免票等相應(yīng)的情況,你可以通過(guò)訂票須知知道.因此,在訂票之前,不妨仔細(xì)閱讀一下須知,詳細(xì)了解樂(lè)坐高

20、鐵的種種事項(xiàng)后,再開(kāi)始訂票。(7) 信息公告 通過(guò)信息公告,可以讓乘客知道高鐵是否運(yùn)行,有時(shí)可能由于天氣原因等情況,火車站會(huì)采取停止高鐵的運(yùn)行,這些信息可以通過(guò)信息公告來(lái)知道,以便乘客能夠及時(shí)知曉,對(duì)訂票有很大的幫助。2.2.2 數(shù)據(jù)需求數(shù)據(jù)需求,即在系統(tǒng)中需要處理的數(shù)據(jù).根據(jù)對(duì)高鐵車票訂票系統(tǒng)的分析,本系統(tǒng)的數(shù)據(jù)需求。如表2.1所示:信息輸入信息處理信息輸出用戶輸入所需車次檢索系統(tǒng)數(shù)據(jù)庫(kù)顯示出符合用戶需求的車次及相關(guān)信息用戶輸入個(gè)人信息及所需訂購(gòu)的車票信息更新系統(tǒng)中的訂票信息,將新信息存入系統(tǒng)數(shù)據(jù)庫(kù)操作反饋(如訂票成功)用戶輸入自己的名字、身份證號(hào);或交易的訂單號(hào)檢索系統(tǒng)數(shù)據(jù)庫(kù)符合用戶需求的

21、訂票信息用戶輸入自己的名字檢索系統(tǒng)數(shù)據(jù)庫(kù)以得到訂票記錄,刪除用戶請(qǐng)求的訂票記錄,更新系統(tǒng)數(shù)據(jù)庫(kù)顯示出操作反饋(如退票成功等) 表2.1 信息輸入輸出2.2.3 性能需求為了保證系統(tǒng)能夠長(zhǎng)期、安全、穩(wěn)定、可靠、高效的運(yùn)行,本系統(tǒng)應(yīng)該滿足以下的性能需求。(1) 準(zhǔn)確性和及時(shí)性系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。系統(tǒng)應(yīng)能及時(shí)而且準(zhǔn)確的根據(jù)用戶權(quán)限及所輸入的信息做出響應(yīng)。由于本系統(tǒng)的查詢功能對(duì)于整個(gè)系統(tǒng)的功能和性能完成舉足輕重。作為系統(tǒng)的很多數(shù)據(jù)來(lái)源,而車票的數(shù)量和時(shí)間又影響用戶的決策活動(dòng),其準(zhǔn)確性和及時(shí)性很大程度上決定了系統(tǒng)的成敗。在系統(tǒng)開(kāi)發(fā)過(guò)程中,必須采用一定的方法保證系統(tǒng)的準(zhǔn)確性和及時(shí)性。

22、(2) 易用性本系統(tǒng)是直接面對(duì)用戶的,而用戶往往對(duì)計(jì)算機(jī)并不是非常熟悉。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機(jī)交互界面。要實(shí)現(xiàn)這一點(diǎn),就要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語(yǔ)和中文信息的界面,從而保證系統(tǒng)的易用性。(3) 安全性網(wǎng)上訂票系統(tǒng)中涉及到的數(shù)據(jù)是客運(yùn)公司相當(dāng)重要的信息,系統(tǒng)要保證用戶的權(quán)限,對(duì)于車次等信息用戶只享有查詢服務(wù),不得更改;系統(tǒng)還要提供方便的手段供系統(tǒng)維護(hù)人員進(jìn)行數(shù)據(jù)備份、日常安全管理、以及系統(tǒng)意外崩潰時(shí)數(shù)據(jù)的恢復(fù)等工作。同時(shí)系統(tǒng)還要保證對(duì)數(shù)據(jù)庫(kù)進(jìn)行及時(shí)更新,保證數(shù)據(jù)一致性。2.2.4 數(shù)據(jù)流圖 本系統(tǒng)的數(shù)據(jù)流圖如圖2.2所示:事務(wù)事務(wù)事務(wù)用戶信息事務(wù)用戶事務(wù)接收事務(wù)車

23、次信息車次信息更新數(shù)據(jù)庫(kù)事務(wù)接收事務(wù)訂單信息反饋事務(wù)用戶事務(wù)事務(wù)更新數(shù)據(jù)庫(kù)接收事務(wù)事務(wù)訂單信息事務(wù)查詢訂單修改訂單反饋用戶訂票事務(wù)接收事務(wù)反饋用戶更新數(shù)據(jù)庫(kù)更新數(shù)據(jù)庫(kù)用戶信息接收事務(wù)退票 圖2.2 數(shù)據(jù)流圖2.2.5 數(shù)據(jù)字典 如圖2.32.5所示: 名字:車次信息別名:描述:存放車次信息的文件,以供用戶查詢定義:車次信息=車號(hào)+出發(fā)地+目的地+發(fā)車日期+開(kāi)出時(shí)刻+到達(dá)時(shí)刻+ 坐位類型+票價(jià)位置:輸出到CRT終端或類似的顯示部件圖2.3 車次信息數(shù)據(jù)字典名字:訂票信息別名:訂單信息描述:存放訂單信息的文件,以供用戶查詢,并作相應(yīng)操作定義:訂票記錄=用戶名+車號(hào)+發(fā)車日期+訂購(gòu)日期+訂購(gòu)票數(shù)+總

24、價(jià)位置:輸出到CRT終端或類似的顯示部件圖2.4 訂票信息數(shù)據(jù)字典名字:會(huì)員信息別名:用戶信息描述:存放會(huì)員信息的文件,以供會(huì)員方便的查詢訂單信息,進(jìn)而做出相應(yīng)的操作定義:會(huì)員信息=真實(shí)姓名+身份證號(hào)+性別+籍貫+聯(lián)系電話位置:輸出到CRT終端或類似的顯示部件 圖2.5 會(huì)員信息數(shù)據(jù)字典2.2.6 實(shí)體聯(lián)系圖 用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就要求數(shù)據(jù)庫(kù)結(jié)構(gòu)能充分滿足各種信息的輸出和輸入。針對(duì)火車站網(wǎng)上訂票系統(tǒng),通過(guò)對(duì)網(wǎng)上訂票工作的過(guò)程、內(nèi)容以及數(shù)據(jù)流程分析,設(shè)計(jì)如下所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):1)車次信息包括:車號(hào)、出發(fā)地、目的地、發(fā)車日期、開(kāi)出時(shí)刻、剩余座位數(shù)、票價(jià)。2

25、)訂票記錄包括:訂單號(hào)、身份證號(hào)、車號(hào)、訂購(gòu)日期、訂購(gòu)票數(shù)、總價(jià)。3)會(huì)員信息包括:真實(shí)姓名、身份證號(hào)、性別、籍貫、聯(lián)系電話。E-R圖如圖2.2所示: nnn11m查詢退票訂票訂單號(hào)用戶身份證號(hào)車號(hào)訂購(gòu)日期總價(jià)發(fā)車日期訂票信息會(huì)員真實(shí)姓名籍貫性別電話車次車次 出發(fā)地目的地發(fā)車日期開(kāi)出時(shí)刻坐位類型票價(jià)訂購(gòu)票數(shù)圖2.6 實(shí)體聯(lián)系圖(E-R圖)第3章 數(shù)據(jù)庫(kù)設(shè)計(jì)3.1 SQL Server 2005數(shù)據(jù)庫(kù)簡(jiǎn)介 Microsoft的SQL Server作為眾多數(shù)據(jù)庫(kù)軟件的一種,是網(wǎng)絡(luò)世界的一個(gè)支撐。 從20世紀(jì)80年代后期開(kāi)發(fā)SQL Server,到2005年底SQL Server 2005的發(fā)布,M

26、icrosoft經(jīng)歷十幾年的磨練,使SQL Server從無(wú)到有,從小到大,而且新一代的SQL Server已經(jīng)開(kāi)始逐漸成為Windows操作系統(tǒng)未來(lái)的核心,成為主流數(shù)據(jù)庫(kù)軟件。 SQL Server 是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開(kāi)發(fā)的,于1988 年推出了第一個(gè)OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開(kāi)發(fā)上就分道揚(yáng)鑣了。Microsoft 將SQL Server 移植到Windows NT系統(tǒng)上,專注于開(kāi)發(fā)推廣SQL Server 的Windows

27、 NT 版本。Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)用。到了2005年底,Microsoft公司經(jīng)過(guò)5年的努力,推出了其最新版本SQL Server 2005。3.2 系統(tǒng)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì) 高鐵車票訂票系統(tǒng)數(shù)據(jù)庫(kù)忠各個(gè)表格的設(shè)計(jì)結(jié)果如下表所示.每個(gè)表格分別表示在數(shù)據(jù)庫(kù)中的一個(gè)表.3.2.1 車次表字段名數(shù)據(jù)類型是否可空說(shuō)明CidintNOT NULL車號(hào)(主鍵)0Carnamevarchar(50)NOT NULL車名CTypevarchar(50)NOT NULL車次類型表 3.1 車次表3.2.2 訂單表字段名數(shù)據(jù)類型是否可空說(shuō)明OidintNOT NULL訂

28、單號(hào)(主鍵)OCarvarchar(50)NOT NULL車號(hào)(外鍵)Oticketypevarchar(10)NOT NULL訂票類型ObuyTimedatetimeNOT NULL訂單時(shí)間OusetimedatetimeNOT NULL發(fā)車時(shí)間OmoneymoneyNOT NULL價(jià)格Oadminvarchar(50)NOT NULL用戶名表3.2 訂單表 3.2.3 售票表字段名數(shù)據(jù)類型是否可空說(shuō)明SidintNOT NULL車號(hào)(主鍵)SCarvarchar(50)NOT NULL車次(外鍵)SticketTypevarchar(10)NOT NULL車次類型(外鍵)Stimedate

29、timeNOT NULL發(fā)車日期(外鍵)Smoneymoney NULL價(jià)格SadminvarcharNULL用戶名表3.3 售票表3.2.4 系統(tǒng)表字段名數(shù)據(jù)類型是否可空說(shuō)明SysidinNOT NULL車號(hào)(主鍵)SysBuyTimevarchar(50) NULL買(mǎi)票時(shí)間SysOrderTimevarchar(50) NULL訂票時(shí)間SysuipiaoTimeVarchar(50)NULL退票時(shí)間表3.4 系統(tǒng)表3.2.5 退票表字段名數(shù)據(jù)類型是否可空說(shuō)明TidintNOT NULL退票車號(hào)Tnamevarchar(50)NOT NULL退票類型TtimedatetimeNOT NULL

30、退票時(shí)間TmoneymoneyNULL退票價(jià)格表3.5 退票表第4章 系統(tǒng)的總體設(shè)計(jì)4.1 系統(tǒng)軟件的結(jié)構(gòu)設(shè)計(jì)4.1.1 軟件結(jié)構(gòu) 本高鐵車票訂票系統(tǒng)可劃分為信息查詢、網(wǎng)上訂票、取消訂票三個(gè)部分。其中信息查詢又可分為車次查詢和訂單查詢兩個(gè)部分。其層次圖如圖4.1所示。火車票網(wǎng)上訂票系統(tǒng)信息查詢車次查詢訂票查詢網(wǎng)上訂票取消訂票圖4.1 高鐵車票訂票系統(tǒng)層次圖4.1.2 模塊算法 1.各級(jí)別算法 1) 界面級(jí)算法 處理輸入信息,產(chǎn)生相應(yīng)任務(wù)。如圖4.2所示:輸入數(shù)據(jù)產(chǎn)生任務(wù)客戶端校驗(yàn)數(shù)據(jù)數(shù)據(jù)信息反饋信息加工 圖4.2 界面級(jí)算法示意圖2) 數(shù)據(jù)庫(kù)級(jí)算法執(zhí)行相應(yīng)數(shù)據(jù)庫(kù)操作,并直接返回信息反饋.如圖4

31、.3所示:底層數(shù)據(jù)庫(kù)操作(封裝)用戶界面級(jí)模塊任務(wù)數(shù)據(jù)校驗(yàn),調(diào)用相關(guān)模塊功能圖4.3 數(shù)據(jù)庫(kù)級(jí)算法示意圖3) 任務(wù)級(jí)算法執(zhí)行所需功能,滿足用戶需求.如圖4.4所示:失敗任務(wù)觸發(fā)權(quán)限校驗(yàn)生成數(shù)據(jù)請(qǐng)求并記錄數(shù)據(jù)處理并反饋界面顯示圖4.4任務(wù)級(jí)算法示意圖2. 調(diào)用關(guān)系1)界面模塊調(diào)用任務(wù)模塊2)任務(wù)模塊調(diào)用數(shù)據(jù)模塊3)數(shù)據(jù)模塊調(diào)用界面模塊顯示4.2 系統(tǒng)流程圖系統(tǒng)頂層流程圖如圖3.5所示。圖4.6圖4.9為各模塊詳細(xì)系統(tǒng)流程圖。查詢程序訂票程序退票程序火車站網(wǎng)上訂票系統(tǒng)系統(tǒng)數(shù)據(jù)庫(kù)事務(wù)相應(yīng)信息操作反饋 圖4.5 系統(tǒng)頂層流程圖 輸入所需車次的重要信息查詢程序系統(tǒng)數(shù)據(jù)庫(kù)符合用戶需求的車次信息事務(wù)圖4.6

32、 車次信息查詢系統(tǒng)流程圖查詢程序系統(tǒng)數(shù)據(jù)庫(kù)符合用戶需求的訂票信息事務(wù)輸入查詢條件 圖4.7 訂單信息查詢系統(tǒng)流程圖 訂票程序系統(tǒng)數(shù)據(jù)庫(kù)操作反饋事務(wù)輸入訂票信息 圖4.8 訂票系統(tǒng)流程圖退票程序系統(tǒng)數(shù)據(jù)庫(kù)操作反饋事務(wù)輸入退票信息 圖4.9退票系統(tǒng)流程圖第5章 系統(tǒng)的詳細(xì)設(shè)計(jì)5.1 用戶操作業(yè)務(wù)流程圖5.1.1 用戶系統(tǒng)主程序流程圖。如圖5.1 所示:NYYYNY開(kāi)始主界面NY選擇訂票窗口選擇查詢窗口查詢界面訂票訂票界面選擇退票窗口YN退票退票界面退出N查詢車次信息訂票查詢訂票信息退票結(jié)束登錄框登錄,確定訪問(wèn)權(quán)限 圖5.1 用戶程序主流程圖5.1.2 車次信息查詢業(yè)務(wù)流程圖.如圖5.2所示:NNN

33、YYYNNYY查詢界面用戶輸入要查詢條件查詢讀數(shù)據(jù)文件輸出查詢結(jié)果關(guān)閉窗口結(jié)束開(kāi)始訂票訂票界面繼續(xù)查詢車次信息查詢車次信息訂票返回主頁(yè) 圖5.2車次信息查詢業(yè)務(wù)流程圖5.1.3 訂票處理流程圖.如圖5.3所示:NNYYNYNY開(kāi)始訂票界面訂票輸入訂票信息N返回主頁(yè)繼續(xù)訂票提交信息有效性修改數(shù)據(jù)文件Y關(guān)閉窗口結(jié)束錯(cuò)誤提示圖5.3訂票處理流程圖5.1.4 訂票信息查詢處理流程圖.如圖5.4所示:NNNYYYNY查詢界面讀數(shù)據(jù)文件輸出查詢結(jié)果關(guān)閉窗口結(jié)束開(kāi)始Y返回主頁(yè)主界面退票退票界面繼續(xù)查詢訂票信息查詢訂票信息退票圖 5.4訂票信息查詢處理流程圖5.1.5 退票處理流程圖.如圖5.5所示:NNYY

34、NYNY開(kāi)始退票界面退票N返回主頁(yè)繼續(xù)退票提交信息有效性Y關(guān)閉窗口結(jié)束錯(cuò)誤提示輸入退票信息圖5.5退票處理流程圖5.2 接口設(shè)計(jì)5.2.1 用戶接口 用戶通過(guò)界面接口來(lái)實(shí)現(xiàn)參數(shù)的輸入,進(jìn)入相應(yīng)的界面后輸入提示的信息即可產(chǎn)生相應(yīng)的任務(wù);在用戶登錄時(shí),如果用戶輸入的信息是非法的系統(tǒng)會(huì)提示有錯(cuò)誤信息。5.2.2 外部接口 本系統(tǒng)得數(shù)據(jù)庫(kù)是用SQL,然后在計(jì)算機(jī)上創(chuàng)建OLEDB數(shù)據(jù)源,然后用的asp的幾個(gè)數(shù)據(jù)庫(kù)連接來(lái)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接。5.2.3 內(nèi)部接口 本系統(tǒng)包括如下幾個(gè)方面:登陸界面,訂票,車票時(shí)刻信息查詢。需要的數(shù)據(jù)表有:Admin、Car、OrderTicket等表,這幾個(gè)數(shù)據(jù)表都有自己的主

35、鍵,表之間通過(guò)主鍵實(shí)現(xiàn)連接。5.3 詳細(xì)頁(yè)面設(shè)計(jì)本身這個(gè)系統(tǒng)主要包括兩個(gè)登錄窗口:一個(gè)乘客登錄窗口,一個(gè)管理員登錄窗口。當(dāng)一個(gè)乘客訪問(wèn)這個(gè)頁(yè)面的時(shí)候,他首先可看到的是主頁(yè)面上有3個(gè)基本功能:銷售車票,預(yù)定車票,退回車票。你通過(guò)售票車票,可以查詢車次,價(jià)格等信息。乘客訂票是需要乘客進(jìn)行注冊(cè)后才能擁有的功能,而第3個(gè)功能就是乘客訂票,通過(guò)輸入車次等信息,可以進(jìn)行訂票。管理員登錄窗口,我們?cè)O(shè)為初始值,管理員登錄后擁有線路的添加,刪改的功能。5.4 物理結(jié)構(gòu)設(shè)計(jì)要點(diǎn)給出本系統(tǒng)內(nèi)所使用的每個(gè)數(shù)據(jù)結(jié)構(gòu)中的每個(gè)數(shù)據(jù)項(xiàng)的存儲(chǔ)要求,訪問(wèn)方法、存取單位、存取的物理關(guān)系(索引、設(shè)備、存儲(chǔ)區(qū)域)、設(shè)計(jì)考慮和保密條件。

36、設(shè)計(jì)系統(tǒng)界面,主要界面如下:5.4.1 系統(tǒng)登錄主界面 5.4.2 售票車票系統(tǒng)的主界面 5.4.3 車票預(yù)定系統(tǒng)主界面5.4.4 退票系統(tǒng)主界面第6章 測(cè)試6.1 數(shù)據(jù)與數(shù)據(jù)庫(kù)完整性的測(cè)試測(cè)試目標(biāo) 確保數(shù)據(jù)庫(kù)訪問(wèn)和進(jìn)程正常進(jìn)行,數(shù)據(jù)不會(huì)遭到損壞技術(shù)調(diào)用各個(gè)數(shù)據(jù)庫(kù)訪問(wèn)方法和進(jìn)程,并在其中填充有效和無(wú)效的數(shù)據(jù) (或?qū)?shù)據(jù)的請(qǐng)求)。檢查數(shù)據(jù)庫(kù),確保數(shù)據(jù)已按預(yù)期的方式填充,并且所有的數(shù)據(jù)庫(kù)事件已正常發(fā)生;或者檢查所返回的數(shù)據(jù),確保為正當(dāng)?shù)睦碛蓹z索到了正確的數(shù)據(jù)。完成標(biāo)準(zhǔn)所有的數(shù)據(jù)庫(kù)訪問(wèn)和進(jìn)程都按照設(shè)計(jì)的方式運(yùn)行,數(shù)據(jù)沒(méi)有遭到損壞。需考慮的特殊事項(xiàng)進(jìn)程應(yīng)該以手工方式調(diào)用應(yīng)使用小型或最小的數(shù)據(jù)庫(kù)來(lái)使所有

37、無(wú)法接受的事件具有更大的可視度6.2 功能的測(cè)試測(cè)試目標(biāo) 確保功能正常,其中包括導(dǎo)航,數(shù)據(jù)輸入,處理和檢索等功能技術(shù)用有效的和無(wú)效的數(shù)據(jù)來(lái)執(zhí)行各個(gè)用例。1在使用有效的數(shù)據(jù)時(shí)得到預(yù)期的結(jié)果2在使用無(wú)效的數(shù)據(jù)時(shí)顯示相應(yīng)的錯(cuò)誤信息和警告消息3各業(yè)務(wù)規(guī)則都得到了有效的應(yīng)用完成標(biāo)準(zhǔn)所有計(jì)劃的測(cè)試全部執(zhí)行所發(fā)現(xiàn)的缺陷全部解決需考慮的特殊事項(xiàng)產(chǎn)品已完成功能的提交是否在測(cè)試的范圍內(nèi)6.3 業(yè)務(wù)周期測(cè)試 業(yè)務(wù)周期測(cè)試是模擬一段時(shí)間內(nèi)系統(tǒng)的運(yùn)行情況6.4 用戶界面的測(cè)試測(cè)試目標(biāo) 系統(tǒng)的界面美觀,得體,功能正常,符合用戶的要求,窗口的對(duì)象和特征符合標(biāo)準(zhǔn)。技術(shù)人工測(cè)試或自動(dòng)化測(cè)試工具進(jìn)行測(cè)試,模擬用戶的操作,確保界面

38、能夠正確的瀏覽,在不同的瀏覽器下顯示正常。完成標(biāo)準(zhǔn)核實(shí)頁(yè)面達(dá)到用戶的標(biāo)準(zhǔn)需考慮的特殊事項(xiàng)不同瀏覽器,不同的窗口大小的顯示。結(jié) 論二十一世紀(jì)是一個(gè)高速、快捷的年代。在這個(gè)高速發(fā)展的年代里,速度成了我們追求的目標(biāo);二是提高工作效率;三是降低成本。因此,辦公自動(dòng)化的高速度、高效率、高便捷、低成本便成了我們的目的,為此開(kāi)發(fā)了這個(gè)高鐵車票訂票系統(tǒng)。本系統(tǒng)可以大大簡(jiǎn)化退票、訂票、查詢等十分繁瑣的工作,簡(jiǎn)化辦公環(huán)節(jié),提高工作效率,而且易學(xué)、易用,滿足客戶需求。這次系統(tǒng)的設(shè)計(jì)從最開(kāi)始的可行性研究,需求分析,到系統(tǒng)的總體設(shè)計(jì),詳細(xì)設(shè)計(jì),再到編碼、測(cè)試等的一個(gè)整體過(guò)程,使我真正明白了要做一個(gè)軟件的難度,特別是要做

39、一個(gè)真正可用的軟件,就更難了。在老師和同學(xué)的幫助下,我把以往所學(xué)的軟件工程、數(shù)據(jù)庫(kù)知識(shí)結(jié)合起來(lái),利用asp開(kāi)發(fā)工具,加上SQL Server 2005數(shù)據(jù)庫(kù)系統(tǒng),完成了本次課程設(shè)計(jì),盡量使它能滿足各個(gè)方面的要求。當(dāng)然,我的個(gè)人能力有限,還有很多不足的地方,敬請(qǐng)諒解。在這次課程設(shè)計(jì)過(guò)程中我遇到了不少的難題,比如數(shù)據(jù)庫(kù)操作問(wèn)題,界面設(shè)計(jì)問(wèn)題,函數(shù)使用與實(shí)現(xiàn)問(wèn)題,消息處理問(wèn)題等等。其中,最關(guān)鍵的是在最初對(duì)系統(tǒng)的需求分析做的不透徹,導(dǎo)致后續(xù)設(shè)計(jì)工作乃至編碼時(shí)的修改工作量變大。以至于為了能按時(shí)完成設(shè)計(jì)任務(wù),我一連度過(guò)了幾個(gè)通宵。尤其,越接近結(jié)束,就越是時(shí)常出現(xiàn)問(wèn)題。所以,通過(guò)這次課程設(shè)計(jì)我深刻體會(huì)到軟件

40、工程還是必須學(xué)精通點(diǎn)、學(xué)透徹點(diǎn)。通過(guò)這次課程設(shè)計(jì),我學(xué)會(huì)了如何對(duì)所學(xué)課程綜合運(yùn)用,鞏固了軟件工程的一般規(guī)范,對(duì)數(shù)據(jù)庫(kù)的使用也有了更進(jìn)一步了解??傮w來(lái)說(shuō),課程設(shè)計(jì)讓我學(xué)了不少知識(shí)。我認(rèn)為課程設(shè)計(jì)是我們學(xué)習(xí)生涯中相當(dāng)重要的一課,除了驗(yàn)證學(xué)生的學(xué)習(xí)成果外,也是訓(xùn)練一個(gè)人獨(dú)立思考及解決問(wèn)題的能力.在這里,我要感謝指導(dǎo)老師和同學(xué)在這次課程設(shè)計(jì)中對(duì)我的幫助。致 謝在論文完成之際,我要特別感謝我的指導(dǎo)老師李月峰老師的熱情關(guān)懷和悉心指導(dǎo)。在我撰寫(xiě)論文的過(guò)程中,李老師傾注了大量的心血和汗水,無(wú)論是在論文的選題、構(gòu)思和資料的收集方面,還是在論文的研究方法以及成文定稿方面,我都得到了李老師悉心細(xì)致的教誨和無(wú)私的幫助

41、,特別是他廣博的學(xué)識(shí)、深厚的學(xué)術(shù)素養(yǎng)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和一絲不茍的工作作風(fēng)使我終生受益,在此表示真誠(chéng)地感謝和深深的謝意。 在論文的寫(xiě)作過(guò)程中,也得到了許多同學(xué)的寶貴建議,同時(shí)還得到許多在工作過(guò)程中許多同事的支持和幫助,在此一并致以誠(chéng)摯的謝意。 感謝所有關(guān)心、支持、幫助過(guò)我的良師益友。 最后,向在百忙中抽出時(shí)間對(duì)本文進(jìn)行評(píng)審并提出寶貴意見(jiàn)的各位老師表示衷心地感謝!參 考 文 獻(xiàn)1 張孝祥;徐明華 等著.ASP.NET基礎(chǔ)與案例開(kāi)發(fā)詳解.第1版.北京:清華大學(xué)出版社,20092 康會(huì)光,王俊偉,張瑞萍.SQL Server 2005 中文版標(biāo)準(zhǔn)教程. 第1版.北京:清華大學(xué)出版社,20073 四維科

42、技,曹衍龍.數(shù)據(jù)庫(kù)開(kāi)發(fā)實(shí)用工程案例精選.北京:人民郵電出版社,20044 飛思科技產(chǎn)品研發(fā)中心.NET核心技術(shù)高級(jí)特性.第1版.北京:電子工業(yè)出版社,20025 陳豫龍.DELPHI 6數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航.J第I版.北京:人民郵電出版社,2002,20(11):35-366 薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論.北京:高等教育出版社,2000年7 張立厚等著,管理信息系統(tǒng),世界圖書(shū)出版公司,2002,28(8):38-408 陳淑珍,楊濤.基于Internet的遠(yuǎn)程教學(xué)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).現(xiàn)代教育技術(shù),2001,(36) :34-359 胡延平,盧曉慶,馮明東,王慧;基于.Net架構(gòu)的交通旅游售票系統(tǒng)

43、的設(shè)計(jì)與實(shí)現(xiàn)J;計(jì)算機(jī)工程與設(shè)計(jì);2005年01期10 邱巖,王慶玲;用.NET實(shí)現(xiàn)系統(tǒng)整合的關(guān)鍵技術(shù)J;計(jì)算機(jī)工程與應(yīng)用;2003年24期11 于松濤.精通SQL server 2000數(shù)據(jù)庫(kù)管理與開(kāi)發(fā)M.北京:人民郵電出版社,2003.1012 孫涌.現(xiàn)代軟件工程.北京希望電子出版社,2003年8月:1-246附錄A 譯文模擬測(cè)試模糊測(cè)試(Fuzz testing )是一項(xiàng)對(duì)代碼質(zhì)量有著深遠(yuǎn)影響的簡(jiǎn)單技術(shù)。在本文中,Elliotte Rusty Harold 故意將隨機(jī)的壞數(shù)據(jù)插入應(yīng)用程序,以觀察發(fā)生的結(jié)果。他也解釋了如何使用如校驗(yàn)和、XML 數(shù)據(jù)存儲(chǔ)及代碼驗(yàn)證等防護(hù)性編碼技術(shù),來(lái)加固您的

44、程序以抵制隨機(jī)數(shù)據(jù)。他以一個(gè)練習(xí)進(jìn)行總結(jié),在練習(xí)中他以一個(gè)代碼破壞者的角度進(jìn)行思考 這是一種用于防護(hù)代碼的至關(guān)重要的技術(shù)。多年來(lái),我驚嘆于有如此大量能夠使 Microsoft Word 崩潰的壞文件。少數(shù)字節(jié)錯(cuò)位,會(huì)使整個(gè)應(yīng)用程序毀于一旦。在舊式的、無(wú)內(nèi)存保護(hù)的操作系統(tǒng)中,整個(gè)計(jì)算機(jī)通常就這樣崩潰掉了。Word 為什么不能意識(shí)到它接收到了壞的數(shù)據(jù),并發(fā)出一條錯(cuò)誤信息呢?為什么它會(huì)僅僅因?yàn)樯贁?shù)字節(jié)被損壞就破壞自己的棧、堆呢?當(dāng)然,Word 并不是惟一一個(gè)面對(duì)畸形文件時(shí)表現(xiàn)得如此糟糕的程序。本文介紹了一種試圖避免這種災(zāi)難的技術(shù)。在模糊測(cè)試中,用隨機(jī)壞數(shù)據(jù)(也稱做 fuzz)攻擊一個(gè)程序,然后等著觀

45、察哪里遭到了破壞。模糊測(cè)試的技巧在于,它是不符合邏輯的:自動(dòng)模糊測(cè)試不去猜測(cè)哪個(gè)數(shù)據(jù)會(huì)導(dǎo)致破壞(就像人工測(cè)試員那樣),而是將盡可能多的雜亂數(shù)據(jù)投入程序中。由這個(gè)測(cè)試驗(yàn)證過(guò)的失敗模式通常對(duì)程序員來(lái)說(shuō)是個(gè)徹底的震憾,因?yàn)槿魏伟催壿嬎伎嫉娜硕疾粫?huì)想到這種失敗。模糊測(cè)試是一項(xiàng)簡(jiǎn)單的技術(shù),但它卻能揭示出程序中的重要 bug。它能夠驗(yàn)證出現(xiàn)實(shí)世界中的錯(cuò)誤模式并在您的軟件發(fā)貨前對(duì)潛在的應(yīng)當(dāng)被堵塞的攻擊渠道進(jìn)行提示。模糊測(cè)試的實(shí)現(xiàn)是一個(gè)非常簡(jiǎn)單的過(guò)程:1. 準(zhǔn)備一份插入程序中的正確的文件。 2. 用隨機(jī)數(shù)據(jù)替換該文件的某些部分。 3. 用程序打開(kāi)文件。 4. 觀察破壞了什么。 可以用任意多種方式改變?cè)撾S機(jī)數(shù)據(jù)

46、。例如,可以將整個(gè)文件打亂,而不是僅替換其中的一部分,也可以將該文件限制為 ASCII 文本或非零字節(jié)。不管用什么方式進(jìn)行分割,關(guān)鍵是將大量隨機(jī)數(shù)據(jù)放入應(yīng)用程序并觀察出故障的是什么。測(cè)試基于 C 的應(yīng)用程序當(dāng)字符串包含額外的零時(shí),許多用 C 編寫(xiě)的程序都會(huì)出問(wèn)題 這類問(wèn)題太過(guò)頻繁以至于額外的零能夠徹底隱藏代碼中其他的問(wèn)題。一旦驗(yàn)證出程序存在零字節(jié)問(wèn)題,就可以移除它們,從而讓其他的問(wèn)題浮現(xiàn)出來(lái)。 可以手動(dòng)進(jìn)行初始化測(cè)試,但要想達(dá)到最佳的效果則確實(shí)需要采用自動(dòng)化模糊測(cè)試。在這種情況下,當(dāng)面臨破壞輸入時(shí)首先需要為應(yīng)用程序定義適當(dāng)?shù)腻e(cuò)誤行為。(如果當(dāng)輸入數(shù)據(jù)被破壞時(shí),您發(fā)現(xiàn)程序正常運(yùn)行,且未定義發(fā)生的

47、事件,那么這就是第一個(gè) bug。)隨后將隨機(jī)數(shù)據(jù)傳遞到程序中直到找到了一個(gè)文件,該文件不會(huì)觸發(fā)適當(dāng)?shù)腻e(cuò)誤對(duì)話框、消息、異常,等等。存儲(chǔ)并記錄該文件,這樣就能在稍后重現(xiàn)該問(wèn)題。如此重復(fù)。盡管模糊測(cè)試通常需要一些手動(dòng)編碼,但還有一些工具能提供幫助。例如,清單 1 顯示了一個(gè)簡(jiǎn)單的 Java 類,該類隨機(jī)更改文件的特定長(zhǎng)度。我常愿意在開(kāi)始的幾個(gè)字節(jié)后面啟動(dòng)模糊測(cè)試,因?yàn)槌绦蛩坪醺赡茏⒁獾皆缙诘腻e(cuò)誤而不是后面的錯(cuò)誤。(您的目的是想找到程序未檢測(cè)到的錯(cuò)誤,而不是尋找已經(jīng)檢測(cè)到的。)清單 1. 用隨機(jī)數(shù)據(jù)替換文件部分的類import java.io.*;import java.security.Secu

48、reRandom;import java.util.Random;public class Fuzzer private Random random = new SecureRandom(); private int count = 1; public File fuzz(File in, int start, int length) throws IOException byte data = new byte(int) in.length(); DataInputStream din = new DataInputStream(new FileInputStream(in); din.re

49、adFully(data); fuzz(data, start, length); String name = fuzz_ + count + _ + in.getName(); File fout = new File(name); FileOutputStream out = new FileOutputStream(fout); out.write(data); out.close(); din.close(); count+; return fout; / Modifies byte array in place public void fuzz(byte in, int start,

50、 int length) byte fuzz = new bytelength; random.nextBytes(fuzz); System.arraycopy(fuzz, 0, in, start, fuzz.length); 關(guān)于代碼我可以用很多種方式優(yōu)化 清單 1 中的代碼。例如,有著 java.nio 的內(nèi)存映射文件是一個(gè)相當(dāng)不錯(cuò)的選擇。我也能夠改進(jìn)這個(gè)錯(cuò)誤處理及可配置性。因?yàn)椴幌胱屵@些細(xì)節(jié)混淆這里所要說(shuō)明的觀點(diǎn),所以我將代碼保持了原樣。 模糊測(cè)試文件很簡(jiǎn)單。將其傳至應(yīng)用程序通常不那么困難。如 AppleScript 或 Perl 腳本語(yǔ)言通常是編寫(xiě)模糊測(cè)試的最佳選擇。對(duì)于 GUI 程序,最困難的部分是辨認(rèn)出應(yīng)用程序是否檢測(cè)出正

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論