課程設計—火車售票系統(tǒng)課程設計_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  沈 陽 工 程 學 院</p><p><b>  課 程 設 計</b></p><p>  設計題目: 火車票管理系統(tǒng) </p><p>  系 別 信息工程系 班級 網絡本101 </p><p>  學生姓名 劉雨嬌

2、金兆寧 姚宇 夏林 </p><p>  學 號 02 13 19 24 </p><p>  指導教師 孫憲麗 、楊弘平 職稱 副教授 、副教授 </p><p>  起止日期:2012年12月3日起——至2012年12月7日止</p><p>  

3、沈 陽 工 程 學 院</p><p><b>  課程設計任務書</b></p><p>  課程設計題目: 火車票管理系統(tǒng) </p><p>  系 別 信息工程系 班級 網絡本101</p><p>  學生姓名 劉雨嬌 金兆寧 姚宇 夏林

4、 </p><p>  學 號 02 13 19 24 </p><p>  指導教師 孫憲麗、楊弘平 職稱 副教授 、副教授</p><p>  課程設計進行地點: 實訓F </p><p>  任 務 下 達 時 間

5、: 2012 年 12 月 3 日</p><p>  起止日期: 2012年12月3日起—至2012年12月7日止</p><p>  教研室主任 年 月 日批準</p><p>  設計的原始資料及依據(jù)</p><p>  查閱有關數(shù)據(jù)庫設計、Java語言程序設計以及案例分析

6、等資料,進一步熟悉面向對象程序設計基本理論以及基本思想。本設計要求按照軟件工程、數(shù)據(jù)庫設計思想及設計步驟設計一個實用程序,并采用Java開發(fā)該系統(tǒng)。通過本設計可以加深對面向對象程序設計基本思想的理解,加強學生研發(fā)、調試程序的能力,培養(yǎng)學生分析、解決問題的能力,提高學生的科技寫作能力。</p><p>  2.設計的主要內容及要求</p><p>  (1)寫出系統(tǒng)的需求分析。</p&

7、gt;<p>  (2)寫出系統(tǒng)的數(shù)據(jù)庫設計過程,包括概念結構設計、邏輯結構設計、物理結構設計。</p><p> ?。〝?shù)據(jù)庫應用程序管理系統(tǒng)類設計詳細寫,其它類設計可以略)</p><p>  (3)寫出系統(tǒng)設計思路—工作原理、功能規(guī)劃。</p><p>  (4)詳細設計—數(shù)據(jù)分析、算法思路、類設計、功能實現(xiàn)(包括程序流程圖、主要代碼及注釋)、界面

8、等。</p><p>  (5)運行調試與分析討論--給出運行屏幕截圖,分析運行結果,有何改進等。</p><p>  3.對設計說明書撰寫內容、格式、字數(shù)的要求</p><p>  (1)學生應撰寫的內容為:中文摘要和關鍵詞、目錄、正文、參考文獻等。課程設計說明書(論文)的結構及各部分內容要求參照《沈陽工程學院畢業(yè)設計(論文)撰寫規(guī)范》執(zhí)行。應做到文理通順,內容正

9、確完整,書寫工整,裝訂整齊。</p><p><b>  (2)裝訂格式:</b></p><p>  封面、任務書、成績評審意見表、中文摘要和關鍵詞、目錄、正文、結論、致謝、參考文獻。</p><p>  (3)課程設計說明書(論文)是體現(xiàn)和總結課程設計成果的載體,一般不應少于3000字。</p><p>  4. 設

10、計完成后應提交成果的種類、數(shù)量、質量等方面的要求</p><p>  (1)每組提交一份課程設計報告。</p><p>  (2)每組提交一份課程設計成品。</p><p><b>  5.時間進度安排</b></p><p>  6.主要參考資料(文獻)</p><p>  [1] 耿詳義.JA

11、VA2教程.北京:清華大學出版社,2004。</p><p>  [2]張仿彥.JAVA項目開發(fā)全程實錄.北京:清華大學出版社,2007。</p><p>  [3] 楊小虎.軟件工程課程設計.浙江:浙江大學出版社,2007。</p><p>  [4] 韓萬江.軟件工程案例教程.北京:機械工業(yè)出版社,2007。</p><p>  [5]

12、薩師煊,王珊著.數(shù)據(jù)庫系統(tǒng)概論.北京:高等教育出版社,2003。</p><p>  沈 陽 工 程 學 院</p><p>  面向對象程序設計 課程設計成績評定表</p><p>  系(部): 信息工程系 班級: 網絡本101 學生姓名: </p><p><b>  摘 要</b

13、></p><p>  隨著Internet和Intranet技術的發(fā)展,人們對網絡信息的需求越來越大,對網絡數(shù)據(jù)庫的交互和查詢速度等性能的要求也越來越高。未來火車站的發(fā)展趨勢是完全自動化的售票信息查詢,網絡訂票,智能化訂票,而且隨著計算機的普及,信息處理量的逐漸擴大,手工處理方式已經遠遠不能滿足人們管理活動的需要,各種工作都逐漸由手工轉為自動化,將使許多復雜、繁瑣、且需要很多人力的工作變得簡單?;疖囌臼燮?/p>

