久久久久综合给合狠狠狠,人人干人人模,大陆一级黄色毛片免费在线观看,亚洲人人视频,欧美在线观看一区二区,国产成人啪精品午夜在线观看,午夜免费体验

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 計劃總結(jié) > 工作總結(jié) > 軟件項目總結(jié)報告

軟件項目總結(jié)報告

網(wǎng)站:公文素材庫 | 時間:2019-05-29 03:41:06 | 移動端:軟件項目總結(jié)報告

軟件項目總結(jié)報告

軟件項目總結(jié)報告范文

1引言

1.1編寫目的

XXX公司業(yè)務管理系統(tǒng)的開發(fā)已經(jīng)基本完成。寫此項目開發(fā)總結(jié)報告,以方便我們在以后的項目開發(fā)中來更好的實施項目的訂制開發(fā);讓我在今后的項目開發(fā)中有更多的有據(jù)的資料來規(guī)范我們的開發(fā)過程和提高我們的開發(fā)效率,從而創(chuàng)造更多公司效益。

1.2背景

項目名稱:XXX業(yè)務管理系統(tǒng)

軟件名稱:XXX業(yè)務系統(tǒng)

客戶:XXX

用戶:XXX員工

1.3參考資料項目開發(fā)文檔:

1.軟件開發(fā)數(shù)據(jù)模型:PDM_OperationSystem201*0831.pdm

2.數(shù)據(jù)庫開發(fā)文檔:XXX業(yè)務管理系統(tǒng)數(shù)據(jù)庫設計說明書2.0.doc

3.軟件業(yè)務流程參考:XXX業(yè)務管理系統(tǒng)流程說明.doc

4.軟件使用手冊參考:XXX業(yè)務管理系統(tǒng)功能說明3.0.doc

5.軟件業(yè)務流程參考:XXX業(yè)務管理系統(tǒng)流程說明.doc

6.軟件中使用到的第三方控件:ComponentArtWeb.UI201*.1252forasp.net2.0.rar

7.軟件中使用的安全Ikey驅(qū)動:IkeyDriver.rar以上參考資料是截止201*-08-31是最新的資料文檔。如有修改,即使修改此處的參考文檔名稱。

2開發(fā)工作評價

2.1對生產(chǎn)效率的評價

1.系統(tǒng)開發(fā)已歷時快1年的時間了

2.開發(fā)的反復性比較多。

3.對客戶的需求理解不是很透徹。綜合以上,此項目的開發(fā)效率不是很高,相反有相當一定時間的浪費。

2.2對產(chǎn)品功能的評價

經(jīng)過我們公司各位同事的共同努力協(xié)作,XXX業(yè)務管理系統(tǒng)已經(jīng)很好的完成了客戶的業(yè)務流需求。經(jīng)過對客戶使用過程的觀察,此項目開發(fā)的還是比較成功,但是還是存在著一些問題,造成這些問題的原因是多方面的。如:前期系統(tǒng)數(shù)據(jù)庫的設計缺陷和部分代碼的構(gòu)建缺陷、客戶需求的理解上也存在一定問題,這就需要我們用一定的時間來維護客戶使用過程中提出的新問題和存在的debug。總的來說,此系統(tǒng)的功能開發(fā)還是一個比較成功的案例。

2.3對技術(shù)方法的總結(jié)

在此項目中使用到技術(shù)和工具:

1.使用代碼生成器:使用代碼生成器[動軟.Net代碼自動生成器],此工具在很大程度上提高了編碼效率,從而加快了項目的開發(fā)進程。在以后的項目中,我們要盡量的來使用一些類似的工具來在最短的時間內(nèi)完成工作。在今后的項目開發(fā)中,我們最好是能開發(fā)出適合自己的代碼生成工具,更大限度的節(jié)省開發(fā)周期和開發(fā)費用。

2.使用數(shù)據(jù)庫建模工具;PowerDesigner工具來建立系統(tǒng)數(shù)據(jù)庫模型,以方便程序員很好的理解業(yè)務流和掌握系統(tǒng)架構(gòu)者的架構(gòu)思想,更好的滿足客戶的功能需求。在今后的項目開發(fā)中,我們要更好的來完成系統(tǒng)的前期數(shù)據(jù)庫模型的建立,最大的來優(yōu)化系統(tǒng)功能。

3.使用第三方控件:此系統(tǒng)中使用了ComponentArtWeb.UI第三方控件。此控件在很大程度上滿足了客戶對軟件界面的需求,從而也給軟件的操作帶來了方便。本項目中只使用了ComponentArtWeb.UI一種第三方控件,在今后的項目開發(fā)過程中,要繼續(xù)使用第三方的控件。這樣以來,無論是針對軟件界面的美觀性、友好性來說、易操作性而言,還是針對系統(tǒng)開發(fā)效率而言,這都是很好途徑。但需要意的是:在是使用第三方控件時,要謹慎的選擇一些網(wǎng)絡中的比較常見的第三方控件。

4.使用自定義控件:此系統(tǒng)中使用了自定義控件(GhdGridView),此自定義控件可以很好的統(tǒng)一系統(tǒng)中的所有信息顯示表格樣式。如客戶對數(shù)據(jù)顯示樣式有什么新的意見,我就不需要修改每一個頁面的表格樣式,我們只需要修改GhdGridView控件的樣式,系統(tǒng)中的所有繼承自GhdGridView的表格樣式都可以改變。

5.系統(tǒng)開發(fā)框架:此系統(tǒng)的框架使用的是簡單三層結(jié)構(gòu),此框架在開發(fā)一些中小軟件是比較實用的。但是我們要是可以開發(fā)出自己的框架,把一些通用的功能開發(fā)到框架中。這樣以來,在以后的系統(tǒng)開發(fā)中,針對系統(tǒng)中一些通用的功能就不需要再開發(fā),從而也可以很好的提高我們的開發(fā)效率;減少很多維護費用。使我們的技術(shù)不斷的更加成熟。

