




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库课程设计报告题 目飞机订票管理系统第一章概述1.1项目背景1.2编写目的1.3开发工具1.3.1软件定义目录4.5.5.1.3.2开发环境5.第二章需求分析6.2.1问题陈述6.2.2 ER模型图.6.第三章数据库逻辑设计8.3.1定义数据库表数据库表8.第四章软件功能设计.1.14.1软件功能结构图1.14.2软件划分模块.124.2.1整体流程:124.2.2航班信息查询模块134.2.3顾客查询模块184.2.4订票、退票功能224.2.5财务查询313234第五章界面设计 第六章结束语第一章概述1.1项目背景航空业作为运输行业的基础,要提高我国运输行业的整体水平,必须从基础抓起。
2、订票系统是航空业从事生产和管理的基层单位,加强订票系统是航空业基础地位的关键,也是保障航空业业可持续发展的重要基石。随着现在航空运输业的发展,机票预订系统也成为了航空运输业的软件副产品,目前的管理系统都是与数据库关联,故数据库的管理也成为很热门的研究对象。此项目是以数据库为支撑,java(eclipse)为平台而开发的。1.2编写目的编写此项目的目的是为了进一步了解数据库的储存管理机制以及数据库与其他的语言语言工具之间关联和协作。也可以熟悉项目开发的流程,步骤,为以后编写其他的程序打下基础。1, 了解并掌握数据结构的设计方法,具备初步的独立分析能力;2,初步掌握软件开发过程的问题分析、系统设计
3、、程序编码、测试等基本方法和技能3,提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4,训练用系统的观点和软件开发的一般规范进行软件开发,培养软件工作者所具备的的科学的工作方法和作风。1.3开发工具1.3.1软件定义Oracle 11g , PowerDesigner,eclipse1.3.2开发环境Windows7 ,Java,database第二章需求分析2.1问题陈述设计一个飞机订票系统要求具备如下基本功能:班机基本信息的管理;航班信息的管理;旅客预定机票、取消预约、付款取票、退票的管理;查询航班信息、航班预定情况、旅客信息,计算航班满座率。统计每周、每月,每年营业收入情况。2
4、.2 ER模型图Er模型图hasTicketn ameidPstick fligt numcustomerairfirmin comeoutcomeJ statisticsOrder/ un subscribestart placeflightflight num第三章数据库逻辑设计3.1定义数据库表数据库表1 , flight 表字段名数据类型含义说明控制情况start placeVarchar2起点不为空endp laceVarchar2终占k、八、不为空starttimeVarchar2起飞时间不为空en dtimeVarchar2到达时间不为空flight numVarchar2航班号
5、主关键字Return numVarchar2返航号可为空AirfirmVarchar2航空公司不为空typeVarchar2飞机类型不为空ticketint余票不为空pricefloat票价不为空2. Customer 表字段名数据类型含义说明控制情况n ameVarchar2顾客姓名不为空idVarchar2身份证主键flight numVarchar2航班号外键C_typeint订票/候补不为空tele phoneVarchar2电话号码不为空tickint订票数不为空3.airfirm 表字段名数据类型含义说明控制情况in comefloat收入可为空outcomefloat支出可为空P
6、owerdesign 下的物理模型构建ObttOTTWvarcti-arvafcti a 5t>jajcli arV3TC arvafciLar=兰弓芝Lardi-arint匹三TC逻占吟lyCLJLI 客e飞时闻f Hight varctiar vBTchar varcbif v-archai arohf up<iA vsrcbar vflfchar vsrob*int ficzatTaiffirmi飞机订票系统航班信息查询顾客信息查 询H订票退票财务查询增删改查航班信息查询信息增加信息删除信息查询第四章软件功能设计4.1软件功能结构图4.2软件划分模块4.2.1整体流程:对主界
7、面进行功能选择操作,通过反馈Actio n进入分功能操作,然后在Action 模块中分别由 search(),add(),delete(),update() 关联到 Dao 包(Dao包主要管理连接数据库的业务),然后根据不同的功能进入到了关联数据库的部分,通过如下部分连接数据库:1,加载JDBC驱动程序,成功加载后,会将 Driver类的实例注册到DriverMa nager ;2,提供JDBC连接的URL,连接URL定义了连接数据库时的协议,子协议,数据源标识;3,创建数据库的连接,向java.sql.DiverManager 请求并获得Connection对象,该对象就代表一个数据库连接
8、;Conn ecti on conn=DnverMa nager.getC onn ectio n(url,username, password)4,创建一个Statement,要执行SQL语句,必须获得java.sql.Statement实例,然后将要执行的语句作为参数传进去Prep aredStateme nt p stmt=co n.prep areStateme nt(sql);5,执行sql语句,Statement接口提供了三种执行 SQL语句的方法: executeQuery , executeUpdate ,和 executeResultSet rs=stmt.execute(S
9、tri ng sql);6处理结果:执行更新返回的本次操作影响到的记录数,执行查询返回的结果是个Resultset对象,使用结果集对象的访问方法获取数据n ame );While(rs. next()Stri ng n ame=rs.getStri ng(String p ass=rs.getStri ng(1);7,关闭JDBC对象:操作完成以后要把所有使用的 JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反:首先关闭记录集,然后关闭声明,最后关闭连接对象lf(rs!=null)TryRs.close();catch(SQLExce ptio n e) e.prin tSta
10、ckTrace();然后是stmt最后是conn这样就是整个流程的进行4.2.2航班信息查询模块该模块属于基本功能,其主要实现对航班的基本信息的查询, 修改和删除,是通过对后台的各种操作来方便前台。其主要用的 SQL 语句有:select,in sert,delete , up date 等.如select * from flight ;(从flight表中检索所有的信息)Insert into flight values ( ?,?,?,?,?;然后数据库通过JDBC连接到java ,再在java中通过对界面的操作,与各功能块的实现结合起来。Java中的部分功能实现代码:/查询模块采用分页显
11、示1,查询模块P rivate void queryData(i nt p age)flightbasicDao=newFlightBasicMessDao(); /Dao 包为与数据库连接p ageBea n = new P ageBea nflightbasicDao.queryCou nt(),1O);/分页操作if(p age <= 1)p ageBea n. setCur Page(1);else if(p age >= p ageBea n. getMax Page()p ageBea n. setCur Page( pageBea n. getMax Page();e
12、lsep ageBea n. setCur Page( page);Vector<Vector>flightbasic in fo=flightbasicDao.queryFlightdata(pageBea n. getCur Page(),p ageBea n. getRows PreP age();/ 将查询结果放入向量 flightbasicinfo 中/将查询结果用表格显示出来Vector colu mns = new Vector();Log.log(this, "queryData vi pinfo size"+flightbasici nfo.s
13、ize();colu mn s.add("起点");colum ns.add("终点");columns.add("起飞时间");columns.add("到达时间");colu mn s.add("航班号");colu mn s.add("返航号");columns.add("航空公司");columns.add("票务类型");columns.add("剩余票数");colum ns.add("票价&q
14、uot;);tModel.setDataVector(flightbasici nfo, colum ns);/刷新表格 table.revalidate();/设置分页信息 curP age.setText (p ageBea n. getCur Page()+"");rows PreP age.setText (p ageBea n. getRows PreP age()+"");max Page.setText (p ageBea n. getMax Page()+"");maxCo un t.setText (p ageBea
15、 n. getMaxCo un t()+"");连接数据库的部分:P ublicVectorvVector>queryFlightdata(i ntcurP age,i ntrows PreP age)Vector flighti nfo = new Vector();Vector v = n ull;/ 初始化 connection , preparedstatement,resultsetConnection conn = n ull;Prep aredStateme nt stmt = n ull;ResultSet rs = null;try conn = D
16、bc p.getC onn ectio n();stmt=co nn.prep areStateme nt(Co nsta nts.QUERY_FLIGHTBASICINFO);stmt.set In t(1, curP age*rows PreP age);stmt.set In t(2,(curPage-1)*rows PreP age+1);rs = stmt.executeQueryO;while(rs. next()v = new Vector();v.add(rs.getStri ng("start place");v.add(rs.getStri ng(&qu
17、ot;e ndp lace");v.add(rs.getStri ng("starttime");v.add(rs.getStri ng("returntime");v.add(rs.getStri ng("flight nu mber");v.add(rs.getStri ng("returnflight");v.add(rs.getStri ng("airfirm");v.add(rs.getStri ng("style");v.add(rs.getStri n
18、g("tick");v.add(rs.getl nt(” price");flight in fo.add(v); catch (SQLExce pti on e) / TODO Auto-ge nerated catch blockLog.log(this, "queryflightdata"+e.getMessage();e.prin tStackTrace();fin allyLog.log(this,"queryflightdata"+Co nsta nts.QUERY_FLIGHTBASICINFO);Dbcp .
19、close(rs, stmt, conn);retu rn flighti nfo;增删改操作类似,此处不做赘述。HARA-J严±1L4口务1J*-Ft*=JL叶.=1和3e尸你nML-.r审讦译l-ic1pmnmjwIKEI 331I11T汇11:JII刖屿4.2.3顾客查询模块该模块功能和航班信息查询模块功能类似,只是操作的表和信息不同而已。下面展示部分源码:/顾客查询分为两张表显示(数据库中只有一张表),一张储存已定票的顾客,一张储存正在候补队伍的顾客,其差别在于顾客状态P ublic void queryData()Vector<Vector> useri nfo
20、仁flightdao.queryUseri nfo();Log.log(this,"queryData"+useri nfo1.size();Vector colu mn s1= new Vector();colu mn s1.add("乘客姓名");colu mn s1.add("乘客证件号码");colu mn s1.add("乘客机舱等级");colu mn s1.add("乘客所在航班号");colu mn s1.add("乘客联系方式");colu mn s1.ad
21、d("乘客所定票数");colu mn s1.add("乘客状态");tModel.setDataVector(usen nfo1, colu mn s1);table.revalidateO;Log.log(this,"queryDatastui nfo.size:"+usen nfo1.size()+"colum ns size"+colu mn s1.size();p ublic void queryData1()Vector<Vector> useri nfo仁flightdao.queryUs
22、eri nfo1();Log.log(this,"queryData"+useri nfo1.size();Vector colu mn s1= new Vector();colu mn s1.add("乘客姓名");colu mn s1.add("乘客证件号码");colu mn s1.add("乘客机舱等级");colu mn s1.add("乘客所在航班号");columns1.add(" 乘客联系方式");columns1.add(" 乘客所定票数"
23、;);columns1.add("乘客状态");tModel1.setDataVector(usen nfo1, column s1);table1.revalidate();Log.log(this,"queryDatastui nfo.size:"+usen nfo1.size()+"colum ns size"+colu mn s1.size();p ublic Strin g queryFlightdata3(i nt count ) / Strin g flight info = new Strin g10;Stri ng
24、f = null;Conn ecti on conn = n ull;Prep aredStateme nt stmt = n ull;ResultSet rs = null;try conn = Dbc p.getC onn ectio n();stmt = conn.prep areStateme nt(Co nsta nts.QUERY_CANCEL);stmt.set In t(1, coun t);rs = stmt.executeQueryO;while(rs. next()f = new Strin g10;f0=rs.getStri ng(" name");
25、f1=rs.getStri ng("id");f2=rs.getStri ng(" ps");f3=rs.getStri ng("flight nu mbe广);f4=rs.getStri ng("tel pho ne");f5=rs.getStri ng("ticket");f6=rs.getStri ng("customty pe");System.out.println("queryV ip data"+fO+f1);/vi pin fo.add(v); ca
26、tch (SQLExce pti on e) / TODO Auto-ge nerated catch blockLog.log(this,"queryV ip data"+e.getMessage()+f0 +f1);e.prin tStackTrace();fin allyLog.log(this, "queryV ip data"+Co nsta nts.QUERY_CANCEL);Dbcp .close(rs, stmt, conn);return f;1 uy X 1111颐圭界5J 翠驹31可i右航制?垂暮It*奪?TP来屈代蛊:41的231
27、31220RTSIff1C<116忑幕ftera1245 即 0iwn12-3&466 71P=3Ewz= 6i5FEE吐眄3"已苏曲1Z32&弩莊1 CXi243t41:巳空袈5431C<2152-131M四?9L1迟黨3;丄抽1SXI131236U7:5存们T打W1已丘驀%三11;132132£ - - /.*1- 基君血£军眾垂右爭二航班号垂昏肮C索敷5GJ51C01沁117-L1斟卜424订票、退票功能订票的功能也是基本功能之一,实际上也是对数据库中数据的增加和删除(或减少)不过其中会增加很多判断的部分,比如在订票之前需要先查询
28、库里是不是还有余票,如果订票的数目小于或等于余票数目,则订票可以成功,如果订票数大于余票数,贝U会有一部分加入到候补队列中。退票亦是如此,如果退票的时候,发现候补队列里有人,且其票数刚好小于或等于退票的数目,贝U可以直接将候补队列的顾客加入到订票队列中。部分源码:P rivate void handin()in t le n1=o.getJbt name().getText().trim().le ngth();in t le n2=o.getJbtadultticket nu mber().getText().trim().le ngth();in t le n3=o.getJbtid().
29、getText().trim().le ngth();in t le n4=o.getJbttele phon e().getText().trim().le ngth();Stri ng len 5=o.getJbt ps().getSelectedltem().toStri ng();if(getstri ng(le n1,le n2,le n3,le n4)JOptionPane.showMessageDialog(dialog,"带* 请务必全部输入");elseflightVo vo = new flightVo();vo.setName(o.getJbt nam
30、e().getText().tnm();vo.setId(o.getJbtid().getText().trim();vo.set Ps(o.getJbt ps().getSelectedltem().toStri ng();/vo.setFlight nu mber(l nteger. parse lnt( o.getJbtflight().getText();vo.setFlight nu mber( o.getJbtflight().getText();vo.set Phonenu mber(o.getJbttele phon e().getText().trim();vo.setTic
31、k(I nteger. parseI nt(o.getJbtadultticket nu mber().getText();vo.setTicket(o.getJbtadultticket nu mber().getText();vo.setCustomty pe("已定票");System.out. prin tl n(vo);Stri ng msg =""System.out. println("提交");int flag,co un t,co un t1,co unt2;coun t=flightdao.queryflighti
32、 nfo3(o.getJbtflight().getText();coun t1=I nteger. parsel nt(o.getJbtadultticket nu mber().getText();coun t=co un t-co unt1;if(cou nt>0)if(flightdao.addFlighti nfo(vo) > 0)if(flightdao.addFlighti nfo1(vo)>0)msg ="订票成功! " elsemsg="定票失败"elsemsg="定票失败"else/msg=&qu
33、ot;余票不足"coun t=flightdao.queryflighti nfo3(o.getJbtflight().getText();coun t1=I nteger. parsel nt(o.getJbtadultticket nu mber().getText();余票不足,您coun t2=co un t1-co unt;ifJOp tio nPan e.showC on firmDialog(dialog,"可以订"+count+"张票,剩下的"+count2+" 加入候补?","确定",J
34、 OptionPan e.YES_NO_O PTION) = 1)return;vo.setName(o.getJbt name().getText().tnm();vo.setId(o.getJbtid().getText().trim();vo.set Ps(o.getJbt ps().getSelectedltem().toStri ng();/vo.setFlight nu mber(l nteger. parse lnt( o.getJbtflight().getText();vo.setFlight nu mber( o.getJbtflight().getText();vo.se
35、t Phonenu mber(o.getJbttele phon e().getText().trim();vo.setTick(co un t);vo.setTicket(cou nt+"");vo.setCustomty pe("已定票");if(cou nt>0)flightdao.addFlighti nfo(vo);flightdao.addFlighti nfo1(vo);msg=""vo.setName(o.getJbt name().getText().tnm();vo.setld(o.getJbtid().ge
36、tText().tnm();vo.setFlight nu mber( o.getJbtflight().getText();vo.set Phonenu mber(o.getJbttele phon e().getText().trim();vo.set Ps(o.getJbt ps().getSelectedltem().toStri ng();vo.setTicket(cou nt2+"");vo.setCustomt yp e("已候补");flightdao.addFlighti nfo2(vo);msg="操作成功"JO
37、ptio nPan e.showMessageDialog(dialog, msg);hangkon g.getClie ntFrame().setVisible(false);hangkon g.getClie ntFrame().dis pose();/hangkon g.getFrame().setVisible(true);queryData(I nteger. parse In t(cur Page.getText();private void jbOK()"确定需要退票?","if(JO ptio nPan e.showC on firmDialog(
38、dialog,退票",JO ptio nPan e.YES_NO _OP TION) = 1)return;vo=new flightVo();Stri ng msg =""intticket=I nteger. parsel nt(c.getJtfChildTui Pi aoShu().getText().trim();Stri ng id1 = c.getJtflD().getText().trim();System.out. prin tl n(""+id1);System.out. prin tl n(""+tick
39、et);System.out. prin tl n(""+flightdao.flightquery1("1234");if(ln teger. parse In t(c.getJtfChildTui PiaoShu().getText().trim()>0)int haveticket=In teger. parse In t(flightdao.flightquery1(id1);if(ticket=haveticket)vo.setTick(ticket);vo.setld(c.getJtflD().getText().trim();vo.s
40、etFlight nu mber(c.getJtfDi ngDa n( ).getText().trim();Stri ng Id =c.getJtfID().getText().trim();if(flightdao.deleteFlighti nfo(ld) > 0)flightdao.deleteFlighti nfo(vo);msg ="退票成功"JOp tio nPan e.showMessageDialog( dialog, msg );jbbup iao();jbRewriteO;elsemsg ="退票失败"JOp tio nPan
41、 e.showMessageDialog( dialog, msg );else if(ticket<haveticket)vo.setld(c.getJtflD().getText().trim();vo.setTicket(ticket+"");vo.setTick(ticket);vo.setFlight nu mber(c.getJtfDi ngDa n( ).getText().trim();flightdao.deleteFlight in fo1(vo);flightdao.deleteFlighti nfo(vo);msg="退票成功"JOp ti onPan e.showMessageDialog( dialog, msg );jbbupi ao();jbRewriteO;elseJOp tio nPan e.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乐器清洁保养考核试卷
- 2024年行政管理师考试中的解题策略试题及答案
- 行政管理师考前心理预备试题及答案
- 2025年【湖南省汽车修理工(中级)】考试题及答案
- 索道制动系统设计与优化考核试卷
- 材料科学与工程基础考核试卷
- 矿产勘查经济学考核试卷
- 糖果与巧克力产品创新设计考核试卷
- 路基工程挖土施工方案
- 花艺师个人创意题目及答案
- 江西卷-2025届高考历史4月模拟预测卷(解析版)
- bim安全教育试题及答案
- 运输公司机务管理制度
- 妇科管理制度
- 初中数学课标培训
- 2025年济源职业技术学院单招职业技能测试题库附答案
- 《浙江省中药饮片炮制规范》 2015年版
- 新晋管理者培训
- 广东省清远市清新区2025年中考一模语文试题(含答案)
- 防高处坠落 物体打击专项施工方案
- ISO9001-2015版质量管理体系标准培训教程
评论
0/150
提交评论