2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計說明書</b></p><p>  課程名稱:_數(shù)據(jù)庫課程設計 </p><p>  題 目: 火車站售票系統(tǒng) </p><p>  院 系: 理學院 </p><p>  專業(yè)班級: 信計 11-2

2、 </p><p>  2014年 月 日</p><p>  課程設計(論文)任務書</p><p>  理學院 院系 信計 教研室</p><p>  年 月 日 </p><p><b>

3、;  目 錄</b></p><p><b>  摘要I</b></p><p><b>  第1章 緒論</b></p><p>  1.1 項目背景1</p><p>  1.2 編寫目的1</p><p>  1.3 開發(fā)環(huán)境1</p>

4、;<p>  1.3.1 硬件環(huán)境1</p><p>  1.3.2 軟件環(huán)境1</p><p>  第2章 系統(tǒng)功能介紹3</p><p>  2.1 系統(tǒng)功能總框圖3</p><p>  2.2 模塊功能介紹3</p><p>  2.2.1 系統(tǒng)登錄3</p><p&

5、gt;  2.2.2 管理員登錄4</p><p>  2.2.3 普通用戶登錄4</p><p>  2.3組內(nèi)任務分工5</p><p>  第3章 數(shù)據(jù)庫設計5</p><p>  3.1 數(shù)據(jù)庫需求分析5</p><p>  3.2 數(shù)據(jù)流圖5</p><p>  3.3 數(shù)

6、據(jù)庫概念結構設計6</p><p>  3.4 數(shù)據(jù)庫表的設計8</p><p>  第4章 系統(tǒng)功能實現(xiàn)10</p><p>  4.1普通用戶登錄10</p><p>  4.1.1 查詢10</p><p>  4.1.2 售票17</p><p><b>  結論

7、22</b></p><p><b>  參考文獻23</b></p><p>  摘要:隨著Internet和Intranet技術的發(fā)展,人們對網(wǎng)絡信息的需求越來越大,對網(wǎng)絡數(shù)據(jù)庫的交互和查詢速度等性能的要求也越來越高。未來火車站的發(fā)展趨勢是完全自動化的售票信息查詢,網(wǎng)絡訂票,智能化訂票,而且隨著計算機的普及,信息處理量的逐漸擴大,手工處理方式已經(jīng)遠遠

8、不能滿足人們管理活動的需要,各種工作都逐漸由手工轉(zhuǎn)為自動化,將使許多復雜、繁瑣、且需要很多人力的工作變得簡單?;疖囌臼燮惫芾硎潜鞠到y(tǒng)的根本任務,通過實現(xiàn)票務信息的計算機管理,以提高工作效率。實現(xiàn)計算機管理的最佳技術就是數(shù)據(jù)庫技術。我們可以利用數(shù)據(jù)庫將整個火車站的票務情況存入計算機,再配置上功能豐富的用戶接口,以滿足用戶需求。</p><p>  基于這樣的背景并考慮到一定的實際意義及于我們將實踐與理論結合起來,我

9、們組在這次課設中選擇了“火車售票管理系統(tǒng)”。在這次課設中我們使用Java技術來開發(fā)該火車票管理系統(tǒng)。因而在本報告中介紹了系統(tǒng)的開發(fā)環(huán)境以及開發(fā)工具,對Java在系統(tǒng)上的應用設計思想做了一個全面的敘述,對于系統(tǒng)中數(shù)據(jù)庫中的數(shù)據(jù)表之間的具體關聯(lián)等方面也做出了詳細說明,并且具體講述了系統(tǒng)各個功能模塊的設計以及實現(xiàn)過程。</p><p>  關鍵詞: 火車售票管理系統(tǒng) Java技術 網(wǎng)絡數(shù)據(jù)庫</p>&

10、lt;p>  Summary:With the development of Internet and Intranet technology, people demand more and more information on the network , such as query speed of interaction and performance of the network databases are increas

11、ingly high requirements . Future trends railway station is fully automated ticketing information inquiries, booking network , intelligent ticketing , and with the gradual expansion of the popularity of information-proces

12、sing capacity of the computer , manual processing methods have been fa</p><p>  Based on this background and taking into account certain practical significance and in our practice and theory will combine a l

13、esson for us in this group , select the " train ticket management system ." In this lesson we set up to develop the use of Java technology in the ticket management system. Thus in the present report describes t

14、he system development environment as well as development tools for Java applications on the system 's design philosophy has made a comprehensive narrative, related</p><p>  Keywords :train ticketing Java

15、 technology network database management system</p><p><b>  1 緒論</b></p><p><b>  1.1項目背景</b></p><p>  信息社會的高科技,商品經(jīng)濟的高效益,使計算機的應用普及到經(jīng)濟和社會生活的各個領域。計算機與人類的關系愈來愈密切,

