數(shù)據(jù)庫課程設(shè)計報告火車訂票系統(tǒng)_第1頁
數(shù)據(jù)庫課程設(shè)計報告火車訂票系統(tǒng)_第2頁
數(shù)據(jù)庫課程設(shè)計報告火車訂票系統(tǒng)_第3頁
數(shù)據(jù)庫課程設(shè)計報告火車訂票系統(tǒng)_第4頁
數(shù)據(jù)庫課程設(shè)計報告火車訂票系統(tǒng)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、需求分析在構(gòu)造系統(tǒng)時,首先從需求出發(fā)構(gòu)造數(shù)據(jù)庫表,然后再由數(shù)據(jù)庫表結(jié)合需求劃分系統(tǒng)功能模塊。這樣,就把一個大的系統(tǒng)分解成了幾個小系統(tǒng),使整個系統(tǒng)的功能更加詳細易于理解,同時易于實現(xiàn)系統(tǒng)的整體設(shè)計。本系統(tǒng)分為車次查詢和車票預(yù)定兩個部分,其所能實現(xiàn)的功能:1、 實現(xiàn)對車次基本信息的查詢。2、 實現(xiàn)售票的基本操作。1、業(yè)務(wù)需求分析從實際角度出發(fā),提供方便快捷的火車站站查詢和訂票服務(wù),提高車次的編組效率,使車次資源得到充分利用,并可以提高車票的出售效率降低工作人員的工作量。2.功能需求 在數(shù)據(jù)操作界面需要有車次信息操作窗口,這需要有實現(xiàn)車次查詢、車票出售的功能。這是火車訂票系統(tǒng)的基本功能,只有實現(xiàn)

2、了這幾個功能一個火車訂票系統(tǒng)才能開始運作,在本系統(tǒng)中實現(xiàn)了車票的基本信息操作。 功能列表編號 功能名稱 功能說明1、1車次查詢對車次基本信息的查詢2、1售票對車票銷售/預(yù)定的操作3、數(shù)據(jù)需求系統(tǒng)處理的對象有:城市信息:城市編號、城市名稱。車次信息:列車區(qū)間編號、車次號、起始站、目的站、出發(fā)時間、到站時間。座位信息:列車區(qū)間編號、日期、車廂號、座位號。 系統(tǒng)總數(shù)據(jù)流圖用戶系統(tǒng)車次信息系統(tǒng)站站查詢、車票預(yù)定城市、火車和座位信息數(shù)據(jù)字典數(shù)據(jù)項編號數(shù)據(jù)項名數(shù)據(jù)項含義存儲結(jié)構(gòu)IDC-1TrainID車次號Char(255)IDC-2CityID城市名Char(255)IDC-3TrainInterval

3、ID列車區(qū)間號Int(10)IDC-4Start起始站Int(10)IDC-5End目的站Int(10)IDC-6Starttime發(fā)車時間Char(255)IDC-7Arrivetime到站時間Char(255)IDC-8Date日期Char(255)IDC-9CarNo車廂號Int(10)IDC-10SeatNo座位號Int(10)二、概要設(shè)計(一)、系統(tǒng)組成系統(tǒng)開發(fā)的總體目標(biāo)是實現(xiàn)火車票訂/售票管理的系統(tǒng)化和自動化,保證車票售出和車次信息管理的正確無誤,確保車票和車次管理的有效。在本系統(tǒng)中分為兩個部分,分別是車次信息功能部分和車票預(yù)定功能部分,主要任務(wù)是對車次信息、車票信息等操作及外理。