14、管理是本系統(tǒng)的根本任務,通過實現(xiàn)票務信息的計算機管理,以提高工作效率。實現(xiàn)計算機管理的最佳技術就是數(shù)據(jù)庫技術。我們可以利用數(shù)據(jù)庫將整個火車站的票務情況存入計算機,再配置上功能豐富的用戶接口,以滿足用戶需求。 </p><p>  基于這樣的背景并考慮到一定的實際意義及于我們將實踐與理論結合起來,我們組在這次課設中選擇了“火車售票管理系統(tǒng)”。在這次課設中我們使用Java技術來開發(fā)該火車票管理系統(tǒng)。因而在本報告中介紹

15、了系統(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技術 網絡數(shù)據(jù)庫</p><p><b>  目 錄</b></p><p>&l

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

17、lt;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>  2.2.2 管理員登錄3</p><p>

18、  2.2.3 普通用戶登錄4</p><p>  2.3組內任務分工4</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ù)據(jù)庫概念結構設計6</p><p>  3.4 數(shù)據(jù)

19、庫表的設計7</p><p>  第4章 系統(tǒng)功能實現(xiàn)10</p><p>  4.1 登陸系統(tǒng)10</p><p>  4.2 管理員系統(tǒng)11</p><p>  4.2.1 用戶管理11</p><p>  4.2.2 票務管理20</p><p>  4.3 普通用戶登錄21

20、</p><p>  4.3.1 查詢21</p><p>  4.3.2 售票27</p><p><b>  結論31</b></p><p><b>  致謝32</b></p><p><b>  參考文獻33</b></p>

21、;<p><b>  第1章 緒論</b></p><p>  信息社會的高科技,商品經濟的高效益,使計算機的應用普及到經濟和社會生活的各個領域。計算機與人類的關系愈來愈密切,計算機操作為人們帶了越來越多的便利。為了適應現(xiàn)代社會人們高度強烈的時間觀念,火車票管理系統(tǒng)將會為人們帶來極大的方便。</p><p><b>  1.1 項目背景<

22、/b></p><p>  在火車大力普及的今天,一個火車站售票信息管理系統(tǒng)應達到的目標是提供及時、廣泛的信息服務,加快信息檢索的效率,實況靈活的查詢,減輕管理人員制作報表和統(tǒng)計分析的負擔,且系統(tǒng)規(guī)模不太大但又要保證支持日常工作的要求,以便系統(tǒng)應易于擴充,方便日后統(tǒng)一聯(lián)網與管理,提高管理水平。根據(jù)以上的設計目標和要求,本設計用Java編程語言結合微軟的Access數(shù)據(jù)庫進行開發(fā),主要完成查詢、售票、及對票務

23、和用戶進行管理等功能。其實火車售票系統(tǒng)用計算機管理火車站票務信息的一種計算機應用技術的創(chuàng)新,在計算機還未普及之前售票業(yè)務都是由工作人員人工完成的、查詢方式來操作的?,F(xiàn)在一般的車站售票業(yè)務都采用計算機智能化管理,采用計算機作為工具的實用的計算機訂單管理程序來幫助前臺管理員進行更有效的車票業(yè)務查詢,出售管理工作?;疖囀燮惫芾硐到y(tǒng)是典型的信息管理系統(tǒng)(MIS):其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建

24、立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。 經過分析:我們使用Java編程語言開發(fā)工具,利用其提供的各種面向對象的開發(fā)工具,尤其</p><p><b>  1.2 編寫目的</b></p><p>  電腦的漸漸普及,以及互聯(lián)網所容納的信息量大、內容豐富、信息及時、準確,更有相關信息的全面介紹與比較。為了人們在火車站

25、購買車票以及售票員對車票的、管理、查詢以及相應的操作變的簡單,開發(fā)這樣一個火車票管理系統(tǒng)成為很有必要的事情。</p><p><b>  1.3 開發(fā)環(huán)境</b></p><p>  1.3.1 硬件環(huán)境</p><p><b>  PC機。</b></p><p>  1.3.2 軟件環(huán)境<

26、/p><p> ?、?操作系統(tǒng):Windows XP</p><p> ?、?開發(fā)工具:Eclipse</p><p>  Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),但是目前亦有人通過插件使其作為C++、Python、PHP等其他語言的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持,使得Eclipse擁有

27、較佳的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。</p><p>  Eclipse采用的技術是IBM公司開發(fā)的(SWT),這是一種基于Java的窗口組件,類似Java本身提供的AWT和Swing窗口組件;不過IBM聲稱SWT比其他Java窗口組件更有效率。Eclipse的用戶界面還使用了GUI中間層JFace,從而簡化了基于SWT的應用程序的構建。</p><p> 

28、 Eclipse的設計思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本內核包括:圖形API (SWT/Jface), Java開發(fā)環(huán)境插件(JDT),插件開發(fā)環(huán)境(PDE)等。</p><p> ?、?數(shù)據(jù)庫:Microsoft Access2003</p><p>  Access 是微軟公司推出的基于Windows的

