




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海电力学院应用软件设计(1)课程设计题目: 选题五民航定票管理系统设计 学 号: 姓 名: 院系: 计算机科学与技术学院 专业年级: 计算机科学与技术2010级 2013 年 1 月 16 日目录第一章、系统需求分析及设计11.1 问题分析11.2 任务概述11.3 开发技术11.4 运行环境11.5 系统主要功能11.6 系统总体构成2第二章、系统数据库设计与实现22.1 系统数据库概念结构设计22.2系统数据库逻辑结构设计42.3 系统数据库设计实现及运行51、客户订票过程62、飞机更新处理63、退票处理74、排队处理75、订票处理86、自行设计各模块中所涉及的操作语句87、若有原子性事务的显示定义,也可以给出这段的实现代码,若无则可略。82.4模块结构图82.5模块设计91.登陆界面设计:92. 功能菜单设计:113. 航班查询界面设计:124. 订票(排队)界面155. 退票界面设计:186. 用户注册界面设计:20第三章、系统详细设计223.1 功能流图221.登陆界面232.功能菜单界面233.航班查询界面234.订票(排队)界面245.退票界面246.用户注册界面25第四章、系统调试及测试254.1系统调试:264.2发现问题及解决办法27第五章、应用软件课程设计总结29参考文献29第一章、系统需求分析及设计1.1 问题分析 民航订票管理系统主要是为机场、航空公司和客户三方服务。航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有查询航班路线和剩余票数,以及网上订票等功能。 客户可以分为两类:一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的票价优惠;另一类是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。 1.2 任务概述系统功能设计 系统功能是在实际开发设计过程中经过调研、分析用户需求,和用户一起共同确定下来,是系统为满足用户需求所应完成的功能。本课程设计模拟一个小型民航定票管理系统。 航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。 (1)每条航线所涉及的信息有:终点站名、航班名、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); (2)作为示意系统,全部数据可以只放在内存中; 1.3 开发技术Java语言,SQL语言1.4 运行环境Window7操作系统,Microsoft SQL Server2008,MyEclipse8.5。1.5 系统主要功能系统能实现的操作和功能如下: 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要求,则为客户办理订票手续,否则依次询问其他排队候补的客户。1.6 系统总体构成数据库:(1)订票信息 (订票号、客户编号、航班编号、所付票价)(2)航空公司信息(航空公司号、名称、地址、联系方式)(3)客户信息 (客户号、姓名、联系方式、是否特殊客户、里程) (4)航班信息 (航班号、时间、票价、飞机号、航线号、是否延误)(5)飞机信息 (飞机号、型号、座位数、公司号)(6)航线信息 (航线号、起点、终点、里程、公司号)(7)排队信息 (排队号、用户名、航班号)第二章、系统数据库设计与实现2.1 系统数据库概念结构设计画出系统整体的E-R模型;并对模型中所出现的实体及属性等信息加以说明。 用户号 姓名 排队号 姓名 航班 联系方式 用户 积分 排队 是否特殊mm 订票号 航班号 订票退票客户号所有票价11航班号票价 起飞时间航班航线号 抵达时间1飞机号1 飞行调用航线号1公司号 1 起点 航线 飞机号 飞机 公司号 终点 里程 型号座位n1制定属于mm 航班号 票价 时间 航空公司 航班号 是否延迟飞机号 分析前面的功能需求,数据表中应包含下列信息: (1)订票信息 (订票号、客户编号、航班编号、所付票价)(2)航空公司信息(航空公司号、名称、地址、联系方式)(3)客户信息 (客户号、姓名、联系方式、是否特殊客户、里程) (4)航班信息 (航班号、时间、票价、飞机号、航线号、是否延误)(5)飞机信息 (飞机号、型号、座位数、公司号)(6)航线信息 (航线号、起点、终点、里程、公司号)(7)排队信息 (排队号、用户名、航班号)2.2系统数据库逻辑结构设计模式设计:创建数据库:创建订票:CREATE TABLE book(bno varchar(8) NOT NULL PRIMARY KEY,buno varchar(8) NOT NULL,fno varchar(8) NOT NULL,lel varchar(8) NOT NULL,price money NULL,FOREIGN KEY(cuno)REFERENCES customers (cuno),FOREIGN KEY(fno)REFERENCES flight (fno) )创建航空公司:CREATE TABLE company(cno varchar(3) NOT NULL PRIMARY KEY,cname varchar(20) NOT NULL,caddress varchar(20) NOT NULL,cphone varchar(11) NOT NULL,)创建用户:CREATE TABLE customers(cuno varchar(8) NOT NULL PRIMARY KEY,cuname varchar(10) NOT NULL,cuphone varchar(11) NOT NULL,vip varchar(3) NULLDEFAULT (no) ,range int NULL,)创建航班:CREATE TABLE flight(fno varchar(8) NOT NULLPRIMARY KEY,fdeptime smalldatetime NOT NULL,fatime smalldatetime NOT NULL,fprice money NOT NULL,pno varchar(8) NOT NULL,rno varchar(8) NOT NULL,fdelay smallint NULLDEFAULT (0),remain intNOT NULLCHECK (remain = 0),FOREIGN KEY(pno)REFERENCES plane (pno),FOREIGN KEY(rno)REFERENCES route(rno)创建飞机:CREATE TABLE plane(pno varchar(8) NOT NULLPRIMARY KEY ,ptype varchar(8) NOT NULL,pseat int NOT NULL,cno varchar(3) NOT NULL,FOREIGN KEY(cno)REFERENCES company(cno),)创建航线:CREATE TABLE route(rno varchar(8) NOT NULL PRIMARY KEY,rbegin varchar(8) NOT NULL,rend varchar(8) NOT NULL,rrange int NOT NULL,cno varchar(3) NOT NULL,FOREIGN KEY(cno)REFERENCES company(cno),)创建排队:CREATE TABLE standbybook(sno varchar(8) NOT NULL PRIMARY KEY ,suno varchar(8) NOT NULL,fno varchar(8) NOT NULL,) 2.3 系统数据库设计实现及运行系统需要设计并创建的视图、触发器和存储过程如下: 1、客户订票过程 设计一个存储过程,实现客人订票处理。 提示:需先查看客户是否为特殊客户,若不是,则票价不打折扣;否则如果客户累计航程超过10万公里,票价打九折;超过20万公里,打八折。获得确切票价后加入客户订票信息表中,并将客户新订票里程的信息累计到用户信息表中。注:须查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作。 create trigger remain_subon bookafter insertasupdate flightset remain=remain-1where fno=(select fno from inserted)declare vip varchar(3),range int,rrange int,fprice moneyselect vip=customers.vip,range=customers.range,rrange=route.rrange,fprice=fprice from inserted,customers,route ,flight where customers.cuno=inserted.cuno and flight.fno=inserted.fno and route.rno =flight.rno if(vip=yes)update customers set customers.range=range+rrangewhere customers.cuno=(select cuno from inserted )if(vip=yes and range=20000) update book set price=fprice*0.8where cuno=(select cuno from inserted )else if(vip=yes and range=10000 and range=20000) update book set price=fprice*0.9where cuno=(select cuno from inserted ) elseupdate book set price=fpricewhere cuno=(select cuno from inserted ) 2、飞机更新处理 设计一个触发器,实现在飞机信息表中若删除了一架飞机,同时需删除该航班的信息。 create trigger plane_delon planefor deleteasdeletefrom flightwhere flight.pno in(select pno from deleted)3、退票处理 设计一个触发器,实现若有客户退票,则余票增加1。create trigger remain_addon bookafter deleteasupdate flightset remain=remain+1where fno=(select fno from deleted)declare vip varchar(3),range int,rrange intselect vip=customers.vip,range=customers.range,rrange=route.rrangefrom deleted,customers,route ,flight where customers.cuno=deleted.cuno and flight.fno=deleted.fno and route.rno =flight.rno if(vip=yes)update customers set customers.range=range-rrangewhere customers.cuno=(select cuno from deleted )4、排队处理设计一个触发器,实现若有客户退票,则将排队序列中取出添加到订票中。create trigger refund_bookon bookfor deleteas declare bno varchar(8),cuno varchar(8),fno varchar(8)select fno=fnofrom deleted if(select min(sno) from standbybook where fno=fno ) is not null)beginselect bno=sno,cuno=sunofrom standbybookwhere sno=(select min(sno) from standbybook where standbybook.fno=fno)exec book_insert bno,cuno,fnodeletefrom standbybookwhere sno=(select min(sno) from standbybook where standbybook.fno=fno)5、订票处理设计一个存储过程,实现若有客户订票,则将数据添加到订票中。create procedure book_insert bno varchar(8),cuno varchar(8),fno varchar(8),lel varchar(8)asinsert into book(bno ,cuno ,fno ,lel )values(bno ,cuno ,fno ,lel )go6、自行设计各模块中所涉及的操作语句(1)订票过程:INSERT INTO air.dbo.book(bno,cuno,fno,lel,price)VALUES(, ,)(2) 删除一架飞机:DROP *from plane where pno=pno(3) 退票: DROP *from book where bno=bno(4) 排队: INSERT INTO standbybook(sno,suno,fno) VALUES(,)(5) 调用存储过程订票:EXCUTE book_insert bno varchar(8),cuno varchar(8),fno varchar(8),lel varchar(8)7、若有原子性事务的显示定义,也可以给出这段的实现代码,若无则可略。2.4模块结构图登录 功能 查询航班 订票 订票 退票 排队 退出 注册 2.5模块设计1.登陆界面设计:1.1布局(混合,网格)import java.awt.*;import java.awt.event.*;import javax.swing.*;/导入包public class LoginFrm extends JFrame implements ActionListener/从JFrame继承 /*声明界面需要使用的控件*/ ImageIcon name=new ImageIcon(D:picfavorite.png); ImageIcon name2=new ImageIcon(D:picuser.png); ImageIcon name3=new ImageIcon(D:piclock.png); ImageIcon namenext=new ImageIcon(D:picnext.png);JLabel side=new JLabel(身份); JComboBox side_txt=new JComboBox(); JLabel lbl_name =new JLabel(登陆账号(用户名)); JLabel lbl_pwd =new JLabel(登陆密码(用户号)); JTextField txt_name=new JTextField(); JPasswordField txt_pwd=new JPasswordField(); JButton btn1=new JButton(登陆); JButton btn_regist=new JButton(客户注册); /private UserDao userdao=new UserDao();/*在构造函数中将控件放置在JFrame上*/ public LoginFrm() /*获取当前Frame的内容面板*/ JPanel jp=(JPanel)this.getContentPane(); /*设置内容面板的布局 Layout*/ jp.setLayout(new GridLayout(4,2); side.setIcon(name); jp.add(side); side_txt.addItem(用户);side_txt.addItem(管理员);jp.add(side_txt); lbl_name.setIcon(name2);jp.add(lbl_name);jp.add(txt_name); lbl_pwd.setIcon(name3);jp.add(lbl_pwd);jp.add(txt_pwd); btn1.setIcon(namenext);jp.add(btn1);jp.add(btn_regist); btn1.addActionListener(this); btn_regist.addActionListener(this); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1.2监听者: public void actionPerformed(ActionEvent e) if(e.getSource()=btn_regist) /用户注册setVisible(false);JFrame.setDefaultLookAndFeelDecorated(true); Regist frm=new Regist(); frm.setSize(600,400); frm.setLocation(300,200); frm.setTitle(客户注册); frm.setVisible(true);if(e.getSource()=btn1) /用户登录String side=(String) side_txt.getSelectedItem();if(side.equals(用户)String uid=txt_name.getText().trim();String upwd=txt_pwd.getText().trim();if(AdminDao.validate(uid, upwd)setVisible(false);JOptionPane.showMessageDialog(null, 登陆成功,Message:,JOptionPane.WARNING_MESSAGE);setVisible(false);JFrame.setDefaultLookAndFeelDecorated(true);MyFrm frm=new MyFrm();frm.setSize(400,200); frm.setLocation(300,200); frm.setTitle(航空服务); frm.setVisible(true);elseJOptionPane.showMessageDialog(null, 用户名或密码错误,Message:,JOptionPane.ERROR_MESSAGE);Else /管理员登录String n=txt_name.getText().trim(); String c=txt_pwd.getText().trim(); if(n.equals(admin)&c.equals(1234) setVisible(false); JOptionPane.showMessageDialog( null,登陆成功,Message:,JOptionPane.WARNING_MESSAGE); MyFrm frm=new MyFrm();frm.setSize(400,200); frm.setLocation(300,200); frm.setTitle(航空服务); frm.setVisible(true); else JOptionPane.showMessageDialog(null, 用户名或密码错误,Message:,JOptionPane.ERROR_MESSAGE); 1.3主函数,设置界面的大小,位置,titlepublic static void main(String arg) JFrame.setDefaultLookAndFeelDecorated(true); LoginFrm frm=new LoginFrm(); frm.setSize(400,300); frm.setLocation(300,200); frm.setTitle(民航定票管理系统); frm.setVisible(true); 2. 功能菜单设计:2.1导入包,界面布局(网格),添加监听import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyFrm extends JFrame implements ActionListener ImageIcon name=new ImageIcon(D:picsearch.png);ImageIcon name2=new ImageIcon(D:picaccept.png);ImageIcon name3=new ImageIcon(D:picdelete.png);ImageIcon name4=new ImageIcon(D:picback.png);JButton btn_select=new JButton(查询航班);JButton btn_book=new JButton(订票);JButton btn_refund=new JButton(退票);JButton btn_exit=new JButton(取消);public MyFrm()JPanel jp=(JPanel)this.getContentPane();jp.setLayout(new GridLayout(4,1);btn_select.setIcon(name);jp.add(btn_select);btn_book.setIcon(name2);jp.add(btn_book);btn_refund.setIcon(name3);jp.add(btn_refund);btn_exit.setIcon(name4);jp.add(btn_exit);btn_select.addActionListener(this);btn_book.addActionListener(this);btn_refund.addActionListener(this);btn_exit.addActionListener(this);2.2监听者public void actionPerformed(ActionEvent e)if(e.getSource()=btn_select) /航班查询按钮setVisible(false); JFrame.setDefaultLookAndFeelDecorated(true); Sfrm frm=new Sfrm(); frm.setSize(600,400); frm.setLocation(300,200); frm.setTitle(航班查询); frm.setVisible(true);if(e.getSource()=btn_book) /机票预订按钮setVisible(false); JFrame.setDefaultLookAndFeelDecorated(true); Book frm=new Book(); frm.setSize(600,400); frm.setLocation(300,200); frm.setTitle(机票预定); frm.setVisible(true);if(e.getSource()=btn_refund) /退票按钮setVisible(false); JFrame.setDefaultLookAndFeelDecorated(true); Refund frm=new Refund(); frm.setSize(300,200); frm.setLocation(300,200); frm.setTitle(退票); frm.setVisible(true);if(e.getSource()=btn_exit) /退出按钮setVisible(false);LoginFrm frm=new LoginFrm();frm.setSize(200,200);frm.setLocation(300,200);frm.setVisible(true);2.3测试/*public static void main(String args) JFrame.setDefaultLookAndFeelDecorated(true); MyFrm frm=new MyFrm(); frm.setSize(400,200); frm.setLocation(300,200); frm.setTitle(航空服务); frm.setVisible(true);*/3. 航班查询界面设计:3.1导入包,设计布局(Border, Grid),添加监听import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;public class Sfrm extends JFrame implements ActionListener int count=0;ImageIcon namebegin=new ImageIcon(D:pictag_blue.png);ImageIcon nameend=new ImageIcon(D:pictag_green.png);ImageIcon next=new ImageIcon(D:picnext.png);ImageIcon back=new ImageIcon(D:picback.png);JLabel lbl_begin=new JLabel(起点);JTextField txt_begin=new JTextField();JLabel lbl_end=new JLabel(终点);JTextField txt_end=new JTextField();String cols=航班号,飞机号,起飞时间,余票额,是否延误(0表示没有;1表示延误);String rows=new String205;JTable table=new JTable(rows,cols); JButton btn1=new JButton(确定); JButton btn2=new JButton(取消); public Sfrm() JPanel jp=(JPanel)this.getContentPane(); jp.setLayout(new BorderLayout(); JPanel jp1=new JPanel(); jp1.setLayout(new GridLayout(3,2); lbl_begin.setIcon(namebegin);jp1.add(lbl_begin);jp1.add(txt_begin); lbl_end.setIcon(nameend);jp1.add(lbl_end);jp1.add(txt_end); btn1.setIcon(next);jp1.add(btn1);btn2.setIcon(back);jp1.add(btn2); JScrollPane js=new JScrollPane(table); jp.add(jp1,BorderLayout.NORTH); jp.add(js); btn1.addActionListener(this); btn2.addActionListener(this); /this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);3.2监听者 public void actionPerformed(ActionEvent e) ResultSet rs=DBHelper.executeQuery(select fno,plane.pno,fdeptime,remain,fdelay + from flight,plane,route where flight.pno=plane.pno and flight.rno=route.rno+ and rbegin=+txt_begin.getText()+ and rend=+txt_end.getText()+); if(e.getSource()=btn1) /查询按钮try if(rs.next()dorowscount0=rs.getString(1);rowscount1=rs.getString(2);rowscount2=rs.getString(3);rowscount3=rs.getString(4);rowscount4=rs.getString(5);count+;while(rs.next();elseJOptionPane.showMessageDialog(null, 无符合条件的航班,Message:,JOptionPane.ERROR_MESSAGE); catch (SQLException e1) e1.printStackTrace();if(e.getSource()=btn2) /取消按钮setVisible(false);MyFrm frm=new MyFrm();frm.setSize(400,200); frm.setLocation(300,200); frm.setTitle(航空服务); frm.setVisible(true); 3.3测试/*public static void main(String args) JFrame.setDefaultLookAndFeelDecorated(true); Sfrm frm=new Sfrm(); frm.setSize(400,200); frm.setLocation(300,200); frm.setTitle(航空服务); frm.setVisible(true);*/4. 订票(排队)界面4.1导入包,设计布局(Border,Grid),添加监听import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;public class Book extends JFrame implements ActionListener ImageIcon name=new ImageIcon(D:picnew_page.png);ImageIcon name2=new ImageIcon(D:picnew_page.png);ImageIcon name3=new ImageIcon(D:picnew_page.png);ImageIcon namelevel=new ImageIcon(D:picfavorite.png);ImageIcon name4=new ImageIcon(D:picadd_page.png);ImageIcon name5=new ImageIcon(D:picclock.png);ImageIcon name6=new ImageIcon(D:picback.png);JLabel lbl_bno=new JLabel(订票号);JTextField txt_bno=new JTextField();JLabel lbl_cuno=new JLabel(客户号);JTextField txt_cuno=new JTextField();JLabel lbl_fno=new JLabel(航班号);JTextField txt_fno=new JTextField();JLabel lbl_level=new JLabel(等级(1,2,3);JTextField txt_level=new JTextField();JButton btn1=new JButton(订票);JButton btn2=new JButton(排队(订票已满,可选);JButton btn3=new JButton(退出);public Book()JPanel jp=(JPanel)this.getContentPane(); jp.setLayout(new BorderLayout(); lbl_bno.setIcon(name); lbl_cuno.setIcon(name2); lbl_fno.setIcon(name3); lbl_level.setIcon(namelevel); btn1.setIcon(name4); btn2.setIcon(name5); btn3.setIcon(name6); JPanel jp1=new JPanel(); jp1.setLayout(new GridLayout(4,2); jp1.add(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届福建省南平市第一中学化学高二第一学期期中质量检测试题含解析
- 甘肃省庆阳长庆中学陇东中学分校2026届化学高三上期中综合测试试题含解析
- 2026届天津市武清区等五区县高一化学第一学期期末联考试题含解析
- 现代文学鉴赏课件
- 2025年春季英语四六级写作高分策略与实战演练试卷
- 现代女性健康知识培训课件
- 2025年Python二级考试模拟试卷 实战演练知识点精讲
- 王波培训知识产权贯标课件
- 重庆市七校2026届化学高一上期中监测模拟试题含解析
- 王亚林律师课件
- 电视节目编导与策划
- 中式烹调师(高级技师考试资料)
- 仓储技术与库存理论简论
- 日地空间灾害性天气的发生发展和预报研究课件
- 西安大唐不夜城的项目整体推广的策略提案的报告课件
- 可下载打印的公司章程
- 少先队辅导员工作记录表(共7页)
- 公开课教学评价表
- 消防验收规范标准(最新完整版)19844
- 教研工作手册
- 独树一帜的中国画(课堂PPT)
评论
0/150
提交评论