《数据库课程设计》课程设计说明书汽车租赁管理系统.doc

上传人:仙人指路1688 文档编号:2957509 上传时间:2023-03-05 格式:DOC 页数:21 大小:585.50KB
返回 下载 相关 举报
《数据库课程设计》课程设计说明书汽车租赁管理系统.doc_第1页
第1页 / 共21页
《数据库课程设计》课程设计说明书汽车租赁管理系统.doc_第2页
第2页 / 共21页
《数据库课程设计》课程设计说明书汽车租赁管理系统.doc_第3页
第3页 / 共21页
《数据库课程设计》课程设计说明书汽车租赁管理系统.doc_第4页
第4页 / 共21页
《数据库课程设计》课程设计说明书汽车租赁管理系统.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《《数据库课程设计》课程设计说明书汽车租赁管理系统.doc》由会员分享,可在线阅读,更多相关《《数据库课程设计》课程设计说明书汽车租赁管理系统.doc(21页珍藏版)》请在三一办公上搜索。

1、 设计说明书课程名称 数据库课程设计 题目名称 汽车租赁管理系统 学生姓名 学号 专 业 指导教师 年 月 日 目录第一章系统概述11.1背景11.2发展现状1第二章 需求分析22.1 功能需求22.2 数据需求3第三章 系统设计53.1系统结构53.2 数据库设计53.2.1 ER图53.2.2 逻辑结构63.2.3 数据库物理结构73.2.4 数据库实现93.3用户控制系统93.4模块设计103.4.1 汽车管理模块设计103.4.2 基本设置模块设计11第四章 系统实现114.1用户登录模块114.2汽车管理模块实现124.3汽车预租模块实现16第五章 后记185.1完善计划185.2个

2、人总结19参考文献19第一章 系统概述1.1背景今天,随着人民生活水平的提高,汽车工业的发展和汽车的普及,汽车如今已经与我们的生活密不可分,而汽车租赁也已成为一个极具市场潜力的行业,面对飞速发展的汽车租赁市场,其经营管理的汽车种类繁多,样式各异,客户需求量大,客户要求高,每天的工作量大,一套完整的管理系统对于汽车租赁公司来说已经十分重要, 在信息飞速发展的今天,计算机在事务管理方面的应用已经相当广泛,但目前很多汽车租赁公司还停留在人工管理的水平上,显然不适应时代的发展,管理人员目前需要一套方便、计算机化的管理信息系统来代替他们繁琐、低效的传统手工管理方式,并最终实现汽车租赁管理的全面自动化,使

3、用汽车租赁管理系统可以规范企业的管理和经营行为,减少企业的经营成本,提高工作效率。汽车租赁管理系统是为汽车租赁公司提供的一个简单易用的系统,随着科技的发展,设备和管理的现代化,在实际工作中如何提高工作效率成为一个很重要的问题。而建立管理系统是一个很好的解决办法。1.2发展现状目前市场上相关系统并不多,毕竟汽车租赁行业也算是个新兴的产业,但由于它的飞速发展,市场也看到了它的设计价值,不过大都大同小异,一般市场上的汽车租赁管理系统多是针对汽车租赁的业务处理的一种系统,其它管理层面也有涉及,只是比较简略,一般包括基本设置、综合管理、业务处理、查询报表、统计排行以及系统管理等模块,优点在于业务处理模块

4、比较结合实际,所以对于日常的汽车租赁管理系统已经不成问题,但缺点也是存在的。如汽车照片的存储仍然采取相对路径的存储,用户密码的安全性做得不够,系统的扩展性也不是很全等。因此,我们决定利用所学知识设计一个汽车租赁管理系统,主要是针对汽车租赁的基本设置、综合管理、业务处理、查询报表、统计排行以及系统管理进行全面管理的系统,而并不再是只注重于业务处理,并且我们将解决一些问题,如汽车照片用二进制进行存取,用户密码进行双重加密,基本设置模块更好地体现系统的扩展性,报表的打印,SQL语句利用视图跟存储过程,以增强系统的访问安全性,试图完善汽车租赁管理系统的安全性跟扩展性,让其更人性化,更好地服务于汽车租赁