16、計算機操作為人們帶了越來越多的便利。為了適應現(xiàn)代社會人們高度強烈的時間觀念,火車票管理系統(tǒng)將會為人們帶來極大的方便。</p><p>  在火車大力普及的今天,一個火車站售票信息管理系統(tǒng)應達到的目標是提供及時、廣泛的信息服務,加快信息檢索的效率,實況靈活的查詢,減輕管理人員制作報表和統(tǒng)計分析的負擔,且系統(tǒng)規(guī)模不太大但又要保證支持日常工作的要求,以便系統(tǒng)應易于擴充,方便日后統(tǒng)一聯(lián)網(wǎng)與管理,提高管理水平。根據(jù)以上的設

17、計目標和要求,本設計用Java編程語言結合微軟的Access數(shù)據(jù)庫進行開發(fā),主要完成查詢、售票、及對票務和用戶進行管理等功能。其實火車售票系統(tǒng)用計算機管理火車站票務信息的一種計算機應用技術的創(chuàng)新,在計算機還未普及之前售票業(yè)務都是由工作人員人工完成的、查詢方式來操作的?,F(xiàn)在一般的車站售票業(yè)務都采用計算機智能化管理,采用計算機作為工具的實用的計算機訂單管理程序來幫助前臺管理員進行更有效的車票業(yè)務查詢,出售管理工作?;疖囀燮惫芾硐到y(tǒng)是典型的信

18、息管理系統(tǒng)(MIS):其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。 經(jīng)過分析:我們使用Java編程語言開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,尤其</p><p><b>  1.2編寫目的</b></p><p>  電腦的漸漸普及

19、,以及互聯(lián)網(wǎng)所容納的信息量大、內(nèi)容豐富、信息及時、準確,更有相關信息的全面介紹與比較。為了人們在火車站購買車票以及售票員對車票的、管理、查詢以及相應的操作變的簡單,開發(fā)這樣一個火車票管理系統(tǒng)成為很有必要的事情。</p><p><b>  1.3 開發(fā)環(huán)境</b></p><p>  1.3.1 硬件環(huán)境</p><p><b>  

20、PC機。</b></p><p>  1.3.2 軟件環(huán)境</p><p>  ⑴ 操作系統(tǒng):Windows XP</p><p> ?、?開發(fā)工具:Eclipse</p><p>  Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),</p><p>  但是目前亦有

21、人通過插件使其作為C++、Python、PHP等其他語言的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持,使得Eclipse擁有較佳的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。</p><p>  Eclipse采用的技術是IBM公司開發(fā)的(SWT),這是一種基于Java的窗口組件,類似Java本身提供的AWT和Swing窗口組件;不過IBM聲稱SWT比其他Java窗口組件

22、更有效率。Eclipse的用戶界面還使用了GUI中間層JFace,從而簡化了基于SWT的應用程序的構建。</p><p>  Eclipse的設計思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本內(nèi)核包括:圖形API (SWT/Jface), Java開發(fā)環(huán)境插件(JDT),插件開發(fā)環(huán)境(PDE)等。</p><p>  

23、⑶ 數(shù)據(jù)庫:Microsoft Access2003</p><p>  Access 是微軟公司推出的基于Windows的桌面關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),是Office系列應用軟件之一。它提供了表、查詢、窗體、報表、頁、宏、模塊7種用來建立數(shù)據(jù)庫系統(tǒng)的對象;提供了多種向?qū)?、生成器、模板,把?shù)據(jù)存儲、數(shù)據(jù)查詢、界面設計、報表生成等操作規(guī)范化;為建立功能完善的數(shù)據(jù)庫管理系統(tǒng)提供了方便,也使得普通用戶不必編寫代

24、碼,就可以完成大部分數(shù)據(jù)管理的任務。 </p><p>  Access是一種關系型數(shù)據(jù)庫管理系統(tǒng),其主要特點如下: </p><p>  1) 存儲方式單一 </p><p>  Access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為(.mdb)的數(shù)據(jù)庫文件種,便于用戶的操作和管理。 </p><p><b

25、>  2) 面向?qū)ο?</b></p><p>  Access是一個面向?qū)ο蟮拈_發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)據(jù)庫系統(tǒng)中的各種功能對象化,將數(shù)據(jù)庫管理的各種功能封裝在各類對象中。它將一個應用系統(tǒng)當作是由一系列對象組成的,對每個對象它都定義一組方法和屬性,以定義該對象的行為和外國,用戶還可以按需要給對象擴展方法和屬性。通過對象的方法、屬性完成數(shù)據(jù)庫的操作和管理,極大地簡化了用戶的開發(fā)工作。同時,

26、這種基于面向?qū)ο蟮拈_發(fā)方式,使得開發(fā)應用程序更為簡便。 </p><p>  3)界面友好、易操作 </p><p>  Access是一個可視化工具,是風格與Windows完全一樣,用戶想要生成對象并應用,只要使用鼠標進行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報表設計器以及數(shù)據(jù)庫向?qū)?、表向?qū)А⒉樵兿驅(qū)?、窗體向?qū)А蟊硐驅(qū)У裙ぞ?,使得操作簡便,容易使用和掌握?<

