火車售票系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
火車售票系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁(yè)
火車售票系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁(yè)
火車售票系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁(yè)
火車售票系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、沈 陽(yáng) 工 程 學(xué) 院課 程 設(shè) 計(jì)設(shè)計(jì)題目: 火車票管理系統(tǒng) 系 別 信息工程系 班級(jí) 網(wǎng)絡(luò)本101 學(xué)生姓名 劉雨嬌 金兆寧 姚宇 夏林 學(xué) 號(hào) 02 13 19 24 指導(dǎo)教師 孫憲麗 、楊弘平 職稱 副教授 、副教授 起止日期:2012年12月3日起至2012年12月7日止摘 要隨著internet和intranet技術(shù)的發(fā)展,人們對(duì)網(wǎng)絡(luò)信息的需求越來(lái)越大,對(duì)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的交互和查詢速度等性能的要求也越來(lái)越高。未來(lái)火車站的發(fā)展趨勢(shì)是完全自動(dòng)化的售票信息查詢,網(wǎng)絡(luò)訂票,智能化訂票,而且隨著計(jì)算機(jī)的普及,信息處理量的逐漸擴(kuò)大,手工處理方式已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足人們管理活動(dòng)的需要,各種工作都逐漸由手

2、工轉(zhuǎn)為自動(dòng)化,將使許多復(fù)雜、繁瑣、且需要很多人力的工作變得簡(jiǎn)單?;疖囌臼燮惫芾硎潜鞠到y(tǒng)的根本任務(wù),通過實(shí)現(xiàn)票務(wù)信息的計(jì)算機(jī)管理,以提高工作效率。實(shí)現(xiàn)計(jì)算機(jī)管理的最佳技術(shù)就是數(shù)據(jù)庫(kù)技術(shù)。我們可以利用數(shù)據(jù)庫(kù)將整個(gè)火車站的票務(wù)情況存入計(jì)算機(jī),再配置上功能豐富的用戶接口,以滿足用戶需求。 基于這樣的背景并考慮到一定的實(shí)際意義及于我們將實(shí)踐與理論結(jié)合起來(lái),我們組在這次課設(shè)中選擇了“火車售票管理系統(tǒng)”。在這次課設(shè)中我們使用java技術(shù)來(lái)開發(fā)該火車票管理系統(tǒng)。因而在本報(bào)告中介紹了系統(tǒng)的開發(fā)環(huán)境以及開發(fā)工具,對(duì)java在系統(tǒng)上的應(yīng)用設(shè)計(jì)思想做了一個(gè)全面的敘述,對(duì)于系統(tǒng)中數(shù)據(jù)庫(kù)中的數(shù)據(jù)表之間的具體關(guān)聯(lián)等方面也做

3、出了詳細(xì)說明,并且具體講述了系統(tǒng)各個(gè)功能模塊的設(shè)計(jì)以及實(shí)現(xiàn)過程。關(guān)鍵詞 火車售票管理系統(tǒng) java技術(shù) 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)目 錄摘要i第1章 緒論11.1 項(xiàng)目背景11.2 編寫目的11.3 開發(fā)環(huán)境11.3.1 硬件環(huán)境11.3.2 軟件環(huán)境1第2章 系統(tǒng)功能介紹32.1 系統(tǒng)功能總框圖32.2 模塊功能介紹32.2.1 系統(tǒng)登錄32.2.2 管理員登錄32.2.3 普通用戶登錄42.3組內(nèi)任務(wù)分工4第3章 數(shù)據(jù)庫(kù)設(shè)計(jì)53.1 數(shù)據(jù)庫(kù)需求分析53.2 數(shù)據(jù)流圖53.3 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)63.4 數(shù)據(jù)庫(kù)表的設(shè)計(jì)7第4章 系統(tǒng)功能實(shí)現(xiàn)104.1 登陸系統(tǒng)104.2 管理員系統(tǒng)114.2.1 用戶管理1

4、14.2.2 票務(wù)管理204.3 普通用戶登錄214.3.1 查詢214.3.2 售票27結(jié)論31致謝32參考文獻(xiàn)33第1章 緒論信息社會(huì)的高科技,商品經(jīng)濟(jì)的高效益,使計(jì)算機(jī)的應(yīng)用普及到經(jīng)濟(jì)和社會(huì)生活的各個(gè)領(lǐng)域。計(jì)算機(jī)與人類的關(guān)系愈來(lái)愈密切,計(jì)算機(jī)操作為人們帶了越來(lái)越多的便利。為了適應(yīng)現(xiàn)代社會(huì)人們高度強(qiáng)烈的時(shí)間觀念,火車票管理系統(tǒng)將會(huì)為人們帶來(lái)極大的方便。1.1 項(xiàng)目背景在火車大力普及的今天,一個(gè)火車站售票信息管理系統(tǒng)應(yīng)達(dá)到的目標(biāo)是提供及時(shí)、廣泛的信息服務(wù),加快信息檢索的效率,實(shí)況靈活的查詢,減輕管理人員制作報(bào)表和統(tǒng)計(jì)分析的負(fù)擔(dān),且系統(tǒng)規(guī)模不太大但又要保證支持日常工作的要求,以便系統(tǒng)應(yīng)易于擴(kuò)充

