数据库课程设计飞机订票系统Word下载.docx
- 文档编号:17647525
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:20
- 大小:575.12KB
数据库课程设计飞机订票系统Word下载.docx
《数据库课程设计飞机订票系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据库课程设计飞机订票系统Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
1,flight表
字段名
数据类型
含义说明
控制情况
startplace
Varchar2
起点
不为空
endplace
终点
starttime
起飞时间
endtime
到达时间
flightnum
航班号
主关键字
Returnnum
返航号
可为空
Airfirm
航空公司
type
飞机类型
ticket
int
余票
price
float
票价
2.Customer表
数据类型
含义说明
控制情况
name
顾客
id
主键
flightnum
外键
C_type
订票/候补
telephone
tick
订票数
3.airfirm表
income
收入
outcome
支出
Powerdesign下的物理模型构建
第4章软件功能设计
4.1软件功能结构图
4.2软件划分模块
4.2.1整体流程:
对主界面进行功能选择操作,通过反馈Action进入分功能操作,然后在Action模块中分别由search(),add(),delete(),update()关联到Dao包(Dao包主要管理连接数据库的业务),然后根据不同的功能进入到了关联数据库的部分,通过如下部分连接数据库:
1,加载JDBC驱动程序,成功加载后,会将Driver类的实例注册到DriverManager;
2,提供JDBC连接的URL,连接URL定义了连接数据库时的协议,子协议,数据源标识;
3,创建数据库的连接,向java.sql.DiverManager请求并获得Connection对象,该对象就代表一个数据库连接;
Connectionconn=DriverManager.getConnection(url,username,password)
4,创建一个Statement,要执行SQL语句,必须获得java.sql.Statement实例,然后将要执行的语句作为参数传进去
PreparedStatementpstmt=con.prepareStatement(sql);
5,执行sql语句,Statement接口提供了三种执行SQL语句的方法:
executeQuery,executeUpdate,和execute
ResultSetrs=stmt.execute(Stringsql);
6处理结果:
执行更新返回的本次操作影响到的记录数,执行查询返回的结果是个ResultSet对象,使用结果集对象的访问方法获取数据:
While(rs.next()){
Stringname=rs.getString(“name”);
Stringpass=rs.getString
(1);
}
7,关闭JDBC对象:
操作完成以后要把所有使用的JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
首先关闭记录集,然后关闭声明,最后关闭连接对象
If(rs!
=null){
Try{
Rs.close();
}catch(SQLExceptione){
e.printStackTrace();
然后是stmt最后是conn
这样就是整个流程的进行
4.2.2航班信息查询模块
该模块属于基本功能,其主要实现对航班的基本信息的查询,修改和删除,是通过对后台的各种操作来方便前台。
其主要用的SQL语句有:
select,insert,delete,update等.
如select*fromflight;
(从flight表中检索所有的信息)
Insertintoflightvalues(?
?
);
然后数据库通过JDBC连接到java,再在java过对界面的操作,与各功能块的实现结合起来。
Java中的部分功能实现代码:
1,查询模块
privatevoidqueryData(intpage)//查询模块采用分页显示
{
flightbasicDao=newFlightBasicMessDao();
//Dao包为与数据库连接
pageBean=newPageBean(flightbasicDao.queryCount(),10);
//分页操作
if(page<
=1){
pageBean.setCurPage
(1);
}elseif(page>
=pageBean.getMaxPage()){
pageBean.setCurPage(pageBean.getMaxPage());
}else{
pageBean.setCurPage(page);
}
Vector<
Vector>
flightbasicinfo=flightbasicDao.queryFlightdata(pageBean.getCurPage(),pageBean.getRowsPrePage());
//将查询结果放入向量flightbasicinfo中
//将查询结果用表格显示出来
Vectorcolumns=newVector();
Log.log(this,"
queryDatavipinfosize"
+flightbasicinfo.size());
columns.add("
起点"
);
终点"
起飞时间"
到达时间"
航班号"
返航号"
航空公司"
票务类型"
剩余票数"
票价"
tModel.setDataVector(flightbasicinfo,columns);
//刷新表格
table.revalidate();
//设置分页信息
curPage.setText(pageBean.getCurPage()+"
"
rowsPrePage.setText(pageBean.getRowsPrePage()+"
maxPage.setText(pageBean.getMaxPage()+"
maxCount.setText(pageBean.getMaxCount()+"
连接数据库的部分:
publicVector<
queryFlightdata(intcurPage,introwsPrePage){
Vectorflightinfo=newVector();
Vectorv=null;
//初始化connection,preparedstatement,resultset
Connectionconn=null;
PreparedStatementstmt=null;
ResultSetrs=null;
try{
conn=Dbcp.getConnection();
stmt=conn.prepareStatement(Constants.QUERY_FLIGHTBASICINFO);
stmt.setInt(1,curPage*rowsPrePage);
stmt.setInt(2,(curPage-1)*rowsPrePage+1);
rs=stmt.executeQuery();
while(rs.next()){
v=newVector();
v.add(rs.getString("
startplace"
));
endplace"
starttime"
returntime"
flightnumber"
returnflight"
airfirm"
style"
tick"
v.add(rs.getInt("
price"
flightinfo.add(v);
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
Log.log(this,"
queryflightdata"
+e.getMessage());
e.printStackTrace();
}finally{
+Constants.QUERY_FLIGHTBASICINFO);
Dbcp.close(rs,stmt,conn);
returnflightinfo;
}
增删改操作类似,此处不做赘述。
4.2.3顾客查询模块
该模块功能和航班信息查询模块功能类似,只是操作的表和信息不同而已。
下面展示部分源码:
//顾客查询分为两表显示(数据库中只有一表),一储存已定票的顾客,一储存正在候补队伍的顾客,其差别在于顾客状态
publicvoidqueryData(){
Vector<
userinfo1=flightdao.queryUserinfo();
Log.log(this,"
----------------queryData"
+userinfo1.size());
Vectorcolumns1=newVector();
columns1.add("
乘客"
乘客证件"
乘客机舱等级"
乘客所在航班号"
乘客联系方式"
乘客所定票数"
乘客状态"
tModel.setDataVector(userinfo1,columns1);
table.revalidate();
Log.log(this,"
queryDatastuinfo.size:
+userinfo1.size()+"
columnssize"
+columns1.size());
publicvoidqueryData1(){
userinfo1=flightdao.queryUserinfo1();
tModel1.setDataVector(userinfo1,columns1);
table1.revalidate();
publicString[]queryFlightdata3(intcount){
//String[]flightinfo=newString[10];
String[]f=null;
Connectionconn=null;
PreparedStatementstmt=null;
ResultSetrs=null;
try{
conn=Dbcp.getConnection();
stmt=conn.prepareStatement(Constants.QUERY_CANCEL);
stmt.setInt(1,count);
rs=stmt.executeQuery();
while(rs.next()){
f=newString[10];
f[0]=rs.getString("
name"
f[1]=rs.getString("
id"
f[2]=rs.getString("
ps"
f[3]=rs.getString("
f[4]=rs.getString("
telphone"
f[5]=rs.getString("
ticket"
f[6]=rs.getString("
customtype"
System.out.println("
~~~~~~~~~~~~~~~~~~~queryVipdata"
+f[0]+f[1]);
//vipinfo.add(v);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
+e.getMessage()+f[0]+f[1]);
e.printStackTrace();
}finally{
queryVipdata"
+Constants.QUERY_CANCEL);
Dbcp.close(rs,stmt,conn);
returnf;
4.2.4订票、退票功能
订票的功能
也是基本功能之一,实际上也是对数据库中数据的增加和删除(或减少),不过其中会增加很多判断的部分,比如在订票之前需要先查询库里是不是还有余票,如果订票的数目小于或等于余票数目,则订票可以成功,如果订票数大于余票数,则会有一部分加入到候补队列中。
退票亦是如此,如果退票的时候,发现候补队列里有人,且其票数刚好小于或等于退票的数目,则可以直接将候补队列的顾客加入到订票队列中。
部分源码:
privatevoidhandin(){
intlen1=o.getJbtname().getText().trim().length();
intlen2=o.getJbtadultticketnumber().getText().trim().length();
intlen3=o.getJbtid().getText().trim().length();
intlen4=o.getJbttelephone().getText().trim().length();
Stringlen5=o.getJbtps().getSelectedItem().toString();
if(getstring(len1,len2,len3,len4)){
JOptionPane.showMessageDialog(dialog,"
带**请务必全部输入"
else{
flightVovo=newflightVo();
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.setPhonenumber(o.getJbttelephone().getText().trim());
vo.setTick(Integer.parseInt(o.getJbtadultticketnumber().getText()));
vo.setTicket(o.getJbtadultticketnumber().getText());
vo.setCustomtype("
已定票"
System.out.println(vo);
Stringmsg="
;
System.out.println("
提交"
intflag,count,count1,count2;
count=flightdao.queryflightinfo3(o.getJbtflight().getText());
count1=Integer.parseInt(o.getJbtadultticketnumber().getText());
count=count-count1;
if(count>
0){
if(flightdao.addFlightinfo(vo)>
0){
if(flightdao.addFlightinfo1(vo)>
msg="
订票成功!
else{
msg="
定票失败"
}
else{
msg="
//msg="
余票不足"
count=flightdao.queryflightinfo3(o.getJbtflight().getText());
count1=Integer.parseInt(o.getJbtadultticketnumber().getText());
count2=count1-count;
if(JOptionPane.showConfirmDialog(dialog,"
余票不足,您可以订"
+count+"
票,剩下的"
+count2+"
加入候补?
"
确定"
JOptionPane.YES_NO_OPTION)==1){
return;
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.setPhonenumber(o.getJbttelephone().getText().trim());
vo.setTick(count);
vo.setTicket(count+"
vo.setCustomtype("
if(count>
flightdao.addFlightinfo(vo);
flightdao.addFlightinfo1(vo);
msg="
}
vo.setName(o.getJbtname().getText().trim());
vo.setId(o.getJbtid().getText().trim(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 飞机 订票 系统