27、/p><p>  4)集成環(huán)境、處理多種數(shù)據(jù)信息 </p><p>  Access基于Windows操作系統(tǒng)下的集成開發(fā)環(huán)境,該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ?,極大地提高了開發(fā)人員的工作效率,使得建立數(shù)據(jù)庫、創(chuàng)建表、設計用戶界面、設計數(shù)據(jù)查詢、報表打印等可以方便有序地進行。 </p><p>  Access支持ODBC(開發(fā)數(shù)據(jù)庫互連,Open Data Base

28、Connectivity),利用Access強大的DDE(動態(tài)數(shù)據(jù)交換)和OLE(對象的聯(lián)接和嵌入)特性,可以在一個數(shù)據(jù)表中嵌入圖、聲音、Excel表格、Word文檔,還可以建立動態(tài)的數(shù)據(jù)庫報表和窗體等。Access還可以將程序應用于網(wǎng)絡,并與網(wǎng)絡上的動態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫訪問頁對象生成HTML文件,輕松構建Internet/Intranet的應用。</p><p>  第2章 系統(tǒng)功能介紹</p>

29、;<p>  2.1 系統(tǒng)功能總框圖</p><p>  系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務的基礎上完成。根據(jù)系統(tǒng)分析確定的邏輯模型,確定新系統(tǒng)的物理模型,即計算機化信息系統(tǒng)應用軟件的總體結構和數(shù)據(jù)庫設計,并提出系統(tǒng)配置方案,繼而對物理模型進行詳細的設計。主要內(nèi)容有:代碼設計,用戶界面設計,處理過程設計,編寫系統(tǒng)設計說明書。</p><p>  系統(tǒng)設計是以系統(tǒng)分析為基礎,而

30、系統(tǒng)設計又是系統(tǒng)實施的基礎,系統(tǒng)設計的主要任務是代碼設計、物理設計、數(shù)據(jù)庫設計、功能結構圖設計。本火車票管理系統(tǒng)功能包括用戶登錄、用戶信息管理、火車票信息管理、火車票信息查詢等如圖2.1所示。</p><p>  圖2.1 系統(tǒng)功能圖</p><p>  2.2 模塊功能介紹</p><p>  2.2.1 系統(tǒng)登錄</p><p>  火車

31、票管理系統(tǒng)可以分為2種登錄方式登錄系統(tǒng),分別為管理員、普通用戶??紤]到數(shù)據(jù)庫中數(shù)據(jù)的安全性和用戶的權益,該系統(tǒng)采用“用戶標識”和“口令”相結合的數(shù)據(jù)庫安全技術,并通過自動認證用戶的“權限”來判斷用戶應該登陸到的界面。其中管理員使用密碼登錄可以直接登錄到管理系統(tǒng),進行火車票信息和用戶信息進行管理;普通用戶使用密碼登錄到用戶界面,可以在對火車票查詢的基礎上對乘客所要求買的車票信息進行查詢和填寫以及火車票記錄的打印等操作。</p>

32、<p>  2.2.2 管理員登錄</p><p>  管理員是該火車售票系統(tǒng)數(shù)據(jù)的直接管理者,他對該系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)享有所有的權限。針對這一點,管理員管理界面包含了“用戶管理”、“票務管理”以及“系統(tǒng)幫助”三個選項。</p><p><b> ?。?)用戶管理</b></p><p>  用戶管理界面是管理員才能進入的界面,在

33、該窗口中,管理員可以對使用該系統(tǒng)的用戶進行管理,具體包括“查找用戶”、“增加用戶”、“刪除用戶”、“修改用戶”等功能,并將各個子功能的結果顯示在窗口左邊的顯示區(qū)域內(nèi),初次登陸此界面時顯示區(qū)域內(nèi)的信息是所有用戶的信息。通過該模塊的功能,管理員可以很方便的對使用該系統(tǒng)的用戶進行管理。</p><p><b>  (2)票務管理</b></p><p>  顧名思義“票務管

34、理”就是對火車票進行的管理,在此模塊中我們可以進行“所有票數(shù)”、“賣出票數(shù)”等的預覽。運行界面如圖2.2所示。</p><p>  圖2.2“票務管理”窗口</p><p>  2.2.3 普通用戶登錄</p><p>  在這個功能模塊里普通用戶即售票員可以進行火車及或火車票的信息進行查詢及售票。查詢子功能中可以“按車次查詢”,也可以“按車站查詢”;在售票子功能中

35、選擇好車票相關信息后并核對確認好乘客需要次車票后可以可預覽車票信息;如果乘客需要數(shù)據(jù)單,則可以點擊“打印”來打印數(shù)據(jù)單。</p><p><b>  查詢:</b></p><p>  “查詢”功能中的“按車次查詢”和“按車站查詢”思想相差無幾,這里我們重點說明“按車次查詢”。如現(xiàn)在乘客詢問“T1”的火車具體信息及車票信息或者是購買“T1”的車票,售票員便在“火車票”