5、,方便日后統(tǒng)一聯(lián)網(wǎng)與管理,提高管理水平。根據(jù)以上的設(shè)計(jì)目標(biāo)和要求,本設(shè)計(jì)用java編程語(yǔ)言結(jié)合微軟的access數(shù)據(jù)庫(kù)進(jìn)行開發(fā),主要完成查詢、售票、及對(duì)票務(wù)和用戶進(jìn)行管理等功能。其實(shí)火車售票系統(tǒng)用計(jì)算機(jī)管理火車站票務(wù)信息的一種計(jì)算機(jī)應(yīng)用技術(shù)的創(chuàng)新,在計(jì)算機(jī)還未普及之前售票業(yè)務(wù)都是由工作人員人工完成的、查詢方式來(lái)操作的?,F(xiàn)在一般的車站售票業(yè)務(wù)都采用計(jì)算機(jī)智能化管理,采用計(jì)算機(jī)作為工具的實(shí)用的計(jì)算機(jī)訂單管理程序來(lái)幫助前臺(tái)管理員進(jìn)行更有效的車票業(yè)務(wù)查詢,出售管理工作?;疖囀燮惫芾硐到y(tǒng)是典型的信息管理系統(tǒng)(mis):其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起

6、數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫(kù)。而對(duì)于后者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。 經(jīng)過分析:我們使用java編程語(yǔ)言開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,尤其是數(shù)據(jù)窗口這一能方便而簡(jiǎn)潔操縱數(shù)據(jù)庫(kù)的智能化對(duì)象,首先在短時(shí)間內(nèi)建立系統(tǒng)應(yīng)用原型,然后對(duì)初始原型系統(tǒng)進(jìn)行需求迭代,不斷修正和改進(jìn),直到形成用戶滿意的可行系統(tǒng)。1.2 編寫目的電腦的漸漸普及,以及互聯(lián)網(wǎng)所容納的信息量大、內(nèi)容豐富、信息及時(shí)、準(zhǔn)確,更有相關(guān)信息的全面介紹與比較。為了人們?cè)诨疖囌举?gòu)買車票以及售票員對(duì)車票的、管理、查詢以及相應(yīng)的操作變的簡(jiǎn)單,開發(fā)這樣一個(gè)火車票管理系統(tǒng)成為很有必要的事情。1.3 開發(fā)環(huán)境1.3.1

7、硬件環(huán)境pc機(jī)。1.3.2 軟件環(huán)境 操作系統(tǒng):windows xp 開發(fā)工具:eclipseeclipse是著名的跨平臺(tái)的自由集成開發(fā)環(huán)境(ide)。最初主要用來(lái)java語(yǔ)言開發(fā),但是目前亦有人通過插件使其作為c+、python、php等其他語(yǔ)言的開發(fā)工具。eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持,使得eclipse擁有較佳的靈活性。許多軟件開發(fā)商以eclipse為框架開發(fā)自己的ide。eclipse采用的技術(shù)是ibm公司開發(fā)的(swt),這是一種基于java的窗口組件,類似java本身提供的awt和swing窗口組件;不過ibm聲稱swt比其他java窗口組件更有效率。ec

8、lipse的用戶界面還使用了gui中間層jface,從而簡(jiǎn)化了基于swt的應(yīng)用程序的構(gòu)建。eclipse的設(shè)計(jì)思想是:一切皆插件。eclipse核心很小,其它所有功能都以插件的形式附加于eclipse核心之上。eclipse基本內(nèi)核包括:圖形api (swt/jface), java開發(fā)環(huán)境插件(jdt),插件開發(fā)環(huán)境(pde)等。 數(shù)據(jù)庫(kù):microsoft access2003access 是微軟公司推出的基于windows的桌面關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(rdbms),是office系列應(yīng)用軟件之一。它提供了表、查詢、窗體、報(bào)表、頁(yè)、宏、模塊7種用來(lái)建立數(shù)據(jù)庫(kù)系統(tǒng)的對(duì)象;提供了多種向?qū)?、生成器?/p>

9、模板,把數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查詢、界面設(shè)計(jì)、報(bào)表生成等操作規(guī)范化;為建立功能完善的數(shù)據(jù)庫(kù)管理系統(tǒng)提供了方便,也使得普通用戶不必編寫代碼,就可以完成大部分?jǐn)?shù)據(jù)管理的任務(wù)。 access是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),其主要特點(diǎn)如下: 1) 存儲(chǔ)方式單一 access管理的對(duì)象有表、查詢、窗體、報(bào)表、頁(yè)、宏和模塊,以上對(duì)象都存放在后綴為(.mdb)的數(shù)據(jù)庫(kù)文件種,便于用戶的操作和管理。 2) 面向?qū)ο?access是一個(gè)面向?qū)ο蟮拈_發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)據(jù)庫(kù)系統(tǒng)中的各種功能對(duì)象化,將數(shù)據(jù)庫(kù)管理的各種功能封裝在各類對(duì)象中。它將一個(gè)應(yīng)用系統(tǒng)當(dāng)作是由一系列對(duì)象組成的,對(duì)每個(gè)對(duì)象它都定義一組方法和屬性,以定

