數(shù)據庫課程設計報告--汽車租賃管理系統(tǒng)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  系統(tǒng)簡介</b></p><p>  本系統(tǒng)為汽車租賃系統(tǒng),采用B/S實現(xiàn)。可以實現(xiàn)不同權限的瀏覽和管理。管理員可以用于汽車租賃公司對汽車租賃事務的管理,包括新增、刪除車輛記錄,新增、刪除用戶記錄,新增、刪除租賃信息記錄,新增、刪除管理人員記錄以及會員設置,客戶則可以瀏覽車輛信息和個人的租車信息。</p><p><b>  主

2、要技術:jsp</b></p><p>  運行環(huán)境:winows os+apache tomcat5.5+sql server 2005+jdk1.6</p><p>  開發(fā)軟件:myeclipse6.0.1</p><p>  開源軟件:jxl.jar,sqljdbc4.jar</p><p><b>  數(shù)據庫設

3、計</b></p><p><b>  需求分析</b></p><p>  因為客戶只能親自到汽車租賃公司去注冊或租賃車輛,因而,兩者權限分配如下:</p><p>  汽車公司方面:能夠對車輛,租賃信息和用戶信息進行管理。超級管理員還可以對公司內部人員的信息進行管理</p><p>  客戶方面:只能瀏覽

4、車輛信息和個人用戶信息及個人租賃信息。</p><p><b>  數(shù)據流圖如下: </b></p><p><b>  概念設計</b></p><p><b>  ER圖如下所示:</b></p><p><b>  邏輯設計</b></p>

5、;<p><b>  建表語句如下:</b></p><p>  用戶表://后為各字段意義聲明</p><p>  create table userinfo</p><p><b>  (</b></p><p>  pid varchar(8) primary key, //

6、用戶證件號</p><p>  username varchar(8), //用戶名</p><p>  isvip int, //用戶類型,是否為會員 </p><p>  xingyu int, //信譽度,滿分100。</p><p>  passwor

7、d varchar(8) //用戶登錄密碼</p><p><b>  );</b></p><p><b>  管理員表:</b></p><p>  create table manager</p><p><b>  (</b></p>&l

8、t;p>  wid varchar(8) primary key, //管理員工號</p><p>  type int, //類型,超級管理員(部門經理等)和普通管理員</p><p>  username varchar(8), //管理員用戶名</p><p>  password varchar(8)

9、 //管理員密碼</p><p><b>  );</b></p><p><b>  車輛表:</b></p><p>  create table taxi</p><p><b>  (</b></p><p>  tid varchar(8) p

10、rimary key,//車輛編號</p><p>  type varchar(8), //車輛類型</p><p>  state varchar(8), //車輛狀態(tài),是否可租</p><p>  wid varchar(8), //</p><p>  year int,

11、 //起租年月日</p><p>  month int,</p><p><b>  day int,</b></p><p><b>  time int,</b></p><p>  detailinfo text, //車輛詳細信息</p><p>  p

12、ay int //租用單價</p><p><b>  );</b></p><p><b>  租車信息表</b></p><p>  create table rentinfo</p><p><b>  (</b></p><p&

13、gt;  rid int identity(1,1) primary key, //交易編號</p><p>  wid varchar(8), //經手人員</p><p>  pid varchar(8), //客戶證件號</p><p>  tid varchar(8),// 車輛號碼</p><p>  yajin int

14、, //押金</p><p>  backmoney int, //返還金額</p><p>  pay int,//單價</p><p>  broken varchar(8),//破壞情況</p><p>  outyear int,//結束交易時間</p><p>  outmonth int,</p&

15、gt;<p>  outday int,</p><p>  time int,//實際使用時間</p><p>  state varchar(8)//交易狀態(tài)</p><p><b>  );</b></p><p><b>  --設置外鍵</b></p><