6.系統(tǒng)安全加密:此系統(tǒng)中針對客戶提出的系統(tǒng)安全問題,我們采用了Ikey加密硬件鑰匙來驗證客戶端登陸客戶的合法性,此Ikey鑰匙可以綁定到一個系統(tǒng)使用用戶,也可以讓多個用戶來使用一個加密鑰匙來驗證登陸系統(tǒng)的合法性。這樣以來,即使用戶的密碼不慎丟失,或者被不法人員取得(不法人員他也是無法登陸到我們的系統(tǒng)中來),這樣就最大的提高了我們系統(tǒng)的安全性。Ikey加密鑰匙是很好的加密B/S架構(gòu)軟件的硬件工具,在以后的軟件安全方面可以借鑒。

3項目經(jīng)驗總結(jié)

3.1簽定合同

一個項目的開發(fā)成敗或者說項目開發(fā)帶來效益的大小,在很大程度上是受項目合同簽定的影響的。往往,很多一部分公司與客戶簽定的項目合同都是很模糊的,也很難簽定的比較清楚,這樣以來就會導致在項目的開發(fā)后期,工作兩會越來越大,影響項目的竣工周期;而且,項目的開發(fā)費用一般是不會變的。這樣以來,我們就大大的降低了我們的開發(fā)效益。雖然需求范圍很難簽定的明確,但是我們在簽定合同時,要盡量的去把合同功能邊界和添加新功能的條件簽定。

3.2開發(fā)團隊

在項目確立后,要盡快的建立起項目開發(fā)團隊。

項目團隊成員的團結(jié)合作、相互溝通是非常重要的,團隊成員之間要相互學習彼此的優(yōu)點和技術(shù),使團隊的能力不斷的提高。這樣,在項目的開發(fā)過程中,團隊才不會被難題困住不動。另外,團隊中要有一個項目負責人,這個人無論是在與客戶的溝通上,還是在技術(shù)上都要是很出眾的人,此項目負責人要能很好的溝通客戶與開發(fā)成員之間,以此來更好的理解客戶的功能需求。人的記憶力總是有限的,所以就要求開發(fā)團隊成員要盡量的書寫一些開發(fā)文檔,這些文檔往往是我們在項目開發(fā)后期要用到的可尋資料。項目團隊士氣是項目成功的一個因素,我們需要不斷的來培養(yǎng)我們的團隊氣勢,使我們的團隊不斷的壯大。

3.3需求的調(diào)研

在項目確立后,就到了需求調(diào)研分析階段。

1.項目組對客戶的整體組織結(jié)構(gòu)、公司有關(guān)人員的關(guān)系、職責等如果沒有一個很好、足夠的了解掌握,這樣項目組就無法很好的完整的整理到客戶的需求、或者說客戶真實的功能需求,如此以來我們就為自己埋下了地雷,影響項目的開發(fā)周期,這就要求我們要與客戶搞好無論是工作上的還是生活上的朋友關(guān)系,要深入的去了解客戶需求。

2.我們要盡量的讓客戶也參與到項目的開發(fā)團隊中來,也就是說我們要使客戶把自己也納入到項目的開發(fā)團隊中來,如此一來,我們掌握客戶需求的真實性、可靠性就會大大的提高,也就不會為項目的后期功能開發(fā)埋下陷阱

3.在需求調(diào)研過程中,如果缺乏足夠用戶參與,這樣的需求調(diào)研也是失敗的。很多程序員不愿參與到客戶的需求調(diào)研中去,為什么呢?很簡單,與客戶溝通不如與代碼溝通容易有意思。盡管這樣,我們還是必須用足夠多的時間去和客戶進行溝通,了解他們真實的需求。很多用戶也是如此,他們自己也不愿意參與到項目的需求調(diào)研中來,為什么呢?需求調(diào)研有出去和朋友一塊爛漫對嗎。。。雖然現(xiàn)狀如此,我們還是要努力的使客戶參與到需求的調(diào)研中來。

4.模糊需求,也就是模棱兩可是需求規(guī)格說明中最為可怕的問題。一是指諸多客戶對需求說明產(chǎn)生了不同的理解;一是指單個讀者能用不止一個方式來解釋某個需求說明。針對對這種情況,就要求我們的調(diào)研人員要能夠從多個角度來分析客戶的不同需求,整理出最終的需求與客戶確認,定出最終真實可靠的需求,我們絕不能憑借我們自己的單面理解來定立客戶的最終需求。

5.在一個項目的開發(fā)中,文檔的書寫是極為中要的一項工作。因為,某些文檔就是我們在開發(fā)后期與客戶溝通的可尋依據(jù)、也是我們程序員在編碼過程中要用到的重要文檔。我們絕對不能認為,憑借我們的大腦來記錄所有的開發(fā)需求。。。;即使,你說你是天才,你要用你那顆愛因斯坦的大腦來記錄所有的開發(fā)需求,那也是不可能的,人的精力總是有限的。這就要求我們在需求調(diào)研中做好需求文檔的記錄和整理。

6.需求調(diào)研工具選擇,客戶一般對圖形還是比較感興趣的,所以我們在調(diào)研過程中,我要盡量的采用圖形化界面來和客戶溝通需求。比如可以采用Rose工具,把客戶的意思轉(zhuǎn)換為用例圖、時序圖、協(xié)作圖、狀態(tài)圖、類圖等,使表達的意思更加直觀。這樣客戶會更快的進行問題的實質(zhì)。