10、義該對(duì)象的行為和外國(guó),用戶還可以按需要給對(duì)象擴(kuò)展方法和屬性。通過對(duì)象的方法、屬性完成數(shù)據(jù)庫(kù)的操作和管理,極大地簡(jiǎn)化了用戶的開發(fā)工作。同時(shí),這種基于面向?qū)ο蟮拈_發(fā)方式,使得開發(fā)應(yīng)用程序更為簡(jiǎn)便。 3)界面友好、易操作 access是一個(gè)可視化工具,是風(fēng)格與windows完全一樣,用戶想要生成對(duì)象并應(yīng)用,只要使用鼠標(biāo)進(jìn)行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報(bào)表設(shè)計(jì)器以及數(shù)據(jù)庫(kù)向?qū)А⒈硐驅(qū)А⒉樵兿驅(qū)?、窗體向?qū)А?bào)表向?qū)У裙ぞ?,使得操作?jiǎn)便,容易使用和掌握。 4)集成環(huán)境、處理多種數(shù)據(jù)信息 access基于windows操作系統(tǒng)下的集成開發(fā)環(huán)境,該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ撸?/p>

11、極大地提高了開發(fā)人員的工作效率,使得建立數(shù)據(jù)庫(kù)、創(chuàng)建表、設(shè)計(jì)用戶界面、設(shè)計(jì)數(shù)據(jù)查詢、報(bào)表打印等可以方便有序地進(jìn)行。 5)access支持odbc(開發(fā)數(shù)據(jù)庫(kù)互連,open data base connectivity),利用access強(qiáng)大的dde(動(dòng)態(tài)數(shù)據(jù)交換)和ole(對(duì)象的聯(lián)接和嵌入)特性,可以在一個(gè)數(shù)據(jù)表中嵌入位圖、聲音、excel表格、word文檔,還可以建立動(dòng)態(tài)的數(shù)據(jù)庫(kù)報(bào)表和窗體等。access還可以將程序應(yīng)用于網(wǎng)絡(luò),并與網(wǎng)絡(luò)上的動(dòng)態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫(kù)訪問頁(yè)對(duì)象生成html文件,輕松構(gòu)建internet/intranet的應(yīng)用。第2章 系統(tǒng)功能介紹2.1 系統(tǒng)功能總框圖系統(tǒng)功能

12、分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成。根據(jù)系統(tǒng)分析確定的邏輯模型,確定新系統(tǒng)的物理模型,即計(jì)算機(jī)化信息系統(tǒng)應(yīng)用軟件的總體結(jié)構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì),并提出系統(tǒng)配置方案,繼而對(duì)物理模型進(jìn)行詳細(xì)的設(shè)計(jì)。主要內(nèi)容有:代碼設(shè)計(jì),用戶界面設(shè)計(jì),處理過程設(shè)計(jì),編寫系統(tǒng)設(shè)計(jì)說明書。系統(tǒng)設(shè)計(jì)是以系統(tǒng)分析為基礎(chǔ),而系統(tǒng)設(shè)計(jì)又是系統(tǒng)實(shí)施的基礎(chǔ),系統(tǒng)設(shè)計(jì)的主要任務(wù)是代碼設(shè)計(jì)、物理設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、功能結(jié)構(gòu)圖設(shè)計(jì)。本火車票管理系統(tǒng)功能包括用戶登錄、用戶信息管理、火車票信息管理、火車票信息查詢等如圖2.1所示。圖2.1 系統(tǒng)功能圖2.2 模塊功能介紹2.2.1 系統(tǒng)登錄火車票管理系統(tǒng)可以分為2種登錄方式登錄系統(tǒng),分別為管理員、

13、普通用戶。考慮到數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全性和用戶的權(quán)益,該系統(tǒng)采用“用戶標(biāo)識(shí)”和“口令”相結(jié)合的數(shù)據(jù)庫(kù)安全技術(shù),并通過自動(dòng)認(rèn)證用戶的“權(quán)限”來(lái)判斷用戶應(yīng)該登陸到的界面。其中管理員使用密碼登錄可以直接登錄到管理系統(tǒng),進(jìn)行火車票信息和用戶信息進(jìn)行管理;普通用戶使用密碼登錄到用戶界面,可以在對(duì)火車票查詢的基礎(chǔ)上對(duì)乘客所要求買的車票信息進(jìn)行查詢和填寫以及火車票記錄的打印等操作。2.2.2 管理員登錄管理員是該火車售票系統(tǒng)數(shù)據(jù)的直接管理者,他對(duì)該系統(tǒng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)享有所有的權(quán)限。針對(duì)這一點(diǎn),管理員管理界面包含了“用戶管理”、“票務(wù)管理”以及“系統(tǒng)幫助”三個(gè)選項(xiàng)。(1)用戶管理用戶管理界面是管理員才能進(jìn)入的界面

