数据库课程设计报告(汽车租赁管理系统)_第1页
数据库课程设计报告(汽车租赁管理系统)_第2页
数据库课程设计报告(汽车租赁管理系统)_第3页
数据库课程设计报告(汽车租赁管理系统)_第4页
数据库课程设计报告(汽车租赁管理系统)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一 系统简介 本系统为汽车租赁系统,采用B/S实现。可以实现不同权限的浏览和管理。管理员可以用于汽车租赁公司对汽车租赁事务的管理,包括新增、删除车辆记录,新增、删除用户记录,新增、删除租赁信息记录,新增、删除管理人员记录以及会员设置,客户则可以浏览车辆信息和个人的租车信息。 主要技术:jsp运行环境:winows os+apache tomcat5.5+sql server 2005+jdk1.6开发软件:myeclipse6.0.1开源软件:jxl.jar,sqljdbc4.jar二 数据库设计1. 需求分析因为客户只能亲自到汽车租赁公司去注册或租赁车辆,因而,两者权限分配如下:汽车公司方面

2、:能够对车辆,租赁信息和用户信息进行管理。超级管理员还可以对公司内部人员的信息进行管理客户方面:只能浏览车辆信息和个人用户信息及个人租赁信息。数据流图如下: 管理员客户新增客户个人信息用户信息文件车辆新增交易车辆信息交易信息文件个人信息新增车辆车辆信息文件新增管理员内部人员管理人员信息文件2. 概念设计ER图如下所示: 管理员管理车辆车辆租用车辆客 户1N管理用户工号用户名类型密码编号类型状态起租时间单价租用时间编号客户编号车辆编号经手人员起租时间押金租用时间返回金额状态证件号用户名会员类型密码MNnm信誉度3. 逻辑设计建表语句如下:用户表:/后为各字段意义声明create table us

3、erinfo( pid varchar(8) primary key, /用户证件号 username varchar(8), /用户名 isvip int, /用户类型,是否为会员 xingyu int, /信誉度,满分100。 password varchar(8) /用户登录密码);管理员表:create table manager( wid varchar(8) primary key, /管理员工号 type int, /类型,超级管理员(部门经理等)和普通管理员 username varchar(8), /管理员用户名 password varchar(8) /管理员密码);车辆表

4、:create table taxi( tid varchar(8) primary key,/车辆编号 type varchar(8), /车辆类型 state varchar(8), /车辆状态,是否可租 wid varchar(8), / year int, /起租年月日 month int, day int, time int, detailinfo text, /车辆详细信息 pay int /租用单价);租车信息表create table rentinfo( rid int identity(1,1) primary key, /交易编号 wid varchar(8), /经手人员

5、 pid varchar(8), /客户证件号 tid varchar(8),/ 车辆号码 yajin int, /押金 backmoney int, /返还金额 pay int,/单价 broken varchar(8),/破坏情况 outyear int,/结束交易时间 outmonth int, outday int, time int,/实际使用时间 state varchar(8)/交易状态 );-设置外键BEGIN TRANSACTIONalter table dbo.rentinfo add constraint FK_rentinfo_tidforeign key (tid)r

6、eferences dbo.taxi(tid) alter table dbo.rentinfo add constraint FK_rentinfo_pidforeign key (pid)referenceerinfo(pid) alter table dbo.rentinfo add constraint FK_rentinfo_widforeign key (wid)references dbo.manager(wid) COMMIT TRANSACTION4. 数据库建立与备份,恢复在sql server 2005 建立一个数据库,名称为hello,执行以上建表语句即可。或者将hel

7、lo.mdf,hello_log.ldf文件恢复。sp_attach_db 'hello', 'C:Program FilesMicrosoft SQL ServerMSSQLDatahello.mdf', 'C:Program FilesMicrosoft SQL ServerMSSQLDatahello_log.ldf' sp_attach_single_ 'hello','C:Program FilesMicrosoft SQL ServerMSSQLDatahello.mdf'备份:将hello数据库备份成

