久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

火車票訂票管理系統(tǒng)++設(shè)計(jì)報(bào)告

時(shí)間:2019-05-14 04:09:13下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《火車票訂票管理系統(tǒng)++設(shè)計(jì)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《火車票訂票管理系統(tǒng)++設(shè)計(jì)報(bào)告》。

第一篇:火車票訂票管理系統(tǒng)++設(shè)計(jì)報(bào)告

摘要

隨著時(shí)代的發(fā)展,計(jì)算系軟件和系統(tǒng)的成熟,火車票的正當(dāng)管理成為一個(gè)影響鐵路部門正常運(yùn)營(yíng)的因素之一,而建立火車票訂票管理系統(tǒng)是一個(gè)很好的解決辦法。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)火車票信息進(jìn)行管理,具有手工管理所無(wú)法比擬的優(yōu)點(diǎn),例如檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好等,這些優(yōu)點(diǎn)能夠極大的提高火車票信息管理的效率,也正體現(xiàn)了火車票的科學(xué)化正規(guī)化管理 現(xiàn)在隨著社會(huì)的發(fā)展,數(shù)據(jù)量急劇增長(zhǎng),現(xiàn)在人們就借助計(jì)算機(jī)和數(shù)據(jù)庫(kù)技術(shù)科學(xué)的保存大量的數(shù)據(jù),以便能更好的利用這些數(shù)據(jù)資源。本論文就是通過(guò)MFC的整體設(shè)計(jì)把數(shù)據(jù)庫(kù)與應(yīng)用程序相連接,做成一個(gè)火車票的訂票管理系統(tǒng),使得火車票管理員能夠有效的管理車次信息、旅客信息、退票信息等。同時(shí)用戶可以通過(guò)查詢到相關(guān)的火車票信息,選擇是否適合自己,也可以在網(wǎng)上直接訂票、退票,省時(shí)省力。

關(guān)鍵字: SQL2000,MFC,數(shù)據(jù)庫(kù)設(shè)計(jì),火車票訂票系統(tǒng) 目錄

第一章概述

1.1項(xiàng)目開發(fā)背景 1.2系統(tǒng)開發(fā)目的 1.3技術(shù)可行性研究 第二章開發(fā)平臺(tái)介紹 2.1 系統(tǒng)的架構(gòu)

2.2系統(tǒng)運(yùn)行環(huán)境操作系統(tǒng) 2.3系統(tǒng)開發(fā)環(huán)境 2.4開發(fā)工具

第三章數(shù)據(jù)庫(kù)設(shè)計(jì) 3.1系統(tǒng)詳細(xì)調(diào)查 3.2數(shù)據(jù)流圖 3.3數(shù)據(jù)庫(kù)設(shè)計(jì)

第四章系統(tǒng)的界面設(shè)計(jì)

4.1主窗口界面

4.2旅客信息窗口

4.3車次信息窗口

4.4取票及退票窗口 第五章系統(tǒng)的實(shí)現(xiàn)

總結(jié)與展望 致謝 參考文獻(xiàn) 需求分析

需求分析的任務(wù)

調(diào)查機(jī)票預(yù)定系統(tǒng)應(yīng)用領(lǐng)域涉及的內(nèi)容,對(duì)涉及到領(lǐng)域的各個(gè)應(yīng)用的信息要求和操作要求進(jìn)行詳細(xì)分析,形成需求分析說(shuō)明書。最重要的是調(diào)查、收集信息、分析購(gòu)票人信息和火車預(yù)定流程。處理要求、數(shù)據(jù)的安全性與完整性要求。

要求系統(tǒng)能有效、快速、安全、可靠和無(wú)誤的完成上述操作。并要求客戶機(jī)的界面要簡(jiǎn)單明了,易于操作,服務(wù)器程序利于維護(hù)。需求分析的過(guò)程

火車站為方便旅客,需開發(fā)一個(gè)火車票預(yù)定系統(tǒng)。為便于旅客由網(wǎng)上定票,把預(yù)定火車票的旅客信息,包括姓名、性別、工作單位、身份證號(hào)碼、出發(fā)時(shí)間、目的地,輸入火車票訂票系統(tǒng)的客戶端程序,系統(tǒng)經(jīng)過(guò)查詢火車站內(nèi)的列車車次數(shù)據(jù)服務(wù)器后,為旅客安排列車,印出取票通知。旅客在火車出發(fā)前一天憑取票通知和帳單交款后取票,系統(tǒng)校對(duì)無(wú)誤后即印出火車票給旅客。如果某方面出現(xiàn)問(wèn)題,旅客可以持有效證件去火車站退票。

要求系統(tǒng)能有效、快速、安全、可靠和無(wú)誤的完成上述操作。并要求客戶機(jī)的界面要簡(jiǎn)單明了,易于操作,服務(wù)器程序便于維護(hù)。數(shù)據(jù)字典與流程圖

經(jīng)過(guò)可行性分析和初步需求調(diào)查,抽象出該系統(tǒng)業(yè)務(wù)流程圖,結(jié)合該實(shí)例具體情況,給出旅客信息、訂票信息和取票通知的具體需求。

圖2.1 旅客購(gòu)票流程圖 ⑴調(diào)查用戶需求 ①售票處需求 功能:旅客持個(gè)人證件去火車站購(gòu)買火車票。希望能通過(guò)旅客姓名查到該旅客的列車車次并記錄旅客基本信息。統(tǒng)計(jì)功能:

按火車票統(tǒng)計(jì)買票人數(shù) 按姓名統(tǒng)計(jì)火車票數(shù) ②旅客購(gòu)票需求 交費(fèi)功能: 交費(fèi) 退費(fèi)

③取票需求 通知功能: 通知旅客取票 統(tǒng)計(jì)功能:

統(tǒng)計(jì)通過(guò)驗(yàn)證的人數(shù) 統(tǒng)計(jì)可以取票的人 統(tǒng)計(jì)未通過(guò)驗(yàn)證的人數(shù) 查詢功能: 購(gòu)票旅客查詢 購(gòu)票旅客姓名 購(gòu)票旅客身份證號(hào) 購(gòu)票旅客訂單號(hào) ④列車車次信息需求 查詢功能: 車次 始發(fā)站 終點(diǎn)站 始發(fā)時(shí)間 系統(tǒng)框架 在調(diào)查完了用戶需求之后,就要開始分析用戶需求。在此,我們們采用自頂向下的結(jié)構(gòu)化分析方法(SA方法)。首先,定義全局概念結(jié)構(gòu)的框架,如圖2.2所示。

圖2.2火車票預(yù)定系統(tǒng)總框架圖

各子系統(tǒng)需要進(jìn)一步細(xì)化。旅客信息系統(tǒng)為例進(jìn)一步細(xì)化,如圖2.3所示。

圖2.3旅客信息系統(tǒng)細(xì)化

以其中的查詢旅客信息功能為例進(jìn)一步細(xì)化,如圖2.4所示。

圖2.4查詢旅客信息功能

圖2.5列車車次信息系統(tǒng)細(xì)化

圖2.6取票通知系統(tǒng)細(xì)化

圖2.7旅客信息系統(tǒng)能查詢到的內(nèi)容

圖2.8火車票信息系統(tǒng)能查詢到的內(nèi)容

圖2.9退票信息系統(tǒng)細(xì)化

將所有子系統(tǒng)全部細(xì)化。將所有用戶需求分析完畢之后,就要開始構(gòu)造數(shù)據(jù)字典了。經(jīng)分析之后,本系統(tǒng)要用到五個(gè)基本表:退票信息表,旅客信息表,列車車次信息表,取票通知信息系統(tǒng),列車座位信息表。數(shù)據(jù)結(jié)構(gòu)定義如表2.1所示。表2.1 數(shù)據(jù)結(jié)構(gòu)定義 數(shù)據(jù)結(jié)構(gòu)名

含義說(shuō)明

組成退票信息

定義了退票旅客的有關(guān)信息

旅客姓名,身份證號(hào),訂單號(hào),電話號(hào)

旅客

定義了旅客有關(guān)信息

旅客姓名,身份證號(hào),性別,工作單位,電話號(hào)

列車車次信息表

定義了車次 的有關(guān)信息

車次號(hào),始發(fā)地,目的地,始發(fā)時(shí)間

取票通知單

定義了取票通知相關(guān)有關(guān)信息

旅客姓名,取票時(shí)間,列車車次,座位號(hào),火車票類型

列車座位信息表

定義了列車座位有關(guān)信息

列車號(hào),座位號(hào),座位信息,火車票類型

概念結(jié)構(gòu)設(shè)計(jì)

概念結(jié)構(gòu)設(shè)計(jì)的方法與步驟 概念結(jié)構(gòu)設(shè)計(jì)的方法

概念設(shè)計(jì)階段我們采用自底向上的方法,即自頂向下的進(jìn)行需求分析,然后再自底向上的進(jìn)行概念結(jié)構(gòu)設(shè)計(jì)。對(duì)已經(jīng)細(xì)化到無(wú)法再分的階段逐步集成在一起,最終合成一個(gè)全局概念模式。

概念結(jié)構(gòu)設(shè)計(jì)的步驟

第一步是進(jìn)行局部視圖的設(shè)計(jì):由于高層的數(shù)據(jù)流圖只能反映系統(tǒng)的概貌,而中層流圖能較好的反映系統(tǒng)中各局部應(yīng)用的子系統(tǒng)組成。因此我們們先逐一的設(shè)計(jì)分E-R圖。

第二步是進(jìn)行視圖的集成:各子系統(tǒng)的E-R圖設(shè)計(jì)好之后,下一步就是要將所有的分E-R圖合成一個(gè)系統(tǒng)的總E-R圖,一般有兩個(gè)方式,多個(gè)分E-R圖一次集成,另一種是一次集成兩個(gè)分E-R圖。我們想采用一次集成兩個(gè)分E-R圖的方式。數(shù)據(jù)抽象與局部視圖設(shè)計(jì)

按照?qǐng)D2.2機(jī)票預(yù)定系統(tǒng)總框架圖,設(shè)計(jì)實(shí)體屬性圖以及局部E-R圖。

圖3.1退票信息系統(tǒng)

圖3.2旅客信息系統(tǒng) ……圖3.3列車車次信息

圖3.4取票通知信息

圖3.5列車座位信息表

圖3.6旅客購(gòu)票局部E-R 視圖的集成

經(jīng)過(guò)逐步細(xì)化再進(jìn)行每?jī)蓚€(gè)一集成初步形成一個(gè)E-R圖,最后得到圖3.4總體概念結(jié)構(gòu)E-R圖

圖3.4系統(tǒng)總體結(jié)構(gòu)E-R圖

邏輯結(jié)構(gòu)設(shè)計(jì)

E-R圖向關(guān)系模型的轉(zhuǎn)換

將圖3.4總體概念結(jié)構(gòu)E-R圖轉(zhuǎn)化成關(guān)系模型。退票信息(訂單號(hào),旅客姓名,電話號(hào),身份證號(hào))

旅客(旅客姓名,身份證號(hào),電話號(hào),性別,工作單位)車次信息表(車次號(hào),始發(fā)站,終點(diǎn)站,始發(fā)時(shí)間)

取票通知單(旅客姓名,取票時(shí)間,車次號(hào),座位號(hào),車票類型)列車座位信息表(座位號(hào),車次號(hào),座位信息,車票類型)數(shù)據(jù)模型的優(yōu)化

將轉(zhuǎn)化的關(guān)系模式進(jìn)行優(yōu)化,最終達(dá)到第三范式。

1、確定數(shù)據(jù)依賴

退票信息(訂單號(hào),旅客姓名,電話號(hào),身份證號(hào))根據(jù)這個(gè)關(guān)系寫出數(shù)據(jù)依賴 訂單號(hào)→旅客姓名,訂單號(hào)→電話號(hào),訂單號(hào)→身份證號(hào) 旅客(旅客姓名,身份證號(hào),電話號(hào),性別,工作單位)旅客姓名→身份證號(hào),旅客姓名→電話號(hào),旅客姓名→性別,旅客姓名→工作單位 車次信息表(車次號(hào),始發(fā)地,目的地,始發(fā)時(shí)間)列車車次→始發(fā)站,列車車次→終點(diǎn)站,車次→始發(fā)時(shí)間

取票通知單(旅客姓名,取票時(shí)間,車次號(hào),座位號(hào),機(jī)票類型)旅客姓名→取票時(shí)間,旅客姓名→車次號(hào),旅客姓名→座位號(hào),旅客姓名→車票類型

火車座位信息表(座位號(hào),車次號(hào),座位信息,車票類型)(座位號(hào),車次號(hào))→座位信息,(座位號(hào),車次號(hào),座位信息)→車票類型 對(duì)各關(guān)系模式間數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余