14、,在該窗口中,管理員可以對(duì)使用該系統(tǒng)的用戶進(jìn)行管理,具體包括“查找用戶”、“增加用戶”、“刪除用戶”、“修改用戶”等功能,并將各個(gè)子功能的結(jié)果顯示在窗口左邊的顯示區(qū)域內(nèi),初次登陸此界面時(shí)顯示區(qū)域內(nèi)的信息是所有用戶的信息。通過該模塊的功能,管理員可以很方便的對(duì)使用該系統(tǒng)的用戶進(jìn)行管理。(2)票務(wù)管理顧名思義“票務(wù)管理”就是對(duì)火車票進(jìn)行的管理,在此模塊中我們可以進(jìn)行“所有票數(shù)”、“賣出票數(shù)”等的預(yù)覽。運(yùn)行界面如圖2.2所示。圖2.2“票務(wù)管理”窗口2.2.3 普通用戶登錄在這個(gè)功能模塊里普通用戶即售票員可以進(jìn)行火車及或火車票的信息進(jìn)行查詢及售票。查詢子功能中可以“按車次查詢”,也可以“按車站查詢”

15、;在售票子功能中選擇好車票相關(guān)信息后并核對(duì)確認(rèn)好乘客需要次車票后可以可預(yù)覽車票信息;如果乘客需要數(shù)據(jù)單,則可以點(diǎn)擊“打印”來(lái)打印數(shù)據(jù)單。查詢:“查詢”功能中的“按車次查詢”和“按車站查詢”思想相差無(wú)幾,這里我們重點(diǎn)說明“按車次查詢”。如現(xiàn)在乘客詢問“t1”的火車具體信息及車票信息或者是購(gòu)買“t1”的車票,售票員便在“火車票”窗口選擇“按車次查詢”,然后在“車次”一欄中輸入“t1”以及選擇好日期以后點(diǎn)擊“查詢”便會(huì)出發(fā)相應(yīng)的查詢事件即將“車次”和“日期”傳遞給查詢語(yǔ)句后將數(shù)據(jù)庫(kù)中各個(gè)表中的相關(guān)信息查詢出來(lái)顯示在“火車票”窗口相應(yīng)的地方,具體包括始發(fā)站、終點(diǎn)站、發(fā)車時(shí)間、剩余票數(shù)、單價(jià)等信息。售票

16、:在用戶選定了需要的票之后,點(diǎn)擊確定按鈕之后,會(huì)彈出電子票窗口。在購(gòu)票成功之后,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新操作,這就是售票系統(tǒng)的主要功能。2.3 組內(nèi)任務(wù)分工表2.1 組內(nèi)任務(wù)分工姓名任務(wù)分工成績(jī)姚宇(組長(zhǎng))數(shù)據(jù)庫(kù)連接與數(shù)據(jù)交互、用戶管理(增加、查找、修改、刪除)金兆寧數(shù)據(jù)庫(kù)需求分析、選擇車票(打印)夏林?jǐn)?shù)據(jù)流圖、票務(wù)管理(已賣票、所有票)劉雨嬌數(shù)據(jù)庫(kù)設(shè)計(jì)、用戶登錄、系統(tǒng)幫助(車票顯示)第3章 數(shù)據(jù)庫(kù)設(shè)計(jì)火車票管理系統(tǒng)是一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),各類數(shù)據(jù)的所有信息都是保存在數(shù)據(jù)庫(kù)中。在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開發(fā)進(jìn)程中,數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)是一個(gè)非常重要的問題。我們這里所說的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)是指數(shù)據(jù)庫(kù)中各個(gè)表結(jié)構(gòu)的設(shè)計(jì)

17、,包括信息保存在哪個(gè)表格中,各個(gè)表的結(jié)構(gòu)如何以及各個(gè)表之間的關(guān)系如何等。數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響,好的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)會(huì)減少數(shù)據(jù)庫(kù)的存儲(chǔ)量,數(shù)據(jù)庫(kù)的完整性和一致性比較高,系統(tǒng)具有較快的響應(yīng)速度,簡(jiǎn)化基于數(shù)據(jù)庫(kù)的應(yīng)用程序的實(shí)現(xiàn)等。由數(shù)據(jù)庫(kù)設(shè)計(jì)的重要性,人們提出了許多數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的技術(shù)。但是這些設(shè)計(jì)方法和設(shè)計(jì)者的工作經(jīng)驗(yàn)有很大關(guān)系。因此要從根本上解決所有數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的問題,就需要多實(shí)踐,在實(shí)踐中積累經(jīng)驗(yàn)和教訓(xùn),最終成為數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的專家。3.1 數(shù)據(jù)庫(kù)需求分析數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的一個(gè)非常重要的階段就是數(shù)據(jù)庫(kù)需求分析階段。在這個(gè)階段主要是收集基本數(shù)據(jù)以及數(shù)據(jù)處

