數(shù)據(jù)庫課程設(shè)計(jì)民航售票系統(tǒng)_第1頁
數(shù)據(jù)庫課程設(shè)計(jì)民航售票系統(tǒng)_第2頁
數(shù)據(jù)庫課程設(shè)計(jì)民航售票系統(tǒng)_第3頁
數(shù)據(jù)庫課程設(shè)計(jì)民航售票系統(tǒng)_第4頁
數(shù)據(jù)庫課程設(shè)計(jì)民航售票系統(tǒng)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、僅供參考計(jì)算機(jī)與信息學(xué)院數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告專 業(yè) 班 級信息安全11-1班學(xué)生姓名及學(xué)號周偉康課程教學(xué)班號任 課 教 師沈明玉實(shí)驗(yàn)指導(dǎo)教師鄭淑麗實(shí)驗(yàn)地點(diǎn)第三機(jī)房2012 2013 學(xué)年第 三 學(xué)期民航機(jī)票銷售系統(tǒng)設(shè)計(jì)目錄1課程設(shè)計(jì)目的12課程設(shè)計(jì)描述23需求分析34. 用例測試45. 程序結(jié)構(gòu)56. 部分源碼67. 總結(jié)71課程設(shè)計(jì)目的模擬實(shí)現(xiàn)一個(gè)現(xiàn)實(shí)生活所需的數(shù)據(jù)庫系統(tǒng),結(jié)合多門相關(guān)課程內(nèi)容,把理論運(yùn)用到實(shí)踐中去,提高知識的理解深度,技能的熟練程度。為將來向社會貢獻(xiàn)有用的產(chǎn)品打下基礎(chǔ)。2 課程設(shè)計(jì)描述本次課程設(shè)計(jì)的課題是設(shè)計(jì)一個(gè)民航機(jī)票銷售數(shù)據(jù)庫系統(tǒng),來模擬民航機(jī)票預(yù)訂和銷售系統(tǒng)。本人在小組

2、中負(fù)責(zé)所有應(yīng)用程序設(shè)計(jì)部分并參與數(shù)據(jù)庫建設(shè)的討論,適當(dāng)提出建議。初步考慮,針對現(xiàn)實(shí)用戶的不同角色需求,計(jì)劃開發(fā)3種客戶端。1、 普通用戶個(gè)人使用的訂票客戶端2、 民航系統(tǒng)員工使用的銷售客戶端3、 航空公司內(nèi)部使用的航班信息提供客戶端三種客戶端通過服務(wù)器間接訪問數(shù)據(jù)庫,故還需編寫服務(wù)器。初步實(shí)踐后,鑒于以下原因,本次課程設(shè)計(jì)僅實(shí)現(xiàn)個(gè)人訂票的基本應(yīng)用。1、 本人能力有限。對后兩者業(yè)務(wù)經(jīng)驗(yàn)極度缺乏,需求模糊。2、 在對三種客戶端業(yè)務(wù)擴(kuò)充時(shí)發(fā)現(xiàn),整個(gè)應(yīng)用層應(yīng)是基于多個(gè)數(shù)據(jù)庫的整體,民航機(jī)票銷售只是其中業(yè)務(wù)邏輯的一部分,后兩者客戶端有其獨(dú)立的數(shù)據(jù)庫。對機(jī)票銷售這一主體功能來說,只用到后兩庫中部分共享數(shù)據(jù)