29、桌面關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),是Office系列應用軟件之一。它提供了表、查詢、窗體、報表、頁、宏、模塊7種用來建立數(shù)據(jù)庫系統(tǒng)的對象;提供了多種向導、生成器、模板,把數(shù)據(jù)存儲、數(shù)據(jù)查詢、界面設計、報表生成等操作規(guī)范化;為建立功能完善的數(shù)據(jù)庫管理系統(tǒng)提供了方便,也使得普通用戶不必編寫代碼,就可以完成大部分數(shù)據(jù)管理的任務。 </p><p>  Access是一種關系型數(shù)據(jù)庫管理系統(tǒng),其主要特點如下: <

30、;/p><p>  1) 存儲方式單一 </p><p>  Access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為(.mdb)的數(shù)據(jù)庫文件種,便于用戶的操作和管理。 </p><p><b>  2) 面向對象 </b></p><p>  Access是一個面向對象的開發(fā)工具,利用面向對象的方

31、式將數(shù)據(jù)庫系統(tǒng)中的各種功能對象化,將數(shù)據(jù)庫管理的各種功能封裝在各類對象中。它將一個應用系統(tǒng)當作是由一系列對象組成的,對每個對象它都定義一組方法和屬性,以定義該對象的行為和外國,用戶還可以按需要給對象擴展方法和屬性。通過對象的方法、屬性完成數(shù)據(jù)庫的操作和管理,極大地簡化了用戶的開發(fā)工作。同時,這種基于面向對象的開發(fā)方式,使得開發(fā)應用程序更為簡便。 </p><p>  3)界面友好、易操作 </p>

32、<p>  Access是一個可視化工具,是風格與Windows完全一樣,用戶想要生成對象并應用,只要使用鼠標進行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報表設計器以及數(shù)據(jù)庫向導、表向導、查詢向導、窗體向導、報表向導等工具,使得操作簡便,容易使用和掌握。 </p><p>  4)集成環(huán)境、處理多種數(shù)據(jù)信息 </p><p>  Access基于Windows操

33、作系統(tǒng)下的集成開發(fā)環(huán)境,該環(huán)境集成了各種向導和生成器工具,極大地提高了開發(fā)人員的工作效率,使得建立數(shù)據(jù)庫、創(chuàng)建表、設計用戶界面、設計數(shù)據(jù)查詢、報表打印等可以方便有序地進行。 </p><p>  5)Access支持ODBC(開發(fā)數(shù)據(jù)庫互連,Open Data Base Connectivity),利用Access強大的DDE(動態(tài)數(shù)據(jù)交換)和OLE(對象的聯(lián)接和嵌入)特性,可以在一個數(shù)據(jù)表中嵌入位圖、聲音、Ex

34、cel表格、Word文檔,還可以建立動態(tài)的數(shù)據(jù)庫報表和窗體等。Access還可以將程序應用于網絡,并與網絡上的動態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫訪問頁對象生成HTML文件,輕松構建Internet/Intranet的應用。</p><p>  第2章 系統(tǒng)功能介紹</p><p>  2.1 系統(tǒng)功能總框圖</p><p>  系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務的基礎上完成

35、。根據(jù)系統(tǒng)分析確定的邏輯模型,確定新系統(tǒng)的物理模型,即計算機化信息系統(tǒng)應用軟件的總體結構和數(shù)據(jù)庫設計,并提出系統(tǒng)配置方案,繼而對物理模型進行詳細的設計。主要內容有:代碼設計,用戶界面設計,處理過程設計,編寫系統(tǒng)設計說明書。</p><p>  系統(tǒng)設計是以系統(tǒng)分析為基礎,而系統(tǒng)設計又是系統(tǒng)實施的基礎,系統(tǒng)設計的主要任務是代碼設計、物理設計、數(shù)據(jù)庫設計、功能結構圖設計。本火車票管理系統(tǒng)功能包括用戶登錄、用戶信息管理

36、、火車票信息管理、火車票信息查詢等如圖2.1所示。</p><p>  圖2.1 系統(tǒng)功能圖</p><p>  2.2 模塊功能介紹</p><p>  2.2.1 系統(tǒng)登錄</p><p>  火車票管理系統(tǒng)可以分為2種登錄方式登錄系統(tǒng),分別為管理員、普通用戶。考慮到數(shù)據(jù)庫中數(shù)據(jù)的安全性和用戶的權益,該系統(tǒng)采用“用戶標識”和“口令”相結合

37、的數(shù)據(jù)庫安全技術,并通過自動認證用戶的“權限”來判斷用戶應該登陸到的界面。其中管理員使用密碼登錄可以直接登錄到管理系統(tǒng),進行火車票信息和用戶信息進行管理;普通用戶使用密碼登錄到用戶界面,可以在對火車票查詢的基礎上對乘客所要求買的車票信息進行查詢和填寫以及火車票記錄的打印等操作。</p><p>  2.2.2 管理員登錄</p><p>  管理員是該火車售票系統(tǒng)數(shù)據(jù)的直接管理者,他對該系

38、統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)享有所有的權限。針對這一點,管理員管理界面包含了“用戶管理”、“票務管理”以及“系統(tǒng)幫助”三個選項。</p><p><b> ?。?)用戶管理</b></p><p>  用戶管理界面是管理員才能進入的界面,在該窗口中,管理員可以對使用該系統(tǒng)的用戶進行管理,具體包括“查找用戶”、“增加用戶”、“刪除用戶”、“修改用戶”等功能,并將各個子功能的結果顯示