18、理流程,為以后進(jìn)一步設(shè)計(jì)打下基礎(chǔ)。需求分析主要解決兩個(gè)問題:內(nèi)容要求:調(diào)查應(yīng)用系統(tǒng)用戶所操作的數(shù)據(jù),決定的數(shù)據(jù)庫(kù)中存儲(chǔ)什么數(shù)據(jù)。處理要求:調(diào)查應(yīng)用系統(tǒng)用戶要求對(duì)數(shù)據(jù)進(jìn)行什么樣的處理,理數(shù)據(jù)庫(kù)中的各種數(shù)據(jù)之間的關(guān)系如何。解決這兩個(gè)問題的時(shí)候,程序設(shè)計(jì)人員需要向應(yīng)用系統(tǒng)的用戶做詳細(xì)調(diào)查,保證信息收集的完整性,否則有可能后面所做的所有工作都白白浪費(fèi)。現(xiàn)在軟件開發(fā)過程中最常用的需求分析技術(shù)是快速原型法,其實(shí)質(zhì)就是快速建立展示目標(biāo)產(chǎn)品主要功能的軟件,在開發(fā)過程中根據(jù)用戶反饋對(duì)模型不斷修改、完善。因此其最重要的一方面體現(xiàn)在“快速”上,要盡可能快地建立原型。第二個(gè)方面是所構(gòu)造的原型必須可以改變,可以根據(jù)用戶

19、反饋不斷更改、完善。在開發(fā)本系統(tǒng)過程中,基本遵循快速原型法原則,經(jīng)過初步調(diào)研后,先建立應(yīng)用程序框架,然后根據(jù)與用戶的交流,在原型的基礎(chǔ)上不斷修改、完善,直到最后交付使用。這種方法最大的優(yōu)點(diǎn)是開發(fā)周期短、見效快、實(shí)用性強(qiáng)。在此系統(tǒng)中用戶中的管理員需求對(duì)火車和火車票進(jìn)行保存、更新,對(duì)普通用戶進(jìn)行增加、刪除、查詢、修改;普通則要求對(duì)火車票的相關(guān)信息進(jìn)行查詢、打印,將火車票準(zhǔn)確及時(shí)的賣出給乘客。這就需要數(shù)據(jù)庫(kù)結(jié)構(gòu)能充分滿足各種信息的輸入與輸出,實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),方便用戶訪問系統(tǒng)中的數(shù)據(jù),它與文件系統(tǒng)的重要區(qū)別是數(shù)據(jù)的充分共享,交叉訪問,與應(yīng)用程序的高度獨(dú)立性。3.2 數(shù)據(jù)流圖結(jié)構(gòu)化

20、方法使用數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的變化過程。數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系統(tǒng)的邏輯處理的功能,是一種功能模型?;疖嚻惫芾硐到y(tǒng)的數(shù)據(jù)流圖如下圖3.1所示。圖3.1數(shù)據(jù)流圖3.3 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)這一階段是在需求分析的基礎(chǔ)上,設(shè)計(jì)出能夠滿足需求的各種實(shí)體,以及它們之間的關(guān)系,且為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。這個(gè)階段不用考慮所采用得數(shù)據(jù)庫(kù)管理系統(tǒng)、操作系統(tǒng)、機(jī)器類型等問題。這個(gè)階段可用的工具很多。用得最多的是e-r圖(entity-relation,實(shí)體-關(guān)系圖),另外還有許多計(jì)算機(jī)輔助工具(computer a

21、ided software, case)可以幫助進(jìn)行設(shè)計(jì)。本系統(tǒng)都是采用e-r圖的方法進(jìn)行數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)的,現(xiàn)在先對(duì)e-r圖的方法進(jìn)行一下簡(jiǎn)單的介紹。e-r圖是描述數(shù)據(jù)實(shí)體及其關(guān)系的一種直觀的描述工具。這種圖中有: 實(shí)體。用方框表示,方框內(nèi)為實(shí)體名稱。在火車售票系統(tǒng)中的實(shí)體有用戶、車票。 實(shí)體的各種屬性。用橢圓表示,橢圓內(nèi)為屬性名稱。使用線段將其和相應(yīng)的實(shí)體連接起來(lái)。概括起來(lái),該系統(tǒng)中各實(shí)體的屬性如下:1) 用戶(用戶名,用戶號(hào)、用戶密碼、用戶權(quán)限);2) 車票(車票號(hào),車票類型,票價(jià));3) 火車(火車號(hào),車型,始發(fā)時(shí)間,始發(fā)站,終點(diǎn)站,途經(jīng)站,運(yùn)行時(shí)間,全程行程);4) 車站(車站號(hào),

22、車站名);5) 車廂(車廂號(hào),類型,總票數(shù),剩余票數(shù));6) 實(shí)體之間的聯(lián)系。用菱形表示,菱形內(nèi)部為聯(lián)系的名稱。圖3.2 總e-r圖3.4 數(shù)據(jù)庫(kù)表的設(shè)計(jì)在做出數(shù)據(jù)庫(kù)的具體表之前,我們需要有相應(yīng)的概念結(jié)構(gòu)。概念結(jié)構(gòu)是獨(dú)立于實(shí)際數(shù)據(jù)模型的,必須將其轉(zhuǎn)化為邏輯結(jié)構(gòu)后才能進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用設(shè)計(jì)。也就是要將上面的數(shù)據(jù)庫(kù)概念轉(zhuǎn)化為access數(shù)據(jù)庫(kù)所支持的實(shí)際數(shù)據(jù)模型。在上面的實(shí)體與實(shí)體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫(kù)中的表格,以及各個(gè)表格之間的關(guān)系。具體關(guān)系模式如下: 用戶信息(用戶id,登錄名,用戶密碼,用戶權(quán)限);車票(票號(hào),車票類型,票價(jià));車站信息(車站號(hào),車站名);車廂信息(車廂編號(hào),火車編號(hào),類型

23、,座位總數(shù),剩余數(shù)量);火車信息(火車號(hào),車型,始發(fā)時(shí)間,始發(fā)站,終點(diǎn)站,途經(jīng)站,運(yùn)行時(shí)間,全程行程);管理/賣票(票號(hào),火車號(hào));“火車票管理系統(tǒng)”的數(shù)據(jù)庫(kù)名稱為trainticket,數(shù)據(jù)庫(kù)中包含6張表。下面根據(jù)系統(tǒng)的關(guān)系模式分別給出數(shù)據(jù)表概要說明和主要數(shù)據(jù)表的結(jié)構(gòu),每個(gè)表格表示數(shù)據(jù)庫(kù)中的一個(gè)表。按照關(guān)系模式可分為tickettable表描述車票信息(如表3.3所示)、salesticket表描述賣票聯(lián)系(如表3.4所示)、brailway表描述車廂信息(如表3.5所示)、users表描述用戶信息(如表3.6所示)、trainstage表描述車站信息(如表3.7所示)、trainstati