訂單號(hào)→旅客姓名,訂單號(hào)→電話號(hào),訂單號(hào)→身份證號(hào),旅客姓名→性別 旅客姓名→工作單位,旅客姓名→取票時(shí)間,旅客姓名→車次號(hào)

旅客姓名→座位號(hào),旅客姓名→車票類型,車次號(hào)→始發(fā)站,列車號(hào)→終點(diǎn)站 車次號(hào)→始發(fā)時(shí)間,(座位號(hào),車次號(hào))→座位信息

看這些模式是否符合要求,確定是否要對(duì)某些模式進(jìn)行合并或者分解 最終分解成第三范式:

(訂單號(hào),電話號(hào),身份證號(hào))(訂單號(hào),旅客姓名)(旅客姓名,取票時(shí)間,性別,工作單位,車票類型)(旅客姓名,車次號(hào))(旅客姓名,座位號(hào))(車次號(hào),座位號(hào),車票類型)(車次號(hào),始發(fā)站,終點(diǎn)站,始發(fā)時(shí)間)

第二篇:網(wǎng)站架構(gòu)設(shè)計(jì)技術(shù)方案(火車票訂票系統(tǒng))

xxx市xxxxx網(wǎng)管理中心

火 車 票 網(wǎng) 絡(luò) 訂 票 系 統(tǒng) 方 案

二零一二年二月 總體設(shè)計(jì)說(shuō)明...............................................................................................................................2

1.1 項(xiàng)目概述...........................................................................................................................2 1.2 建設(shè)目標(biāo)...........................................................................................................................2 1.3 建設(shè)原則...........................................................................................................................2 2 系統(tǒng)需求分析...............................................................................................................................3

2.1 服務(wù)器集群.......................................................................................................................3 2.2 負(fù)載均衡...........................................................................................................................3 2.3 數(shù)據(jù)庫(kù)集群與庫(kù)表散列...................................................................................................3 2.4 劃分服務(wù)器....................................................................................................................4 2.5 不同網(wǎng)絡(luò)用戶的訪問(wèn)問(wèn)題...........................................................................................4 3 系統(tǒng)架構(gòu)設(shè)計(jì)...............................................................................................................................4

3.1 網(wǎng)站物理架構(gòu)................................................................................................................4 3.2 Web應(yīng)用開發(fā)架構(gòu).........................................................................................................5 3.3 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)................................................................................................................6 4 架構(gòu)方案所涉及的技術(shù)...............................................................................................................7

4.1 負(fù)載均衡.........................................................................................................................7 4.2 頁(yè)面靜態(tài)化.......................................................................................................................8 4.3 MVC架構(gòu)..........................................................................................................................9 4.4 CDN和鏡像網(wǎng)站技術(shù)..................................................................................................10 5 網(wǎng)站的硬件擴(kuò)容和升級(jí).............................................................................................................11 5.1 增加服務(wù)器.....................................................................................................................11 5.2 升級(jí)服務(wù)器..................................................................................................................11 5.3 增加存儲(chǔ).......................................................................................................................11 5.4 網(wǎng)絡(luò)擴(kuò)容.......................................................................................................................12

實(shí)習(xí)生:楊茂饒

火車票網(wǎng)絡(luò)訂票系統(tǒng)設(shè)計(jì)方案 總體設(shè)計(jì)說(shuō)明

1.1 項(xiàng)目概述

本次火車票網(wǎng)絡(luò)訂票系統(tǒng)項(xiàng)目是因?yàn)楫?dāng)前鐵路局網(wǎng)上訂票系統(tǒng)設(shè)計(jì)不合理造成用戶訂票難等原因而要求重新設(shè)計(jì)的。我們先前的火車票網(wǎng)絡(luò)訂票系統(tǒng)最主要的問(wèn)題是在遭受高負(fù)載的情況下系統(tǒng)不能正常的運(yùn)行,所以此問(wèn)題也是該方案所要重點(diǎn)解決的。當(dāng)此項(xiàng)目建成后,我們的火車票網(wǎng)絡(luò)訂票系統(tǒng)將大大減輕實(shí)地售票系統(tǒng)、電話訂票系統(tǒng)的壓力,使用戶足不出戶就能享受快速、高效的訂票服務(wù)。

1.2 建設(shè)目標(biāo)

該訂票系統(tǒng)的設(shè)計(jì)要能解決當(dāng)前網(wǎng)絡(luò)訂票系統(tǒng)訂票難的問(wèn)題,在高負(fù)載情況下要保證系統(tǒng)的正常工作。系統(tǒng)的建設(shè)要符合國(guó)家標(biāo)準(zhǔn),必須要能滿足當(dāng)前大量用戶的訂票需求,能承受或杜絕同一個(gè)用戶頻繁對(duì)頁(yè)面的點(diǎn)擊所產(chǎn)生的流量。充分發(fā)揮訂票系統(tǒng)的作用和效益。該系統(tǒng)采用先進(jìn)成熟的技術(shù)進(jìn)行建設(shè)并能根據(jù)需要為以后系統(tǒng)的升級(jí)做好準(zhǔn)備。

1.3 建設(shè)原則

1.3.1 實(shí)用性

本次火車票訂票系統(tǒng)要根據(jù)當(dāng)前用戶訂票需求情況和系統(tǒng)未來(lái)的規(guī)劃進(jìn)行設(shè)計(jì)。結(jié)合實(shí)際使系統(tǒng)的性價(jià)比達(dá)到最高。1.3.2 可靠性

系統(tǒng)的設(shè)計(jì)要使之能長(zhǎng)期穩(wěn)定的運(yùn)行,當(dāng)遇到問(wèn)題的時(shí)候還要能夠快速有效的恢復(fù)。1.3.3 安全性

確保系統(tǒng)的線路設(shè)計(jì)和設(shè)備是否能安全正常工作,保證用戶信息不向外泄漏。

1.3.4 兼容性與擴(kuò)展性

本次網(wǎng)絡(luò)訂票系統(tǒng)的設(shè)計(jì)上采用先進(jìn)成熟的技術(shù)設(shè)備,以保障系統(tǒng)的高效運(yùn)行,也是為系統(tǒng)的擴(kuò)充和升級(jí)做好準(zhǔn)備。1.3.5 專業(yè)性

系統(tǒng)的設(shè)計(jì)遵照國(guó)家標(biāo)準(zhǔn),符合國(guó)家要求。1.3.6 易管理性

系統(tǒng)的設(shè)計(jì)要便于管理,方便日常維護(hù)中的操作。系統(tǒng)需求分析

由于火車票網(wǎng)絡(luò)訂票系統(tǒng)建成后是為我們中國(guó)13億人提供訂票服務(wù)的,將不可避免的遭受由大量網(wǎng)頁(yè)點(diǎn)擊造成的網(wǎng)絡(luò)高流量、高負(fù)載的情況。所以要求此系統(tǒng)要能克服這種嚴(yán)重的狀況,保證整個(gè)系統(tǒng)正常、安全、可靠的運(yùn)行。最終方便用戶訂票。

為了滿足以上要求,該方案需要采取服務(wù)器集群、負(fù)載均衡、數(shù)據(jù)庫(kù)劃分、圖片服務(wù)器分離等,不僅如此,還要考慮不同網(wǎng)絡(luò)用戶的訪問(wèn)問(wèn)題。

2.1 服務(wù)器集群

服務(wù)器集群就是指把很多的服務(wù)器統(tǒng)一集中起來(lái)進(jìn)行同一種服務(wù),在客戶端看起來(lái)就像是只有一個(gè)服務(wù)器在提供服務(wù)。集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算從而獲得更高的計(jì)算速度,也可以使用多個(gè)計(jì)算機(jī)做備份,并且能使其中一臺(tái)計(jì)算機(jī)壞了后整個(gè)系統(tǒng)依然能正常運(yùn)行。此系統(tǒng)采用服務(wù)器集群技術(shù),集群內(nèi)的服務(wù)器能并發(fā)的處理來(lái)自網(wǎng)絡(luò)的訪問(wèn)請(qǐng)求,當(dāng)訪問(wèn)量過(guò)大時(shí),各服務(wù)器共同承擔(dān)訪問(wèn)處理的任務(wù),這將大幅的提高系統(tǒng)的工作效率。除此之外,還可以根據(jù)需求添加集群中服務(wù)器的數(shù)量以增大集群的處理能力。

2.2 負(fù)載均衡

負(fù)載均衡就是把從網(wǎng)絡(luò)中傳輸進(jìn)系統(tǒng)的流量根據(jù)系統(tǒng)的實(shí)際工作情況進(jìn)行分流和劃分,然后再傳輸?shù)礁鞣?wù)器進(jìn)行處理。在此方案中將采用負(fù)載均衡器和Squid/Nginx反向代理服務(wù)器實(shí)現(xiàn)此功能,負(fù)載均衡器需要被放置在臨近服務(wù)器集群的位置。由于采用的是服務(wù)器集群技術(shù),但當(dāng)網(wǎng)站系統(tǒng)訪問(wèn)量很大時(shí),Web服務(wù)器集群里的各個(gè)服務(wù)器壓力都會(huì)很大,所以我們使用負(fù)載均衡器來(lái)管理這些訪問(wèn)請(qǐng)求,把這些訪問(wèn)請(qǐng)求傳輸給集群中有空閑資源的服務(wù)器進(jìn)行處理。這樣就能充分的利用服務(wù)器集群的優(yōu)勢(shì),不至于因?yàn)榧簝?nèi)一臺(tái)服務(wù)器資源耗盡或出現(xiàn)故障而中斷服務(wù)。

2.3 數(shù)據(jù)庫(kù)集群與庫(kù)表散列

數(shù)據(jù)庫(kù)服務(wù)器在整個(gè)系統(tǒng)的地位非常的重要,因?yàn)榫W(wǎng)站的瓶頸問(wèn)題大都出現(xiàn)在數(shù)據(jù)庫(kù)身上。大型網(wǎng)站都有復(fù)雜的應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫(kù),在面對(duì)大量訪問(wèn)的時(shí)候,數(shù)據(jù)庫(kù)的瓶頸很快就能顯現(xiàn)出來(lái),這時(shí)一臺(tái)數(shù)據(jù)庫(kù)將很快無(wú)法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫(kù)集群或者庫(kù)表散列。

1.數(shù)據(jù)庫(kù)集群

在數(shù)據(jù)庫(kù)集群方面,不同類型的數(shù)據(jù)庫(kù)都有自己不同的解決方案,使用了什么樣的數(shù)據(jù)庫(kù),就參考相應(yīng)的解決方案。

2.庫(kù)表散列

在應(yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫(kù)進(jìn)行分離,不同的 3

模塊對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)或者表,再按照一定的策略對(duì)某個(gè)頁(yè)面或者功能進(jìn)行更小的數(shù)據(jù)庫(kù)散列,這樣就能夠低成本的提升系統(tǒng)的性能并且有很好的擴(kuò)展性。

2.4 劃分服務(wù)器

按服務(wù)器種類來(lái)劃分,我們一般把服務(wù)器劃分為:圖片服務(wù)器、頁(yè)面服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、應(yīng)用服務(wù)器、日志服務(wù)器等。對(duì)于訪問(wèn)量大的網(wǎng)站而言,分離單獨(dú)的服務(wù)器是非常必要的。分離服務(wù)器后各個(gè)服務(wù)器只需要完成各自的功能和處理任務(wù),這樣把工作細(xì)化后系統(tǒng)的整體運(yùn)行效率也會(huì)提升很多。

2.5 不同網(wǎng)絡(luò)用戶的訪問(wèn)問(wèn)題

由于處于不同網(wǎng)絡(luò)服務(wù)商的計(jì)算機(jī)想要相互通訊會(huì)比在同一網(wǎng)絡(luò)服務(wù)商的計(jì)算機(jī)慢。為了解決此問(wèn)題,本系統(tǒng)將通過(guò)引入CDN和鏡像網(wǎng)站技術(shù)來(lái)解決不同網(wǎng)絡(luò)服務(wù)商的接入速度問(wèn)題。系統(tǒng)架構(gòu)設(shè)計(jì)

3.1 網(wǎng)站物理架構(gòu)

用戶瀏覽頁(yè)面負(fù)載均衡器1...服務(wù)器1服務(wù)器2服務(wù)器3服務(wù)器2代理服務(wù)器集群(Nginx)服務(wù)器n服務(wù)器2...服務(wù)器1服務(wù)器2服務(wù)器1服務(wù)器2服務(wù)器1服務(wù)器2服務(wù)器1服務(wù)器n圖片服務(wù)器集群Web服務(wù)器集群AWeb服務(wù)器集群BSquid服務(wù)器集群

整個(gè)系統(tǒng)架構(gòu)組成如圖所示,該架構(gòu)有負(fù)載均衡器、Nginx代理服務(wù)器集群

