版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、仅供参考计算机与信息学院数据库课程设计报告专 业 班 级信息安全11-1班学生姓名及学号周伟康课程教学班号任 课 教 师沈明玉实验指导教师郑淑丽实验地点第三机房2012 2013 学年第 三 学期民航机票销售系统设计目录1课程设计目的12课程设计描述23需求分析34. 用例测试45. 程序结构56. 部分源码67. 总结71课程设计目的模拟实现一个现实生活所需的数据库系统,结合多门相关课程内容,把理论运用到实践中去,提高知识的理解深度,技能的熟练程度。为将来向社会贡献有用的产品打下基础。2 课程设计描述本次课程设计的课题是设计一个民航机票销售数据库系统,来模拟民航机票预订和销售系统。本人在小组
2、中负责所有应用程序设计部分并参与数据库建设的讨论,适当提出建议。初步考虑,针对现实用户的不同角色需求,计划开发3种客户端。1、 普通用户个人使用的订票客户端2、 民航系统员工使用的销售客户端3、 航空公司内部使用的航班信息提供客户端三种客户端通过服务器间接访问数据库,故还需编写服务器。初步实践后,鉴于以下原因,本次课程设计仅实现个人订票的基本应用。1、 本人能力有限。对后两者业务经验极度缺乏,需求模糊。2、 在对三种客户端业务扩充时发现,整个应用层应是基于多个数据库的整体,民航机票销售只是其中业务逻辑的一部分,后两者客户端有其独立的数据库。对机票销售这一主体功能来说,只用到后两库中部分共享数据
3、,故对整个系统降级处理,只保证实现机票销售。故把数据合并在一个数据库中,航班、员工等信息假设以预存库中,则后两客户端可推迟实现。本次设计程序用Java+Oracle实现,3 需求分析基本目标:实现用户使用网上订票系统进行查票,登陆,订票,改签,退票等基本功能。概念设计图:用户客户端功能概述:1. 注册及登录a.注册:注册用户个人信息。b.登录:登陆后系统记录用户信息,并返回到登陆前页面。2. 管理个人信息a管理用户的个人信息,并可以修改。b. 查看用户现有的订单3. 查询a通过时间,航班号,城市等方式查询航班4订票a用户需要确认选择的机票,并确认订单。b与电子银行进行交互,并进行支付的操作。(
4、此处未完成)5. 改签a判断是否可以改签b按一定规则为用户进行改签处理,改签过程中修改订单,如有需要还需要进行相关的付款操作。6. 退票a.根据用户选择订单及公司制定相关规则进行判断,判断订单是否可退订;b.与电子银行进行交互,进行退票之后相应的转账到用户账户操作。(未实现)7. 注销a.用户可以在任何时候保存当前状态,并且安全退出。4运行效果(用例测试)运行:任意登录: 注册: 直接点击注册:重名注册:注册密码错误提示: 身份证号违反完整性约束:选择出生年月:电话和邮箱可空,但仍有完整性约束。点击注册:点击OK,自动填写刚注册用户密码,返回登录:点击OK,进入主界面:点击修改个人信息:修改密
5、码:查询机票:1按航班查询:2按城市查询:A选择城市:B选择时间:C点击查询:预定购买进入高级选项(点击对应航班的预定按钮):确认购买,若无票显示订票失败。个人购买历史:点击对应退票按钮退票:改签12号到14号:公告栏:(原设想有航空公司客户端提供如晚点等航务信息)同帐号异地再登录:退出:5程序结构上图依次为:验证码,JDBC连接ORACLE底层,日期选择扩展控件,登录界面,主界面管理,个人信息版,修改密码版,查询购买机票版,订购历史改签退票版,公告栏,注册界面,JDBC调用SQL封装,测试程序入口,机票信息类,机票购买高级选项,用户信息类,JDBC驱动。6部分源码import java.sq
6、l.*;public class ConDB public static Connection Get_Connection()Connection con = null;tryClass.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:localhost:1521:ZWKDB" String user = "welcome" String password = "1234" con = DriverManager.
7、getConnection(url, user, password);catch (Exception e)e.printStackTrace();return con;import java.sql.*;import javax.swing.JOptionPane;public class SQL Connection con = null;SQL()trycon = ConDB.Get_Connection();catch (Exception e)e.printStackTrace(); public boolean SQLinsert(String sql, Object o, int
8、 a, int b) boolean f = false; try /获取PreparedStatement对象 PreparedStatement pstmt = con.prepareStatement(sql); for(int i=a;i<b;i+) if (oi="null") pstmt.setObject(i+1, null); else pstmt.setObject(i+1,oi ); pstmt.execute(); f = true; catch(SQLException e) System.out.println(e.toString(); J
9、OptionPane.showMessageDialog(null, e.toString(),"Error",JOptionPane.ERROR_MESSAGE); return f; public ResultSet SQLquary(String sql,Object o, int a, int b) ResultSet rs=null; try PreparedStatement pstmt = con.prepareStatement(sql); for(int i=a;i<b;i+) System.out.println(oi); if (oi="
10、;null") pstmt.setObject(i+1, null); else pstmt.setObject(i+1,oi ); rs=pstmt.executeQuery(); catch(SQLException e) System.out.println(e.toString(); JOptionPane.showMessageDialog(null, e.toString(),"Error",JOptionPane.ERROR_MESSAGE); return rs; public ResultSet SQLquary(String sql) Resu
11、ltSet rs=null; try PreparedStatement pstmt = con.prepareStatement(sql); rs=pstmt.executeQuery(); catch(SQLException e) System.out.println(e.toString(); JOptionPane.showMessageDialog(null, e.toString(),"Error",JOptionPane.ERROR_MESSAGE); return rs; public int SQLupdate(String sql) /dml ddl
12、int b = 0; try /获取PreparedStatement对象 PreparedStatement pstmt = con.prepareStatement(sql); b=pstmt.executeUpdate(); catch(SQLException e) System.out.println(e.toString(); JOptionPane.showMessageDialog(null, e.toString(),"Error",JOptionPane.ERROR_MESSAGE); return b; public void close() if(c
13、on!=null) try con.close(); catch (SQLException ex) ex.printStackTrace(); JOptionPane.showMessageDialog(null, ex.toString(),"Error",JOptionPane.ERROR_MESSAGE); import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import java.sql.*;public class Log_In extends JFram
14、e implements ActionListenerprivate static final long serialVersionUID = 1L;JLabel Lname ,Lpassword, LCheck; JTextField Tname, TCheck; JPasswordField Tpassword; JPanel panel1=new JPanel(); JButton Load,login; String check;JPC jpc = new JPC();boolean b=false;public Log_In()super("登陆");Lname
15、= new JLabel("<html><body align=left><Font size=3 color=red>用户名</font></body></html>");Lpassword=new JLabel ("密 码");LCheck = new JLabel("验证码 ");Tname=new JTextField (10); Tpassword=new JPasswordField (10);TCheck = new JTextField(4);Lo
16、ad=new JButton("登陆");login=new JButton("注册");add(panel1,BorderLayout.CENTER);panel1.add(Lname);panel1.add(Tname);panel1.add(Lpassword);panel1.add(Tpassword);panel1.add(LCheck);jpc.setPreferredSize(new Dimension(60, 20);panel1.add(jpc);panel1.add(TCheck);panel1.add(Load);Load.addA
17、ctionListener(this);panel1.add(login);login.addActionListener(this);/pack();setBounds(100,100,200,160);setVisible(true);setLocationRelativeTo(null); setResizable(false);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)
18、 int res = JOptionPane.showConfirmDialog(null,"是否退出?" , "标题", JOptionPane.YES_NO_OPTION ); if(res=0) System.exit(0); ); public void actionPerformed(ActionEvent e) if (e.getSource() = Load) check = jpc.getC(); String name1 = Tname.getText().trim(); String password1 = new String(Tp
19、assword.getPassword(); SQL s = new SQL(); ResultSet rs = s.SQLquary("select una1,upas,idno from users where una1='"+name1+"'"); try if (rs.next() if(name1.equals(rs.getString(1)if (password1.equals(rs.getString(2)if (!TCheck.getText().equalsIgnoreCase(check) && !T
20、Check.getText().equals("") JOptionPane.showMessageDialog(null, "错误的验证码!", "错误",JOptionPane.ERROR_MESSAGE);jpc.refresh();check = jpc.getC(); else JOptionPane.showMessageDialog(null, "恭喜您登陆成功!", "消息", JOptionPane.INFORMATION_MESSAGE); Manager M = new M
21、anager(name1, rs.getString(3);dispose(); elseJOptionPane.showMessageDialog(null, "密码错误!", "错误",JOptionPane.ERROR_MESSAGE);Tpassword.setText("");Tpassword.requestFocus();elseJOptionPane.showMessageDialog(null, "无效用户名!", "错误",JOptionPane.ERROR_MESSAGE)
22、;Tname.setText(""); Tpassword.setText("");Tpassword.requestFocus(); catch (SQLException ee) ee.printStackTrace(); if (e.getSource() = login) this.dispose(); Register rg = new Register(); public void set(String a, String b) Tname.setText(a); Tpassword.setText(b); public static voi
23、d main(String args) Log_In f=new Log_In(); import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import java.sql.*;public class Log_In extends JFrame implements ActionListenerprivate static final long serialVersionUID = 1L;JLabel Lname ,Lpassword, LCheck; JTextField Tname,
24、TCheck; JPasswordField Tpassword; JPanel panel1=new JPanel(); JButton Load,login; String check;JPC jpc = new JPC();boolean b=false;public Log_In()super("登陆");Lname = new JLabel("<html><body align=left><Font size=3 color=red>用户名</font></body></html>&
25、quot;);Lpassword=new JLabel ("密 码");LCheck = new JLabel("验证码 ");Tname=new JTextField (10); Tpassword=new JPasswordField (10);TCheck = new JTextField(4);Load=new JButton("登陆");login=new JButton("注册");add(panel1,BorderLayout.CENTER);panel1.add(Lname);panel1.add(
26、Tname);panel1.add(Lpassword);panel1.add(Tpassword);panel1.add(LCheck);jpc.setPreferredSize(new Dimension(60, 20);panel1.add(jpc);panel1.add(TCheck);panel1.add(Load);Load.addActionListener(this);panel1.add(login);login.addActionListener(this);/pack();setBounds(100,100,200,160);setVisible(true);setLoc
27、ationRelativeTo(null); setResizable(false);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int res = JOptionPane.showConfirmDialog(null,"是否退出?" , "标题", JOptionPane.YES_NO_OPTION ); if(res=0) Syste
28、m.exit(0); ); public void actionPerformed(ActionEvent e) if (e.getSource() = Load) check = jpc.getC(); String name1 = Tname.getText().trim(); String password1 = new String(Tpassword.getPassword(); SQL s = new SQL(); ResultSet rs = s.SQLquary("select una1,upas,idno from users where una1='&qu
29、ot;+name1+"'"); try if (rs.next() if(name1.equals(rs.getString(1)if (password1.equals(rs.getString(2)if (!TCheck.getText().equalsIgnoreCase(check) && !TCheck.getText().equals("") JOptionPane.showMessageDialog(null, "错误的验证码!", "错误",JOptionPane.ERROR
30、_MESSAGE);jpc.refresh();check = jpc.getC(); else JOptionPane.showMessageDialog(null, "恭喜您登陆成功!", "消息", JOptionPane.INFORMATION_MESSAGE); Manager M = new Manager(name1, rs.getString(3);dispose(); elseJOptionPane.showMessageDialog(null, "密码错误!", "错误",JOptionPane
31、.ERROR_MESSAGE);Tpassword.setText("");Tpassword.requestFocus();elseJOptionPane.showMessageDialog(null, "无效用户名!", "错误",JOptionPane.ERROR_MESSAGE);Tname.setText(""); Tpassword.setText("");Tpassword.requestFocus(); catch (SQLException ee) ee.printStackT
32、race(); if (e.getSource() = login) this.dispose(); Register rg = new Register(); public void set(String a, String b) Tname.setText(a); Tpassword.setText(b); public static void main(String args) Log_In f=new Log_In(); import java.awt.Button;import java.awt.Dimension;import java.awt.Font;import java.a
33、wt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class P0 extends JPanel implements Actio
34、nListener private static final long serialVersionUID = 1L;JLabel JL = new JLabel7;String Lmark = "用 户 名","真实姓名","身份证号","性 别","出生年月","手 机","邮 箱"JTextField JT = new JTextField7;JButton Modi;String nam, pas;DateChooserJButton DC;P0(S
35、tring na)nam = na;for (int i=0;i<Lmark.length;+i) Font f=new Font("楷书",Font.BOLD,12);JLi = new JLabel(Lmarki,JLabel.CENTER);JLi.setFont(f);JTi = new JTextField(30);JTi.setEditable(false);add(JLi);if (i!=4) add(JTi);else DC = new DateChooserJButton();DC.setPreferredSize(new Dimension(330
36、, 15);DC.setEnabled(false);add(DC);JT0.setText(na);Modi = new JButton("修 改");Modi.addActionListener(this);add(Modi);present();public void actionPerformed(ActionEvent e) if (e.getActionCommand() = "修 改") Modi.setText("提 交"); for (int i=1;i<Lmark.length;+i) if (i!=4) J
37、Ti.setEditable(true); elseDC.setEnabled(true); else Modi.setText("修 改"); for (int i=1;i<Lmark.length;+i) if (i!=4) JTi.setEditable(false); else DC.setEnabled(false); SQL s = new SQL(); String up = "update users set " int x; x = s.SQLupdate(up+"una2='"+JT1.getText
38、()+"'where una1='"+nam+"'"); x += s.SQLupdate(up+"idno="+JT2.getText()+"where una1='"+nam+"'"); x += s.SQLupdate(up+"usex='"+JT3.getText()+"'where una1='"+nam+"'"); x += s.SQLupdate(up
39、+"ubirth=to_date('"+DC.getText()+"','yyyy-mm-dd') where una1='"+nam+"'"); x += s.SQLupdate(up+"utel="+JT5.getText()+"where una1='"+nam+"'"); x += s.SQLupdate(up+"umes='"+JT6.getText()+"'where una1='"+nam+"'&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论