36、窗口選擇“按車次查詢”,然后在“車次”一欄中輸入“T1”以及選擇好日期以后點擊“查詢”便會出發(fā)相應的查詢事件即將“車次”和“日期”傳遞給查詢語句后將數(shù)據(jù)庫中各個表中的相關信息查詢出來顯示在“火車票”窗口相應的地方,具體包括始發(fā)站、終點站、發(fā)車時間、剩余票數(shù)、單價等信息。</p><p><b>  售票:</b></p><p>  在用戶選定了需要的票之后,點擊確定

37、按鈕之后,會彈出電子票窗口。在購票成功之后,需要對數(shù)據(jù)庫進行更新操作,這就是售票系統(tǒng)的主要功能。</p><p>  2.3 組內(nèi)任務分工</p><p>  表2.1 組內(nèi)任務分工</p><p><b>  第3章 數(shù)據(jù)庫設計</b></p><p>  火車票管理系統(tǒng)是一個數(shù)據(jù)庫應用系統(tǒng),各類數(shù)據(jù)的所有信息都是保存

38、在數(shù)據(jù)庫中。在數(shù)據(jù)庫應用系統(tǒng)的開發(fā)進程中,數(shù)據(jù)庫的結構設計是一個非常重要的問題。我們這里所說的數(shù)據(jù)庫結構設計是指數(shù)據(jù)庫中各個表結構的設計,包括信息保存在哪個表格中,各個表的結構如何以及各個表之間的關系如何等。</p><p>  數(shù)據(jù)庫結構設計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響,好的數(shù)據(jù)庫結構設計會減少數(shù)據(jù)庫的存儲量,數(shù)據(jù)庫的完整性和一致性比較高,系統(tǒng)具有較快的響應速度,簡化基于數(shù)據(jù)庫的應用程序的

39、實現(xiàn)等。</p><p>  由數(shù)據(jù)庫設計的重要性,人們提出了許多數(shù)據(jù)庫結構設計的技術。但是這些設計方法和設計者的工作經(jīng)驗有很大關系。因此要從根本上解決所有數(shù)據(jù)庫結構設計的問題,就需要多實踐,在實踐中積累經(jīng)驗和教訓,最終成為數(shù)據(jù)庫結構設計的專家。</p><p>  3.1 數(shù)據(jù)庫需求分析</p><p>  數(shù)據(jù)庫結構設計的一個非常重要的階段就是數(shù)據(jù)庫需求分析階段

40、。在這個階段主要是收集基本數(shù)據(jù)以及數(shù)據(jù)處理流程,為以后進一步設計打下基礎。需求分析主要解決兩個問題:</p><p>  內(nèi)容要求:調(diào)查應用系統(tǒng)用戶所操作的數(shù)據(jù),決定的數(shù)據(jù)庫中存儲什么數(shù)據(jù)。</p><p>  處理要求:調(diào)查應用系統(tǒng)用戶要求對數(shù)據(jù)進行什么樣的處理,理數(shù)據(jù)庫中的各種數(shù)據(jù)之間的關系如何。</p><p>  解決這兩個問題的時候,程序設計人員需要向應用

41、系統(tǒng)的用戶做詳細調(diào)查,保證信息收集的完整性,否則有可能后面所做的所有工作都白白浪費。</p><p>  現(xiàn)在軟件開發(fā)過程中最常用的需求分析技術是快速原型法,其實質(zhì)就是快速建立展示目標產(chǎn)品主要功能的軟件,在開發(fā)過程中根據(jù)用戶反饋對模型不斷修改、完善。因此其最重要的一方面體現(xiàn)在“快速”上,要盡可能快地建立原型。第二個方面是所構造的原型必須可以改變,可以根據(jù)用戶反饋不斷更改、完善。在開發(fā)本系統(tǒng)過程中,基本遵循快速原型

42、法原則,經(jīng)過初步調(diào)研后,先建立應用程序框架,然后根據(jù)與用戶的交流,在原型的基礎上不斷修改、完善,直到最后交付使用。這種方法最大的優(yōu)點是開發(fā)周期短、見效快、實用性強。</p><p>  在此系統(tǒng)中用戶中的管理員需求對火車和火車票進行保存、更新,對普通用戶進行增加、刪除、查詢、修改;普通則要求對火車票的相關信息進行查詢、打印,將火車票準確及時的賣出給乘客。這就需要數(shù)據(jù)庫結構能充分滿足各種信息的輸入與輸出,實現(xiàn)有組織

43、地、動態(tài)地存儲大量關聯(lián)數(shù)據(jù),方便用戶訪問系統(tǒng)中的數(shù)據(jù),它與文件系統(tǒng)的重要區(qū)別是數(shù)據(jù)的充分共享,交叉訪問,與應用程序的高度獨立性。</p><p><b>  3.2 數(shù)據(jù)流圖</b></p><p>  結構化方法使用數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的變化過程。數(shù)據(jù)流圖是結構化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系

