当前位置:文档之家› 数据库毕业课程设计报告(汽车租赁管理系统)

数据库毕业课程设计报告(汽车租赁管理系统)

(此文档为word格式,下载后您可任意编辑修改!)一.系统简介本系统为汽车租赁系统,采用BS实现。

可以实现不同权限的浏览和管理。

管理员可以用于汽车租赁公司对汽车租赁事务的管理,包括新增、删除车辆记录,新增、删除用户记录,新增、删除租赁信息记录,新增、删除管理人员记录以及会员设置,客户则可以浏览车辆信息和个人的租车信息。

主要技术:jsp运行环境:winows os+apache tomcat5.5+sql server 2005+jdk1.6开发软件:myeclipse6.0.1开源软件:jxl.jar,sqljdbc4.jar二.数据库设计1.需求分析因为客户只能亲自到汽车租赁公司去注册或租赁车辆,因而,两者权限分配如下:汽车公司方面:能够对车辆,租赁信息和用户信息进行管理。

超级管理员还可以对公司内部人员的信息进行管理客户方面:只能浏览车辆信息和个人用户信息及个人租赁信息。

数据流图如下:2.概念设计ER图如下所示:3.逻辑设计建表语句如下:用户表:后为各字段意义声明create table userinfo(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) 管理员密码);车辆表: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), 经手人员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_tid foreign key (tid)references dbo.taxi([tid])alter table dbo.rentinfo add constraint FK_rentinfo_pid foreign key (pid)references erinfo([pid])alter table dbo.rentinfo add constraint FK_rentinfo_wid foreign key (wid)references dbo.manager([wid])COMMIT TRANSACTION4.数据库建立与备份,恢复在sql server 2005 建立一个数据库,名称为hello,执行以上建表语句即可。

或者将hello.mdf,.setAttribute("type", "1");session.setAttribute("pid", pid);session.setAttribute("username", username);response.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(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");}}此外,系统具有良好的安全性,对每个页面都有良好的保护措施,如manashare.jsp,usershar.jsp,通过session验证用户有无权限进入该页面,否则跳转到login.jsp页面,重新登录。

三.程序设计1.含有表单的jsp页面可以通过设置隐藏域的值来提交到本页面,其程序流程如下:2.财务管理中有个导出execl报表的功能,其实现如下:从网上下载一个jxl.jar包,该jar包支持生成execl文件的操作,然后建立一个专门的类,用于生成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){try{File f = new File(filename);boolean exist = f.exists();WritableWorkbook book = Workbook.createWorkbook(new File(filename));生成名为“第一页”的工作表,参数0表示这是第一页WritableSheet sheet = book.createSheet("第一页", 0);在Label对象的构造子中指名单元格位置是第一列第一行(0,0)以及单元格内容为testLabel 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, "返还金额(元)");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);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";}测试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页面中调用该类方法既能生成Exel文件,源码如下:该文件名按apache tomcat 安装目录而定String filename = "C:Program FilesApache Software FoundationTomcat 5.5webappsCOURSEPROJECTexecls"+ year + "-" + month + ".xls";CreateXLS cxls = new CreateXLS();cxls.create(rss, filename);3.用到了数据库知识里面的触发器,该触发器用于新增交易信息时,sql 语句如下:SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER rent1on rentinfoAFTER insertASBEGINupdate taxiset taxi.state = i.state,taxi.year = i.outyear,taxi.month = i.outmonth,taxi.day = i.outday,taxi.time = i.timefrom taxi t,Inserted iwhere t.tid = i.tidSET NOCOUNT ON;ENDGO查询用户李明的租车记录Select t. type, t.state, t. year, t. month, t.day, t.time, t.payFrom taxi0303 t join rentinfo0303 r on r.wid=t.widJoin userinfo0303 u on r.pid=u.pidWhere =’王充’四.总结本次实验的最大收获就是真正写了个关于数据库的软件。

相关主题