或Squid代理服務(wù)器集群以及其他種類的服務(wù)器集群。這樣的架構(gòu)設(shè)計(jì)能夠使該系統(tǒng)在高負(fù)載的情況下依然能正常工作,同時(shí)系統(tǒng)的安全性因?yàn)橛写矸?wù)器集群的存在也會(huì)得到相當(dāng)大的提高。3.1.1架構(gòu)中的代理服務(wù)器

代理服務(wù)器是介于客戶端和Web服務(wù)器之間的另一種服務(wù)器的存在,有了它之后,瀏覽器不能直接到Web服務(wù)器去取回網(wǎng)頁(yè),而是向代理服務(wù)器發(fā)出請(qǐng)求,信號(hào)會(huì)先傳送到代理服務(wù)器,由代理服務(wù)器來(lái)取回瀏覽器所需要的信息并傳回瀏覽器。

很多代理服務(wù)器都有很大的存儲(chǔ)空間,它能不斷的將新取得的數(shù)據(jù)存儲(chǔ)到它本機(jī)的存儲(chǔ)器上,如果瀏覽器所請(qǐng)求的數(shù)據(jù)在它本機(jī)存儲(chǔ)器上有而且是最新的,那么它就不再?gòu)腤eb服務(wù)器上讀取數(shù)據(jù),而是直接將存儲(chǔ)器上的數(shù)據(jù)直接傳送給用戶的瀏覽器,起到系統(tǒng)緩存的作用。這樣就能顯著的提高瀏覽器的速度和效率。

除了緩存功能之外,代理服務(wù)器還能連接內(nèi)網(wǎng)與Internet充當(dāng)防火墻。這是因?yàn)樗袃?nèi)部的主機(jī)通過(guò)代理服務(wù)器訪問(wèn)外界時(shí),只映射為一個(gè)IP地址,所以外界不能直接訪問(wèn)到內(nèi)部網(wǎng)絡(luò);同時(shí)還可以設(shè)置IP地址過(guò)濾,限制內(nèi)外網(wǎng)絡(luò)之間的相互訪問(wèn)。所以本系統(tǒng)中采用代理服務(wù)器集群技術(shù)是對(duì)整個(gè)系統(tǒng)的安全是大有裨益的。

3.1.2 架構(gòu)中的Web服務(wù)器

Web服務(wù)器是指駐留于因特網(wǎng)上某類計(jì)算機(jī)的的程序。當(dāng)客戶端的Web瀏覽器連接到服務(wù)器上并請(qǐng)求文件時(shí),服務(wù)器將處理該請(qǐng)求并將文件發(fā)送到瀏覽器上,文件附帶的信息(文件類型)會(huì)告訴瀏覽器如何查看該文件。服務(wù)器使用Http超文本傳輸協(xié)議進(jìn)行信息交流。Web服務(wù)器不僅能夠存儲(chǔ)信息,還能在用戶通過(guò)Web瀏覽器提供的信息基礎(chǔ)上運(yùn)行程序。3.1.3 圖片服務(wù)器分離

對(duì)于Web服務(wù)器來(lái)說(shuō),不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁(yè)面進(jìn)行分離。這樣的架構(gòu)可以降低提供頁(yè)面訪問(wèn)請(qǐng)求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D片問(wèn)題而崩潰。

3.2 Web應(yīng)用開發(fā)架構(gòu)

Web應(yīng)用開發(fā)采用MVC架構(gòu)。把各種應(yīng)用程序劃分為視圖、模型和控制三部分。大部分Web應(yīng)用程序都是用像ASP,PHP,或者CFML這樣的語(yǔ)言來(lái)創(chuàng)建的。它們將像數(shù)據(jù)庫(kù)查詢語(yǔ)句這樣的數(shù)據(jù)層代碼和像HTML這樣的表示層代碼混在一起。要想使用多種方式來(lái)訪問(wèn)我們的應(yīng)用程序,就必須要把數(shù)據(jù)從表示層中分離開來(lái),如此就要運(yùn)用到MVC架構(gòu)。

如圖:

現(xiàn)在科技的發(fā)展和用戶需求不斷的提升要求我們提供越來(lái)越多的方式來(lái)訪問(wèn)應(yīng)用程序。MVC模式允許用戶使用各種不同樣式的視圖來(lái)訪問(wèn)同一個(gè)服務(wù)器端的代碼。它包括任何WEB(HTTP)瀏覽器或者無(wú)線瀏覽器(wap),比如,用戶可以通過(guò)電腦也可通過(guò)手機(jī)來(lái)訂購(gòu)某樣產(chǎn)品,雖然訂購(gòu)的方式不一樣,但處理訂購(gòu)產(chǎn)品的方式是一樣的。由于模型返回的數(shù)據(jù)沒(méi)有進(jìn)行格式化,所以同樣的構(gòu)件能被不同的界面使用。例如,很多數(shù)據(jù)可能用HTML來(lái)表示,但是也有可能用WAP來(lái)表示,而這些表示所需要的命令是改變視圖層的實(shí)現(xiàn)方式,而控制層和模型層無(wú)需做任何改變。

3.3 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

主防火墻備防火墻主交換機(jī)VRRP備交換機(jī)負(fù)載均衡器1負(fù)載均衡器2...服務(wù)器2服務(wù)器1服務(wù)器n服務(wù)器1服務(wù)器n服務(wù)器2服務(wù)器2服務(wù)器2...服務(wù)器2服務(wù)器1服務(wù)器n服務(wù)器1服務(wù)器n服務(wù)器1服務(wù)器n服務(wù)器1服務(wù)器2代理服務(wù)器集群(Nginx)網(wǎng)站服務(wù)器集群圖片服務(wù)器集群應(yīng)用服務(wù)器集群光纖交換機(jī)生產(chǎn)DB服務(wù)器集群查詢DB服務(wù)器組管理終端光纖交換機(jī)磁盤陣列柜磁盤陣列柜

3.3.1 采用雙防火墻雙交換機(jī),保障平臺(tái)服務(wù)

本系統(tǒng)采用雙防火墻接通互聯(lián)網(wǎng),在任何一個(gè)防火墻或者互聯(lián)網(wǎng)發(fā)生故障后都可以自動(dòng)的將流量切換到另一端,保證網(wǎng)站的正運(yùn)行,設(shè)備或網(wǎng)絡(luò)的故障恢復(fù)后,自動(dòng)恢復(fù)先前的運(yùn)行狀況。不但如此,系統(tǒng)所采用的雙千兆交換機(jī)分別接在2臺(tái)防火墻上,當(dāng)其中某臺(tái)設(shè)備或者網(wǎng)絡(luò)鏈路發(fā)生故障后,好的設(shè)備自動(dòng)接管已壞設(shè)備的工作,不影響網(wǎng)站的整體運(yùn)行,根據(jù)真實(shí)服務(wù)器的數(shù)量,交換機(jī)還可以隨時(shí)增加。

3.3.2 采用硬件設(shè)備負(fù)載均衡器,實(shí)現(xiàn)網(wǎng)絡(luò)流量的負(fù)載均衡

使用硬件設(shè)備負(fù)載均衡器,將網(wǎng)絡(luò)流量均衡的分擔(dān)到WEB服務(wù)器集群的各節(jié)點(diǎn)服務(wù)器,保障平臺(tái)服務(wù)器資源均衡的使用。3.3.3 采用數(shù)據(jù)庫(kù)集群和庫(kù)表散列

本系統(tǒng)采用了數(shù)據(jù)庫(kù)集群和庫(kù)表散列技術(shù),將大幅提高數(shù)據(jù)庫(kù)的存取和查詢的處理能力,不僅如此,在本方案中還為集群配置了磁盤陣列,可以在極大程度上增加數(shù)據(jù)庫(kù)的存儲(chǔ)空間。架構(gòu)方案所涉及的技術(shù)

4.1 負(fù)載均衡

4.1.1 基于DNS的負(fù)載均衡

DNS負(fù)載均衡技術(shù)是最早的解決負(fù)載均衡的技術(shù)。主要是這樣實(shí)現(xiàn)的,由于在DNS服務(wù)器中可以為不同的網(wǎng)絡(luò)地址配置同一個(gè)域名,在DNS服務(wù)器進(jìn)行解析時(shí),它隨即的得到其中一個(gè)地址。所以對(duì)于同一個(gè)域名它所解析出的地址是會(huì)不同的,用戶也就訪問(wèn)不了同地址的Web服務(wù)器,從而在一定程度上能起到均衡負(fù)載的作用。但基于DNS的負(fù)載均衡不是真正意義上的負(fù)載均衡,由于DNS服務(wù)器在進(jìn)行地址解析時(shí)不會(huì)考慮到當(dāng)前Web服務(wù)器的負(fù)載情況,如果其中一臺(tái)Web服務(wù)器出現(xiàn)了故障,DNS服務(wù)器仍然回把地址解析到此臺(tái)出現(xiàn)故障的服務(wù)器上,導(dǎo)致不能響應(yīng)客戶端。所以在這種情況下必然會(huì)導(dǎo)致很大一部分用戶不能享受服務(wù)器所提供的服務(wù)。

4.1.2 基于硬件四層交換的負(fù)載均衡

本網(wǎng)站架構(gòu)就使用了基于硬件四層交換的硬件設(shè)備,在硬件四層交換產(chǎn)品中有很多的產(chǎn)品可以選擇,大多數(shù)的這些產(chǎn)品都是比較昂貴的,但都能提供與之相符合的功能,都是物有所值的。4.1.3 基于軟件四層交換的負(fù)載均衡

軟件四層交換的均衡負(fù)載可以使用Linux操作系統(tǒng)中的LVS來(lái)解決。4.1.4 通過(guò)反向代理服務(wù)器來(lái)實(shí)現(xiàn)負(fù)載均衡

反向代理服務(wù)器又稱為Web加速服務(wù)器,它位于Web服務(wù)器的前端,充當(dāng)WEB 7

服務(wù)器的內(nèi)容緩存器,反向代理服務(wù)器是專門針對(duì)Web服務(wù)器設(shè)置的,在后臺(tái)運(yùn)行的Web服務(wù)器對(duì)互聯(lián)網(wǎng)用戶是透明的、不可見的,用戶只能看到反向代理服務(wù)器的網(wǎng)絡(luò)地址,但卻不清楚后臺(tái)的Web服務(wù)器是如何組織架構(gòu)的。當(dāng)互聯(lián)網(wǎng)用戶請(qǐng)求Web服務(wù)時(shí),DNS服務(wù)器將所請(qǐng)求的域名解析為反向代理服務(wù)器的IP地址,這樣 URL請(qǐng)求將會(huì)被發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器負(fù)責(zé)處理用戶的請(qǐng)求與應(yīng)答并與后臺(tái)Web服務(wù)器進(jìn)行交互。如此就利用反向代理服務(wù)器減輕了后臺(tái)Web服務(wù)器的負(fù)載,提高了訪問(wèn)速度,同時(shí)也避免了因用戶直接與Web服務(wù)器通信帶來(lái)的安全隱患。如圖所示:

目前有許多反向代理軟件,比較有名的有Nginx和 Squid。

4.2 頁(yè)面靜態(tài)化

4.2.1 什么是靜態(tài)頁(yè)面

靜態(tài)頁(yè)面是網(wǎng)頁(yè)的代碼都在頁(yè)面中,不需要執(zhí)行asp,php,jsp,.net等程序生成客戶端網(wǎng)頁(yè)代碼的網(wǎng)頁(yè)。靜態(tài)頁(yè)面不能自主管理發(fā)布更新頁(yè)面。常見的靜態(tài)頁(yè)面有以.html擴(kuò)展名結(jié)尾的、.htm擴(kuò)展名結(jié)尾的頁(yè)面。還有一點(diǎn)是必須注意的,靜態(tài)頁(yè)面并非是網(wǎng)頁(yè)上沒(méi)有動(dòng)畫就是靜態(tài)頁(yè)面。4.2.2 什么是動(dòng)態(tài)頁(yè)面

動(dòng)態(tài)頁(yè)面是通過(guò)執(zhí)行asp,php,jsp,.net等程序生成客戶端網(wǎng)頁(yè)代碼的網(wǎng)頁(yè)。動(dòng)態(tài)頁(yè)面通常可以通過(guò)網(wǎng)站后臺(tái)管理系統(tǒng)對(duì)網(wǎng)站內(nèi)容進(jìn)行更新管理。發(fā)布新聞,發(fā)布公司產(chǎn)品,交流互動(dòng),博客,網(wǎng)上調(diào)查等,這都是動(dòng)態(tài)網(wǎng)站的一些功能,也是我們經(jīng)常使用的。動(dòng)態(tài)頁(yè)面常見的擴(kuò)展命有asp,php,jsp,cgi,.aspx等。當(dāng)中需要我們注意的是動(dòng)態(tài)頁(yè)面的動(dòng)態(tài)是指網(wǎng)站與客戶端用戶互動(dòng)的意思,而并非網(wǎng)頁(yè)上有動(dòng)畫就是動(dòng)態(tài)頁(yè)面。4.2.3 頁(yè)面靜態(tài)化