5、公司。第二章 需求分析2.1 功能需求经过调研及分析,汽车租赁管理系统主要完成以下功能:(1)综合管理此模块主要对客户(包括普通客户跟会员),员工以及汽车的具体信息进行管理,分为普通客户管理,会员管理,员工管理以及汽车管理。汽车管理:管理员可以对租赁公司现已拥有的汽车的具体信息进行查看,修改信息或者删除档案(当汽车报废或不再租赁时),而且是可以批量删除的,也可添加新购进的汽车的具体信息,以便更快地投入租赁市场,方便客户了解,以便做出更好的租赁选择。普通客户管理/会员管理:管理员对客户的资料(包括普通客户跟会员)可以进行查看,添加新客户,修改一些基本资料以及删除客户档案;员工管理:对聘用的员工的

6、资料也可以进行查看,对新聘用的员工添加其详细信息,修改一些基本信息以及删除员工档案。(2)业务管理此模块提供对汽车日常业务进行管理,包括汽车预租/出租/续租,汽车加油,汽车维修,还车结算,催车还交以及事故登记。汽车预租:员工可以根据客户需求帮其预租汽车,可以查看及修改预租的相关信息,但是不可以删除客户之前已经预租的汽车,管理员可以修改以及取消客户之前已经预租的汽车,可以查看已经预租汽车的情况等。汽车出租:员工可以根据客户的需求出租汽车,可以查看及修改出租的相关信息,但也不可以删除已经出租的汽车,而管理员则可以修改,查看以及删除出租汽车的相关情况。当汽车出租时可以打印相关合同,双方签订合同。汽车

7、续租:在客户出租汽车的还车时间三天之前可前往汽车租赁公司办理汽车续租手续,员工在检查完汽车的相关情况后,可根据实际情况调整还车时间以便达到续租的目的。汽车加油:员工可以进行记录相关加油情况,修改,删除加油记录。汽车维修:员工可以进行记录汽车相关维修情况,修改,删除维修记录。还车结算:员工对来还车的客户进行查询,统计其它费用(如事故费,罚金费等),算出总费用,收款后返回客户押金以及客户抵押件等。催车还交:员工可以根据出租汽车的还车时间,催促那些还车时间快到了的客户及时还车以免交罚金。事故登记:员工应该根据所出租的汽车发生的事故的具体情况登记入表,以便以后查询,也可修改或删除信息。(3)基本设置管

8、理此模块提供对汽车信息设置以及服务信息设置的全面管理功能。包括汽车设置管理与服务设置管理等。管理员可以对一些基本信息进行添加,修改,删除。汽车设置管理包括汽车类型设置,汽车名称设置,燃油类型设置;服务设置管理包括修理厂设置,加油站设置,保险类型设置。这项管理可以使管理员更好地根据租赁公司实际情况修改汽车以及服务的一些基本信息,使系统更适合其公司的运营,而且管理员只需在设置界面进行修改,而不需自己修改数据库,更体现出系统的人性化。(4)查询报表此模块分为加油记录查询,维修记录查询,汽车预租查询,汽车出租查询,还车结算查询,事故记录查询,单车租赁查询,汽车资料查询,会员资料查询,客户资料查询以及员

9、工资料查询。此模块可对客户,员工以及汽车相关业务的情况进行查询,对查询到的相关信息可以生成相应的Excel文件以及打印报表,尤其是汽车资料查询还可以生成显示照片的报表等。(5)统计排行此模块根据汽车出租次数的实际情况可以统计出本周/本月/全部排行,进而有利于管理员分析购买哪些汽车能使公司的利润最大化。还可以根据客户(包括普通客户和会员)租赁汽车的次数,统计出其排行,有利于管理员有针对性地对某些客户进行高质里的服务。(6)系统维护备份数据:可以提供直接备份数据库的相关数据还原数据:当系统出现异常状况时可以通过此还原数据库的相关数据修改密码:可以账户修改登录密码,密码是采取双重MD5加密,使其更具