3.5做好開發(fā)計劃

在項目確立后,我們就需要做好項目開發(fā)計劃,需求調(diào)研用時,開發(fā)用時,測試用時,實施用時,維護用時。在我們做好了計劃后,我們要隨時的跟蹤計劃任務的完成進度,從而使我們的項目進度掌控在我們的開發(fā)周期范圍之內(nèi),今日計劃、行動,明日成功。

3.5很好的溝通

在其他行業(yè)中,人與人的之間的溝通只很重要的。項目開發(fā)也不例外,很好的溝通能夠加快項目的進度,這就要求我們每一個開發(fā)人員要學會和善于溝通于客戶和同事之間。在一個項目的開發(fā)過程中,我們與客戶的溝通是一個不斷交流和溝通的過程。在開發(fā)到一定的階段,我們就需要和客戶溝通已有功能,盡量的去避免一些隱藏的問題,及時的發(fā)現(xiàn)問題,解決問題,從而按時或者提前完成項目的開發(fā)。

3.6做好工作總結(jié)

在項目進行的過程中,我們要不斷去整理自己的工作情況和做好總結(jié),這樣以來,無論是在自己的技術(shù)還是其它方面,都會對我們有很大的提高,在長期的積累后,無論是我們個人能力,,還是我們的團隊能力都會有很大的提高。

擴展閱讀:軟件項目開發(fā)總結(jié)報告模版

武漢理工大學《軟件開發(fā)工具》論文報告

火車票系統(tǒng)的開發(fā)

1引言

隨著人們生活水平和經(jīng)濟水平的提高,網(wǎng)絡科技的全球化的發(fā)展,出游和出差的頻率越來越多。這大大的激發(fā)了交通水平的發(fā)展。其中,火車這種又方便有便宜的交通工具作為人們的首選,火車站的客運列車增加,客運量也隨之增加。原有的售票的方式已經(jīng)不再能滿足旅客的需求了。為了方便旅客售票系統(tǒng)不僅僅只能售票也能夠了解列車的各種信息。這樣才能成為現(xiàn)在網(wǎng)絡社會的真的適應者。

2需求分析

該售票系統(tǒng)是融合了火車票銷售、退票、列車管理、車票管理、售票員管理、列車管理信息,以及售票信息查詢?yōu)橐惑w的綜合系統(tǒng)。該系統(tǒng)主要編寫的功能是列車和售票信息的查詢及售票功能。

2.1用戶

該系統(tǒng)主要有兩類用戶:管理員和售票員。管理員主要工作有車次管理,車票管理和售票員管理。對于每項功能都有添加,刪除和修改的功能。售票的主要工作是售票和退票。

2.2主要功能

該系統(tǒng)從功能方面可以分為四個方面:登錄。不管你是管理員還是售票員必須登錄以后才可以進行系統(tǒng)允許的操作。當然要登錄的管理員和售票員都必須是再數(shù)據(jù)庫中已經(jīng)發(fā)布的;驹O置:該模塊主要是修改售票員的相關(guān)信息,修改列車的相關(guān)信息和修改車票的相關(guān)信息。這一塊的功能只有管理員才可以操作。其他的售票員是不可以對他進行操作的。售票和退票:這部分工作主要是售票員來操作的。售票員根據(jù)買票人員提出的要求進行查詢。查詢的方式有兩種:一是根據(jù)車次查詢;一是根據(jù)目的地來查詢。退票主要是將已經(jīng)出售的車票在列車開出之前再一次的返回到數(shù)據(jù)庫中,并繼續(xù)出售。

列車和車票查詢;當需要查詢列車信息或者是車票信息是所做的操作。

2.3基本流程

武漢理工大學《軟件開發(fā)工具》論文報告

3開發(fā)過程

3.1內(nèi)容

該程序包括三個部分數(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)中,對經(jīng)常使用的操作進行封裝,如將多次需要調(diào)用的數(shù)據(jù)庫和操作數(shù)庫的增、刪、改和查等操作進行封裝。使代碼有很好的重用性,即使出現(xiàn)錯誤也很容易調(diào)試。如本程序中的Conn.java

importjava.sql.*;publicclassConn{

privatestaticConnectioncon;

privatestaticfinalStringDRIVER="com.mysql.jdbc.Driver";

privatestaticfinalStringURL="jdbc:mysql://localhost:3306/newdatabase";privatestaticfinalStringNAME="root";

privatestaticfinalStringPASSWORD="021702190804";static{}

publicstaticConnectiongetConnection(){}

publicstaticvoidcloseCon(Connectioncon){

try{

if(con!=null)

con.close();

try{

con=DriverManager.getConnection(URL,NAME,PASSWORD);}catch(SQLExceptione){}

returncon;

e.printStackTrace();try{}

Class.forName(DRIVER);e.printStackTrace();

}catch(ClassNotFoundExceptione){

}catch(SQLExceptione){

武漢理工大學《軟件開發(fā)工具》論文報告

}}

publicstaticvoidclosePt(PreparedStatementpt){}

publicstaticvoidcloseRs(ResultSetrs){}

try{}

if(rs!=null)

rs.close();

try{}

if(pt!=null)

pt.close();

}