靜態(tài)的HTML頁(yè)面嚴(yán)格地由標(biāo)準(zhǔn)的HTML標(biāo)示語(yǔ)言構(gòu)成,并不需要服務(wù)器端即時(shí)運(yùn)算生成。這意味著對(duì)一個(gè)靜態(tài)HTML文檔發(fā)出訪問(wèn)請(qǐng)求后,服務(wù)器端只是簡(jiǎn)單地將該文檔傳輸?shù)娇蛻舳恕姆?wù)器運(yùn)行的那個(gè)時(shí)間片來(lái)看,這個(gè)傳輸過(guò)程僅僅占用了很小的CPU資源。

頁(yè)面靜態(tài)化就是采用效率最高、消耗最小的純靜態(tài)化的html頁(yè)面來(lái)替換動(dòng)態(tài)頁(yè)面。我們盡可能使我們的網(wǎng)站上的頁(yè)面采用靜態(tài)頁(yè)面來(lái)實(shí)現(xiàn),這個(gè)最簡(jiǎn)單的方法其實(shí)也是最有效的方法。

4.3 MVC架構(gòu)

MVC是一個(gè)設(shè)計(jì)模式,它強(qiáng)制性的把應(yīng)用程序的輸入、處理和輸出分開。使用MVC將應(yīng)用程序分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。4.3.1 視圖

視圖是用戶看到并與之交互的界面。對(duì)老式的Web應(yīng)用程序來(lái)說(shuō),視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,要求要以不同的界面呈現(xiàn)。如何處理應(yīng)用程序的界面變得越來(lái)越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。4.3.2 模型

模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如對(duì)數(shù)據(jù)庫(kù)的處理。被模型返回的數(shù)據(jù)是中立的,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。4.3.3 控制器

控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁(yè)面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后再確定用哪個(gè)視圖來(lái)顯示返回的數(shù)據(jù)。4.3.4 MVC應(yīng)用優(yōu)勢(shì)

1.適用性

MVC模式允許使用各種不同樣式的視圖來(lái)訪問(wèn)同一個(gè)服務(wù)器端的代碼。滿足了用戶不同方式的訪問(wèn)需求。

2.快速部署

使用MVC模式使開發(fā)時(shí)間得到相當(dāng)大的縮減,它使程序員集中精力于業(yè)務(wù)邏輯,界面程序員集中精力于表現(xiàn)形式上。

3.可維護(hù)性

分離視圖和業(yè)務(wù)邏輯也使得WEB應(yīng)用更易于維護(hù)和修改。在維護(hù)過(guò)程中可以細(xì)化和減少工作量。

4.4 CDN和鏡像網(wǎng)站技術(shù)

由于網(wǎng)站的用戶可能在不同的網(wǎng)絡(luò)運(yùn)營(yíng)商的網(wǎng)絡(luò)中,不同網(wǎng)絡(luò)中信息的交互會(huì)比在同一網(wǎng)絡(luò)中慢。為了解決這個(gè)問(wèn)題,本方案就采用了CDN技術(shù)和鏡像網(wǎng)站技術(shù)。

用戶動(dòng)態(tài)內(nèi)容(社區(qū)、投票、調(diào)查、搜索、點(diǎn)評(píng)、視頻)靜態(tài)內(nèi)容(靜態(tài)網(wǎng)頁(yè)、圖片)DNS解析電信用戶網(wǎng)通用戶CDN其他用戶服務(wù)器1服務(wù)器n服務(wù)器1服務(wù)器n服務(wù)器1服務(wù)器n電信機(jī)房多線機(jī)房網(wǎng)通機(jī)房

4.4.1 鏡像網(wǎng)站

鏡像網(wǎng)站是指將一個(gè)完全相同的站點(diǎn)放到幾個(gè)服務(wù)器上,分別都可以有自己的網(wǎng)址,這些服務(wù)器上的網(wǎng)站就稱為鏡像網(wǎng)站。鏡像網(wǎng)站和主站并沒(méi)有什么太大的差別,或者可以說(shuō)是主站的拷貝。鏡像網(wǎng)站的主要優(yōu)點(diǎn)是,用戶如果不能對(duì)主站進(jìn)行正常的訪問(wèn)(如服務(wù)器故障,網(wǎng)絡(luò)故障或者是網(wǎng)速太慢),仍然能通過(guò)訪

問(wèn)鏡像服務(wù)器獲得服務(wù)。

所以在本次方案中,我們可以在不同的網(wǎng)絡(luò)運(yùn)營(yíng)商部署web服務(wù)器,通過(guò)軟件工具自動(dòng)同步到不同網(wǎng)絡(luò)接入商的web服務(wù)器上,以作為主站的鏡像。然后通過(guò)配置智能DNS解析來(lái)引導(dǎo)不同網(wǎng)絡(luò)的訪問(wèn)用戶到對(duì)應(yīng)的網(wǎng)絡(luò)運(yùn)營(yíng)商的web服務(wù)器。

4.4.2 CDN技術(shù)

CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其基本思想是盡可能的避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的環(huán)節(jié),使內(nèi)容的傳輸速度更快、更穩(wěn)定。通過(guò)在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的在現(xiàn)有互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r(shí)的根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況以及到各用戶的距離和響應(yīng)時(shí)間等綜合信息將用戶的請(qǐng)求重新導(dǎo)向離用戶最近的服務(wù)器節(jié)點(diǎn)上。其根本目的是使用戶可以就近的獲取所需內(nèi)容,避開Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問(wèn)網(wǎng)站的響應(yīng)速度。從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問(wèn)量大、網(wǎng)點(diǎn)分布不均等原因所造成的用戶訪問(wèn)網(wǎng)站響應(yīng)速度慢的問(wèn)題。網(wǎng)站的硬件擴(kuò)容和升級(jí)

根據(jù)當(dāng)今時(shí)代的發(fā)展,中國(guó)將會(huì)有越來(lái)越多的人群加入網(wǎng)民的行列,當(dāng)然也就會(huì)有更多的人愿意通過(guò)互聯(lián)網(wǎng)來(lái)購(gòu)票。所以隨著用戶的不斷增多,為了滿足用戶的需求,網(wǎng)站對(duì)今后的發(fā)展和升級(jí)也是要必須考慮的。

5.1 增加服務(wù)器

當(dāng)集群不能滿足用戶的訪問(wèn)要求時(shí),可以考慮在集群中增加服務(wù)器,增大整個(gè)集群的訪問(wèn)處理能力。

當(dāng)Web對(duì)的并發(fā)處理有瓶頸時(shí),增加新的web服務(wù)器,把新增的web服務(wù)器填加到Web服務(wù)器集群中,以增加Web的并發(fā)處理能力。

當(dāng)數(shù)據(jù)庫(kù)有處理壓力時(shí),可以增加數(shù)據(jù)庫(kù)服務(wù)器,增加數(shù)據(jù)庫(kù)服務(wù)器加入數(shù)據(jù)庫(kù)的集群中。

5.2 升級(jí)服務(wù)器

當(dāng)集群中服務(wù)器的各項(xiàng)處理能力不能達(dá)到要求時(shí),這時(shí)就可以考慮對(duì)服務(wù)器進(jìn)行升級(jí)。對(duì)服務(wù)器的升級(jí)其實(shí)和增加服務(wù)器的作用相差無(wú)幾。但是升級(jí)服務(wù)器會(huì)比增加服務(wù)器更加繁瑣而且更加昂貴。所以我們一般都采用增加服務(wù)器的方法來(lái)解決問(wèn)題。

5.3 增加存儲(chǔ)

隨著網(wǎng)站的用戶訪問(wèn)量的擴(kuò)大和網(wǎng)站的升級(jí),當(dāng)然所要存儲(chǔ)的信息和數(shù)據(jù)也就會(huì)越來(lái)越多,以前的服務(wù)器磁盤不再能滿足要求。所以此時(shí)應(yīng)當(dāng)考慮增加磁盤 11

容器或者設(shè)立一個(gè)新的存儲(chǔ)服務(wù)器。

5.4 網(wǎng)絡(luò)擴(kuò)容

由不斷增多的大量的用戶訪問(wèn)造成了巨大的網(wǎng)絡(luò)流量,很可能造成網(wǎng)絡(luò)的阻塞。原來(lái)的網(wǎng)絡(luò)帶寬設(shè)計(jì)就會(huì)無(wú)法承受。所以在系統(tǒng)擴(kuò)容中還要考慮重新申請(qǐng)更大的網(wǎng)絡(luò)帶寬。不僅如此,當(dāng)帶寬增大后,為了適應(yīng)更大的網(wǎng)絡(luò)流量,內(nèi)網(wǎng)交換機(jī)的升級(jí)也是必須的。

第三篇:軟件工程課設(shè)-網(wǎng)上火車票訂票系統(tǒng)

目錄

1.選題意義.................................................................1 2.網(wǎng)上火車票訂票系統(tǒng)要達(dá)到的目標(biāo)及限制......................................1 2.1 要達(dá)到的目標(biāo)...........................................................1 2.1.1功能目標(biāo)...........................................................1 2.1.2 質(zhì)量及性能目標(biāo).....................................................2 2.2 限制...................................................................2 3.用例、事件流及對(duì)應(yīng)活動(dòng)....................................................3 3.1 系統(tǒng)用例圖.............................................................3 3.2 用戶注冊(cè)...............................................................3 3.2.1用例簡(jiǎn)述...........................................................3 3.2.2 基本事件流.........................................................3 3.2.3 活動(dòng)圖.............................................................4 3.3 用戶登錄系統(tǒng)...........................................................4 3.3.1 用例簡(jiǎn)述.........................................................4 3.3.2 基本事件流.......................................................4 3.3.3 活動(dòng)圖...........................................................5 3.4 用戶退出系統(tǒng)...........................................................5 3.4.1 用例簡(jiǎn)述...........................................................5 3.4.2 基本事件流.........................................................5 3.5 按起點(diǎn)終點(diǎn)和出發(fā)日期瀏覽車票...........................................6 3.5.1 用例簡(jiǎn)述...........................................................6 3.5.2 基本事件流.........................................................6 3.5.3 活動(dòng)圖.............................................................6 3.6 訂單生成及支付.........................................................7 3.6.1 用例簡(jiǎn)述...........................................................7 3.6.2 基本事件流.........................................................7 3.6.3 活動(dòng)圖.............................................................7 3.7 查看訂單...............................................................8 3.7.1 用例簡(jiǎn)述...........................................................8 3.7.2 基本事件流.........................................................8 3.7.3 活動(dòng)圖.............................................................8 3.8 退票...................................................................8 3.8.1 用例簡(jiǎn)述...........................................................8 3.8.2 基本事件流.........................................................8 3.8.3 活動(dòng)圖.............................................................8 3.9 業(yè)務(wù)數(shù)據(jù)管理...........................................................9 3.9.1 用例簡(jiǎn)述...........................................................9 3.9.2 基本事件流.........................................................9 3.9.3 活動(dòng)圖.............................................................9 3.10 管理員賬號(hào)管理.......................................................10 3.10.1 用例簡(jiǎn)述.........................................................10 3.10.2 基本事件流.......................................................10

3.10.3 活動(dòng)圖...........................................................10 4.類圖....................................................................11 5.主要時(shí)序圖..............................................................11 5.1 注冊(cè)..................................................................11 5.2檢索車票..............................................................12 5.3 選座購(gòu)票..............................................................12

1.選題意義

鐵路作為中國(guó)最重要的交通工具之一,在市場(chǎng)經(jīng)濟(jì)浪潮中,面臨著嚴(yán)峻的考驗(yàn)。公路運(yùn)輸?shù)谋憬荩娇者\(yùn)輸?shù)目焖伲@一切都對(duì)鐵路運(yùn)輸構(gòu)成很大的沖擊。火車站市場(chǎng)的管理和規(guī)范問(wèn)題,是困擾我們多年的一個(gè)老問(wèn)題,也是政府管理中的一個(gè)難點(diǎn),訂票是客運(yùn)業(yè)務(wù)中的一個(gè)最基本的業(yè)務(wù),表面上看,它只是火車站業(yè)務(wù)的一個(gè)簡(jiǎn)單的部分,但是它涉及到管理與客戶服務(wù)等多方面,因此,隨著我國(guó)鐵路交通的不斷發(fā)展,過(guò)去傳統(tǒng)的售票方式已經(jīng)不能滿足現(xiàn)代客運(yùn)業(yè)務(wù)流量劇增的客觀要求,簡(jiǎn)單的窗口售票模式已經(jīng)不能滿足方便人們出行的目的。采用先進(jìn)的網(wǎng)絡(luò)技術(shù)開發(fā)出方便快捷的網(wǎng)上訂票系統(tǒng)是現(xiàn)代客運(yùn)業(yè)務(wù)發(fā)展的必然要求。電子商務(wù)的出現(xiàn),正好帶給了鐵路客運(yùn)服務(wù)一個(gè)發(fā)展契機(jī),推出新型的訂票方式——網(wǎng)上訂票,來(lái)緩解訂票高峰時(shí)期的客運(yùn)壓力,并為用戶提供方便快捷的訂票服務(wù)。它既是技術(shù)上的創(chuàng)新,又將完善鐵路服務(wù),在一定程度上解決買票難這一大難題,增強(qiáng)鐵路競(jìng)爭(zhēng)力,為鐵路爭(zhēng)取到更多的客流。本次設(shè)計(jì)的火車票網(wǎng)上訂票系統(tǒng)通過(guò)訪問(wèn)主頁(yè),可以實(shí)現(xiàn)個(gè)人信息注冊(cè)、車次車票價(jià)格查詢、在線訂票退票等基本功能,為用戶提供快捷方便的訂票服務(wù)。