24、on 表描述火車信息(如表3.8所示)。表3.3 tickettable表字段名稱字段類型約束條件ttypeno車票號(hào)char(10)主鍵tickettype車票類型char(10)not nullcharge票價(jià)float(8,2)not null表3.4 salesticket 表字段名稱字段類型約束條件ticketno車票編號(hào)char(10)主鍵,參照tickettable表trainno火車編號(hào)char(10)主鍵,參照trainstation表表3.5 brailway表字段名稱字段類型約束條件trainno火車編號(hào)char(10)主鍵railwayno車廂號(hào)int(10)主鍵rai

25、lwaytype類型char(10)not nullseatcount總票數(shù)int(10)unsigned not nulluseable剩余票數(shù)int(10)unsigned not null表3.6 users表字段名稱字段類型約束條件userno用戶號(hào)碼int(10)主鍵username用戶名char(10)not nulluserpassword用戶密碼char(10)not nulluserpopedom用戶權(quán)限char(10)not null表3.7 trainstage 表字段名稱字段類型約束條件stagenameindex站號(hào)char(10)主鍵stagename站名varch

26、ar(50)not null表3.8 trainstation表字段名稱字段類型約束條件trainno火車編號(hào)char(10)主鍵traintype車型char(10)not nullstartstage始發(fā)站varchar(45)not null,參照表trainstagearrivestage終點(diǎn)站varchar(45)not null,參照表trainstagechangetrain途經(jīng)站varchar(45)not null,參照表trainstagearrivetime到達(dá)時(shí)間char(10)not nullexittime運(yùn)行時(shí)間char(10)not nullrunmileage

