软件工程课程设计.docx
《软件工程课程设计.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计.docx(34页珍藏版)》请在冰豆网上搜索。
软件工程课程设计
大连科技学院
毕业实习报告
题目开拓飞机票管理系统
学生姓名康志华专业班级软件工程08-2
指导教师王立娟刘瑞杰职称讲师讲师
所在单位信息科学系软件工程教研室
教学部主任王立娟
完成日期2012年3月23日
毕业实习报告单
学号
0801030229
姓名
康志华
专业班级
软件工程08-2
考核项目
评分
备注
1
平时工作态度及遵守纪律情况
(10分)
2
掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平
(10分)
3
独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度
(20分)
4
完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)
(60分)
总评成绩
综合评定:
(优、良、中、及格、不及格)
指导教师签字:
2012年3月23日
《毕业实习设计》任务书
任务及要求:
一、设计(研究)内容和要求
内容:
编写一个飞机票系统管理软件,使用GUI界面,实现“飞机票订阅”和“飞机票查询”两部分功能。
用户可以对飞机票信息和销售预定信息进行,查询,添加,删除等操作。
采用数据库存储数据。
要求:
1、软件要求
(1)实现界面,可以依次录入飞机票管理系统登录的界面,主界面,飞机票预订管理的界面,飞机票销售信息查询管理的界面。
(2)实现数据库的连接和应用功能。
(3)实现对飞机票预订信息和销售信息的查询,添加,删除等功能。
2、文档要求
(1)设计程序结构、画出模块图。
(2)按照指导教师给出的项目文档的模板进行书写。
(3)参考文献数量不得低于4个。
二、工作量
3周(15个工作日)时间
三、计划安排
第1个工作日-第3个工作日:
查找相关资料、书籍,阅读示例文档;
设计程序结构、模块图、完成类的设计。
第4个工作日-第12个工作日:
完成程序的编码,并且自己调试、测试。
穿插进行项目文档的撰写。
第13个工作日-第14个工作日:
撰写和整理项目文档。
第15个工作日:
由教师检查软件测试效果、项目文档,给出学生本课程成绩。
指导教师签字:
2012年3月5日
目录
1 需求分析1
1.1 功能要求1
1.2 操作要求1
1.3 系统性能要求1
2 总体设计3
2.1 本系统的主要功能3
2.2 系统包含的类及类之间的关系3
2.3 java源文件及其功能3
3 详细设计与实现4
3.1 主类main类4
3.2 模式设计4
3.3 数据库表5
3.3 运行效果7
3.3.1 系统主界面7
3.3.2 系统具体功能实现录入界面7
参考文献9
毕业实习设计总结10
附 录11
1 需求分析
1.1 功能要求
开拓航空订票管理系统主要是为机场、航空公司和客户三方进行服务的。
航空公司提供航线、飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有查询航班路线和剩余票数,以及网上订票,退票,以及改签等功能。
客户可以分为两类:
一类是普通客户,对于普通客户只有普通的查询功能和订票功能没有相应的票价优惠;另一类是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。
机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。
1.2 操作要求
并分析所需要存储的数据信息。
(1)查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
(2)承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况和折扣情况,若尚有余票,则根据折扣为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;
(3)承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要求,则为客户办理订票手续,否则依次询问其他排队候补的客户。
(4)承办改签业务:
若客户晚点到达机场或因故不能乘坐预定的航班,为客户办理改签手续,根据与客户沟通的乘坐时间,查询该航班的载客情况,改签到下一班次。
1.3 系统性能要求
(1)客户订票过程
设计一个存储过程,实现客人订票处理。
提示:
需先查看客户是否为特殊客户,若不是,则票价不打折扣;否则如果客户累计航程超过10万公里,票价打九折;超过20万公里,打八折。
获得确切票价后加入客户订票信息表中,并将客户新订票里程的信息累计到用户信息表中。
注:
须查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作。
(2)飞机更新处理
设计一个触发器,实现在飞机信息表中若删除了一架飞机,同时需删除该航班的信息。
(3)航班延误处理
设计一个触发器,实现若航班产生延误,则发出信息通知客户。
(4)余票更新处理
设计一个触发器,实现若订票后,自动更新的功能。
2 总体设计
2.1 本系统的主要功能
1.查询航线功能;
2.办理订票业务功能;
3.办理退票业务功能;
4.办理改签业务功能;
2.2 系统包含的类及类之间的关系
本系统共包括7个java源文件。
如图2-1所示。
图2-1 类之间的关系
2.3 java源文件及其功能
1.book.java
该文件实现了订票功能;
2.query.java
该文件实现了查询功能;
3.order.java
该文件实现了预约功能;
4.change.java
该文件实现了改签功能;
5.refound.java
该文件实现了退票功能;
6.mydb.java
该文件实现了与SQL之间的连接;
7.main.java
该文件为运行类,其中包含了主方法。
3 详细设计与实现
3.1 主类main类
(1)成员变量见表2-1
表2-1 主要成员变量(属性)
成员变量描述
变量类型
名称
Button变量
JButton
btn_query
Button变量
JButton
btn_order
Button变量
JButton
btn_refund
Button变量
JButton
btn_change
Button变量
JButton
btn_book
(2)方法见表2-2
表2-2 主要方法
方法描述
功能
备注
Main()
主方法的重载
Main(String)
主方法
actionPerformed(ActionEvent)
执行方法
(3)源代码见文件Main.java
3.2 模式设计
按系统整体E-R模型,写出关系模式;并利用数据字典加以描述。
(如每个关系模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主码、有何约束条件等信息)
航空客运的业务包括查询,订票,退票,预约,改签等。
用户通过查询航线、航班来确定自己的需求。
需要建立一个关系模式,如下:
∙航线(航线号,航班号,出发地,终点,出发时间,到底时间)
∙航班(航班号,飞机号,出发地,终点)
∙飞机(飞机号,一等舱数量,二等舱数量,三等舱数量)
∙机票(机票号,座位号,单价,航班号,客户号)
∙客户(客户号,身份证号,姓名,联系方式,类型)
∙订票(订票号,客户号,舱位等级,订票量,订票价格)
∙退票(退票量,订票号)
∙预约(预约号,预约量,客户号)
∙改签(客户号,改签航班)
3.3 数据库表
表2-3 航线
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
air_no
char
8
主键
航线号
fly_no
char
8
是
外键
航班号
start
varchar
20
出发地
destination
varchar
20
终点站
start_time
datetime
出发时间
arive_time
datetime
达到世界
表2-4 航班
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
fly_no
Char
8
主键
航班号
Start
Varchar
20
出发地
destination
Varchar
20
终点站
plane_no
Char
8
是
外键
飞机号
表2-5 飞机
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
Plane_no
char
8
是
主键
飞机号
Number1
Int
一等舱量
Number2
Int
二等舱量
Number3
Int
三等舱量
表2-6 机票
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
ticket_no
char
8
主键
机票号
Fly_no
Char
8
航班号
Price
Int
是
外键
单价
Client_no
Char
8
外键
客户号
表2-7 客户
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
Client_no
char
8
主键
客户号
Id_no
Char
20
身份证号
Sname
Char
8
姓名
Phone_no
Char
15
联系方式
type
Char
20
普通
类型
表2-8 订票
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
Book_no
Char
8
主键
订票号
Client_no
Char
8
外键
客户号
Plane_grade
Char
8
三号舱
舱位等级
Bookum
int
是
订票量
Price1
int
订票价格
表2-9 退票
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
Book_no
char
8
主键
订票号
Refund_no
Char
8
退票量
表2-10 预约
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
Order_no
char
8
主键
预约号
Order_num
Char
8
预约量
Client_no
Char
8
外键
客户号
表2-11 改签
列名称
类型
宽度
允许空值
缺省值
主键外键
说明
Book_no
char
8
订票号
Change_no
Char
8
改签航班
3.3 运行效果
3.3.1 系统主界面
图3-1 系统主窗口
3.3.2 系统具体功能实现录入界面
图3-2 查询操作界面
图3-3 订票操作界面
图3-4 退票操作界面
图3-5 改签操作界面
参考文献
[1] 孙卫琴.Java面向对象编程.电子工业出版社.2006年
[2] 王海亮,张立民.精通Oracle10gSQL和PLSQL.中国水利水电出版社.2006
[3] 耿祥义,张跃平.JAVA2实用教程(实用教程)[M].北京:
清华大学出版社,2006.
[4] (美)KarlE.Wiegers.软件需求(第二版)[M].北京:
高等教育出版社,2004.
[5] (美)KarlE.Wiegers.软件需求(第二版)[M].北京:
高等教育出版社,2004.
[6] 曹建主编.Dreamweaver与JSP实战演练[M].北京:
电子工业出版社.2001.
[7] Time创作室编著.Office2000系列丛书SQLserver2000[M].北京:
人民邮电出版社.1999.
[8] 武晓军,陈海滨编著.Javascript/VBScript网页编程实例解析[M].北京:
清华大学出版社.2001.
[9] [美]GregBuczek著.王小娟.陈代川译.SQLserver2000数据库开发即时应用[M].北京:
人民邮电出版社.2002.
[10] 林金霖.JSP实务经典[M].北京:
中国铁道出版社.2000.
[11] BruceEckel.JAVA编程思想[M].北京:
机械工业出版社.2003.10.
[12] 赛奎春.JAVA工程应用与项目实践[M].北京:
机械工业出版社.2002.8.
毕业实习总结
通过这次实验,我深刻的认识到实习实验的必要性,从实验的过程中,我学会了很多自己原本不会的知识,我深刻的理解了动手的主要性。
从开始的不知所措到最后实验的初步成型,我收获了很多,让我获益匪浅。
在实验的过程中,把课堂里所学的知识与理论相结合起来,更加清楚的明白了各个过程的功能。
航空管理系统是一个比较复杂的系统,从起初画ER开始,就可以清楚的知道,在确定试题,关系的时候,我考虑了很多不同的情况,也走了很多弯路。
但是在实际见表的过程中,我意识到问题所在。
在编程界面的时候,由于各种原因,使得界面与数据库的联系失败,都给我深刻的印象,也使我更加注重这个方面,我也一直向编程好的同学请教,在不断磨合的过程中,我终于做好这个设计,但是我还是觉得我的设计有很多问题,但不管怎样,在这个学习的过程中,我学到了很多知识,我相信自己在今后的学习中会更加努力,争取做好。
附 录
packagecom.db;
importjava.sql.*;
publicclassmydb{
Stringurl="jdbc:
odbc:
mydb";
Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";
Connectioncon=null;
publicmydb(){
try{
Class.forName(driver);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
}
publicResultSetexecuteQuery(Stringsql){
ResultSetrs=null;
try{
con=DriverManager.getConnection(url);
Statementcmd=con.createStatement();
rs=cmd.executeQuery(sql);
}catch(Exceptionex){
ex.printStackTrace();
}
returnrs;
}
publicvoidexecuteUpdate(Stringsql){
try{
con=DriverManager.getConnection(url);
Statementcmd=con.createStatement();
cmd.executeUpdate(sql);
con.close();
}catch(Exceptionex){
ex.printStackTrace();
}
}
publicvoidcloseConnection(){
try{
if(con!
=null&&!
con.isClosed())
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
packagecom.view;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.ResultSet;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
importcom.db.mydb;
publicclassqueryextendsJFrameimplementsActionListener{
privateJLabeljb1=newJLabel("出发站名");
privateJTextFieldjt1=newJTextField();
privateJLabeljb2=newJLabel("终点站名");
privateJTextFieldjt2=newJTextField();
privateJButtonjb_ok=newJButton("确定");
privateJButtonjb_reset=newJButton("重置");
Stringss[]={"航线号","航班号","起飞时间"};
Stringrows[][]=newString[3][3];
JTabletable=newJTable(rows,ss);
mydbdb=newmydb();
publicquery(){
super("查询");
JPaneljp=(JPanel)this.getContentPane();
jp.setLayout(newBorderLayout());
JPaneljp1=newJPanel();
jp.add(jp1,BorderLayout.NORTH);
jp1.setLayout(newGridLayout(5,2));
jp1.add(jb1);
jp1.add(jt1);
jp1.add(jb2);
jp1.add(jt2);
jp1.add(jb_ok);
jp1.add(jb_reset);
jb_ok.addActionListener(this);
jb_reset.addActionListener(this);
JScrollPanejsp=newJScrollPane(table);
jp.add(jsp);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb_ok)
{
Stringstart=jt1.getText().trim();
Stringdestination=jt2.getText().trim();
Stringsql="selectcount(*)fromairline_1740";
ResultSetrs=db.executeQuery(sql);
try{
rs.next();
intc=rs.getInt
(1);
rows=newString[c][3];
c=0;
sql="selecta.air_no,plane_no,start_time"+
"fromairline_1740a,fly_1740b"+
"wherea.start='"+start+"'"+"anda.destination='"+destination+"'";
rs=db.executeQuery(sql);
System.out.print(sql);
if(rs.next()){
rows[c][0]=rs.getString
(1);
rows[c][1]=rs.getString
(2);
rows[c][2]=rs.getString(3);
//rows[c][3]=rs.getString(4);
//c++;
}
table.setModel(newDefaultTableModel(rows,ss));
db.closeConnection();
}catch(Exceptionex){}
}
}
//publicstaticvoidmain(String[]args){
//searchFrmfrm=newsearchFrm();
//frm.setSize(250,200);
//frm.setVisible(true);
//}
}
packagecom.view;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.ResultSet;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
importcom.db.mydb;
publicclassbookextendsJFrameimplementsActionListener{
JLabellbl1=newJLabel("订票号:
");
JTextFieldtxt1=newJTextField();
JLabellbl3=newJLabel("订票量:
");
JTextFieldtxt3=newJTextField();
JButtonbtn1=newJButton("1");
JButtonbtn2=newJButton("取消");
Stringss[]={"订票号","客户号","订票量"};
Stringrows[][]=newString[3][3];
JTabletable=newJTable(rows,ss);
mydbdb=newmydb();
publicbook(){
super("订票查询");
JPaneljp=(JPanel)this.getContentPane();
jp