e.printStackTrace();

}catch(Exceptione){

e.printStackTrace();

}catch(Exceptione){

e.printStackTrace();

用戶登錄界面的設計、主界面的設計、基本設置模塊、銷售及退票模塊和列車及車票查詢模塊。

用戶登錄模塊:該部分是通過設計login.java來實現(xiàn)的。這部分代碼的作用是用戶首先選擇自己的登錄的是管理員還是售票員,然后輸入賬號和密碼。單擊登錄,用戶先判斷用戶登錄的類型,然后給sql變量賦SQL語句值,系統(tǒng)調(diào)用DAO.java類的login()傳入sql變量。.Login代碼是:

importorg.eclipse.swt.SWT;importorg.eclipse.swt.events.*;importorg.eclipse.swt.graphics.Image;importorg.eclipse.swt.layout.*;importorg.eclipse.swt.widgets.*;

importcom.huizhi.dao.DAO;publicclassLogin{

privateTextnameText;privateTextpassText;privateCombocombo;privateStringtype;

privateDisplaydisplay=newDisplay();privateShellshell=newShell(display);publicLogin(){

FormLayoutlayout=newFormLayout();

武漢理工大學《軟件開發(fā)工具》論文報告

layout.marginHeight=40;

layout.marginWidth=40;shell.setLayout(layout);shell.setText("login");

Imageimage=newImage(display,"2.jpg");shell.setBackgroundImage(image);setUIControl();shell.pack();shell.open();

while(!shell.isDisposed()){if(!display.readAndDispatch())display.sleep();}

display.dispose();}

privatevoidsetUIControl(){

Labelusername=newLabel(shell,SWT.NONE);username.setText("username");

nameText=newText(shell,SWT.SINGLE|SWT.BORDER);

Labelpassword=newLabel(shell,SWT.NONE);

password.setText("password");

passText=newText(shell,SWT.SINGLE|SWT.BORDER|SWT.PASSWORD);//passText.setEchoChar("*");

Labelselect=newLabel(shell,SWT.NONE);select.setText("select");

Buttonsubmit=newButton(shell,SWT.PUSH);submit.setText("login");

submit.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){

type=combo.getText();

Stringname=nameText.getText();Stringpass=passText.getText();Stringsql=null;booleanflag=false;

MessageBoxbox=newMessageBox(shell,SWT.OK);if("".equals(type)||"".equals(name)||"".equals(pass)){}

box.setMessage("pleaseinputalltheinformation");box.open();return;

武漢理工大學《軟件開發(fā)工具》論文報告

DAOdao=newDAO();

if("users".equals(type)){sql="select*fromuserswhereusername=""+name+""andpassword=""+pass+""";}elseif("admin".equals(type)){

sql="select*fromadminwhereusername=""+name+""and

password=""+pass+""";

}

flag=dao.login(sql);if(flag){

shell.dispose();

newMain(type);}else{}

box.setMessage("wrongnameorpassword");box.open();

}});

Buttonreset=newButton(shell,SWT.PUSH);reset.setText("cancel");

Stringvalue[]={"users","admin"};

combo=newCombo(shell,SWT.DROP_DOWN);combo.setItems(value);

FormDatadata=newFormData();data.top=newFormAttachment(30,0);username.setLayoutData(data);

data=newFormData();

data.top=newFormAttachment(username,0,SWT.CENTER);data.left=newFormAttachment(username,10,SWT.RIGHT);nameText.setLayoutData(data);

data=newFormData();

data.top=newFormAttachment(select,0,SWT.CENTER);data.left=newFormAttachment(select,10,SWT.RIGHT);combo.setLayoutData(data);

data=newFormData();

data.top=newFormAttachment(username,10,SWT.BOTTOM);password.setLayoutData(data);

武漢理工大學《軟件開發(fā)工具》論文報告

data=newFormData();

data.top=newFormAttachment(password,0,SWT.CENTER);data.left=newFormAttachment(nameText,0,SWT.LEFT);passText.setLayoutData(data);

data=newFormData();

data.top=newFormAttachment(password,10,SWT.BOTTOM);submit.setLayoutData(data);

data=newFormData();

data.top=newFormAttachment(submit,0,SWT.CENTER);data.left=newFormAttachment(submit,20,SWT.RIGHT);reset.setLayoutData(data);}

publicstaticvoidmain(String[]args){newLogin();

}}

DAO.java的login()代碼:

publicbooleanlogin(Stringsql){booleanflag=false;con=Conn.getConnection();try{

pt=con.prepareStatement(sql);rs=pt.executeQuery();if(rs.next()){flag=true;}

}catch(SQLExceptione){e.printStackTrace();}finally{Conn.closeRs(rs);}

Conn.closePt(pt);Conn.closeCon(con);

returnflag;}圖示為;

武漢理工大學《軟件開發(fā)工具》論文報告

實現(xiàn)主界面:

importorg.eclipse.swt.*;

importorg.eclipse.swt.widgets.*;importorg.eclipse.swt.layout.*;importorg.eclipse.swt.events.*;

publicclassMain{

privateStringtype;

Displaydisplay=Display.getCurrent();

Shellshell=newShell(display);publicMain(Stringtype){this.type=type;shell.setText("Trainticketingsystem");

shell.setLayout(newFillLayout());

Menumenu=newMenu(shell,SWT.BAR);//第一個菜單

MenuItembasic=newMenuItem(menu,SWT.CASCADE);basic.setText("BasicSettings");if("users".equals(type)){}

basic.setEnabled(false);

Menufilemenu=newMenu(shell,SWT.DROP_DOWN);MenuItemtrain=newMenuItem(filemenu,SWT.PUSH);train.setText("TrainsManagement");

train.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){

}

newTrainManage();

});

MenuItemticket=newMenuItem(filemenu,SWT.PUSH);ticket.setText("TicketsManagement");

武漢理工大學《軟件開發(fā)工具》論文報告

ticket.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){newTicketManage();}});

MenuItemusers=newMenuItem(filemenu,SWT.PUSH);users.setText("UsersManagement");

users.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){

newUsersManage();

}});

MenuItemexit=newMenuItem(filemenu,SWT.PUSH);exit.setText("quit");

basic.setMenu(filemenu);

exit.addSelectionListener(newSelectionAdapter(){

}

publicvoidwidgetSelected(SelectionEvente){display.dispose();

});

//第二個菜單

MenuItemmarket=newMenuItem(menu,SWT.CASCADE);market.setText("SalesandRefunds");

MenueditMenu=newMenu(shell,SWT.DROP_DOWN);

MenuItemmarketItem=newMenuItem(editMenu,SWT.PUSH);marketItem.setText("SalesTickets");

marketItem.addSelectionListener(newSelectionAdapter(){

publicvoidwidgetSelected(SelectionEvente){newXiaosTicket();}

});

MenuItemrefundItem=newMenuItem(editMenu,SWT.PUSH);refundItem.setText("RefundsTickets");market.setMenu(editMenu);

refundItem.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){

newTuiTicket();

}});

//第三個菜單

MenuItemfind=newMenuItem(menu,SWT.CASCADE);find.setText("TrainsandTicketsquery");

MenutaiMenu=newMenu(shell,SWT.DROP_DOWN);MenuItemtrainFind=newMenuItem(taiMenu,SWT.PUSH);

武漢理工大學《軟件開發(fā)工具》論文報告

trainFind.setText("Trainsquery");

trainFind.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){newFindTrain();}});

MenuItemticketFind=newMenuItem(taiMenu,SWT.PUSH);ticketFind.setText("Ticketquery");find.setMenu(taiMenu);

ticketFind.addSelectionListener(newSelectionAdapter(){

publicvoidwidgetSelected(SelectionEvente){newFindTicket();

}});

shell.setMenuBar(menu);shell.setSize(500,400);

shell.open();

while(!shell.isDisposed()){if(!display.readAndDispatch())

display.sleep();

}

display.dispose();

}}

圖示為:

基本設置模塊包括車次管理,車票管理和售票員管理。

車次管理主要是是對于列車的增加,刪除和修改等操作。其中包括它的相關(guān)的信息等。它是由TrainManagement.java.代碼如下:importjava.util.List;

武漢理工大學《軟件開發(fā)工具》論文報告

importorg.eclipse.swt.SWT;

importorg.eclipse.swt.events.*;importorg.eclipse.swt.layout.*;importorg.eclipse.swt.widgets.*;

importcom.huizhi.dao.DAO;importcom.huizhi.vo.Train;

publicclassTrainManage{

Displaydisplay=Display.getCurrent();Shelltmshell=newShell(display);

finalTabletable=newTable(tmshell,SWT.SINGLE|SWT.H_SCROLL|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER|SWT.FULL_SELECTION);TrainManagetm=this;

publicTrainManage(){

RowLayoutrowLayout=newRowLayout();rowLayout.pack=true;

rowLayout.wrap=true;

rowLayout.justify=false;

rowLayout.marginTop=20;

tmshell.setLayout(rowLayout);

finalTableColumncolumn1=newTableColumn(table,SWT.LEFT);column1.setText("TrainID");

column1.setWidth(80);

finalTableColumncolumn2=newTableColumn(table,SWT.LEFT);column2.setText("TrainNum");column2.setWidth(80);

finalTableColumncolumn3=newTableColumn(table,SWT.LEFT);column3.setText("TrainType");column3.setWidth(80);

finalTableColumncolumn4=newTableColumn(table,SWT.LEFT);column4.setText("Starting");

column4.setWidth(80);

finalTableColumncolumn5=newTableColumn(table,SWT.LEFT);column5.setText("startingTime");

column5.setWidth(80);

finalTableColumncolumn6=newTableColumn(table,SWT.LEFT);column6.setText("terminal");column6.setWidth(80);

finalTableColumncolumn7=newTableColumn(table,SWT.LEFT);column7.setText("terminalTime");column7.setWidth(80);

武漢理工大學《軟件開發(fā)工具》論文報告

finalTableColumncolumn8=newTableColumn(table,SWT.LEFT);column8.setText("iskongtiao");column8.setWidth(80);

finalTableColumncolumn9=newTableColumn(table,SWT.LEFT);column9.setText("price");

column9.setWidth(80);

finalTableColumncolumn10=newTableColumn(table,SWT.LEFT);column10.setText("middleStation");column10.setWidth(80);

finalTableColumncolumn11=newTableColumn(table,SWT.LEFT);column11.setText("yzNum");column11.setWidth(80);

finalTableColumncolumn12=newTableColumn(table,SWT.LEFT);column12.setText("rzNum");

column12.setWidth(80);

finalTableColumncolumn13=newTableColumn(table,SWT.LEFT);column13.setText("ywNum");column13.setWidth(80);

finalTableColumncolumn14=newTableColumn(table,SWT.LEFT);column14.setText("rwNum");column14.setWidth(80);

table.setHeaderVisible(true);table.setLinesVisible(true);freshData();

table.setSize(800,200);

Buttonadd=newButton(tmshell,SWT.PUSH);add.setText("addtrains");

add.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){newAddTrain(tm);}});

Buttonupdate=newButton(tmshell,SWT.PUSH);update.setText("modify");

update.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){

TableItem[]selection=table.getSelection();

TableItemselectedRow=selection[0];Traintrain=newTrain();

train.setId(Integer.parseInt(selectedRow.getText(0)));

train.setTrainNum(selectedRow.getText(1));train.setTrainType(selectedRow.getText(2));train.setStarting(selectedRow.getText(3));

武漢理工大學《軟件開發(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)));newUpdateTrain(train,tm);

}});

Buttondelete=newButton(tmshell,SWT.PUSH);

delete.setText("cancel");

delete.addSelectionListener(newSelectionAdapter(){

box=new

publicvoidwidgetSelected(SelectionEvente){MessageBox

MessageBox(tmshell,SWT.YES|SWT.NO);

box.setMessage("Areyousuretocancel?");

intnum=box.open();if(num==128)

return;

TableItem[]selection=table.getSelection();TableItemselectedRow=selection[0];DAOdao=newDAO();Stringsql="delete

from

train

where

id="+selectedRow.getText(0)+"";

inti=dao.update(sql);

if(i>0){

box.setMessage("succeed");box.open();

table.remove(table.getSelectionIndex());}else{}}});

box.setMessage("failure");box.open();

武漢理工大學《軟件開發(fā)工具》論文報告

tmshell.setSize(1200,400);

tmshell.setText("trainManagement");tmshell.open();

while(!tmshell.isDisposed()){

if(!display.readAndDispatch())

display.sleep();}

tmshell.dispose();}

publicvoidfreshData(){

table.removeAll();try{

DAOdao=newDAO();

Listlist=dao.getAllTrain();intnumber=list.size();

for(inti=0;i武漢理工大學《軟件開發(fā)工具》論文報告

e.printStackTrace();

}finally{

Conn.closePt(pt);Conn.closeCon(con);}returni;

}

publicListgetAllTrain(){

Listlist=newArrayList();con=Conn.getConnection();try{

pt=con.prepareStatement("select*fromtrain");rs=pt.executeQuery();while(rs.next()){

Traintrain=newTrain();

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(SQLExceptione){e.printStackTrace();}finally{

Conn.closeRs(rs);

Conn.closePt(pt);Conn.closeCon(con);

}returnlist;

}

其中的update的功能是,首先連接數(shù)據(jù)庫,然后用傳遞過來的SQl語句在列表中刪除某輛列車的信息。getAllTrain()方法是顯示所有的列車的信息。圖示如下:

武漢理工大學《軟件開發(fā)工具》論文報告

在車次管理中的對于列車信息添加的功能是通過AddTrain.java來實現(xiàn)的。代碼如下:

importorg.eclipse.swt.SWT;importorg.eclipse.swt.events.*;importorg.eclipse.swt.layout.*;importorg.eclipse.swt.widgets.*;importcom.huizhi.dao.DAO;

publicclassAddTrain{

Displaydisplay=Display.getCurrent();Shelltmshell=newShell(display);TrainManagetrainmanage=null;

publicAddTrain(TrainManagetm){trainmanage=tm;

GridLayoutgridlayout=newGridLayout();tmshell.setText("addtrainsinformation");

gridlayout.numColumns=2;

gridlayout.makeColumnsEqualWidth=true;

tmshell.setLayout(gridlayout);

GridDatagd=newGridData(GridData.FILL_BOTH);Labell=newLabel(tmshell,SWT.LEFT);l.setText("trainNum");

l.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTexttrainNum=newText(tmshell,SWT.NONE);trainNum.setSize(50,60);trainNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

Labell1=newLabel(tmshell,SWT.LEFT);l1.setText("trainType");

l1.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTexttrainType=newText(tmshell,SWT.LEFT);

武漢理工大學《軟件開發(fā)工具》論文報告

trainType.setSize(30,40);

trainType.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell2=newLabel(tmshell,SWT.LEFT);l2.setText("starting");l2.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextstarting=newText(tmshell,SWT.LEFT);starting.setSize(30,40);starting.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell3=newLabel(tmshell,SWT.LEFT);l3.setText("startingtime");l3.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextstartingTime=newText(tmshell,SWT.LEFT);startingTime.setSize(30,40);startingTime.setLayoutData(gd);

Labell4=newLabel(tmshell,SWT.LEFT);l4.setText("terminal");l4.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextterminal=newText(tmshell,SWT.LEFT);terminal.setSize(30,40);

terminal.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell5=newLabel(tmshell,SWT.LEFT);l5.setText("terminaltime");

l5.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextterminalTime=newText(tmshell,SWT.LEFT);terminalTime.setSize(30,40);terminalTime.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell6=newLabel(tmshell,SWT.LEFT);l6.setText("iskongtiao");

l6.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextiskongTiao=newText(tmshell,SWT.LEFT);

武漢理工大學《軟件開發(fā)工具》論文報告

iskongTiao.setSize(30,40);

iskongTiao.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell7=newLabel(tmshell,SWT.LEFT);l7.setText("price");l7.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextprice=newText(tmshell,SWT.LEFT);price.setSize(30,40);price.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell8=newLabel(tmshell,SWT.LEFT);l8.setText("middleStation");l8.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextmiddleStation=newText(tmshell,SWT.LEFT);middleStation.setSize(30,40);middleStation.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell9=newLabel(tmshell,SWT.LEFT);l9.setText("yzNum");l9.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextyzNum=newText(tmshell,SWT.LEFT);yzNum.setSize(30,40);yzNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell10=newLabel(tmshell,SWT.LEFT);l10.setText("rzNum");l10.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextrzNum=newText(tmshell,SWT.LEFT);rzNum.setSize(30,40);rzNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell11=newLabel(tmshell,SWT.LEFT);l11.setText("ywNum");l11.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

武漢理工大學《軟件開發(fā)工具》論文報告

finalTextywNum=newText(tmshell,SWT.LEFT);ywNum.setSize(30,40);ywNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell12=newLabel(tmshell,SWT.LEFT);l12.setText("rwNum");

l12.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);finalTextrwNum=newText(tmshell,SWT.LEFT);rwNum.setSize(30,40);rwNum.setLayoutData(gd);

Buttonb=newButton(tmshell,SWT.LEFT);b.setText("add");

b.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){

MessageBoxbox=newMessageBox(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("pleaseinputtherightinformation");

box.open();

return;}

DAOdao=newDAO();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()+"","+

武漢理工大學《軟件開發(fā)工具》論文報告

"""+price.getText()+"",""+middleStation.getText()+"",""+yzNum.getText()+"",""+rzNum.getText()+"",""+ywNum.getText()+"",""+rwNum.getText()+"")";

inti=dao.update(sql);

}

if(i>0){

box.setMessage("add");}

box.open();fresh();

});

