Java课程设计飞机航班管理系统
一.引言
1.1项目的名称
飞机航班信息管理系统
1.2项目背景和目标
飞机航班信息管理系统主要能够查询飞机的航班情况,飞行线路,票价,折扣
等等情况,并能够在数据库中更新维护飞机航班的信息,对飞机航班数据库进
行管理,如航班的增加,删除和修改等。我们的目标就是为该系统提供后台连
接数据库程序设计以及前台用户界面设计。
1.3项目的可行性研究
设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的飞机航班信息管理系统。
二、需求分析
2.1系统概述
此系统提供给系统管理员和用户。系统管理员登陆后可以对飞机航班信息进行管理,如:添加飞机航班信息,删除飞机航班信息,修改飞机航班属性。用户登陆后能进行飞机航班信息查询,订票以及退订。
2.2系统运行环境
Java运行在eclipse软件上,数据库用mysql数据库
2.3功能需求描述
用户选择相关的服务项目可以查看相关航班基本信息,并且可以根据自己需求选择相应服务,系统的信息更新时,相关的信息经过相应处理后,会存入到飞机航班数据库中的航班信息记录表中;系统管理员根据航空公司实际情况可以更新航班信息,并通过修改信息处理后被保存到飞机航班表中。
三、系统设计
开发与设计的总体思想
飞机航班信息管理系统主要分为用户和系统管理员2类,因此也将该系统分为2个相应的大的功能模块。
用户可以通过服务项目选择查询相关航班情况,进行订票,退订等服务项目。系统会将数据库中相应信息反馈给顾客。
系统管理员负责管系统信息的及时更新,可以根据航空公司航班的具体的情况更新数据库。
系统模块结构图
3.3数据库结构设计
为了支持此飞机航班信息管理系统,创建数据库airplane manage,在这个数据库里包含三个表:flight information表,passenger表,managerlogin表,和passengerlogin表,它们的截图如下:
在flight information(飞机航班信息)表中,有8个属性列,分别为id(序列),stime(飞机起飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum(总票数),snum(剩余票数)。其基本数据类型分别为:int,char,char,char,char,char。当查询飞机航班基本信息时,从此表中获取数据。截图如下:
在passenger表中,有两个属性列,分别为:Pname(姓名),Psex(性别),Page(年龄),Pplace(籍贯),number(电话号码)其基本数据类型分别为:char,char,int,char,int。当管理员登录系统时从此表获取数据,其截图如下:
在managerlogin表中,有两个属性列,分别为:Mname(管理员姓名),Mpassword(密码)其基本数据类型分别为:char,char。当管理员登录系统时从此表获取数据,其截图如下:
在passengerlogin表中,有两个属性列,分别为:Pname(用户姓名),Ppassword(密码)其基本数据类型分别为:char,char。当教职工登录系统时从此表获取数据,其截图如下:
3.4模块设计
在整个系统主界面,可以选择登录方式,是用户登录还是系统管理员登录。
如果选择用户,则进入用户登录界面,在这个界面上要求输入用户姓名和密码。输入后单击“确认登录”按钮,若密码正确,则转换到飞机航班信息查询页面,若密码不正确,这提示密码错误。
如果选择是系统管理员登录,则进入管理员登陆界面,在这个界面上输入管理员姓名和密码,输入后单击“飞机航班信息管理”按钮,则进入管理员主界面。在管理员主界面可以选择添加操作,删除操作还是修改操作。
若要查询用户的简介信息,点击查询菜单项则进入用户简介信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“pname”字段时,要输入某个用户的姓名。输入后,单击“检索”按钮,则开始对数据库中数据进行查询。如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,则页面列表中显示为空。
若要查询飞机航班信息,点击查询菜单项则进入飞机航班信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“飞机对应航班序号的相关信息”字段时,要键入某个飞机航班序号。输入后,单击“检索”按钮,则开始对数据库中数据进行查询。如果数据库检索到所需信息,则生成列
表显示检索结构,如果没有所需信息,则页面列表中显示为空。
如果管理员要对数据库中进行修改操作,则在管理员主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有三项修改操作:添加飞机航班信息,删除飞机航班信息,修改飞机航班信息。在添加信息操作中,按照标签提示一次输入要添加的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。在删除信息操作中,输入要删除的信息,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。在修改信息操作中,输入要修改的信息,单击“修改”按钮,若修改成功,则提示成功,若修改失败则提示失败。
以上就是该飞机航班管理系统涉及的操作步骤。
3.5系统流程描述
接的数据库。若连接成功,提示:connection success,若连接失败,提示:connection failure DBconnection类源代码
package connection;
public class DBconnection {
public static Connection con=null;
public static Connection getConnection()
{
try {
(dbDriver);
} catch (ClassNotFoundException e) {
();
}
try {
} catch (SQLException e) {
();
}
return con;
}
public static void closeConnection()
{
if(con!=null)
try {
();
} catch (SQLException e) {
();
}
}
public static void main(String args[])
{
}
}
包中的类:
(1)FlightDao类:在该类中有四个方法queryFlight, queryFlight1, addFlight,deleteFlight。作用分别是为用户提供查询航班信息的功能,为管理者用户提供查询航班信息,添加航班信息,删除航班信息功能。
queryFlight()方法中,有一个参数,传给select语句中的Pname(用户姓名),利用select语句,查询航班信息表中的内容。若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
queryFlight1()方法中,有一个参数,传给select语句中的Pname(用户姓名),这个Pname的用户登录是输入的姓名。即此类的作用是每个用户登陆只能查看本人的航班信息。若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
addFlight()方法中,有四个参数,分别传给insert语句中的id(序列),stime(飞机起飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum(总票数),snum(剩余票数)。利用insert语句,将这些记录写入flight表中。若插入成功返回true,否则返回false deleteFlight()方法中,有一个参数,传给delete语句中的Pname(用户姓名),利用delete语句,把flight表中相关信息删除。若删除成功,返回 true,否则返回false。
FlightDao类源代码:
package dao;
import ;
import ;
import ;
import ;
public class FlightDao {
public ArrayList queryFlight(String key) {
ArrayList lis = new ArrayList();
Connection con = ();
Statement stm;
try {
stm = ();
String sql = "select * from flight where Pname like '%" + key
+ "%' ";
ResultSet rs = (sql);
while ()) {
Flight flight = new Flight(1), (2), rs
.getString(3),
(4),(5),getInt(6),getInt(7),getInt(8));
(flight);
}
} catch (SQLException e) {
();
}
return lis;
}
public ArrayList queryFlight1(String key) {
ArrayList lis = new ArrayList();
Connection con = ();
Statement stm;
try {
stm = ();
String sql = "select * from flight where Pname like '%" + + "%' ";
ResultSet rs = (sql);
while ()) {
Flight flight = new Flight(1), (2),
(3), (4),(5),getInt(6),getInt(7),getInt(8));
(flight);
}
} catch (SQLException e) {
();
}
return lis;
}
private Object getInt(int i) {
etInt(3), (4), (5));
(passenger);
}
} catch (SQLException e) {
();
}
return lis;
}
public boolean deletePassenger(String key) {
Connection con = ();
Statement stm;
try {
stm = ();
String sql = "delete from passenger where Pname like '%"
+ key + "%' ";
int count = (sql);
if (count == 1)
return true;
else
return false;
} catch (SQLException e) {
();
}
return false;
}
}
包中的类:
(1)Passenger类:此类中有五个成员变量,String Pname, String Psex, int Page, String Pplace,int number,和五个成员方法,类中分别获取和设置了这五个变量,即为passenger表中五个属性的属性名,每个变量都对应了getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值
Passenger类源代码:
package model;
public class Passenger {
String Pname;
String Psex;
int number;
int Page;
String Pplace;
public int getNumber() {
return number;
}
public void setNumber(int number) {
= number;
}
public String getPname() {
return Pname;
}
public void setPname(String Pname) {
= Pname;
}
public String getPsex() {
return Psex;
}
public void setPsex(String Psex) {
= Psex;
}
public int getPage() {
return Page;
}
public void setPage(int Page) {
= Page;
}
public String getPplace() {
return Pplace;
}
public void setPplace(String Pplace) {
= Pplace;
}
public Passenger( String Pname, String Psex, int Page, String Pplace,int number) {
super();
= Pname;
= Psex;
= Page;
= Pplace;
= number;
}
}
(2)Flight类:此类中有七个成员变量,id(序列),stime(飞机起飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum(总票数),snum(剩余票数)。,和七个成员方法,类中分别获取和设置了这七个变量,即为flight表中七个属性的属性名,每个变量都对应了getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值Flight类源代码:
package model;
public class Flight {
int id;
String stime;
String etime;
String sadd;
String eadd;
int price;
int znum;
int snum;
public int getId() {
return id;
}
public void setId(int id) {
= id;
}
public String getStime() {
return stime;
}
public void setStime(String stime) {
= stime;
}
public String getEtime() {
return etime;
}
public void setEtime(String etime) {
= etime;
}
public String getSadd() {
return sadd;
}
public void setSadd(String sadd) {
=sadd;
}
public String getEadd() {
return eadd;
}
public void setEadd(String Eadd) {
= eadd;
}
public int getPrice() {
return price;
}
public void setPrice(int Price) {
=price;
}
public int getZnum() {
return znum;
}
public void setZnum(int Znum) {
= znum;
}
public int getSnum() {
return snum;
}
public void setSnum(int Snum) {
= snum;
}
public Flight(int id,String stime,String etime, String sadd,String eadd,int price,int znum,int snum)
{
super();
=id;
=stime;
= etime;
= sadd;
=eadd;
=price;
=znum;
=snum;
}
public Flight(int int1, String string, String string2, String string3, String string4, Object int2, Object int3,
Object int4) {
;
import .*;
public class LoginUI extends JFrame { JLabel l1;
JButton bt1, bt2;
Container cp;
public LoginUI() {
l1 = new JLabel("请选择用户类型");
bt1 = new JButton("管理员");
bt2 = new JButton("用户");
JPanel p1 = new JPanel();
(null);
(150, 150, 120, 40);
(l1);
(120, 230, 80, 30);
(bt1);
(220, 230, 80, 30);
(bt2);
(new ManagerLoginActionListener());; import .*;
import ;
public class ManagerLoginUI extends JFrame {
JLabel l1, l2;
JTextField t1;
JPasswordField t2;
JButton bt1, bt2;
Container cp;
public ManagerLoginUI(){
l1 = new JLabel("管理员姓名");
l2 = new JLabel("密码");
t1 = new JTextField(12);
t2 = new JPasswordField(12);
bt1 = new JButton("登录");
bt2 = new JButton("退出");
JPanel p1 = new JPanel();
(null);
(150, 150, 80, 40);
(l1);
(250, 150, 80, 30);
(t1);
(150, 190, 80, 40);
(l2);
(250, 190, 80, 30);
(t2);
(150, 230, 80, 30);
(bt1);
(250, 230, 80, 30);
(bt2);
(new LoginActionListener());;
import .*;
import ;;
public class PassengerLoginUI extends JFrame{ JLabel l1, l2;
JTextField t1;
JPasswordField t2;
JButton bt1, bt2;
Container cp;
public static String st1;
public String st2;
public PassengerLoginUI(){
l1 = new JLabel("用户姓名");
l2 = new JLabel("密码");
t1 = new JTextField(12);
t2 = new JPasswordField(12);
bt1 = new JButton("航班查询");
bt2 = new JButton("退出");
JPanel p1 = new JPanel();
(null);
(150, 150, 80, 40);
(l1);
(250, 150, 80, 30);
(t1);
(150, 190, 80, 40);
(l2);
(250, 190, 80, 30);
(t2);
(150, 230, 120, 30);
(bt1);
(280, 230, 80, 30);
(bt2);
(new LoginActionListener());;
import .*;
public class ManagerMainUI extends JFrame{
Container ctp;
ManagerMainUI(){
ctp = ();
("欢迎进入管理系统!");
(new BorderLayout());
JMenuBar menuBar = new JMenuBar();
buildMainMenu(menuBar);
(menuBar);
(100, 100, 400, 300);
(true);
}
public void buildMainMenu(JMenuBar menuBar){ JMenu fileMenu=new JMenu("文件");
JMenuItem exitMenuItem=new JMenuItem("退出");
(new ExitActionListener());;
import .*;
import .*;
import ;
import ;
public class PassengerQueryUI extends JFrame{ JLabel selectionLabel;
JComboBox fieldComboBox;
JPanel topPanel;
JButton retrievalButton;
JTextField keywordText;
Container container;
String fieldSelected;
int selectedNum;
JTable table;
JScrollPane bookScrollPane;
JPanel bottomPanel;
public PassengerQueryUI(){
container = ();
selectionLabel = new JLabel("检索方式");
fieldComboBox = new JComboBox();
("请选择...");
("Pname");
("Psex");
("Page");
("Pplace");
("number");
(new SelectedListener()); ;
import .*;
import .*;
import ;
import ;
public class FlightQueryUI extends JFrame{ JLabel selectionLabel;
JPanel topPanel;
JButton retrievalButton;
JTextField keywordText;
Container container;
String fieldSelected;
int selectedNum;
JTable table;
JScrollPane bookScrollPane;
JPanel bottomPanel;
public FlightQueryUI(){
container = ();
selectionLabel = new JLabel("姓名");
keywordText = new JTextField("", 20);
retrievalButton = new JButton("查询");
topPanel = new JPanel();
(new FlowLayout);
() / 2, ());
(selectionLabel);
(keywordText);
(retrievalButton);
, topPanel);
(new RetrievalActionListener());;
import .*;
import .*;
import ;
import ;
public class PassengerFlightUI extends JFrame{ String aa=;
JLabel selectionLabel;
JPanel topPanel;
Container container;
JTable table;
JScrollPane bookScrollPane;
JPanel bottomPanel;
public PassengerFlightUI(){
container = ();
selectionLabel = new JLabel(aa+"所乘航班如下");
topPanel = new JPanel();
(new FlowLayout);
(selectionLabel);
, topPanel);
table = new JTable();
bookScrollPane = new JScrollPane(table);
, bookScrollPane);
bottomPanel = new JPanel();
, bottomPanel);
("用户航班查询");
(600, 450);
(true);
FlightDao oneFlight=new FlightDao();
ArrayList lis = (aa);
Vector
("id");
("stime");
("etime");
("sadd");
("eadd");
("price");
("znum");
("snum");
Vector
for (int i = 0; i < (); i++) {
Vector row = new Vector();
Flight oneFlight1 = (Flight) (i);
());
());
());
());
());
());
());
());
(row);
}
DefaultTableModel model = new DefaultTableModel(content, head);
(model);
repaint();
}
}
(8)PassengerAddUI类:此类为添加用户基本信息界面类,在此界面中有五个标签,五个文本框,还有两个按钮“添加”“退出”。根据五个标签的提示,分别在五个文本框中输入信息。当单击“添加”按钮时,通过注册事件,在内部类的actionPerformed()方法中,获取五个文本框中的信息,并转换成相应的基本数据类型,通过PassengerDao类的addPassenger()方法,将数据写入数据库的passenger表中。若添加成功,提示成功,否则提示失败。PassengerAddUI类源代码
package ui;
import .*;
import .*;
import ;
public class PassengerAddUI extends JFrame{ JLabel l1, l2, l3, l4, l5;
JTextField t1, t2, t3, t4, t5;
JButton bt1, bt2;
public PassengerAddUI() {
l1 = new JLabel("Pname");
l2 = new JLabel("Psex");
l3 = new JLabel("Page");
l4 = new JLabel("Pplace");
l5 = new JLabel("number");
t1 = new JTextField(12);
t2 = new JTextField(24);
t3 = new JTextField(24);
t4 = new JTextField(24);
t5 = new JTextField(6);
bt1 = new JButton("添加");
bt2 = new JButton("退出");
JPanel p1 = new JPanel();
(null);
(100, 100, 80, 30);
(l1);
(170, 100, 100, 30);