第一篇:軟件項目開發(fā)計劃
1引言...............................1
1.1編寫目的...............................1
1.2 背景...............................1
1.3定義.........................1
1.4參考資料...............................1
2項目概述..............................1
2.1工作內容...............................1
2.2主要參加人員.......................1
2.3產品.........................2
2.3.1程序.........................2
2.3.2文件.........................2
2.3.3服務.........................2
2.3.4非移交的產品.......................2
2.4驗收標準...............................2
2.5完成項目的最遲期限.........................2
2.6本計劃的批準者和批準日期....................2
3實施計劃..............................2
3.1工作任務的分解與人員分工....................2
3.2接口人員...............................3
3.3進度.........................3
3.4預算.........................3
3.5關鍵問題...............................3
4支持條件..............................3
4.1計算機系統(tǒng)支持..........................3
4.2需由用戶承擔的工作.........................3
4.3由外單位提供的條件.........................4
5專題計劃要點.............................4
項目開發(fā)計劃(GB856T——88)1引言
1.1編寫目的說明:編寫這份軟件項目開發(fā)計劃的目的,并指出預期的讀者。
1.2 背景
說明:
a.待開發(fā)的軟件系統(tǒng)的名稱;
b.本項目的任務提出者、開發(fā)者、用戶及實現(xiàn)該軟件的計算中心或計算機網絡; c.該軟件系統(tǒng)同其他系統(tǒng)或其他機構的基本的相互來往關系。
1.3定義
列出本文件中用到的專門術語的定義和外文的首字母組詞的原詞組。
1.4參考資料
列出用得著的參考資料,如:
a.本項目的經核準的計劃任務書和合同、上級機關的批文;
b.屬于本項目的其他已發(fā)表的文件;
c.本文件中各處引用的文件、資料,包括所要用到的軟件開發(fā)標準。列出這些文件資料的標題、文件編號、發(fā)表日期和出版單位,說明能夠得到這些文件資料的來源。2項目概述
2.1工作內容
簡要地說明在本項目的開發(fā)中須進行的各項主要工作。
2.2主要參加人員
扼要說明參加本項目開發(fā)的主要人員的情況,包括他們的技術水平。
2.3產品
2.3.1程序
列出須移交給用戶的程序的名稱、所用地編程語言及存儲程序的媒體形式,并通過引用相關文件,逐項說明其功能和能力。
2.3.2文件
列出須移交用戶的每種文件的名稱及內容要點。
2.3.3服務
列出需向用戶提供的各項服務,如培訓安裝、維護和運行支持等,應逐項規(guī)定開始日期、所提供支持的級別和服務的期限。
2.3.4非移交的產品
說明開發(fā)集體應向本單位交出但不必向用戶移交的產品(文件甚至某些程序)。
2.4驗收標準
對于上述這些應交出的產品和服務,逐項說明或引用資料說明驗收標準。
2.5完成項目的最遲期限
2.6本計劃的批準者和批準日期
3實施計劃
3.1工作任務的分解與人員分工
對于項目開發(fā)中需要完成的各項工作,從需求分析、設計、實現(xiàn)、測試直到維護,包括文件的編制、審批、打印、分發(fā)工作,用戶培訓工作,軟件安裝工作等,按層次進行分解,指明每項任務的負責人和參加人員。
3.2接口人員
說明負責接口工作的人員及他們的職責,包括:
a.負責本項目同用戶的接口人員;
b.負責本項目同本單位各管理機構,如合同計劃管理部門、財務部門、質量管理部門等的接口人員;
c.負責本項目同個份合同負責單位的接口人員等。
3.3進度
對于需求分析、設計、編碼實現(xiàn)、測試、移交、培訓和安裝等工作,給出每項工作任務的預定開始日期、完成日期及所需資源,規(guī)定各項工作任務完成的先后順序以及表征每項工作任務完成的標志性事件(即所謂“里程碑)。
3.4預算
逐項列出本開發(fā)項目所需要的勞務(包括人員的數(shù)量和時間)以及經費的預算(包括辦公費、差旅費、機時費、資料費、通訊設備和專用設備的租金等)和來源。
3.5關鍵問題
逐項列出能夠影響整個項目成敗的關鍵問題、技術難點和風險,指出這些問題對項目的影響。
4支持條件
說明為支持本項目的開發(fā)所需要的各種條件和設施。
4.1計算機系統(tǒng)支持
逐項列出開發(fā)中和運行時所需的計算機系統(tǒng)支持,包括計算機、外圍設備、通訊設備、模擬器、編譯(或匯編)程序、操作系統(tǒng)、數(shù)據(jù)管理程序包、數(shù)據(jù)存儲能力和測試支持能力等,逐項給出有關到貨日期、使用時間的要求。
4.2需由用戶承擔的工作
逐項列出需要用戶承擔的工作和完成期限。包括需由用戶提供的條件及提供時間。
4.3由外單位提供的條件
逐項列出需要外單位分合同承包者承擔的工作和完成的時間,包括需要由外單位提供的條件和提供的時間。
5專題計劃要點
說明本項目開發(fā)中需制定的各個專題計劃(如分合同計劃、開發(fā)人員培訓計劃、測試計劃、安全保密計劃、質量保證計劃、配置管理計劃、用戶培訓計劃、系統(tǒng)安裝計劃等)的要點。
第二篇:軟件項目開發(fā)計劃書
軟件項目開發(fā)計劃書
軟件08-1班李巖200820205069
一、項目提出的背景和必要性
在信息化高速發(fā)展的時代,圖書管理系統(tǒng)已經漸漸的走進了國內外的許多圖書館,開發(fā)一套圖書管理系統(tǒng)能獲得良好的收益。
二、國內外市場分析
圖書管理系統(tǒng)在未來會逐漸的普及到全世界各個圖書館,具有很大的潛在市場。
三、項目主要開發(fā)和建設內容
圖書管理系統(tǒng)主要需要建設服務器,數(shù)據(jù)庫,已經搜索引擎,登陸客戶端等等。我們的開發(fā)目標是建設一個可以查詢書本基本信息,提供會員的登陸,以及實現(xiàn)憑借圖書證借閱書籍,查看用戶情況,設置管理員,查詢管理員信息,實現(xiàn)網絡查詢書籍信息。
四、項目實施的技術方案
圖書管理系統(tǒng)的開發(fā)在我國的技術早已經成熟,而由我們開發(fā)的圖書管理系統(tǒng)已經在x圖書館,y圖書館,得到了實現(xiàn)。因為我們有開發(fā)的經驗與技術的支持,開發(fā)這款圖書管理系統(tǒng)對我們來說已經輕車熟路??梢栽陬A定的時間實現(xiàn)一個性能優(yōu)良的圖書管理系統(tǒng)。
五、項目實施的現(xiàn)有基礎
Bigsoft?公司于1989年在上海注冊,本公司屬于股份集團,本公司的注冊資產是5000萬億元人民幣,本公司有編程人員30萬名,高級程序員1000名,主要業(yè)務是軟件項目的開發(fā),主要的產品有Bigsoft xp系統(tǒng),Bigsoft 2000系統(tǒng),Bigsoft 7系統(tǒng)等等。本公司的生產規(guī)模來說達到世界一流水平,技術水平達到世界一流水平。近年來,在我們公司ceo達芬奇的帶領下,公司的規(guī)模不斷的擴大,每年的純收入不斷增長。我公司具有很強的創(chuàng)新能力,攻克了世界上許多的軟件方面的難題。我公司具有良好的信用,在客戶間建立了很好的口碑。
六、項目組織機構和人員安排
本項目采取小組開發(fā)方式,預計人員是20人,其中項目經理1人,項目分管人員5人,項目的開發(fā)人員14人。本項目承擔單位負責人是項目經理李元霸。本項目由李元霸負責,李元霸,曾參見過Bigsoft xp系統(tǒng),Bigsoft 2000系統(tǒng),Bigsoft 7系統(tǒng)的開發(fā),具有豐富的經驗。
七、項目實施進度計劃
本項目預計用時3個月。本項目的開發(fā)地點是Bigsoft公司的27層,2709室。
八、項目資金需求及來源
本項目需要購買機器的總價是270萬元,人員開支300萬元,計劃外支出定為100萬元。
九、項目風險分析及應對措施
本項目預計開發(fā)成功率是90%,延時交付時間內的費用項目的開發(fā)公司負責50%,項目完全失敗的風險由雙方各負責50%。
第三篇:軟件項目開發(fā)計劃書
軟件項目開發(fā)計劃書
1.引言
1.1編寫目的開發(fā)基于互聯(lián)網的學生選課系統(tǒng),提高管理工作的效率、提高信息的開放性、改善學生和教師對其最新信息查詢的準確性。
1.2項目背景
某校在校生近5000人,每學期在期末都要進行一次對學生的學習質量測評,要求所有學生都要參加。以前測評的方式都是手工考核操作,由教務處發(fā)出試卷,每個同學填寫完成后交回到教務處。然后教務處再使用手工的方法對試卷進行統(tǒng)計匯總,最后得出學生的成績。
建議進行《學生成績考核系統(tǒng)》的開發(fā)。
我院計算機系具備進行該軟件系統(tǒng)開發(fā)的能力并承擔本軟件系統(tǒng)的開發(fā)與維護工作。該軟件系統(tǒng)由我院教務處使用。
1.3定義
《學生成績考核系統(tǒng)》以下簡稱《考核系統(tǒng)》。
1.4 參考資料
(1)” 學生成績考核系統(tǒng)系統(tǒng)定義報告”
(2)” 學生成績考核系統(tǒng)可行性研究報告”
2.主要內容
2.1 工作內容
系統(tǒng)所需要的基礎數(shù)據(jù)來源:
“考核系統(tǒng)”需要實現(xiàn)的功能包括兩大部分:
一是前臺的數(shù)據(jù)采集,具體包括:德育測試頁面、體育測試頁面、智力測試頁面、數(shù)據(jù)存儲頁面。
二是后臺的數(shù)據(jù)管理部分:包括測試設置、德育測試、體育測試與智力測試的數(shù)據(jù)統(tǒng)計及查詢。
2.2條件和限制
使用SQL SERVER 2010作為數(shù)據(jù)庫的建設工具,相關的管理程序開發(fā)主要使用SQL SERVER 2010及NET等。
2.3 產品
2.3.1 程序
可運行的程序包括:SQL SERVER 2010,Microsoft Visual Studio 2010
2.3.2 文檔
可行性研究報告,項目開發(fā)計劃書,軟件需求說明書,概要設計說明書,詳細設計說明書,數(shù)據(jù)庫設計說明書,操作手冊,測試計劃,測試分析報告,項目開發(fā)總結報告。
2.4 運行環(huán)境
《學生成績考核系統(tǒng)》應該運行在Windows XP 以及以上版本的平臺上。
2.5 驗收標準
《學生成績考核系統(tǒng)》能讓學生能成績考核和查看成績,教師能管理成績。
3.實施計劃
3.1 任務分解 需求分析:
學校每年新生入學,畢業(yè)生離校和各種其它變動,如學籍變動,個人信息修改。每學期學校者要開設一定的課程提供給學生根據(jù)自己的情況來選擇,最后的選擇結果要給出學生的課程表。如何有效的管理這些學生信息,幫助學校和老師管理和掌握這些情況,這就是學生信息管理系統(tǒng)需要完成的任務。下面用軟件工程的思想和方法完成該系統(tǒng)的設計過程。
功能:
個人信息查詢和修改,包括流動,注冊,更新管理
系統(tǒng)設計:
“中學生成績管理信息系統(tǒng)”包括四個模塊:成績錄入、班級統(tǒng)計、年級統(tǒng)計、系統(tǒng)功能。這五個模塊既相互聯(lián)系又相互獨立,班級統(tǒng)計、年級統(tǒng)計模塊必須以成績錄入為基礎。
(1)成績錄入模塊:
主要功能用來對中學生的成績進行收集和修改。具體包括中學生成績錄入、修改、增加、刪除、查詢、打印等功能,由于一些資料可以Word文檔或Excel表格輸入,故在此模塊中增加了導入、導出數(shù)據(jù)功能。成績錄入需要分班級、分
年級以及某個時間考試的各門功課的成績。修改要與成績錄入相對應。增加、刪除是對基本表的操作。查詢條件設置應該齊全,可以班級查詢,年級查詢,也可以姓名查詢,學號查詢等等。分成績單打印、報表打印等。
(2)班級統(tǒng)計模塊:
主要功能用來對中學生的成績以班級為單位進行處理。具體包括各班學生總成績、平均成績、班級排名及統(tǒng)計班級某分數(shù)段內的學生人數(shù);各個學生該科成績、班級排名及統(tǒng)計班級某分數(shù)段內的學生人數(shù)。各項統(tǒng)計僅對于某學期某次考試而言。
(3)年級統(tǒng)計模塊:
主要功能用來對中學生的成績以年級為單位進行處理。具體包括各年級學生總成績、年級排名統(tǒng)計年級某分數(shù)段內的學生人數(shù);各個學生該科成績、年級排名及統(tǒng)計、年級某分數(shù)段內的學生人數(shù)。各項統(tǒng)計僅對于某學期某次考試而言,在統(tǒng)計時,還應注意各年級考試科目不同。
(4)系統(tǒng)功能模塊:
包括幫助信息,關于系統(tǒng)及退出系統(tǒng)。
編碼:
測試計劃:進行黑盒測試
測試人員:
3.2 進度安排
需求分析: 第1周系統(tǒng)設計: 第2~3周編碼:第4~7周測試計劃與測試:第8~10周包裝和發(fā)布:第11周機動:第12周3.3 預算
開發(fā)費用:8000元
設備費及其他:5000元
合計:13000元
4.人員組織及分工(略)
5.交付期限
6.專題計劃要點(詳見后續(xù)內容)
第四篇:軟件項目開發(fā)計劃書
軟件項目開發(fā)計劃書
項目名稱:**********************
評審日期:引言
1.1編寫目的說明編寫這份項目開發(fā)計劃的目的,并指出預期的讀者。
1.2背景
說明:
a.待開發(fā)的軟件系統(tǒng)的名稱;
b.本項目的任務提出者、開發(fā)者、用戶及實現(xiàn)該軟件的計算中心或計算機網絡;c.該軟件系統(tǒng)同其他系統(tǒng)或其他機構的基本的相互來往關系。
1.3定義
列出本文件中用到的專門術語的定義和外文首字母組詞的原詞組。
1.4參考資料
列出用得著的參考資料,如:
a.本項目的經核準的計劃任務書或合同、上級機關的批文;
b.屬于本項目的其他已發(fā)表的文件;
c.本文件中各處引用的文件、資料,包括所要用到的軟件開發(fā)標準。列出這些文件資料的標題、文件編號、發(fā)表日期和出版單位,說明能夠得到這些文件資料的來源。項目概述
2.1工作內容
簡要地說明在本項目的開發(fā)中須進行的各項主要工作。
2.2主要參加人員
扼要說明參加本項目開發(fā)工作的主要人員的情況,包括他們的技術水平。
2.3產品
2.3.1程序
列出需移交給用戶的程序的名稱、所用的編程語言及存儲程序的媒體形式,并通過引用有關文件,逐項說明其功能和能力。
2.3.2文件
列出需移交給用戶的每種文件的名稱及內容要點。
2.3.3服務
列出需向用戶提供的各項服務,如培訓安裝、維護和運行支持等,應逐項規(guī)定開始日期、所提供支持的級別和服務的期限。
2.3.4非移交的產品
說明開發(fā)集體應向本單位交出但不必向用戶移交的產品(文件甚至某些程序)。
2.4驗收標準
對于上述這些應交出的產品和服務,逐項說明或引用資料說明驗收標準。
2.5完成項目的最遲期限
2.6本計劃的批準者和批準日期實施計劃
3.1工作任務的分解與人員分工
對于項目開發(fā)中需完成的各項工作,從需求分析、設計、實現(xiàn)、測試直到維護,包括文件的編制、審批、打印、分發(fā)工作,用戶培訓工作,軟件安裝工作等,按層次進行分解,指明每項任務的負責人和參加人員。
3.2接口人員
說明負責接口工作的人員及他們的職責,包括:
a.負責本項目同用戶的接口人員;
b.負責本項目同本單位各管理機構,如合同計劃管理部門、財務部門、質量管理部門等的接口人員;
c.負責本項目同各分合同負責單位的接口人員等。
3.3進度
對于需求分析、設計、編碼實現(xiàn)、測試、移交、培訓和安裝等工作,給出每項工作任務的預。定開始日期、完成日期及所需資源,規(guī)定各項工作任務完成的先后順序以及表征每項工作任務完成的標志性事件(即所謂“里程碑”)。
3.4預算
逐項列出本開發(fā)項目所需要的勞務(包括人員的數(shù)量和時間)以及經費的預算(包括辦公費、差旅費、機時費、資料費、通訊設備和專用設備的租金等)和來源。
3.5關鍵問題
逐項列出能夠影響整個項目成敗的關鍵問題、技術難點和風險,指出這些問題對項目的影響。支持條件
說明為支持本項目的開發(fā)所需要的各種條件和設施。
4.1計算機系統(tǒng)支持
逐項列出開發(fā)中和運行時所需的計算機系統(tǒng)支持,包括計算機、外圍設備、通訊設備、模擬器、編譯(或匯編)程序、操作系統(tǒng)、數(shù)據(jù)管理程序包、數(shù)據(jù)存儲能力和測試支持能力等,逐項給出有關到貨日期、使用時間的要求。
4.2需由用戶承擔的工作
逐項列出需要用戶承擔的工作和完成期限。包括需由用戶提供的條件及提供時間。
4.3由外單位提供的條件
逐項列出需要外單位分合同承包者承擔的工作和完成的時間,包括需要由外單位提供的條件和提供的時間。專題計劃要點
說明本項目開發(fā)中需制訂的各個專題計劃(如分合同計劃、開發(fā)人員培訓計劃、測試計劃、安全保密計劃、質量保證計劃、配置管理計劃、用戶培訓計劃、系統(tǒng)安裝計劃等)的要點。
第五篇:軟件項目開發(fā)總結報告模版
武漢理工大學《軟件開發(fā)工具》論文報告
火車票系統(tǒng)的開發(fā)
1引言
研究報告(1.研究計劃;2.完成的研究內容、研究方法、研究過程與結論、成果;3.比照研究計劃,分析超過或未達到預定目標、進度、研究內容的原因;4.參考文獻等。)
隨著人們生活水平和經濟水平的提高,網絡科技的全球化的發(fā)展,出游和出差的頻率越來越多。這大大的激發(fā)了交通水平的發(fā)展。其中,火車這種又方便有便宜的交通工具作為人們的首選,火車站的客運列車增加,客運量也隨之增加。原有的售票的方式已經不再能滿足旅客的需求了。為了方便旅客售票系統(tǒng)不僅僅只能售票也能夠了解列車的各種信息。這樣才能成為現(xiàn)在網絡社會的真的適應者。
2需求分析
該售票系統(tǒng)是融合了火車票銷售、退票、列車管理、車票管理、售票員管理、列車管理信息,以及售票信息查詢?yōu)橐惑w的綜合系統(tǒng)。該系統(tǒng)主要編寫的功能是列車和售票信息的查詢及售票功能。
2.1用戶
該系統(tǒng)主要有兩類用戶:管理員和售票員。管理員主要工作有車次管理,車票管理和售票員管理。對于每項功能都有添加,刪除和修改的功能。售票的主要工作是售票和退票。
2.2主要功能
該系統(tǒng)從功能方面可以分為四個方面: 登錄。不管你是管理員還是售票員必須登錄以后才可以進行系統(tǒng)允許的操作。當然要登錄的管理員和售票員都必須是再數(shù)據(jù)庫中已經發(fā)布的。
基本設置:該模塊主要是修改售票員的相關信息,修改列車的相關信息和修改車票的相
武漢理工大學《軟件開發(fā)工具》論文報告
關信息。這一塊的功能只有管理員才可以操作。其他的售票員是不可以對他進行操作的。
售票和退票:這部分工作主要是售票員來操作的。售票員根據(jù)買票人員提出的要求進行查詢。查詢的方式有兩種:一是根據(jù)車次查詢;一是根據(jù)目的地來查詢。退票主要是將已經出售的車票在列車開出之前再一次的返回到數(shù)據(jù)庫中,并繼續(xù)出售。
列車和車票查詢;當需要查詢列車信息或者是車票信息是所做的操作。
2.3基本流程
3開發(fā)過程
3.1內容
該程序包括三個部分數(shù)據(jù)庫的設計、通用模塊的實現(xiàn)、各個模塊的實現(xiàn)。
3.1.1 數(shù)據(jù)庫的設計:
將本系統(tǒng)所需的所有的數(shù)據(jù)都存儲到數(shù)據(jù)庫中。需要在數(shù)據(jù)庫中管理員表、售票員表、列車信息表和車票信息表。如圖所示:
武漢理工大學《軟件開發(fā)工具》論文報告
管理員表:
售票員表:
列車信息表:
武漢理工大學《軟件開發(fā)工具》論文報告
車票信息表:
3.1.2通用模塊的實現(xiàn):
通用模塊為了減少代碼的重復。在該系統(tǒng)中,對經常使用的操作進行封裝,如將多次需要調用的數(shù)據(jù)庫和操作數(shù)庫的增、刪、改和查等操作進行封裝。使代碼有很好的重用性,即使出現(xiàn)錯誤也很容易調試。如本程序中的Conn.java
import java.sql.*;public class Conn {
private static Connection con;private static final String DRIVER = “com.mysql.jdbc.Driver”;private static final String URL =“jdbc:mysql://localhost:3306/newdatabase”;private static final String NAME=“root”;private static final String PASSWORD=“021702190804”;static{
} public static Connection getConnection(){
} public static void closeCon(Connection con){
try { if(con!=null)con.close();try {
} return con;con=DriverManager.getConnection(URL,NAME,PASSWORD);e.printStackTrace();} catch(SQLException e){ try {
} Class.forName(DRIVER);e.printStackTrace();} catch(ClassNotFoundException e){ } catch(SQLException e){ 4
武漢理工大學《軟件開發(fā)工具》論文報告
}
} public static void closePt(PreparedStatement pt){
} public static void closeRs(ResultSet rs){
} try {
} if(rs!=null)rs.close();try {
} if(pt!=null)pt.close();} e.printStackTrace();} catch(Exception e){ e.printStackTrace();} catch(Exception e){ e.printStackTrace();
用戶登錄界面的設計、主界面的設計、基本設置模塊、銷售及退票模塊和列車及車票查詢模塊。
用戶登錄模塊:該部分是通過設計login.java來實現(xiàn)的。這部分代碼的作用是用戶首先選擇自己的登錄的是管理員還是售票員,然后輸入賬號和密碼。單擊登錄,用戶先判斷用戶登錄的類型,然后給sql變量賦SQL語句值,系統(tǒng)調用DAO.java類的login()傳入sql變量。.Login 代碼是:
import org.eclipse.swt.SWT;import org.eclipse.swt.events.*;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;
import com.huizhi.dao.DAO;public class Login {
private Text nameText;
private Text passText;
private Combo combo;
private String type;
private Display display = new Display();
private Shell shell = new Shell(display);
public Login(){
FormLayout layout = new FormLayout();
武漢理工大學《軟件開發(fā)工具》論文報告
layout.marginHeight =40;
layout.marginWidth =40;
shell.setLayout(layout);
shell.setText(“l(fā)ogin”);
Image image = new Image(display,“2.jpg”);
shell.setBackgroundImage(image);
setUIControl();
shell.pack();
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
private void setUIControl(){
Label username = new Label(shell, SWT.NONE);
username.setText(“username”);
nameText = new Text(shell, SWT.SINGLE | SWT.BORDER);
Label password = new Label(shell, SWT.NONE);
password.setText(“password”);
passText = new Text(shell, SWT.SINGLE | SWT.BORDER| SWT.PASSWORD);
// passText.setEchoChar('*');
Label select=new Label(shell, SWT.NONE);
select.setText(“ select
”);
Button submit = new Button(shell,SWT.PUSH);
submit.setText(“l(fā)ogin ”);
submit.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
type=combo.getText();
String name=nameText.getText();
String pass=passText.getText();
String sql=null;
boolean flag=false;
MessageBox box=new MessageBox(shell,SWT.OK);
if(“".equals(type)||”“.equals(name)||”“.equals(pass))
{
box.setMessage(”please input all the information“);
box.open();
return;
}
武漢理工大學《軟件開發(fā)工具》論文報告
DAO dao=new DAO();
if(”users“.equals(type)){
sql=”select * from users where username='“+name+”' and password='“+pass+”'“;
}else if(”admin“.equals(type)){
sql=”select * from admin where username='“+name+”' and password='“+pass+”'“;
}
flag=dao.login(sql);
if(flag)
{
shell.dispose();
new Main(type);
}else{
box.setMessage(”wrong name or password“);
box.open();
}
}
});
Button reset = new Button(shell, SWT.PUSH);
reset.setText(”cancel“);
String value[]={”users“,”admin“};
combo=new Combo(shell,SWT.DROP_DOWN);
combo.setItems(value);
FormData data = new FormData();
data.top = new FormAttachment(30,0);
username.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(username,0,SWT.CENTER);
data.left = new FormAttachment(username,10, SWT.RIGHT);
nameText.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(select,0,SWT.CENTER);
data.left = new FormAttachment(select,10, SWT.RIGHT);
combo.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(username,10, SWT.BOTTOM);
password.setLayoutData(data);
武漢理工大學《軟件開發(fā)工具》論文報告
data = new FormData();
data.top = new FormAttachment(password,0,SWT.CENTER);
data.left = new FormAttachment(nameText,0,SWT.LEFT);
passText.setLayoutData(data);
data=new FormData();
data.top=new FormAttachment(password,10,SWT.BOTTOM);
submit.setLayoutData(data);
data=new FormData();
data.top=new FormAttachment(submit,0,SWT.CENTER);
data.left=new FormAttachment(submit,20,SWT.RIGHT);
reset.setLayoutData(data);
}
public static void main(String[] args){
new Login();
} } DAO.java的login()代碼:
public boolean login(String sql){
boolean flag=false;
con=Conn.getConnection();
try {
pt=con.prepareStatement(sql);
rs=pt.executeQuery();
if(rs.next()){
flag=true;
}
} catch(SQLException e){
e.printStackTrace();
}finally{
Conn.closeRs(rs);
Conn.closePt(pt);
Conn.closeCon(con);
}
return flag;} 圖示為;
武漢理工大學《軟件開發(fā)工具》論文報告
實現(xiàn)主界面:
import org.eclipse.swt.*;import org.eclipse.swt.widgets.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.events.*;
public class Main {
private String type;Display display=Display.getCurrent();Shell shell=new Shell(display);public Main(String type){
this.type=type;
shell.setText(”Train ticketing system“);
shell.setLayout(new FillLayout());
Menu menu=new Menu(shell,SWT.BAR);
//第一個菜單
MenuItem basic=new MenuItem(menu,SWT.CASCADE);
basic.setText(”Basic Settings“);
if(”users“.equals(type))
{
basic.setEnabled(false);
}
Menu filemenu=new Menu(shell,SWT.DROP_DOWN);
MenuItem train=new MenuItem(filemenu,SWT.PUSH);
train.setText(”Trains Management“);
train.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
new TrainManage();
}
});
MenuItem ticket=new MenuItem(filemenu,SWT.PUSH);
ticket.setText(”Tickets Management“);
武漢理工大學《軟件開發(fā)工具》論文報告
ticket.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){
new TicketManage();} });MenuItem users=new MenuItem(filemenu,SWT.PUSH);users.setText(”Users Management“);users.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){
new UsersManage();} });MenuItem exit=new MenuItem(filemenu,SWT.PUSH);exit.setText(”quit“);basic.setMenu(filemenu);exit.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
display.dispose();} });//第二個菜單
MenuItem market=new MenuItem(menu,SWT.CASCADE);market.setText(”Sales and Refunds“);Menu editMenu=new Menu(shell,SWT.DROP_DOWN);MenuItem marketItem=new MenuItem(editMenu,SWT.PUSH);marketItem.setText(”Sales Tickets“);marketItem.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){
new XiaosTicket();} });MenuItem refundItem=new MenuItem(editMenu,SWT.PUSH);refundItem.setText(”Refunds Tickets“);market.setMenu(editMenu);refundItem.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){
new TuiTicket();} });//第三個菜單
MenuItem find=new MenuItem(menu,SWT.CASCADE);find.setText(”Trains and Tickets query“);Menu taiMenu=new Menu(shell,SWT.DROP_DOWN);MenuItem trainFind=new MenuItem(taiMenu,SWT.PUSH);
武漢理工大學《軟件開發(fā)工具》論文報告
trainFind.setText(”Trains query“);
trainFind.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
new FindTrain();
}
});
MenuItem ticketFind=new MenuItem(taiMenu,SWT.PUSH);
ticketFind.setText(”Ticket query“);
find.setMenu(taiMenu);
ticketFind.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
new FindTicket();
}
});
shell.setMenuBar(menu);
shell.setSize(500,400);
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
} }
圖示為:
基本設置模塊包括車次管理,車票管理和售票員管理。
車次管理主要是是對于列車的增加,刪除和修改等操作。其中包括它的相關的信息等。它是由TrainManagement.java.代碼如下: import java.util.List;11
武漢理工大學《軟件開發(fā)工具》論文報告
import org.eclipse.swt.SWT;import org.eclipse.swt.events.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;
import com.huizhi.dao.DAO;import com.huizhi.vo.Train;
public class TrainManage {
Display display=Display.getCurrent();
Shell tmshell=new Shell(display);
final Table table=new Table(tmshell,SWT.SINGLE|SWT.H_SCROLL|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER|SWT.FULL_SELECTION);
TrainManage tm=this;public TrainManage(){
RowLayout rowLayout=new RowLayout();
rowLayout.pack=true;
rowLayout.wrap=true;
rowLayout.justify=false;
rowLayout.marginTop=20;
tmshell.setLayout(rowLayout);
final TableColumn column1=new TableColumn(table,SWT.LEFT);
column1.setText(”Train ID“);
column1.setWidth(80);
final TableColumn column2=new TableColumn(table,SWT.LEFT);
column2.setText(”TrainNum“);
column2.setWidth(80);
final TableColumn column3=new TableColumn(table,SWT.LEFT);
column3.setText(”TrainType“);
column3.setWidth(80);
final TableColumn column4=new TableColumn(table,SWT.LEFT);
column4.setText(”Starting“);
column4.setWidth(80);
final TableColumn column5=new TableColumn(table,SWT.LEFT);
column5.setText(”startingTime“);
column5.setWidth(80);
final TableColumn column6=new TableColumn(table,SWT.LEFT);
column6.setText(”terminal“);
column6.setWidth(80);
final TableColumn column7=new TableColumn(table,SWT.LEFT);
column7.setText(”terminal Time“);
column7.setWidth(80);12
武漢理工大學《軟件開發(fā)工具》論文報告
final TableColumn column8=new TableColumn(table,SWT.LEFT);column8.setText(”is kongtiao“);column8.setWidth(80);final TableColumn column9=new TableColumn(table,SWT.LEFT);column9.setText(”price“);column9.setWidth(80);final TableColumn column10=new TableColumn(table,SWT.LEFT);column10.setText(”middleStation“);column10.setWidth(80);final TableColumn column11=new TableColumn(table,SWT.LEFT);column11.setText(”yzNum“);column11.setWidth(80);final TableColumn column12=new TableColumn(table,SWT.LEFT);column12.setText(”rzNum“);column12.setWidth(80);final TableColumn column13=new TableColumn(table,SWT.LEFT);column13.setText(”ywNum“);column13.setWidth(80);final TableColumn column14=new TableColumn(table,SWT.LEFT);column14.setText(”rwNum“);column14.setWidth(80);table.setHeaderVisible(true);table.setLinesVisible(true);freshData();table.setSize(800,200);Button add=new Button(tmshell,SWT.PUSH);add.setText(”add trains“);add.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
new AddTrain(tm);
} });Button update=new Button(tmshell,SWT.PUSH);update.setText(”modify“);update.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
TableItem[] selection=table.getSelection();
TableItem selectedRow=selection[0];
Train train=new Train();
train.setId(Integer.parseInt(selectedRow.getText(0)));
train.setTrainNum(selectedRow.getText(1));
train.setTrainType(selectedRow.getText(2));
train.setStarting(selectedRow.getText(3));13
武漢理工大學《軟件開發(fā)工具》論文報告
train.setStartingTime(selectedRow.getText(4));
train.setTerminal(selectedRow.getText(5));
train.setTerminalTime(selectedRow.getText(6));
train.setIskongTiao(selectedRow.getText(7));
train.setPrice(Float.parseFloat(selectedRow.getText(8)));
train.setMiddleStation(selectedRow.getText(9));
train.setYzNum(Integer.parseInt(selectedRow.getText(10)));
train.setRzNum(Integer.parseInt(selectedRow.getText(11)));
train.setYwNum(Integer.parseInt(selectedRow.getText(12)));
train.setRwNum(Integer.parseInt(selectedRow.getText(13)));
new UpdateTrain(train,tm);
}
});
Button delete=new Button(tmshell,SWT.PUSH);
delete.setText(”cancel“);
delete.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
MessageBox box=new MessageBox(tmshell,SWT.YES|SWT.NO);
box.setMessage(”Are you sure to cancel?“);
int num=box.open();
if(num==128)
return;
TableItem[] selection=table.getSelection();
TableItem selectedRow=selection[0];
DAO dao=new DAO();
String sql=”delete from train where id=“+selectedRow.getText(0)+”“;
int i=dao.update(sql);
if(i>0){
box.setMessage(”succeed“);
box.open();
table.remove(table.getSelectionIndex());
}else{
box.setMessage(”failure“);
box.open();
}
}
});14
武漢理工大學《軟件開發(fā)工具》論文報告
tmshell.setSize(1200,400);
tmshell.setText(”train Management“);
tmshell.open();
while(!tmshell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
tmshell.dispose();} public void freshData(){
table.removeAll();
try{
DAO dao=new DAO();
List list=dao.getAllTrain();
int number=list.size();
for(int i=0;i Train train=(Train)list.get(i); final TableItem item[]=new TableItem[number]; item[i]=new TableItem(table,SWT.None); item[i].setText(new String[]{Integer.toString(train.getId()),train.getTrainNum(),train.getTrainType(),train.getStarting(),train.getStartingTime(),train.getTerminal(),train.getTerminalTime(),train.getIskongTiao(),Float.toString(train.getPrice()),train.getMiddleStation(),Integer.toString(train.getYzNum()),Integer.toString(train.getRzNum()),Integer.toString(train.getYwNum()),Integer.toString(train.getYwNum())}); } }catch(Exception e){ e.printStackTrace(); } } } 在該段代碼中調用了DAO.java類中的getAllTrain()方法來獲得所有的車輛信息,然后以表格的形式顯示出來。DAO.java類中的getAllTrain()和update()方法如下: public int update(String sql){ int i=0; con=Conn.getConnection(); try { pt=con.prepareStatement(sql); i=pt.executeUpdate(); } catch(SQLException e){ 15 武漢理工大學《軟件開發(fā)工具》論文報告 e.printStackTrace();}finally{ Conn.closePt(pt); Conn.closeCon(con);}return i;} public List getAllTrain(){ List list=new ArrayList();con=Conn.getConnection();try { pt=con.prepareStatement(”select * from train“); rs=pt.executeQuery(); while(rs.next()){ Train train=new Train(); train.setId(rs.getInt(1)); train.setTrainNum(rs.getString(2)); train.setTrainType(rs.getString(3)); train.setStarting(rs.getString(4)); train.setStartingTime(rs.getString(5)); train.setTerminal(rs.getString(6)); train.setTerminalTime(rs.getString(7)); train.setIskongTiao(rs.getString(8)); train.setPrice(rs.getFloat(9)); train.setMiddleStation(rs.getString(10)); train.setYzNum(rs.getInt(11)); train.setRzNum(rs.getInt(12)); train.setYwNum(rs.getInt(13)); train.setRwNum(rs.getInt(14)); list.add(train); } } catch(SQLException e){ e.printStackTrace();}finally{ Conn.closeRs(rs); Conn.closePt(pt); Conn.closeCon(con);}return list;} 其中的update的功能是,首先連接數(shù)據(jù)庫,然后用傳遞過來的SQl語句在列表中刪除某輛列車的信息。getAllTrain()方法是顯示所有的列車的信息。圖示如下: 武漢理工大學《軟件開發(fā)工具》論文報告 在車次管理中的對于列車信息添加的功能是通過AddTrain.java 來實現(xiàn)的。代碼如下: import org.eclipse.swt.SWT;import org.eclipse.swt.events.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;import com.huizhi.dao.DAO; public class AddTrain { Display display=Display.getCurrent();Shell tmshell=new Shell(display);TrainManage trainmanage=null;public AddTrain(TrainManage tm){ trainmanage=tm;GridLayout gridlayout=new GridLayout();tmshell.setText(”add trains information“);gridlayout.numColumns=2;gridlayout.makeColumnsEqualWidth=true;tmshell.setLayout(gridlayout); GridData gd = new GridData(GridData.FILL_BOTH);Label l=new Label(tmshell,SWT.LEFT);l.setText(”trainNum“);l.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text trainNum=new Text(tmshell,SWT.NONE);trainNum.setSize(50,60);trainNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l1=new Label(tmshell,SWT.LEFT);l1.setText(”trainType“);l1.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text trainType=new Text(tmshell,SWT.LEFT);17 武漢理工大學《軟件開發(fā)工具》論文報告 trainType.setSize(30,40);trainType.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l2=new Label(tmshell,SWT.LEFT);l2.setText(”starting“);l2.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text starting=new Text(tmshell,SWT.LEFT);starting.setSize(30,40);starting.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l3=new Label(tmshell,SWT.LEFT);l3.setText(”startingtime“);l3.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text startingTime=new Text(tmshell,SWT.LEFT);startingTime.setSize(30,40);startingTime.setLayoutData(gd);Label l4=new Label(tmshell,SWT.LEFT);l4.setText(”terminal“);l4.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text terminal=new Text(tmshell,SWT.LEFT);terminal.setSize(30,40);terminal.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l5=new Label(tmshell,SWT.LEFT);l5.setText(”terminaltime“);l5.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text terminalTime=new Text(tmshell,SWT.LEFT);terminalTime.setSize(30,40);terminalTime.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l6=new Label(tmshell,SWT.LEFT);l6.setText(”iskongtiao“);l6.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text iskongTiao=new Text(tmshell,SWT.LEFT);18 武漢理工大學《軟件開發(fā)工具》論文報告 iskongTiao.setSize(30,40);iskongTiao.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l7=new Label(tmshell,SWT.LEFT);l7.setText(”price“);l7.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text price=new Text(tmshell,SWT.LEFT);price.setSize(30,40);price.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l8=new Label(tmshell,SWT.LEFT);l8.setText(”middleStation“);l8.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text middleStation=new Text(tmshell,SWT.LEFT);middleStation.setSize(30,40);middleStation.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l9=new Label(tmshell,SWT.LEFT);l9.setText(”yzNum“);l9.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text yzNum=new Text(tmshell,SWT.LEFT);yzNum.setSize(30,40);yzNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l10=new Label(tmshell,SWT.LEFT);l10.setText(”rzNum“);l10.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text rzNum=new Text(tmshell,SWT.LEFT);rzNum.setSize(30,40);rzNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l11=new Label(tmshell,SWT.LEFT);l11.setText(”ywNum“);l11.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);19 武漢理工大學《軟件開發(fā)工具》論文報告 final Text ywNum=new Text(tmshell,SWT.LEFT);ywNum.setSize(30,40);ywNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l12=new Label(tmshell,SWT.LEFT);l12.setText(”rwNum“);l12.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text rwNum=new Text(tmshell,SWT.LEFT);rwNum.setSize(30,40);rwNum.setLayoutData(gd);Button b=new Button(tmshell,SWT.LEFT);b.setText(”add“);b.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){ MessageBox box = new MessageBox(tmshell ,SWT.OK); if(”“.equals(trainNum.getText())||”“.equals(trainType.getText())||”“.equals(starting.getText()) ||”“.equals(startingTime.getText())||”“.equals(terminal.getText())||”“.equals(terminalTime.getText()) ||”“.equals(iskongTiao.getText())||”“.equals(price.getParent())||”“.equals(middleStation.getText())||”“.equals(yzNum.getText()) ||”“.equals(rzNum.getText())||”“.equals(ywNum.getText())||”“.equals(rwNum.getText())){ box.setMessage(”please input the right information“); box.open(); return; } DAO dao=new DAO(); String sql=”insert into train(trainNum,trainType,starting1,startingTime,terminal,terminalTime,iskongTiao,price,“ + ”middleStation,yzNum,rzNum,ywNum,rwNum)values('“+trainNum.getText()+”','“+trainType.getText()+”','“+starting.getText()+”',“ + ”'“+startingTime.getText()+”','“+terminal.getText()+”','“+terminalTime.getText()+”','“+iskongTiao.getText()+”',“ + 20 武漢理工大學《軟件開發(fā)工具》論文報告 ”'“+price.getText()+”','“+middleStation.getText()+”','“+yzNum.getText()+”','“+rzNum.getText()+”','“+ywNum.getText()+”','“+rwNum.getText()+”')“; int i=dao.update(sql); if(i>0){ box.setMessage(”add“); box.open(); fresh(); } } });Button b1=new Button(tmshell,SWT.LEFT);b1.setText(”quit“);b1.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){ tmshell.setVisible(false); } });tmshell.layout(); tmshell.setSize(500,450); tmshell.open(); while(!tmshell.isDisposed()){ if(!display.readAndDispatch()) display.sleep(); } tmshell.dispose();} public void fresh(){ trainmanage.freshData();} } 圖示為: 武漢理工大學《軟件開發(fā)工具》論文報告 修改列車功能是在UpdateTrain.java.類中實現(xiàn)的。代碼如下: import org.eclipse.swt.SWT;import org.eclipse.swt.events.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*; import com.huizhi.dao.DAO;import com.huizhi.vo.Train; public class UpdateTrain { private Train train;Display display=Display.getCurrent();Shell utrainshell=new Shell(display);TrainManage trainmanage=null;public UpdateTrain(Train train,TrainManage tm){ this.trainmanage=tm;this.train=train;GridLayout gridlayout=new GridLayout();utrainshell.setText(”modify train information“);gridlayout.numColumns=2;gridlayout.makeColumnsEqualWidth=true;utrainshell.setLayout(gridlayout); 武漢理工大學《軟件開發(fā)工具》論文報告 GridData gd = new GridData(GridData.FILL_BOTH);Label ll=new Label(utrainshell,SWT.LEFT);ll.setText(”train ID“);ll.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text num=new Text(utrainshell,SWT.NONE);num.setText(Integer.toString(train.getId()));num.setEnabled(false);num.setSize(50,60);num.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l=new Label(utrainshell,SWT.LEFT);l.setText(”TrainNum“);l.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text trainNum=new Text(utrainshell,SWT.NONE);trainNum.setText(train.getTrainNum());trainNum.setSize(50,60);trainNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l1=new Label(utrainshell,SWT.LEFT);l1.setText(”TrainType“);l1.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text trainType=new Text(utrainshell,SWT.LEFT);trainType.setText(train.getTrainType());trainType.setSize(30,40);trainType.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l2=new Label(utrainshell,SWT.LEFT);l2.setText(”starting“);l2.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text starting=new Text(utrainshell,SWT.LEFT);starting.setText(train.getStarting());starting.setSize(30,40);starting.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l3=new Label(utrainshell,SWT.LEFT);l3.setText(”startingTime“);23 武漢理工大學《軟件開發(fā)工具》論文報告 l3.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text startingTime=new Text(utrainshell,SWT.LEFT);startingTime.setText(train.getStartingTime());startingTime.setSize(30,40);startingTime.setLayoutData(gd);Label l4=new Label(utrainshell,SWT.LEFT);l4.setText(”terminal“);l4.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text terminal=new Text(utrainshell,SWT.LEFT);terminal.setText(train.getTerminal());terminal.setSize(30,40);terminal.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l5=new Label(utrainshell,SWT.LEFT);l5.setText(”terminalTime“);l5.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text terminalTime=new Text(utrainshell,SWT.LEFT);terminalTime.setText(train.getTerminalTime());terminalTime.setSize(30,40);terminalTime.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l6=new Label(utrainshell,SWT.LEFT);l6.setText(”iskongtiao“);l6.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text iskongTiao=new Text(utrainshell,SWT.LEFT);iskongTiao.setText(train.getIskongTiao());iskongTiao.setSize(30,40);iskongTiao.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l7=new Label(utrainshell,SWT.LEFT);l7.setText(”price“);l7.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text price=new Text(utrainshell,SWT.LEFT);price.setText(Float.toString(train.getPrice()));price.setSize(30,40);24 武漢理工大學《軟件開發(fā)工具》論文報告 price.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l8=new Label(utrainshell,SWT.LEFT);l8.setText(”middleStation“);l8.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text middleStation=new Text(utrainshell,SWT.LEFT);middleStation.setText(train.getMiddleStation());middleStation.setSize(30,40);middleStation.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l9=new Label(utrainshell,SWT.LEFT);l9.setText(”yzNum“);l9.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text yzNum=new Text(utrainshell,SWT.LEFT);yzNum.setText(Integer.toString(train.getYzNum()));yzNum.setSize(30,40);yzNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l10=new Label(utrainshell,SWT.LEFT);l10.setText(”rzNum“);l10.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text rzNum=new Text(utrainshell,SWT.LEFT);rzNum.setText(Integer.toString(train.getRzNum()));rzNum.setSize(30,40);rzNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l11=new Label(utrainshell,SWT.LEFT);l11.setText(”ywNum“);l11.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text ywNum=new Text(utrainshell,SWT.LEFT);ywNum.setText(Integer.toString(train.getYwNum()));ywNum.setSize(30,40);ywNum.setLayoutData(gd); gd = new GridData(GridData.FILL_BOTH);Label l12=new Label(utrainshell,SWT.LEFT);25 武漢理工大學《軟件開發(fā)工具》論文報告 l12.setText(”rwNum“);l12.setLayoutData(gd);gd = new GridData(GridData.FILL_BOTH);final Text rwNum=new Text(utrainshell,SWT.LEFT);rwNum.setText(Integer.toString(train.getRwNum()));rwNum.setSize(30,40);rwNum.setLayoutData(gd);Button b=new Button(utrainshell,SWT.LEFT);b.setText(”modify“);b.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){ MessageBox box = new MessageBox(utrainshell ,SWT.OK); if(”“.equals(trainNum.getText())||”“.equals(trainType.getText())||”“.equals(starting.getText()) ||”“.equals(startingTime.getText())||”“.equals(terminal.getText())||”“.equals(terminalTime.getText()) ||”“.equals(iskongTiao.getText())||”“.equals(price.getText())||”“.equals(middleStation.getText())||”“.equals(yzNum.getText()) ||”“.equals(rzNum.getText())||”“.equals(ywNum.getText())||”“.equals(rwNum.getText())){ box.setMessage(”please input right information then modify “); box.open(); return; } DAO dao=new DAO(); String sql=”update train set trainNum='“+trainNum.getText()+”',trainType='“+trainType.getText()+”',starting1='“+starting.getText()+”',“ + ”startingTime='“+startingTime.getText()+”',terminal='“+terminal.getText()+”',terminalTime='“+terminalTime.getText()+”',iskongTiao='“+iskongTiao.getText()+”',“ + ”price='“+price.getText()+”',middleStation='“+middleStation.getText()+”',yzNum='“+yzNum.getText()+”',rzNum='“+rzNum.getText()+”',ywNum='“+ywNum.getText()+”',rwNum='“+rwNum.getText()+”' where id='“+num.getText()+”'“; int i=dao.update(sql); if(i>0){ 26 武漢理工大學《軟件開發(fā)工具》論文報告 box.setMessage(”succeed“); box.open(); fresh(); }else{ box.setMessage(”failure“); box.open(); } } });Button b1=new Button(utrainshell,SWT.LEFT);b1.setText(”quit");b1.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){ utrainshell.setVisible(false); } });utrainshell.layout(); utrainshell.setSize(500,450); utrainshell.open(); while(!utrainshell.isDisposed()){ if(!display.readAndDispatch()) display.sleep(); } utrainshell.dispose();} public void fresh(){ trainmanage.freshData();} } 車票管理主要包括對車票的增加,刪除和修改的操作。由TicketManagement.java 實現(xiàn)。代碼類似上面的:(具體看壓縮包)。其中的查詢列車表和售票表調用的DAO.java類中selectTicket()方法。圖示為: 武漢理工大學《軟件開發(fā)工具》論文報告 售票員管理是對售票員進行增加、刪除和修改進行操作。由UserMannage.java類來實現(xiàn)。代碼類似以上。在該類中調用了DAO.java 類中getAllUser()方法。圖示為: 武漢理工大學《軟件開發(fā)工具》論文報告 售票及退票模塊包括兩部分:火車售票和退票。售票系統(tǒng)是xiaosTickect.java 實現(xiàn)的。圖示如下: 退票是售票員根據(jù)用戶提供的車票信息在系統(tǒng)中進行售票。主要是由TuiTicket.java來實現(xiàn)的。在該類中涉及到DAO.java類中的selectTrain()方法.圖示如下: 列車及車票查詢系統(tǒng)主要功能包括兩部分:查詢列車信息和查詢車票信息.有FindTrain.Java和FindTicket.java 實現(xiàn).圖示如下: 武漢理工大學《軟件開發(fā)工具》論文報告 4學習心得 我是再沒有接觸eclipse之前就接觸了java,我自己都先用記事本編寫java程序,然后在doc下進行編譯和運行。后來安裝了ecplise這個集成環(huán)境,但是只把它當成一個運行java的集成環(huán)境。 后來經過開發(fā)工具的學習和相關書籍的查看,開始深入的理解了什么是ecplise。其實整個ecplise體系結構就像一個大的拼圖,可以不斷地向其中添加插件,同時在現(xiàn)有的插件上還可以再增加插件??梢哉f,在ecplise中一切都是插件。這里有一張圖片很形象的說明了ecplise的體系結構: 在我學習ecplise的工程中,我覺得它跟一般的軟件比起來有很大的優(yōu)勢:在編寫代碼的過程中,如果有編譯錯誤的話系統(tǒng)馬上會提醒,我們很容易就會會發(fā)現(xiàn)。而且它會給你提供一些解決問題的方法,雖然有些解決方法有一些笨,但是這對于一些想我們這樣的初學者來說,無疑是雪中送炭。而且在編寫代碼的過程中,我們使用一些類的對象的方法的過程中系統(tǒng)給予一定的提示。這大大的減少了我們出錯的機會,并且我們也可以順便了解一下該類的其他方法。加快我們的學習進度。 武漢理工大學《軟件開發(fā)工具》論文報告 對于ecplise的具體的功能的學習感悟:對于調試器板塊該環(huán)境提供了很多的功能包括單步執(zhí)行、設置斷點和值、檢查變量和值以及暫掛和恢復線程的能力。在我們課堂上只學習了本地調試中的斷點。斷點提供了一種強大的工具,使我們能夠在需要的時間和位置掛起執(zhí)行。與逐句或逐條指令的檢查代碼不同的是,可以讓程序一直執(zhí)行,直到遇到斷點。然后開始調試。這大大的加快了調試過程。沒有這個功能,調試大型程序幾乎不能完成。至于遠程的調試對于現(xiàn)在學習的程度來說有一點難。所以先放棄,以后再研究。 對于JUnit,包括模塊接口測試、局部數(shù)據(jù)結構測試、路經測試、錯誤處理測試、邊界測試。它的核心類主要有jnuit.framework包下的TestCase、Testsuite和TestResult,junit.runnier包下的BaseTestRunner類。而我們現(xiàn)在用到的只有斷言Assert。在這里有一點原則是需要注意的它的測試名要很容易與應用類區(qū)分開來。 我覺得學會用ecplise來創(chuàng)建的基于SWT的圖形應用程序十分的重要。這個要源于它的開發(fā)緣由。在這之前,使用的awt是原生窗口部件,但是它一直未能突破LCD。為了解決這個問題,又開發(fā)了swing。它使用的是仿真窗口部件,不存在LCD問題。但是消耗太多的內存等。為了徹底解決 上述問題,IBM開發(fā)了SWT。在基于Windows的ecplise中,SWT通過DLL形式的本地庫與操作系統(tǒng)交互;在UNIX下,SWT可通過的GTK運行。 最近的學習和看書,讓我覺得自己的真的就像在軟件的最頂層。自己現(xiàn)在學習的東西在軟件 中真的是基礎中的基礎。我們還有很長的路要走。真的要加油,好好學習?。?/p> 5.參考文獻 [1]java核心技術卷1:基礎知識 葉乃文 鄺勁筠 杜永萍 2008.5 機械工業(yè)出版社 [2]eclipse 3.0 程序開發(fā)技術詳解 吳越勝 李新磊 2010.10 清華大學出版社