

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 火車旅客信息管理系統(tǒng)</p><p> 姓 名: xxxx </p><p> 系 部: 信息工程系 </p><p> 專 業(yè):10計(jì)算機(jī)信息管理</p><p&
2、gt; 指導(dǎo)教師: xxxxxx </p><p> 日 期: 2013年5月25日 </p><p><b> 目錄</b></p><p><b> 目錄1</b></p><p><b> 摘 要3</b></p>
3、;<p><b> 引 言4</b></p><p> 第一章 需求分析5</p><p> 1.1任務(wù)需求分析5</p><p> 1.2數(shù)據(jù)流圖、數(shù)據(jù)字典及實(shí)體聯(lián)系圖5</p><p> 1.2.1 數(shù)據(jù)流圖5</p><p> 1.2.2數(shù)據(jù)字典
4、6</p><p> 1.2.3數(shù)據(jù)庫的具體設(shè)計(jì)如下7</p><p> 1.2.4實(shí)體聯(lián)系E-R圖10</p><p> 第二章 系統(tǒng)概要設(shè)計(jì)15</p><p> 2.1總體設(shè)計(jì)15</p><p> 2.2系統(tǒng)功能模塊圖15</p><p> 2.3數(shù)據(jù)庫概念設(shè)計(jì)
5、17</p><p> 2.4數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)18</p><p> 2.5連接數(shù)據(jù)庫的特點(diǎn)20</p><p> 第三章 詳細(xì)設(shè)計(jì)21</p><p> 3.1系統(tǒng)的主要功能及實(shí)現(xiàn)21</p><p> 3.1.1系統(tǒng)登陸管理模塊21</p><p> 3.1.2時(shí)刻
6、信息管理模塊22</p><p> 3.1.3車次信息管理模塊22</p><p> 3.1.4 售票訂票信息管理模塊23</p><p> 31.5 新用戶注冊模塊25</p><p> 3.1.6通知乘車常識(shí)等信息管理模塊26</p><p> 3.2程序流程圖27</p>&l
7、t;p> 3.3用戶界面設(shè)計(jì)28</p><p> 3.3.1一般交互設(shè)計(jì)28</p><p> 3.3.2信息顯示設(shè)計(jì)29</p><p> 3.3.3輸入界面設(shè)計(jì)29</p><p> 3.4軟件測試30</p><p> 3.4.1測試的方法和步驟30</p><
8、p> 5.4.2測試用例30</p><p><b> 參考文獻(xiàn)32</b></p><p><b> 設(shè)計(jì)總結(jié)33</b></p><p><b> 致 謝34</b></p><p><b> 摘 要</b></p
9、><p> 火車旅客信息網(wǎng)上管理系統(tǒng)的總體目標(biāo)是:在計(jì)算機(jī)網(wǎng)絡(luò),數(shù)據(jù)庫和先進(jìn)的開發(fā)平臺(tái)上,利用現(xiàn)有的軟件,配置一定的硬件,分析和設(shè)計(jì)一個(gè)具有開放體系結(jié)構(gòu)的、易擴(kuò)充的、易維護(hù)的、具有良好人機(jī)交互界面的火車旅客信息網(wǎng)上管理系統(tǒng),為主管部門的決策者和管理者提供充足的信息、快捷的查詢和有效的管理方式,減少不必要的損失和浪費(fèi),提高人事管理的效率。</p><p> 關(guān)鍵詞:鐵路系統(tǒng);數(shù)據(jù)庫;數(shù)據(jù)字典
10、;信息管理</p><p><b> 引 言</b></p><p> 隨著人類文明的飛速發(fā)展,人類的活動(dòng)不僅僅局限在一個(gè)小的圈子里。而且物品也越來越豐富,致使鐵路運(yùn)輸企業(yè)有了很大的發(fā)展。與之俱來的是對旅客信息的管理。如果單憑人力,根本跟不上環(huán)境的要求,不但工作量大而且容易出錯(cuò)。隨著科技的發(fā)展,計(jì)算機(jī)軟硬件技術(shù)已經(jīng)達(dá)到了相當(dāng)高的水平。于是,火車旅客信息網(wǎng)上管
11、理軟件迎合了市場,為企業(yè)創(chuàng)造了不少價(jià)值。</p><p> 火車旅客信息網(wǎng)上管理,不僅僅是對旅客信息的簡單管理,它包括火車時(shí)刻表、車次查詢、緊急通知、乘車小常識(shí)等信息的發(fā)布和相關(guān)管理。這是對旅客的熱情服務(wù)也是人性化關(guān)懷的充分展現(xiàn)。</p><p> 這套系統(tǒng)分二部分進(jìn)行信息管理:管理員管理,是最為重要的一部分,它包括售票訂票系統(tǒng)的權(quán)限設(shè)置,旅客意見的采納與回復(fù);火車時(shí)刻表管理,是對車輛
12、信息的管理,包括車輛的車次,始發(fā)站與終點(diǎn)站,快慢等級(jí),發(fā)車時(shí)間與到達(dá)時(shí)間,及中途站點(diǎn)停車時(shí)間等;緊急通知編輯,是當(dāng)火車在行車過程中遇到緊急突發(fā)事件,如道路受損、讓車、技術(shù)停車等情況下對旅客進(jìn)行及時(shí)通知;乘車小常識(shí)管理,包括沿途風(fēng)光介紹,沿線土特產(chǎn)介紹,防盜與安全意識(shí)介紹等,是人性化服務(wù)很重要的一個(gè)組成部分。</p><p> 本系統(tǒng)采用Web模式來設(shè)計(jì),服務(wù)器端我們采用Oracle數(shù)據(jù)庫Jsp+servlet組
13、件來構(gòu)成服務(wù)系統(tǒng);客戶端采用瀏覽器來完成查詢,修改,刪除全過程,同時(shí)可進(jìn)行遠(yuǎn)程系統(tǒng)維護(hù)和治理。</p><p><b> 第一章 需求分析</b></p><p><b> 1.1任務(wù)需求分析</b></p><p><b> 系統(tǒng)任務(wù)主要包括:</b></p><p>
14、; 1)時(shí)刻信息:時(shí)刻信息的輸入、查詢、修改;</p><p> 2)車次信息:車次信息的輸入、查詢、修改;</p><p> 3)售票信息:售票信息的輸入、查詢、修改;</p><p> 4)訂票信息:訂票信息的輸入、查詢、修改;</p><p> 5)通知、常識(shí)等信息:通知、乘車常識(shí)信息的輸入、查詢、修改;</p>
15、<p> 6)用戶注冊,用戶信息的輸入等等;</p><p> 7)用戶登陸,用戶登錄時(shí)查詢,進(jìn)入后進(jìn)行購票;</p><p> 8)管理員信息:初始化管理員,對其他管理員的增加,刪除,查詢</p><p> 1.2數(shù)據(jù)流圖、數(shù)據(jù)字典及實(shí)體聯(lián)系圖</p><p> 1.2.1 數(shù)據(jù)流圖</p><p&
16、gt;<b> 圖3-1數(shù)據(jù)流圖</b></p><p> 數(shù)據(jù)流圖由四種基本的元素構(gòu)成:數(shù)據(jù)流(Data Flow),處理(Process),數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)源(數(shù)據(jù)終點(diǎn))。</p><p> 數(shù)據(jù)流(Data Flow):為具有名稱且有流向的數(shù)據(jù),用標(biāo)有名稱的箭頭表示,一個(gè)數(shù)據(jù)可以是記錄、組合項(xiàng)或基本項(xiàng)。</p><p> 處理(Pr
17、ocess):表示對數(shù)據(jù)所進(jìn)行的加工和變換,在圖中用矩形框表示。指向處理數(shù)據(jù)流為該處理的輸入數(shù)據(jù),離開處理的數(shù)據(jù)為處理的輸出數(shù)據(jù)。</p><p> 數(shù)據(jù)存儲(chǔ):表示用文件方式或數(shù)據(jù)庫形式所存儲(chǔ)的數(shù)據(jù),堆砌進(jìn)行的存取分別以指向或離開數(shù)據(jù)存儲(chǔ)的箭頭表示。</p><p> 數(shù)據(jù)源及數(shù)據(jù)終點(diǎn):表示數(shù)據(jù)的來源或數(shù)據(jù)的去向,可以是一個(gè)組織或人員,它處于系統(tǒng)范圍之外,所以又稱它為外部實(shí)體,它是為了
18、幫助理解系統(tǒng)界面而引入的,一般只出現(xiàn)在數(shù)據(jù)流圖的起點(diǎn)和終點(diǎn)。</p><p><b> 1.2.2數(shù)據(jù)字典</b></p><p> 數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合。</p><p> (a) (b)</p>&l
19、t;p> (c) (d)</p><p> (c) (d)</p><p><b> (e)</b></p><p> 圖3-2 火車旅客信息網(wǎng)上管理系統(tǒng)的數(shù)據(jù)字典</p><
20、;p> 1.2.3數(shù)據(jù)庫的具體設(shè)計(jì)如下</p><p> A.管理員管理信息表</p><p><b> B.訂票管理信息表</b></p><p> C.貨物托運(yùn)管理信息表</p><p><b> D.時(shí)刻信息管理表</b></p><p> E.站內(nèi)新
21、聞管理信息表</p><p> F.車次信息通知管理信息表</p><p> G.售票信息管理信息表</p><p><b> H.車次信息管理表</b></p><p><b> 用戶信息管理表</b></p><p> 1.2.4實(shí)體聯(lián)系E-R圖</p&g
22、t;<p> 根據(jù)對數(shù)據(jù)流圖和數(shù)據(jù)字典的分析,我們可以確定該應(yīng)用中的實(shí)體,屬性和實(shí)體之間的關(guān)系,并畫出如下所示的E-R圖。</p><p> 火車旅客信息網(wǎng)上管理系統(tǒng)E-R模型,如圖所示:</p><p><b> 前臺(tái)操作流程:</b></p><p><b> 后臺(tái)操作流程:</b></p&
23、gt;<p> 圖3-3 訂票管理E-R圖</p><p> 圖3-4 時(shí)刻管理E-R圖</p><p> 圖3-5 車次管理E-R圖</p><p> 圖3-6 售票管理E-R圖</p><p> 圖3-7 通知管理E-R圖</p><p> 圖3-8 系統(tǒng)后臺(tái)ER圖</p
24、><p><b> 系統(tǒng)ER圖說明</b></p><p> 售票過程中一個(gè)售票員可以售出多車票,一個(gè)乘客只能乘坐一輛車。</p><p> 一次訂票可能會(huì)定出多張車票。</p><p> 通知常識(shí)等信息等的緊急程度可以采用等級(jí)制。</p><p><b> 視圖設(shè)計(jì):</b
25、></p><p> 查詢視圖:可以查詢訂票信息,時(shí)刻信息,售票信息和訂票信息。</p><p> 輸入視圖:當(dāng)售出車票時(shí),可以添加信息,每次的存儲(chǔ)信息發(fā)生改變時(shí)可以進(jìn)行輸入。</p><p> 修改視圖:可以很方便的在一定權(quán)力下對系統(tǒng)信息進(jìn)行修改,比如售票訂票信息等。</p><p> 第二章 系統(tǒng)概要設(shè)計(jì)</p>
26、;<p><b> 2.1總體設(shè)計(jì)</b></p><p> 總體設(shè)計(jì)過程通常由兩個(gè)主要階段組成:系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體設(shè)計(jì)方案。結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)。</p><p> 系統(tǒng)概要設(shè)計(jì)的基本目的是用比較抽象的概括方式確定系統(tǒng)如何完成預(yù)定的任務(wù),也就是要確定系統(tǒng)的配置物理方案。軟件結(jié)構(gòu)設(shè)計(jì)時(shí)應(yīng)該遵循的最主要的原理是模塊獨(dú)立,讓模塊彼此間的
27、接口關(guān)系應(yīng)該盡量簡單。</p><p> 2.2系統(tǒng)功能模塊圖</p><p> 可以根據(jù)模塊獨(dú)立原理對軟件結(jié)構(gòu)進(jìn)行精化。為了合理的分解,得到盡可能高的內(nèi)聚、盡可能松散的耦合,最終要的是,為了得到一個(gè)易于實(shí)現(xiàn)、易于測試和易于維護(hù)的軟件結(jié)構(gòu),應(yīng)該對模塊進(jìn)行再分解或合并。</p><p> 系統(tǒng)功能模塊圖如下圖所示:</p><p> 圖
28、4-1系統(tǒng)功能模塊圖</p><p> 本系統(tǒng)共包括五大模塊,分別是時(shí)刻信息管理模塊,車次信息管理模塊,售票信息管理模塊,訂票信息管理模塊和通知乘車常識(shí)信息管理模塊。每個(gè)模塊的功能如下:</p><p> 1. 時(shí)刻信息管理模塊功能:</p><p> (1)實(shí)現(xiàn)時(shí)刻表相關(guān)信息的查詢;</p><p> (2)實(shí)現(xiàn)時(shí)刻表信息的更新,包
29、括增加、刪除、修改功能。</p><p> 2. 車次管理模塊功能:</p><p> (1)實(shí)現(xiàn)車次信息的查詢;</p><p> (2)實(shí)現(xiàn)車次信息的修改,添加,刪除。</p><p> 3. 售票信息管理模塊功能:</p><p> (1)實(shí)現(xiàn)售票信息的查詢;</p><p>
30、 (2)實(shí)現(xiàn)售票信息的適時(shí)更新,包括增加、刪除、修改功能。</p><p> 4.訂票信息管理模塊</p><p> (1)實(shí)現(xiàn)訂票信息的查詢;</p><p> (2)實(shí)現(xiàn)訂票信息的增加,修改功能。</p><p> 5.通知乘車常識(shí)等信息的管理模塊</p><p> (1)實(shí)現(xiàn)通知乘車常識(shí)等信息的查詢;&
31、lt;/p><p> (2)實(shí)現(xiàn)信息通知乘車常識(shí)等的增加和修改功能。</p><p> 6.站內(nèi)新聞信息管理等模塊</p><p> (1)實(shí)現(xiàn)站內(nèi)新聞信息的增加刪除修改;</p><p> (2)實(shí)現(xiàn)站內(nèi)新聞信息的查詢和分頁</p><p> 2.3數(shù)據(jù)庫概念設(shè)計(jì)</p><p> 數(shù)
32、據(jù)庫一般分為三級(jí)模式:外模式、概念模式和內(nèi)模式。外模式也就是不同用戶所對的數(shù)據(jù)視圖,它將數(shù)據(jù)庫內(nèi)部抽象的數(shù)據(jù)及其互相之間的關(guān)系表示為簡單、直觀的應(yīng)用界面。概念模式是數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征描述,通常以某種數(shù)據(jù)模型為基礎(chǔ)。內(nèi)模式是對數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式的描述。</p><p> 在這里我們將要設(shè)計(jì)的是數(shù)據(jù)庫的概念模式,通過對火車旅客信息網(wǎng)上管理系統(tǒng)的內(nèi)容和數(shù)據(jù)流程分析及E-R圖,設(shè)計(jì)如下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)
33、構(gòu)。</p><p> 訂票信息表(訂票單號(hào),訂票時(shí)間,訂單總價(jià),車票價(jià)格,訂票人,車次,起始站點(diǎn),終點(diǎn)站點(diǎn),發(fā)車時(shí)間,購買的票數(shù),付款狀態(tài),退訂事宜)</p><p> 時(shí)刻信息表(時(shí)刻編號(hào),車次,發(fā)車時(shí)刻,中途停車時(shí)間,到達(dá)時(shí)刻)</p><p> 車次信息表(火車編號(hào),車次,列車類別,起始站,終點(diǎn)站,)</p><p> 售票信
34、息表(售票單號(hào),售票時(shí)間,車票價(jià)格,客票類別,車次,起始站點(diǎn),終點(diǎn)站點(diǎn))</p><p> 通知乘車常識(shí)等信息表(通知編號(hào),通知時(shí)間,通知事件,播報(bào)人,車次)</p><p> 用戶信息表(用戶編號(hào),用戶名,用戶真實(shí)名字,用戶密碼,用戶郵箱,用戶電話,證件類型,身份證號(hào)碼)</p><p> 站內(nèi)新聞表(新聞編號(hào),新聞標(biāo)題,新聞內(nèi)容,新聞圖片,發(fā)布新聞時(shí)間)&
35、lt;/p><p> 托運(yùn)貨物表(托運(yùn)貨物訂單表,托運(yùn)人名字,貨物名字,托運(yùn)貨物價(jià)錢,托運(yùn)人的目的地,托運(yùn)人電話,接貨人名字,接貨人電話,接貨人地址,貨物描述,托運(yùn)時(shí)間)</p><p> 2.4數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)</p><p> 在數(shù)據(jù)庫設(shè)計(jì)中相當(dāng)重要的一步就是將概念模型轉(zhuǎn)化為計(jì)算機(jī)上DBMS所支持的數(shù)據(jù)模型,例如,將E-R圖模型轉(zhuǎn)化為關(guān)系模型,道理很簡單,我
36、們設(shè)計(jì)概念模型基本上都是一些抽象的關(guān)系,在再數(shù)據(jù)庫設(shè)計(jì)的實(shí)現(xiàn)過程中,在計(jì)算機(jī)上有效地表示出這些關(guān)系就成了數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵。根據(jù)運(yùn)輸企業(yè)信息管理系統(tǒng)的功能要求,選取Oracle庫。</p><p> 一、在上面的實(shí)體和實(shí)體之間的E-R圖設(shè)計(jì)基礎(chǔ)上,形成數(shù)據(jù)庫中的表格及表格之間的關(guān)系。</p><p> 表4-1訂票信息表(A)</p><p> 表4-2車次信息
37、表(B)</p><p> 表4-3 時(shí)刻信息表(C)</p><p> 表4-4 售票信息表(D)</p><p> 表4-5 通知乘車常識(shí)等信息表(E)</p><p> 表4-6 管理員信息表(F)</p><p> 表4-7 用戶信息表(F)</p><p> 表4
38、-8 新聞表 (F)</p><p> 表4-9 用戶注意信息表(F)</p><p> 2.5連接數(shù)據(jù)庫的特點(diǎn)</p><p> 當(dāng)開發(fā)環(huán)境通過連接到數(shù)據(jù)庫上之后,在設(shè)計(jì)中使用數(shù)據(jù)庫畫筆可實(shí)現(xiàn)對該數(shù)據(jù)庫中表格,視圖等的操作,如創(chuàng)建表空間,創(chuàng)建用戶,創(chuàng)建表,修改表,刪除表,增加/刪除記錄。</p><p> 設(shè)計(jì)中設(shè)計(jì)數(shù)據(jù)窗口的時(shí)候
39、,通過對話框?qū)崿F(xiàn)與數(shù)據(jù)的連接。在應(yīng)用程序中</p><p> 則一般是在應(yīng)用程序?qū)ο笾袝鴮戇B接數(shù)據(jù)庫的程序代碼,使得應(yīng)用程序開始運(yùn)行并實(shí)現(xiàn)與數(shù)據(jù)庫的連接,此時(shí)采用的是最基礎(chǔ)是JDBC的方式連接數(shù)據(jù)庫,并對其數(shù)據(jù)庫進(jìn)行操作。</p><p><b> 第三章 詳細(xì)設(shè)計(jì)</b></p><p> 3.1系統(tǒng)的主要功能及實(shí)現(xiàn)</p>
40、;<p> 根據(jù)上面的需求分析,設(shè)計(jì)好數(shù)據(jù)庫系統(tǒng),然后開發(fā)應(yīng)用程序可以考慮的窗體的系統(tǒng),每一個(gè)窗體實(shí)現(xiàn)不同的功能,可以設(shè)計(jì)下面的幾個(gè)模塊。</p><p> 3.1.1系統(tǒng)登陸管理模塊</p><p> 功能:本模塊的主要功能是對用戶身份進(jìn)行,驗(yàn)證只有系統(tǒng)的合法用戶才能進(jìn)入系統(tǒng)。并且不同的用戶具有不同的權(quán)限,權(quán)限低的用戶對有的功能將不可用。</p><
41、;p><b> 詳細(xì)設(shè)計(jì)如下:</b></p><p> public class UserLoginServlet extends HttpServlet {</p><p> private static final long serialVersionUID = -35371583551546599L;</p><p> p
42、ublic void doGet(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> this.doPost(request, response);</p><p><b>
43、 }</b></p><p> public void doPost(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p><b> try {</b>&
44、lt;/p><p> String userName = request.getParameter("userName");</p><p> String passWord = request.getParameter("passWord");</p><p> CheckDao d = new CheckDao();&l
45、t;/p><p> UsersModel users = new UsersModel();</p><p> users.setUserName(userName);</p><p> users.setPassWord(passWord);</p><p> //根據(jù)userName,passWord判斷userName是否存在這樣的
46、信息返回boolean</p><p> //為真則存在,不為真則不存在</p><p> boolean f = d.checkLoginUsers(users);</p><p> List<NewsModel> listNews = new ArrayList<NewsModel>();</p><p>&
47、lt;b> //創(chuàng)建數(shù)據(jù)庫鏈接</b></p><p> Connection conn = DBConnection.getConnection();</p><p> //隨機(jī)產(chǎn)生6條最新新聞信息</p><p> String sql = "select rownum rs, n.* from news n where r
48、ownum<=6 order by times desc ";</p><p> PreparedStatement ps = conn.prepareStatement(sql);</p><p><b> //執(zhí)行查詢操作</b></p><p> ResultSet rs = ps.executeQuery();&l
49、t;/p><p><b> //進(jìn)行遍歷取值</b></p><p> while (rs.next()) {</p><p> NewsModel news = new NewsModel();</p><p> news.setNewsId(rs.getInt("newsId"));</
50、p><p> news.setTitle(rs.getString("title"));</p><p> ................</p><p> listNews.add(news);</p><p><b> }</b></p><p> request.
51、setAttribute("listNews", listNews);</p><p> FindAllDao da = new FindAllDao();</p><p> List<NoticeInfoModel> list = da.findAllNoticeInfoModel();</p><p> request.se
52、tAttribute("list", list);</p><p> FindAllDao fd = new FindAllDao();</p><p> List<NewsModel> listnews = fd.findAllRandom();</p><p> request.setAttribute("list
53、news", listnews);</p><p><b> if (f) {</b></p><p> HttpSession session = request.getSession();</p><p> session.setAttribute("userName", userName);</p
54、><p> request.getRequestDispatcher("/WEB-INF/view/index.jsp")</p><p> .forward(request, response);</p><p><b> } else {</b></p><p> //不存在則返回到登錄頁面返
55、回提示信息msg</p><p> String msg = "用戶名或密碼錯(cuò)誤";</p><p> request.setAttribute("msg1", msg);</p><p> request.getRequestDispatcher(</p><p> "/WEB-IN
56、F/view/users/userLogin.jsp?msg=300").forward(</p><p> request, response);</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackT
57、race();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 3.1.2時(shí)刻信息管理模塊</p><p> 功能:該模塊主要是實(shí)現(xiàn)時(shí)刻的信息查詢、修改,刪除等
58、幾個(gè)功能。</p><p> 旅客信息查詢:該模塊為所有旅客提供查詢功能,查詢其詳細(xì)信息,但是對于信息沒有修改權(quán)限。</p><p> 具體實(shí)現(xiàn):管理員(有操作此系統(tǒng)權(quán)限的任何人)對信息具有修改刪除等權(quán)限,并允許每位旅客查詢,當(dāng)列車時(shí)刻信息有變化時(shí)通過管理員對信息進(jìn)行修改。</p><p> 3.1.3車次信息管理模塊</p><p>
59、 功能:本模塊的主要功能是把車次信息寫入存儲(chǔ)器,同時(shí)對數(shù)據(jù)庫中的信息進(jìn)行更新,以備用戶將來對存儲(chǔ)的信息進(jìn)行查詢和打印,此外還可以對車次信息進(jìn)行查詢和刪除功能。</p><p> 具體實(shí)現(xiàn):提供車次查詢、信息修改、信息刪除等功能。當(dāng)有新的車次安排時(shí),將車次的詳細(xì)信息輸入并保存,當(dāng)線路取消或變更時(shí)進(jìn)行修改或刪除。</p><p> 增加信息具體實(shí)現(xiàn)如下:</p><p
60、> public boolean insertTrainInfo(TrainInfoModel trainInfo) {</p><p> boolean flag = false;</p><p><b> try {</b></p><p> conn = DBConnection.getConnection();</p
61、><p> ps = conn.prepareStatement(TrainInfoCommons.SqlInsertTrainInfo);</p><p> ps.setInt(1, trainInfo.getaNo());</p><p> ps.setString(2, trainInfo.getTicketValue());</p><
62、p> ps.setString(3, trainInfo.getbLevel());</p><p> ps.setString(4, trainInfo.getbFrom());</p><p> ps.setString(5, trainInfo.getbTo());</p><p> ps.setInt(6, trainInfo.getTicke
63、tNumber());</p><p> ps.setString(7, trainInfo.getSaleTime());</p><p> int n = ps.executeUpdate();</p><p> if (n != 0) {</p><p> flag = true;</p><p><
64、;b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> DBConnection.closeAllConnection(conn, ps, null);<
65、/p><p><b> }</b></p><p> return flag;</p><p><b> }</b></p><p> 3.1.4 售票訂票信息管理模塊</p><p> 當(dāng)列車已經(jīng)開始運(yùn)營,旅客需要訂票或購票來登上火車。此時(shí)售票訂票信息顯得尤為重要。所
66、以此模塊必須可以滿足旅客查詢、登陸、訂票購票以及重要信息安全保密以確??蛻舻囊笞畲笙薅鹊牡靡詽M足。</p><p> 具體實(shí)現(xiàn):可以定義兩個(gè)標(biāo)志變量,來表示車票是否售出和是否預(yù)定,當(dāng)已經(jīng)有新任務(wù)時(shí),如果客戶愿意等待此項(xiàng)任務(wù)完成則將預(yù)約項(xiàng)做標(biāo)志。根據(jù)每次售票訂票的情況,隨時(shí)更新各線路車票的剩余狀況。</p><p> public class InsertBookingTicketSe
67、rvlet extends HttpServlet {</p><p><b> …….</b></p><p> @SuppressWarnings("deprecation")</p><p> public void doPost(HttpServletRequest request, HttpServletRe
68、sponse response)</p><p> throws ServletException, IOException {</p><p><b> //隨機(jī)產(chǎn)生訂單號(hào)</b></p><p> double dl = Math.random() * 1000000000;</p><p><b>
69、 //轉(zhuǎn)化成整數(shù)</b></p><p> double i = Math.floor(dl);</p><p> int aid = (int) i;</p><p> //轉(zhuǎn)化成數(shù)值類型Integer.parseInt(request.getParameter("aNo"))</p><p> I
70、nteger aNo = Integer.parseInt(request.getParameter("aNo"));</p><p> Integer ticketNumber = Integer.parseInt(request</p><p> .getParameter("ticketNumber"));</p><p
71、> float ticketValue = Float.parseFloat(request</p><p> .getParameter("ticketValue"));</p><p> String bLevel = request.getParameter("bLevel");</p><p> //將b
72、Level,bFrom,bTo,aOthers轉(zhuǎn)換成utf-8類型的中文編碼,以防插入時(shí)出現(xiàn)中午亂碼</p><p> bLevel = new String(bLevel.getBytes("iso-8859-1"), "utf-8");</p><p> String bFrom = request.getParameter("bF
73、rom");</p><p> bFrom = new String(bFrom.getBytes("iso-8859-1"), "utf-8");</p><p> float totalMoney = ticketValue * ticketNumber;</p><p> String userName
74、= request.getParameter("username");</p><p> String bTo = request.getParameter("bTo");</p><p> bTo = new String(bTo.getBytes("iso-8859-1"), "utf-8");<
75、/p><p> String aOthers = request.getParameter("aTime2");// 發(fā)車時(shí)間</p><p> String aTime2 = request.getParameter("aOthers");</p><p> aOthers = new String(aOthers.get
76、Bytes("iso-8859-1"), "utf-8");</p><p> int moneyStatus = 0;// 0表示未付款,1表示已付款</p><p> Date date = new Date();</p><p> int y = date.getYear() + 1900;</p>
77、<p> int M = date.getMonth() + 1;</p><p> int d = date.getDate();</p><p> int h = date.getHours();</p><p> int m = date.getMinutes();</p><p> int s = date.get
78、Seconds();</p><p> //獲取系統(tǒng)的時(shí)間進(jìn)行拼接成我們自身需要的時(shí)間</p><p> String time = y + "-" + M + "-" + d + " " + h + ":" + m + ":" + s;</p><p> Bo
79、okingModel bookingModel = new BookingModel();</p><p> bookingModel.setaId(aid);</p><p> bookingModel.setaName(totalMoney);// 應(yīng)付款金額</p><p> bookingModel.setaTime1(time);// 買票時(shí)間<
80、;/p><p> bookingModel.setaTime2(aTime2);// 發(fā)車時(shí)間</p><p> bookingModel.setbFrom(bFrom);// 起點(diǎn)站</p><p> bookingModel.setbTo(bTo);// 終點(diǎn)站</p><p><b> ……………..</b>&
81、lt;/p><p> FindByIdDao fd = new FindByIdDao();</p><p> TrainInfoModel trainInfoModel = fd.findTrainInfoByIdAno(aNo);</p><p><b> //計(jì)算剩余的票數(shù)</b></p><p> Integ
82、er number = trainInfoModel.getTicketNumber() - ticketNumber;</p><p> InsertDao id = new InsertDao();</p><p> //更新系統(tǒng)剩余的票數(shù),更新成功后才操作插入用戶所購票的信息</p><p> boolean flag = id.insertBookin
83、g(bookingModel);</p><p> if (flag) {</p><p> TrainInfoModel infoModel = new TrainInfoModel();</p><p> infoModel.setaNo(aNo);</p><p> infoModel.setTicketNumber(numbe
84、r);</p><p> UpdateDao ud = new UpdateDao();</p><p> ud.updateTrainInfoByaNo(infoModel);</p><p><b> ……..</b></p><p> request.getRequestDispatcher(</p&
85、gt;<p> "/WEB-INF/view/booking/updateBooking.jsp").forward(request,</p><p> response);</p><p><b> } else {</b></p><p> request.getRequestDispatcher(
86、"/WEB-INF/view/booking/error.jsp")</p><p> .forward(request, response);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b
87、></p><p> 31.5 新用戶注冊模塊</p><p> 當(dāng)一個(gè)新用戶登錄本網(wǎng)站的時(shí)候,進(jìn)行購票業(yè)務(wù)是,必須進(jìn)行實(shí)名的注冊才進(jìn)行購票,方便用戶信息的管理,也方便用戶對自己的信息的維護(hù)</p><p><b> 具體實(shí)現(xiàn)如下:</b></p><p><b> 用戶注冊源代碼</b&g
88、t;</p><p> public class InsertUserResigerServlet extends HttpServlet {</p><p> public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
89、 {</p><p> String userName = request.getParameter("userName");</p><p> String realName = request.getParameter("realName");</p><p> //對輸入的中文信息進(jìn)行轉(zhuǎn)碼,防止出現(xiàn)插入的時(shí)候出現(xiàn)中
90、文亂碼</p><p> realName = new String(realName.getBytes("iso-8859-1"), "utf-8");</p><p> String passWord = request.getParameter("passWord");</p><p> Str
91、ing userEmail = request.getParameter("userEmail");</p><p> String email = "";</p><p> String phone = "";</p><p> if(userEmail==""){</p&
92、gt;<p> //對插入的空信息進(jìn)行初始化</p><p> email = "aa@qq.com";</p><p><b> }</b></p><p> String userPhone = request.getParameter("userPhone");</p&g
93、t;<p> String cardLevel = request.getParameter("cardLevel");</p><p> String userCard = request.getParameter("userCard");</p><p> if(userPhone==""){</p&
94、gt;<p> phone = "12345678900";</p><p><b> }</b></p><p> //對插入時(shí)的信息進(jìn)行設(shè)置</p><p> UsersModel usersModel = new UsersModel();</p><p><b>
95、; ........</b></p><p> CheckDao d = new CheckDao();</p><p> UsersModel users = new UsersModel();</p><p> users.setUserName(userName);</p><p> //判斷該userName的值
96、是否存在返回boolean</p><p> boolean f = d.CheckUsersByUserName(users);</p><p> //判斷該userCard的值是否存在返回boolean</p><p> UsersModel f1 = new UsersModel();</p><p> f1.setUserCa
97、rd(userCard);</p><p> boolean b = d.CheckUsersByUserCard(f1);</p><p> if (f && b) {</p><p> ............</p><p> request.setAttribute("userCard",
98、userCard);</p><p> String msg = "該證件號(hào)已經(jīng)存在";</p><p> request.setAttribute("msg", msg);</p><p> String username = userName + "該用戶已經(jīng)存在";</p><
99、;p> request.setAttribute("usernamemsg", username);</p><p> request.getRequestDispatcher("/WEB-INF/view/users/userAdd.jsp")</p><p> .forward(request, response);</p>
100、;<p> } else if (f) {</p><p><b> .......</b></p><p> request.setAttribute("userCard", userCard);</p><p> String username = userName + "該用戶已經(jīng)存在&
101、quot;;</p><p> request.setAttribute("usernamemsg", username);</p><p> request.getRequestDispatcher("/WEB-INF/view/users/userAdd.jsp")</p><p> .forward(request
102、, response);</p><p> } else if (b) {</p><p> .............</p><p> String msg = "該證件號(hào)已經(jīng)存在";</p><p> request.setAttribute("msg", msg);</p>
103、<p> request.getRequestDispatcher("/WEB-INF/view/users/userAdd.jsp")</p><p> .forward(request, response);</p><p><b> } else {</b></p><p> InsertDao d
104、ao = new InsertDao();</p><p> boolean flag = dao.insertUsers(usersModel);</p><p> if (flag) {</p><p> request.getRequestDispatcher("/WEB-INF/view/users/ok.jsp")</p&g
105、t;<p> .forward(request, response);</p><p><b> } else {</b></p><p> request.getRequestDispatcher("/WEB-INF/view/users/error.jsp")</p><p> .forward(r
106、equest, response);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 3.1.6通知
107、乘車常識(shí)等信息管理模塊</p><p> 當(dāng)列車在行駛途中,車組人員有緊急狀況需要通知或根據(jù)沿途風(fēng)光向旅客介紹乘車常識(shí)等都需要做記錄。方便以后管理人員查詢。</p><p> 具體實(shí)現(xiàn):對每一次播報(bào)進(jìn)行統(tǒng)一,唯一的編號(hào),作為搜索查找的關(guān)鍵字,允許編號(hào)中出現(xiàn)字符,以方便查找。</p><p><b> 具體實(shí)現(xiàn)如下:</b></p&g
108、t;<p> String aNo = request.getParameter("aNo");</p><p> String currentPage = request.getParameter("currentPage");</p><p> //創(chuàng)建一個(gè)緩沖字符數(shù)組,存放信息</p><p> S
109、tringBuffer paras = new StringBuffer();</p><p> if (aNo != null && !aNo.equals("")) {</p><p><b> //查詢條件的拼接</b></p><p> paras.append(" and aNo l
110、ike '%" + aNo.toLowerCase().trim() + "%'");</p><p><b> }</b></p><p> request.setAttribute("aNo", aNo);</p><p> if (currentPage == nul
111、l || "".equals(currentPage)) {</p><p> currentPage = "1";</p><p><b> }</b></p><p><b> //設(shè)置當(dāng)前頁碼</b></p><p> Integer curre
112、ntpage = Integer.parseInt(currentPage);</p><p> PageInfo page = new PageInfo();</p><p> FenyeMoment f = new FenyeMoment();</p><p> //設(shè)置初始開始位置</p><p> int start = (c
113、urrentpage - 1) * page.getPageSize() + 1;</p><p><b> //設(shè)置結(jié)束位置</b></p><p> int end = currentpage * page.getPageSize();</p><p> page.setCurrentPage(currentpage);</p&
114、gt;<p> request.setAttribute("page", page);</p><p> List<MomentModel> list = f.findByPage(page, paras.toString(), start, end);</p><p> request.setAttribute("curren
115、tPage", currentpage);</p><p> request.setAttribute("listMoment", list);</p><p> request.getRequestDispatcher("/WEB-INF/view/moment/listMoment.jsp")</p><p>
116、; .forward(request, response);</p><p><b> 3.2程序流程圖</b></p><p> 程序流程圖的優(yōu)點(diǎn)是對控制流程的描繪很直觀,易于掌握。通過對系統(tǒng)的調(diào)查和可行性分析,畫出程序的流程圖如下所示,程序過程設(shè)計(jì)主要是在借助過程設(shè)計(jì)工具的情況下,對程序的具體實(shí)現(xiàn)過程進(jìn)行設(shè)計(jì)。程序的主要部分設(shè)計(jì)在這個(gè)環(huán)節(jié)完成。其主要包括以下
117、幾個(gè)部分:</p><p> 圖5-1 程序流程圖</p><p><b> 3.3用戶界面設(shè)計(jì)</b></p><p> 3.3.1一般交互設(shè)計(jì)</p><p> 一般交互涉及信息顯示、數(shù)據(jù)輸入、和系統(tǒng)整體控制等方面。</p><p><b> 1、一致性</b>
118、</p><p> 為客戶交互界面中的菜單選擇、命令輸入、數(shù)據(jù)顯示以及眾多的其他功能,使用一致的格式。在設(shè)計(jì)的過程中,基本上保持了系統(tǒng)的格式一致。</p><p> 2、在有較大影響的操作前提示用戶確認(rèn)</p><p> 在設(shè)計(jì)過程中,如果用戶要執(zhí)行刪除操作,以及對數(shù)據(jù)庫的讀寫操作時(shí),都會(huì)有窗體彈出詢問繼續(xù)操作或者予以提示。</p><p&
119、gt;<b> 3、允許錯(cuò)誤</b></p><p> 允許用戶的失誤操作,盡量不對系統(tǒng)造成傷害。</p><p> 3.3.2信息顯示設(shè)計(jì) </p><p> 應(yīng)當(dāng)盡量為用戶提供的界面顯示時(shí)完整的、明確的和容易理解的。這樣才能滿足用戶的需求。使用不同的方式顯示信息:用文字、圖形、聲音,按位置、移動(dòng)和大小,使用顏色和省略等方式傳達(dá)信息。
120、</p><p> 1、只顯示與當(dāng)前工作有關(guān)的信息</p><p> 在用戶操作有關(guān)系統(tǒng)的特定功能的信息時(shí),不必看到與之無關(guān)的數(shù)據(jù)、菜單和圖形。</p><p> 2、使用便于用戶迅速吸收數(shù)據(jù)的方式來表示數(shù)據(jù)</p><p> 在系統(tǒng)設(shè)計(jì)的過程中,較多地使用了圖表的形式表示數(shù)據(jù),例如在分析中就使用了柱狀圖的形式表現(xiàn)了復(fù)雜的數(shù)據(jù)。這樣,
121、用戶可以直觀的體會(huì)到圖表所表示的含義。</p><p> 3、使用一致的標(biāo)記、標(biāo)準(zhǔn)的縮寫和可預(yù)知的顏色</p><p> 為了使系統(tǒng)所表達(dá)的含義準(zhǔn)確、無誤,就必須適用一致的標(biāo)記、標(biāo)準(zhǔn)的縮寫和可以預(yù)知的縮寫,這樣用戶就無需參照其他信息源就能理解,而正確地適用軟件。</p><p> 4、產(chǎn)生有意義的錯(cuò)誤信息</p><p> 對于系統(tǒng)在
122、運(yùn)行過程中產(chǎn)生的錯(cuò)誤盡量給用戶返回一個(gè)容易理解的錯(cuò)誤信息,以使用戶保持對系統(tǒng)的信任,和系統(tǒng)的可用性。</p><p> 5、使用窗口分隔不同類型的信息</p><p> 使用不同的窗口顯示、保存不同類型的信息。</p><p> 3.3.3輸入界面設(shè)計(jì)</p><p> 用戶的大部分時(shí)間用在選擇菜單命令、鍵入數(shù)據(jù)和向系統(tǒng)提供輸入。在
123、系統(tǒng)中,鍵盤是主要的輸入介質(zhì),但是鼠標(biāo)等設(shè)備的也是重要的輸入手段,所以,對于他們的數(shù)據(jù)輸入操作有如下約定:</p><p> 1、保持信息顯示和數(shù)據(jù)輸入間的一致性</p><p> 為了方便用戶的使用,鼠標(biāo)應(yīng)當(dāng)盡量減少操作的幅度。</p><p> 2、保持顯示信息和輸入信息之間的一致性</p><p> 對于用戶來說,要保證其輸入的
124、數(shù)據(jù)在顯示上與其他顯示的視覺特征(例如:文字大小、顏色、位置等)要一致。</p><p> 對于不同類型的用戶在登錄到系統(tǒng)后,由于有不同的權(quán)限,所以在主界面中會(huì)有一些項(xiàng)目受到限制而無法使用,所以要使這些項(xiàng)目不發(fā)生作用,以保證系統(tǒng)安全。</p><p><b> 3.4軟件測試 </b></p><p> 3.4.1測試的方法和步驟<
125、/p><p> 軟件的測試方法有兩種,一種是黑盒測試(功能測試),另外一種是白盒測試(結(jié)構(gòu)測試)。</p><p> 黑盒測試把程序看作一個(gè)黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。也就是說,黑盒測試是在程序接口進(jìn)行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)慕邮茌斎霐?shù)據(jù)并產(chǎn)生正確的輸出信息,程序運(yùn)行過程中能否保持外部信息的完整性。</p>
126、<p> 白盒測試的前提是可以把程序看成裝在一個(gè)透明的白盒子里,測試者完全知道程序的結(jié)構(gòu)和處理算法。這種方法按照程序內(nèi)部的邏輯測試程序,檢測程序中的主要執(zhí)行通路是否能按預(yù)定的要求正確工作。</p><p> 在本次軟件的測試工作中,由于水平的限制,僅僅對軟件的各個(gè)功能模塊進(jìn)行了測試,并對各個(gè)模塊之間的接口進(jìn)行了詳細(xì)的測試(用黑盒測試法)。</p><p><b>
127、 測試的步驟</b></p><p> 由于該系統(tǒng)是一個(gè)小系統(tǒng),可以把整個(gè)系統(tǒng)作為一個(gè)單獨(dú)的實(shí)體來測試。當(dāng)然,在測試的過程中可以分模塊、分階段來進(jìn)行。 </p><p><b> 5.4.2測試用例</b></p><p> 測試用例是指對一向特定的軟件產(chǎn)品進(jìn)行測試任務(wù)的描述,體現(xiàn)測試方案,方式,方法和技術(shù)。</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java畢業(yè)設(shè)計(jì)火車旅客信息網(wǎng)上管理系統(tǒng)
- 基于java火車旅客信息網(wǎng)上管理系統(tǒng)(含源文件)畢業(yè)設(shè)計(jì)論文
- 專利繳費(fèi)信息網(wǎng)上補(bǔ)充及管理系統(tǒng)
- 火車票售票管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 旅游信息網(wǎng)站畢業(yè)設(shè)計(jì)
- 火車票售票管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上論壇管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上花店管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上購物銷售管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---網(wǎng)上書店管理系統(tǒng)
- 網(wǎng)上書店管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上購物銷售管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----網(wǎng)上設(shè)備管理系統(tǒng)
- 網(wǎng)上書店管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--網(wǎng)上教學(xué)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)---網(wǎng)上教學(xué)管理系統(tǒng)
- 交通信息網(wǎng)上查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 畢業(yè)設(shè)計(jì)----網(wǎng)上書店管理信息系統(tǒng)設(shè)計(jì)與開發(fā)
- 畢業(yè)設(shè)計(jì)---圖書館信息網(wǎng)絡(luò)系統(tǒng)
- 畢業(yè)生信息網(wǎng)上采集系統(tǒng)操作手冊
評(píng)論
0/150
提交評(píng)論