16、p>  BEGIN TRANSACTION</p><p>  alter table dbo.rentinfo add constraint FK_rentinfo_tid</p><p>  foreign key (tid)</p><p>  references dbo.taxi([tid]) </p><p>  alter

17、 table dbo.rentinfo add constraint FK_rentinfo_pid</p><p>  foreign key (pid)</p><p>  references dbo.userinfo([pid]) </p><p>  alter table dbo.rentinfo add constraint FK_rentinfo_w

18、id</p><p>  foreign key (wid)</p><p>  references dbo.manager([wid]) </p><p>  COMMIT TRANSACTION</p><p>  數(shù)據庫建立與備份,恢復</p><p>  在sql server 2005 建立一個數(shù)據庫,名稱

19、為hello,執(zhí)行以上建表語句即可。</p><p>  或者將hello.mdf,hello_log.ldf文件恢復。</p><p>  sp_attach_db 'hello', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\hello.mdf', 'C:\Program Files\M

20、icrosoft SQL Server\MSSQL\Data\hello_log.ldf' sp_attach_single_file_db 'hello','C:\Program Files\Microsoft SQL Server\MSSQL\Data\hello.mdf'</p><p>  備份:將hello數(shù)據庫備份成hello.bak文件</p>

21、<p><b>  框架實現(xiàn)</b></p><p>  系統(tǒng)總體框架實現(xiàn)如下圖所示:</p><p>  以下是各模塊的子功能截圖:</p><p><b>  登錄模塊截圖:</b></p><p>  超級管理員頁面截圖:</p><p>  普通管理員頁面

22、截圖:</p><p>  員工信息管理頁面截圖:</p><p>  員工 信息管理(單表查詢)</p><p>  員工業(yè)績查詢(多表查詢)</p><p>  增加員工(單表插入數(shù)據)</p><p><b>  修改個人密碼</b></p><p><b>

23、;  客戶信息管理:</b></p><p>  交易信息查詢(多表查詢)</p><p><b>  客戶信息查詢</b></p><p><b>  車輛信息管理:</b></p><p><b>  新增車輛信息</b></p><p>

24、;<b>  車輛信息查詢</b></p><p><b>  財務信息查詢:</b></p><p><b>  數(shù)據操作實現(xiàn)方法:</b></p><p>  定義一個類DataManager,在每個jsp頁面中實例化這個類,并調用它的某個方法,完成數(shù)據庫的連接,數(shù)據查詢,刪除,及修改操作。<

25、;/p><p>  程序示例:如check.jsp里面可以驗證用戶登錄信息,并轉向不同頁面。</p><p>  DataManager dm = new DataManager();//實例化DataManager類</p><p>  ResultSet rs = null;</p><p>  if (type == 1) {//如果是以客

26、戶身份登錄</p><p>  String sql = "select * from userinfo where username='" + username</p><p>  + "'" + " and password = '" + password + "'";<

27、;/p><p>  rs = dm.getResult(sql);//由用戶名和密碼獲取記錄</p><p>  if (rs.next()) {//如果記錄不為空,表明該客戶存在</p><p>  String pid = rs.getString("pid");//保存該用戶信息</p><p>  session.se

28、tAttribute("type", "1");</p><p>  session.setAttribute("pid", pid);</p><p>  session.setAttribute("username", username);</p><p>  response.se

29、ndRedirect("user.jsp");//轉向客戶頁面</p><p><b>  }</b></p><p>  } else {//轉向管理員頁面,以下與上面if語句類似。</p><p>  String sql = "select * from manager where username='

30、;"</p><p>  + username + "'" + " and password = '" + password</p><p>  + "' and type ="+type;</p><p>  System.out.println(sql);</p&

