软件项目开发总结报告模版精编WORD版.docx
《软件项目开发总结报告模版精编WORD版.docx》由会员分享,可在线阅读,更多相关《软件项目开发总结报告模版精编WORD版.docx(38页珍藏版)》请在冰豆网上搜索。
软件项目开发总结报告模版精编WORD版
IBMsystemofficeroom【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】
软件项目开发总结报告模版精编WORD版
火车票系统的开发
1引言
研究报告(1.研究计划;2.完成的研究内容、研究方法、研究过程与结论、成果;3.比照研究计划,分析超过或未达到预定目标、进度、研究内容的原因;4.参考文献等。
)
随着人们生活水平和经济水平的提高,网络科技的全球化的发展,出游和出差的频率越来越多。
这大大的激发了交通水平的发展。
其中,火车这种又方便有便宜的交通工具作为人们的首选,火车站的客运列车增加,客运量也随之增加。
原有的售票的方式已经不再能满足旅客的需求了。
为了方便旅客售票系统不仅仅只能售票也能够了解列车的各种信息。
这样才能成为现在网络社会的真的适应者。
2需求分析
该售票系统是融合了火车票销售、退票、列车管理、车票管理、售票员管理、列车管理信息,以及售票信息查询为一体的综合系统。
该系统主要编写的功能是列车和售票信息的查询及售票功能。
2.1用户
该系统主要有两类用户:
管理员和售票员。
管理员主要工作有车次管理,车票管理和售票员管理。
对于每项功能都有添加,删除和修改的功能。
售票的主要工作是售票和退票。
2.2主要功能
该系统从功能方面可以分为四个方面:
登录。
不管你是管理员还是售票员必须登录以后才可以进行系统允许的操作。
当然要登录的管理员和售票员都必须是再数据库中已经发布的。
基本设置:
该模块主要是修改售票员的相关信息,修改列车的相关信息和修改车票的相关信息。
这一块的功能只有管理员才可以操作。
其他的售票员是不可以对他进行操作的。
售票和退票:
这部分工作主要是售票员来操作的。
售票员根据买票人员提出的要求进行查询。
查询的方式有两种:
一是根据车次查询;一是根据目的地来查询。
退票主要是将已经出售的车票在列车开出之前再一次的返回到数据库中,并继续出售。
列车和车票查询;当需要查询列车信息或者是车票信息是所做的操作。
2.3基本流程
3开发过程
3.1内容
该程序包括三个部分数据库的设计、通用模块的实现、各个模块的实现。
3.1.1数据库的设计:
将本系统所需的所有的数据都存储到数据库中。
需要在数据库中管理员表、
售票员表、列车信息表和车票信息表。
如图所示:
管理员表:
售票员表:
列车信息表:
车票信息表:
3.1.2通用模块的实现:
通用模块为了减少代码的重复。
在该系统中,对经常使用的操作进行封装,如将多次需要调用的数据库和操作数库的增、删、改和查等操作进行封装。
使代码有很好的重用性,即使出现错误也很容易调试。
如本程序中的Conn.java
importjava.sql.*;
publicclassConn{
privatestaticConnectioncon;
privatestaticfinalStringDRIVER="com.mysql.jdbc.Driver";
privatestaticfinalStringURL="jdbc:
mysql:
//localhost:
3306/newdatabase";
privatestaticfinalStringNAME="root";
privatestaticfinalStringPASSWORD="021702190804";
static{
try{
Class.forName(DRIVER);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
}
publicstaticConnectiongetConnection(){
try{
con=DriverManager.getConnection(URL,NAME,PASSWORD);
}catch(SQLExceptione){
e.printStackTrace();
}
returncon;
}
publicstaticvoidcloseCon(Connectioncon){
try{
if(con!
=null)
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
publicstaticvoidclosePt(PreparedStatementpt){
try{
if(pt!
=null)
pt.close();
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidcloseRs(ResultSetrs){
try{
if(rs!
=null)
rs.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
用户登录界面的设计、主界面的设计、基本设置模块、销售及退票模块和列车及车票查询模块。
用户登录模块:
该部分是通过设计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.swt.widgets.*;
importcom.huizhi.dao.DAO;
publicclassLogin{
privateTextnameText;
privateTextpassText;
privateCombocombo;
privateStringtype;
privateDisplaydisplay=newDisplay();
privateShellshell=newShell(display);
publicLogin(){
FormLayoutlayout=newFormLayout();
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;
}
DAOdao=newDAO();
if("users".equals(type)){
sql="select*fromuserswhereusername='"+name+"'andpassword='"+pass+"'";
}elseif("admin".equals(type)){
sql="select*fromadminwhereusername='"+name+"'andpassword='"+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);
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;
}
图示为;
实现主界面:
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");
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);
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();
}
}
图示为:
基本设置模块包括车次管理,车票管理和售票员管理。
车次管理主要是是对于列车的增加,删除和修改等操作。
其中包括它的相关的信息等。
它是由TrainManagement.java.代码如下:
importjava.util.List;
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(){
RowLa