还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机学院《面向对象程序设计》课程设计报告学号xx《面向对象程序设计》课程设计报告题目xx专业xx班级x姓名xx指导教师x成绩xxxx年x月x日目录TOC\o1-3\h\u1设计内容及要求
11.1设计任务与要求
11.2硬件可靠性
11.3系统运行的稳定性
11.4系统功能齐全、开放性好12需求分析
22.1数据的输入
22.2数据的修改
22.3数据的删除
22.4数据的查询23概要设计
33.1系统用例图
33.2用例描述
33.3基本描述
43.4功能
43.5算法
53.5流程逻辑64系统数据结构设计
114.1逻辑结构设计要点
114.2物理结构设计要点
114.3数据结构与程序的关系
124.4数据库分析
124.5程序系统的组织结构146系统运行效果与操作16参考文献381设计内容及要求
1.1设计任务与要求对航空公司来说,航空订票管理系统既能扩大服务范围,扩大公司影响,减少营业费用,又对稳固航空公司的客源有着重要的辅助作用;站在旅客的角度,航空公司提供的这种服务提供了更多的方便,节省了很多时间建设航空订票管理系统是体现和提高航空公司领导业绩的一条捷径,此外还具有重要意义
1、改善航空公司服务质量;
2、创造和提升航空公司的品牌优势;
3、优化航空公司的服务流程;
4、提升信息化的水平;
1.2硬件可靠性数据库服务器数据库服务器用于存放用户及航班信息等资料,配一台专用服务器,安装数据库SQLserver
20001.3系统运行的稳定性系统支持操作系统如下Windowsvista、WindowsXP(服务器版本)(推荐)或Windows2000系统运行稳定可靠可以保证365天*24小时的不间断运行并安装杀毒软件防止病毒的干扰保证系统的运行稳定SQLServer数据库服务器版可以存储管理大量数据信息
1.4系统功能齐全、开放性好订票,退票,查询,管理等业务,全部使用软件来控制,因此今后功能变动、业务改动很灵活2需求分析
2.1数据的输入管理员根据需要来输入航班、订票人、乘客等信息的具体数据,但必须保证其正确性和准确性
2.2数据的修改管理员根据需要对指定的数据进行修改,由于记录繁多,因此用户首先要输入一定的查询条件,缩小记录范围,然后再从该范围中找到指定的记录进行修改,保证修改的内容的正确性和准确性后可更新数据库的数据
2.3数据的删除管理员根据需要对指定的数据进行删除,由于记录繁多,因此用户首先要输入一定的查询条件,缩小记录范围,然后再从该范围中找到制定的记录进行删除,保证将要删除的内容的正确性和准确性后可删除掉数据库中的数据
2.4数据的查询管理员根据需要查询数据库中的所有数据,输入一定的查询条件,然后可按照输入的查询依据查询新数据库的数据3概要设计
3.1系统用例图图1系统用例图
3.2用例描述
(1)航班查询查看航班信息基本查询,从下拉列表中选择航班或起点或终点信息综合查询,手动输入航班的基本信息
(2)订票输入航班信息显示航班信息,以及打折后的票价信息,询问信息是否
(3)退票输入将退票的序号显示票的具体信息,并询问是否退票退票成功,更新顾客数据库
(4)管理登陆进入管理界面选择添加、更新、删除航班,或查看航班具体信息等业务添加输入添加航班的具体信息更新航班数据库更新输入所要更改航班的具体信息更新航班数据库删除选择所要删除的航班更新航班数据库查看航班具体信息显示数据库中所有航班的具体信息
3.3基本描述
(1)服务器端程序本套航空订票系统软件的服务器端应用程序,使用java编写前台控制软件,管理员通过使用该软件来进行对数据库中的数据进行管理
(2)后台数据库本套航空订票系统软件的后台数据库使用MicrosoftSQLServer2000来搭建后台数据库服务器,用来存放所有的数据
3.4功能
(1)服务器端的主要功能订票信息的查询功能1查询航班信息包括航班号、地点等信息2查询及票价格包括起始地、抵达地、、机票价格等信息3查询订票人的详细信息精确查询输入订票人身份证号码查询订票人详细信息模糊查询输入订票人的姓名或订票人的姓或是年龄或是性别查询出一系列相关的信息,然后可从小范围内找到订票人的详细信息4查询乘客的详细信息输入乘客的身份证号码查询乘客的详细信息1填写订票人的详细信息其中包括姓名、身份证号码、联系电话、地址等信息2填写订票的详细信息,其中包括航班编号、订票时间、订票数量等信息录入信息功能1取票功能根据输入的订票人身份证号验证订票人身份后,输入详细的乘客信息并进行保存2直接购票直接输入乘客详细信息并保存不通过订票人3录入航班信息录入航班的相关信息4订票人取消订票保存订票人取消订票信息
④修改功能1修改乘客信息将查找到的乘客信息,进行修改,然后进行保存2修改订票人信息将查找到的订票人的信息进行修改然后进行保存3修改航班信息将查找到的航班信息进行修改后保存
⑤删除功能1删除乘客信息将查找到的乘客信息,进行删除2删除订票人信息将查找到的订票人的信息进行删除3删除航班信息将查找到的航班信息进行删除
3.5算法1将管理员输入的数据,按字段保存到数据库中2将数据库中的数据,按字段提取到用户界面中3必要的去除重复项的算法4按条件修改、删除数据中的数据5保持表间数据的一致性
3.5流程逻辑
(1)服务器端各模块的流程图查询模块流程图���开始运行�是否继续运行�程序初始�填写要查询的内容�查询数据�显示查询到的数�判断数据是否符合规定�结束查询功能�是图2服务器查询模块添加模块流程图���开始运行�是否继续运行�程序初始�输入应填写的信息将数据添加到数据库�判断数据是否符合规定�结束添加功能�是图3服务器添加模块 修改模块流程图���开始运行�是否继续运行�程序初始�修改信息更新数据库判断数据是否符合规定�结束修改功能�是图4服务器修改模块删除模块流程图���开始运行�是否继续运行�程序初始�选择要删除的内容删除数据判断数据是否符合规定�结束删除功能�是图5服务器删除模块
(2)客户端各模块的流程图查询模块的流程图���开始运行�是否继续运行�程序初始�填写要查询的内容�查询数据�显示查询到的数�判断数据是否符合规定�结束查询功能�不符合是符合图6客户端查询模块订票模块的流程图���开始运行�是否继续运行�程序初始�输入相应的订票人的信息�将数据添加到数据库�判断数据是否符合规定�结束添加功能�不符合是符合图7客户端添加模块4系统数据结构设计
4.1逻辑结构设计要点按照需求分析设计数据库中的字段,建立一个逻辑上的数据库的结构
4.2物理结构设计要点在数据库软件SQLServer2000中建立数据库,并要保证数据库最低要符合第二范式
4.3数据结构与程序的关系
(1)静态数值需求支持并行操作的用户处理多条记录数据表或文件的最小为2048字节最大无限制
(2)精度需求在进行提取数据库数据时,要求数据记录定位准确,在向数据库中添加数据时,要求输入数据准确主要的精度适应系统要求,不接受违规操作
(3)时间特性需求响应时间应在人的感觉和视觉事件范围内;更新处理时间,随着应用软件的版本升级,以及网络的定期维护更新4灵活性当需求发生某些变化时,管理应用软件操作方式、数据结构、运行环境基本不会发生变化,变化只是将对应的数据库文件内的记录改变,或将过滤条件改变即可5数据管理能力需求本应用软件可管理多条记录,本应用软件基本约用1300千字节空间,所有文件均放置在数据库中调用,查询数据、文件、记录时,通过库文件名直接进行操作或通过存储过程来完成操作
4.4数据库分析
(1)数据表建立需将数据库设计成关系模式最低符合第二范式的标准按照需求分析,确定系统的实体根据实体分析的结果,在数据库中应建立如下数据表adtor(管理员表Flight航班信息表destine客户信息表
④user(用户信息表)
(2)数据库设计说明destine订票人信息表在该信息表中包含以下字段destine_id订票人身份证号码、flight_no航班号、destine_count订票数量、destine_date定票日期、destine_status订票状态、destine_id订票人身份证号码、destine_phone订票人联系电话、destine_address订票人地址、destine_sex订票人性别、destine_age订票人年龄等字段flight航班信息表在该信息表中包含以下字段flight_no航班号、begin_from起飞地点、end_address降落地点、begin_time起飞时间、end_time降落时间ticket_price机票价格等字段
(3)数据库ER图��订票人信息航班信息订票数量�订票日期�订票人姓名�订票人电话�订票人身份证号�订票状态�订票人性别�订票人年龄�订票人地址�订票航班号�起飞时间�降落时间�成人票价�座位数�航空公司名�降落地点�起飞地点�折扣�图8数据库ER图
4.5程序系统的组织结构
(1)系统组织结构图服务器端的组织结构图图9系统层次结构图6系统运行效果与操作图10主操作界面代码如下packageflight;importjava.awt.GridLayout;importjavax.swing.*;importjava.awt.event.*;publicclassRegisterextendsJFrameimplementsActionListener{JTextFielduser;JPasswordFieldpsw1psw2;JLabelabc;JButtonokno;publicRegister{a=newJLabel订票;a.setBounds70706025;b=newJLabel管理;b.setBounds771306025;c=newJLabel退出;c.setBounds601906025;user=newJTextField20;user.setBounds1307018025;psw1=newJPasswordField20;psw
1.setBounds13013018025;psw2=newJPasswordField20;psw
2.setBounds13019018025;adda;adduser;addb;addpsw1;addc;addpsw2;setLayoutnull;setBounds100200500350;setDefaultCloseOperationJFrame.EXIT_ON_CLOSE;setResizablefalse;setVisibletrue;}publicvoidactionPerformedActionEvente{Stringabc;ife.getSource==ok{a=user.getText;b=psw
1.getText;c=psw
2.getText;dispose;//关闭窗口System.exit0;//退出程序}}图11用户登录界面代码如下publicclassAdminLoginextendsJFrameimplementsActionListener{databasedatalink;JTextFieldinput1;JPasswordFieldinput2;JLabelprompt1;JLabelprompt2;JButtonok;publicAdminLogin{super管理员登陆;setSize400100;Dimensionsize=Toolkit.getDefaultToolkit.getScreenSize;setLocationsize.width-getWidth/2size.height-getHeight/2;setLayoutnewFlowLayout;prompt1=newJLabel账号:;prompt2=newJLabel密码:;input1=newJTextField8;input2=newJPasswordField8;ok=newJButton确定;ok.setSize50100;ok.addActionListenerthis;addprompt1;addinput1;addprompt2;addinput2;addok;datalink=newdatabase;setVisibletrue;}publicvoidactionPerformedActionEvente{ife.getSource==ok{ifinput
1.getText.length==0||input
2.getText.length==0{JOptionPane.showMessageDialogthis请输入用户名或密码!提示错误JOptionPane.ERROR_MESSAGE;}else{try{booleanb=true;Connectioncon=datalink.getCon;Statementstm=datalink.getStm;ResultSetrs=stm.executeQuerySELECT*FROMadmin_info;ifrootPaneCheckingEnabled{whilers.next{Stringus=input
1.getText;Stringps=input
2.getText;ifus.equalsrs.getStringadmtorps.equalsrs.getStringadmpsw{newManager;this.dispose;b=false;}InetAddressaddress=InetAddress.getLocalHost;StringIP_name=address.getHostAddress;CalendarE=Calendar.getInstance;intyear=E.getCalendar.YEAR;intmonth=E.getCalendar.MONTH+1;intday=E.getCalendar.DAY_OF_MONTH;inthour=E.getCalendar.HOUR_OF_DAY;FileWriterout;out=newFileWriterD:\\Adminfile.txt;out=newFileWriterD:\\Adminfile.txt;out.write登陆用户+input
1.getText+密码+ps+登陆时间+year+-+month+-+day++hour+IP:+IP_name;out.close;}ifb{JOptionPane.showMessageDialogthis请输入正确的用户名或密码!提示错误JOptionPane.ERROR_MESSAGE;}//con.close;}}catchIOExceptionex{Logger.getLoggerLogin.class.getName.logLevel.SEVEREnullex;}catchSQLExceptionex{Logger.getLoggerAdminLogin.class.getName.logLevel.SEVEREnullex;}}}}publicstaticvoidmainString[]args{newAdminLogin;}}图12按班次查询航班图13按终始站查询图12和图13代码如下publicclassFTableextendsAbstractTableModel{privateObject[][]data;privateString[]head={航班号航班公司始发站终点站最大乘客数现有乘客数起飞时间普通舱商务舱};publicFTableListticktInfolist{data=newObject[list.size][];forinti=0;ilist.size;i++{ticktInfof=list.geti;data[i]=newObject[]{f.getFlightIDf.getCompanyf.getSstationf.getEstationgetStartTimef.getMaxf.getCurrentf.getPutongcangf.getShangwucang};}}publicintgetColumnCount{returnhead.length;}publicintgetRowCount{returndata.length;}publicStringgetColumnNameintcol{returnhead[col];}publicObjectgetValueAtintrowintcol{returndata[row][col];}publicClassgetColumnClassintc{returngetValueAt0c.getClass;}}图14添加航班代码如下publicclassAddFextendsJFrameimplementsActionListener{String[]title={航班号航班公司起飞地点到达地点起飞时间最大乘客数现有乘客数普通舱商务舱};JTextFieldtxt1=newJTextField20;JTextFieldtxt2=newJTextField20;JTextFieldtxt3=newJTextField20;JTextFieldtxt4=newJTextField20;JTextFieldtxt5=newJTextField20;JTextFieldtxt6=newJTextField10;JTextFieldtxt7=newJTextField10;JTextFieldtxt8=newJTextField10;JTextFieldtxt9=newJTextField10;JButtonOK=newJButton保存;JButtonCancel=newJButton取消;ticktInfoflight;ArrayListplst=null;booleansuccess;publicAddF{Dimensionsize=Toolkit.getDefaultToolkit.getScreenSize;setLocationsize.width-getWidth/3size.height-getHeight/3;Containercon=getContentPane;con.setLayoutnewGridLayout91;JPanelp[]=newJPanel
[9];forinti=0;i9;i++{p[i]=newJPanelnewFlowLayoutFlowLayout.LEFT;p[i].addnewJLabeltitle[i]+:;}p
[0].addtxt1;p
[1].addtxt2;p
[2].addtxt3;p
[3].addtxt4;p
[4].addtxt5;p
[5].addtxt6;p
[6].addtxt7;p
[7].addtxt8;p
[8].addtxt9;forinti=0;i9;i++{con.addp[i];}JPanelbottom=newJPanel;bottom.addOK;bottom.addCancel;con.addbottom;OK.addActionListenerthis;Cancel.addActionListenerthis;setTitle航班信息添加窗口;setSize800500;setVisibletrue;}publicvoidactionPerformedActionEvente{ife.getSource==OK{Stringa=txt
1.getText;Stringb=txt
2.getText;Stringc=txt
3.getText;Stringd=txt
4.getText;Stringe1=txt
5.getText;Stringf=txt
6.getText;Stringg=txt
7.getText;Stringh=txt
8.getText;Stringj=txt
9.getText;Solution.AddFlightabcde1fghj;dispose;}elseife.getSource==Cancel{dispose;}}publicstaticvoidmainString[]args{newAddF;}}图15删除航班代码如下publicclassDeletFextendsJFrameimplementsActionListener{String[]title={航班号航班公司起飞地点到达地点起飞时间最大乘客数现有乘客数普通舱商务舱};JTextFieldtxt1=newJTextField20;JTextFieldtxt2=newJTextField20;JTextFieldtxt3=newJTextField20;JTextFieldtxt4=newJTextField20;JTextFieldtxt5=newJTextField20;JTextFieldtxt6=newJTextField10;JTextFieldtxt7=newJTextField10;JTextFieldtxt8=newJTextField10;JTextFieldtxt9=newJTextField10;JButtonOK=newJButton保存;JButtonCancel=newJButton取消;ticktInfoflight;ArrayListplst=null;booleansuccess;publicAddF{Dimensionsize=Toolkit.getDefaultToolkit.getScreenSize;setLocationsize.width-getWidth;Containercon=getContentPane;con.setLayoutnewGridLayout91;JPanelp[]=newJPanel
[9];forinti=0;i9;i++{p[i]=newJPanelnewFlowLayoutFlowLayout.LEFT;p[i].deletenewJLabeltitle[i]+:;}p
[0].deletetxt1;p
[1].deletetxt2;p
[2].deletetxt3;p
[3].deletetxt4;p
[4].deleltetxt5;p
[5].deletetxt6;forinti=0;i6;i++{con.addp[i];}JPanelbottom=newJPanel;bottom.deleteOK;bottom.deleteCancel;con.deletebottom;OK.deleteActionListenerthis;Cancel.deleteActionListenerthis;setTitle航班信息删除窗口:”;setVisibletrue;setSize800500;}publicvoidactionPerformedActionEvente{ife.getSource==OK{Stringa=txt
1.getText;Stringb=txt
2.getText;Stringc=txt
3.getText;Stringd=txt
4.getText;Stringe1=txt
5.getText;Stringf=txt
6.getText;Stringg=txt
7.getText;Stringh=txt
8.getText;Stringj=txt
9.getText;Solution.AddFlightabcde1fghj;dispose;}elseife.getSource==Cancel{dispose;}}publicstaticvoidmainString[]args{newdeleteF;}}图16乘客购票信息图17购票成功代码如下classClientInfoextendsJFrameimplementsActionListener{Stringtitle[]={航班号起点终点起飞日期姓名身份证联系电话邮箱座位号购买票数};JTextFieldtxtFid=newJTextField10;JTextFieldtxtStart=newJTextField10;JTextFieldtxtEnd=newJTextField10;JTextFieldtxtTime=newJTextField10;JTextFieldtxtName=newJTextField10;JTextFieldtxtID=newJTextField20;JTextFieldtxtTelNum=newJTextField20;JTextFieldtxtEmail=newJTextField20;JTextFieldtxtSeatNum=newJTextField10;JTextFieldtxtCount=newJTextField10;JButtonbtnOK=newJButton确定;JButtonbtnCancel=newJButton取消;publicClientInfo{Containercon=getContentPane;con.setLayoutnewGridLayout111;JPanelp[]=newJPanel
[10];forinti=0;i10;i++{p[i]=newJPanelnewFlowLayoutFlowLayout.LEFT;p[i].addnewJLabeltitle[i]+:;}p
[0].addtxtFid;p
[1].addtxtStart;p
[2].addtxtEnd;p
[3].addtxtTime;p
[4].addtxtName;p
[5].addtxtID;p
[6].addtxtTelNum;p
[7].addtxtEmail;p
[8].addtxtSeatNum;p
[9].addtxtCount;forinti=0;i10;i++{con.addp[i];}JPanelbottom=newJPanel;bottom.addbtnOK;bottom.addbtnCancel;con.addbottom;btnOK.addActionListenerthis;btnCancel.addActionListenerthis;Dimensionsize=Toolkit.getDefaultToolkit.getScreenSize;setLocationsize.width-getWidth;setTitle乘客订票信息填写窗口;setSize450600;setVisibletrue;}publicvoidactionPerformedActionEvente{ife.getSource==btnOK{try{Stringa=txtName.getText;Stringb=txtID.getText;Stringc=txtTelNum.getText;Stringd=txtEmail.getText;Stringe1=txtSeatNum.getText;Stringf=txtFid.getText;Stringg=txtStart.getText;Stringh=txtEnd.getText;Stringi=txtTime.getText;Solution.AddClientInfoabcde1fghi;databaselink=newdatabase;Connectioncon=link.getCon;Statementstm=link.getStm;Stringsql=selectmaxcurrentfromflight_infowhereflightID=++txtFid.getText.trim++;try{intmax=0cur=0;intudrem=0;ResultSetrs=stm.executeQuerysql;Strings1=txtFid.getText.trim;intct=Integer.parseInttxtCount.getText.trim;whilers.next{max=rs.getIntmax;cur=rs.getIntcurrent;}ifcur0{ifcur-ct0{udrem=cur-ct;Stringstr1=updateflight_infosetmax=++max++current=++udrem++whereflightID=++s1++;stm.executeUpdatestr1;JOptionPane.showConfirmDialogthis订票成功购票提示JOptionPane.YES_NO_OPTION;dispose;}else{udrem=cur-ct;JOptionPane.showConfirmDialogthis剩余票数为+String.valueOfudrem+张购票提示JOptionPane.YES_NO_OPTION;}}else{JOptionPane.showConfirmDialogthis票已售完提示错误JOptionPane.YES_NO_OPTION;}con.close;dispose;}catchExceptionex{JOptionPane.showConfirmDialogthis订票失败购票提示JOptionPane.YES_NO_OPTION;}}catchExceptionex{}}elseife.getSource==btnCancel{dispose;}}publicstaticvoidmainString[]args{newClientInfo;}}图18退出系统代码如下publicclassLoginextendsJFrameimplementsActionListener{JTextFielduser;JPasswordFieldpsw;JLabelab;publicLoginStrings{supers;cno.addActionListenerthis;cno.setBounds2301806030;adda;adduser;addb;addpsw;addcfg;addcno;setLayoutnull;setBounds200200430280;setDefaultCloseOperationJFrame.EXIT_ON_CLOSE;setResizablefalse;setVisibletrue;}publicvoidactionPerformedActionEvente{ife.getSource==cno{newRegister;this.dispose;}}publicstaticvoidmainStringargs[]{newLogin用户退出;}参考文献
[1]《信息系统分析与设计》,陈禹主编,杨善林梁昌勇左美云副主编高等教育出版社,
2005.
[2]《信息系统开发方法教程》,陈佳主编,清华大学出版社,
1999.
[3]《信息系统设计原理与应用》,刘鲁,北京航空航天大学出版社,
1995.
[4]《企业管理信息系统开发的理论和方法》,葛世伦,代逸生,清华出版社,1996年(中文著作).
[5]《java案例开发集锦(第二版)》,袁然,郑自国,来为国,电子工业出版社,2008年
[6]闫建红.基于UML的机票预定系统的开发研究[J].太原师范学院学报自然科学版
200503.xx航空订票管理系统管理员身份验证超级管理员一般管理员查询所有信息数据输入查寻内容输出数据航班信息管理订票人信息管理添加数据查询数据删除数据修改数据添加数据删除数据修改数据查询数据输入新航班数据保存航班数据删除航班数据刷新数据刷新输出数据修改航班数据更新航班数据刷新航班数据输入查询数据输出数据输入订票人数据保存订票人数据删除订票人数据刷新数据刷新输出数据修改订票人数据更新订票人数据刷新航班数据输入查询数据输出数据系统层次结构图(服务器)端)。