研发项目总结报告模板_第1页
研发项目总结报告模板_第2页
研发项目总结报告模板_第3页
研发项目总结报告模板_第4页
研发项目总结报告模板_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、研发项目总结报告模板 研发项目总结报告模板 项目总结报告 项目编号:项目名称:lpdt: 1项目状况综述 简要介绍项目所开发的产品在产品线路标规划中的位置、主要的功能等状况;项目目标:从进度、产品需求、质量等方面说明。 2管理总结 2.1 计划制定与监控 计划与实际工期对比图;累计计划偏移率;估计工作量与实际对比图;各阶段工作量比率;交付件完成率;交付件延期原因分布等 风险管理 风险管理表;风险规避措施执行状况 需求管理 需求跟踪和实现状况;需求变更和影响状况 物料管理 成本达成状况和分析 2.2 2.3 2.42.5 3技术总结 关键技术的实现或突破;重大技术问题 4测试总结 4.1 缺陷分

2、析及说明缺陷汇总分析图 系统测试总结 beta测试总结 试生产总结 5各部门总结 6其它沟通、评审、供应商管理等等 201*-4-22 companyconfidential1/项目总结报告 7综述 总的做的比较好的地方、存在的问题和改善建议 201*-4-22companyconfidential2/ 扩大阅读:软件项目开发总结报告模版 武汉理工大学软件开发工具论文报告 火车票系统的开发 1引言 随着人们生活水平和经济水平的提升,网络科技的全球化的发展,出游和出差的频率越来越多。这大大的激发了交通水平的发展。其中,火车这种又方便有便宜的交通工具作为人们的首选,火车站的客运

3、列车增加,客运量也随之增加。原有的售票的方式已经不再能满足旅客的需求了。为了方便旅客售票系统不仅仅只能售票也能够了解列车的各种信息。这样才干成为现在网络社会的真的适应者。 2需求分析 该售票系统是融合了火车票销售、退票、列车管理、车票管理、售票员管理、列车管理信息,以及售票信息查询为一体的综合系统。该系统主要编写的功能是列车和售票信息的查询及售票功能。 2.1用户 该系统主要有两类用户:管理员和售票员。管理员主要工作有车次管理,车票管理和售票员管理。关于每项功能都有添加,删除和修改的功能。售票的主要工作是售票和退票。 2.2主要功能 该系统从功能方面可以分为四个方面:登录。不管你是管理员还是售

4、票员必须登录以后才可以进行系统同意的操作。当然要登录的管理员和售票员都必须是再数据库中已经公布的。基本设置:该模块主要是修改售票员的相关信息,修改列车的相关信息和修改车票的相关信息。这一块的功能只有管理员才可以操作。其他的售票员是不可以对他进行操作的。售票和退票:这部分工作主要是售票员来操作的。售票员依据买票人员提出的要求进行查询。查询的方式有两种:一是依据车次查询;一是依据目的地来查询。退票主要是将已经出售的车票在列车开出之前再一次的返回到数据库中,并持续出售。 列车和车票查询;当需要查询列车信息或者是车票信息是所做的操作。 2.3基本流程 武汉理工大学软件开发工具论文报告 3开发过程 3.

5、1内容 该程序包括三个部分数据库的制定、通用模块的实现、各个模块的实现。 3.1.1数据库的制定: 将本系统所需的所有的数据都存储到数据库中。需要在数据库中管理员表、 售票员表、列车信息表和车票信息表。如图所示: 武汉理工大学软件开发工具论文报告 管理员表: 售票员表: 列车信息表: 武汉理工大学软件开发工具论文报告 车票信息表: 3.1.2通用模块的实现: 通用模块为了减少代码的重复。在该系统中,对常常使用的操作进行封装,如将多次需要调用的数据库和操作数库的增、删、改和查等操作进行封装。使代码有很好的重用性,即使出现错误也很容易调试。如本程序中的conn.java importjava.sq

6、l.*;publicclassconn privatestaticconnectioncon; privatestaticfinalstringdriver="com.mysql.jdbc.driver" privatestaticfinalstringurl="jdbc:mysql:/localhost:3306/newdatabase"privatestaticfinalstringname="root" privatestaticfinalstringpassword="021702190804"static

7、 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

8、(sqlexceptione) 武汉理工大学软件开发工具论文报告 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(); 用户登录界面的制定、主界面的制定、基本设置模块、销售及退

9、票模块和列车及车票查询模块。 用户登录模块:该部分是通过制定login.java来实现的。这部分代码的作用是用户首先选择自己的登录的是管理员还是售票员,然后输入账号和密码。单击登录,用户先判断用户登录的类型,然后给sql变量赋sql语句值,系统调用dao.java类的login传入sql变量。.login代码是: importorg.eclipse.swt.swt;importorg.eclipse.swt.events.*;importorg.eclipse.swt.graphics.image;importorg.eclipse.swt.layout.*;importorg.eclipse

10、.swt.widgets.*; importcom.huizhi.dao.dao;publicclasslogin privatetextnametext;privatetextpasstext;privatecombocombo;privatestringtype; privatedisplaydisplay=newdisplay();privateshellshell=newshell(display);publiclogin() formlayoutlayout=newformlayout(); 武汉理工大学软件开发工具论文报告 layout.marginheight=40; layou

11、t.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(); privatevoidset