2.網(wǎng)上火車票訂票系統(tǒng)要達(dá)到的目標(biāo)及限制 2.1 要達(dá)到的目標(biāo) 2.1.1功能目標(biāo)

網(wǎng)上火車票訂票系統(tǒng)登錄管理個(gè)人信息管理選座訂單管理注冊(cè)登錄查詢修改選擇起點(diǎn)終點(diǎn)及出發(fā)日期選擇出發(fā)時(shí)刻選擇座位等級(jí)下訂單付款 顯示取票信息退票顯示歷史訂單圖2-1-1用戶功能模塊圖

從用戶角度看:

(1)注冊(cè):普通用戶可以進(jìn)行注冊(cè),輸入的注冊(cè)信息要進(jìn)行驗(yàn)證,驗(yàn)證正確后將信息存入數(shù)據(jù)庫(kù)。

(2)登錄:已經(jīng)注冊(cè)的普通用戶可以正確登錄,在登錄頁(yè)面輸入信息時(shí),如果信息輸入正確可以正確登錄進(jìn)入系統(tǒng);如果信息輸入錯(cuò)誤,能夠看到信息輸入錯(cuò)誤提示,并且停留在該系統(tǒng)登錄頁(yè)面。

(3)查詢:用戶可以實(shí)現(xiàn)對(duì)個(gè)人信息的查詢、車次信息的查詢和已訂車票信息的查詢。要求: 對(duì)個(gè)人信息的查詢和修改,用戶可以查看并修改自己的基本信息。

2)對(duì)車次的查詢,可以按照始發(fā)站和終點(diǎn)站進(jìn)行查詢。3)對(duì)訂單的查詢,用戶可以查看自己訂單的所有車票信息。

(4)添加:用戶可以進(jìn)行訂票來(lái)添加訂單。

(5)退票:用戶可以對(duì)自己已付款訂單車次的車票進(jìn)行退票操作。

網(wǎng)上火車票訂票系統(tǒng)1)

登錄查詢數(shù)據(jù)管理個(gè)人信息車次站點(diǎn)已注冊(cè)用戶添加刪除修改 圖2-1-2管理員功能模塊圖

從管理員的角度看:

(1)登錄:管理員可以通過(guò)登錄權(quán)限進(jìn)入管理員模式。

(2)查詢:管理員可以對(duì)個(gè)人信息進(jìn)行查詢、對(duì)現(xiàn)有車次進(jìn)行查詢、對(duì)站點(diǎn)進(jìn)行查詢和對(duì)已注冊(cè)用戶信息進(jìn)行查詢。

1)對(duì)個(gè)人信息的查詢,管理員可以查看自己的基本信息。

2)對(duì)車次的查詢,可以按照發(fā)車車次進(jìn)行查詢,也可以按照始發(fā)站和終點(diǎn)站進(jìn)行查詢。

3)對(duì)站點(diǎn)的查詢,管理員查看所有已存在站點(diǎn)的信息。

4)對(duì)已注冊(cè)用戶的查詢,管理員可以查看本系統(tǒng)中所有已注冊(cè)用戶的基本信息和其訂單信息。

(3)添加:管理員可以實(shí)現(xiàn)對(duì)車次的添加、對(duì)站點(diǎn)的添加和對(duì)車票信息的添加。

(4)刪除:管理員可以實(shí)現(xiàn)對(duì)車次的刪除、對(duì)站點(diǎn)的刪除和對(duì)車票信息的刪除。

(5)管理員可以修改站點(diǎn)信息、車次信息和車票信息。

(6)管理員也可以創(chuàng)建、管理更低權(quán)限級(jí)別的管理員的權(quán)限級(jí)別等信息。2.1.2 質(zhì)量及性能目標(biāo)

系統(tǒng)使用時(shí),登錄、注冊(cè)、檢索瀏覽車票、生成訂單等流程正常。系統(tǒng)可迅速且正確地響應(yīng)用戶的請(qǐng)求。2.2 限制

用戶僅能修改自己的信息,不能修改管理員信息、車票信息等數(shù)據(jù)。

管理員不可以修改更高權(quán)限及相同權(quán)限級(jí)別的管理員的信息。管理員賬號(hào)只 能由更高級(jí)別的管理員創(chuàng)建產(chǎn)生,不能由注冊(cè)產(chǎn)生,也不能由同權(quán)限級(jí)別或者更低權(quán)限級(jí)別的管理員創(chuàng)建產(chǎn)生。系統(tǒng)默認(rèn)內(nèi)置一個(gè)超級(jí)管理員賬號(hào),該管理員擁有最高管理權(quán)限。

3.用例、事件流及對(duì)應(yīng)活動(dòng)

網(wǎng)上火車票訂票系統(tǒng)描述的主要用例有:普通用戶注冊(cè),用戶(普通用戶/管理員)登錄系統(tǒng),用戶(普通用戶)退出系統(tǒng),車票瀏覽,查看訂單,檢索車票,顯示車票信息,訂單生成及支付,業(yè)務(wù)數(shù)據(jù)管理,管理員賬號(hào)管理。

3.1 系統(tǒng)用例圖

業(yè)務(wù)數(shù)據(jù)管理查看歷史訂單退出系統(tǒng)登錄會(huì)員管理員查詢車次信息管理員賬號(hào)管理生成訂單及支付

圖3-1 系統(tǒng)用例圖

3.2 用戶注冊(cè) 3.2.1用例簡(jiǎn)述

用戶在購(gòu)票網(wǎng)站上輸入注冊(cè)信息,成為注冊(cè)用戶。3.2.2 基本事件流

1、用戶:在會(huì)員注冊(cè)畫面,輸入用戶編號(hào)、密碼、用戶姓名、證件編號(hào)、電子郵件地址和聯(lián)系電話等信息,提交注冊(cè)請(qǐng)求;

2、系統(tǒng):對(duì)用戶的信息進(jìn)行檢查;

3、系統(tǒng):用戶的信息被系統(tǒng)保存;

4、系統(tǒng):保存注冊(cè)信息,提示用戶注冊(cè)成功;

5、用例結(jié)束。3.2.3 活動(dòng)圖

用戶系統(tǒng)輸入注冊(cè)信息顯示注冊(cè)界面提交注冊(cè)信息檢查注冊(cè)信息是否合法保存注冊(cè)信息顯示注冊(cè)成功

圖3-2 用戶注冊(cè)活動(dòng)圖

3.3 用戶登錄系統(tǒng) 3.3.1 用例簡(jiǎn)述

用戶輸入合法的用戶名和密碼后,登錄系統(tǒng)。3.3.2 基本事件流

1、用戶:在用戶登錄頁(yè)面上,輸入用戶名和密碼;

2、系統(tǒng):根據(jù)用戶名和密碼檢索系統(tǒng),獲得用戶信息;

3、系統(tǒng):顯示用戶登錄成功,用戶身份由游客變?yōu)樽?cè)用戶;

4、結(jié)束用例。3.3.3 活動(dòng)圖

用戶系統(tǒng)顯示登錄界面輸入注冊(cè)信息檢查登錄信息是否正確顯示登錄成功

圖 3-3 用戶登錄系統(tǒng)活動(dòng)圖

3.4 用戶退出系統(tǒng) 3.4.1 用例簡(jiǎn)述

用戶退出系統(tǒng)。3.4.2 基本事件流

1、用戶:提交退出系統(tǒng)的請(qǐng)求;

2、系統(tǒng):注銷用戶,顯示退出成功;

3、用例結(jié)束。3.4.3 活動(dòng)圖

用戶系統(tǒng)用戶提交退出請(qǐng)求顯示退出成功

圖 3-4 用戶退出系統(tǒng)活動(dòng)圖 3.5按起點(diǎn)終點(diǎn)和出發(fā)時(shí)間檢索車票 3.5.1 用例簡(jiǎn)述

根據(jù)用戶選擇的起點(diǎn)終點(diǎn)以及出發(fā)日期顯示列車信息。3.5.2 基本事件流

1、用戶:選擇起點(diǎn)和終點(diǎn)以及出發(fā)日期;

2、系統(tǒng):檢查起點(diǎn)和終點(diǎn)是否正確;

2、系統(tǒng):顯示符合用戶選擇的列車信息;

3、用戶:選擇某輛列車;

4、系統(tǒng):顯示用戶選擇的列車的車票信息;

5、用例結(jié)束。3.5.3 活動(dòng)圖

用戶系統(tǒng)顯示查票界面輸入起點(diǎn)、終點(diǎn)、出發(fā)日期起始點(diǎn)是否正確顯示各時(shí)間的列車信息選擇某輛列車顯示車票信息

圖 3-5按照起點(diǎn)終點(diǎn)和出發(fā)日期檢索車票活動(dòng)圖 3.6 訂單生成及支付 3.6.1 用例簡(jiǎn)述

用戶下單并完成支付,系統(tǒng)檢查是否完成支付。3.6.2 基本事件流

1、用戶:選擇車次、座位;

2、用戶:提交訂單請(qǐng)求;

3、系統(tǒng):檢查用戶是否已經(jīng)登錄;

4、系統(tǒng):檢查座位選擇是否有效;

5、系統(tǒng):生成訂單,顯示付款頁(yè)面;

6、用戶:選擇支付方式,輸入付款信息,進(jìn)行付款;

7、系統(tǒng):檢查支付信息是否正確,是否完成支付;

8、系統(tǒng):存儲(chǔ)并顯示車票信息等訂單詳情;

9、用例結(jié)束。3.6.3 活動(dòng)圖

用戶系統(tǒng)選擇車次、座位提交訂單請(qǐng)求檢查登錄信息是否正確檢查座位選擇是否正確選擇付款方式生成訂單,顯示付款界面付款檢查是否完成支付保存訂單信息

圖 3-6訂單生成及支付 3.7 查看訂單 3.7.1 用例簡(jiǎn)述

顧客查看自己的歷史訂單。3.7.2 基本事件流

1、用戶:提交查看歷史訂單請(qǐng)求;

2、系統(tǒng):顯示該用戶所有的歷史訂單信息;

3、用戶:選擇某一條訂單;

4、系統(tǒng):在訂單詳細(xì)頁(yè)面顯示用戶選擇的某一條訂單的詳細(xì)信息;

5、用例結(jié)束。3.7.3 活動(dòng)圖

用戶系統(tǒng)提交查看歷史訂單請(qǐng)求顯示歷史訂單列表選擇某一條訂單顯示選中的訂單詳情

圖 3-7 查看訂單活動(dòng)圖

3.8 退票

3.8.1 用例簡(jiǎn)述

顧客選擇退掉已經(jīng)購(gòu)買的車票。3.8.2 基本事件流

1、用戶:選擇已購(gòu)買的車票并提交退票請(qǐng)求;

2、系統(tǒng):檢查退票請(qǐng)求是否合法;

3、系統(tǒng):顯示退票成功,返回原來(lái)頁(yè)面;

4、用例結(jié)束。3.8.3 活動(dòng)圖

用戶系統(tǒng)顯示退票界面選擇車票并提交退票請(qǐng)求退票請(qǐng)求是否合法顯示退票成功

圖 3-8 退票活動(dòng)圖

3.9 業(yè)務(wù)數(shù)據(jù)管理 3.9.1 用例簡(jiǎn)述

管理員管理商品,訂單,會(huì)員等相關(guān)的業(yè)務(wù)數(shù)據(jù),包括對(duì)數(shù)據(jù)的新增,更新,刪除,查詢。3.9.2 基本事件流

1、管理員:實(shí)施業(yè)務(wù)數(shù)據(jù)的新增,更新,刪除,查詢操作;

2、系統(tǒng):檢查管理員登錄信息;

3、系統(tǒng):保存管理員對(duì)業(yè)務(wù)數(shù)據(jù)的相關(guān)操作;

