欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      附6 軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

      時(shí)間:2019-05-12 05:08:54下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《附6 軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《附6 軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告》。

      第一篇:附6 軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

      附件4-6 項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告 引言...............................................................................................................................3 1.1 1.2 1.3 1.4 2 編寫(xiě)目的............................................................................................................3 背景....................................................................................................................3 定義....................................................................................................................3 參考資料............................................................................................................3

      實(shí)際開(kāi)發(fā)結(jié)果................................................................................................................4 2.1 2.2 2.3 2.4 2.5 產(chǎn)品....................................................................................................................4 主要功能和性能.................................................................................................4 基本流程............................................................................................................4 進(jìn)度....................................................................................................................4 費(fèi)用....................................................................................................................5 開(kāi)發(fā)工作評(píng)價(jià)................................................................................................................5 3.1 3.2 3.3 3.4 對(duì)生產(chǎn)效率的評(píng)價(jià)..............................................................................................5 對(duì)產(chǎn)品質(zhì)量的評(píng)價(jià)..............................................................................................5 對(duì)技術(shù)方法的評(píng)價(jià)..............................................................................................5 出錯(cuò)原因的分析.................................................................................................6 經(jīng)驗(yàn)與教訓(xùn)....................................................................................................................6 引言

      1.1 編寫(xiě)目的

      說(shuō)明編寫(xiě)這份項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告的目的,指出預(yù)期的閱讀范圍。

      1.2 背景

      說(shuō)明:

      1)本項(xiàng)目的名稱(chēng)和所開(kāi)發(fā)出來(lái)的軟件系統(tǒng)的名稱(chēng);

      2)此軟件的任務(wù)提出者、開(kāi)發(fā)者、用戶及安裝此軟件的計(jì)算中心。

      1.3 定義

      列出本文件中用到的專(zhuān)門(mén)術(shù)語(yǔ)的定義和外文首字母組詞的原詞組。

      1.4 參考資料

      列出要用到的參考資料,如:

      1)本項(xiàng)目的已核準(zhǔn)的計(jì)劃任務(wù)書(shū)或合同、上級(jí)機(jī)關(guān)的批文; 2)屬于本項(xiàng)目的其他已發(fā)表的文件;

      3)本文件中各處所引用的文件、資料,包括所要用到的軟件開(kāi)發(fā)標(biāo)準(zhǔn)。列出這些文件的標(biāo)題、文件編號(hào)、發(fā)表日期和出版單位,說(shuō)明能夠得到這些文件資料的來(lái)源。2 實(shí)際開(kāi)發(fā)結(jié)果

      2.1 產(chǎn)品

      說(shuō)明最終制成的產(chǎn)品包括:

      1)程序系統(tǒng)中各個(gè)程序的名字,它們之間的層次關(guān)系,以千字節(jié)為單位的各個(gè)程序的程序量、存儲(chǔ)媒體的形式和數(shù)量;

      2)程序系統(tǒng)共有哪幾個(gè)版本,各自的版本號(hào)及它們之間的區(qū)別; 3)每個(gè)文件的名稱(chēng);

      4)所建立的每個(gè)數(shù)據(jù)庫(kù)。如果開(kāi)發(fā)中制訂過(guò)配置管理計(jì)劃,要同這個(gè)計(jì)劃相比較。

      2.2 主要功能和性能

      逐項(xiàng)列出本軟件產(chǎn)品所實(shí)際具有的主要功能和性能,對(duì)照可行性研究報(bào)告、項(xiàng)目開(kāi)發(fā)計(jì)劃、功能需 .求說(shuō)明書(shū)的有關(guān)內(nèi)容,說(shuō)明原定的開(kāi)發(fā)目標(biāo)是達(dá)到了、未完全達(dá)到、或超過(guò)了。

      2.3 基本流程

      用圖給出本程序系統(tǒng)的實(shí)際的基本的處理流程。

      2.4 進(jìn)度

      列出原定計(jì)劃進(jìn)度與實(shí)際進(jìn)度的對(duì)比,明確說(shuō)明,實(shí)際進(jìn)度是提前了、還是延遲了,分析主要原因。2.5 費(fèi)用

      列出原定計(jì)劃費(fèi)用與實(shí)際支出費(fèi)用的對(duì)比,包括: 1)工時(shí),以人月為單位,并按不同級(jí)別統(tǒng)計(jì);

      2)計(jì)算機(jī)的使用時(shí)間,區(qū)別CPU時(shí)間及其他設(shè)備時(shí)間; 3)物料消耗、出差費(fèi)等其他支出。

      明確說(shuō)明,經(jīng)費(fèi)是超出了、還是節(jié)余了,分析其主要原因。開(kāi)發(fā)工作評(píng)價(jià)

      3.1 對(duì)生產(chǎn)效率的評(píng)價(jià)

      給出實(shí)際生產(chǎn)效率,包括:

      1)程序的平均生產(chǎn)效率,即每人月生產(chǎn)的行數(shù);

      2)文件的平均生產(chǎn)效率,即每人月生產(chǎn)的千字?jǐn)?shù); 并列出原訂計(jì)劃數(shù)作為對(duì)比。

      3.2 對(duì)產(chǎn)品質(zhì)量的評(píng)價(jià)

      說(shuō)明在測(cè)試中檢查出來(lái)的程序編制中的錯(cuò)誤發(fā)生率,即每干條指令(或語(yǔ)句)中的錯(cuò)誤指令數(shù)(或語(yǔ)句數(shù))。如果開(kāi)發(fā)中制訂過(guò)質(zhì)量保證計(jì)劃或配置管理計(jì)劃,要同這些計(jì)劃相比較。

      3.3 對(duì)技術(shù)方法的評(píng)價(jià)

      給出對(duì)在開(kāi)發(fā)中所使用的技術(shù)、方法、工具、手段的評(píng)價(jià)。3.4 出錯(cuò)原因的分析

      給出對(duì)于開(kāi)發(fā)中出現(xiàn)的錯(cuò)誤的原因分析。經(jīng)驗(yàn)與教訓(xùn)

      列出從這項(xiàng)開(kāi)發(fā)工作中所得到的最主要的經(jīng)驗(yàn)與教訓(xùn)及對(duì)今后的項(xiàng)目開(kāi)發(fā)工作的建議。

      第二篇:軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告模版

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      火車(chē)票系統(tǒng)的開(kāi)發(fā)

      1引言

      研究報(bào)告(1.研究計(jì)劃;2.完成的研究?jī)?nèi)容、研究方法、研究過(guò)程與結(jié)論、成果;3.比照研究計(jì)劃,分析超過(guò)或未達(dá)到預(yù)定目標(biāo)、進(jìn)度、研究?jī)?nèi)容的原因;4.參考文獻(xiàn)等。)

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

      2需求分析

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

      2.1用戶

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

      2.2主要功能

      該系統(tǒng)從功能方面可以分為四個(gè)方面: 登錄。不管你是管理員還是售票員必須登錄以后才可以進(jìn)行系統(tǒng)允許的操作。當(dāng)然要登錄的管理員和售票員都必須是再數(shù)據(jù)庫(kù)中已經(jīng)發(fā)布的。

      基本設(shè)置:該模塊主要是修改售票員的相關(guān)信息,修改列車(chē)的相關(guān)信息和修改車(chē)票的相

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      關(guān)信息。這一塊的功能只有管理員才可以操作。其他的售票員是不可以對(duì)他進(jìn)行操作的。

      售票和退票:這部分工作主要是售票員來(lái)操作的。售票員根據(jù)買(mǎi)票人員提出的要求進(jìn)行查詢。查詢的方式有兩種:一是根據(jù)車(chē)次查詢;一是根據(jù)目的地來(lái)查詢。退票主要是將已經(jīng)出售的車(chē)票在列車(chē)開(kāi)出之前再一次的返回到數(shù)據(jù)庫(kù)中,并繼續(xù)出售。

      列車(chē)和車(chē)票查詢;當(dāng)需要查詢列車(chē)信息或者是車(chē)票信息是所做的操作。

      2.3基本流程

      3開(kāi)發(fā)過(guò)程

      3.1內(nèi)容

      該程序包括三個(gè)部分?jǐn)?shù)據(jù)庫(kù)的設(shè)計(jì)、通用模塊的實(shí)現(xiàn)、各個(gè)模塊的實(shí)現(xiàn)。

      3.1.1 數(shù)據(jù)庫(kù)的設(shè)計(jì):

      將本系統(tǒng)所需的所有的數(shù)據(jù)都存儲(chǔ)到數(shù)據(jù)庫(kù)中。需要在數(shù)據(jù)庫(kù)中管理員表、售票員表、列車(chē)信息表和車(chē)票信息表。如圖所示:

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      管理員表:

      售票員表:

      列車(chē)信息表:

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      車(chē)票信息表:

      3.1.2通用模塊的實(shí)現(xiàn):

      通用模塊為了減少代碼的重復(fù)。在該系統(tǒng)中,對(duì)經(jīng)常使用的操作進(jìn)行封裝,如將多次需要調(diào)用的數(shù)據(jù)庫(kù)和操作數(shù)庫(kù)的增、刪、改和查等操作進(jìn)行封裝。使代碼有很好的重用性,即使出現(xiàn)錯(cuò)誤也很容易調(diào)試。如本程序中的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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      }

      } 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();

      用戶登錄界面的設(shè)計(jì)、主界面的設(shè)計(jì)、基本設(shè)置模塊、銷(xiāo)售及退票模塊和列車(chē)及車(chē)票查詢模塊。

      用戶登錄模塊:該部分是通過(guò)設(shè)計(jì)login.java來(lái)實(shí)現(xiàn)的。這部分代碼的作用是用戶首先選擇自己的登錄的是管理員還是售票員,然后輸入賬號(hào)和密碼。單擊登錄,用戶先判斷用戶登錄的類(lèi)型,然后給sql變量賦SQL語(yǔ)句值,系統(tǒng)調(diào)用DAO.java類(lèi)的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();

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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;

      }

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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);

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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;} 圖示為;

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      實(shí)現(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);

      //第一個(gè)菜單

      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“);

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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();} });//第二個(gè)菜單

      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();} });//第三個(gè)菜單

      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);

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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();

      } }

      圖示為:

      基本設(shè)置模塊包括車(chē)次管理,車(chē)票管理和售票員管理。

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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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();

      } } } 在該段代碼中調(diào)用了DAO.java類(lèi)中的getAllTrain()方法來(lái)獲得所有的車(chē)輛信息,然后以表格的形式顯示出來(lái)。DAO.java類(lèi)中的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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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ù)庫(kù),然后用傳遞過(guò)來(lái)的SQl語(yǔ)句在列表中刪除某輛列車(chē)的信息。getAllTrain()方法是顯示所有的列車(chē)的信息。圖示如下:

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      在車(chē)次管理中的對(duì)于列車(chē)信息添加的功能是通過(guò)AddTrain.java 來(lái)實(shí)現(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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      ”'“+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();} } 圖示為:

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      修改列車(chē)功能是在UpdateTrain.java.類(lèi)中實(shí)現(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);

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      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();} }

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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      售票及退票模塊包括兩部分:火車(chē)售票和退票。售票系統(tǒng)是xiaosTickect.java 實(shí)現(xiàn)的。圖示如下:

      退票是售票員根據(jù)用戶提供的車(chē)票信息在系統(tǒng)中進(jìn)行售票。主要是由TuiTicket.java來(lái)實(shí)現(xiàn)的。在該類(lèi)中涉及到DAO.java類(lèi)中的selectTrain()方法.圖示如下:

      列車(chē)及車(chē)票查詢系統(tǒng)主要功能包括兩部分:查詢列車(chē)信息和查詢車(chē)票信息.有FindTrain.Java和FindTicket.java 實(shí)現(xiàn).圖示如下:

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

      4學(xué)習(xí)心得

      我是再?zèng)]有接觸eclipse之前就接觸了java,我自己都先用記事本編寫(xiě)java程序,然后在doc下進(jìn)行編譯和運(yùn)行。后來(lái)安裝了ecplise這個(gè)集成環(huán)境,但是只把它當(dāng)成一個(gè)運(yùn)行java的集成環(huán)境。

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

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

      武漢理工大學(xué)《軟件開(kāi)發(fā)工具》論文報(bào)告

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

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

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

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

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

      中真的是基礎(chǔ)中的基礎(chǔ)。我們還有很長(zhǎng)的路要走。真的要加油,好好學(xué)習(xí)啊!

      5.參考文獻(xiàn)

      [1]java核心技術(shù)卷1:基礎(chǔ)知識(shí) 葉乃文 鄺勁筠 杜永萍 2008.5 機(jī)械工業(yè)出版社 [2]eclipse 3.0 程序開(kāi)發(fā)技術(shù)詳解

      吳越勝 李新磊

      2010.10 清華大學(xué)出版社

      第三篇:軟件項(xiàng)目總結(jié)報(bào)告

      XXXXXXXXXXXXXXXXXXXXXXX系統(tǒng)

      項(xiàng)目總結(jié)報(bào)告

      XXXXXXXXX 2017/7/27 項(xiàng)目概要信息

      XXXXXXXXXXXXXXXXXXXXXXX系統(tǒng)的技術(shù)團(tuán)隊(duì)由11人組成,其中項(xiàng)目經(jīng)理1人,需求分析師1人,UI設(shè)計(jì)師1人,開(kāi)發(fā)人員6人,測(cè)試人員2人。

      本項(xiàng)目的前期工作從2017年5月19日開(kāi)始,歷時(shí)16個(gè)工作日,于6月9日完成需求分析等準(zhǔn)備工作。開(kāi)發(fā)階段從2017年6月12日開(kāi)始,歷時(shí)22個(gè)工作日,于7月10日完成全部開(kāi)發(fā)工作,進(jìn)入外部業(yè)務(wù)人員驗(yàn)證測(cè)試階段,目前,可使用XXXXXXXXXXXXXXXXXXXXXXX的二級(jí)域名進(jìn)行訪問(wèn),詳細(xì)信息如下:

      用戶資助申報(bào)地址:XXXXXXXXXXXXXXXXXXXXXXX 用戶審核管理地址:XXXXXXXXXXXXXXXXXXXXXXX

      本項(xiàng)目的開(kāi)發(fā)過(guò)程有5個(gè)關(guān)鍵的里程碑,具體時(shí)間及內(nèi)容如下: 2017年06月21日:項(xiàng)目初次全新功能開(kāi)發(fā)完成;

      2017年06月29日:項(xiàng)目初次內(nèi)部功能測(cè)試、安全測(cè)試、性能測(cè)試完成; 2017年07月04日:需求變更,準(zhǔn)備進(jìn)行二次開(kāi)發(fā); 2017年07月10日:項(xiàng)目二次開(kāi)發(fā)全部完成;

      2017年07月11日:項(xiàng)目二次內(nèi)部測(cè)試完成,等待外部業(yè)務(wù)人員驗(yàn)證測(cè)試。項(xiàng)目經(jīng)驗(yàn)

      因?yàn)槭浅醮螕?dān)任項(xiàng)目經(jīng)理的角色,我最初找不到切入點(diǎn),領(lǐng)導(dǎo)和同事在整個(gè)的過(guò)程中給了我很多的指導(dǎo)和建議。實(shí)際的項(xiàng)目管理工作使我對(duì)自己已學(xué)的理論知識(shí)有了更深刻的體會(huì)。所謂理論指導(dǎo)實(shí)踐,實(shí)踐驗(yàn)證理論,回想整個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程,至少可以總結(jié)了以下幾點(diǎn)經(jīng)驗(yàn): 2.1 溝通討論 信息交換要及時(shí)

      溝通討論是貫穿整個(gè)項(xiàng)目生命周期的活動(dòng),團(tuán)隊(duì)成員間信息交換是否及時(shí),更是項(xiàng)目成功的關(guān)鍵。雖然不同角色承擔(dān)不同工作,但都是以達(dá)成項(xiàng)目目標(biāo)為指導(dǎo)的,團(tuán)隊(duì)成員只有始終保持溝通討論,保證接收到最新的、一致的項(xiàng)目需求信息,才能使得開(kāi)發(fā)工作順利進(jìn)行,避免出現(xiàn)信息交換不及時(shí)而導(dǎo)致的返工。

      對(duì)于溝通,結(jié)合實(shí)際來(lái)說(shuō),如果需求分析師不能將變更的需求信息及時(shí)傳遞給UI設(shè)計(jì)人員,就會(huì)導(dǎo)致不符合用戶需求的設(shè)計(jì),更會(huì)使開(kāi)發(fā)人員寫(xiě)出無(wú)用的代碼,這必然導(dǎo)致重設(shè)計(jì)、重編碼,甚至?xí)诱`整體項(xiàng)目進(jìn)度。

      對(duì)于討論,尤其是像我這樣缺少經(jīng)驗(yàn)的項(xiàng)目經(jīng)理,不論是制定計(jì)劃,還是工作量識(shí)別,都必須向有經(jīng)驗(yàn)的同事請(qǐng)教,接受正確的建議,才能得到合理的安排。2.2項(xiàng)目范圍 功能邊界要清晰

      項(xiàng)目經(jīng)理以需求文檔為依據(jù),將項(xiàng)目范圍及邊界清晰羅列,是把控項(xiàng)目開(kāi)發(fā)進(jìn)度的先決條件。

      對(duì)于XXXXXXXXXXXX系統(tǒng)來(lái)說(shuō),其功能并不復(fù)雜,且開(kāi)發(fā)周期短,所以在確定項(xiàng)目范圍并進(jìn)行任務(wù)細(xì)化時(shí),可精確到接口、頁(yè)面。把一個(gè)大任務(wù)分解成一個(gè)個(gè)的小任務(wù)的好處是,可以幫助我們更加精確的估計(jì)出它們的工作量,并暴露出很多可能一時(shí)無(wú)法想到的工作量,也可以保證后續(xù)進(jìn)行項(xiàng)目開(kāi)發(fā)過(guò)程的狀態(tài)跟蹤,更加精確。2.3時(shí)間計(jì)劃 人員分配要合理

      以前總認(rèn)為寫(xiě)計(jì)劃比寫(xiě)代碼容易的多,其實(shí)恰恰相反。一份合理的項(xiàng)目計(jì)劃需要經(jīng)過(guò)思考、溝通、權(quán)衡、詢問(wèn)、傾聽(tīng)的過(guò)程,要知道,用來(lái)分析解決問(wèn)題需要花費(fèi)的時(shí)間,遠(yuǎn)遠(yuǎn)大于單純的寫(xiě)代碼時(shí)間。

      項(xiàng)目進(jìn)度計(jì)劃必須將分解出來(lái)的小任務(wù),綜合考慮時(shí)間、難易程度、人員能力,估出工作量并進(jìn)行合理分配。2.4代碼開(kāi)發(fā) 功能驗(yàn)證要同步

      當(dāng)日的開(kāi)發(fā)任務(wù)結(jié)束后,作為項(xiàng)目經(jīng)理應(yīng)該對(duì)現(xiàn)有開(kāi)發(fā)成果做驗(yàn)證,即對(duì)已完成的功能做驗(yàn)證,及時(shí)發(fā)現(xiàn)缺陷或其他問(wèn)題,次日找對(duì)應(yīng)的開(kāi)發(fā)人員做修復(fù)。

      因此,代碼開(kāi)發(fā)和功能驗(yàn)證的同步進(jìn)行,既可以保證軟件質(zhì)量,同時(shí)也可以保證項(xiàng)目進(jìn)度。當(dāng)然,應(yīng)該根據(jù)實(shí)際情況同步調(diào)整項(xiàng)目進(jìn)度計(jì)劃,預(yù)留處理缺陷的時(shí)間。

      2.5進(jìn)度執(zhí)行 問(wèn)題修復(fù)要反饋

      項(xiàng)目成員必須及時(shí)反饋當(dāng)日任務(wù)完成情況,及前一天遺留缺陷的修復(fù)情況,才可以保證項(xiàng)目經(jīng)理對(duì)整體進(jìn)度的把控,準(zhǔn)確跟蹤項(xiàng)目狀態(tài)。2.6

      需求變更 文檔修改要記錄

      開(kāi)發(fā)過(guò)程中的任何變更,都應(yīng)做記錄,作為項(xiàng)目成員之間溝通交流的依據(jù),也可以避免重復(fù)修改,增加無(wú)謂的工作量。項(xiàng)目教訓(xùn)

      3.1計(jì)劃應(yīng)當(dāng)先于執(zhí)行

      項(xiàng)目計(jì)劃必須要盡可能周全,并且在項(xiàng)目經(jīng)理的可控范圍內(nèi),可以根據(jù)實(shí)際情況及時(shí)做調(diào)整,但一定要保證,具體工作的開(kāi)展是在計(jì)劃范圍內(nèi),因?yàn)闆](méi)有計(jì)劃直接執(zhí)行會(huì)直接導(dǎo)致項(xiàng)目進(jìn)度不可控,狀態(tài)無(wú)法跟蹤。3.2溝通應(yīng)當(dāng)注意技巧

      高效溝通是項(xiàng)目成功的決定因素。因缺乏高效的溝通技巧。對(duì)內(nèi),在與開(kāi)發(fā)人員進(jìn)行需求溝通、代碼實(shí)現(xiàn)方式設(shè)計(jì)等方面溝通時(shí),并不能快速準(zhǔn)確表達(dá)自己意圖;對(duì)外,在與業(yè)務(wù)人員協(xié)商問(wèn)題時(shí),會(huì)不自覺(jué)的使用技術(shù)術(shù)語(yǔ)等業(yè)務(wù)人員不易理解的詞匯,導(dǎo)致雙方無(wú)法在較短時(shí)間內(nèi)達(dá)成一致意見(jiàn)。希望自己以后有更多的鍛煉機(jī)會(huì),學(xué)習(xí)彌補(bǔ)這方面的欠缺。

      第四篇:項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

      1引言.....................................................................................................................................................2 1.1編寫(xiě)目的...................................................................................................................................2 1.2背景...........................................................................................................................................2 1.3定義...........................................................................................................................................2 1.4參考資料...................................................................................................................................3 2實(shí)際開(kāi)發(fā)結(jié)果......................................................................................................................................3 2.1產(chǎn)品...........................................................................................................................................3 2.2主要功能和性能.......................................................................................................................3 2.3基本流程...................................................................................................................................3 2.4進(jìn)度...........................................................................................................................................4 2.5費(fèi)用...........................................................................................................................................4 3開(kāi)發(fā)工作評(píng)價(jià)......................................................................................................................................4 3.1對(duì)生產(chǎn)效率的評(píng)價(jià)...................................................................................................................4 3.2對(duì)產(chǎn)品質(zhì)量的評(píng)價(jià)...................................................................................................................4 3.3對(duì)技術(shù)方法的評(píng)價(jià)...................................................................................................................4 3.4出錯(cuò)原因的分析.......................................................................................................................5 4經(jīng)驗(yàn)與教訓(xùn)..........................................................................................................................................5

      第五篇:項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

      項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

      1.引言

      1.1編寫(xiě)目的

      項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告的編制是為了簡(jiǎn)單回顧記錄項(xiàng)目的開(kāi)發(fā)過(guò)程,總結(jié)本項(xiàng)目開(kāi)發(fā)工作的經(jīng)驗(yàn),說(shuō)明實(shí)際取得的開(kāi)發(fā)結(jié)果以及對(duì)整個(gè)開(kāi)發(fā)工作各個(gè)方面的評(píng)價(jià),總結(jié)開(kāi)發(fā)過(guò)程中的邏輯方法。

      本文檔預(yù)期的讀者為軟件開(kāi)發(fā)人員。

      1.2背景

      項(xiàng)目名稱(chēng):“High Go”智能購(gòu)物車(chē) 系統(tǒng)名稱(chēng):智能購(gòu)物車(chē)系統(tǒng)

      開(kāi)發(fā)單位:西北大學(xué)信息科學(xué)與技術(shù)學(xué)院“High Go”團(tuán)隊(duì) 開(kāi)發(fā)歷時(shí):四周

      版權(quán)信息:夢(mèng)想網(wǎng)絡(luò)資源檢索系統(tǒng)是由西北大學(xué)信息科學(xué)與技術(shù)學(xué)院“High Go”團(tuán)隊(duì)開(kāi)發(fā),未經(jīng)作者許可,任何個(gè)人或組織不能將其用于商業(yè)用途,系統(tǒng)所搜索的資源版權(quán)歸原作者所有。

      1.3定義

      購(gòu)物車(chē)車(chē)身:采用當(dāng)前市場(chǎng)上最普遍的購(gòu)物車(chē)規(guī)格,迎合人們一般的手推購(gòu)物車(chē)購(gòu)物的習(xí)慣方式。

      顯示屏:在購(gòu)物車(chē)前端,車(chē)筐上方安置一塊觸摸顯示屏,人們可以在顯示屏上通過(guò)點(diǎn)擊屏幕進(jìn)行一些基本操作,如查詢商品信息、查詢總價(jià)和商品數(shù)量、確認(rèn)購(gòu)物單、刪除商品等。

      無(wú)線掃碼槍?zhuān)侯櫩驮谫?gòu)物過(guò)程中,可以對(duì)自己確認(rèn)投入購(gòu)物車(chē)的商品進(jìn)行掃碼。將無(wú)線掃碼槍與顯示屏一同安置在購(gòu)物車(chē)筐上方,方便顧客在拿取商品掃碼同時(shí)看到新掃碼的商品信息。

      警示燈:在自助購(gòu)物過(guò)程中,超市本身無(wú)法對(duì)每一位客戶進(jìn)行實(shí)時(shí)監(jiān)管,為了防止顧客忘記自主掃碼或者故意不掃碼給超市帶來(lái)?yè)p失,在購(gòu)物車(chē)的兩旁將設(shè)置警示燈,如果沒(méi)有通過(guò)掃碼而把商品直接投入車(chē)筐內(nèi),則警示燈會(huì)啟動(dòng)發(fā)光報(bào)警,只有重新掃碼并通過(guò)顯示屏進(jìn)行確認(rèn)才能夠消除報(bào)警。

      1.4參考資料

      [1]劉兵,劉曉朋,曾翔亮.基于條碼識(shí)別技術(shù)的智能購(gòu)物車(chē)設(shè)計(jì)[J].森林工程,2012,11.[2]鄭創(chuàng)立.RI-R6C-001A 集成電路的原理與應(yīng)用[J].國(guó)外電子元器件,2004,06.[3]李文江,高鋒,丁睿.RI-R6C-OO1A 射頻芯片在個(gè)人醫(yī)療信息系統(tǒng)中的應(yīng)用[J].電氣自動(dòng)化,2007, 29.[4]劉江沙,雷偉,尹酉.基于 CC2430 的串口無(wú)線模塊的設(shè)計(jì)[J].國(guó)外電子元器件,2007,04.[5]張喆.基于 STC89C516 的超市智能購(gòu)物車(chē)研發(fā)[J].自動(dòng)化技術(shù)與應(yīng)用,2009,28.[6]江田.基于 RFID 的商品購(gòu)物智能終端的設(shè)計(jì)與實(shí)現(xiàn)[D].大連理工大學(xué),2013,06.[7] 張俊謨.單片機(jī)中級(jí)教程[M].北京: 北京航空航天大學(xué)出版社.2006.[8] 張俊.匠人手機(jī)[M].北京:北京航空航天大學(xué)出版社.2008.[9] 劉煥成.工程背景下的單片機(jī)原理及系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社.2008.[10] 顏繼紅.超市一線員工高流動(dòng)率問(wèn)題的研究[J].科技和產(chǎn)業(yè),2011,11(4):54-55 [11] 韓立毛,趙躍華,錢(qián)宇力.基于物品跟蹤定位方案的連鎖超市應(yīng)用系統(tǒng)設(shè)計(jì)[J].鐵路計(jì)算機(jī)應(yīng)用,2009(8)[12] 中國(guó)工業(yè)和信息化部物聯(lián)網(wǎng)總體框架與技術(shù)要求(Y DT/2437-2012)[S] 北京:人民郵電出版社,2013 [13] 葉少龍,劉建群等.PIC 單片機(jī)在模具條碼識(shí)別系統(tǒng)中的應(yīng)用[J].廣東工業(yè)大學(xué)學(xué)報(bào),2009,26(2):94-97 [14] 程子華,陽(yáng)勝峰.視頻學(xué)工控—觸摸屏應(yīng)用技術(shù)[M].北京:人民郵電出版社,2006 [15]劉偉勛.家樂(lè)福價(jià)格欺詐的背后[J].中國(guó)品牌,2011,(2): 44-46.[16] 葉少龍,劉建群,吳積榮,等.PIC 單片機(jī)在模具條碼識(shí)別系統(tǒng)中的應(yīng)用[J].廣東工業(yè)大學(xué)學(xué)報(bào)2009, 26(2): 9420.[18]王忠勇,張建華,宋豫冀.基于 89C2051 的解碼器設(shè)計(jì)[J].微電子學(xué)與計(jì)算, 2002,(5): 57-58.2.實(shí)際開(kāi)發(fā)結(jié)果 2.1產(chǎn)品

      “High Go”智能購(gòu)物車(chē)系統(tǒng)

      2.2主要功能和性能

      “High Go”系統(tǒng)主要包括以下功能:(1)購(gòu)物車(chē)管理系統(tǒng)(系統(tǒng)初始化模塊)(2)購(gòu)物車(chē)管理系統(tǒng)(觸摸屏模塊)(3)購(gòu)物車(chē)管理系統(tǒng)(無(wú)線通信模塊)(4)數(shù)據(jù)庫(kù)管理模塊(5)結(jié)算與防盜模塊

      2.3基本流程

      1)系統(tǒng)初始化模塊

      完成系統(tǒng)變量的初始化,主要包括啟動(dòng)液晶顯示屏、檢查下位機(jī)與上位機(jī)的 Zigbee 通信網(wǎng)絡(luò)是否正常(下位機(jī)指每臺(tái)購(gòu)物車(chē)對(duì)應(yīng)的單片機(jī),上位機(jī)指超市 端的PC 機(jī))以及一些其他一些開(kāi)機(jī)自檢工作。2)觸摸屏顯示模塊

      經(jīng)過(guò)系統(tǒng)初始化,觸摸屏處于待機(jī)界面。接受指令后,觸摸屏將顯示用戶請(qǐng) 求的各類(lèi)交互信息。主要流程如下:

      3)無(wú)線通信模塊

      主要實(shí)現(xiàn)下位機(jī)與上位機(jī)之間的多對(duì)一(多個(gè)下位機(jī)對(duì)一個(gè)上位機(jī))數(shù)據(jù)傳輸、命令交互等。

      4)數(shù)據(jù)庫(kù)管理模塊 數(shù)據(jù)庫(kù)管理模塊包括對(duì)超市商品信息的建立、查詢和更新。主要流程如下:

      5)結(jié)算與防盜模塊

      該模塊我們不僅設(shè)計(jì)了經(jīng)典的計(jì)價(jià)算法,還在稱(chēng)重的基礎(chǔ)上核對(duì)預(yù)估重量與實(shí)際重量的偏差值,從而實(shí)現(xiàn)防盜和誤放提醒功能。主要流程如下:

      流程邏輯

      2.4進(jìn)度

      小組成員四人,從2016年11月15日組隊(duì),11月24號(hào)正式啟動(dòng)項(xiàng)目,直至12月20號(hào)上交作品,在此期間除了法定期間大家暫停了共一周時(shí)間,其他時(shí)間一直致力于項(xiàng)目的開(kāi)發(fā)工作:

      2016年11月下旬—11月末:項(xiàng)目設(shè)計(jì)階段

      11月末,小組成員著手于市場(chǎng)調(diào)研,并花費(fèi)一周時(shí)間設(shè)計(jì)出“High Go”購(gòu)物車(chē)系統(tǒng)的藍(lán)圖。初級(jí)階段圓滿完成了預(yù)定的目標(biāo)。

      2016年12月1日——12月17日:項(xiàng)目啟動(dòng)和實(shí)行核心階段 此階段由各成員在自己電腦上各自分別編寫(xiě)所屬程序,但由于并非按流程為主線的編寫(xiě)方式,軟件各模塊之間存在一部分接口不明確,軟件運(yùn)行情況的測(cè)試也只是整體的大方面的進(jìn)行,并未涉及細(xì)微部分,因此軟件運(yùn)行不是非常穩(wěn)定,仍有一些問(wèn)題亟待解決。

      2016年12月18日——2016年12月20日:項(xiàng)目收尾階段

      回顧項(xiàng)目并編寫(xiě)總結(jié)文檔、總結(jié)了各位成員的心路歷程。

      2.5費(fèi)用

      較分散,無(wú)詳細(xì)統(tǒng)計(jì)。

      3.開(kāi)發(fā)工作評(píng)價(jià) 3.1對(duì)生產(chǎn)效率的評(píng)價(jià) 一個(gè)月中,各成員在完成項(xiàng)目的同時(shí)并未占用太多自身學(xué)習(xí)時(shí)間,較為高效地完成了開(kāi)發(fā)任務(wù)。

      3.2對(duì)產(chǎn)品質(zhì)量的評(píng)價(jià)

      雖然項(xiàng)目完成得有些倉(cāng)促,但在實(shí)際測(cè)試中最基礎(chǔ)的功能與超市適配良好,因此可以說(shuō)在基礎(chǔ)系統(tǒng)功能上擁有較高的質(zhì)量。

      3.3對(duì)技術(shù)方法的評(píng)價(jià)

      小組采用順應(yīng)趨勢(shì)的、成熟的、主流的技術(shù)。

      3.4出錯(cuò)原因的分析

      除去時(shí)間較緊的因素之外,小組最大問(wèn)題在于各自實(shí)現(xiàn)各自功能,并未以流程為主線,導(dǎo)致程序在模塊銜接時(shí)出現(xiàn)很大銜接問(wèn)題。

      4.經(jīng)驗(yàn)與教訓(xùn)

      通過(guò)這一個(gè)多月的努力工作,我認(rèn)識(shí)到要作一個(gè)真正合格的程序員,或者說(shuō)就是可以真正合格完成一些代碼工作的程序員,應(yīng)該具有以下的的素質(zhì): 1:團(tuán)隊(duì)精神和協(xié)作能力

      把它作為基本素質(zhì),并不是不重要,恰恰相反,這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。把高水平程序員說(shuō)成獨(dú)行俠的都是在囈語(yǔ),任何個(gè)人的力量都是有限的,即便如linus這樣的天才,也需要通過(guò)組成強(qiáng)大的團(tuán)隊(duì)來(lái)創(chuàng)造奇跡,那些遍布全球的為linux寫(xiě)核心的高手們,沒(méi)有協(xié)作精神是不可想象的。獨(dú)行俠可以作一些賺錢(qián)的小軟件發(fā)點(diǎn)小財(cái),但是一旦進(jìn)入一些大系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開(kāi)發(fā)任務(wù),缺乏這種素質(zhì)的人就完全不合格了。

      2:文檔習(xí)慣

      說(shuō)高水平程序員從來(lái)不寫(xiě)文檔的肯定是外行人,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫(xiě)技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來(lái)的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。3:規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫(xiě)習(xí)慣

      作為一些外國(guó)知名軟件公司的規(guī)矩,代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長(zhǎng)度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫(xiě)習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。比如整個(gè)linux的搭建,沒(méi)有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,全球的研發(fā)協(xié)作是絕對(duì)不可想象的。4:需求理解能力

      程序員需要理解一個(gè)模塊的需求,很多同學(xué)寫(xiě)程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開(kāi)發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,有人曾經(jīng)說(shuō)寫(xiě)一個(gè)廣告交換程序很簡(jiǎn)單,這種人不了解在百萬(wàn)甚至千萬(wàn)數(shù)量級(jí)的訪問(wèn)情況下的性能指標(biāo)是如何實(shí)現(xiàn)的,性能需求指標(biāo)中,穩(wěn)定性、并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營(yíng)中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。5:學(xué)習(xí)和總結(jié)的能力

      程序員是人才很容易被淘汰、很容易落伍的職業(yè),因?yàn)橐环N技術(shù)可能僅僅在三兩年內(nèi)具有領(lǐng)先性,程序員如果想安身立命,就必須不斷跟進(jìn)新的技術(shù),學(xué)習(xí)新的技能。

      善于學(xué)習(xí),對(duì)于任何職業(yè)而言,都是前進(jìn)所必需的動(dòng)力,對(duì)于程序員,這種要求就更加高了。

      善于總結(jié),也是學(xué)習(xí)能力的一種體現(xiàn),每次完成一個(gè)研發(fā)任務(wù),完成一段代碼,都應(yīng)當(dāng)有目的的跟蹤該程序的應(yīng)用狀況和用戶反饋,隨時(shí)總結(jié),找到自己的不足,這樣逐步提高,一個(gè)程序員才可能成長(zhǎng)起來(lái)。具備以上全部素質(zhì)的人,應(yīng)當(dāng)說(shuō)是夠格的程序員了,以上的素質(zhì)都不是由IQ決定的,也不是大學(xué)某些課本里可以學(xué)習(xí)到的,需要的僅僅是程序員對(duì)自己工作的認(rèn)識(shí),是一種意識(shí)上的問(wèn)題。

      通過(guò)做這個(gè)項(xiàng)目,也了解到軟件開(kāi)發(fā)的基本流程:

      第一個(gè)步驟是市場(chǎng)調(diào)研,技術(shù)和市場(chǎng)要結(jié)合才能體現(xiàn)最大價(jià)值。

      第二個(gè)步驟是需求分析,這個(gè)階段需要出三樣?xùn)|西,用戶視圖,數(shù)據(jù)詞典和用戶操作手冊(cè)。用戶視圖是該軟件用戶(包括終端用戶和管理用戶)所能看到的頁(yè)面樣式,這里面包含了很多操作方面的流程和條件。數(shù)據(jù)詞典是指明數(shù)據(jù)邏輯關(guān)系并加以整理的東東,完成了數(shù)據(jù)詞典,數(shù)據(jù)庫(kù)的設(shè)計(jì)就完成了一半多。用戶操作手冊(cè)是指明了操作流程的說(shuō)明書(shū)。請(qǐng)注意,用戶操作流程和用戶視圖是由需求決定的,因此應(yīng)該在軟件設(shè)計(jì)之前完成,完成這些,就為程序研發(fā)提供了約束和準(zhǔn)繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開(kāi)發(fā)工作和實(shí)際需求往往因此 產(chǎn)生隔閡脫節(jié)的現(xiàn)象。

      需求分析,除了以上工作,筆者以為作為項(xiàng)目設(shè)計(jì)者應(yīng)當(dāng)完整的做出項(xiàng)目的性能需求說(shuō)明書(shū),因?yàn)橥阅苄枨笾挥卸夹g(shù)的人才可能理解,這就需要技術(shù)專(zhuān)家和需求方客戶或公司市場(chǎng)部門(mén))能夠有真正的溝通和了解。

      第三個(gè)步驟是概要設(shè)計(jì),將系統(tǒng)功能模塊初步劃分,并給出合理的研發(fā)流程和資源要求。作為快速原型設(shè)計(jì)方法,完成概要設(shè)計(jì)就可以進(jìn)入編碼階段了,通常采用這種方法是因?yàn)樯婕暗难邪l(fā)任務(wù)屬于新領(lǐng)域,技術(shù)主管人員一上來(lái)無(wú)法給出明確的詳細(xì)設(shè)計(jì)說(shuō)明書(shū),但是并不是說(shuō)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)不重要,事實(shí)上快速原型法在完成原型代碼后,根據(jù)評(píng)測(cè)結(jié)果和經(jīng)驗(yàn)教訓(xùn)的總結(jié),還要重新進(jìn)行詳細(xì)設(shè)計(jì)的步驟。

      第四個(gè)步驟是詳細(xì)設(shè)計(jì),這是考驗(yàn)技術(shù)專(zhuān)家設(shè)計(jì)思維的重 要關(guān)卡,詳細(xì)設(shè)計(jì)說(shuō)明書(shū)應(yīng)當(dāng)把具體的模塊以最“干凈”的方式(黑箱結(jié)構(gòu))提供給編碼者,使得系統(tǒng)整體模塊化達(dá)到最大;一份好的詳細(xì)設(shè)計(jì)說(shuō)明書(shū),可以使編碼的復(fù)雜性減低到最低,實(shí)際上,嚴(yán)格的講詳細(xì)設(shè)計(jì)說(shuō)明書(shū)應(yīng)當(dāng)把每個(gè)函數(shù)的每個(gè)參數(shù)的定義都精精細(xì)細(xì)的提供出來(lái),從需求分析到概要設(shè)計(jì)到完成詳細(xì)設(shè)計(jì)說(shuō)明書(shū),一個(gè)軟件項(xiàng)目就應(yīng)當(dāng)說(shuō)完成了一半了。換言之,一個(gè)大型軟件系統(tǒng)在完成了一半的時(shí)候,其實(shí)還沒(méi)有開(kāi)始一行代碼工作。那些把作軟件的程序員簡(jiǎn)單理解為寫(xiě)代碼的,就從根子上犯了錯(cuò)誤了。

      第五個(gè)步驟是編碼,在規(guī)范化的研發(fā)流程中,編碼工作在整個(gè)項(xiàng)目流程里最多不會(huì)超過(guò)1/2,通常在1/3的時(shí)間,所謂磨刀不誤砍柴功,設(shè)計(jì)過(guò)程完成的好,編碼效率就會(huì)極大提高,編碼時(shí)不同模塊之間的進(jìn)度協(xié)調(diào)和協(xié)作是最需要小心的,也許一個(gè)小模塊的問(wèn)題就可能影響了整體進(jìn)度,讓很多程序員因此被迫停下工作等待,這種問(wèn)題在很多研發(fā)過(guò)程中都出現(xiàn)過(guò)。編碼時(shí)的相互溝通和應(yīng)急的解決手段都是相當(dāng)重要的,對(duì)于程序員而言,bug永遠(yuǎn)存在,你必須永遠(yuǎn)面對(duì)這個(gè)問(wèn)題,大名鼎鼎的微軟,可曾有連續(xù)三個(gè)月不發(fā)補(bǔ)丁的時(shí)候嗎?從來(lái)沒(méi)有!

      第六個(gè)步驟是測(cè)試。

      測(cè)試有很多種:按照測(cè)試執(zhí)行方,可以分為內(nèi)部測(cè)試和外部測(cè)試;按照測(cè)試范圍,可以分為模塊測(cè)試和整體聯(lián)調(diào);按照測(cè)試條 件,可以分為正常操作情況測(cè)試和異常情況測(cè)試;按照測(cè)試的輸入范圍,可以分為全覆蓋測(cè)試和抽樣測(cè)試。以上都很好理解,不再解釋。

      總之,測(cè)試同樣是項(xiàng)目研發(fā)中一個(gè)相當(dāng)重要的步驟,對(duì)于一個(gè)大型軟件,3個(gè)月到1年的外部測(cè)試都是正常的,因?yàn)橛肋h(yuǎn)都會(huì)又不可預(yù)料的問(wèn)題存在。完成測(cè)試后,完成驗(yàn)收并完成最后的一些幫助文檔,整體項(xiàng)目才算告一段落,當(dāng)然日后少不了升級(jí),修補(bǔ)等等工作,只要不是想通過(guò)一錘子買(mǎi)賣(mài)騙錢(qián),就要不停的跟蹤軟件的運(yùn)營(yíng)狀況并持續(xù)修補(bǔ)升級(jí),知道這個(gè)軟件被徹底淘汰為止。路漫漫其修遠(yuǎn)兮,吾將上下而求索!這幾個(gè)月的學(xué)習(xí)和開(kāi)發(fā),既有經(jīng)驗(yàn)又有教訓(xùn),讓我們深刻認(rèn)識(shí)到,我們離真正的程序員還有很長(zhǎng)的路要走,我們定將以此為契機(jī),努力提高自己的專(zhuān)業(yè)技術(shù)水平。

      下載附6 軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告word格式文檔
      下載附6 軟件項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

        [學(xué)生公寓管理系統(tǒng)]項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告項(xiàng) 目 組擬 制 人[二零一一年十二月五日]目錄一、引言 ...................... 11.1 編寫(xiě)目的 ................ 11.2 背景 .................

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

        首批“職業(yè)培訓(xùn)包”項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告模板一、開(kāi)發(fā)背景 1.開(kāi)發(fā)項(xiàng)目的職業(yè)名稱(chēng)、職業(yè)代碼、等級(jí)、職業(yè)定義及開(kāi)發(fā)培訓(xùn)包數(shù)。 2.參與此項(xiàng)開(kāi)發(fā)任務(wù)的目的、任務(wù)及意義。 二、實(shí)際......

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

        隱患排查智能管理系統(tǒng) 項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告 2014年09月 江蘇創(chuàng)導(dǎo)信息科技有限公司 陜西陜煤韓城礦業(yè)有限公司隱患排查智能管理系統(tǒng) 1 引言 1.1編寫(xiě)目的 項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告的編......

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告(文檔格式)

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告 1. 引言 1.1 編寫(xiě)目的 闡明編寫(xiě)本系統(tǒng)試運(yùn)行計(jì)劃書(shū)的目的,指出讀者對(duì)象。 1.2 項(xiàng)目背景 列出本項(xiàng)目的委托單位、開(kāi)發(fā)單位和主管部門(mén)。 1.3 定義 列出本文......

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

        1、實(shí)訓(xùn)目的 為了對(duì)整個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程的一個(gè)了解,不斷熟悉開(kāi)發(fā)的過(guò)程。對(duì)自 己的不足之處進(jìn)行改進(jìn),同時(shí)也是為了總結(jié)報(bào)告在項(xiàng)目開(kāi)發(fā)過(guò)程中 遇到的問(wèn)題、得到經(jīng)驗(yàn),并從中吸取經(jīng)驗(yàn)......

        項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告

        文檔編號(hào) :20020728001 版 本 號(hào):5.0 密 級(jí) :機(jī)密 [項(xiàng)目工發(fā)總結(jié)報(bào)告] 項(xiàng)目編號(hào): 項(xiàng)目名稱(chēng): 開(kāi)發(fā)部門(mén): 項(xiàng)目負(fù)責(zé)人: 編寫(xiě) 年 月 日 校對(duì) 年 月 日 審核 年 月 日 批準(zhǔn) 年 月 日......

        開(kāi)發(fā)項(xiàng)目總結(jié)報(bào)告

        總結(jié) 時(shí)光飛逝,歷時(shí)一個(gè)多月的項(xiàng)目開(kāi)發(fā),我們團(tuán)隊(duì)所開(kāi)發(fā)的”迪爾攝影影樓”網(wǎng)站已經(jīng)完成,感受頗多,這次的模擬公司企業(yè)項(xiàng)目開(kāi)發(fā)對(duì)我來(lái)說(shuō)是一個(gè)良好的發(fā)展機(jī)遇,也是一個(gè)很好的鍛煉......

        2015軟件項(xiàng)目開(kāi)發(fā)計(jì)劃書(shū)

        2015軟件項(xiàng)目開(kāi)發(fā)計(jì)劃書(shū) 第1篇:軟件項(xiàng)目開(kāi)發(fā)計(jì)劃書(shū)模板 項(xiàng)目名稱(chēng):******** 評(píng)審日期: 1引言 1.1編寫(xiě)目的 說(shuō)明編寫(xiě)這份項(xiàng)目開(kāi)發(fā)計(jì)劃的目的,并指出預(yù)期的讀者。 1.2背景 說(shuō)明: a.待開(kāi)......