39、在窗口左邊的顯示區(qū)域內,初次登陸此界面時顯示區(qū)域內的信息是所有用戶的信息。通過該模塊的功能,管理員可以很方便的對使用該系統(tǒng)的用戶進行管理。</p><p><b> ?。?)票務管理</b></p><p>  顧名思義“票務管理”就是對火車票進行的管理,在此模塊中我們可以進行“所有票數(shù)”、“賣出票數(shù)”等的預覽。運行界面如圖2.2所示。</p><

40、p>  圖2.2“票務管理”窗口</p><p>  2.2.3 普通用戶登錄</p><p>  在這個功能模塊里普通用戶即售票員可以進行火車及或火車票的信息進行查詢及售票。查詢子功能中可以“按車次查詢”,也可以“按車站查詢”;在售票子功能中選擇好車票相關信息后并核對確認好乘客需要次車票后可以可預覽車票信息;如果乘客需要數(shù)據(jù)單,則可以點擊“打印”來打印數(shù)據(jù)單。</p>

41、<p><b>  查詢:</b></p><p>  “查詢”功能中的“按車次查詢”和“按車站查詢”思想相差無幾,這里我們重點說明“按車次查詢”。如現(xiàn)在乘客詢問“T1”的火車具體信息及車票信息或者是購買“T1”的車票,售票員便在“火車票”窗口選擇“按車次查詢”,然后在“車次”一欄中輸入“T1”以及選擇好日期以后點擊“查詢”便會出發(fā)相應的查詢事件即將“車次”和“日期”傳遞給查詢語

42、句后將數(shù)據(jù)庫中各個表中的相關信息查詢出來顯示在“火車票”窗口相應的地方,具體包括始發(fā)站、終點站、發(fā)車時間、剩余票數(shù)、單價等信息。</p><p><b>  售票:</b></p><p>  在用戶選定了需要的票之后,點擊確定按鈕之后,會彈出電子票窗口。在購票成功之后,需要對數(shù)據(jù)庫進行更新操作,這就是售票系統(tǒng)的主要功能。</p><p>  

43、2.3 組內任務分工</p><p>  表2.1 組內任務分工</p><p><b>  第3章 數(shù)據(jù)庫設計</b></p><p>  火車票管理系統(tǒng)是一個數(shù)據(jù)庫應用系統(tǒng),各類數(shù)據(jù)的所有信息都是保存在數(shù)據(jù)庫中。在數(shù)據(jù)庫應用系統(tǒng)的開發(fā)進程中,數(shù)據(jù)庫的結構設計是一個非常重要的問題。我們這里所說的數(shù)據(jù)庫結構設計是指數(shù)據(jù)庫中各個表結構的設計,包括

44、信息保存在哪個表格中,各個表的結構如何以及各個表之間的關系如何等。</p><p>  數(shù)據(jù)庫結構設計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產生影響,好的數(shù)據(jù)庫結構設計會減少數(shù)據(jù)庫的存儲量,數(shù)據(jù)庫的完整性和一致性比較高,系統(tǒng)具有較快的響應速度,簡化基于數(shù)據(jù)庫的應用程序的實現(xiàn)等。</p><p>  由數(shù)據(jù)庫設計的重要性,人們提出了許多數(shù)據(jù)庫結構設計的技術。但是這些設計方法和設計者的工作

45、經驗有很大關系。因此要從根本上解決所有數(shù)據(jù)庫結構設計的問題,就需要多實踐,在實踐中積累經驗和教訓,最終成為數(shù)據(jù)庫結構設計的專家。</p><p>  3.1 數(shù)據(jù)庫需求分析</p><p>  數(shù)據(jù)庫結構設計的一個非常重要的階段就是數(shù)據(jù)庫需求分析階段。在這個階段主要是收集基本數(shù)據(jù)以及數(shù)據(jù)處理流程,為以后進一步設計打下基礎。需求分析主要解決兩個問題:</p><p>

46、  內容要求:調查應用系統(tǒng)用戶所操作的數(shù)據(jù),決定的數(shù)據(jù)庫中存儲什么數(shù)據(jù)。</p><p>  處理要求:調查應用系統(tǒng)用戶要求對數(shù)據(jù)進行什么樣的處理,理數(shù)據(jù)庫中的各種數(shù)據(jù)之間的關系如何。</p><p>  解決這兩個問題的時候,程序設計人員需要向應用系統(tǒng)的用戶做詳細調查,保證信息收集的完整性,否則有可能后面所做的所有工作都白白浪費。</p><p>  現(xiàn)在軟件開發(fā)

47、過程中最常用的需求分析技術是快速原型法,其實質就是快速建立展示目標產品主要功能的軟件,在開發(fā)過程中根據(jù)用戶反饋對模型不斷修改、完善。因此其最重要的一方面體現(xiàn)在“快速”上,要盡可能快地建立原型。第二個方面是所構造的原型必須可以改變,可以根據(jù)用戶反饋不斷更改、完善。在開發(fā)本系統(tǒng)過程中,基本遵循快速原型法原則,經過初步調研后,先建立應用程序框架,然后根據(jù)與用戶的交流,在原型的基礎上不斷修改、完善,直到最后交付使用。這種方法最大的優(yōu)點是開發(fā)周期

