版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
保存計算過程的計算器設計數(shù)據(jù)庫課程實訓(2017)PAGE20PAGE1數(shù)據(jù)庫課程實訓報告題目:車輛租賃管理系統(tǒng)車輛租賃管理系統(tǒng)PAGE1租賃車輛租賃管理系統(tǒng)目錄TOC\o"1-5"\h\z\u目錄 21課題內(nèi)容和要求 11.1課題描述 11.2課題要求 12需求分析 22.1功能需求分析 23系統(tǒng)設計 33.1功能模塊設計 33.3數(shù)據(jù)庫邏輯設計 53.4數(shù)據(jù)庫物理設計 63.5數(shù)據(jù)庫表間聯(lián)系 74系統(tǒng)實現(xiàn) 74.1登陸界面模塊實現(xiàn) 74.2司機信息模塊實現(xiàn) 84.3客戶租車信息模塊實現(xiàn) 95代碼調(diào)試與功能測試 105.1測試方案 105.2測試結(jié)果 106收獲與體會 15參考文獻 16附錄 17附錄1源程序部分清單 17附錄1.1登陸代碼 17附錄1.2添加信息代碼 19附錄1.3修改信息代碼 19附錄1.4刪除信息代碼 21PAGE19汽車租賃管理系統(tǒng)1課題內(nèi)容和要求1.1課題描述因為客戶只能親自到汽車租賃公司去注冊或租賃車輛,因而,兩者權限分配如下:汽車公司方面:能夠?qū)囕v,租賃信息和用戶信息進行管理。超級管理員還可以對公司內(nèi)部人員的信息進行管理客戶方面:只能瀏覽車輛信息和個人用戶信息及個人租賃信息。1.2課題要求基本功能要求:可以對汽車基本信息進行增加、刪除、修改可以對租賃客戶信息進行增加、刪除、修改可以實現(xiàn)汽車的租借、歸還、續(xù)借可以按重要字段查詢汽車、客戶等基本信息可以實現(xiàn)租賃金額的計算可以查詢汽車、客戶租賃歷史記錄2需求分析2.1功能需求分析不同權限的用戶登錄不同權限的用戶登錄超級管理員內(nèi)部人員管理客戶信息管理車輛信息管理普通管理員客戶信息管理車輛信息管理客戶個人信息瀏覽車輛信息瀏覽租車信息瀏覽財務信息管理財務信息管理圖2.1.1總體功能設計模塊2.2數(shù)據(jù)需求分析2.2.1管理員{使用系統(tǒng)的人}管理員(loginButton1)=身份證號+姓名+住址+登陸密碼2.2.2客戶{租車的人}客戶(loginButton2)=身份證號+姓名+年齡+地址+電話+登陸密碼2.2.3車輛信息車輛信息(carinformation)=車輛名稱+車輛類型+購買時間+車輛狀況+租金標準+租車起始時間+租期2.2.4司機信息{被雇傭的司機}司機信息(driver)=身份證號+姓名+年齡+地址+電話+駕駛證書管理員管理員客戶新增客戶個人信息用戶信息文件車輛新增交易車輛信息交易信息文件個人信息新增車輛車輛信息文件新增管理員內(nèi)部人員管理人員信息文件圖2.2.5數(shù)據(jù)流圖3系統(tǒng)設計3.1功能模塊設計管理員信息模塊:管理員相關信息,包括身份證號、姓名、年齡、地址、電話、登陸密碼相關信息,主要負責刪除修改信息。車輛信息模塊:包括車輛類型、車輛名稱、購買時間、車輛狀況、租憑、租金標準等可查詢車輛類型、名稱、購買時間、狀況、租金標準等,并且可根據(jù)需要增加、刪除、修改車輛的基本信息,還可根據(jù)車輛類型和車輛情況進行條件查詢??蛻粜畔⒛K:身份證號、姓名、年齡、地址、電話等。司機信息模塊:身份證號、姓名、年齡、地址、電話、駕駛證書等。租金查詢模塊:車輛的租金和出租時間情況。3.2數(shù)據(jù)庫概念設計管理員信息管理員信息身份證號姓名電話住址登陸密碼圖3.2.1管理員信息購買購買時間車輛狀況車輛車輛狀況車輛類型車輛名稱車輛名稱租車時間租車時間租金標準租金標準租賃狀況車輛信息租賃狀況車輛信息圖3.2.2車輛信息客戶信息客戶信息身份證號姓名電話住址登陸密碼圖3.2.3客戶信息司機信息司機信息身份證號姓名電話住址登陸密碼圖3.2.4司機信息管理員管理員管理管理管理管理管理管理租賃駕駛租賃駕駛客戶車輛司機客戶車輛司機圖3.2.5ER關系圖管理員管理員管理車輛車輛租用車輛客戶1N管理用戶工號用戶名類型密碼編號類型狀態(tài)起租時間單價租用時間編號客戶編號車輛編號經(jīng)手人員起租時間押金租用時間返回金額狀態(tài)證件號用戶名會員類型密碼MNnm信譽度圖3.2.6全局E-R圖3.3數(shù)據(jù)庫邏輯設計管理員(身份證號,姓名,電話,住址,登陸密碼)司機(身份證號,姓名,年齡,地址,電話,駕駛證書)車輛(車輛名稱,車輛類型,購買時間,車輛狀況,租金標準,租金起始時間,租期)客戶(身份證號,姓名,電話,住址,登陸密碼)3.4數(shù)據(jù)庫物理設計表3.4.1adminMessage(管理員信息表)字段名稱數(shù)據(jù)類型字段大小姓名Varchar50電話Varchar50住址Varchar50身份證Varchar50登錄密碼Varchar50表3.4.2carMessage(車輛信息表)字段名稱數(shù)據(jù)類型字段大小車輛名車Varchar50購買時間Varchar50車輛狀況Varchar50租金標準Varchar50租期起始時間Varchar50租期Varchar50表3.4.3userMessage(客戶信息表)字段名稱數(shù)據(jù)類型字段大小身份證Varchar50姓名Varchar50年齡Varchar50地址Varchar50電話Varchar50登錄密碼Varchar50表3.4.4driverMessage(司機信息表)字段名稱數(shù)據(jù)類型字段大小身份證varchar50姓名varchar50年齡varchar50地址varchar50電話varchar50駕駛證書varchar503.5數(shù)據(jù)庫表間聯(lián)系圖3.5.1數(shù)據(jù)表間聯(lián)系4系統(tǒng)實現(xiàn)4.1登陸界面模塊實現(xiàn)圖4.1.1登錄界面本界面采用Flowlayout流式布局,其中通過JFrameframe=newJFrame("車輛租賃管理系統(tǒng)")給界面添加標題“車輛租賃管理系統(tǒng)”,通過newJlable來添加兩個標簽用戶名和密碼,通過label1.setFont(newjava.awt.Font("微軟雅黑",0,16));給輸入的字體建立長度大小和格式,通過newJButton建立3個按鈕分別是管理員登陸、客戶登陸和退出,通過newJTextField分別給用戶名和密碼增加文本區(qū),對于3個按鈕通過采用newImageIcon給按鈕增加圖標,使用戶更加清晰的辨認按鈕,增加背景圖片,使登陸界面更加美觀。本界面采用ActionListener接口,ActionListener用于接收操作事件的偵聽器接口。對處理操作事件感興趣的類可以實現(xiàn)此接口,而使用該類創(chuàng)建的對象可使用組件的addActionListener方法向該組件注冊。在發(fā)生操作事件時,調(diào)用該對象的actionPerformed方法。本界面采用actionPerformed方法調(diào)用的ActionEvente事件監(jiān)聽器來處理單擊鼠標時發(fā)生的事件。本界面采用getText()函數(shù):返回數(shù)據(jù)窗口控件中懸浮在當前行列之上的編輯框中的文本。在用戶修改數(shù)據(jù)窗口中某項的值時,實際上首先在懸浮在當前項上的編輯框中進行修改,當用戶移動輸入焦點或程序中使用AcceptText()函數(shù)接收用戶輸入時,用戶修改的數(shù)據(jù)通過if((username.getText().equals("***")==true)&&(password.getText().equals("***")==true)來驗證用戶名密碼是否正確,如果正確,則成功進入下一個界面,如果失敗會在屏幕上顯示登陸失敗。4.2司機信息模塊實現(xiàn)圖4.2.1司機信息本界面使用的Flowlayout流式布局,其中通過JFrameframe=newJFrame("司機信息")給界面添加標題“司機信息”,添加6個按鈕分別是添加、修改、刪除、查詢所有、查詢個人信息、返回,使用Jlable6個標簽身份證號、姓名、年齡、地址、電話。本界面采用ActionListener接口,ActionListener用于接收操作事件的偵聽器接口。對處理操作事件感興趣的類可以實現(xiàn)此接口,而使用該類創(chuàng)建的對象可使用組件的addActionListener方法向該組件注冊。在發(fā)生操作事件時,調(diào)用該對象的actionPerformed方法。本界面采用actionPerformed方法調(diào)用的ActionEvente事件監(jiān)聽器來處理單擊鼠標時發(fā)生的事件。本界面采用getText()函數(shù):返回數(shù)據(jù)窗口控件中懸浮在當前行列之上的編輯框中的文本。在用戶修改數(shù)據(jù)窗口中某項的值時,實際上首先在懸浮在當前項上的編輯框中進行修改,當用戶移動輸入焦點或程序中使用AcceptText()函數(shù)接收用戶輸入時,用戶修改的數(shù)據(jù)通過if((username.getText().equals("***")==true)&&(password.getText().equals("***")==true)來驗證用戶名密碼是否正確,如果正確,則成功進入下一個界面,如果失敗會在屏幕上顯示登陸失敗。數(shù)據(jù)庫連接:其中采用Connectioncon對象進行連接數(shù)據(jù)庫con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=bl","sa","123456");連接的數(shù)據(jù)庫名為bl,用戶名為sa,密碼為123456.數(shù)據(jù)庫連接之前要進行一系列配置,例如系統(tǒng)程序功能中的啟動Telnet客戶端,將SQL配置管理器的TCP/IP啟用,到之后的環(huán)境變量的配置,直至連接完成。刪除功能:利用getText()采集用戶所輸入的字符,然后再利用sql語句SELECT*FROM司機信息orderby身份證號desc,進行刪除,如果輸入字符是數(shù)據(jù)庫里存在的列名且相等的話則顯示刪除成功,如果不存在或不相等的話則顯示刪除失敗,如果用戶沒有輸入的話,用getText().compareTo("")==0)進行比對,如果等于0則表示用戶沒輸入字符,提示:請輸入“***”。添加,修改功能和刪除功能類似。4.3客戶租車信息模塊實現(xiàn)圖4.3.1客戶租車信息模塊實現(xiàn)本界面采用Flowlayout流式布局,其中通過JFrameframe=newJFrame("客戶租車")給界面添加標題“客戶租車”,采用JComboBox組件以及scrollpane下拉框,添加司機信息、租賃車輛、租賃、雇傭司機、注銷等按鈕,其中添加復選框日租和月租。數(shù)據(jù)庫連接同司機信息模塊。本模塊可實現(xiàn)客戶進行雇傭司機和租車。5代碼調(diào)試與功能測試5.1測試方案通過程序登陸窗口登陸進入界面對司機信息、客戶信息、車輛信息、租金信息進行修改、刪除等操作5.2測試結(jié)果圖5.2.1登陸界面圖5.2.2系統(tǒng)界面圖5.2.3車輛信息界面圖5.2.4客戶信息界面圖5.2.5司機信息界面圖5.2.6租金信息界面圖5.2.7系統(tǒng)統(tǒng)計界面圖5.2.8客戶租車界面圖5.2.9刪除信息界面圖5.2.10刪除界面6收獲與體會兩周的時間很快就過去了,這兩周我不敢說自己有多大的進步,獲得多少知識,但起碼了解了項目開發(fā)的部分過程。雖說上過數(shù)據(jù)庫相關的課程,但是沒有親身經(jīng)歷相關的設計工作細節(jié)。這次課程設計給我提供了一個很好的機會。通過這次課程設計發(fā)現(xiàn)這其中需要的很多知識我們沒有接觸過,上網(wǎng)查找資料的時候發(fā)現(xiàn)我們學習過的都只是皮毛。這次實驗讓我明白了不管做什么事情,不要畏懼,不要怕遇到困難。參考文獻[1]錢雪忠,王燕玲,林挺.數(shù)據(jù)庫原理及技術[M].北京:清華大學出版社,2011.[2]錢雪忠,羅海馳,陳國俊.數(shù)據(jù)庫原理及技術課程設計[M].北京:清華大學出版社,2014.[3]高飛,陸佳煒,徐俊,趙小敏.Java程序設計實用教程[M].北京:清華大學出版社.2013.[4]王珊,薩師道.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2006.[5]劉金嶺,馮萬利.數(shù)據(jù)庫系統(tǒng)及應用教程[M].北京:清華大學出版社,2013.[6]劉金嶺,馮萬利,周泓.數(shù)據(jù)庫系統(tǒng)及應用實驗與課程設計指導[M].北京:清華大學出版社,2013.
附錄附錄1源程序部分清單附錄1.1登陸代碼importjava.awt.event.ActionListener;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Vector;importjavax.swing.*;publicclassdlimplementsActionListener{ JFrameframe=newJFrame("車輛租賃管理系統(tǒng)"); JLabellabel1=newJLabel("用戶名"); JLabellabel2=newJLabel("密碼"); ImageIconjbi1=newImageIcon("image/admin.png"); ImageIconjbi2=newImageIcon("image/admin2.png"); ImageIconjbi3=newImageIcon("image/quit.png"); JButtonloginButton1=newJButton("管理員登陸",jbi1); JButtonloginButton2=newJButton("客戶登陸",jbi2); JButtoncancelButton=newJButton("退出",jbi3); JTextFieldt1=newJTextField(0); JTextFieldt2=newJTextField(0); ImageIconim=newImageIcon("image/10.jpg"); JLabela2=newJLabel(im); JTextFieldusername=newJTextField(9); JPasswordFieldpassword=newJPasswordField(9);voidcreate(){ JPanelp=(JPanel)frame.getContentPane(); JPanelp1=newJPanel(); p.setLayout(newFlowLayout()); p.add(label1);/*用戶名*/ label1.setFont(newjava.awt.Font("微軟雅黑",0,16)); p.setSize(5,5); p.setLocation(4,8); p.add(username); username.setFont(newjava.awt.Font("微軟雅黑",0,14)); System.out.println("\n"); p.setSize(100,200); p.setLocation(800,800); p.add(label2);/*密碼*/ label2.setFont(newjava.awt.Font("微軟雅黑",0,16)); p.setSize(50,20); p.setLocation(60,80); p.add(password); p.setSize(100,20); p.setLocation(80,120); loginButton1.setFont(newjava.awt.Font("微軟雅黑",0,14)); p.add(newJLabel("")); p.add(newJLabel("")); p.add(loginButton1);/*管理員登陸*/ loginButton2.setFont(newjava.awt.Font("微軟雅黑",0,14)); p.add(loginButton2);/*客戶登陸*/ p.add(cancelButton);/*退出*/ cancelButton.setFont(newjava.awt.Font("微軟雅黑",0,14)); //p.add(t1); //p.add(t2); p.setBackground(newjava.awt.Color(255,255,255)); p.add(a2); { p.add(newJLabel("")); } //p.setBackground(Color.red); p.setVisible(true); loginButton1.addActionListener(this); loginButton2.addActionListener(this); cancelButton.addActionListener(this); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); Toolkittoolkit=Toolkit.getDefaultToolkit(); Dimensiond=toolkit.getScreenSize(); frame.setBounds(d.width/2-375,d.height/2-225,750,450); //frame.setBounds(200,100,750,550); frame.setVisible(true); }publicstaticvoidmain(String[]args){ dldome=newdl(); dome.create();}publicvoidactionPerformed(ActionEvente){ if(cancelButton.equals(e.getSource())){ System.exit(0); } if(loginButton1.equals(e.getSource())){ if((username.getText().equals(*)==true)&&(password.getText().equals("123")==true)){ ZJMgz=newZJM(); gz.create(); frame.setVisible(false); } else JOptionPane.showMessageDialog(null,"登錄失敗!"); } if(loginButton2.equals(e.getSource())){ System.out.print("123123"); if((username.getText().equals("121")==true)&&(password.getText().equals("123")==true)){ KHZCgz=newKHZC(); gz.create(); frame.setVisible(false); } else JOptionPane.showMessageDialog(null,"登錄失敗!"); } }}附錄1.2添加信息代碼publicvoidactionPerformed(ActionEvente){ if(b1.equals(e.getSource())){//添加 Connectioncon; Statementsql; ResultSetrs; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); }catch(ClassNotFoundExceptione1){ System.out.println(""+e1); } try{ con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=bl","sa","123456"); sql=con.createStatement(); StringinsertStr="INSERTINTO車輛信息VALUES"+"("+tf1.getText()+","+tf2.getText()+","+tf3.getText()+","+"'"+tf4.getText()+"'"+","+tf5.getText()+","+null+","+null+")"; if(!sql.execute(insertStr)){ JOptionPane.showMessageDialog(null,"錄入成功!"); tf1.setText(null); tf2.setText(null); tf3.setText(null); tf4.setText(null); tf6.setText(null); }con.close(); }catch(SQLExceptione1){ JOptionPane.showMessageDialog(null,"錄入失敗!"); System.out.println(e1); } }附錄1.3修改信息代碼if(b2.equals(e.getSource())){ Connectioncon; Statementsql; ResultSetrs; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); }catch(ClassNotFoundExceptione1){ System.out.println(""+e1); } try{ con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=bl","sa","123456"); sql=con.createStatement(); bl.ud=false; Stringx=tf1.getText(); x.replace("",""); if(tf2.getText().compareTo("")!=0&&tf1.getText().compareTo("")!=0){ bl.ud=true; if(sql.executeUpdate("UPDATE車輛信息SET車輛類型="+tf2.getText()+"WHERE車輛名稱="+x+"")!=1) bl.ud=false; } if(tf3.getText().compareTo("")!=0&&tf1.getText().compareTo("")!=0){ bl.ud=true; if(sql.executeUpdate("UPDATE車輛信息SET購買時間="+"'"+tf3.getText()+"'"+"WHERE車輛名稱="+x+"")!=1) bl.ud=false; } if(tf4.getText().compareTo("")!=0&&tf1.getText().compareTo("")!=0){ bl.ud=true; if(sql.executeUpdate("UPDATE車輛信息SET車輛狀況="+tf4.getText()+"WHERE車輛名稱="+x+"")!=1) bl.ud=false; } if(tf5.getText().compareTo("")!=0&&tf1.getText().compareTo("")!=0){ bl.ud=true; if(sql.executeUpdate("UPDATE車輛信息SET租金標準="+tf5.getText()+"WHERE車輛名稱="+x+"")!=1) bl.ud=false; } if((tf2.getText().compareTo("")==0&&tf3.getText().compareTo("")==0&&tf4.getText().compareTo("")==0&&tf5.getText().compareTo("")==0)&&tf1.getText().compareTo("")!=0) JOptionPane.showMessageDialog(null,"數(shù)據(jù)有誤或沒填寫更新所需數(shù)據(jù)!"); if(bl.ud&&tf1.getText().compareTo("")!=0){ JOptionPane.showMessageDialog(null,"修改成功!"); tf1.setText(null); tf2.setText(null); tf3.setText(null); tf4.setText(null); tf6.setText(null); }con.close();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州江蘇蘇州工業(yè)園區(qū)新加花園幼兒園教學輔助人員招聘筆試歷年參考題庫附帶答案詳解
- 2025年蝸殼項目可行性研究報告
- 2025年帶儲柜書架項目可行性研究報告
- 2025至2031年中國中筋粉行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國黃銅外螺紋格林接頭數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年餐飲、娛樂用家具項目投資價值分析報告
- 2025至2030年金屬園藝品項目投資價值分析報告
- 2025至2030年單層包紙機項目投資價值分析報告
- 專業(yè)服務機構(gòu)委托代理合同
- 木門購銷合同
- 急性腎小球腎炎病人護理課件
- 招標代理服務的關鍵流程與難點解析
- GB/T 5465.2-2023電氣設備用圖形符號第2部分:圖形符號
- 《三國演義》中的佛教文化:以黃承兒為例
- 材料預定協(xié)議
- 《學習的本質(zhì)》讀書會活動
- 高氨血癥護理課件
- 《石油化工電氣自動化系統(tǒng)設計規(guī)范》
- Q-GGW-BF-0117-2023天然氣管道無人站技術規(guī)范
- 新教科版三年級下冊科學 第二單元重點題型練習課件
- 寧夏回族自治區(qū)地圖矢量動態(tài)PPT模板(圖文)
評論
0/150
提交評論