3、,故對整個(gè)系統(tǒng)降級處理,只保證實(shí)現(xiàn)機(jī)票銷售。故把數(shù)據(jù)合并在一個(gè)數(shù)據(jù)庫中,航班、員工等信息假設(shè)以預(yù)存庫中,則后兩客戶端可推遲實(shí)現(xiàn)。本次設(shè)計(jì)程序用Java+Oracle實(shí)現(xiàn),3 需求分析基本目標(biāo):實(shí)現(xiàn)用戶使用網(wǎng)上訂票系統(tǒng)進(jìn)行查票,登陸,訂票,改簽,退票等基本功能。概念設(shè)計(jì)圖:用戶客戶端功能概述:1. 注冊及登錄a.注冊:注冊用戶個(gè)人信息。b.登錄:登陸后系統(tǒng)記錄用戶信息,并返回到登陸前頁面。2. 管理個(gè)人信息a管理用戶的個(gè)人信息,并可以修改。b. 查看用戶現(xiàn)有的訂單3. 查詢a通過時(shí)間,航班號,城市等方式查詢航班4訂票a用戶需要確認(rèn)選擇的機(jī)票,并確認(rèn)訂單。b與電子銀行進(jìn)行交互,并進(jìn)行支付的操作。(

4、此處未完成)5. 改簽a判斷是否可以改簽b按一定規(guī)則為用戶進(jìn)行改簽處理,改簽過程中修改訂單,如有需要還需要進(jìn)行相關(guān)的付款操作。6. 退票a.根據(jù)用戶選擇訂單及公司制定相關(guān)規(guī)則進(jìn)行判斷,判斷訂單是否可退訂;b.與電子銀行進(jìn)行交互,進(jìn)行退票之后相應(yīng)的轉(zhuǎn)賬到用戶賬戶操作。(未實(shí)現(xiàn))7. 注銷a.用戶可以在任何時(shí)候保存當(dāng)前狀態(tài),并且安全退出。4運(yùn)行效果(用例測試)運(yùn)行:任意登錄: 注冊: 直接點(diǎn)擊注冊:重名注冊:注冊密碼錯(cuò)誤提示: 身份證號違反完整性約束:選擇出生年月:電話和郵箱可空,但仍有完整性約束。點(diǎn)擊注冊:點(diǎn)擊OK,自動填寫剛注冊用戶密碼,返回登錄:點(diǎn)擊OK,進(jìn)入主界面:點(diǎn)擊修改個(gè)人信息:修改密

5、碼:查詢機(jī)票:1按航班查詢:2按城市查詢:A選擇城市:B選擇時(shí)間:C點(diǎn)擊查詢:預(yù)定購買進(jìn)入高級選項(xiàng)(點(diǎn)擊對應(yīng)航班的預(yù)定按鈕):確認(rèn)購買,若無票顯示訂票失敗。個(gè)人購買歷史:點(diǎn)擊對應(yīng)退票按鈕退票:改簽12號到14號:公告欄:(原設(shè)想有航空公司客戶端提供如晚點(diǎn)等航務(wù)信息)同帳號異地再登錄:退出:5程序結(jié)構(gòu)上圖依次為:驗(yàn)證碼,JDBC連接ORACLE底層,日期選擇擴(kuò)展控件,登錄界面,主界面管理,個(gè)人信息版,修改密碼版,查詢購買機(jī)票版,訂購歷史改簽退票版,公告欄,注冊界面,JDBC調(diào)用SQL封裝,測試程序入口,機(jī)票信息類,機(jī)票購買高級選項(xiàng),用戶信息類,JDBC驅(qū)動。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("驗(yàn)證碼 ");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,"是否退出?" , "標(biāo)題", 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, "錯(cuò)誤的驗(yàn)證碼!", "錯(cuò)誤",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, "密碼錯(cuò)誤!", "錯(cuò)誤",JOptionPane.ERROR_MESSAGE);Tpassword.setText("");Tpassword.requestFocus();elseJOptionPane.showMessageDialog(null, "無效用戶名!", "錯(cuò)誤",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("驗(yàn)證碼 ");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,"是否退出?" , "標(biāo)題", 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, "錯(cuò)誤的驗(yàn)證碼!", "錯(cuò)誤",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, "密碼錯(cuò)誤!", "錯(cuò)誤",JOptionPane

31、.ERROR_MESSAGE);Tpassword.setText("");Tpassword.requestFocus();elseJOptionPane.showMessageDialog(null, "無效用戶名!", "錯(cuò)誤",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 = "用 戶 名","真實(shí)姓名","身份證號","性 別","出生年月","手 機(jī)","郵 箱"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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論