48、短、見效快、實用性強。</p><p>  在此系統(tǒng)中用戶中的管理員需求對火車和火車票進行保存、更新,對普通用戶進行增加、刪除、查詢、修改;普通則要求對火車票的相關信息進行查詢、打印,將火車票準確及時的賣出給乘客。這就需要數(shù)據(jù)庫結構能充分滿足各種信息的輸入與輸出,實現(xiàn)有組織地、動態(tài)地存儲大量關聯(lián)數(shù)據(jù),方便用戶訪問系統(tǒng)中的數(shù)據(jù),它與文件系統(tǒng)的重要區(qū)別是數(shù)據(jù)的充分共享,交叉訪問,與應用程序的高度獨立性。</p&

49、gt;<p><b>  3.2 數(shù)據(jù)流圖</b></p><p>  結構化方法使用數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的變化過程。數(shù)據(jù)流圖是結構化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內部信息的流向,并表示了系統(tǒng)的邏輯處理的功能,是一種功能模型?;疖嚻惫芾硐到y(tǒng)的數(shù)據(jù)流圖如下圖3.1所示。</p><p><b>  

50、圖3.1數(shù)據(jù)流圖</b></p><p>  3.3 數(shù)據(jù)庫概念結構設計</p><p>  這一階段是在需求分析的基礎上,設計出能夠滿足需求的各種實體,以及它們之間的關系,且為后面的邏輯結構設計打下基礎。</p><p>  這個階段不用考慮所采用得數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、機器類型等問題。這個階段</p><p>  可用的工

51、具很多。用得最多的是E-R圖(Entity-Relation,實體--關系圖),另外還有許多計算機輔助工具(Computer Aided Software, CASE)可以幫助進行設計。</p><p>  本系統(tǒng)都是采用E-R圖的方法進行數(shù)據(jù)庫概念結構設計的,現(xiàn)在先對E-R圖的方法進行一下簡單的介紹。</p><p>  E-R圖是描述數(shù)據(jù)實體及其關系的一種直觀的描述工具。這種圖中有:&

52、lt;/p><p>  ⑴ 實體。用方框表示,方框內為實體名稱。在火車售票系統(tǒng)中的實體有用戶、車票。</p><p>  ⑵ 實體的各種屬性。用橢圓表示,橢圓內為屬性名稱。使用線段將其和相應的實體連接起來。概括起來,該系統(tǒng)中各實體的屬性如下:</p><p>  1) 用戶(用戶名,用戶號、用戶密碼、用戶權限);</p><p>  2) 車票(

53、車票號,車票類型,票價);</p><p>  3) 火車(火車號,車型,始發(fā)時間,始發(fā)站,終點站,途經站,運行時間,全程行程);</p><p>  4) 車站(車站號,車站名);</p><p>  5) 車廂(車廂號,類型,總票數(shù),剩余票數(shù));</p><p>  6) 實體之間的聯(lián)系。用菱形表示,菱形內部為聯(lián)系的名稱。</p&g

54、t;<p>  圖3.2 總E-R圖</p><p>  3.4 數(shù)據(jù)庫表的設計</p><p>  在做出數(shù)據(jù)庫的具體表之前,我們需要有相應的概念結構。</p><p>  概念結構是獨立于實際數(shù)據(jù)模型的,必須將其轉化為邏輯結構后才能進行數(shù)據(jù)庫應用設計。也就是要將上面的數(shù)據(jù)庫概念轉化為Access數(shù)據(jù)庫所支持的實際數(shù)據(jù)模型。在上面的實體與實體之間關系

55、的基礎上,形成數(shù)據(jù)庫中的表格,以及各個表格之間的關系。</p><p>  具體關系模式如下: </p><p>  用戶信息(用戶ID,登錄名,用戶密碼,用戶權限);</p><p>  車票(票號,車票類型,票價);</p><p>  車站信息(車站號,車站名);</p><p>  車廂信息(車廂編號,火車編號

56、,類型,座位總數(shù),剩余數(shù)量);</p><p>  火車信息(火車號,車型,始發(fā)時間,始發(fā)站,終點站,途經站,運行時間,全程行程);</p><p>  管理/賣票(票號,火車號);</p><p>  “火車票管理系統(tǒng)”的數(shù)據(jù)庫名稱為Trainticket,數(shù)據(jù)庫中包含6張表。下面根據(jù)系統(tǒng)的關系模式分別給出數(shù)據(jù)表概要說明和主要數(shù)據(jù)表的結構,每個表格表示數(shù)據(jù)庫中的一

57、個表。按照關系模式可分為Tickettable表描述車票信息(如表3.3所示)、Salesticket表描述賣票聯(lián)系(如表3.4所示)、Brailway表描述車廂信息(如表3.5所示)、Users表描述用戶信息(如表3.6所示)、Trainstage表描述車站信息(如表3.7所示)、Trainstation 表描述火車信息(如表3.8所示)。</p><p>  表3.3 Tickettable表</p&g