44、統(tǒng)的邏輯處理的功能,是一種功能模型。火車票管理系統(tǒng)的數(shù)據(jù)流圖如下圖3.1所示。</p><p><b>  圖3.1數(shù)據(jù)流圖</b></p><p>  3.3 數(shù)據(jù)庫概念結構設計</p><p>  這一階段是在需求分析的基礎上,設計出能夠滿足需求的各種實體,以及它們之間的關系,且為后面的邏輯結構設計打下基礎。</p><

45、p>  這個階段不用考慮所采用得數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、機器類型等問題。這個階段</p><p>  可用的工具很多。用得最多的是E-R圖(Entity-Relation,實體--關系圖),另外還有許多計算機輔助工具(Computer Aided Software, CASE)可以幫助進行設計。</p><p>  本系統(tǒng)都是采用E-R圖的方法進行數(shù)據(jù)庫概念結構設計的,現(xiàn)在先對E-

46、R圖的方法進行一下簡單的介紹。</p><p>  E-R圖是描述數(shù)據(jù)實體及其關系的一種直觀的描述工具。這種圖中有:</p><p>  ⑴ 實體。用方框表示,方框內(nèi)為實體名稱。在火車售票系統(tǒng)中的實體有用戶、車票。</p><p> ?、?實體的各種屬性。用橢圓表示,橢圓內(nèi)為屬性名稱。使用線段將其和相應的實體連接起來。概括起來,該系統(tǒng)中各實體的屬性如下:</p

47、><p>  1) 用戶(用戶名,用戶號、用戶密碼、用戶權限);</p><p>  2) 車票(車票號,車票類型,票價);</p><p>  3) 火車(火車號,車型,始發(fā)時間,始發(fā)站,終點站,途經(jīng)站,運行時間,全程行程);</p><p>  4) 車站(車站號,車站名);</p><p>  5) 車廂(車廂號,類

48、型,總票數(shù),剩余票數(shù));</p><p>  6) 實體之間的聯(lián)系。用菱形表示,菱形內(nèi)部為聯(lián)系的名稱。</p><p>  圖3.2 總E-R圖</p><p>  3.4 數(shù)據(jù)庫表的設計</p><p>  在做出數(shù)據(jù)庫的具體表之前,我們需要有相應的概念結構。</p><p>  概念結構是獨立于實際數(shù)據(jù)模型的,必須

49、將其轉(zhuǎn)化為邏輯結構后才能進行數(shù)據(jù)庫應用設計。也就是要將上面的數(shù)據(jù)庫概念轉(zhuǎn)化為Access數(shù)據(jù)庫所支持的實際數(shù)據(jù)模型。在上面的實體與實體之間關系的基礎上,形成數(shù)據(jù)庫中的表格,以及各個表格之間的關系。</p><p>  具體關系模式如下: </p><p>  用戶信息(用戶ID,登錄名,用戶密碼,用戶權限);</p><p>  車票(票號,車票類型,票價);<

50、;/p><p>  車站信息(車站號,車站名);</p><p>  車廂信息(車廂編號,火車編號,類型,座位總數(shù),剩余數(shù)量);</p><p>  火車信息(火車號,車型,始發(fā)時間,始發(fā)站,終點站,途經(jīng)站,運行時間,全程行程);</p><p>  管理/賣票(票號,火車號);</p><p>  “火車票管理系統(tǒng)”的數(shù)

51、據(jù)庫名稱為Trainticket,數(shù)據(jù)庫中包含6張表。下面根據(jù)系統(tǒng)的關系模式分別給出數(shù)據(jù)表概要說明和主要數(shù)據(jù)表的結構,每個表格表示數(shù)據(jù)庫中的一個表。按照關系模式可分為Tickettable表描述車票信息(如表3.3所示)、Salesticket表描述賣票聯(lián)系(如表3.4所示)、Brailway表描述車廂信息(如表3.5所示)、Users表描述用戶信息(如表3.6所示)、Trainstage表描述車站信息(如表3.7所示)、Trainst

52、ation 表描述火車信息(如表3.8所示)。</p><p>  表3.3 Tickettable表</p><p>  表3.4 Salesticket 表</p><p>  表3.5 Brailway表</p><p>  表3.6 Users表</p><p>  表3.7 Trainstage 表</

53、p><p>  表3.8 Trainstation表</p><p>  第4章 系統(tǒng)功能實現(xiàn)</p><p>  4.1 普通用戶登錄</p><p><b>  4.1.1 查詢</b></p><p>  查詢主要包括按車次查詢和按車站查詢。</p><p>  當我們輸

