數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告(汽車租賃管理系統(tǒng)).doc_第1頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告(汽車租賃管理系統(tǒng)).doc_第2頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告(汽車租賃管理系統(tǒng)).doc_第3頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告(汽車租賃管理系統(tǒng)).doc_第4頁
數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告(汽車租賃管理系統(tǒng)).doc_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一 系統(tǒng)簡(jiǎn)介 本系統(tǒng)為汽車租賃系統(tǒng),采用B/S實(shí)現(xiàn)??梢詫?shí)現(xiàn)不同權(quán)限的瀏覽和管理。管理員可以用于汽車租賃公司對(duì)汽車租賃事務(wù)的管理,包括新增、刪除車輛記錄,新增、刪除用戶記錄,新增、刪除租賃信息記錄,新增、刪除管理人員記錄以及會(huì)員設(shè)置,客戶則可以瀏覽車輛信息和個(gè)人的租車信息。 主要技術(shù):jsp運(yùn)行環(huán)境:winows os+apache tomcat5.5+sql server 2005+jdk1.6開發(fā)軟件:myeclipse6.0.1開源軟件:jxl.jar,sqljdbc4.jar二 數(shù)據(jù)庫設(shè)計(jì)1. 需求分析因?yàn)榭蛻糁荒苡H自到汽車租賃公司去注冊(cè)或租賃車輛,因而,兩者權(quán)限分配如下:汽車公司方面:能夠?qū)囕v,租賃信息和用戶信息進(jìn)行管理。超級(jí)管理員還可以對(duì)公司內(nèi)部人員的信息進(jìn)行管理客戶方面:只能瀏覽車輛信息和個(gè)人用戶信息及個(gè)人租賃信息。數(shù)據(jù)流圖如下: 管理員客戶新增客戶個(gè)人信息用戶信息文件車輛新增交易車輛信息交易信息文件個(gè)人信息新增車輛車輛信息文件新增管理員內(nèi)部人員管理人員信息文件2. 概念設(shè)計(jì)ER圖如下所示: 管理員管理車輛車輛租用車輛客 戶1N管理用戶工號(hào)用戶名類型密碼編號(hào)類型狀態(tài)起租時(shí)間單價(jià)租用時(shí)間編號(hào)客戶編號(hào)車輛編號(hào)經(jīng)手人員起租時(shí)間押金租用時(shí)間返回金額狀態(tài)證件號(hào)用戶名會(huì)員類型密碼MNnm信譽(yù)度3. 邏輯設(shè)計(jì)建表語句如下:用戶表:/后為各字段意義聲明create table userinfo( pid varchar(8) primary key, /用戶證件號(hào) username varchar(8), /用戶名 isvip int, /用戶類型,是否為會(huì)員 xingyu int, /信譽(yù)度,滿分100。 password varchar(8) /用戶登錄密碼);管理員表:create table manager( wid varchar(8) primary key, /管理員工號(hào) type int, /類型,超級(jí)管理員(部門經(jīng)理等)和普通管理員 username varchar(8), /管理員用戶名 password varchar(8) /管理員密碼);車輛表:create table taxi( tid varchar(8) primary key,/車輛編號(hào) type varchar(8), /車輛類型 state varchar(8), /車輛狀態(tài),是否可租 wid varchar(8), / year int, /起租年月日 month int, day int, time int, detailinfo text, /車輛詳細(xì)信息 pay int /租用單價(jià));租車信息表create table rentinfo( rid int identity(1,1) primary key, /交易編號(hào) wid varchar(8), /經(jīng)手人員 pid varchar(8), /客戶證件號(hào) tid varchar(8),/ 車輛號(hào)碼 yajin int, /押金 backmoney int, /返還金額 pay int,/單價(jià) broken varchar(8),/破壞情況 outyear int,/結(jié)束交易時(shí)間 outmonth int, outday int, time int,/實(shí)際使用時(shí)間 state varchar(8)/交易狀態(tài) );-設(shè)置外鍵BEGIN TRANSACTIONalter table dbo.rentinfo add constraint FK_rentinfo_tidforeign key (tid)references dbo.taxi(tid) alter table dbo.rentinfo add constraint FK_rentinfo_pidforeign key (pid)references dbo.userinfo(pid) alter table dbo.rentinfo add constraint FK_rentinfo_widforeign key (wid)references dbo.manager(wid) COMMIT TRANSACTION4. 數(shù)據(jù)庫建立與備份,恢復(fù)在sql server 2005 建立一個(gè)數(shù)據(jù)庫,名稱為hello,執(zhí)行以上建表語句即可?;蛘邔ello.mdf,hello_log.ldf文件恢復(fù)。sp_attach_db hello, C:Program FilesMicrosoft SQL ServerMSSQLDatahello.mdf, C:Program FilesMicrosoft SQL ServerMSSQLDatahello_log.ldf sp_attach_single_file_db hello,C:Program FilesMicrosoft SQL ServerMSSQLDatahello.mdf備份:將hello數(shù)據(jù)庫備份成hello.bak文件三 框架實(shí)現(xiàn) 系統(tǒng)總體框架實(shí)現(xiàn)如下圖所示: 不同權(quán)限的用戶登錄超級(jí)管理員內(nèi)部人員管理客戶信息管理車輛信息管理普通管理員客戶信息管理車輛信息管理客戶個(gè)人信息瀏覽車輛信息瀏覽租車信息瀏覽財(cái)務(wù)信息管理財(cái)務(wù)信息管理以下是各模塊的子功能截圖:登錄模塊截圖: 超級(jí)管理員頁面截圖:普通管理員頁面截圖:?jiǎn)T工信息管理頁面截圖:?jiǎn)T工 信息管理(單表查詢)員工業(yè)績(jī)查詢(多表查詢)增加員工(單表插入數(shù)據(jù))修改個(gè)人密碼客戶信息管理:交易信息查詢(多表查詢)客戶信息查詢車輛信息管理:新增車輛信息車輛信息查詢財(cái)務(wù)信息查詢:數(shù)據(jù)操作實(shí)現(xiàn)方法: 定義一個(gè)類DataManager,在每個(gè)jsp頁面中實(shí)例化這個(gè)類,并調(diào)用它的某個(gè)方法,完成數(shù)據(jù)庫的連接,數(shù)據(jù)查詢,刪除,及修改操作。程序示例:如check.jsp里面可以驗(yàn)證用戶登錄信息,并轉(zhuǎn)向不同頁面。DataManager dm = new DataManager();/實(shí)例化DataManager類ResultSet rs = null;if (type = 1) /如果是以客戶身份登錄String sql = select * from userinfo where username= + username+ + and password = + password + ;rs = dm.getResult(sql);/由用戶名和密碼獲取記錄if (rs.next() /如果記錄不為空,表明該客戶存在String pid = rs.getString(pid);/保存該用戶信息session.setAttribute(type, 1);session.setAttribute(pid, pid);session.setAttribute(username, username);response.sendRedirect(user.jsp);/轉(zhuǎn)向客戶頁面 else /轉(zhuǎn)向管理員頁面,以下與上面if語句類似。String sql = select * from manager where username=+ username + + and password = + password+ and type =+type;System.out.println(sql);rs = dm.getResult(sql);if (rs.next() String wid = rs.getString(wid);session.setAttribute(type, t);session.setAttribute(wid, wid);session.setAttribute(username, username);response.sendRedirect(manager.jsp);此外,系統(tǒng)具有良好的安全性,對(duì)每個(gè)頁面都有良好的保護(hù)措施,如manashare.jsp,usershar.jsp,通過session驗(yàn)證用戶有無權(quán)限進(jìn)入該頁面,否則跳轉(zhuǎn)到login.jsp頁面,重新登錄。四 程序設(shè)計(jì) 1.含有表單的jsp頁面可以通過設(shè)置隱藏域的值來提交到本頁面,其程序流程如下:開始獲得隱藏域變量的值為空?表單的填寫跳轉(zhuǎn)到本頁顯示表單提交結(jié)果結(jié)束YN2.財(cái)務(wù)管理中有個(gè)導(dǎo)出execl報(bào)表的功能,其實(shí)現(xiàn)如下: 從網(wǎng)上下載一個(gè)jxl.jar包,該jar包支持生成execl文件的操作,然后建立一個(gè)專門的類,用于生成execl,該類源碼如下:package my.pkgs;import java.io.*; import jxl.*; /jxl.jar里面的類庫import jxl.write.*; import java.sql.*;public class CreateXLS public String create(ResultSet rs,String filename) tryFile f = new File(filename);boolean exist = f.exists();WritableWorkbook book = Workbook.createWorkbook(new File(filename);/生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁 WritableSheet sheet = book.createSheet(第一頁, 0);/在Label對(duì)象的構(gòu)造子中指名單元格位置是第一列第一行(0,0) /以及單元格內(nèi)容為test Label label0 = new Label(0, 0, 交易號(hào));Label label1 = new Label(1, 0, 經(jīng)手人員);Label label2 = new Label(2, 0, 客戶證號(hào));Label label3 = new Label(3, 0, 車輛號(hào)碼);Label label4 = new Label(4, 0, 押金(元));Label label5 = new Label(5, 0, 返還金額(元));Label label6 = new Label(6, 0, 破壞情況);Label label7 = new Label(7, 0, 開始時(shí)間);Label label8 = new Label(8, 0, 實(shí)收金額(元));sheet.addCell(label0);sheet.addCell(label1);sheet.addCell(label2);sheet.addCell(label3);sheet.addCell(label4);sheet.addCell(label5);sheet.addCell(label6);sheet.addCell(label7);sheet.addCell(label8);int i = 1;while (rs.next() jxl.write.Number label01 = new jxl.write.Number(0,i,rs.getInt(1);Label label11 = new Label(1, i, rs.getString(2);Label label21 = new Label(2, i, rs.getString(3);Label label31 = new Label(3, i, rs.getString(4);jxl.write.Number label41 = new jxl.write.Number(4, i, rs.getInt(5);jxl.write.Number label51 = new jxl.write.Number(5, i, rs.getInt(6);Label label61 = new Label(6, i, rs.getString(8);Label label71= new Label(7, i, rs.getInt(9) + -+ rs.getInt(10) + - + rs.getInt(11);jxl.write.Number label81 = new jxl.write.Number(8, i, rs.getInt(5)- rs.getInt(6);sheet.addCell(label01);sheet.addCell(label11);sheet.addCell(label21);sheet.addCell(label31);sheet.addCell(label41);sheet.addCell(label51);sheet.addCell(label61);sheet.addCell(label71);sheet.addCell(label81); i+;book.write(); book.close(); catch (Exception e) e.printStackTrace();return ok; /測(cè)試creat方法 public static void main(String arg) throws SQLException CreateXLS c = new CreateXLS(); DataManager dm = new DataManager();String sql = select * from rentinfo where outyear = + 2009+ and state=交易完成;System.out.println(sql);ResultSet rs = dm.getResult(sql);c.create(rs, c:3.xls); 在jsp頁面中調(diào)用該類方法既能生成Exel文件,源碼如下: /該文件名按apache tomcat 安裝目錄而定String filename = C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/COURSEPROJECT/execls/+ year + - + month + .xls;CreateXLS cxls = new CreateXLS();cxls.create(rss, filename);3.用到了數(shù)據(jù)庫知識(shí)里面的觸發(fā)器,該觸發(fā)器用于新增交易信息時(shí),sql語句如下:SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER rent1on rentinfo AFTER insertAS BEGIN update taxi set taxi.state = i.state, taxi.year = i.outyear, taxi.month = i.outmonth, taxi.day = i.outday,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論