58、t;<p>  表3.4 Salesticket 表</p><p>  表3.5 Brailway表</p><p>  表3.6 Users表</p><p>  表3.7 Trainstage 表</p><p>  表3.8 Trainstation表</p><p>  第4章 系統(tǒng)功能實現(xiàn)&l

59、t;/p><p><b>  4.1 登陸系統(tǒng)</b></p><p>  我們在數(shù)據(jù)庫中設計了管理員權限(admin)與普通用戶權限(user)。通過判斷輸入的用戶名和密碼判斷權限,然后登陸系統(tǒng)。登陸界面如圖4.1所示。</p><p><b>  圖4.1 登陸界面</b></p><p><

60、b>  具體代碼實現(xiàn)如下:</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  Conn conn = new Conn();</p><p>  if(e.getSource()=

61、=_jbsub)//提交</p><p><b>  {</b></p><p>  String username = _jfid.getText().trim();//用戶名</p><p>  String userpassword = new String(_jfpass.getPassword()).trim();</p>

62、<p>  if(conn.Login(username,userpassword))</p><p><b>  {</b></p><p>  if(conn.ifadmin(username,userpassword,userpopedom))</p><p><b>  {</b></p>

63、<p>  dispose();//關閉該窗口并釋放資源</p><p>  JOptionPane.showMessageDialog(this,"歡迎管理員登錄!");</p><p>  new Manage(username,userpassword,userpopedom);//管理員管理事物類</p><p><b

64、>  }else</b></p><p><b>  {</b></p><p>  new Trainticket(username,userpassword);//車票查詢及售票類</p><p><b>  }</b></p><p>  dispose();</p&g

65、t;<p><b>  }else{</b></p><p>  JOptionPane.showMessageDialog(this,"登錄失敗,請檢查密碼是否正確!");</p><p><b>  }</b></p><p><b>  }</b></p&

66、gt;<p>  if(e.getSource()==_jbcan)//取消</p><p><b>  {</b></p><p>  System.exit(0);</p><p><b>  }</b></p><p><b>  }</b></p&g

67、t;<p><b>  4.2 管理員系統(tǒng)</b></p><p>  管理員權限是火車售票的最高權限,分為“用戶管理”和“票務統(tǒng)計”兩大塊,圖4.2為管理員登陸后的操作界面。</p><p>  圖4.2 管理員界面</p><p>  4.2.1 用戶管理</p><p>  在“用戶管理”模塊下可以進

68、行“增加用戶”、“查找用戶”、“刪除用戶”、“修改用戶”操作。如圖4.3所示。</p><p>  圖4.3 用戶管理界面</p><p><b> ?、?查找用戶</b></p><p>  管理員通過輸入該用戶號來查找用戶,如查找用戶號為2的用戶,其輸入界面如圖4.4所示,運行結果如圖4.5所示。具體實現(xiàn)思想為:將從輸入界面輸入的用戶號傳遞

69、給一條用于數(shù)據(jù)庫數(shù)據(jù)查找的SQL語句-------select語句來查找出擁有該用戶號的用戶的信息然后返回給“查找用戶”類最后顯示在“用戶管理”界面。</p><p>  圖4.4 “查找用戶”輸入界面</p><p>  圖4.5 查找用戶運行結果界面</p><p>  查詢用戶信息的代碼如下:</p><p>  public Chec

70、kuser(String name,String password,String popedom){</p><p>  super("查找用戶");</p><p>  _jl = new JLabel("號碼");</p><p>  _jt = new JTextField(10);</p><p&g

71、t;  _jb1 = new JButton("提交");</p><p>  _jb2 = new JButton("返回");</p><p>  jp1= new JPanel();</p><p>  jp2= new JPanel();</p><p>  username = name;&l

72、t;/p><p>  userpassword = password;</p><p>  userpopedom = popedom;</p><p>  if(conn.ifadmin(username,userpassword,userpopedom))</p><p><b>  {</b></p>&

73、lt;p><b>  }else{</b></p><p>  JOptionPane.showMessageDialog(this,"非法請求!");</p><p>  System.exit(0);</p><p><b>  }</b></p><p>  jp1.

74、add(_jl);</p><p>  jp1.add(_jt);</p><p>  jp2.add(_jb1);</p><p>  jp2.add(_jb2);</p><p>  _jb1.addActionListener(this);</p><p>  _jb2.addActionListener(thi

75、s);</p><p>  this.add(jp1,"Center");</p><p>  this.add(jp2,"South");</p><p><b>  pack();</b></p><p>  this.setVisible(true);</p>

76、<p>  this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);</p><p>  int W = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();</p><p>  int H = (int)Toolkit.getDefaultToolkit()

77、.getScreenSize().getHeight();</p><p>  this.setLocation((W-this.getWidth())/2,(H-this.getHeight())/2);</p><p><b>  }</b></p><p>  public Vector checkUser(String userno)