27、全程行程int(10not null第4章 系統(tǒng)功能實(shí)現(xiàn)4.1 登陸系統(tǒng)我們?cè)跀?shù)據(jù)庫(kù)中設(shè)計(jì)了管理員權(quán)限(admin)與普通用戶權(quán)限(user)。通過判斷輸入的用戶名和密碼判斷權(quán)限,然后登陸系統(tǒng)。登陸界面如圖4.1所示。 圖4.1 登陸界面具體代碼實(shí)現(xiàn)如下:public void actionperformed(actionevent e)conn conn = new conn();if(e.getsource()=_jbsub)/提交 string username = _jfid.gettext().trim();/用戶名string userpassword = new string(_

28、jfpass.getpassword().trim();if(conn.login(username,userpassword)if(conn.ifadmin(username,userpassword,userpopedom)dispose();/關(guān)閉該窗口并釋放資源joptionpane.showmessagedialog(this,歡迎管理員登錄!);new manage(username,userpassword,userpopedom);/管理員管理事物類elsenew trainticket(username,userpassword);/車票查詢及售票類dispose();els

29、ejoptionpane.showmessagedialog(this,登錄失敗,請(qǐng)檢查密碼是否正確!);if(e.getsource()=_jbcan)/取消system.exit(0);4.2 管理員系統(tǒng)管理員權(quán)限是火車售票的最高權(quán)限,分為“用戶管理”和“票務(wù)統(tǒng)計(jì)”兩大塊,圖4.2為管理員登陸后的操作界面。圖4.2 管理員界面4.2.1 用戶管理在“用戶管理”模塊下可以進(jìn)行“增加用戶”、“查找用戶”、“刪除用戶”、“修改用戶”操作。如圖4.3所示。圖4.3 用戶管理界面 查找用戶管理員通過輸入該用戶號(hào)來(lái)查找用戶,如查找用戶號(hào)為2的用戶,其輸入界面如圖4.4所示,運(yùn)行結(jié)果如圖4.5所示。具體

30、實(shí)現(xiàn)思想為:將從輸入界面輸入的用戶號(hào)傳遞給一條用于數(shù)據(jù)庫(kù)數(shù)據(jù)查找的sql語(yǔ)句-select語(yǔ)句來(lái)查找出擁有該用戶號(hào)的用戶的信息然后返回給“查找用戶”類最后顯示在“用戶管理”界面。圖4.4 “查找用戶”輸入界面圖4.5 查找用戶運(yùn)行結(jié)果界面查詢用戶信息的代碼如下:public checkuser(string name,string password,string popedom) super(查找用戶); _jl = new jlabel(號(hào)碼); _jt = new jtextfield(10); _jb1 = new jbutton(提交); _jb2 = new jbutton(返回);

31、 jp1= new jpanel(); jp2= new jpanel(); username = name; userpassword = password; userpopedom = popedom; if(conn.ifadmin(username,userpassword,userpopedom) else joptionpane.showmessagedialog(this,非法請(qǐng)求!); system.exit(0); jp1.add(_jl); jp1.add(_jt); jp2.add(_jb1); jp2.add(_jb2); _jb1.addactionlistener(

32、this); _jb2.addactionlistener(this); this.add(jp1,center);this.add(jp2,south); pack(); this.setvisible(true); this.setdefaultcloseoperation(jframe.dispose_on_close); int w = (int)toolkit.getdefaulttoolkit().getscreensize().getwidth(); int h = (int)toolkit.getdefaulttoolkit().getscreensize().getheigh

33、t(); this.setlocation(w-this.getwidth()/2,(h-this.getheight()/2); public vector checkuser(string userno) throws sqlexception/查詢用戶信息 vector v = new vector(); try string sql = select * from user where userno = ?; try ps = con.preparestatement(sql); ps.setint(1, integer.valueof(userno); rs = ps.execute

34、query(); catch (sqlexception e) system.out.println(e.getmessage(); while (rs.next() uservo s = new uservo(); s.setuserno(rs.getstring(userno); s.setusername(rs.getstring(username); s.setuserpassword(rs.getstring(userpassword); s.setuserpopedom(rs.getstring(userpopedom); v.add(s); catch (sqlexception

35、 ex) logger.getlogger(conn.class.getname().log(level.severe, null, ex); finally ps.close(); con.close(); return v; 增加用戶管理員可以根據(jù)需要通過該功能增加一個(gè)或多個(gè)用戶,假設(shè)我們現(xiàn)在新增一個(gè)用戶,在“增加用戶”界面輸入用戶的信息之后,這些信息便會(huì)傳遞給一條用與插入數(shù)據(jù)的sql語(yǔ)句-insert語(yǔ)句,增加用戶成功后便會(huì)在“用戶管理”界面的顯示區(qū)域內(nèi)顯示出刷新后的用戶信息。其輸入用戶信息界面及運(yùn)行界面分別如圖4.6和4.7所示。圖4.6 “增加用戶”輸入界面圖4.7 增加用戶運(yùn)行結(jié)果

36、界面增加用戶的代碼如下:public class addusers extends jframe implements actionlistener jtextfield _jt1,_jt2,_jt3,_jt4;jbutton _jb1,_jb2;jpanel jp1,jp2,jp3,jp4,jp5,jp6,jp7;jlabel _jl1,_jl2,_jl3,_jl4;conn conn = new conn();string username,userpassword,userpopedom; public addusers(string name,string password,strin

37、g popedom) super(添加用戶); username = name; userpassword = password; userpopedom = popedom; if(conn.ifadmin(username,userpassword,userpopedom) else joptionpane.showmessagedialog(this,非法請(qǐng)求!); system.exit(0); _jt1 = new jtextfield(10); _jt2 = new jtextfield(10); _jt3 = new jtextfield(10); _jt4 = new jtex

38、tfield(10); _jb1 = new jbutton(提交); _jb2 = new jbutton(返回); jp1 = new jpanel(); jp2 = new jpanel(); jp3 = new jpanel(); jp4 = new jpanel(); jp5 = new jpanel(); jp6 = new jpanel(new gridlayout(4,1); _jl1 = new jlabel(號(hào) 碼); _jl2 = new jlabel(姓 名); _jl3 = new jlabel(密 碼); _jl4 = new jlabel(權(quán) 限); jp1.ad

39、d(_jl1); jp1.add(_jt1); jp2.add(_jl2); jp2.add(_jt2); jp3.add(_jl3); jp3.add(_jt3); jp4.add(_jl4); jp4.add(_jt4); jp5.add(_jb1); jp5.add(_jb2); jp6.add(jp1); jp6.add(jp2); jp6.add(jp3); jp6.add(jp4); _jb1.addactionlistener(this); _jb2.addactionlistener(this); this.add(jp6,center);this.add(jp5,south)

40、; pack(); this.setvisible(true); this.setdefaultcloseoperation(jframe.dispose_on_close); int w = (int)toolkit.getdefaulttoolkit().getscreensize().getwidth(); int h = (int)toolkit.getdefaulttoolkit().getscreensize().getheight(); this.setlocation(w-this.getwidth()/2,(h-this.getheight()/2); public void

41、 actionperformed(actionevent e) if(e.getsource()=_jb1) string no = _jt1.gettext().trim(); string name = _jt2.gettext().trim(); string password = _jt3.gettext().trim(); string popedom = _jt4.gettext().trim(); if(no.equals()|name.equals()|password.equals()|!popedom.equals(admin)&!popedom.equals(user)

42、joptionpane.showmessagedialog(this,資料不能為空或者n權(quán)限只能為“admin”,“user”!); else if(conn.isdigitstring(no)/判斷用戶號(hào)碼中的是不是都是數(shù)字 int _no = integer.parseint(no); conn.adduser(_no,name,password,popedom); joptionpane.showmessagedialog(this,注冊(cè)成功!); dispose(); joptionpane.showmessagedialog(this,歡迎管理員回來(lái)!); new usermanag

43、e(username,userpassword,userpopedom); else joptionpane.showmessagedialog(this,號(hào)碼不能是英文!); if(e.getsource()=_jb2) dispose(); joptionpane.showmessagedialog(this,歡迎管理員回來(lái)!); new usermanage(username,userpassword,userpopedom); public void adduser(int number,string name,string password,string popedom)/向用戶表中

44、添加用戶 string sql = insert into user(userno,username,userpassword,userpopedom) values(?,?,?,?); try ps = con.preparestatement(sql);ps.setint(1,number);ps.setstring(2,name);ps.setstring(3,password);ps.setstring(4,popedom);ps.executeupdate();/執(zhí)行插入語(yǔ)句并返回值為int類型ps.close();con.close(); catch(sqlexception e)

45、 system.out.println (e.getmessage(); 刪除用戶管理員通過“查找用戶”功能查找到要?jiǎng)h除的用戶后在顯示區(qū)域選中該用戶或是直接在顯示區(qū)域選中要?jiǎng)h除的用戶點(diǎn)擊“刪除用戶”即可刪除該用戶并在顯示區(qū)列出刷新后的用戶信息。實(shí)現(xiàn)思想同查找用戶差不多,只是將實(shí)現(xiàn)的sql語(yǔ)句換成delete語(yǔ)句。 修改用戶管理員可以通過“查找用戶”功能來(lái)找到該用戶也可以直接在顯示區(qū)域內(nèi)選擇要修改的用戶,在“修改用戶”界面,管理員可以修改處該用戶的用戶號(hào)之外 的其他信息。具體實(shí)現(xiàn)思想為:“修改用戶”界面根據(jù)需要修改完用戶信息后,用戶的信息便會(huì)以參數(shù)形式傳遞給用于修改數(shù)據(jù)的sql語(yǔ)句-update

46、語(yǔ)句。然后將修改后的信息顯示在顯示區(qū)域內(nèi)。假如現(xiàn)在我們要修改“高世杰”的信息,在修改界面(如圖4.8所示)將該用戶的密碼修改為“1341”修改為信息后運(yùn)行結(jié)果如圖4.9所示。圖4.8 “修改用戶”輸入界面圖4.9 修改用戶要運(yùn)行結(jié)果界面修改用戶模塊的代碼如下:public updateusers(object no,object name,object password,object popedom) super(修改用戶);_jl1 = new jlabel(號(hào) 碼); _jl2 = new jlabel(姓 名); _jl3 = new jlabel(密 碼); _jl4 = new jl

47、abel(權(quán) 限); _jt1 = new jtextfield(10);_jt1.settext(+no); _jt1.seteditable(false); _jt2 = new jtextfield(10);_jt2.settext(+name); _jt3 = new jtextfield(10);_jt3.settext(+password); _jt4 = new jtextfield(10);_jt4.settext(+popedom); _jb1 = new jbutton(提交); _jb2 = new jbutton(返回); jp1 = new jpanel(); jp2

48、 = new jpanel(); jp3 = new jpanel(); jp4 = new jpanel(); jp5 = new jpanel(); jp6 = new jpanel(new gridlayout(4,1); jp1.add(_jl1); jp1.add(_jt1); jp2.add(_jl2); jp2.add(_jt2); jp3.add(_jl3); jp3.add(_jt3); jp4.add(_jl4); jp4.add(_jt4); jp5.add(_jb1); jp5.add(_jb2); jp6.add(jp1); jp6.add(jp2); jp6.add

49、(jp3); jp6.add(jp4); _jb1.addactionlistener(this); _jb2.addactionlistener(this); this.add(jp6,center);this.add(jp5,south); pack(); this.setvisible(true); this.setdefaultcloseoperation(jframe.dispose_on_close); int w = (int)toolkit.getdefaulttoolkit().getscreensize().getwidth(); int h = (int)toolkit.getdefaulttoolkit().getscreensize().getheight(); this.setlocation(w-this.getwidth()/2,(h-this.getheight()/2); public boolean updateuser(string userno,string username,string userpassword,string userpopedom)/修改 int i=0; string sql = update user set username=

溫馨提示

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

評(píng)論

0/150

提交評(píng)論