4、用例結(jié)束。3.9.3 活動(dòng)圖

管理員系統(tǒng)管理業(yè)務(wù)數(shù)據(jù)檢查管理員登錄信息檢查管理員權(quán)限保存管理員操作

圖 3-10業(yè)務(wù)數(shù)據(jù)管理 3.10 管理員賬號(hào)管理 3.10.1 用例簡(jiǎn)述

管理員實(shí)現(xiàn)對(duì)較低級(jí)別的管理員賬號(hào)的管理。3.10.2 基本事件流

1、管理員:對(duì)系統(tǒng)中的較低級(jí)別的管理員賬號(hào)進(jìn)行新增,更新,刪除,權(quán)限更改等操作;

2、系統(tǒng):檢查管理員登錄信息;

3、系統(tǒng):保存管理員的操作;

4、用例結(jié)束。

3.10.3 活動(dòng)圖

管理員系統(tǒng)管理管理員賬號(hào)檢查管理員登錄信息檢查管理員權(quán)限保存管理員操作

圖 3-11 管理員賬號(hào)管理 4.類圖

訂單-下單時(shí)間 : string-價(jià)格 : float-起點(diǎn) : string-終點(diǎn) : string-出發(fā)時(shí)間 : string-站臺(tái)號(hào) : string1-列車編號(hào) : string-座位號(hào) : string火車票-列車編號(hào) : string-價(jià)格 : float-起點(diǎn) : string-終點(diǎn) : string-出發(fā)時(shí)間 : string-到達(dá)時(shí)間 : string-座位等級(jí) : string-座位號(hào) : stringm..n管理員-ID : string-用戶名 : stringm..n-密碼 : string-權(quán)限 : string-特性1-手機(jī)號(hào) : string-地址 : string-真實(shí)姓名 : stringm..n+登錄()+退出()+業(yè)務(wù)數(shù)據(jù)管理()+管理員賬號(hào)管理()*1*注冊(cè)用戶-ID : string-用戶名 : string-密碼 : string-身份證號(hào) : string-手機(jī)號(hào) : string-E-mail : string-地址 : string-真實(shí)姓名 : string-注冊(cè)時(shí)間 : string+登錄()+退出()+檢索車票()+選座下單()+查看訂單()+支付()+個(gè)人信息管理()未注冊(cè)用戶-ID : string+注冊(cè)()0..11m..n

圖 4-1 類圖

5.主要時(shí)序圖 5.1 注冊(cè)

注冊(cè)界面注冊(cè)系統(tǒng)注冊(cè)用戶表用戶輸入注冊(cè)信息提交注冊(cè)請(qǐng)求[未填寫注冊(cè)信息]填寫注冊(cè)信息提交注冊(cè)信息進(jìn)行合法性檢查[注冊(cè)信息合法]保存注冊(cè)信息返回保存結(jié)果返回注冊(cè)結(jié)果顯示注冊(cè)結(jié)果

圖 5-1 用戶注冊(cè)時(shí)序圖 5.2檢索車票

檢索界面檢索系統(tǒng)車票用戶選擇起點(diǎn)終點(diǎn)及出發(fā)日期[未填寫查詢信息]填寫查詢信息提交查詢信息檢索信息返回檢索結(jié)果返回檢索結(jié)果顯示檢索結(jié)果

圖 5-2 檢索車票時(shí)序圖

5.3 選座購(gòu)票

選座界面選座系統(tǒng)座位表訂單界面訂單系統(tǒng)訂單表用戶點(diǎn)擊選座提交選座請(qǐng)求查詢剩余座位返回座位數(shù)據(jù)返回座位數(shù)據(jù)請(qǐng)求鎖定座位鎖定座位返回選座信息返回選座信息顯示選座成功點(diǎn)擊下單請(qǐng)求生成訂單保存訂單信息返回訂單信息顯示訂單信息返回訂單信息

圖 5-3 選座購(gòu)票時(shí)序圖

第四篇:火車票管理系統(tǒng)

火車票管理系統(tǒng)一、課題內(nèi)容和要求

改系統(tǒng)要求實(shí)現(xiàn)一個(gè)簡(jiǎn)單、實(shí)用的火車票管理程序,主要功能包括火車票數(shù)據(jù)的錄入、查找、刪除、顯示、售票、退票等。所有火車票數(shù)據(jù)都要利用文件系統(tǒng)保存,以備系統(tǒng)下次運(yùn)行時(shí)使用。通過(guò)此課題,熟練掌握文件、數(shù)組、指針的各種操作,以及一些基本算法思想的應(yīng)用。

二、需求分析

功能框架圖:(見圖2-1)

火車票管理系統(tǒng)

錄入

查找

刪除

排序

售票

退票

保存

圖2-1。

1.新增火車票數(shù)據(jù)記錄:預(yù)先建立一個(gè)txt文檔,存入數(shù)據(jù),然后在程序中讀取文檔。

2.查找火車票數(shù)據(jù)(可按車次,發(fā)車時(shí)間、起點(diǎn)站、終點(diǎn)站等查找)。

3.刪除火車票數(shù)據(jù)記錄(先查找,再刪除。若查找出多條記錄,則進(jìn)一步提示用戶選擇記錄的車次,再刪除)。

4.對(duì)火車票排序(可按車次、發(fā)車時(shí)間、起點(diǎn)站、終點(diǎn)站等排序。)。

5.顯示當(dāng)前所有火車票信息列表。

6.售票(先查找,當(dāng)確定車次后,根據(jù)售票張數(shù)對(duì)該車次的已售票人數(shù)進(jìn)行修改)。

7.退票(售票的逆處理,過(guò)程與售票類似)。

8.保存火車票數(shù)據(jù)到文件中。

9.從文件中讀入火車票數(shù)據(jù)。

三、概要設(shè)計(jì)

1)主要結(jié)構(gòu)體:

struct

time

{

int

hour;

int

minutes;

};

struct

ticket

{

char

SerialNumber[10];

struct

time

SetOut;

char

DeparturePoint[MAX];

char

TerminalPoint[MAX];

float

LastTime;

int

FixNumber;

int

FixedNumber;

}train[N];

2)主要函數(shù)流程圖:

l

載入函數(shù):用于從文本中載入信息。(見圖3-1)

打開文本

能否打開

讀入數(shù)據(jù)

是否結(jié)束

結(jié)束

開始

開始

讀入車次

是否符合輸出信息

結(jié)束

圖3-2

圖3-1

l

查找函數(shù):利用輸入的車次或站點(diǎn)進(jìn)行順序查找并將找到的信息輸出。(見圖3-2)

l

刪除函數(shù):先查找出要?jiǎng)h除的信息再刪除。(見圖3-3)

無(wú)法訂票

人數(shù)加一

是否超載

圖3-4

結(jié)束

開始

讀入車次

是否誤點(diǎn)

圖3-3

是否符合讀入車次

開始

記錄下標(biāo)i

i=i+1,i++

i<車次總數(shù)-1

結(jié)束

l

售票退票函數(shù):先判斷該車是否已發(fā)車,若未發(fā)車且人未滿則訂票成功,否則無(wú)法訂票退票。(見圖3-4)

l

備份文件函數(shù):將文件內(nèi)容存儲(chǔ)到用戶給定的地址中(見圖3—5)

圖3-5

l

排序函數(shù)(見圖3-6)

圖3-6

四、源程序代碼

#include

#include

#include

#include

#include

#include

const

int

MAX=20;

const

int

N=50;

const

int

MAXFILENAME=100;

enum

{FALSE,TRUE};

struct

time

{

int

hour;

int

minutes;

};

struct

ticket

{

char

SerialNumber[10];

struct

time

SetOut;

char

DeparturePoint[MAX];

char

TerminalPoint[MAX];

float

LastTime;

int

FixNumber;

int

FixedNumber;

}train[N];

int

RecordNumber;

int

FLAG=FALSE;

/**********************************************/

int

ShowMessage(void);

//載入原始數(shù)據(jù)

void

mainmenu(void);

//主菜單

void

InsertMessage(void);

//錄入班次信息

void

SearchMenu(void);

//查詢路線子菜單

void

SearchByNumber(void);

//按班次號(hào)查詢

void

SearchByAddress(void);

//按終點(diǎn)站查詢

void

cancle(void);//刪除數(shù)據(jù)

void

selection(ticket

*pa,int

n);//排序

void

TicketManagement(void);

//車票售出與退回

void

TicketOrder(void);

//售票

void

TicketDelete(void);

//退票

void

exit(void);

//退出該系統(tǒng)

void

SaveRecord(ticket

x);

//儲(chǔ)存信息到文件中

/********************************************/

int

main(void)

{

do{

mainmenu();

}while(FLAG==FALSE);

return

0;

}

void

mainmenu(void)