54、入車次“T1”時,會產(chǎn)生一個查詢結果。如圖4.1所示。</p><p>  圖4.1 查詢“T1”相關信息</p><p>  為了更好的仿真,我們還增加了“按車站查詢”的功能的模塊。</p><p>  “按車次查詢”、“按車站查詢”的模塊代碼如下:</p><p>  public void actionPerformed(ActionE

55、vent e)</p><p><b>  {</b></p><p>  if(e.getSource()==_jb1)// 判斷是否點擊按鈕</p><p><b>  {</b></p><p>  _jt1.setText("");</p><p>

56、;  _jt2.setText("");</p><p>  _jt3.setText("");</p><p>  _jt4.setText("");</p><p>  String trainno = _jt5.getText().trim();</p><p>  if(_c

57、b[0].getState()==true) //判斷第一個單選是否為真</p><p><b>  {</b></p><p>  if(conn.gettrainno(trainno)!=null)</p><p><b>  {</b></p><p>  for(int m = 0;m<

58、;100;m++)</p><p><b>  {</b></p><p>  for(int n = 0;n<8;n++)</p><p><b>  {</b></p><p>  _t.setValueAt("",m,n);</p><p>&

59、lt;b>  }</b></p><p><b>  }</b></p><p>  useable = conn.getuseable(trainno);</p><p>  startstage = conn.getsalestage(trainno);</p><p>  arrivestage

60、= conn.getarrivestage(trainno);</p><p>  saletime = conn.getsaletime(trainno,"");</p><p>  exittime = conn.getexittime(trainno);</p><p>  railwaytype = conn.getrailwaytype

61、(trainno);</p><p>  runmileage = conn.getrunmileage(trainno);</p><p>  starttime = conn.getstarttime(trainno);</p><p>  ticketprice = Float.parseFloat(conn.getticketprice(trainno)

62、);</p><p>  _jt1.setText(trainno);</p><p>  _jt2.setText(startstage);</p><p>  _jt3.setText(arrivestage);</p><p>  _jt4.setText(useable);</p><p>  _jb3.set

63、Enabled(true);</p><p>  _t.setValueAt(trainno,0,0);</p><p>  _t.setValueAt(railwaytype,0,1);</p><p>  _t.setValueAt(startstage,0,2);</p><p>  _t.setValueAt(arrivestage,

64、0,3);</p><p>  _t.setValueAt(starttime,0,4);</p><p>  _t.setValueAt(saletime,0,5);</p><p>  _t.setValueAt(exittime+"小時",0,6);</p><p>  _t.setValueAt(runmileag

65、e+"公里",0,7);</p><p>  _jl26.setText("單價:"+ticketprice);</p><p><b>  }else{</b></p><p>  JOptionPane.showMessageDialog(this,"對不起,沒有該信息?。?!");

66、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else{</b></p><p>  v = conn._getAllStage(_ch2.getSelectedItem(),_ch3.getSelectedIte

67、m());</p><p>  Enumeration eee = v.elements();</p><p>  if(!eee.hasMoreElements())</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this,"對不起,沒

68、有該記錄?。?!");</p><p><b>  }</b></p><p><b>  else{</b></p><p>  for(int m = 0;m<100;m++)</p><p><b>  {</b></p><p> 

69、 for(int n = 0;n<8;n++)</p><p><b>  {</b></p><p>  _t.setValueAt("",m,n);</p><p><b>  }</b></p><p><b>  }</b></p>

70、<p>  for(int i = 0;eee.hasMoreElements();i++)</p><p><b>  {</b></p><p>  stt = (SaleTrainTicket) eee.nextElement();</p><p>  _t.setValueAt(stt.getTtrainno(),i,0)

71、;</p><p>  _t.setValueAt(conn.getrailwaytype(stt.getTtrainno()),i,1);</p><p>  _t.setValueAt(stt.getStartstage(),i,2);</p><p>  _t.setValueAt(stt.getArrivestage(),i,3);</p>&

72、lt;p>  _t.setValueAt(stt.getStarttime(),i,4);</p><p>  _t.setValueAt(stt.getSaletime(),i,5);</p><p>  _t.setValueAt(conn.getexittime(stt.getTtrainno())+"小時",i,6);</p><p&g

73、t;  _t.setValueAt(conn.getrunmileage(stt.getTtrainno())+"公里",i,7);</p><p><b>  }</b></p><p>  _jb3.setEnabled(true);</p><p><b>  }</b></p>&

