


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库课程设计报告目录第一章 概述 331.2 编写目的 41.3 开发工具 441.3.2 开发环境 4第二章 需求分析 52.1 问题陈述 52.2 ER 模型图 5 第三章 数据库逻辑设计 63.1 定义数据库表 6数据库表 6第四章 软件功能设计 84.1 软件功能结构图 894.2.1 整体流程: 94.2.2 航班信息查询模块 114.2.3 顾客查询模块 154.2.4 订票、退票功能 204.2.5 财务查询 30第五章 界面设计 30第六章 结束语 31第一章 概述航空业作为运输行业的基础,要提高我国运输行业的整体水平, 必须从基础抓起。订票系统是航空业从事生产和管理的基层单
2、 位,加强订票系统是航空业基础地位的关键, 也是保障航空业业 可持续发展的重要基石。随着现在航空运输业的发展, 机票预订系统也成为了航空运 输业的软件副产品, 目前的管理系统都是及数据库关联, 故 数据库的管理也成为很热门的研究对象。 此项目是以数据库 为支撑, java ( eclipse )为平台而开发的。1.2 编写目的 编写此项目的目的是为了进一步了解数据库的储存管理机 制以及数据库及其他的语言语言工具之间关联和协作。 也可 以熟悉项目开发的流程, 步骤,为以后编写其他的程序打下 基础。1, 了解并掌握数据结构的设计方法, 具备初步的独立分析能 力; 2,初步掌握软件开发过程的问题分析
3、、系统设计、程序编 码、测试等基本方法和技能 3,提高综合运用所学的理论知识和方法独立分析和解决问 题的能力; 4,训练用系统的观点和软件开发的一般规范进行软件开发, 培养软件工作者所具备的的科学的工作方法和作风。1.3 开发工具Oracle 11g , PowerDesigner,eclipse1.3.2 开发环境Windows7, Java,database第二章需求分析2.1问题陈述设计一个飞机订票系统要求具备如下基本功能:1、班机基本信息的管理;2、航班信息的管理;3、旅客预定机票、取消预约、付款取票、退票的管理;4、查询航班信息、航班预定情况、旅客信息,计算航班满座率。5、统计每周、
4、每月,每年营业收入情况。2.2 ER模型图Er模型图idn ame7s/efligtnum 1customerPstickhasTicketOrder/ un subscribeoutcomer in comestartplaceflight num第三章数据库逻辑设计3.1定义数据库表数据库表1, flight 表字段名数据类型含义说明控制情况startplaceVarchar2起点不为空en dplaceVarchar2终占、八、不为空starttimeVarchar2起飞时间不为空en dtimeVarchar2到达时间不为空flight numVarchar2航班号主关键字Return
5、 numVarchar2返航号可为空AirfirmVarchar2航空公司不为空typeVarchar2飞机类型不为空ticketint余票不为空pricefloat票价不为空2. Customer 表字段名数据类型含义说明控制情况n ameVarchar2顾客姓名不为空idVarchar2身份证主键flight numVarchar2航班号外键C_typeint订票/候补不为空teleph oneVarchar2电话号码不为空tickint订票数不为空字段名数据类型含义说明控制情况in comefloat收入可为空outcomefloat支出可为空Powerdesign下的物理模型构建txs
6、tomw时込心a vaiEii ar 戍 pfc vaidh ar varch ar kanch-ar arofiar ini飞机订票系统varchwVSrchar至飞时可varahaf空一更时ivwdiar豐疣弓v ar oh ar VANtlWvarohar” ar charInifloatflight航班信息查顾客信息查订票退票询询查询信息增删改查航班信息4.1软件功能结构图增加信息删除信息财务查询查询第四章软件功能设计421整体流程:对主界面进行功能选择操作,通过反馈Action进入分功能操作,然后在 Action 模块中分别由 search(),add(),delete(),upda
7、te()关联到 Dao包(Dao包主要管理连接数据库的业务),然后根据不同的功能进入到 了关联数据库的部分,通过如下部分连接数据库:1, 加载JDBC5驱动程序,成功加载后,会将Driver类的实 例注册到 DriverManager ;2, 提供JDBC连接的URL连接URL定义了连接数据库时的 协议,子协议,数据源标识;3,创建数据库的连接,向 java.sql.DiverMa nager请求并获得Connection对象,该对象就代表一个数据库连接;Conn ecti onconn=DriverMa nager.getC onn ectio n(url,username,password
8、)4,创建一个 Statement,要执行 SQL语句,必须获得java.sql.Statement 实例,然后将要执行的语句作为参数 传进去PreparedStatement pstmt=con.prepareStatement(sql);5,执行sql语句,Statement接口提供了三种执行 SQL语句的方法: executeQuery , executeUpdate ,和 executeResultSet rs=stmt.execute(String sql);6 处理结果:执行更新返回的本次操作影响到的记录数,执 行查询返回的结果是个 ResultSet 对象,使用结果集对象的 访问
9、方法获取数据 :While(rs.next()String name=rs.getString(“ name”);String pass=rs.getString(1);7关闭JDBC对象:操作完成以后要把所有使用的JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反: 首先关闭记录集,然后关闭声明,最后关闭连接对象If(rs!=null)TryRs.close();catch(SQLException e)e.printStackTrace();然后是 stmt 最后是 conn这样就是整个流程的进行4.2.2 航班信息查询模块该模块属于基本功能, 其主要实现对航班的基本信息的查
10、询, 修 改和删除,是通过对后台的各种操作来方便前台。其主要用的 SQL语句有:select , insert , delete , update 等.如 select * from flight ;(从 flight 表中检索所有的信息)Insert into flight values(?,?,?,?,? );然后数据库通过JDBC连接到java,再在java中通过对界面的操作,及各功能块的实现结合起来。Java 中的部分功能实现代码:1,查询模块private void queryData(int page) /查询模块采用分页显示flightbasicDao=new FlightBas
11、icMessDao(); /Dao包为及数据库连接pageBean=newPageBean(flightbasicDao.queryCount(),10);/ 分页操作if(page = 1)pageBean.setCurPage(pageBean.getMaxPage(); elsepageBean.setCurPage(page); Vectorflightbasicinfo=flightbasicDao.queryFl ightdata(pageBean.getCurPage(), pageBean.getRowsPrePage();/ 将 查 询 结 果 放 入 向 量 flightb
12、asicinfo 中/ 将查询结果用表格显示出来Vector columns = new Vector();Log.log(this, queryData vipinfo size+flightbasicinfo.size();columns.add( 起点 );columns.add( 终点 );columns.add( 起飞时间 );columns.add( 到达时间 );columns.add( 航班号 );columns.add( 返航号 );columns.add( 航空公司 );columns.add( 票务类型 );columns.add( 剩余票数 );columns.add(
13、 票价 );tModel.setDataVector(flightbasicinfo, columns);/ 刷新表格table.revalidate();/ 设置分页信息curPage.setText(pageBean.getCurPage()+);rowsPrePage.setText(pageBean.getRowsPrePage()+);maxPage.setText(pageBean.getMaxPage()+);maxCount.setText(pageBean.getMaxCount()+);连接数据库的部分:public Vector queryFlightdata(int c
14、urPage,introwsPrePage)Vector flightinfo = new Vector();Vector v = null;/ 初始化 connection , preparedstatement,resultsetConnection conn = null;PreparedStatement stmt = null;ResultSet rs = null;try conn = Dbcp.getConnection();stmt=conn.prepareStatement(Constants.QUERY_FLIGHTBAS ICINFO);stmt.setInt(1, cu
15、rPage*rowsPrePage); stmt.setInt(2,(curPage-1)*rowsPrePage+1); rs = stmt.executeQuery();while(rs.next()v = new Vector();v.add(rs.getString(startplace);v.add(rs.getString(endplace);v.add(rs.getString(starttime);v.add(rs.getString(returntime);v.add(rs.getString(flightnumber);v.add(rs.getString(returnfl
16、ight);v.add(rs.getString(airfirm);v.add(rs.getString(style);v.add(rs.getString(tick);v.add(rs.getInt(price);flightinfo.add(v); catch (SQLExceptio n e) / TODO Auto-ge nerated catch blockLogog(this,queryflightdata+e.getMessage();e.pri ntStackTrace();fin allyLog.log(this,queryflightdata+Co nsta nts.QUE
17、RY_FLIGHTBASICINFO);Dbcp.close(rs, stmt, conn);retur n flight info;增删改操作类似,此处不做赘述423顾客查询模块该模块功能和航班信息查询模块功能类似,只是操作的表和信息不同而已。下面展示部分源码:/ 顾客查询分为两张表显示(数据库中只有一张表) ,一张储存 已定票的顾客, 一张储存正在候补队伍的顾客, 其差别在于顾客 状态public void queryData()Vector userinfo1=flightdao.queryUserinfo();Log.log(this,queryData+userinfo1.size(
18、);Vector columns1=new Vector(); columns1.add( 乘客姓名 ); columns1.add( 乘客证件号码 ); columns1.add( 乘客机舱等级 ); columns1.add( 乘客所在航班号 ); columns1.add( 乘客联系方式 ); columns1.add( 乘客所定票数 ); columns1.add( 乘客状态 ); tModel.setDataVector(userinfo1, columns1); table.revalidate();queryDataLog.log( this, stuinfo.size:+use
19、rinfo1.size()+columns size+columns1.size();public void queryData1()Vector userinfo1=flightdao.queryUserinfo1();Log.log(this,queryData+userinfo1.size();Vector columns1=new Vector(); columns1.add( 乘客姓名 ); columns1.add( 乘客证件号码 ); columns1.add( 乘客机舱等级 ); columns1.add( 乘客所在航班号 ); columns1.add( 乘客联系方式 );
20、columns1.add( 乘客所定票数 ); columns1.add( 乘客状态 ); tModel1.setDataVector(userinfo1, columns1); table1.revalidate();queryDataLog.log( this, stuinfo.size:+userinfo1.size()+columns size+columns1.size();public String queryFlightdata3(int count )/ String flightinfo = new String10;String f = null;Connection co
21、nn = null;PreparedStatement stmt = null;ResultSet rs = null;try conn = Dbcp.getConnection();stmtconn.prepareStatement(Constants.QUERY_CANCEL);stmt.setInt(1, count);rs = stmt.executeQuery();while(rs.next()f = new String10;f0=rs.getString(name);f1=rs.getString(id);f2=rs.getString(ps);f3=rs.getString(f
22、lightnumber);f4=rs.getString(telphone);f5=rs.getString(ticket); f6=rs.getString(customtype);System.out.println(queryVipdata +f0+f1);/vipinfo.add(v); catch (SQLException e) / TODO Auto-generated catch blockLog.log(this, queryVipdata+e.getMessage()+f0+f 1);e.printStackTrace();finallyLog.log(this, quer
23、yVipdata+Constants.QUERY_CANCEL);Dbcp.close(rs, stmt, conn);return f;424订票、退票功能订票的功能也是基本功能之一,实际上也是对数据库中数据的增加和删除(或减少),不过其中会增加很多判断的部分,比如在订票之前 需要先查询库里是不是还有余票, 如果订票的数目小于或等于余 票数目,则订票可以成功,如果订票数大于余票数,则会有一部 分加入到候补队列中。退票亦是如此,如果退票的时候,发现候 补队列里有人,且其票数刚好小于或等于退票的数目,则可以直接将候补队列的顾客加入到订票队列中。部分源码:private void handin()
24、in t len 1=o.getJbt name().getText().trim ()en gth();inth();int len3=o.getJbtid().getText().trim().length();int len4=o.getJbttelephone().getText().trim().length();Stringlen5=o.getJbtps().getSelectedItem().toString();if(getstring(len1,len2,len3,len4)JOptionPane.showMessageDialog(dialog, 带 * 请务必全部输入 )
25、;elseflightVo vo = new flightVo();vo.setName(o.getJbtname().getText().trim();vo.setId(o.getJbtid().getText().trim();vo.setPs(o.getJbtps().getSelectedItem().toString();/vo.setFlightnumber(Integer.parseInt( o.getJbtflight( ).getText() );vo.setFlightnumber( o.getJbtflight().getText() );();vo.setTick(In
26、teger.parseInt(o.getJbtadultticketnumbe r().getText();vo.setTicket(o.getJbtadultticketnumber().getText();vo.setCustomtype( 已定票 );System.out.println(vo);String msg = ;System.out.println( 提交 );int flag,count,count1,count2;count=flightdao.queryflightinfo3(o.getJbtflight().ge tText();count1=Integer.pars
27、eInt(o.getJbtadultticketnumber(). getText();count=count-count1;if(count0)if(flightdao.addFlightinfo(vo) 0)if(flightdao.addFlightinfo1(vo)0)msg = 订票成功! ;elsemsg= 定票失败 elsemsg= 定票失败 ;else/msg=余票不足;count=flightdao.queryflightinfo3(o.getJbtflight().ge tText();count1=Integer.parseInt(o.getJbtadultticketn
28、umber(). getText();count2=count1-count;if(JOptionPane.showConfirmDialog(dialog, 余票不足,您可以订 +count+ 张票 , 剩下的 +count2+ 加入候补? , 确定 ,JOptionPane.YES_NO_OPTION) = 1)return;vo.setPs(o.getJbtps().getSelectedItem().toString();/vo.setFlightnumber(Integer.parseInt( o.getJbtflight( ).getText() );vo.setFlightnum
29、ber( o.getJbtflight().getText() );vo.setPhonenumber(o.getJbttelephone().getText().trim();vo.setTick(count);vo.setTicket(count+);vo.setCustomtype( 已定票 );if(count0)flightdao.addFlightinfo(vo);flightdao.addFlightinfo1(vo); msg=;vo.setName(o.getJbtname().getText().trim();vo.setFlightnumber( o.getJbtflig
30、ht().getText() );vo.setPhonenumber(o.getJbttelephone().getText().trim();vo.setPs(o.getJbtps().getSelectedItem().toString();vo.setTicket(count2+);vo.setCustomtype( 已候补 );flightdao.addFlightinfo2(vo); msg= 操作成功 ;JOptionPane.showMessageDialog(dialog, msg); hangkong.getClientFrame().setVisible(false); h
31、angkong.getClientFrame().dispose(); hangkong.getFrame().setVisible(true);/ queryData(Integer.parseInt(curPage.getText();确定需要private void jbOK()if(JOptionPane.showConfirmDialog(dialog, 退票?,退票,JOptionPane.YES_NO_OPTION) = 1)return;vo=new flightVo();String msg = ;int ticket=Integer.parseInt(c.getJtfChi
32、ldTuiPiaoShu().getTe xt().trim();String id1 = c.getJtfID().getText().trim();System.out.println(+id1);+flightdao.flSystem.out.println(+ticket);System.out.println(ightquery1(1234);if(Integer.parseInt(c.getJtfChildTuiPiaoShu().getText() .trim()0)int haveticket=Integer.parseInt(flightdao.flightquery1(id
33、1) );if(ticket=haveticket)vo.setTick(ticket);vo.setFlightnumber(c.getJtfDingDan().getText().trim(); String Id =c.getJtfID().getText().trim();if(flightdao.deleteFlightinfo(Id) 0) flightdao.deleteFlightinfo(vo);msg = 退票成功 ;JOptionPane.showMessageDialog(msg );jbbupiao();jbRewrite();elsemsg = 退票失败 ;JOpt
34、ionPane.showMessageDialog(msg );else if(tickethaveticket)vo.setId(c.getJtfID().getText().trim();vo.setTicket(ticket+);vo.setTick(ticket);dialog,dialog,vo.setFlightnumber(c.getJtfDingDan().getText().trim();flightdao.deleteFlightinfo1(vo); flightdao.deleteFlightinfo(vo); msg= 退票成功 ; JOptionPane.showMessageDialog( dialog, msg ); jbbupiao();jbRewrite();elseJOptionPane.showMessageDialog( dialog, 退票数 目不能大于已定票数目 );elsemsg = 退票数目不能为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 写人作文最感谢的人650字14篇范文
- 期末考试作文校园一角350字(9篇)
- 春天的气息与描写(8篇)
- 高一(上)语文阶段检测卷二
- 新概念英语中的非谓语动词用法:英语进阶课程语法教案
- 糖糖有蛀牙了500字7篇范文
- 难忘的演讲比赛作文(9篇)
- 一年级观后感作文一年级的小豆豆二200字14篇范文
- 八零后亲子活动方案
- 公交公司旅游节活动方案
- 2025年机器人技术与应用开发考试试题及答案
- T/CIMA 0089-2023多参数智能水表
- 2025年河北省中考乾坤押题卷数学试卷B及答案
- 2025至2030中国船用甲板机械市场供需平衡调查与前景预测研究报告
- 期末真题汇编 12 非连续性文本阅读(含答案)-七年级语文下册(统编版2024)
- 河北大学《民法学》2023-2024学年第二学期期末试卷
- 2025年全球视域下的中国文化试题及答案
- 2025年中考语文二轮复习:字音 练习题(含答案)
- 港口上岗证考试试题及答案
- 临床护理敏感质量指标解读
- 中药种植施工方案
评论
0/150
提交评论