{

system(“mode

con:

cols=140

lines=130“);

char

functionNumber;

printf(“

火車票管理系統(tǒng)\n\n“);

printf(“============================================================================\n“);

printf(“

1.錄入班次信息\t\n“);

printf(“

2.顯示所有車票信息列表\t\n“);

printf(“

3.查詢火車票數(shù)據(jù)\t\n“);

printf(“

4.刪除火車票數(shù)據(jù)記錄\t\n“);

printf(“

5.按行車時(shí)間排序\t\n“);

printf(“

6.售票與退票系統(tǒng)\t\n“);

printf(“

7.退出該系統(tǒng)\t\n“);

printf(“============================================================================\n“);

printf(“請(qǐng)選擇你所需要的功能:“);

scanf(“%c“,&functionNumber);

switch(functionNumber)

{

case

'1':

{

InsertMessage();

printf(“\n按任意鍵回主菜單......\n“);

getchar();

getchar();

}

break;

case

'2':

{

RecordNumber=ShowMessage();

printf(“\n按任意鍵回主菜單......\n“);

getchar();

getchar();

}

break;

case

'3':

{

SearchMenu();

printf(“\n按任意鍵回主菜單......\n“);

getchar();

getchar();

}

break;

case

'4':

{

cancle();

printf(“\n按任意鍵回主菜單......\n“);

getchar();

getchar();

}

break;

case

'5':

{

selection(train,RecordNumber);

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

int

i;

for(i=0;i

{

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\n“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

}

printf(“\n按任意鍵回主菜單......\n“);

getchar();

getchar();

}

break;

case

'6':

{

TicketManagement();

getchar();

getchar();

}

break;

case

'7':

{

int

i;

FLAG=TRUE;

for(i=0;i

{

SaveRecord(*(train+i));

}

exit();

}

break;

default:

{

printf(“輸入錯(cuò)誤,請(qǐng)確保你的輸入為1--7.\n“);

printf(“按任意鍵回主菜單......\n“);

getchar();

getchar();

}

}//switch

ends

FLAG=FALSE;

}

void

InsertMessage(void)

{

FILE

*fp;

char

filename[MAXFILENAME];

int

i;

printf(“請(qǐng)輸入文件名或者文件路徑名:“);

scanf(“%s“,filename);

if((fp=fopen(filename,“r“))==NULL)

{

printf(“文件%s不可讀,請(qǐng)確認(rèn)文件%s存在或者文件路徑正確.\n\n“,filename,filename);

mainmenu();

}

for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++)

{

fscanf(fp,“%s%d%d“,&train[i].SerialNumber,&train[i].SetOut.hour,&train[i].SetOut.minutes);

fscanf(fp,“%s%s%f%d%d“,&train[i].DeparturePoint,&train[i].TerminalPoint,&train[i].LastTime,&train[i].FixNumber,&train[i].FixedNumber);

}

RecordNumber=i;

/*******************************輸出更新后的訂票記錄************************************************************/

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

for(i=0;i

{

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\n“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

}

fclose(fp);

}

int

ShowMessage(void)

{

int

i;

FILE

*fp;

if((fp=fopen(“add.txt“,“r“))==NULL)

{

printf(“讀取數(shù)據(jù)失敗,請(qǐng)檢查文件add.txt是否存在.\n“);

exit(-1);

}

for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++)

{

fscanf(fp,“%s%d%d“,&train[i].SerialNumber,&train[i].SetOut.hour,&train[i].SetOut.minutes);

fscanf(fp,“%s%s%f%d%d“,&train[i].DeparturePoint,&train[i].TerminalPoint,&train[i].LastTime,&train[i].FixNumber,&train[i].FixedNumber);

}

int

count=i;

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

for(i=0;i

{

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\t“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

printf(“\n“);

}

return

count;

}

void

SearchMenu(void)

{

system(“mode

con:

cols=140

lines=130“);

char

functionNumber;

printf(“

查詢子菜單\n“);

printf(“============================================================================\n“);

printf(“

1.按班次號(hào)查詢\t\n“);

printf(“

2.按終點(diǎn)站查詢\t\n“);

printf(“

3.返回主菜單\t\n“);

printf(“============================================================================\n“);

printf(“請(qǐng)選擇你所需要的功能:“);

scanf(“%*c%c“,&functionNumber);

switch(functionNumber)

{

case

'1':SearchByNumber();break;

case

'2':SearchByAddress();break;

case

'3':

getchar();

mainmenu();

break;

default:

printf(“輸入錯(cuò)誤,請(qǐng)確保你的輸入為1--3.\n“);

printf(“按任意鍵回查詢子菜單......\n“);

getchar();

getchar();

SearchMenu();

}

}

void

SearchByNumber(void)

{

int

i;

char

Number[MAX];

printf(“請(qǐng)輸入班次號(hào):“);

scanf(“%s“,&Number);

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

for(i=0;i

{

//對(duì)比終點(diǎn)站記錄,找到并輸出

if((strcmp(Number,train[i].SerialNumber))==0)

{

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\n“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

}

}

}

void

SearchByAddress(void)

{

int

i;

char

Address[MAX];

printf(“請(qǐng)輸入終點(diǎn)站的名稱:“);

scanf(“%s“,&Address);

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

for(i=0;i

{

//對(duì)比終點(diǎn)站記錄,找到并輸出

if((strcmp(Address,train[i].TerminalPoint))==0)

{

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\n“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

}

}

}

void

cancle(void)

{

SearchMenu();

int

i,j;

char

m[MAX];

printf(“請(qǐng)輸入要?jiǎng)h除的班次:“);

scanf(“%s“,&m);

for(i=0;i

{

if(i==RecordNumber)

{

printf(“對(duì)不起,沒(méi)有這趟車\n“);

}

}

for(j=i;j

{

train[j]=train[j+1];

}

printf(“刪除成功\n“);

}

void

selection(ticket

*pa,int

n)

{

int

i,k,index;

struct

ticket

temp;

for(k=0;k

{

index=k;

for(i=k+1;i

if(pa[i].LastTime

index=i;

if(index!=k)

{

temp=pa[index];

pa[index]=pa[k];

pa[k]=temp;

}

}

}

void

TicketManagement(void)

{

char

functionNumber;

system(“mode

con:

cols=140

lines=130“);

printf(“

訂票與退票菜單\n“);

printf(“============================================================================\n“);

printf(“

1.訂票\t\n“);

printf(“

2.退票\t\n“);

printf(“

3.返回主菜單.\n“);

printf(“============================================================================\n“);

printf(“選擇你需要的功能:“);

scanf(“%*c%c“,&functionNumber);

switch(functionNumber)

{

case

'1':

{

TicketOrder();

//getchar();

//getchar();

}

break;

case

'2':TicketDelete();break;

case

'3':

{

getchar();

mainmenu();

}

break;

default:

{

printf(“輸入錯(cuò)誤,請(qǐng)確保你的輸入為1--3.\n“);

printf(“按任意鍵回主菜單......\n“);

getchar();

getchar();

mainmenu();

}

}

}

void

TicketOrder(void)

{

SearchMenu();

int

i,j;

char

a[MAX];

printf(“請(qǐng)輸入要訂購(gòu)的車票的班次:“);

scanf(“%s“,&a);

printf(“請(qǐng)輸入要訂購(gòu)的車票的張數(shù):“);

scanf(“%d“,&j);

for(i=0;i

{

if((strcmp(a,train[i].SerialNumber))==0)

{

if(train[i].FixedNumber

{

(train[i].FixedNumber)+=j;

printf(“你的訂票成功,請(qǐng)按時(shí)上車,謝謝使用!\n“);

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\n“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

}

else

printf(“對(duì)不起,票已賣完\n“);

}

}

}

void

TicketDelete(void)

{

SearchMenu();

int

i,j;

char

b[MAX];

printf(“請(qǐng)輸入要退購(gòu)的車票的班次:“);

scanf(“%s“,&b);

printf(“請(qǐng)輸入要退購(gòu)的車票的張數(shù):“);

scanf(“%d“,&j);

for(i=0;i

{

if((strcmp(b,train[i].SerialNumber))==0)

{

if(train[i].FixedNumber>=1)

{

train[i].FixedNumber-=j;

printf(“退訂車票成功,謝謝使用!\n“);

printf(“班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n“);

printf(“%s\t%d:%d\t\t“,train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);

printf(“%s\t%s\t\t%.1f\t

%d\t\t%d\n“,train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);

}

else

printf(“對(duì)不起,今天的這趟車的票尚未賣出,無(wú)法完成退票!\n“);

}

}

}

void

exit(void)

{

printf(“\n\n*********************謝謝使用本系統(tǒng),歡迎下次繼續(xù)使用***********************\n“);

exit(0);

}

void

SaveRecord(ticket

x)

{

FILE

*fp;

if((fp=fopen(“add.txt“,“a“))==NULL)

{

printf(“打開文件%s失敗\n“,“add.txt“);

exit(-1);

}

fprintf(fp,“\n%s\t%d\t%d\t\t“,x.SerialNumber,x.SetOut.hour,x.SetOut.minutes);

fprintf(fp,“%s\t%s\t\t%.1f\t

%d\t\t%d“,x.DeparturePoint,x.TerminalPoint,x.LastTime,x.FixNumber,x.FixedNumber);

}

五、測(cè)試數(shù)據(jù)及其結(jié)果分析

顯示的主菜單界面:

火車票管理系統(tǒng)

============================================================================

1.錄入班次信息

2.顯示所有車票信息列表

3.查詢火車票數(shù)據(jù)

4.刪除火車票數(shù)據(jù)記錄

5.按行車時(shí)間排序

6.售票與退票系統(tǒng)

7.退出該系統(tǒng)

============================================================================

請(qǐng)選擇你所需要的功能:

1)錄入班次信息

輸入:1

輸出:請(qǐng)輸入文件名或者文件路徑名:

輸入:D:\\1.txt

輸出:

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k1111

8:30

南京

上海

4.0

300

200

k1234

10:20

上海

蘇州

2.0

200

t2222

12:40

長(zhǎng)沙

上海

9.0

250

k2323

13:50

揚(yáng)州

南京

1.5

200

k1122

9:20

廣州

南京

20.0

300

170

按任意鍵回主菜單......2)顯示所有車票信息列表

輸入:2

輸出:

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k1111

8:30

南京

上海

4.0

300

200

k1234

10:20

上海

蘇州

2.0

200

t2222

12:40

長(zhǎng)沙

上海

9.0

250

k2323

13:50

揚(yáng)州

南京

1.5

200

k1122

9:20

廣州

南京

20.0

300

170

按任意鍵回主菜單......3)查詢火車票記錄

輸入:3

輸出:

查詢子菜單

============================================================================

1.按班次號(hào)查詢

2.按終點(diǎn)站查詢

3.返回主菜單

============================================================================

請(qǐng)選擇你所需要的功能:

輸入:1

輸出:請(qǐng)輸入班次號(hào):

輸入:k1111

輸出:

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k1111

8:30

南京

上海

4.0

300

200

按任意鍵回主菜單......輸入:2

輸出:請(qǐng)輸入終點(diǎn)站的名稱:

輸入:上海

輸出:

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k1111

8:30

南京

上海

4.0

300

200

t2222

12:40

長(zhǎng)沙

上海

9.0

250

按任意鍵回主菜單......4)刪除火車票數(shù)據(jù)

輸入:4

輸出:查詢子菜單

============================================================================

1.按班次號(hào)查詢

2.按終點(diǎn)站查詢

3.返回主菜單

============================================================================

請(qǐng)選擇你所需要的功能:

(查找過(guò)程同上)

輸出:請(qǐng)輸入要?jiǎng)h除的班次:

輸入:t2222

輸出:刪除成功

按任意鍵回主菜單......5)按行車時(shí)間排序:

輸入:5

輸出:

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k2323

13:50

揚(yáng)州

南京

1.5

200

k1234

10:20

上海

蘇州

2.0

200

k1111

8:30

南京

上海

4.0

300

200

t2222

12:40

長(zhǎng)沙

上海

9.0

250

k1122

9:20

廣州

南京

20.0

300

170

按任意鍵回主菜單......6)售票

輸入:6

輸出:

訂票與退票菜單

===================================================

1.訂票

2.退票

3.返回主菜單

==================================================

選擇你需要的功能:

輸入:1

輸出:

查詢子菜單

========================================================================

1.按班次號(hào)查詢

2.按終點(diǎn)站查詢

3.返回主菜單

=========================================================================

請(qǐng)選擇你所需要的功能:

(查詢過(guò)程同上)

輸出:請(qǐng)輸入需要訂購(gòu)的車票班次

輸入:k1111

輸出:請(qǐng)輸入要訂購(gòu)的車票張數(shù)

輸入:10

輸出:

您的訂票成功,請(qǐng)按時(shí)上車,謝謝使用!

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k1111

8:30

南京

上海

4.0

300

210

7)退票

輸入:6

輸出:

訂票與退票菜單

===================================================

1.訂票

2.退票

3.返回主菜單

==================================================

選擇你需要的功能:

輸入:2

輸出:

查詢子菜單

========================================================================

1.按班次號(hào)查詢

2.按終點(diǎn)站查詢

3.返回主菜單

=========================================================================

請(qǐng)選擇你所需要的功能:

(查詢過(guò)程同上)

輸出:請(qǐng)輸入需要退購(gòu)的車票班次

輸入:k1111

輸出:請(qǐng)輸入要訂購(gòu)的車票張數(shù)

輸入:5

退訂車票成功,謝謝使用!

班次

發(fā)車時(shí)間

起點(diǎn)

終點(diǎn)

行車時(shí)間(小時(shí))

額定載量

已定票人數(shù)

k1111

8:30

南京

上海

4.0

300

195

8)退出

輸入:7

輸出:****************謝謝使用本系統(tǒng),歡迎下次繼續(xù)使用****************

結(jié)果分析:(1).若輸入數(shù)字不在1——7之間,則會(huì)提示錯(cuò)誤。

(2).當(dāng)輸入列車班次信息不正確時(shí),將不會(huì)得到結(jié)果。

(3).文件錄入不正確時(shí),將不會(huì)得到任何結(jié)果。

六、調(diào)試過(guò)程中的問(wèn)題

1)文件存儲(chǔ)方式不正確:應(yīng)先定義一個(gè)文件存儲(chǔ)函數(shù),在其它函數(shù)中調(diào)用,方便有效。

2)刪除時(shí)若遇到?jīng)]有的班次則程序出錯(cuò)。應(yīng)在不存在輸入的列車班次時(shí),輸出不存在的提示

3)保存后在下次運(yùn)行時(shí)出錯(cuò)問(wèn)題:在保存信息時(shí),應(yīng)在每個(gè)信息之間加一空格來(lái)保存,否則在文件下次使用時(shí)讀取就會(huì)沒(méi)有分界點(diǎn)。

4)訂票退票只能一次一張。應(yīng)在用戶輸入列車班次后讓用戶輸入需要訂購(gòu)的張數(shù)。

5)結(jié)構(gòu)指針定義錯(cuò)誤,ticket前不應(yīng)加struct。

第五篇:火車票管理系統(tǒng)可行性報(bào)告(本站推薦)

火車票管理系統(tǒng)可行性報(bào)告

一.引言

學(xué)習(xí)《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程必須重視實(shí)踐環(huán)節(jié),即通過(guò)C#結(jié)合實(shí)際需求開發(fā)應(yīng)用程序。本次課程實(shí)習(xí)選擇使用C#開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,它能將所學(xué)的C#整合SQL Server數(shù)據(jù)庫(kù)知識(shí),形成與應(yīng)實(shí)際緊密結(jié)合的連貫整體,進(jìn)一步加深學(xué)生對(duì)C#基礎(chǔ)語(yǔ)法的理解,加強(qiáng)對(duì)WinForms編程的認(rèn)識(shí),提高應(yīng)用ADO.NET這一.NET中數(shù)據(jù)庫(kù)驅(qū)動(dòng)解決方案核心技術(shù)的能力,為將來(lái)的軟件設(shè)計(jì)工作打下一定的基礎(chǔ)。

該課程的實(shí)習(xí)主要是鍛煉學(xué)生的實(shí)際動(dòng)手與操作的能力,充分實(shí)現(xiàn)理論與實(shí)踐相結(jié)合,從而培養(yǎng)出優(yōu)秀的學(xué)生!

1.摘要

系統(tǒng)名稱: 火車票管理系統(tǒng)

系統(tǒng)功能: 實(shí)現(xiàn)管理員對(duì)系統(tǒng)的增刪改查等一系列的功能,讓客戶可以訂票、退票等,該系統(tǒng)只要實(shí)現(xiàn)簡(jiǎn)單的操作功能。

2.背景