78、throws SQLException{//查詢用戶信息</p><p>  Vector v = new Vector();</p><p><b>  try {</b></p><p>  String sql = "select * from user where userno = ?";</p>&l

79、t;p><b>  try {</b></p><p>  ps = con.prepareStatement(sql);</p><p>  ps.setInt(1, Integer.valueOf(userno));</p><p>  rs = ps.executeQuery();</p><p>  } c

80、atch (SQLException e) {</p><p>  System.out.println(e.getMessage());</p><p><b>  }</b></p><p>  while (rs.next()) {</p><p>  UserVo s = new UserVo();</p&

81、gt;<p>  s.setUserno(rs.getString("userno"));</p><p>  s.setUsername(rs.getString("username"));</p><p>  s.setUserpassword(rs.getString("userpassword"));<

82、/p><p>  s.setUserpopedom(rs.getString("userpopedom"));</p><p><b>  v.add(s);</b></p><p><b>  }</b></p><p>  } catch (SQLException ex) {&

83、lt;/p><p>  Logger.getLogger(Conn.class.getName()).log(Level.SEVERE, null, ex);</p><p><b>  }finally{</b></p><p>  ps.close();</p><p>  con.close();</p>

84、<p><b>  }</b></p><p><b>  return v;</b></p><p><b>  }</b></p><p><b> ?、?增加用戶</b></p><p>  管理員可以根據(jù)需要通過該功能增加一個或多個用

85、戶,假設我們現(xiàn)在新增一個用戶,在“增加用戶”界面輸入用戶的信息之后,這些信息便會傳遞給一條用與插入數(shù)據(jù)的SQL語句------insert語句,增加用戶成功后便會在“用戶管理”界面的顯示區(qū)域內顯示出刷新后的用戶信息。其輸入用戶信息界面及運行界面分別如圖4.6和4.7所示。</p><p>  圖4.6 “增加用戶”輸入界面</p><p>  圖4.7 增加用戶運行結果界面</p&g