Buttonb1=newButton(tmshell,SWT.LEFT);b1.setText("quit");

b1.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){tmshell.setVisible(false);}});

tmshell.layout();

tmshell.setSize(500,450);

tmshell.open();

while(!tmshell.isDisposed()){

if(!display.readAndDispatch())display.sleep();

}

tmshell.dispose();

}

publicvoidfresh(){

trainmanage.freshData();}}圖示為:

武漢理工大學《軟件開發(fā)工具》論文報告

修改列車功能是在UpdateTrain.java.類中實現(xiàn)的。代碼如下:importorg.eclipse.swt.SWT;

importorg.eclipse.swt.events.*;importorg.eclipse.swt.layout.*;importorg.eclipse.swt.widgets.*;

importcom.huizhi.dao.DAO;importcom.huizhi.vo.Train;

publicclassUpdateTrain{privateTraintrain;

Displaydisplay=Display.getCurrent();Shellutrainshell=newShell(display);

TrainManagetrainmanage=null;

publicUpdateTrain(Traintrain,TrainManagetm){

this.trainmanage=tm;

this.train=train;

GridLayoutgridlayout=newGridLayout();

utrainshell.setText("modifytraininformation");gridlayout.numColumns=2;

gridlayout.makeColumnsEqualWidth=true;utrainshell.setLayout(gridlayout);

武漢理工大學《軟件開發(fā)工具》論文報告

GridDatagd=newGridData(GridData.FILL_BOTH);Labelll=newLabel(utrainshell,SWT.LEFT);ll.setText("trainID");ll.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextnum=newText(utrainshell,SWT.NONE);num.setText(Integer.toString(train.getId()));num.setEnabled(false);num.setSize(50,60);num.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell=newLabel(utrainshell,SWT.LEFT);l.setText("TrainNum");

l.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTexttrainNum=newText(utrainshell,SWT.NONE);trainNum.setText(train.getTrainNum());trainNum.setSize(50,60);trainNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell1=newLabel(utrainshell,SWT.LEFT);l1.setText("TrainType");l1.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTexttrainType=newText(utrainshell,SWT.LEFT);trainType.setText(train.getTrainType());trainType.setSize(30,40);trainType.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell2=newLabel(utrainshell,SWT.LEFT);l2.setText("starting");

l2.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextstarting=newText(utrainshell,SWT.LEFT);starting.setText(train.getStarting());starting.setSize(30,40);starting.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell3=newLabel(utrainshell,SWT.LEFT);l3.setText("startingTime");

武漢理工大學《軟件開發(fā)工具》論文報告

l3.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextstartingTime=newText(utrainshell,SWT.LEFT);startingTime.setText(train.getStartingTime());startingTime.setSize(30,40);startingTime.setLayoutData(gd);

Labell4=newLabel(utrainshell,SWT.LEFT);l4.setText("terminal");l4.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextterminal=newText(utrainshell,SWT.LEFT);terminal.setText(train.getTerminal());terminal.setSize(30,40);terminal.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell5=newLabel(utrainshell,SWT.LEFT);l5.setText("terminalTime");

l5.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextterminalTime=newText(utrainshell,SWT.LEFT);terminalTime.setText(train.getTerminalTime());terminalTime.setSize(30,40);terminalTime.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell6=newLabel(utrainshell,SWT.LEFT);l6.setText("iskongtiao");l6.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextiskongTiao=newText(utrainshell,SWT.LEFT);iskongTiao.setText(train.getIskongTiao());iskongTiao.setSize(30,40);iskongTiao.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell7=newLabel(utrainshell,SWT.LEFT);l7.setText("price");

l7.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextprice=newText(utrainshell,SWT.LEFT);price.setText(Float.toString(train.getPrice()));price.setSize(30,40);

武漢理工大學《軟件開發(fā)工具》論文報告

price.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell8=newLabel(utrainshell,SWT.LEFT);l8.setText("middleStation");

l8.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextmiddleStation=newText(utrainshell,SWT.LEFT);middleStation.setText(train.getMiddleStation());middleStation.setSize(30,40);middleStation.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);Labell9=newLabel(utrainshell,SWT.LEFT);l9.setText("yzNum");l9.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextyzNum=newText(utrainshell,SWT.LEFT);yzNum.setText(Integer.toString(train.getYzNum()));yzNum.setSize(30,40);yzNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

Labell10=newLabel(utrainshell,SWT.LEFT);l10.setText("rzNum");

l10.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextrzNum=newText(utrainshell,SWT.LEFT);rzNum.setText(Integer.toString(train.getRzNum()));rzNum.setSize(30,40);rzNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

Labell11=newLabel(utrainshell,SWT.LEFT);l11.setText("ywNum");l11.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextywNum=newText(utrainshell,SWT.LEFT);ywNum.setText(Integer.toString(train.getYwNum()));ywNum.setSize(30,40);ywNum.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

Labell12=newLabel(utrainshell,SWT.LEFT);

武漢理工大學《軟件開發(fā)工具》論文報告

l12.setText("rwNum");

l12.setLayoutData(gd);

gd=newGridData(GridData.FILL_BOTH);

finalTextrwNum=newText(utrainshell,SWT.LEFT);rwNum.setText(Integer.toString(train.getRwNum()));rwNum.setSize(30,40);rwNum.setLayoutData(gd);

Buttonb=newButton(utrainshell,SWT.LEFT);b.setText("modify");

b.addSelectionListener(newSelectionAdapter(){

publicvoidwidgetSelected(SelectionEvente){

MessageBoxbox=newMessageBox(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("pleaseinputrightinformationthenmodify");

box.open();

return;}

DAOdao=newDAO();

Stringsql="updatetrainsettrainNum=""+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()+""whereid=""+num.getText()+""";

inti=dao.update(sql);if(i>0){

武漢理工大學《軟件開發(fā)工具》論文報告

box.setMessage("succeed");

box.open();fresh();}else{

box.setMessage("failure");box.open();}

}});

Buttonb1=newButton(utrainshell,SWT.LEFT);b1.setText("quit");

b1.addSelectionListener(newSelectionAdapter(){

publicvoidwidgetSelected(SelectionEvente){utrainshell.setVisible(false);

}});

utrainshell.layout();

utrainshell.setSize(500,450);utrainshell.open();

while(!utrainshell.isDisposed()){if(!display.readAndDispatch())display.sleep();}

utrainshell.dispose();}