10、安全性。2.2 数据需求 :系统外部 :实物或单据 :实物或信息流向:处理 :数据存储客户(普通客户/会员)预租请求汽车预租表员工图2-1 综合管理流程图员工查询汽车信息表普通客户/会员信息登记客户信息表管理员员工信息登记汽车信息登记员工信息表员工汽车预租表签订合同客户汽车出租表续租请求图2-2 汽车预租流程图费用结算表客户(普通客户/会员)员工还车查询费用缴纳费用P003图2-3 汽车出租、续租流程图员工加油、维修、事故登记加油、维修、事故信息表图2-4 还车结算流程图图2-5 汽车加油、维修、事故流程图图2-6 基本设置流程图员工运用基本设置表管理员基本设置录入第三章 系统设计3.1系统结

11、构汽车租赁管理系统汽车设置管理基本设置管理服务设置管理综合管理汽车管理业务管理汽车预/出/续租汽车加油汽车维修还车结算催车还交事故登记查询报表统计排行汽车查询客户资料查询客户租赁排行本周/月/全部排行人事管理系统维护备份数据权限管理此汽车租赁管理系统主要实现6个大的功能模块:综合管理、业务管理,基本设置,查询报表、统计排行、系统维护。每个模块有分成多详细的功能子模块。详情如下图3-1所示:图3-1 系统结构图3.2 数据库设计3.2.1 ER图3.2.2 逻辑结构1、用户信息表用户(uid , users, pwd, type)分析:因为uid是主键,而且users不允许重复,所以主键只有一个

12、属性,不存在部分依赖;又因为uid users,所以不存在非主属性对主键uid的传递依赖,所以该关系属于3NF。2、客户信息表客户(kid, ktype,kname,ksex,ksf,kdy,ktel,klic,kadd,ktimes)分析:因为只有kid是主键,所以不存在部分依赖,因此该关系属于2NF。但存在非主属性kname通过ktel对主键kid的传递依赖,所以该关系不属于3NF。3、员工信息表员工(eid,ename,esex,esf,etel,eadd)分析:因为只有eid是主键,所以不存在部分依赖,因此该关系属于2NF。但存在非主属性ename通过etel对主键eid的传递依赖,所

13、以该关系不属于3NF。4、管理员信息表管理员(uid,uname,usex)分析:因为只有uid是主键,所以不存在部分依赖,且不存在非主属性对主键uid的传递依赖,所以该关系属于3NF。5、汽车信息表汽车(cid,cname,ctype,cnum,cclor,clsu,coil,cpho,cmile,cgm,cbf,cdep,cdm,csta,ctimes)分析:因为cid是主键,而且cnum不允许重复,所以主键只有一个属性,不存在部分依赖;又因为cid cnum,所以不存在非主属性对主键cid的传递依赖,所以该关系属于3NF。6、租赁情况表租赁 (htid,cid,eid,kid,rentt

14、ype,renttime,returntime,mustmoney,des,regtime,rem)分析:因为只有htid是主键,所以不存在部分依赖,因此该关系属于2NF。但存在非主属性des通过cid对主键htid的传递依赖,所以该关系不属于3NF。7、加油表加油(oid,cid,eid,oilstation,price,oilvolume,ototal,odate)分析:因为只有oid是主键,所以不存在部分依赖,且不存在非主属性对主键oid的传递依赖,所以该关系属于3NF。8、维修表维修(rid,cid,eid,rplace,rmat,rpmoney,rother,rtotal,rdate

15、,rcon,rrem)分析:因为只有rid是主键,所以不存在部分依赖,且不存在非主属性对主键rid的传递依赖,所以该关系属于3NF。9、事故登记表事故(aid,cid,eid,aple,adate,aplace,acus,acon,adtime,arem)分析:因为只有aid是主键,所以不存在部分依赖,且不存在非主属性对主键aid的传递依赖,所以该关系属于3NF。10、费用表费用(htid,eid,kid,fdis,freturn,fother,ftotal)分析:因为只有htid是主键,所以不存在部分依赖,因此该关系属于2NF。但存在非主属性fdis通过kid对主键htid的传递依赖,所以该

