Java课程设计-飞机航班管理系统.doc

上传人:jian****018 文档编号:9239999 上传时间:2020-04-04 格式:DOC 页数:56 大小:699.50KB
返回 下载 相关 举报
Java课程设计-飞机航班管理系统.doc_第1页
第1页 / 共56页
Java课程设计-飞机航班管理系统.doc_第2页
第2页 / 共56页
Java课程设计-飞机航班管理系统.doc_第3页
第3页 / 共56页
点击查看更多>>
资源描述
一引言1.1 项目的名称飞机航班信息管理系统1.2 项目背景和目标 飞机航班信息管理系统主要能够查询飞机的航班情况,飞行线路,票价,折扣等等情况,并能够在数据库中更新维护飞机航班的信息,对飞机航班数据库进行管理,如航班的增加,删除和修改等。我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设计。1.3 项目的可行性研究设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的飞机航班信息管理系统。二、 需求分析21系统概述 此系统提供给系统管理员和用户。系统管理员登陆后可以对飞机航班信息进行管理,如:添加飞机航班信息,删除飞机航班信息,修改飞机航班属性。用户登陆后能进行飞机航班信息查询,订票以及退订。22系统运行环境 Java运行在eclipse软件上,数据库用mysql数据库23功能需求描述用户选择相关的服务项目可以查看相关航班基本信息,并且可以根据自己需求选择相应服务,系统的信息更新时,相关的信息经过相应处理后,会存入到飞机航班数据库中的航班信息记录表中;系统管理员根据航空公司实际情况可以更新航班信息,并通过修改信息处理后被保存到飞机航班表中。三、系统设计3.1开发与设计的总体思想 飞机航班信息管理系统主要分为用户和系统管理员2类,因此也将该系统分为2个相应的大的功能模块。用户可以通过服务项目选择查询相关航班情况,进行订票,退订等服务项目。系统会将数据库中相应信息反馈给顾客。系统管理员负责管系统信息的及时更新,可以根据航空公司航班的具体的情况更新数据库。 3.2系统模块结构图飞机航班信息管理系统 用户登录 系统管理员登录 用户模块 系统管理员模块退订信息查询订票修改飞机航班信息删除飞机航班信息添加飞机航班信息33数据库结构设计 为了支持此飞机航班信息管理系统,创建数据库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。当教职工登录系统时从此表获取数据,其截图如下: 34模块设计 在整个系统主界面,可以选择登录方式,是用户登录还是系统管理员登录。 如果选择用户,则进入用户登录界面,在这个界面上要求输入用户姓名和密码。输入后单击“确认登录”按钮,若密码正确,则转换到飞机航班信息查询页面,若密码不正确,这提示密码错误。如果选择是系统管理员登录,则进入管理员登陆界面,在这个界面上输入管理员姓名和密码,输入后单击“飞机航班信息管理”按钮,则进入管理员主界面。在管理员主界面可以选择添加操作,删除操作还是修改操作。若要查询用户的简介信息,点击查询菜单项则进入用户简介信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“pname”字段时,要输入某个用户的姓名。输入后,单击“检索”按钮,则开始对数据库中数据进行查询。如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,则页面列表中显示为空。 若要查询飞机航班信息,点击查询菜单项则进入飞机航班信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“飞机对应航班序号的相关信息”字段时,要键入某个飞机航班序号。输入后,单击“检索”按钮,则开始对数据库中数据进行查询。如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,则页面列表中显示为空。 如果管理员要对数据库中进行修改操作,则在管理员主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有三项修改操作:添加飞机航班信息,删除飞机航班信息,修改飞机航班信息。在添加信息操作中,按照标签提示一次输入要添加的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。在删除信息操作中,输入要删除的信息,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。在修改信息操作中,输入要修改的信息,单击“修改”按钮,若修改成功,则提示成功,若修改失败则提示失败。以上就是该飞机航班管理系统涉及的操作步骤。35系统流程描述开始 登陆 系统管理员 用户成功成功功NO NO密码错误密码错误 YES YES飞机航班主界面信息查询查询订票退订修改用户信息修改飞机航班信息添加飞机航班信息航班信息删除飞机航班信息选择检索方式和数据航班序号成功成功成功成功 NO成功修改成功删除成功添加成功 NO NO NO NO YES 不显示任何信息失败失败 YESYESYES对应的用户信息对应的航班信息不显示任何信息失败YES四、系统实现 1.Connection包中的类: (1)DBconnection类:此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。若连接成功,提示:connection success,若连接失败,提示:connection failureDBconnection类源代码package connection;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBconnection public static Connection con=null; public static Connection getConnection() try String dbDriver=com.mysql.jdbc.Driver;Class.forName(dbDriver);System.out.println(Driver Suceess); catch (ClassNotFoundException e) System.out.println(Driver not found);e.printStackTrace();try con=DriverManager.getConnection(jdbc:mysql:/localhost:3306/airplane manage,root,123);System.out.println(Connection Suceess); catch (SQLException e) System.out.println(Connetion failure);e.printStackTrace();return con; public static void closeConnection() if(con!=null)try con.close();System.out.println(database close success); catch (SQLException e) System.out.println(close failure);e.printStackTrace(); public static void main(String args) 2.dao包中的类:(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,否则返 回falsedeleteFlight()方法中,有一个参数,传给delete语句中的Pname(用户姓名),利用delete语句,把flight表中相关信息删除。若删除成功,返回 true,否则返回false。 FlightDao类源代码: package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import ui.PassengerLoginUI;import model.Flight;import model.Passenger;import connection.DBconnection;public class FlightDao public ArrayList queryFlight(String key) ArrayList lis = new ArrayList();Connection con = DBconnection.getConnection();Statement stm;try stm = con.createStatement();String sql = select * from flight where Pname like % + key+ % ;System.out.println(sql);ResultSet rs = stm.executeQuery(sql);while (rs.next() Flight flight = new Flight(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4),rs.getString(5),getInt(6),getInt(7),getInt(8);lis.add(flight); catch (SQLException e) e.printStackTrace();return lis;public ArrayList queryFlight1(String key) ArrayList lis = new ArrayList();Connection con = DBconnection.getConnection();Statement stm;try stm = con.createStatement();String sql = select * from flight where Pname like % + PassengerLoginUI.st1+ % ;System.out.println(sql);ResultSet rs = stm.executeQuery(sql);while (rs.next() Flight flight = new Flight(rs.getInt(1), rs.getString(2),rs.getString(3), rs.getString(4),rs.getString(5),getInt(6),getInt(7),getInt(8);lis.add(flight); catch (SQLException e) e.printStackTrace();return lis;private Object getInt(int i) / TODO Auto-generated method stubreturn null;public boolean addFlight(int id, String stime ,String etime, String sadd , String eadd,int price,int znum,int snum ) Connection con = DBconnection.getConnection();PreparedStatement pst;try pst = con.prepareStatement(insert into flight values(?,?,?,?,?,?,?,?);pst.setInt(1, id);pst.setString(2, stime);pst.setString(3, etime);pst.setString(4, sadd);pst.setString(5,eadd);pst.setInt(6,price);pst.setInt(7, znum);pst.setInt(8, snum);int count = pst.executeUpdate();/ 返回修改的记录数if (count = 1)return true;elsereturn false; catch (SQLException e) e.printStackTrace();return false;public boolean deleteFlight(String key) Connection con = DBconnection.getConnection();Statement stm;try stm = con.createStatement();String sql = delete from flight where Pname like % + key + % ;System.out.println(sql);int count = stm.executeUpdate(sql);if (count = 1)return true;elsereturn false; catch (SQLException e) e.printStackTrace();return false;public boolean addFlight(String id, String stime, String etime, String sadd, String eadd, String price, String znum,String snum) / TODO Auto-generated method stubreturn false;(2)ManagerDao类:此类中有一个方法:queryManager (),作用是控制管理员登陆 queryManager()方法中,有两个参数,分别传给select语句中的Mname(管理员姓名)和Mpassword(登陆密码),利用select语句在manager表中检索管理员登陆信息。若存在此信息,返回true,否则返回false ManagerDao类源代码:package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import connection.DBconnection;public class ManagerDao public boolean queryManager(String Mname,String Mpassword) DBconnection db=new DBconnection();Connection con=db.getConnection();boolean isfound=false;PreparedStatement pst;try pst = con.prepareStatement(select * from managerlogin where Mname=? and Mpassword=?);pst.setString(1, Mname); pst.setString(2,Mpassword);ResultSet rs=pst.executeQuery(); if(rs.next() isfound=true; catch (SQLException e) e.printStackTrace(); System.out.println(isfound); return isfound;public static void main(String args) (3)PassengerDao类:此类中有四个方法PassengerLogin,addPassenger,queryPassenger,deletePassenger,作用分别是控制用户登陆系统,增加用户基本信息,查询用户基本信息,删除用户基本信息。PassengerLogin()方法中,有两个参数,分别传给select语句中的pname(用户姓名)和password(登录密码),利用select语句在passengerlogin表中检索用户登录信息。若存在此信息,返回true,否则返回falseaddPassenger()方法中,有五个参数,分别传给insert语句中的pname(用户名称),psex(性别),page(年龄),pplace(籍贯),number(电话号码)。利用insert语句向passenger用户信息表中插入记录。若插入成功,返回true,否则返回false。queryWorker()方法中,有两个参数,分别传给select语句中的field(查找方式)和key(查找内容),利用select语句,从passenger表中检索用户简介信息。若存在此信息,则返回一个ArrayList类的对象lis(表格),否则,异常处理。deletePassenger()方法中,有一个参数,传给delete语句中的pname(用户姓名),利用delete语句,把passenger表中相关用户信息删除。若删除成功,返回true,否则返回false。package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import model.Passenger;import connection.DBconnection;public class PassengerDao public boolean PassengerLogin(String pname,String password) DBconnection db=new DBconnection();Connection con=db.getConnection();boolean isfound=false;PreparedStatement pst;try pst = con.prepareStatement(select * from passengerlogin where pname=? and password=?);pst.setString(1, pname); pst.setString(2,password);ResultSet rs=pst.executeQuery(); if(rs.next() isfound=true; catch (SQLException e) e.printStackTrace(); System.out.println(isfound); return isfound;public boolean addPassenger(String pname, String psex, int page, String pplace,int number)Connection con = DBconnection.getConnection();PreparedStatement pst;try pst = con.prepareStatement(insert into passenger values(?,?,?,?,?);pst.setString(1, pname);pst.setString(2, psex);pst.setInt(3, page);pst.setString(4, pplace);pst.setInt(5, number);int count = pst.executeUpdate();/ 返回修改的记录数if (count = 1)return true;elsereturn false; catch (SQLException e) e.printStackTrace();return false;public ArrayList queryPassenger(String field, String key) ArrayList lis = new ArrayList();Connection con = DBconnection.getConnection();Statement stm;try stm = con.createStatement();String sql = select * from passenger where + field + like %+ key + % ;System.out.println(sql);ResultSet rs = stm.executeQuery(sql);while (rs.next() Passenger passenger = new Passenger(rs.getString(1), rs.getString(2), rs.getInt(3), rs.getString(4), rs.getInt(5);lis.add(passenger); catch (SQLException e) e.printStackTrace();return lis;public boolean deletePassenger(String key) Connection con = DBconnection.getConnection();Statement stm;try stm = con.createStatement();String sql = delete from passenger where Pname like %+ key + % ;System.out.println(sql);int count = stm.executeUpdate(sql);if (count = 1)return true;elsereturn false; catch (SQLException e) e.printStackTrace();return false; 3.model包中的类:(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) this.number = number;public String getPname() return Pname;public void setPname(String Pname) this.Pname = Pname;public String getPsex() return Psex;public void setPsex(String Psex) this.Psex = Psex;public int getPage() return Page;public void setPage(int Page) this.Page = Page;public String getPplace() return Pplace;public void setPplace(String Pplace) this.Pplace = Pplace;public Passenger( String Pname, String Psex, int Page, String Pplace,int number) super(); this.Pname = Pname; this.Psex = Psex; this.Page = Page; this.Pplace = Pplace; this.number = 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) this.id = id;public String getStime() return stime;public void setStime(String stime) this.stime = stime;public String getEtime() return etime;public void setEtime(String etime) this.etime = etime;public String getSadd() return sadd;public void setSadd(String sadd) this.sadd =sadd;public String getEadd() return eadd;public void setEadd(String Eadd) this.eadd = eadd;public int getPrice() return price;public void setPrice(int Price) this.price =price;public int getZnum() return znum;public void setZnum(int Znum) this.znum = znum;public int getSnum() return snum;public void setSnum(int Snum) this.snum = snum;public Flight(int id,String stime,String etime, String sadd,String eadd,int price,int znum,int snum) super(); this.id=id; this.stime =stime; this.etime = etime; this.sadd = sadd; this.eadd=eadd; this.price=price; this.znum=znum; this.snum=snum;public Flight(int int1, String string, String string2, String string3, String string4, Object int2, Object int3,Object int4) / TODO Auto-generated constructor stubpublic void Flight1(int int1, String string2, String string3, String string4, String string5,int int6,int int7,int int8) / TODO Auto-generated constructor stub4. ui包中的类: (1)LoginUI类:此类为登陆主界面类,在这个界面上,设置有两个按钮,管理员按钮和用户按钮。给这两个按钮注册事件addActionListener,分别在内部类ManagerLoginActionListene和PassengerLoginActionListener中的默认方法actionPerformed()中创建 ManagerLoginUI类和PassengerLoginUI类的对象,即打开用户登陆界面和管理员登录界面,并将原登陆界面关闭。 LoginUI类源代码:package ui;import java.awt.*;import java.awt.event.*;import javax.swing.*;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();p1.setLayout(null);l1.setBounds(150, 150, 120, 40);p1.add(l1);bt1.setBounds(120, 230, 80, 30);p1.add(bt1);bt2.setBounds(220, 230, 80, 30);p1.add(bt2);bt1.addActionListener(new ManagerLoginActionListener();/注册事件bt2.addActionListener(new PassengerLoginActionListener();/注册事件cp = getContentPane();this.setBounds(200, 200, p1.getHeight(), p1.getHeight();cp.add(p1);this.setTitle(用户登录界面);this.setSize(400, 400);this.setVisible(true);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););class ManagerLoginActionListener implements ActionListenerpublic void actionPerformed(ActionEvent e)new ManagerLoginUI();dispose(); class PassengerLoginActionListener implements ActionListener public void actionPerformed(ActionEvent e) new PassengerLoginUI(); dispose(); public static void main(String args) new LoginUI(); (2) ManagerLoginUI类:此类为管理员登陆界面,在这个界面上有两个文本框,分别输入管理员姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用ManagerDao类中的queryManager()方法验证是否存在该用户。若存在,则创建ManagerMainUI类的对象,即打开总界面进行操作,若不存在,则提示密码错误。 ManagerLoginUI类源代码:package ui;import java.awt.*;import java.awt.event.*;import javax.swing.*;import dao.ManagerDao;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();p1.setLayout(null);l1.setBounds(150, 150, 80, 40);p1.add(l1);t1.setBounds(250, 150, 80, 30);p1.add(t1);l2.setBounds(150, 190, 80, 40);p1.add(l2);t2.setBounds(250, 190, 80, 30);p1.add(t2);bt1.setBounds(150, 230, 80, 30);p1.add(bt1);bt2.setBounds(250, 230, 80, 30);p1.add(bt2);bt1.addActionListener(new LoginActionListener();/注册事件bt2.addActionListener(new ExitActionListener();/注册事件cp = getContentPane();this.setBounds(200, 200, p1.getHeight(), p1.getHeight();cp.add(p1);this.setTitle(管理员登录界面);this.setSize(400, 400);this.setVisible(true);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0); );class LoginActionListener implements ActionListener public void actionPerformed(ActionEvent e) String st1 = t1.getText();String st2 = t2.getText();ManagerDao oneManagerDao = new ManagerDao();boolean isSuccess = oneManagerDao.queryManager(st1, st2);if (isSuccess) new ManagerMainUI();dispose(); elseJOptionPane.showMessageDialog(null, 用户名密码错误, 提示信息,JOptionPane.INFORMATION_MESSAGE);class ExitActionListener implements ActionListener public void actionPerformed(ActionEvent e) System.exit(0);public static void main(String args) new ManagerLoginUI();(3) PassengerLoginUI类:此类为用户登陆界面,在这个界面上有两个文本框,分别输入用户姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用PassengerDao类中的PassengerLoginUI()方法验证是否存在该用户。若存在,则创建PassengerFlightUI类的对象,即打开用户航班界面,显示此登陆用户的信息,若不存在,则提示密码错误。package ui;import java.awt.*;import java.awt.event.*;import javax.swing.*;import dao.PassengerDao;public class PassengerLoginUI extends JFrameJLabel l1, l2;JTextField t1;JPasswordField t2;JButton bt1, bt2;Container cp;public static String st1;p
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!