31、gt;<p>  rs = dm.getResult(sql);</p><p>  if (rs.next()) {</p><p>  String wid = rs.getString("wid");</p><p>  session.setAttribute("type", t);</p>

32、<p>  session.setAttribute("wid", wid);</p><p>  session.setAttribute("username", username);</p><p>  response.sendRedirect("manager.jsp");</p><p&g

33、t;<b>  }</b></p><p><b>  }</b></p><p>  此外,系統(tǒng)具有良好的安全性,對每個頁面都有良好的保護措施,如manashare.jsp,usershar.jsp,通過session驗證用戶有無權限進入該頁面,否則跳轉到login.jsp頁面,重新登錄。</p><p><b&g

34、t;  程序設計</b></p><p>  1.含有表單的jsp頁面可以通過設置隱藏域的值來提交到本頁面,其程序流程如下:</p><p>  2.財務管理中有個導出execl報表的功能,其實現(xiàn)如下:</p><p>  從網上下載一個jxl.jar包,該jar包支持生成execl文件的操作,然后建立一個專門的類,用于生成execl,該類源碼如下:&l

35、t;/p><p>  package my.pkgs;</p><p>  import java.io.*; </p><p>  import jxl.*; //jxl.jar里面的類庫</p><p>  import jxl.write.*; </p><p>  import java.sql.*;</p&

36、gt;<p>  public class CreateXLS {</p><p>  public String create(ResultSet rs,String filename)</p><p><b>  {</b></p><p><b>  try{</b></p><

37、p>  File f = new File(filename);</p><p>  boolean exist = f.exists();</p><p>  WritableWorkbook book = Workbook.createWorkbook(new File(filename));</p><p>  //生成名為“第一頁”的工作表,參數(shù)0表示

38、這是第一頁 </p><p>  WritableSheet sheet = book.createSheet("第一頁", 0);</p><p>  //在Label對象的構造子中指名單元格位置是第一列第一行(0,0) </p><p>  //以及單元格內容為test </p><p>  Label label0

39、= new Label(0, 0, "交易號");</p><p>  Label label1 = new Label(1, 0, "經手人員");</p><p>  Label label2 = new Label(2, 0, "客戶證號");</p><p>  Label label3 = new

40、 Label(3, 0, "車輛號碼");</p><p>  Label label4 = new Label(4, 0, "押金(元)");</p><p>  Label label5 = new Label(5, 0, "返還金額(元)");</p><p>  Label label6 = new

41、 Label(6, 0, "破壞情況");</p><p>  Label label7 = new Label(7, 0, "開始時間");</p><p>  Label label8 = new Label(8, 0, "實收金額(元)");</p><p>  sheet.addCell(label

42、0);</p><p>  sheet.addCell(label1);</p><p>  sheet.addCell(label2);</p><p>  sheet.addCell(label3);</p><p>  sheet.addCell(label4);</p><p>  sheet.addCell(

43、label5);</p><p>  sheet.addCell(label6);</p><p>  sheet.addCell(label7);</p><p>  sheet.addCell(label8);</p><p>  int i = 1;</p><p>  while (rs.next()) {&l

44、t;/p><p>  jxl.write.Number label01 = new jxl.write.Number(0,i,rs.getInt(1));</p><p>  Label label11 = new Label(1, i, rs.getString(2));</p><p>  Label label21 = new Label(2, i, rs.ge

45、tString(3));</p><p>  Label label31 = new Label(3, i, rs.getString(4));</p><p>  jxl.write.Number label41 = new jxl.write.Number(4, i, rs.getInt(5));</p><p>  jxl.write.Number label

46、51 = new jxl.write.Number(5, i, rs.getInt(6));</p><p>  Label label61 = new Label(6, i, rs.getString(8));</p><p>  Label label71= new Label(7, i, rs.getInt(9) + "-"</p><p>

47、;  + rs.getInt(10) + "-" + rs.getInt(11));</p><p>  jxl.write.Number label81 = new jxl.write.Number(8, i, rs.getInt(5)</p><p>  - rs.getInt(6));</p><p>  sheet.addCell(lab

48、el01);</p><p>  sheet.addCell(label11);</p><p>  sheet.addCell(label21);</p><p>  sheet.addCell(label31);</p><p>  sheet.addCell(label41);</p><p>  sheet.a

49、ddCell(label51);</p><p>  sheet.addCell(label61);</p><p>  sheet.addCell(label71);</p><p>  sheet.addCell(label81);</p><p><b>  i++;</b></p><p>

50、;<b>  }</b></p><p>  book.write(); </p><p>  book.close();</p><p>  }catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }<

51、;/b></p><p>  return "ok";</p><p><b>  }</b></p><p>  //測試creat方法</p><p>  public static void main(String[] arg) throws SQLException</p>

