为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数据库综合实验报告格式模版

2017-09-20 50页 doc 497KB 17阅读

用户头像

is_447713

暂无简介

举报
数据库综合实验报告格式模版数据库综合实验报告格式模版 中南民族大学计算机科学学院 数据库综合实验报告 题 目 汽车租赁管理系统 年 级 2010级 专 业 软件工程 指导教师 徐科 陈幼均 小组成员(姓名学号) (马寄10065052) (闪珊珊10065019)(佘潇10065013) (李继强10065016) 实验类型 综合型 成绩评定 评语: 教师签名: 年 月 日 2012 年 月 日 前言 一、 目的 1、目前市场上相关系统并不多,毕竟汽车租赁行业也算是个新兴的产业,但由于它的飞速发展,市场也看到了它的设计...
数据库综合实验报告格式模版
数据库综合实验格式模版 中南民族大学计算机科学学院 数据库综合实验报告 题 目 汽车租赁管理系统 年 级 2010级 专 业 软件工程 指导教师 徐科 陈幼均 小组成员(姓名学号) (马寄10065052) (闪珊珊10065019)(佘潇10065013) (李继强10065016) 实验类型 综合型 成绩评定 评语: 教师签名: 年 月 日 2012 年 月 日 前言 一、 目的 1、目前市场上相关系统并不多,毕竟汽车租赁行业也算是个新兴的产业,但由于它的飞速发展,市场也看到了它的设计价值,不过大都大同小异,一般市场上的汽车租赁管理系统多是针对汽车租赁的业务处理的一种系统,其它管理层面也有涉及,只是比较简略,一般包括基本设置、综合管理、业务处理、查询报表、统计排行以及系统管理等模块,优点在于业务处理模块比较结合实际,所以对于日常的汽车租赁管理系统已经不成问题,但缺点也是存在的。如汽车照片的存储仍然采取相对路径的存储,用户密码的安全性做得不够,系统的扩展性也不是很全等。 2、我们决定利用所学知识设计一个汽车租赁管理系统,主要是针对汽车租赁的基本设置、综合管理、业务处理、查询报表、统计排行以及系统管理进行全面管理的系统,而并不再是只注重于业务处理,并且我们将解决一些问题,如汽车照片用二进制进行存取,用户密码进行双重加密,基本设置模块更好地体现系统的扩展性,报表的打印,SQL语句利用视图跟存储过程,以增强系统的访问安全性,试图完善汽车租赁管理系统的安全性跟扩展性,让其更人性化,更好地服务于汽车租赁公司。 3、数据库是一门理论性和实践性都很强的面向实际应用的课程,它是计算机科学技术中发展最快的领域之一。数据库综合实验要求学生在学习完程序设计语言、数据结构、操作系统等课程后,综合利用所学计算机软件知识完成一个数据库应用系统的设计。是一个重要的教学实践环节,是对学生所学知识的掌握和应用程度的一个全面地、综合地考察。 4、在学生初步具备了一定的软件程序设计基础上,本课程设计针对日常应用中的实际问题,要求学生完成一个相对完整的数据库应用系统,培养学生运用数据库理论知识和数据库技术解决实际应用问题的能力,巩固和加深所学理论知识,初步掌握一个完整数据库应用系统的开发过程和方法。加深对数据库系统、软件工程、程序设计语言的理论知识的理解和应用水平;通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。培养相关专业专业本科学生科学研制、开发数据库应用系统的基本能力,为计算机在本专业领域的应用奠定基础。 二、 项目背景概述 1、项目实施环境(注:包括开发、运行环境) 运行环境:Windows7系统 开发环境:NetBeans,Mysql 2、项目人员及其分工 马寄 详细设计、概要设计、测试 闪珊珊 详细设计、概要设计、测试 佘潇 需求分析 查阅资料、测试 李继强 需求分析 查阅资料、测试 3、项目实施计划 此次实验项目自10月25日起开始进行开发 (1)、第一周进行需求分析 a 、组员一起通过市场调研,了解想要租车的客户的需求。 b 、然后用word列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,可以初步定义好少量的界面。 c 、组员一起深入了解和分析需求,根据经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。 (2)、第二周进行概要设计 a 、小组成员到图书馆借阅相关参考书籍 b 、对系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理进行概要设计等,为软件的详细设计提供基础。 (3)、第三周进行详细设计 a 、在概要设计的基础上,对进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计,以便进行编码和测试。保证软件的需求完全分配给整个软件。详细设计必须足够详细认真,能够根据详细设计报告进行编码。大概进行一周半左右的时间。 (4)、第四周到第六周进行编码 a 、编码比较任务量比较大,需要借阅相关参考书籍 b 、根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。 (5)、第7周进行测试并写出实验报告 三、需求分析 1、概述 1.1、管理员权限 管理员登录之后可以进行客户信息管理、员工信息管理、操作管理、租赁部分、损坏报告和车辆管理共六个部分。 1.2、客户权限 客户登录之后可以查询那些车辆可以租借,那些不可以租借,还可以查询自己的租借。 2、功能需求 管理员权限比较多,登录之后可以进行客户信息管理、员工信息管理、操作管理、租赁 合同部分、损坏报告和车辆管理共六个部分。 1.1 客户信息管理部分 a、对来公司租车或与公司有长期租车业务关系的个人/单位进行登记和管理。 b、只有把客户的信息存入数据库之后才能向该客户提供其他业务服务。 c、需要存入的客户的信息主要有客户的姓名、住址(省、市、区、街道、门牌号)、电话号码等。 1.2 员工管理部分 a、记录员工的各项信息,如姓名、住址(省、市、区、街道、门牌号)、电话号码等。 1.3操作管理部分 a、管理员可以对各个功能模块进行查询、删除、增加、修改更新等操作 1.4 租赁查询部分 a、可以查询所有的租赁协议。 b、可以按条件查询某一范围内的租赁协议,也可以输入精确条件定位一个租赁协议 1.5 损坏报告部分 a、可以对用户租借的车辆进行损坏检查,以及相应的赔偿等等 b、当客户把车还回公司后,公司员工需要对车进行检修,以便发现由客户造成的对车辆的损害。 c、公司也规定对车辆定时地做一些检修工作,以便发现并解除车辆身上的安全隐患。 d、每一次车辆检修的结果,都生成一个“损坏报告”并存入数据库。 e、损坏报告中一个很重要的字段是“损坏程度(损坏星级)”。损坏程度由一个1~5的数值表示,值越大,表示车辆的受损程度越深。 1.6车辆管理部分 a、该部分可以实现增加车辆、修改车辆信息、报废车辆、查询车辆的操作。 b、查询车辆信息时,可以不输入任何条件直接查询,这样得到的是所有的车辆的信息。 c、可以输入车辆制造厂、车型等条件缩小查询结果集。 d、可以修改车辆的所属部门,以实现车辆的部门间调度。 e、可以修改车辆的日租金,以便适应物价的变化。 f、在损坏报告中对车辆的损坏程度做出评级。车辆报废部分可以把那些损坏最严重的 车筛选出来,再进行报废处理(即把车辆信息从数据库删除)。 g、不可以对损坏程度未达到最严重的车进行删除操作。 数据字典 1.1 用户=,使用系统的人, 用户(user)=用户编号+用户名+用户级别+密码+注册时间 1.2 客户=,租车的人, 客户(client)= 客户编号+客户姓名+客户所在街道+城市+省份+邮编+电话+电子邮件 1.3 员工=,描述员工职能, 员工(employee)=员工编号+员工姓名+性别+出生日期+员工家庭所在街道+员工家庭所在成城市+员工家庭所在省份+工作电话+职位+月薪+雇佣日期+所属部门 1.4 部门=,描述部门职能, 部门(outlet)=部门编号+部门所在街道+部门所在市+部门所在省份+部门邮编+部门电话+部门经理 1.5 车辆=,描述车辆属性, 车辆(vehicle)=车辆编号+制车场+车型+车外壳颜色+车容量+日租金+所属部门 1.6 损坏报告=,描述车辆当前状态, 损坏报告(faultReport) =车辆编号+检查日期+检查时间+评语+损坏程度+检查员工编号 3其它需求(包括安全、性能需求) 3.1、综合管理 a、此模块主要对客户以及汽车的具体信息进行管理,分为客户管理和及汽车管理。 b、汽车管理:管理员可以对租赁公司现已拥有的汽车的具体信息进行查看,修改信息或者删除档案(当汽车报废或不再租赁时),也可添加新购进的汽车的具体信息,以便更快地投入租赁市场,方便客户了解,以便做出更好的租赁选择。 C、普通客户管理:管理员对客户的资料可以进行查看。 3.2、业务管理 a、此模块提供对汽车日常业务进行管理,包括汽车预租/出租/续租,汽车维修,还车结算,催车还交以及事故登记。 b、汽车预租:员工可以根据客户需求帮其预租汽车,可以查看及修改预租的相关信息,但是不可以删除客户之前已经预租的汽车,管理员可以修改以及取消客户之前已经预租的汽车,可以查看已经预租汽车的情况等。 c、汽车出租:员工可以根据客户的需求出租汽车,可以查看及修改出租的相关信息, 但也不可以删除已经出租的汽车,而管理员则可以修改,查看以及删除出租汽车的相关情况。当汽车出租时可以打印相关合同,双方签订合同。 d、汽车续租:在客户出租汽车的还车时间三天之前可前往汽车租赁公司办理汽车续租手续,员工在检查完汽车的相关情况后,可根据实际情况调整还车时间以便达到续租的目的。 e、汽车维修:员工可以进行记录汽车相关维修情况,修改,删除维修记录。 f、还车结算:员工对来还车的客户进行查询,统计其它费用(如事故费,罚金费等),算出总费用,收款后返回客户押金以及客户抵押件等。 g、催车还交:员工可以根据出租汽车的还车时间,催促那些还车时间快到了的客户及时还车以免交罚金。 h、事故登记:员工应该根据所出租的汽车发生的事故的具体情况登记入表,以便以后查询,也可修改或删除信息。 3.3、查询报表 a、此模块分为加油记录查询,维修记录查询,汽车预租查询,汽车出租查询,还车结算查询,事故记录查询,单车租赁查询,汽车资料查询以及客户资料查询。 b、此模块可对客户,员工以及汽车相关业务的情况进行查询,对查询到的相关信息可以生成相应的Excel文件以及打印报表,尤其是汽车资料查询还可以生成显示照片的报表等。 3.4、客户需要提前预订车辆。 a、车辆出租由于下述原因而变得复杂。 b、需要提交司机的信息:全名,生日,驾照号码,驾照等级。 c、要记录第三方付款人。 d、确认用户是否签订碰撞损失免责书,责任保险,个人事故保险。 e、签订租车协议。协议号,客户名,租赁类型,车辆序号,车辆价格,汽车离店时间,里程,预期换车的时间等信息。 3.5、还车由于下述原因而变得复杂。 a、油箱不满要计油费到附加费用中。 b、若汽车出现事过(受损,客户伤亡等),确认用户是否签订碰撞损失免责书,责任保险,个人事故保险,没有签订的要计入相应的费用到附加费用中。 c、登记归还日期,时间,里程等信息。 d、系统计算相应的收费数目。 满足上述需求的系统还需要要包括以下几个模块。 (1)系统用户管理模块。 (2)日常业务管理模块。 (3)车辆信息管理模块。 (4)客户会员管理模块。 四、数据库设计 本系统数据库名称为test,数据库中包括:?登录信息表(login)?车辆信息表(vehicle)?员工信息表(employee)?客户信息表(client)?租赁协议报告表 (rentalagreement)?损坏报告表(faultreport)?批发商表(outlet)。各表数据结构 如下: client 表名 数据库用户 clientNo 主键 其他排序字段 索引字段 clientNo、clientTelNo 序号 字段名称 数据类型允许为唯一默认值 约束条件/说明 Y/N (精度范围) 空Y/N 1 clientNo int N Y 客户编号 2 clientName char(10) Y N 客户姓名 3 clientStreet varchar(100Y N 客户所住的街道 ) 4 clientCity char(10) Y N 客户所在城市 5 clientProvince char(10) Y N 客户所在省份 6 clientZipCode char(6) Y N 客户邮编 7 clientTelNo char(15) Y Y 客户电话 8 clientEmailAddreschar(40) Y N 客户电子邮件 s CREATE TABLE `client` ( Mysql脚本 `clientNo` int(11) NOT NULL, `clientName` char(10) default NULL, `clientStreet` varchar(100) default NULL, `clientCity` char(10) default NULL, `clientProvince` char(10) default NULL, `clientZipCode` char(6) default NULL, `clientTelNo` char(15) default NULL, `clientEmailAddress` char(40) default NULL, PRIMARY KEY (`clientNo`), ) employee 表名 数据库用户 employeeNo 主键 其他排序字段 外键 outletNo,参考outlet.outletNo outletNo 索引字段 序号 字段名称 数据类型允许为唯一默认约束条件/说 Y/N (精度范围) 空Y/N 值 明 1 employeeNo int N Y 员工编号 2 name char(8) Y N 员工姓名 3 sex char(2) Y N 性别 4 DOB date Y N 出生日期 5 employeeHomeStreet varchar(200Y N 员工家庭所在 ) 街道 6 employeeHomeCity char(10) Y N 员工家庭所在 城市 7 employeeHomeProvince char(10) Y N 员工家庭所在 省份 8 workTelExt char(12) Y N 工作电话 9 position char(20) Y N 职位 10 salary int Y N 月薪 11 dateStarted date Y N 雇佣日期 12 outletNo int Y N 所属部门 DROP TABLE IF EXISTS `employee`; Mysql脚本 CREATE TABLE `employee` ( `employeeNo` int(11) NOT NULL, `name` char(8) default NULL, `sex` char(2) default NULL, `DOB` date default NULL, `employeeHomeStreet` varchar(200) default NULL, `employeeHomeCity` char(10) default NULL, `employeeHomeProvince` char(10) default NULL, `workTelExt` char(12) default NULL, `position` char(20) default NULL, `salary` int(11) default NULL, `dateStarted` date default NULL, `outletNo` int(11) default NULL, PRIMARY KEY (`employeeNo`), ); outlet 表名 数据库用户 outletNo 主键 外键 managerEmployeeNo,参考Employee.EmployeeNo 其他排序字段 索引字段 outletNo、managerEmployeeNo 序号 字段名称 数据类型允许为唯一默认值 约束条件/说明 Y/N (精度范围) 空Y/N 1 outletNo int N Y 部门编号 2 outletStreet varchar(100Y N 部门所在街道 ) 3 outletCity char(10) Y N 部门所在市 4 outletProvince char(10) Y N 部门所在省份 5 outletZipCode char(6) Y N 部门邮编 6 outletTelNo char(15) Y N 部门电话 7 managerEmployeeNo int Y N 部门经理 DROP TABLE IF EXISTS `outlet`; Mysql脚本 CREATE TABLE `outlet` ( `outletNo` int(11) NOT NULL, `outletStreet` varchar(100) default NULL, `outletCity` char(10) default NULL, `outletProvince` char(10) default NULL, `outletZipCode` char(6) default NULL, `outletTelNo` char(15) default NULL, `managerEmployeeNo` int(11) default NULL, PRIMARY KEY (`outletNo`), ) vehicle 表名 数据库用户 vehicleNo 主键 外键 outletNo,参考outlet.outletNo 其他排序字段 outletNo 索引字段 序号 字段名称 数据类允许为唯一默认值 约束条件/说明 Y/N 型(精度空Y/N 范围) 1 vehicleNo int N Y 车辆编号 2 vehicleMake char(20) Y N 制车厂 3 vehicleModel char(20) Y N 车型 4 color char(10) Y N 车外壳颜色 5 capacity smallint Y N 车容量(可搭载最多 人数) 6 hireRate smallint Y N 日租金 7 outletNo int Y N 所属部门 DROP TABLE IF EXISTS `vehicle`; Mysql脚本 CREATE TABLE `vehicle` ( `vehicleNo` int(11) NOT NULL, `vehicleMake` char(20) default NULL, `vehicleModel` char(20) default NULL, `color` char(10) default NULL, `capacity` smallint(6) default NULL, `hireRate` smallint(6) default NULL, `outletNo` int(11) default NULL, PRIMARY KEY (`vehicleNo`), ) rentalAgreement 表名 数据库用户 rentalNo 主键 外键 clientNo,参考client.clientNo vehicleNo,参考vehicle.No 其他排序字段 索引字段 policyNo,clientNo,vehicleNo 序号 字段名称 数据类允许为唯一默认值 约束条件/说明 Y/N 型(精度空Y/N 范围) 1 rentalNo int N Y 租赁协议号 2 dateStart date Y N 起租日期 3 dateReturn date Y N 预定还车时间 4 mileageBefore int Y N 租前汽车里程数 5 mileageAfter int Y N 还车后汽车里程 数 6 policyNo int Y N 保险单号 7 insuranceCoverTypchar Y N 保险种类 e 8 insurancePremium int Y N 保险金额 9 clientNo int Y N 客户编号 10 vehicleNo int Y N 车辆编号 DROP TABLE IF EXISTS `rentalagreement`; Mysql脚本 CREATE TABLE `rentalagreement` ( `rentalNo` int(11) NOT NULL default '0', `dateStart` date default NULL, `dateReturn` date default NULL, `mileageBefore` int(11) default NULL, `mileageAfter` int(11) default NULL, `policyNo` int(11) default NULL, `insuranceCoverType` char(20) default NULL, `insurancePremium` int(11) default NULL, `clientNo` int(11) default NULL, `vehicleNo` int(11) default NULL, PRIMARY KEY (`rentalNo`), ) faultReport 表名 数据库用户 主键 vehicleNo,dateChecked 外键 employeeNo,参考employee.employeeNo vehicleNo,参考vehicle.vehicleNo 其他排序字段 employeeNo 索引字段 序号 字段名称 数据类允许为唯一默认值 约束条件/说明 Y/N 型(精度空Y/N 范围) 1 vehicleNo int N Y 车辆编号 2 dateChecked date N Y 检查日期 3 timeChecked time Y N 检查时间 4 comments varchar Y N 评语 5 faultStartLeveint Y N 损坏程度 l 6 employeeNo int Y N 检查员工编号 DROP TABLE IF EXISTS `faultreport`; Mysql脚本 CREATE TABLE `faultreport` ( `vehicleNo` int(11) NOT NULL, `dateChecked` date NOT NULL, `timeChecked` time default NULL, `comments` varchar(100) default NULL, `faultStarLevel` int(11) default NULL, `employeeNo` int(11) default NULL, PRIMARY KEY (`vehicleNo`,`dateChecked`), ) 1、ER模型 根据需求分析的结果,我们设计出的实体有如下:Employee实体,Client实体,FaultReport实体,RentalAgreement实体,Outlet实体,Vehicle实体各实体的E-R图描述如下: outletStreet outletNooutletCitymanagerEmpolyoutletProvincOutleteeNoe msgOfSetzipCode telNo make model vehicleNo VehiclecoloroutletNocapacity hireRate rentalNodateStarted dateReturn vehicleNo RentalAgreementmileageBefore mileageAfterclientNo insurancePrempolicyNoium insuranceCoverType namesex CalendarDOB employeeNo EmployeehomeStreet homeCityposition salaryworkTelExt dateStarted cilentStreet clientNameclientCity clientProvincclientNoCliente clientEmailAdclientTelNodressclientZipCode 2、客户管理部分E-R图 根据需求分析给出的数据流图,参照数据字典中的详细描述, 2.1、给出客户管理部分的分E-R图: 低级系统用户11 1 1 创建删除修改查询 客户姓名 n n客户编号 客户nn 客户住址 联系方式 2.2、租车管理部分E-R图 根据需求分析给出的数据流图,参照数据字典中的详细描述,给出租车管理部分的分E-R图: 所属部门 联系方式日租金 客户住址车载量车辆n租用1客户 客户ID1车辆ID 低级系统用拥有户 n1 租赁协议n创建 租车起止日保险信息期 2.3 车辆检修管理部分E-R图 客户 1 退还 n n车辆 1检修 拥有 1 n 低级系统用员工1叙述n损坏报告n录入1户 2.4 租赁协议查询部分E-R图 高级系统用 户 协议编号1 查询车辆编号 n 客户编号 租赁协议 保险信息 租车起止日 期 2.5、 车辆购入、查询、信息修改部分E-R图 所属部门n增加1 日租金 低级系统用车载量车辆n查询1户 车辆ID n删除1 3、数据需求 :系统外部 :实物或单据 :实物或信息流向 :处理 :数据存储 员工 查询 汽车信息表 普通客户/会员 员工信息表 信息登记 汽车信息登记 管理员 员工信息登记 客户信息表 4、数据流图: 4.1、数据流图1 租车公司管理人员 系统时间 用户管理 数据维护 当前日期 租车公司车 辆管理从系 统 车辆查询 租车公司工作人员 客户 预约车辆 损坏赔偿单 图2 顶层数据流图 4.2、数据流图2: 租车公司管理人员 管理操作1 身租车公司工作人 份员 判 断 客户 预约车辆要求 图3 0层数据流图 4.3、数据流图3 用户文件 用户单 维护日志 数据维护操作 图4 1层数据流图a 4.4、数据流图4 客户情况 查询操作 处理操作车辆情况 2.2 工作人员 统计表 工作操作申请 管理操作 人员新车入库 处理管理操作 车辆注销 2.3 2.1 车辆分类 租车还车操作 身份证 处理租进行业务车2.5 2.4 处理归 归还车辆 还2.6 图5 一层数据流图b 4.5、数据流图5 预约单 处理预约预约操作 3.2 客户 客户操作客户情况 3.1 车辆情况 处理查询3.3 查询操作 统计表 图6 一层数据流图c 4.6、数据流图6 客户文件 客户情况 查询客户 2.2.2 查询客户情况 租 车 文查询要求 查询车 件 查询类别处车辆情况 查询车辆理2.2.1 2.2.3 辆情况 目 录 统计要求 文 件 统计车辆 2.2.4 统计表 图7 二层数据流图a 4.7、数据流图7 入库处理 新车入库 2.3.2 目 录管理要求 车辆注销 管理类别处文注销处理理 件 2.3.3 分类处理车辆分类 2.3.4 图8 二层数据流图c 4.8、数据流图8 客户文件 有效的身份证 身份证 检查所租车检查身份证的等级2.5.2 2.5.1 无效客户 核准后的身份证 目办理租车租录2.5.3 车文文件 件 图9 二层数据流图d 4.9、数据流图10 租车文件 目录文件 要还车 逾期天数 超时费用单 办理还车办理逾期缴费 2.6.1 或损坏赔偿 或车有损坏 其他费用单 图10 二层数据流图e 五、应用程序设计 1、应用程序框架设计 1.1、系统结构 此汽车租赁管理系统主要实现6个大的功能模块:综合管理、业务管理,基本设置,查询报表、统计排行、系统维护。每个模块有分成多详细的功能子模块。详情如下图3-1所示: 2、功能模块设计 2.1、登录界面 a、当输入密码之后可以正常进入 b、当输入错误的用户名之后,界面如图所示 2.2、管理员功能能模块 a、主界面 包括“车辆信息”、“员工信息”、“客户信息”、“合同信息”、“损坏记录”五个模块。 新添车辆 错误信息记录 错误信息 车辆修好之后,删除损坏信息 删除损坏信息成功 新增员工信息 员工信息增加成功 新添客户信息 添加成功 删除客户信息 删除客户信息成功 新添车辆 车辆信息添加成 新合同增加 添加合同信息成功 六、调试与分析 1、当输入汽车信息的时候,结果却不能正确显示,如图,结果没有显示,插入不成功 调试分析原因:数据库新建的关于损坏记录的表(faultreport)与代码中的表的名字不一样。导致虽然能运行,但不能正确插入。改了名字之后,正常插入。 总结 1、这次课程设计我们组设计的是一个汽车租赁管理系统,通过这次可视化编程课程设计,我了解了一个完整的数据库系统设计的步骤,掌握了租车公司汽车租赁系统的业务流程及管理,巩固了我在课堂上所学的理论知识,更进一步的了解了面向对象编程的基本思想,并且对可视化编程工具VC.NET及SQL Server2005软件的应用有了更进一步的掌握,掌握了界面设计、C#语言编写代码设计各功能模块的步骤,并学会了VS2008及用SQL Server2005建立的数据库连接的代码设计,开拓了自己的知识面,同时也让我看到了自己的不足,很多东西单独用可以做出来,可是连贯起来就出现了很多错,还有很多不足,需要努力。 2、当然这次设计在学哥学姐以及同学的帮助下也有了很大的收获和体会,见证了一个系统的诞生,虽然不复杂,但它可以实现一些基本的功能,很有成就感,是理论与实践的一次完美的结合,而且也学到很多课本上没有涉及到的知识,对编程经验也起到了累积作用,也是第一次了解了一个系统诞生所要经过的流程,前期、设计、完成、后期一个也不能少,不像平时只用编一个程序,至于需求和维护没有涉及,这次课程设计就像一次工作的体验,从头到尾不遗余力的把它完成。体会就是自己在这次设计当中遇到了很多问题,一开始的时候根本无从下手、什么都不会,但是通过和小组成员的讨论,查阅资料、网上查询等有了基本俩凭借,遇到的问题也和其他同学进行交流、探讨,问题得以一一解决。总之,在这次程序设计中,我学会到了很多以前没有了解到的知识,当然系统还有很多不足,比如车辆信息管理的删除操作没有实现等,这还需要在以后的学习中慢慢改进。 参考文献 《MySQL技术内幕》,姜承尧著 机械工业出版社 MySQL 4从入门到精通 (美) Ian Gilfillan著 电子工业出版社 MySQL高级配置和管理 卢湘江, 李向荣, 晏子编著 清华大学出版社 NetBeans 6.0程序开发技术详解 许勇, 王黎等编著 清华大学出版社 NetBeans IDE 6高级编程 (美) Adam Myatt等著 清华大学出版社 附录 1、操作数据库代码 2、 3、import com.mysql.jdbc.ResultSet; 4、import java.sql.DriverManager; 5、import java.sql.SQLException; 6、import java.sql.Statement; 7、 8、/* 9、 * To change this template, choose Tools | Templates 10、 * and open the template in the editor. 11、 */ 12、 13、/** 14、 * 15、 * @author 马寄 闪珊珊 16、 * @time 2012-11-16 13:35 17、 * @for do database 18、 */ 19、public class doDataBase { 20、 static ResultSet rs; 21、 static Statement stmt; 22、 23、 public void ConnectMySql(){//对数据库进行连接 24、 try { 25、 Class.forName("com.mysql.jdbc.Driver"); 26、 // 加载MYSQL JDBC驱动程序 // 27、 // Class.forName("org.gjt.mm.mysql.Driver"); 28、 System.out.println("成功添加驱动包~"); 29、 } catch (Exception e) { 30、 System.out.print("添加驱动失败~"); 31、 } 32、 try { 33、 java.sql.Connection connect = DriverManager.getConnection( 34、 "jdbc:mysql://localhost:3306/test", "root", "654869"); 35、// 连接URL为 jdbc:mysql//服务器地址/数据库名 ,后面的2个参数分别是登陆用户名和密码 S 36、 System.out.println("成功连接数据库~"); 37、 38、 stmt = connect.createStatement(); 39、 40、 // 为表的名称 41、 42、 // System.out.println(password); 43、 } catch (Exception e) { 44、 System.out.print("获取数据出错~"); 45、 } 46、 47、 48、 } 49、 /*执行sql语句的同时,返回游标rs,把结果放到rs中 50、 * 参数:sql 51、 * return rs; 52、 */ 53、 public ResultSet do_SQL(String Sql) throws SQLException{ 54、 55、 rs = (ResultSet) stmt.executeQuery(Sql); 56、 return rs; 57、 } 58、 59、 /*登录时候对数据库的操作函数 60、 * 无参数 61、 * return null; 62、 */ 63、 public void get_login_id_password() throws SQLException{// 64、 65、 rs = (ResultSet) stmt.executeQuery("select ID,password from login "); 66、 67、 } 68、 /*管理员注册 69、 * 操作:对数据库login表进行插入操作 70、 * 参数:id,password 71、 * return null; 72、 */ 73、 public void insert_id_password(String id,String password) throws SQLException{ 74、 75、 stmt.executeQuery("insert into login(ID,password)values('"+id+"'"+","+"'"+password+"')" ); 76、 } 77、 78、 /*判断车辆的出租状态 79、 * 操作:对合同表和车辆表的连接查询 80、 *参数:无 81、 * return rs;返回rs集合 82、 */ 83、 public ResultSet judge_car_state() throws SQLException{ 84、 85、 rs=(ResultSet) stmt.executeQuery("select rentalNo,vehicle.vehLicenseNo from rentalagreement,vehicle where rentalagreement.vehLicenseNo=vehicle.vehLicenseNo; "); 86、 while(rs.next()){ 87、 88、 } 89、 return rs; 90、 } 91、 92、} 2、员工信息 import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author 马寄闪珊珊 * @time 2012-11-23 16:23 * @for 对错误报告进行插入和更新数据 */ public class Fault_info_UI extends javax.swing.JFrame { /** * Creates new form Fault_info_UI */ public Fault_info_UI() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField(); jTextField4 = new javax.swing.JTextField(); ok = new java.awt.Button(); exit = new java.awt.Button(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jLabel1.setText("车辆编号"); jLabel2.setText("检查日期"); jLabel3.setText("评价"); jLabel4.setText("员工号"); jLabel5.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N jLabel5.setText("请仔细输入错误报告信息"); ok.setLabel("OK"); ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okActionPerformed(evt); } }); exit.setLabel("EXIT"); exit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(37, 37, 37) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(jLabel3) .addComponent(jLabel2) .addComponent(jLabel1)) .addGap(59, 59, 59) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField3) .addComponent(jTextField4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(ok, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(19, 19, 19) .addComponent(exit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(42, 42, 42)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(119, Short.MAX_VALUE) .addComponent(jLabel5) .addGap(83, 83, 83)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel5) .addGap(66, 66, 66) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(24, 24, 24) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(21, 21, 21) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(24, 24, 24) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 84, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(exit, javax.swing.GroupLayout.DEFAULT_SIZE, 41, Short.MAX_VALUE) .addComponent(ok, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 75, Short.MAX_VALUE)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-416)/2, (screenSize.height-488)/2, 416, 488); }// private void okActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Operate_UI.state.equals("insert")){ //执行对数据库的插入操作 String sql="insert into faultreport(vehLicenseNo,dataChecked,comments,employeeNo)"+"values(" + "'" +jTextField1.getText().toString()+"'"+","+"'" +jTextField2.getText().toString()+"'"+"," +"'"+jTextField3.getText().toString()+"'" +"," + " '" +jTextField4.getText().toString()+"'"+")"; try { doDataBase.stmt.execute(sql); } catch (SQLException ex) { Logger.getLogger(Car_info_UI.class.getName()).log(Level.SEVERE, null, ex); }} if(Operate_UI.state.equals("update")){ String sql="update faultreport set"+" vehLicenseNo="+"'"+jTextField1.getText().toString()+"'"+","+"dataChecked="+"'"+jTextField2.getText().toString()+"'"+","+"comments="+"'"+jTextField3.getText().toString()+"'"+","+"employeeNo="+"'"+jTextField4.getText().toString()+"'"+"where vehLicenseNo="+"'"+jTextField1.getText().toString()+"'"; try { doDataBase.stmt.execute(sql); //执行对数据库的更新操作 } catch (SQLException ex) { Logger.getLogger(Car_info_UI.class.getName()).log(Level.SEVERE, null, ex); } } jTextField1.setText(null); jTextField2.setText(null); jTextField3.setText(null); jTextField4.setText(null); } private void exitActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Fault_info_UI.this.dispose(); } // Variables declaration - do not modify private java.awt.Button exit; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; public static javax.swing.JTextField jTextField1; public static javax.swing.JTextField jTextField2; public static javax.swing.JTextField jTextField3; public static javax.swing.JTextField jTextField4; private java.awt.Button ok; // End of variables declaration } 3、读表代码 import java.sql.SQLException; import javax.swing.table.DefaultTableModel; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author 马寄 闪珊珊 * @time 2012-11-20 20:58 * @for jTable表格操作添加数据 */ public class TableModel { DefaultTableModel info; //对jtable表格进行数据设置,车辆信息操作 public void get_car_info() throws SQLException{ info = new DefaultTableModel(new String [] { "车辆编码", "制造厂", "车系", "颜色", "门数", "容量", "出租价格", "批发 商号","出租状态" }, 0); while(doDataBase.rs.next()){ String vno=doDataBase.rs.getString("vehLicenseNo"); String vmake=doDataBase.rs.getString("vehicleMake"); String vmodel=doDataBase.rs.getString("vehicleMode"); String vcolor=doDataBase.rs.getString("color"); String vdoors=doDataBase.rs.getString("noDoors"); String vcapa=doDataBase.rs.getString("capacity"); String vhire=doDataBase.rs.getString("hireRate"); String voutno=doDataBase.rs.getString("outletNo"); String voutno1=doDataBase.rs.getString("state"); String[] str_row = {vno, vmake,vmodel,vcolor,vdoors,vcapa,vhire,voutno,voutno1}; // ,,,,,,,, info.addRow(str_row); } } //得到员工的信息来设置表格信息的方法 public void get_employee_info() throws SQLException{ info = new DefaultTableModel(new String [] { "员工编号", "头衔", "名字", "地址", "工作电话", "家庭电话", "邮箱地址", "性别","薪水","上岗时间","批发商号" }, 0); while(doDataBase.rs.next()){ String vno=doDataBase.rs.getString("employeeNo"); String vmake=doDataBase.rs.getString("title"); String vmodel=doDataBase.rs.getString("employeeName"); String vcolor=doDataBase.rs.getString("employeeAddress"); String vdoors=doDataBase.rs.getString("workTelExt"); String vcapa=doDataBase.rs.getString("homeTelNo"); String vhire=doDataBase.rs.getString("empEmailAddress"); String voutno=doDataBase.rs.getString("employeeSex"); String voutno1=doDataBase.rs.getString("employeeSalary"); String voutno2=doDataBase.rs.getString("dataStarted"); String voutno3=doDataBase.rs.getString("outletNo"); String[] str_row = {vno, vmake,vmodel,vcolor,vdoors,vcapa,vhire,voutno,voutno1,voutno2,voutno3}; // ,,,,,,,, info.addRow(str_row); } } //得到客户的信息然后放到表格中的函数 public void get_client_info() throws SQLException{ info = new DefaultTableModel(new String [] { "客户编号", "姓名", "街道", "城市", "国家", "邮政编码","电话","传真","网 站","联系人姓名","联系人电话","联系人传真","联系人邮箱" }, 0); while(doDataBase.rs.next()){ String vno=doDataBase.rs.getString("clientNo"); String vmake=doDataBase.rs.getString("clientName"); String vmodel=doDataBase.rs.getString("clientStreet"); String vcolor=doDataBase.rs.getString("clientCity"); String vdoors=doDataBase.rs.getString("clientState"); String vcapa=doDataBase.rs.getString("clientZipCode"); String vhire=doDataBase.rs.getString("clientTelNo"); String voutno=doDataBase.rs.getString("clientFaxNo"); String voutno1=doDataBase.rs.getString("clientWebAddress"); String voutno2=doDataBase.rs.getString("contactName"); String voutno3=doDataBase.rs.getString("contactTelNo"); String voutno4=doDataBase.rs.getString("contactFaxNo"); String voutno5=doDataBase.rs.getString("contactEmailAddress"); String[] str_row = {vno, vmake,vmodel,vcolor,vdoors,vcapa,vhire,voutno,voutno1,voutno2,voutno3,voutno4,voutno5}; // ,,,,,,,, info.addRow(str_row); } } //得到数据库中的合同信息,显示到表格中 public void get_rantal_info() throws SQLException{ info = new DefaultTableModel(new String [] { "合同编号", "起始时间", "截至时间", "租前行驶距离", "租后行驶距离", "证 件号","保险类型","保险金","客户号","车辆编号" }, 0); while(doDataBase.rs.next()){ String vno=doDataBase.rs.getString("rentalNo"); String vmake=doDataBase.rs.getString("dateStart"); String vmodel=doDataBase.rs.getString("dateReturn"); String vcolor=doDataBase.rs.getString("mileageBefore"); String vdoors=doDataBase.rs.getString("mileageAfter"); String vcapa1=doDataBase.rs.getString("policyNo"); String vcapa=doDataBase.rs.getString("insuranceCoverType"); String vhire=doDataBase.rs.getString("insurancePremium"); String voutno=doDataBase.rs.getString("clientNo"); String voutno1=doDataBase.rs.getString("vehLicenseNo"); String[] str_row = {vno, vmake,vmodel,vcolor,vdoors,vcapa1,vcapa,vhire,voutno,voutno1}; // ,,,,,,,, info.addRow(str_row);} } //得到错误报告的信息,插入到表格中 public void get_fault_info() throws SQLException{ info = new DefaultTableModel(new String [] { "车辆编号", "检查日期", "评价", "员工号" }, 0); while(doDataBase.rs.next()){ String vno=doDataBase.rs.getString("vehLicenseNo"); String vmake=doDataBase.rs.getString("dataChecked"); String vmodel=doDataBase.rs.getString("comments"); String vcolor=doDataBase.rs.getString("employeeNo"); String[] str_row = {vno, vmake,vmodel,vcolor}; // ,,,,,,,, info.addRow(str_row);} } }
/
本文档为【数据库综合实验报告格式模版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索