数据库课程设计民航售票系统.docx
- 文档编号:18304056
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:34
- 大小:1.03MB
数据库课程设计民航售票系统.docx
《数据库课程设计民航售票系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计民航售票系统.docx(34页珍藏版)》请在冰点文库上搜索。
数据库课程设计民航售票系统
计算机与信息学院
数据库课程设计报告
专业班级
信息安全11-1班
学生姓名及学号
周伟康
课程教学班号
任课教师
沈明玉
实验指导教师
郑淑丽
实验地点
第三机房
2012~2013学年第三学期
民航机票销售系统设计
1.课程设计目的1
2.课程设计描述2
3.需求分析3
4.用例测试4
5.程序结构5
6.部分源码6
7.总结7
1.课程设计目的
模拟实现一个现实生活所需的数据库系统,结合多门相关课程内容,把理论运用到实践中去,提高知识的理解深度,技能的熟练程度。
为将来向社会贡献有用的产品打下基础。
2.课程设计描述
本次课程设计的课题是设计一个民航机票销售数据库系统,来模拟民航机票预订和销售系统。
本人在小组中负责所有应用程序设计部分并参与数据库建设的讨论,适当提出建议。
初步考虑,针对现实用户的不同角色需求,计划开发3种客户端。
1、普通用户个人使用的订票客户端
2、民航系统员工使用的销售客户端
3、航空公司内部使用的航班信息提供客户端
三种客户端通过服务器间接访问数据库,故还需编写服务器。
初步实践后,鉴于以下原因,本次课程设计仅实现个人订票的基本应用。
1、本人能力有限。
对后两者业务经验极度缺乏,需求模糊。
2、在对三种客户端业务扩充时发现,整个应用层应是基于多个数据库的整体,民航机票销售只是其中业务逻辑的一部分,后两者客户端有其独立的数据库。
对机票销售这一主体功能来说,只用到后两库中部分共享数据,故对整个系统降级处理,只保证实现机票销售。
故把数据合并在一个数据库中,航班、员工等信息假设以预存库中,则后两客户端可推迟实现。
本次设计程序用Java+Oracle实现,
3.需求分析
基本目标:
实现用户使用网上订票系统进行查票,登陆,订票,改签,退票等基本功能。
概念设计图:
用户客户端功能概述:
1.注册及登录
a.注册:
注册用户个人信息。
b.登录:
登陆后系统记录用户信息,并返回到登陆前页面。
2.管理个人信息
a.管理用户的个人信息,并可以修改。
b.查看用户现有的订单
3.查询
a.通过时间,航班号,城市等方式查询航班
4.订票
a.用户需要确认选择的机票,并确认订单。
b.与电子银行进行交互,并进行支付的操作。
(此处未完成)
5.改签
a.判断是否可以改签
b.按一定规则为用户进行改签处理,改签过程中修改订单,如有需要还需要进行相关的付款操作。
6.退票
a.根据用户选择订单及公司制定相关规则进行判断,判断订单是否可退订;
b.与电子银行进行交互,进行退票之后相应的转账到用户账户操作。
(未实现)
7.注销
a.用户可以在任何时候保存当前状态,并且安全退出。
4.运行效果(用例测试)
运行:
任意登录:
注册:
直接点击注册:
重名注册:
注册密码错误提示:
身份证号违反完整性约束:
选择出生年月:
电话和邮箱可空,但仍有完整性约束。
点击注册:
点击OK,自动填写刚注册用户密码,返回登录:
点击OK,进入主界面:
点击修改个人信息:
修改密码:
查询机票:
1.按航班查询:
2.按城市查询:
A.选择城市:
B.选择时间:
C.点击查询:
预定购买进入高级选项(点击对应航班的预定按钮):
确认购买,若无票显示订票失败。
个人购买历史:
点击对应退票按钮退票:
改签12号到14号:
公告栏:
(原设想有航空公司客户端提供如晚点等航务信息)
同帐号异地再登录:
退出:
5.程序结构
上图依次为:
验证码,JDBC连接ORACLE底层,日期选择扩展控件,登录界面,主界面管理,个人信息版,修改密码版,查询购买机票版,订购历史改签退票版,公告栏,注册界面,JDBC调用SQL封装,测试程序入口,机票信息类,机票购买高级选项,用户信息类,JDBC驱动。
6.部分源码
importjava.sql.*;
publicclassConDB
{
publicstaticConnectionGet_Connection()
{
Connectioncon=null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Stringurl="jdbc:
oracle:
thin:
@localhost:
1521:
ZWKDB";
Stringuser="welcome";
Stringpassword="1234";
con=DriverManager.getConnection(url,user,password);
}catch(Exceptione)
{
e.printStackTrace();
}
returncon;
}
}
importjava.sql.*;
importjavax.swing.JOptionPane;
publicclassSQL
{
Connectioncon=null;
SQL()
{
try
{
con=ConDB.Get_Connection();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
publicbooleanSQLinsert(Stringsql,Object[]o,inta,intb){
booleanf=false;
try{
//获取PreparedStatement对象
PreparedStatementpstmt=con.prepareStatement(sql);
for(inti=a;i
if(o[i]=="null")
pstmt.setObject(i+1,null);
else
pstmt.setObject(i+1,o[i]);
}
pstmt.execute();
f=true;
}catch(SQLExceptione){
System.out.println(e.toString());
JOptionPane.showMessageDialog(null,e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
returnf;
}
publicResultSetSQLquary(Stringsql,Object[]o,inta,intb){
ResultSetrs=null;
try{
PreparedStatementpstmt=con.prepareStatement(sql);
for(inti=a;i
System.out.println(o[i]);
if(o[i]=="null")
pstmt.setObject(i+1,null);
else
pstmt.setObject(i+1,o[i]);
}
rs=pstmt.executeQuery();
}catch(SQLExceptione){
System.out.println(e.toString());
JOptionPane.showMessageDialog(null,e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
returnrs;
}
publicResultSetSQLquary(Stringsql){
ResultSetrs=null;
try{
PreparedStatementpstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
}catch(SQLExceptione){
System.out.println(e.toString());
JOptionPane.showMessageDialog(null,e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
returnrs;
}
publicintSQLupdate(Stringsql){//dmlddl
intb=0;
try{
//获取PreparedStatement对象
PreparedStatementpstmt=con.prepareStatement(sql);
b=pstmt.executeUpdate();
}catch(SQLExceptione){
System.out.println(e.toString());
JOptionPane.showMessageDialog(null,e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
returnb;
}
publicvoidclose(){
if(con!
=null){
try{
con.close();
}catch(SQLExceptionex){
ex.printStackTrace();
JOptionPane.showMessageDialog(null,ex.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
}
}
}
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
importjava.sql.*;
publicclassLog_InextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=1L;
JLabelLname,Lpassword,LCheck;
JTextFieldTname,TCheck;
JPasswordFieldTpassword;
JPanelpanel1=newJPanel();
JButtonLoad,login;
Stringcheck;
JPCjpc=newJPC();
booleanb=false;
publicLog_In()
{
super("登陆");
Lname=newJLabel("