52、<p><b>  {</b></p><p>  CreateXLS c = new CreateXLS();</p><p>  DataManager dm = new DataManager();</p><p>  String sql = "select * from rentinfo where outyea

53、r =" + 2009</p><p>  + " and state='交易完成'";</p><p>  System.out.println(sql);</p><p>  ResultSet rs = dm.getResult(sql);</p><p>  c.create(rs, &q

54、uot;c:\\3.xls");</p><p><b>  }</b></p><p><b>  }</b></p><p>  在jsp頁面中調用該類方法既能生成Exel文件,源碼如下:</p><p>  //該文件名按apache tomcat 安裝目錄而定</p>

55、<p>  String filename = "C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/COURSEPROJECT/execls/"</p><p>  + year + "-" + month + ".xls";</p><p>

56、  CreateXLS cxls = new CreateXLS();</p><p>  cxls.create(rss, filename);</p><p>  3.用到了數(shù)據庫知識里面的觸發(fā)器,該觸發(fā)器用于新增交易信息時,sql語句如下:</p><p>  SET ANSI_NULLS ON</p><p><b>  G

57、O</b></p><p>  SET QUOTED_IDENTIFIER ON</p><p><b>  GO</b></p><p>  CREATE TRIGGER rent1</p><p>  on rentinfo</p><p>  AFTER insert</p

58、><p><b>  AS </b></p><p><b>  BEGIN</b></p><p>  update taxi </p><p>  set taxi.state = i.state,</p><p>  taxi.year = i.outyear,</p

59、><p>  taxi.month = i.outmonth,</p><p>  taxi.day = i.outday,</p><p>  taxi.time = i.time</p><p>  from taxi t,Inserted i</p><p>  where t.tid = i.tid

60、 </p><p>  SET NOCOUNT ON;</p><p><b>  END</b></p><p><b>  GO</b></p><p>  查詢用戶李明的租車記錄</p><p>  Select t. type, t.state, t. year,

61、 t. month, t.day, t.time, t.pay</p><p>  From taxi0303 t join rentinfo0303 r on r.wid=t.wid</p><p>  Join userinfo0303 u on r.pid=u.pid</p><p>  Where u.name=’王充’</p><p&

62、gt;<b>  總結</b></p><p>  本次實驗的最大收獲就是真正寫了個關于數(shù)據庫的軟件。數(shù)據庫無論在現(xiàn)在各類軟件中都有涉及,所以數(shù)據庫對于計算機從業(yè)者來說是一門必須掌握的課程。本次試驗只能說是初步了解了數(shù)據庫編程的一些知識,許多高深的數(shù)據庫知識如sql優(yōu)化都未能研究深入。</p><p>  其次是對jsp編程有了一定得了解。因為是首次學習jsp編程,沒

63、有用到javabean,更不用說struts,hibernate,spring框架,所用到的技術非常簡單,屬于“菜鳥級“,不過,打下了web編程的基礎,相信以后會對web開發(fā)更有興趣。</p><p>  最后,對軟件工程的知識有了一定了解。本次試驗成果可以說是一個軟件(質量暫且不論),軟件的完成需要固定的幾個步驟:需求分析,概念設計,編碼,測試等等,經過本次嘗試,終于知道了需求分析的重要性,它是整個軟件的基礎,

溫馨提示

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

評論

0/150

提交評論