12、uicontrol() 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(&

13、quot;*"); 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.gette

14、xt();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; 武汉理工大学软件开发工具论文报告 daodao=newdao()

15、; if("users".equals(type)sql="select*fromuserswhereusername=""+name+""andpassword=""+pass+"""elseif("admin".equals(type) sql="select*fromadminwhereusername=""+name+""and password=""+pass+"&q

16、uot;" 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);comb

17、o.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=newformatta

18、chment(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); 武汉理工大学软件开发工具论文报告 data=newformdata(); data.top=newformattachment(password,0,swt.center);data.lef

19、t=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.setlayo

20、utdata(data); publicstaticvoidmain(stringargs)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();finallyconn.closers(rs); conn.close

21、pt(pt);conn.closecon(con); returnflag;图示为; 武汉理工大学软件开发工具论文报告 实现主界面: importorg.eclipse.swt.*; importorg.eclipse.swt.widgets.*;importorg.eclipse.swt.layout.*;importorg.eclipse.swt.events.*; publicclassmain privatestringtype; displaydisplay=display.getcurrent(); shellshell=newshell(display);publicmain(s

22、tringtype)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); menufileme

23、nu=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("

24、ticketsmanagement"); 武汉理工大学软件开发工具论文报告 ticket.addselectionlistener(newselectionadapter()publicvoidwidgetselected(selectionevente)newticketmanage();); menuitemusers=newmenuitem(filemenu,swt.push);users.settext("usersmanagement"); users.addselectionlistener(newselectionadapter()publicvoi

25、dwidgetselected(selectionevente) newusersmanage(); ); menuitemexit=newmenuitem(filemenu,swt.push);exit.settext("quit"); basic.setmenu(filemenu); exit.addselectionlistener(newselectionadapter() publicvoidwidgetselected(selectionevente)display.dispose(); ); /第二个菜单 menuitemmarket=newmenuitem(

26、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)new

27、xiaosticket(); ); menuitemrefunditem=newmenuitem(editmenu,swt.push);refunditem.settext("refundstickets");market.setmenu(editmenu); refunditem.addselectionlistener(newselectionadapter()publicvoidwidgetselected(selectionevente) newtuiticket(); ); /第三个菜单 menuitemfind=newmenuitem(menu,swt.casc

28、ade);find.settext("trainsandticketsquery"); menutaimenu=newmenu(shell,swt.drop_down);menuitemtrainfind=newmenuitem(taimenu,swt.push); 武汉理工大学软件开发工具论文报告 trainfind.settext("trainsquery"); trainfind.addselectionlistener(newselectionadapter()publicvoidwidgetselected(selectionevente)ne

29、wfindtrain();); 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.

30、open(); while(!shell.isdisposed()if(!display.readanddispatch() display.sleep(); display.dispose(); 图示为: 基本设置模块包括车次管理,车票管理和售票员管理。 车次管理主要是是关于列车的增加,删除和修改等操作。其中包括它的相关的信息等。它是由trainmanagement.java.代码如下:importjava.util.list; 武汉理工大学软件开发工具论文报告 importorg.eclipse.swt.swt; importorg.eclipse.swt.events.*;importo

31、rg.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.fu

32、ll_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")

33、; 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,

34、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

35、(80); finaltablecolumncolumn7=newtablecolumn(table,swt.left);column7.settext("terminaltime");column7.setwidth(80); 武汉理工大学软件开发工具论文报告 finaltablecolumncolumn8=newtablecolumn(table,swt.left);column8.settext("iskongtiao");column8.setwidth(80); finaltablecolumncolumn9=newtablecolumn(ta

36、ble,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.setw

37、idth(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);col

38、umn14.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(selec

39、tionevente)newaddtrain(tm);); buttonupdate=newbutton(tmshell,swt.push);update.settext("modify"); update.addselectionlistener(newselectionadapter()publicvoidwidgetselected(selectionevente) tableitemselection=table.getselection(); tableitemselectedrow=selection0;traintrain=newtrain(); train.

40、setid(integer.parseint(selectedrow.gettext(0); train.settrainnum(selectedrow.gettext(1);train.settraintype(selectedrow.gettext(2);train.setstarting(selectedrow.gettext(3); 武汉理工大学软件开发工具论文报告 train.setstartingtime(selectedrow.gettext(4);train.setterminal(selectedrow.gettext(5); train.setterminaltime(se

41、lectedrow.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(integ

42、er.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)m

43、essagebox messagebox(tmshell,swt.yes|swt.no); box.setmessage("areyousuretocancel?"); intnum=box.open();if(num=128) return; tableitemselection=table.getselection();tableitemselectedrow=selection0;daodao=newdao();stringsql="delete from train where id="+selectedrow.gettext(0)+"

44、" inti=dao.update(sql); if(i>0) box.setmessage("succeed");box.open(); table.remove(table.getselectionindex();else); box.setmessage("failure");box.open(); 武汉理工大学软件开发工具论文报告 tmshell.setsize(1200,400); tmshell.settext("trainmanagement");tmshell.open(); while(!tmshel

45、l.isdisposed() if(!display.readanddispatch() display.sleep(); tmshell.dispose(); publicvoidfreshdata() table.removeall();try daodao=newdao(); listlist=dao.getalltrain();intnumber=list.size(); for(inti=0;i武汉理工大学软件开发工具论文报告 e.printstacktrace(); finally conn.closept(pt);conn.closecon(con);returni; publi

46、clistgetalltrain() 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(r

47、s.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.se

48、tywnum(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的功能是,首先连接数据库,然后用传递过来的sql语句在列表中删除某辆列车的信息。getalltrain方法是显示所有的列车的信息。图示如下: 武汉理工大学软件开发工具论文报告 在车次管理中的关于列车信息添加的功能是通

49、过addtrain.java来实现的。代码如下: 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; publicaddtrai

50、n(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.settex

51、t("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

52、(gd); gd=newgriddata(griddata.fill_both); finaltexttraintype=newtext(tmshell,swt.left); 武汉理工大学软件开发工具论文报告 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(

53、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); finaltextstartingt

54、ime=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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论