publicvoidfresh(){

trainmanage.freshData();}}

車票管理主要包括對車票的增加,刪除和修改的操作。由TicketManagement.java實現(xiàn)。代碼類似上面的:(具體看壓縮包)。其中的查詢列車表和售票表調(diào)用的DAO.java類中selectTicket()方法。圖示為:

武漢理工大學《軟件開發(fā)工具》論文報告

售票員管理是對售票員進行增加、刪除和修改進行操作。由UserMannage.java類來實現(xiàn)。代碼類似以上。在該類中調(diào)用了DAO.java類中g(shù)etAllUser()方法。圖示為:

武漢理工大學《軟件開發(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)境。

后來經(jīng)過開發(fā)工具的學習和相關(guān)書籍的查看,開始深入的理解了什么是ecplise。其實整個ecplise體系結(jié)構(gòu)就像一個大的拼圖,可以不斷地向其中添加插件,同時在現(xiàn)有的插件上還可以再增加插件?梢哉f,在ecplise中一切都是插件。這里有一張圖片很形象的說明了ecplise的體系結(jié)構(gòu):

在我學習ecplise的工程中,我覺得它跟一般的軟件比起來有很大的優(yōu)勢:在編寫代碼的過程中,如果有編譯錯誤的話系統(tǒng)馬上會提醒,我們很容易就會會發(fā)現(xiàn)。而且它會給你提供一些解決問題的方法,雖然有些解決方法有一些笨,但是這對于一些想我們這樣的初學者來說,無疑是雪中送炭。而且在編寫代碼的過程中,我們使用一些類的對象的方法的過程中系統(tǒng)給予一定的提示。這大大的減少了我們出錯的機會,并且我們也可以順便了解一下該類的其他方法。加快我們的學習進度。