4、本系統(tǒng)為C/S結(jié)構(gòu),運行平臺為jdk1.6以上版本,以及MySQL6.0以上版本。下圖為系統(tǒng)結(jié)構(gòu)圖: 系統(tǒng)框架火車訂票系統(tǒng)車票預(yù)定或出售車次查詢(二)、數(shù)據(jù)庫設(shè)計1、概念結(jié)構(gòu)設(shè)計概念設(shè)計階段主要是將需求分析階段得到的用戶需求抽象為信息結(jié)構(gòu)(概念模型)的過程。根據(jù)之前的分析,數(shù)據(jù)庫應(yīng)該主要的實體有列車區(qū)間和車票信息。經(jīng)過分析得到的實體關(guān)系圖如下車票列車區(qū)間號日期車廂號座位號列車區(qū)間列車區(qū)間號起始站目的站車次號到站時間發(fā)車時間 實體關(guān)系圖2、邏輯結(jié)構(gòu)設(shè)計將E-R圖轉(zhuǎn)化為關(guān)系模式:在設(shè)計時,將一個1:n聯(lián)系的單方主碼加至多方。一個實體單獨轉(zhuǎn)化成一張表。根據(jù)設(shè)計原則和以上E-R圖,轉(zhuǎn)化為以下兩張表:列

5、車區(qū)間表:TrainInterval(列車區(qū)間號 、車次號、起始站、目的站、發(fā)車時間、到站時間)車票表:ticket(列車區(qū)間號、日期、車廂號、座位號)3、數(shù)據(jù)庫模式定義列車區(qū)間表 列名 數(shù)據(jù)類型 取值約束 可否為空 說明TrainIntervalID Int(10) 不可 列車區(qū)間號StartInt(10) 不可 起始站End Int(10)不可 目的站Starttime Char(30) 可 發(fā)車時間Arrivetime Char(30) 可 到站時間TrainID Money(8) 可 車次號車票表 列名 數(shù)據(jù)類型 取值約束 可否為空 說明TrainIntervalID Int(10)

6、不可 列車區(qū)間號DateChar(255) 不可 日期CarNo Int(10)不可 車廂號SeatNo Int(10) 不可 座位號三、數(shù)據(jù)庫實施階段數(shù)據(jù)庫的建立是直接在Navicat中建的,數(shù)據(jù)庫中的表清單在之前已經(jīng)列出。在JFrame界面建立數(shù)據(jù)庫不同功能模塊的操作對話框,并對所有對話框中的控件按鈕進行設(shè)定,添加成員函數(shù),使得數(shù)據(jù)庫的程序框架確定下來。接著是對成員函數(shù)進行補充使程序能順利運行并能連上數(shù)據(jù)庫,對連接模塊進行補充設(shè)定,使得基本權(quán)限確定。在數(shù)據(jù)庫建立過程中通過索引實現(xiàn)了對表的快捷查詢。連接數(shù)據(jù)庫時要注意程序中數(shù)據(jù)庫各項屬性的定義描述,避免其與數(shù)據(jù)庫表中的屬性值產(chǎn)生差異。四、詳細

7、設(shè)計1、模塊簡述本火車訂票管理系統(tǒng)主要的所有模塊主要是分為數(shù)據(jù)庫連接查詢模塊、網(wǎng)絡(luò)連接模塊、線程管理模塊的三個部分,下面對三個個部分進行再分類,共有7個模塊。模塊類別 模塊編號 模塊名稱公共模塊模塊功能網(wǎng)絡(luò)連接T1Net.ClientPackets用戶封包處理T2Net.ServerPackets系統(tǒng)封包處理線程管理T3ServerThread系統(tǒng)監(jiān)聽線程T4ClientThread用戶連入線程數(shù)據(jù)庫查詢T5CityTable城市信息查詢T6TrainIntervalTable列車區(qū)間查詢T7SeatTable車票預(yù)定功能2、模塊設(shè)計下面給出模塊的背景,設(shè)計思路,算法,界面以及關(guān)鍵代碼,比較簡

8、單的模塊就僅給界面設(shè)計以及算法設(shè)計,比較復(fù)雜的模塊會給出相應(yīng)的數(shù)據(jù)庫有關(guān)觸發(fā)器,存儲過程和視圖的設(shè)計。而本系統(tǒng)重的模塊主要有一下幾個:1、 數(shù)據(jù)庫查詢模塊此模塊提供系統(tǒng)與數(shù)據(jù)庫的數(shù)據(jù)交換,包括從數(shù)據(jù)庫中讀入城市信息、列車區(qū)間信息和座位信息,并在用戶線程連接的時候提供城市列表;在查詢車次信息時從列車區(qū)間中搜索出所有滿足條件的列車信息;在訂票時首先判斷是否在兩個城市之間的所有列車區(qū)間上都有同樣的座位是空著的,暫時不能提供拼票功能。a. 城市信息查詢 當(dāng)一個用戶線程連接被建立的時候,系統(tǒng)將預(yù)設(shè)在數(shù)據(jù)庫中的城市信息發(fā)送到用戶端,保證用戶輸入的城市是系統(tǒng)可識別的。在之后的C/S通信中城市將用其編號代替。