16、关系不属于3NF。11、基本信息表基本信息(sid,uid,sstyle,sname)分析:因为只有sid是主键,所以不存在部分依赖,且不存在非主属性对主键sid的传递依赖,所以该关系属于3NF。3.2.3 数据库物理结构1、视图uh_kh: select * from 用户,客户 where kid=uidkh_ht: select * from 客户 where(not exists(select * from ht where kid=客户.kid)ht: select htid,kname,ktype,ktel,cname,ctype,cnum,renttype,renttime,re

17、turntime,mustmoney,des,regtime,rem,租赁.cid,租赁.kid,eidfrom 租赁,汽车,客户 where 租赁.cid = 汽车.cid and 客户.kid=租赁.kidoil:select oid,加油.cid,加油.eid,oilstation,price,oilvolume,ototal,odate,ename,cname,coil from 加油,汽车,员工 where 加油.cid = 汽车.cid2、存储过程u_xg: create procedure u_xg ( users char(20), pwd char(35) ) asupdat

18、e 用户 set pwd=pwd where users=userskh_tj: create procedure kh_tj(users char(20),pwd char(35),ktype char(8),kname char(10),ksex char(5),ksf char(20),kdy char(10),ktel char(15),klic char(10),kadd char(25) as declare kid numeric(4) begininsert into 用户 (users,pwd,type) values(users,pwd,ktype)select kid=u

19、id from 用户 where users=usersinsert into 客户 (kid,ktype,kname,ksex,ksf,kdy,ktel,klic,kadd) values(kid,ktype,kname,ksex,ksf,kdy,ktel,klic,kadd)endem_tj: create procedure em_tj (users char(20),pwd char(35),type char(8),ename char(10),esex char(6),esf char(20),etel char(15),eadd char(25) as declare eid n

20、umeric(4) begininsert into 用户 (users,pwd,type) values(users,pwd,type)select eid=uid from 用户 where users=usersinsert into 员工 values(eid,ename,esex,esf,etel,eadd)endcar_xg: create procedure car_xg (cid numeric(4),cname char(10),ctype char(10),cnum char(10),cclor char(6),clsu char(10),coil char(6),cpho

21、 image,cmile numeric(5),cgm datetime,cbf datetime,cdep money,cdm money) as beginupdate 汽车 set cname=cname,ctype=ctype,cnum=cnum,cclor=cclor,clsu=clsu,coil=coil,cpho=cpho,cmile=cmile,cgm=cgm,cbf=cbf,cdep=cdep,cdm=cdm where cid=cidend3、触发器csta_xg: create trigger csta_xg on 租赁 for insert asupdate 汽车 se

22、t csta=(select renttype from inserted) where cid=(select cid from inserted)csta_xg2: create trigger csta_xg2 on 租赁 for update asif (select cid from deleted)(select cid from inserted)beginupdate 汽车 set csta=待租 where cid=(select cid from deleted)update 汽车 set csta=(select renttype from inserted) where

23、 cid=(select cid from inserted)update 汽车 set ctimes=ctimes+1 where cid=(select cid from inserted)update 汽车 set ctimes=ctimes-1 where cid=(select cid from deleted)endctimes_xg: create trigger ctimes_xg on 租赁 for insert as declare ctimes numeric(4)if (select renttype from inserted)=出租update 汽车 set cti

24、mes=ctimes+1 where cid=(select cid from inserted)ht_change: create trigger ht_change on 租赁 for delete asupdate 汽车 set csta=待租 where cid=(select cid from deleted)3.2.4 数据库实现数据库创建语句:IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = Ncar)DROP DATABASE carGOCREATE DATABASE car ON (NAME =

25、Ncar_Data, FILENAME = NC:Program FilesMicrosoft SQL ServerMSSQLdatacar_Data.MDF , SIZE = 8, FILEGROWTH = 10%) LOG ON (NAME = Ncar_Log, FILENAME = NC:Program FilesMicrosoft SQL ServerMSSQLdatacar_Log.LDF , SIZE = 5, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_ASGO3.3用户控制系统用户通过bridge判断账户验证通过系统进入3次未通过退出程序

26、判断账户权限员工管理员客户系统及数据库中用户访问控制体系可以用如下图3-2所示:图3-2 用户控制系统图3.4模块设计3.4.1 汽车管理模块设计此模块实现:管理员可以对租赁公司现已拥有的汽车的具体信息进行查看,修改档案或者删除档案(当汽车报废或不再租赁时),而且是可以批量删除的,也可添加新购进的汽车的具体信息,以便更快地投入租赁市场,方便客户了解,以便做出更好的租赁选择。此模块设计过程中,由于经常有大量的汽车照片需要保存,简便的方法是把图片存储在指定的文件夹下,数据库中只保存图片所在的路径和图片名,但是这种方法对数据的管理很不方便,同时安全性和可靠性也不能保证;另一种方法是把图片数据存储在数

27、据库中,在数据库中提供了Image数据类型,该类型存储的是可变长度的二进制数,因此要把保存到数据库中的图片文件的类型转换成二进制数据类型。利用MemoryStream类将图像文件以二进制的形式在数据库中直接进行读写操作。此模块采用第二种方法即把图片以二进制的形式存储在数据库中,该方案解决了汽车租赁管理系统中数据库存储图像数据的问题,提高了汽车租赁管理系统的应用功能和范围。由于图片的保存是一个独立的过程,在其它的模块开发中也可以方便的应用,提高了整个系统开发的效率。另外,考虑到系统的人性化,添加,修改以及删除等操作采取了批处理,即可以批量添加,批量修改以及批量删除;而在批量删除时要注意在选中的行

28、中从后面往前删,避免出现沙漏效应。3.4.2 基本设置模块设计此模块实现:提供对汽车信息设置以及服务信息设置的全面管理功能。包括汽车设置管理与服务设置管理等。管理员可以对一些基本信息进行添加,修改,删除。汽车设置管理包括汽车类型设置,汽车名称设置,燃油类型设置;服务设置管理包括修理厂设置,加油站设置,保险类型设置。这项管理可以使管理员更好地根据租赁公司实际情况修改汽车以及服务的一些基本信息,使系统更适合其公司的运营,而且管理员只需在设置界面进行修改,而不需自己修改数据库,更体现出系统的人性化。第四章 系统实现4.1用户登录模块1、界面如图4-1所示:图4-1 用户登录模块2、重点代码(1)、加

29、密函数Public Function 加密(ByVal strSource As String) As String dataToHash= (New System.Text.ASCIIEncoding).GetBytes(strSource) hashvalue = CType(System.Security.Cryptography.CryptoConfig.CreateFromName(MD5), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash) For i = 0 To 15 strresult +=

30、 Hex(hashvalue(i).ToLower Next Return strresult End Function(2)、连接数据库Public Sub 连接数据库() If type.Trim = 管理员 Then con.ConnectionString = server=.;database=car;user id=admin;password=admin ElseIf type.Trim = 员工 Then con.ConnectionString = server=.;database=car;user id=employee;password=employee ElseIf

31、type.Trim = 客户 Then con.ConnectionString = server=.;database=car;user id=kh;password=kh End If cmd.Connection = conEnd Sub4.2汽车管理模块实现1、 界面如图4-2所示:图4-2 汽车管理模块2、重点代码(1)、批量删除 Public Sub deletedgvs(ByRef dgv As DataGridView, ByVal sql As String) count = dgv.SelectedRows.Count res = MsgBox(确定删除这 & count

32、& 条记录?, 1 + 32 + 0, 提示) If res = 1 Then Try For i = count - 1 To 0 Step -1 cmd.CommandText = sql & dgv.SelectedRows(i).Cells(0).Value & con.Open() cmd.ExecuteNonQuery() dgv.Rows.Remove(dgv.SelectedRows(i) con.Close() Next Catch ex As Exception MsgBox(删除记录失败!, 0 + 48 + 0, 删除失败) con.Close() Exit Sub E

33、nd Try MsgBox(已删除 & count & 条记录!, 0 + 48 + 0, 删除成功) con.Close() Else Exit Sub End If End Sub(2)、灵活性填充(填充DataGridView的filldgv函数) Public Sub filldgv(ByRef dgv As DataGridView, ByVal sql As String) If dr.HasRows Then While dr.Read With dgv .Rows.Add() For j = 0 To dr.FieldCount - 1 .Columns(j).Name = d

34、r.GetName(j).Trim .Rows(i).Cells(j).Value = dr.GetValue(j) Next End With i = i + 1 End While Else For j = 0 To dr.FieldCount - 1 dgv.Columns(j).Name = dr.GetName(j).Trim Next End If con.Close() For i = 0 To dgv.ColumnCount - 1 cmd.CommandText = select * from nameset where oldname= & dgv.Columns(i).N

35、ame.Trim & con.Open() dr = cmd.ExecuteReader If dr.Read Then dgv.Columns(i).HeaderCell.Value = dr.GetString(1).Trim End If con.Close() Next End Sub(3)、把图片转换成二进制流Public Sub 选择照片(ByRef OpenFileDialog1 As OpenFileDialog, ByRef pb As PictureBox) OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName T

36、hen filepath = OpenFileDialog1.FileName.ToString pic = New Bitmap(filepath) pb.Image = pic Dim ms As New IO.MemoryStream pb.Image.Save(ms, pb.Image.RawFormat) data = ms.GetBuffer ms.Close() Else If data Is Nothing Then pb.Image = Nothing End If End If End Sub(4)、把图片从数据库取出 If dr.IsDBNull(7) Then pb.I

37、mage = Nothing Else data = CType(dr.Item(7), Byte() Dim ms As New IO.MemoryStream(data) pb.Image = Image.FromStream(ms) ms.Close() End If(5)填充ComboBoxPublic Sub showjb(ByRef combo As ComboBox, ByVal sql As String) cmd.CommandText = select sname from jb where sstyle= & sql & con.Open() dr = cmd.Execu

38、teReader While dr.Read combo.Items.Add(dr.GetString(0).Trim) End While con.Close()End Sub4.3汽车预租模块实现1、界面如图4-3所示:图4-3 汽车预租模块2、重点代码(1)查询条件For i = 0 To arr.Count - 1 If dgv1.Rows(i).Cells(0).Value = Then If dgv1.Rows(i).Cells(3).Value Is Nothing Then MsgBox(查询条件不能为空!, 0 + 48 + 0, 提醒) Exit Sub End If sq

39、l = sql + arr.Item(i).ToString.Trim + sign + & dgv1.Rows(i).Cells(3).Value.ToString.Trim & ElseIf dgv1.Rows(i).Cells(0).Value = 并且 Then If dgv1.Rows(i).Cells(3).Value Is Nothing Then MsgBox(查询条件不能为空!, 0 + 48 + 0, 提醒) Exit Sub End If sql = sql + and + arr.Item(i).ToString.Trim + sign + & dgv1.Rows(i)

40、.Cells(3).Value.ToString.Trim & Else If dgv1.Rows(i).Cells(3).Value Is Nothing Then MsgBox(查询条件不能为空!, 0 + 48 + 0, 提醒) Exit Sub End If sql = sql + or + arr.Item(i).ToString.Trim + sign + & dgv1.Rows(i).Cells(3).Value.ToString.Trim & End If Next(2)、生成ExcelPublic Sub getExcel(ByRef dgv As DataGridView) myBook = myApp.Workbooks.Add() mySheet = myBook.Worksheets(1) mySheet.Name = dsname mySheet.Cells(1, 1) = dsname + 详细资料 For k = 0 To dgv.Columns.Count - 1 mySheet.Cells(2, k + 1).Value = dgv.Columns(k).HeaderText mySheet.Cells(2, k + 1).Font.Bold = T

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号