武漢理工大學《軟件開發(fā)工具》論文報告

對于ecplise的具體的功能的學習感悟:對于調(diào)試器板塊該環(huán)境提供了很多的功能包括單步執(zhí)行、設置斷點和值、檢查變量和值以及暫掛和恢復線程的能力。在我們課堂上只學習了本地調(diào)試中的斷點。斷點提供了一種強大的工具,使我們能夠在需要的時間和位置掛起執(zhí)行。與逐句或逐條指令的檢查代碼不同的是,可以讓程序一直執(zhí)行,直到遇到斷點。然后開始調(diào)試。這大大的加快了調(diào)試過程。沒有這個功能,調(diào)試大型程序幾乎不能完成。至于遠程的調(diào)試對于現(xiàn)在學習的程度來說有一點難。所以先放棄,以后再研究。

對于JUnit,包括模塊接口測試、局部數(shù)據(jù)結(jié)構(gòu)測試、路經(jīng)測試、錯誤處理測試、邊界測試。它的核心類主要有jnuit.framework包下的TestCase、Testsuite和TestResult,junit.runnier包下的BaseTestRunner類。而我們現(xiàn)在用到的只有斷言Assert。在這里有一點原則是需要注意的它的測試名要很容易與應用類區(qū)分開來。

我覺得學會用ecplise來創(chuàng)建的基于SWT的圖形應用程序十分的重要。這個要源于它的開發(fā)緣由。在這之前,使用的awt是原生窗口部件,但是它一直未能突破LCD。為了解決這個問題,又開發(fā)了swing。它使用的是仿真窗口部件,不存在LCD問題。但是消耗太多的內(nèi)存等。為了徹底解決

上述問題,IBM開發(fā)了SWT。在基于Windows的ecplise中,SWT通過DLL形式的本地庫與操作系統(tǒng)交互;在UNIX下,SWT可通過的GTK運行。

最近的學習和看書,讓我覺得自己的真的就像在軟件的最頂層。自己現(xiàn)在學習的東西在軟件

中真的是基礎(chǔ)中的基礎(chǔ)。我們還有很長的路要走。真的要加油,好好學習!

5.參考文獻

[1]java核心技術(shù)卷1:基礎(chǔ)知識葉乃文鄺勁筠杜永萍201*.5機械工業(yè)出版社[2]eclipse3.0程序開發(fā)技術(shù)詳解吳越勝李新磊201*.10清華大學出版社

友情提示:本文中關(guān)于《軟件項目總結(jié)報告》給出的范例僅供您參考拓展思維使用,軟件項目總結(jié)報告:該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


軟件項目總結(jié)報告》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://m.weilaioem.com/gongwen/654866.html