9、public class CityTable private static CityTable _instance = null;private ArrayList<City> _cityList = new ArrayList<City>();private HashMap<String, City> _cityMap = new HashMap<String, City>();private CityTable() public static CityTable getInstance() public ArrayList<City&g

10、t; getCityList() public int getCityNum() public City getCityByName(String name) b. 列車區(qū)間查詢提供簡單的站站查詢功能。并為訂票功能模塊提供專門的列車區(qū)間查詢功能。public class TrainIntervalTable private static TrainIntervalTable _instance = null;private ArrayList<TrainInterval> _trainIntervalList = new ArrayList<TrainInterval>

11、();private ArrayList<TrainInterval> _startList = new ArrayList<TrainInterval>();private ArrayList<TrainInterval> _endList = new ArrayList<TrainInterval>();private TrainIntervalTable() public static TrainIntervalTable getInstance() public synchronized ArrayList<TrainInterva

12、l> getTrain(int start, int end, int mask) / used in SeatTable.bookSeatpublic ArrayList<TrainInterval> getTrainIntervalList(int start, int end, String trainID) c. 座位信息查詢提供訂票功能,自動判斷是不是存在這樣一個座位:它在起始站和目標(biāo)站之間的所有列車區(qū)間上都沒有被占用。如果有,返回一個座位信息,并在數(shù)據(jù)庫中添加訂票信息。否則返回一個不存在的座位。public class SeatTable private stat

13、ic SeatTable _instance = null;private boolean isTaken = new Boolean Config.TRAIN_CAR_NUM Config.TRAIN_SEAT_NUM ;private SeatTable() public static SeatTable getInstance() public synchronized Seat bookSeat(int start, int end, String trainID, String date) 2、 網(wǎng)絡(luò)連接模塊使用Socket連接。提供封包處理類(PacketHandler),根據(jù)不同

14、的封包編號交與對應(yīng)的用戶封包處理類(ClientPacket)處理,并向發(fā)送用戶封包的用戶線程發(fā)送處理結(jié)果的系統(tǒng)封包類(ServerPacket)作為回應(yīng)。a. PacketHandler:封包分類器public class PacketHandler private ClientThread _client;public PacketHandler(ClientThread client) public void handlePacket(byte data) int opcode = data0 & 0xFF;switch(opcode) default:b. ClientPack

15、et:用戶封包處理父類ClientBasePacket,包含從socket管道中讀取各類型數(shù)據(jù)的方法。詳見代碼。c. ServerPacket:處理結(jié)果封包父類ServerBasePacket,提供往socket管道中寫入各類型數(shù)據(jù)的方法。詳見代碼。3、 線程管理模塊提供線程的管理和各類基本操作。a. 線程池GeneralThreadPool線程的創(chuàng)建和管理類,使用java標(biāo)準(zhǔn)線程池。實際上在本系統(tǒng)中幾乎沒有用到此類的功能。b. ServerThread唯一的一個系統(tǒng)線程,用于端口監(jiān)聽。當(dāng)出現(xiàn)新的socket連接時,為它建立一個單獨的用戶線程。public class ServerThread

16、 extends Thread private static ServerThread _instance;private ServerSocket _serverSocket;private ServerThread() public static ServerThread getInstance() public void initialize() throws Exception Overridepublic void run() while (true) try /監(jiān)聽端口,創(chuàng)建用戶線程 catch (IOException e) c. ClientThread被ServerThread創(chuàng)建的用戶線程,對應(yīng)于一個socket連接,在各自的用戶線程中處理查詢和訂票的功能。public class ClientThread implements Runnableprivate Socket _socket;private InputStream _in;private OutputStream _out;private PacketHandler _handler;publ

溫馨提示

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

評論

0/150

提交評論