86、t;<p>  增加用戶的代碼如下:</p><p>  public class Addusers extends JFrame implements ActionListener {</p><p>  JTextField _jt1,_jt2,_jt3,_jt4;</p><p>  JButton _jb1,_jb2;</p>&

87、lt;p>  JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7;</p><p>  JLabel _jl1,_jl2,_jl3,_jl4;</p><p>  Conn conn = new Conn();</p><p>  String username,userpassword,userpopedom;</p><

88、;p>  public Addusers(String name,String password,String popedom) {</p><p>  super("添加用戶");</p><p>  username = name;</p><p>  userpassword = password;</p><p&

89、gt;  userpopedom = popedom;</p><p>  if(conn.ifadmin(username,userpassword,userpopedom))</p><p><b>  {</b></p><p><b>  }else{</b></p><p>  JOpti

90、onPane.showMessageDialog(this,"非法請求!");</p><p>  System.exit(0);</p><p><b>  }</b></p><p>  _jt1 = new JTextField(10);</p><p>  _jt2 = new JTextFi

91、eld(10);</p><p>  _jt3 = new JTextField(10);</p><p>  _jt4 = new JTextField(10);</p><p>  _jb1 = new JButton("提交");</p><p>  _jb2 = new JButton("返回"

92、);</p><p>  jp1 = new JPanel();</p><p>  jp2 = new JPanel();</p><p>  jp3 = new JPanel();</p><p>  jp4 = new JPanel();</p><p>  jp5 = new JPanel();</p&g

93、t;<p>  jp6 = new JPanel(new GridLayout(4,1));</p><p>  _jl1 = new JLabel("號 碼");</p><p>  _jl2 = new JLabel("姓 名");</p><p>  _jl3 = new JLabel("密

94、 碼");</p><p>  _jl4 = new JLabel("權 限");</p><p>  jp1.add(_jl1);</p><p>  jp1.add(_jt1);</p><p>  jp2.add(_jl2);</p><p>  jp2.add(_jt2);<

95、;/p><p>  jp3.add(_jl3);</p><p>  jp3.add(_jt3);</p><p>  jp4.add(_jl4);</p><p>  jp4.add(_jt4);</p><p>  jp5.add(_jb1);</p><p>  jp5.add(_jb2);&

96、lt;/p><p>  jp6.add(jp1);</p><p>  jp6.add(jp2);</p><p>  jp6.add(jp3);</p><p>  jp6.add(jp4);</p><p>  _jb1.addActionListener(this);</p><p>  _j

97、b2.addActionListener(this);</p><p>  this.add(jp6,"Center");</p><p>  this.add(jp5,"South");</p><p><b>  pack();</b></p><p>  this.setVi

98、sible(true);</p><p>  this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);</p><p>  int W = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();</p><p>  int H = (int)Too

99、lkit.getDefaultToolkit().getScreenSize().getHeight();</p><p>  this.setLocation((W-this.getWidth())/2,(H-this.getHeight())/2);</p><p><b>  }</b></p><p>  public void act

100、ionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if(e.getSource()==_jb1)</p><p><b>  {</b></p><p>  String no = _jt1.getText().trim();<

101、/p><p>  String name = _jt2.getText().trim();</p><p>  String password = _jt3.getText().trim();</p><p>  String popedom = _jt4.getText().trim();</p><p>  if(no.equals(&quo

102、t;")||name.equals("")||password.equals("")||!popedom.equals("admin")&&!popedom.equals("user"))</p><p><b>  {</b></p><p>  JOption

103、Pane.showMessageDialog(this,"資料不能為空或者\n權限只能為“admin”,“user”!");</p><p><b>  }else</b></p><p><b>  {</b></p><p>  if(conn.isDigitString(no)){//判斷用戶號碼

104、中的是不是都是數(shù)字</p><p>  int _no = Integer.parseInt(no);</p><p>  conn.adduser(_no,name,password,popedom);</p><p>  JOptionPane.showMessageDialog(this,"注冊成功!");</p><p

105、>  dispose();</p><p>  JOptionPane.showMessageDialog(this,"歡迎管理員回來!");</p><p>  new Usermanage(username,userpassword,userpopedom);</p><p><b>  }</b></p&g

106、t;<p><b>  else{</b></p><p>  JOptionPane.showMessageDialog(this,"號碼不能是英文!");</p><p><b>  }</b></p><p><b>  }</b></p><

107、;p><b>  }</b></p><p>  if(e.getSource()==_jb2){</p><p>  dispose();</p><p>  JOptionPane.showMessageDialog(this,"歡迎管理員回來!");</p><p>  new Userm

108、anage(username,userpassword,userpopedom);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  public void adduser(int num

109、ber,String name,String password,String popedom)//向用戶表中添加用戶</p><p><b>  {</b></p><p>  String sql = "insert into user(userno,username,userpassword,userpopedom) values(?,?,?,?)&qu

110、ot;;</p><p><b>  try{</b></p><p>  ps = con.prepareStatement(sql);</p><p>  ps.setInt(1,number);</p><p>  ps.setString(2,name);</p><p>  ps.set

111、String(3,password);</p><p>  ps.setString(4,popedom);</p><p>  ps.executeUpdate();//執(zhí)行插入語句并返回值為int類型</p><p>  ps.close();</p><p>  con.close();</p><p>  }c

112、atch(SQLException e){</p><p>  System.out.println (e.getMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  ⑶ 刪除用戶</b></p

113、><p>  管理員通過“查找用戶”功能查找到要刪除的用戶后在顯示區(qū)域選中該用戶或是直接在顯示區(qū)域選中要刪除的用戶點擊“刪除用戶”即可刪除該用戶并在顯示區(qū)列出刷新后的用戶信息。實現(xiàn)思想同查找用戶差不多,只是將實現(xiàn)的SQl語句換成delete語句。</p><p><b> ?、?修改用戶</b></p><p>  管理員可以通過“查找用戶”功能來

114、找到該用戶也可以直接在顯示區(qū)域內選擇要修改的用戶,在“修改用戶”界面,管理員可以修改處該用戶的用戶號之外 的其他信息。具體實現(xiàn)思想為:“修改用戶”界面根據(jù)需要修改完用戶信息后,用戶的信息便會以參數(shù)形式傳遞給用于修改數(shù)據(jù)的SQL語句-------update語句。然后將修改后的信息顯示在顯示區(qū)域內。假如現(xiàn)在我們要修改“高世杰”的信息,在修改界面(如圖4.8所示)將該用戶的密碼修改為“1341”修改為信息后運行結果如圖4.9所示。</

115、p><p>  圖4.8 “修改用戶”輸入界面</p><p>  圖4.9 修改用戶要運行結果界面</p><p>  修改用戶模塊的代碼如下:</p><p>  public Updateusers(Object no,Object name,Object password,Object popedom) {</p><

116、p>  super("修改用戶");</p><p>  _jl1 = new JLabel("號 碼");</p><p>  _jl2 = new JLabel("姓 名");</p><p>  _jl3 = new JLabel("密 碼");</p>

117、<p>  _jl4 = new JLabel("權 限");</p><p>  _jt1 = new JTextField(10);</p><p>  _jt1.setText(""+no);</p><p>  _jt1.setEditable(false);</p><p>  _

118、jt2 = new JTextField(10);</p><p>  _jt2.setText(""+name);</p><p>  _jt3 = new JTextField(10);</p><p>  _jt3.setText(""+password);</p><p>  _jt4 = ne

119、w JTextField(10);</p><p>  _jt4.setText(""+popedom);</p><p>  _jb1 = new JButton("提交");</p><p>  _jb2 = new JButton("返回");</p><p>  jp1 =

120、new JPanel();</p><p>  jp2 = new JPanel();</p><p>  jp3 = new JPanel();</p><p>  jp4 = new JPanel();</p><p>  jp5 = new JPanel();</p><p>  jp6 = new JPanel

121、(new GridLayout(4,1));</p><p>  jp1.add(_jl1);</p><p>  jp1.add(_jt1);</p><p>  jp2.add(_jl2);</p><p>  jp2.add(_jt2);</p><p>  jp3.add(_jl3);</p>&

122、lt;p>  jp3.add(_jt3);</p><p>  jp4.add(_jl4);</p><p>  jp4.add(_jt4);</p><p>  jp5.add(_jb1);</p><p>  jp5.add(_jb2);</p><p>  jp6.add(jp1);</p>

123、<p>  jp6.add(jp2);</p><p>  jp6.add(jp3);</p><p>  jp6.add(jp4);</p><p>  _jb1.addActionListener(this);</p><p>  _jb2.addActionListener(this);</p><p>

124、;  this.add(jp6,"Center");</p><p>  this.add(jp5,"South");</p><p><b>  pack();</b></p><p>  this.setVisible(true);</p><p>  this.setDefa

溫馨提示

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

評論

0/150

提交評論