揚(yáng)州環(huán)境資源職業(yè)技術(shù)學(xué)院1012網(wǎng)絡(luò)班小組成員在C#面向?qū)ο蟪绦蛟O(shè)計(jì)該課程的實(shí)訓(xùn)周內(nèi)進(jìn)行的課程實(shí)訓(xùn),借此提高學(xué)生的動(dòng)手能力,理論與實(shí)踐相結(jié)合的能力;該系統(tǒng)主要是在Visual Studio C# 2005的基礎(chǔ)上與SQL數(shù)據(jù)庫(kù)相結(jié)合而成的面向?qū)ο蟮某绦蛟O(shè)計(jì)系統(tǒng)。

二.系統(tǒng)開發(fā)的背景、必要性及意義

1.現(xiàn)行系統(tǒng)調(diào)查研究

(1)組織機(jī)構(gòu):揚(yáng)州環(huán)境資源職業(yè)技術(shù)學(xué)院 1012網(wǎng)絡(luò)班;指導(dǎo)老師:陳彥(2)實(shí)訓(xùn)時(shí)間:2011年12月26日至2012年1月6日

(3)小組成員:徐濤平(組長(zhǎng))、,孫淑茵、孫垚垚、,夏盼盼、,柏銘慧、,華飛龍、,陳龍、,顧漢明

(4)成員任務(wù):徐濤平、,孫垚垚、,夏盼盼、,柏銘慧、,華飛龍、,陳龍、,顧漢明負(fù)責(zé)系統(tǒng)相關(guān)文檔的編寫;,柏銘慧負(fù)責(zé)前期的數(shù)據(jù)庫(kù)設(shè)計(jì);孫淑茵負(fù)責(zé)設(shè)計(jì)后期與系統(tǒng)相連接的數(shù)據(jù)庫(kù)DB的設(shè)計(jì),并負(fù)責(zé)系統(tǒng)的編碼編寫。

(5)計(jì)算機(jī)應(yīng)用情況:臺(tái)式機(jī)裝有Visual Studio C# 2005和SQL數(shù)據(jù)庫(kù) 2.需求調(diào)查和分析

對(duì)于現(xiàn)在網(wǎng)絡(luò)的迅速發(fā)展,人們?cè)絹?lái)越關(guān)注網(wǎng)絡(luò)。人們?cè)诰W(wǎng)絡(luò)上進(jìn)行交易,購(gòu)物,訂餐等。在網(wǎng)上進(jìn)行訂票也越來(lái)越受人們的歡迎。鑒于這種情況,本人孫淑茵想要開發(fā)一個(gè)類似的系統(tǒng),故而有了現(xiàn)在的火車票管理系統(tǒng)。

該系統(tǒng)由于是本人的初次嘗試開發(fā),所以功能比較的簡(jiǎn)單,還存在不足之處。

三.可行性分析

1.系統(tǒng)運(yùn)行可行性分析 該系統(tǒng)只需要一臺(tái)裝有Visual Studio C# 2005和SQL數(shù)據(jù)庫(kù)的的電腦就可以進(jìn)行運(yùn)行,對(duì)于企業(yè)來(lái)說(shuō),這是最簡(jiǎn)單的、最實(shí)用的系統(tǒng)了;對(duì)于人員來(lái)說(shuō),不需要花費(fèi)大量的金錢進(jìn)行人員的培訓(xùn),只需要招聘一個(gè)相關(guān)專業(yè)的計(jì)算機(jī)人員,就可以對(duì)系統(tǒng)進(jìn)行操作。2.技術(shù)可行性

火車票管理系統(tǒng)功能簡(jiǎn)單,對(duì)人員要求以及技術(shù)要求不高,在這方面,只需要一個(gè)計(jì)算機(jī)相關(guān)專業(yè)的人員就可以操作系統(tǒng),在技術(shù)上完全可以進(jìn)行。3.經(jīng)濟(jì)可行性

在經(jīng)濟(jì)上,不需要額外的費(fèi)用,只需要付費(fèi)開發(fā)人員即可,可以說(shuō)是一勞永逸,在后期,不需要企業(yè)花費(fèi)費(fèi)用,只需要技術(shù)人員進(jìn)行定期的維護(hù)即可,在經(jīng)濟(jì)上完全可行。

四.系統(tǒng)功能簡(jiǎn)單介紹

1.數(shù)據(jù)庫(kù)

火車票管理系統(tǒng)連接的數(shù)據(jù)庫(kù)主要是SQL數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的名稱為DB.mdb,它包括了Stype表、Train表和UserInfo表三張表,由于時(shí)間匆忙,所以只有這三張表,進(jìn)而組成與系統(tǒng)相連接的數(shù)據(jù)庫(kù)。詳見下圖4.1

圖4.1 2.系統(tǒng)功能介紹

火車票管理系統(tǒng)功能比較簡(jiǎn)單,管理員可以對(duì)系統(tǒng)進(jìn)行增刪改查,而一般的瀏覽者就可以對(duì)系統(tǒng)進(jìn)行相應(yīng)的查票、訂票、退票操作,而不能像管理員那樣對(duì)系統(tǒng)進(jìn)行增刪改查等操作,從而保證了系統(tǒng)的安全性。下圖是系統(tǒng)的相關(guān)截圖,如圖4.2、4.3所示:

圖4.2

圖4.3 五.結(jié)論

在2011年12月26日至2012年1月6日實(shí)訓(xùn)期間,小組成員團(tuán)結(jié)協(xié)作,共同努力,完成了火車票管理系統(tǒng)的開發(fā),在這個(gè)過(guò)程中每個(gè)成員的努力都市值得褒獎(jiǎng)的,尤其是負(fù)責(zé)代碼編寫的孫淑茵為我們的系統(tǒng)完成與完善更是值得獎(jiǎng)勵(lì)的。

火車票管理系統(tǒng)功能簡(jiǎn)單,實(shí)現(xiàn)方便,但也耗費(fèi)了人力物力與心力,能在短時(shí)間內(nèi)開發(fā)出這樣一個(gè)的系統(tǒng),我們的努力是值得肯定的,但是這個(gè)系統(tǒng)還存在著不足之處,有望在以后的日子里,對(duì)系統(tǒng)進(jìn)行改善和維護(hù)。

六.說(shuō)明

在這里,對(duì)相關(guān)的問(wèn)題做一些說(shuō)明:

1.我們是軟件技術(shù)基礎(chǔ)實(shí)訓(xùn)和C#課程實(shí)訓(xùn)前后進(jìn)行的,軟件技術(shù)基礎(chǔ)實(shí)訓(xùn)在前,分組也是在軟件技術(shù)基礎(chǔ)實(shí)訓(xùn)期間分的,相關(guān)的文檔也是在此期間完成的,代碼也是在此期間編寫完成,只是比較不完善,而且在軟件技術(shù)基礎(chǔ)實(shí)訓(xùn)期間小組成員負(fù)責(zé)前期數(shù)據(jù)庫(kù)設(shè)計(jì)出的數(shù)據(jù)庫(kù)并不能用,都是中文,并且表與表之間沒(méi)有相關(guān)的聯(lián)系,所以負(fù)責(zé)代碼編寫的孫淑茵就自己設(shè)計(jì)了一個(gè)數(shù)據(jù)庫(kù)DB。

2.在后來(lái)的C#實(shí)訓(xùn)期間,小組成員孫淑茵自己對(duì)軟件技術(shù)基礎(chǔ)實(shí)訓(xùn)期間不完善的火車票管理系統(tǒng)進(jìn)行了改進(jìn),在陳彥老師的指導(dǎo)下,才有了后來(lái)的完善的火車票管理系統(tǒng),可以說(shuō)這個(gè)火車票管理系統(tǒng)是孫淑茵同學(xué)的私有產(chǎn)物,與小組其他成員關(guān)系不大,在此說(shuō)明一下。

下載火車票訂票管理系統(tǒng)++設(shè)計(jì)報(bào)告word格式文檔
下載火車票訂票管理系統(tǒng)++設(shè)計(jì)報(bào)告.doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    火車訂票管理系統(tǒng)

    學(xué)號(hào)11~15 選題三:火車票訂票管理系統(tǒng) 1. 基本要求:為方便管理火車票購(gòu)買信息,編寫一個(gè)火車票訂票管理系統(tǒng)軟件。系統(tǒng)記錄必須包括訂票人姓名、訂票人身份證號(hào)、始發(fā)站、終到站......

    12306火車票網(wǎng)上訂票須知

    12306火車票網(wǎng)上訂票須知 1. 用戶注冊(cè) 1.1 中國(guó)鐵路客戶服務(wù)中心12306.cn網(wǎng)站(www.tmdps.cn,以下簡(jiǎn)稱“12306.cn網(wǎng)站”)只對(duì)注冊(cè)用戶提供網(wǎng)上購(gòu)買火車票服務(wù)(以下簡(jiǎn)稱“購(gòu)......

    2014年 火車票電話訂票流程

    2014年 電話訂票流程 區(qū)號(hào)+ 95105105 訂票1 普通列車4------其他請(qǐng)聽提示 按車次訂票1 四位日期0129---1月29日 車次訂票1234#---車次+# 選擇普快1 發(fā)車站XXX按提示期間會(huì)有......

    火車票電話和網(wǎng)絡(luò)訂票流程匯總(合集五篇)

    火車票電話和網(wǎng)絡(luò)訂票流程匯總 火車票-電話訂票流程 一、撥打訂票電話95105105 二、語(yǔ)音提示:訂票請(qǐng)按1 三、訂票須知按1,訂動(dòng)車高鐵直達(dá)車按2,訂普通列車按4,訂學(xué)生票按6 四、......

    火車票網(wǎng)上訂票社會(huì)實(shí)踐個(gè)人總結(jié)

    火車票網(wǎng)上訂票 學(xué)院: 班級(jí): 學(xué)號(hào): 姓名: 摘 要:關(guān)于火車票網(wǎng)上訂票政策的出臺(tái),歷經(jīng)波折。在火車票網(wǎng)上訂購(gòu)政策出臺(tái)前后,就引起了社會(huì)各方面的廣泛關(guān)注,對(duì)這一政策的制定,在網(wǎng)上就......

    火車票電話訂票菜單語(yǔ)音提示

    火車票電話訂票菜單語(yǔ)音提示 1. 撥95105105電話訂票客服號(hào),按①進(jìn)入訂票流程,按②取消訂單,按③查詢信息。 2. 訂票須知按①,訂動(dòng)車組、直達(dá)車、高鐵車票按②,普通車車票按④,學(xué)生......

    火車訂票管理系統(tǒng)主程序流程

    程序簡(jiǎn)介 此程序是采用多文件模塊化形式編寫;其中自定義頭文件中包括了程序中所有調(diào)用的函數(shù)的聲明,以及需要的所有系統(tǒng)頭文件。 #include #include #include #include #i......

    航空客運(yùn)訂票系統(tǒng)實(shí)習(xí)報(bào)告[推薦]

    課 程 設(shè) 計(jì) 課程名稱 數(shù)據(jù)結(jié)構(gòu) 題目名稱____航空客運(yùn)訂票系統(tǒng) 學(xué)生學(xué)院 計(jì)算機(jī)學(xué)院 專業(yè)班級(jí) 07級(jí)軟件工程班 學(xué) 號(hào)3107006755 學(xué)生姓名 伍健聰 指導(dǎo)教師 溫雪蓮 2009......

主站蜘蛛池模板: 精品高潮呻吟99av无码视频| 成人美女黄网站色大免费的| 无码人妻丰满熟妇区10p| 免费国产黄网站在线观看动图| 蜜桃av精品一区二区三区| 少妇高潮太爽了在线观看| 亚洲国产精品一区二区第一页| 欧美成人精精品一区二区三区| av无码一区二区大桥未久| 中文字幕无码成人免费视频| 亚洲国产欧美在线人成| 国产精品乱子伦xxxx| 日韩人妻不卡一区二区三区| 人妻聚色窝窝人体www一区| 少妇高潮喷水久久久久久久久久| 久久中文字幕人妻av熟女| 亚洲精品中文字幕| 牲交欧美兽交欧美| 日日人人爽人人爽人人片av| 粉嫩小泬视频无码视频软件| 色天天躁夜夜躁天干天干| 大战丰满无码人妻50p| 乌克兰少妇xxxx做受6| 亚洲色欲或者高潮影院| 国产精品无打码在线播放| 亚洲国产v高清在线观看| 欧美专区日韩视频人妻| 午夜无码国产理论在线| 999久久久国产精品| 国产最新av在线播放不卡| 国产精品亚洲一区二区三区| 久久99精品久久久久麻豆| 狠狠色丁香婷婷综合尤物| 老子午夜精品无码不卡| 亚洲精品久久yy5099| 色一情一乱一乱一区99av| 无码人妻一区二区三区兔费| 特级毛片a级毛片100免费播放| 极品老师腿张开粉嫩小泬| 无码不卡av东京热毛片| 中文字幕精品无码|