8、hello.bak文件三 框架实现 系统总体框架实现如下图所示: 不同权限的用户登录超级管理员内部人员管理客户信息管理车辆信息管理普通管理员客户信息管理车辆信息管理客户个人信息浏览车辆信息浏览租车信息浏览财务信息管理财务信息管理以下是各模块的子功能截图:登录模块截图: 超级管理员页面截图:普通管理员页面截图:员工信息管理页面截图:员工 信息管理(单表查询)员工业绩查询(多表查询)增加员工(单表插入数据)修改个人密码客户信息管理:交易信息查询(多表查询)客户信息查询车辆信息管理:新增车辆信息车辆信息查询财务信息查询:数据操作实现方法: 定义一个类DataManager,在每个jsp页面中实例化这

9、个类,并调用它的某个方法,完成数据库的连接,数据查询,删除,及修改操作。程序示例:如check.jsp里面可以验证用户登录信息,并转向不同页面。DataManager dm = new DataManager();/实例化DataManager类ResultSet rs = null;if (type = 1) /如果是以客户身份登录String sql = "select * from userinfo where username='" + username+ "'" + " and password = '&quo

10、t; + 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);r

11、esponse.sendRedirect("user.jsp");/转向客户页面 else /转向管理员页面,以下与上面if语句类似。String sql = "select * from manager where username='"+ username + "'" + " and password = '" + password+ "' and type ="+type;System.out.println(sql);rs = dm.getResult(s

12、ql);if (rs.next() String wid = rs.getString("wid");session.setAttribute("type", t);session.setAttribute("wid", wid);session.setAttribute("username", username);response.sendRedirect("manager.jsp");此外,系统具有良好的安全性,对每个页面都有良好的保护措施,如manashare.jsp,usershar.j

13、sp,通过session验证用户有无权限进入该页面,否则跳转到login.jsp页面,重新登录。四 程序设计 1.含有表单的jsp页面可以通过设置隐藏域的值来提交到本页面,其程序流程如下:开始获得隐藏域变量的值为空?表单的填写跳转到本页显示表单提交结果结束YN2.财务管理中有个导出execl报表的功能,其实现如下: 从网上下载一个jxl.jar包,该jar包支持生成execl文件的操作,然后建立一个专门的类,用于生成execl,该类源码如下:package my.pkgs;import java.io.*; import jxl.*; /jxl.jar里面的类库import jxl.write

14、.*; import java.sql.*;public class CreateXLS public String create(ResultSet rs,String ) tryFile f = new );boolean exist = f.exists();WritableWorkbook book = Workbook.createWorkbook(new );/生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet("第一页", 0);/在Label对象的构造子中指名单元格位置是第一列第一行

15、(0,0) /以及单元格内容为test Label label0 = new Label(0, 0, "交易号");Label label1 = new Label(1, 0, "经手人员");Label label2 = new Label(2, 0, "客户证号");Label label3 = new Label(3, 0, "车辆号码");Label label4 = new Label(4, 0, "押金(元)");Label label5 = new Label(5, 0, &quo

16、t;返还金额(元)");Label label6 = new Label(6, 0, "破坏情况");Label label7 = new Label(7, 0, "开始时间");Label label8 = new Label(8, 0, "实收金额(元)");sheet.addCell(label0);sheet.addCell(label1);sheet.addCell(label2);sheet.addCell(label3);sheet.addCell(label4);sheet.addCell(label5);s

17、heet.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)

18、;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.

19、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

20、.close(); catch (Exception e) e.printStackTrace();return "ok" /测试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='交

21、易完成'"System.out.println(sql);ResultSet rs = dm.getResult(sql);c.create(rs, "c:3.xls"); 在jsp页面中调用该类方法既能生成Exel文件,源码如下: /该文件名按apache tomcat 安装目录而定String = "C:/Program Software Foundation/Tomcat 5.5/webapps/COURSEPROJECT/execls/"+ year + "-" + month + ".xls"CreateXLS cxls = new CreateXLS();cxls.create(rss, );3.用到了数据库知识里面的触发器,该触发器用于新增交易信息时,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.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论