74、lt;p><b>  }</b></p><p><b>  }</b></p><p>  if(e.getSource()==_jb2)</p><p><b>  {</b></p><p>  if(_cb[1].getState()==true)</p&g

75、t;<p><b>  {</b></p><p>  if(!_t.getValueAt(_t.getSelectedRow(),0).equals(""))</p><p><b>  {</b></p><p>  Object _useable = _t.getValueAt(_

76、t.getSelectedRow(),0);</p><p>  Object _startstage = _t.getValueAt(_t.getSelectedRow(),2);</p><p>  Object _arrivestage = _t.getValueAt(_t.getSelectedRow(),3);</p><p>  String __u

77、seable = (String)_useable;</p><p>  String __startstage = (String)_startstage;</p><p>  String __arrivestage = (String)_arrivestage;</p><p>  String _ticketprice = (String)_useable;

78、</p><p>  _jt1.setText(__useable);</p><p>  _jt2.setText(__startstage);</p><p>  _jt3.setText(__arrivestage);</p><p>  _jt4.setText(conn.getuseable(_useable));</p>

79、;<p>  ticketprice = Float.parseFloat(conn.getticketprice(_ticketprice));</p><p>  _jl26.setText("單價:"+ticketprice);</p><p>  _jl26.setForeground(Color.red);</p><p>

80、;<b>  }</b></p><p><b>  }else{</b></p><p>  if(!_t.getValueAt(_t.getSelectedRow(),0).equals(""))</p><p><b>  {</b></p><p>

81、  String _ticketprice = (String)_t.getValueAt(_t.getSelectedRow(),0);</p><p>  ticketprice = Float.parseFloat(conn.getticketprice(_ticketprice));</p><p>  _jl26.setText("單價:"+ticketpri

82、ce);</p><p><b>  }else{</b></p><p>  JOptionPane.showMessageDialog(this,"你選擇的是空值!");</p><p><b>  }</b></p><p><b>  }</b>&l

83、t;/p><p>  if(_cb[0].getState()==true)</p><p><b>  {</b></p><p>  _jt1.setText("");</p><p>  _jt2.setText("");</p><p>  _jt3.s

84、etText("");</p><p>  _jt4.setText("");</p><p>  Object _useable = _t.getValueAt(_t.getSelectedRow(),0);</p><p>  Object _startstage = _t.getValueAt(_t.getSelec

85、tedRow(),2);</p><p>  Object _arrivestage = _t.getValueAt(_t.getSelectedRow(),3);</p><p>  String __useable = (String)_useable;</p><p>  String __startstage = (String)_startstage;&

86、lt;/p><p>  String __arrivestage = (String)_arrivestage;</p><p>  String _ticketprice = (String)_useable;</p><p>  _jt1.setText(__useable);</p><p>  _jt2.setText(__startst

87、age);</p><p>  _jt3.setText(__arrivestage);</p><p>  _jt4.setText(conn.getuseable(_useable));</p><p>  if(_ch5.getSelectedItem().equals("全票"))</p><p><b>

88、;  {</b></p><p>  ticketprice = ticketprice*1;</p><p><b>  }else{</b></p><p>  ticketprice = ticketprice/2;</p><p><b>  }</b></p>&

89、lt;p>  _jl26.setText("單價:"+ticketprice);</p><p>  _jl26.setForeground(Color.red);</p><p><b>  }else{</b></p><p>  if(!_t.getValueAt(_t.getSelectedRow(),0).e

90、quals(""))</p><p><b>  {</b></p><p>  String _ticketprice = (String)_t.getValueAt(_t.getSelectedRow(),0);</p><p>  ticketprice = Float.parseFloat(conn.getticke

91、tprice(_ticketprice));</p><p>  _jl26.setText("單價:"+ticketprice);</p><p>  _jl26.setForeground(Color.red);</p><p><b>  }else{</b></p><p>  JOption

92、Pane.showMessageDialog(this,"你選擇的是空值!");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(e.getSource()==

93、_jb3)</p><p><b>  {</b></p><p>  if(_t.getSelectedRow()==-1)//取行</p><p><b>  {}</b></p><p><b>  else</b></p><p><b&g

94、t;  {</b></p><p>  if(_t.getValueAt(_t.getSelectedRow(),0).equals(""))</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this,"你選擇的行是空的!"

95、;);</p><p><b>  }else</b></p><p><b>  {</b></p><p>  String trainno = _jt5.getText().trim();</p><p>  Object i = _t.getValueAt(_t.getSelectedRow

96、(),0);</p><p>  trainno = (String)i;</p><p>  String _ticketprice = (String)_t.getValueAt(_t.getSelectedRow(),0);</p><p>  int ticketcount_;</p><p>  float ticketprice_

97、,pay_;</p><p>  String ticketcount = _jt6.getText().trim();</p><p>  String pay = _jt8.getText().trim();</p><p>  String ticketprice__ = conn.getticketprice(_ticketprice);</p>

98、<p>  ticketcount_ = Integer.parseInt(ticketcount);</p><p>  pay_ = Float.parseFloat(pay);</p><p>  ticketprice_ = Float.parseFloat(ticketprice__);</p><p>  if(_ch5.getSelec

99、tedItem().equals("全票"))</p><p><b>  {</b></p><p>  _jt7.setText(""+(ticketprice_*ticketcount_)+"");</p><p><b>  }</b></p>

100、<p><b>  else</b></p><p>  ticketprice_ = ticketprice_/2;</p><p><b>  {</b></p><p>  _jt7.setText(""+(ticketprice_*ticketcount_)+""

101、;);</p><p><b>  }</b></p><p>  _jt9.setText(""+(pay_-ticketprice_*ticketcount_)+"");</p><p>  Ticket ticket = new Ticket(trainno,ticketcount,pay,tick

102、etprice_);</p><p>  count =Integer.parseInt(_jt4.getText().trim())-Integer.parseInt(ticketcount);//剩余票數(shù)</p><p><b>  }</b></p><p><b>  }</b></p><p&

103、gt;<b>  }</b></p><p>  if(e.getSource()==_jb4)</p><p><b>  {</b></p><p>  String _jtrainno,_jstartstage,_jarrivestage,_jbuyticket,_jstagetype,_jstarttime,_ja

104、rrivetime,</p><p>  _jruntime,_jrunmileage,_jstageno;</p><p>  float _jticketprice;</p><p>  Object i = _t.getValueAt(_t.getSelectedRow(),0);</p><p>  _jtrainno = (Stri

105、ng)i;</p><p>  _jstartstage = conn.getsalestage(_jtrainno);</p><p>  _jarrivestage = conn.getarrivestage(_jtrainno);</p><p>  _jstarttime = conn.getarrivetime(_jtrainno);</p>

106、<p>  _jruntime = conn.getexittime(_jtrainno);</p><p>  _jstagetype = conn.getrailwaytype(_jtrainno);</p><p>  _jrunmileage = conn.getrunmileage(_jtrainno);</p><p>  _jstartt

107、ime = conn.getstarttime(_jtrainno);</p><p>  _jarrivetime = conn.getarrivetime(_jtrainno);</p><p>  _jbuyticket = _jt6.getText().trim();</p><p>  _jstageno = conn.getstageno(_jtrai

108、nno);</p><p>  _jseatno = conn.getseatno(_jtrainno);</p><p>  if(_ch5.getSelectedItem().equals("全票"))</p><p>  { </p><p>  _jticketprice =(Float.

109、parseFloat(conn.getticketprice(_jtrainno)));</p><p><b>  }else{</b></p><p>  _jticketprice = (Float.parseFloat(conn.getticketprice(_jtrainno)));</p><p><b>  }</

110、b></p><p>  newTicketprint(username,userpassword,_jtrainno,_jstartstage,_jarrivestage,_jbuyticket,_jstagetype,_jstarttime,_jarrivetime,</p><p>  _jruntime,_jrunmileage,_jstageno,_jseatno,_jti

111、cketprice);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.1.2 售票</b></p><p>  確定好乘客需要買票后,售票員在“火車票”窗口中選擇“車廂類型”、“車票類型”、輸入“實付”等信息后,

112、點擊“確定”便會彈出“電子車票”用于預覽車票信息,最終賣出車票后數(shù)據(jù)庫中相應火車的剩余車票減去乘客購買的票數(shù)。在此功能中,數(shù)據(jù)從“火車票”類傳給相應的類讓其對“查詢”出的數(shù)據(jù)進行處理然后將結構顯示在“火車票”窗口。例如現(xiàn)在有一乘客想買“T1”在“2011-07-03”號的票,他付給售票員200。購買前如圖4.2所示。電子車票如圖4.3所示,購買成功后如圖4.4所示。</p><p>  4.2 賣票前剩余36張&

113、lt;/p><p><b>  圖4.3 電子車票</b></p><p>  圖4.4 售票成功后剩余35張</p><p>  售票模塊的代碼如下:</p><p>  public class SaleTicket extends JFrame implements ActionListener {</p>

114、<p>  JButton _return;</p><p>  NotEditable _net;</p><p>  ScrollPane _sp;</p><p>  JTable _t;</p><p>  JTableHeader _th;</p><p>  JPanel _jp;</p

115、><p>  Vector v = new Vector();</p><p>  RailwayVo rv = null;</p><p>  Conn conn = new Conn();</p><p>  String username,userpassword,userpopedom;</p><p>  pub

116、lic SaleTicket(String name,String password,String popedom) {</p><p>  super("賣出票數(shù)");</p><p>  username = name;</p><p>  userpassword = password;</p><p>  user

117、popedom = popedom;</p><p>  if(conn.ifadmin(username,userpassword,userpopedom))</p><p><b>  {</b></p><p><b>  }else{</b></p><p>  JOptionPane.sh

118、owMessageDialog(this,"非法請求!");</p><p>  System.exit(0);</p><p><b>  }</b></p><p>  Object[] _name = new Object [] {"車次","車廂","車廂類型&quo

119、t;,"賣出票數(shù)"};</p><p>  _net = new NotEditable(_name,100);</p><p>  _t = new JTable(_net);</p><p>  _th = _t.getTableHeader();</p><p>  _sp = new ScrollPane();&l

120、t;/p><p>  _sp.add(_t);</p><p>  _jp = new JPanel();</p><p>  _return = new JButton("返回");</p><p>  _return.addActionListener(this);</p><p>  _jp.ad

121、d(_return);</p><p>  this.add(_th,"North");</p><p>  this.add(_sp,"Center");</p><p>  this.add(_jp,"South");</p><p>  this.setSize(500,500

122、);</p><p>  this.setVisible(true);</p><p>  this.setResizable(false);</p><p>  this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);</p><p>  int W = (int)Toolkit.get

溫馨提示

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

評論

0/150

提交評論