汽车调度管理系统-数据库课程设计(共13页).doc
精选优质文档-倾情为你奉上汽车调度管理系统1.需求分析1.1信息要求:数据库中需要存储的信息有: 1、车辆的基本数据,包括车辆车辆编码,车牌号,车辆类型,载重,座位数,车辆状态,年检合格,保险到期,备注等信息 2、驾驶员基本数据,包括驾驶员姓名,性别,生日,身份证号,手机号,驾驶证号,驾驶证类型,有无病事假 3、操作人员基本数据,包括车队管理员,车辆管理员,司机管理员的联系方式,地址,身份证号,年龄,性别,系统登录密码等图1. 汽车调度系统功能表1.2处理要求:系统管理: 1、可按照职务类型创建用户并对用户权限的定义 2、对登录用户进行密码验证管理 3、车队管理员可创建车辆管理员,司机管理员并进行派车登记的填写;车辆管理员负责车辆的信息包括新车的入库、维修、出库、回库登记;司机管理员负责新司机的加入、司机的出车、病事假、返工的登记;业务员负责申请车辆信息与司机的信息的查询与登记。 1.基本信息管理:l 车辆基本信息登记,登记信息为上述l 司机基本信息登记,登记信息为上述l 职员基本信息登记2.用车调度管理:l 查出可调度的符合申请要求的车辆l 登记出车信息l 查询正在出车的信息l 查询正在检修的车辆信息l 查询正在请假的司机信息3.车辆维修管理:l 登记信息包括车牌号,送修日期,送修原因,维保费用,取车备注l 回库登记,登记信息包括车牌号,驾驶员,回库时间,完成情况等信息l 因司机病事假而导致无法正常出车的重新信息调动4.司机病事假管理:l 登记司机病事假信息,包括姓名,请假原因,请假时长l 因司机病事假而导致无法正常出车的重新信息调动5.数据查询管理:l 车辆基本信息查询,根据所需车辆要求如载客数,载重数信息查询可用车辆,该车辆应为人数载重满足要求,车辆状态符合:未出车,未在维修,年检合格,保险未到期l 车辆出车记录查询,可以查询到某辆车的某段间的出车记录l 驾驶员出车记录查询,可以查询到某驾驶员的某段时间的出车信息 1.3安全性与完整性要求 1、系统管理员创建用户,并赋予用户相应的权限 2、进行用户密码管理 3、避免数据冗余,使数据简洁清晰4、 避免误删,空值,重复等数据操作存储错误1.4数据字典1.4.1数据项表1.车辆信息字段字段类型大小范围约束车牌号Char(10)主码车型Char(8)大型客车(>20) 中型客车(920)小型客车(<9)重型货车(>12t) 中型货车(4.512t)轻型货车(<4.5t)微型货车(<0.75t)车载重Float(4)重型货车(>12t) 中型货车(4.512t)轻型货车(<4.5t)微型货车(<0.75t)车座位数Int(2)大型客车(>20) 中型客车(920)小型客车(<9)入库时间DateTime表2.司机信息字段字段类型大小范围约束司机姓名Char(8) 非空司机联系方式Char(11)非空驾驶证号Char(11)主码驾驶证类别Char(2)A1,A2,A3,B1,B2,C1非空表3.请假信息字段字段类型大小范围约束请假编号Char(8)主码司机姓名Char(10)非空驾驶证号Char(18)外码请假日期DateTime非空返工时间DateTime非空 表4.维修信息字段列名字段类型大小范围约束维修编号Char(10)非空主码车牌号Char(10)外码参照表1 CCard送修日期DateTime非空 表5.出车登记信息字段列名字段类型大小范围约束登记编号Char(10)非空主码车牌号Char(10)非空外码 参照表1 车型司机姓名Char(8)司机联系方式Char(11)驾驶证号Char(18)非空外码 参照表2申请时间DateTime返库时间DateTime客户姓名Char(8)客户联系方式Char(11) 表6.用户信息字段列名字段类型大小范围约束用户编号Char(8)非空主码用户姓名Char(8)非空用户身份证号Char(18)非空用户联系方式Char(11)非空用户职位Char(10)非空1.4.2数据流,数据存储及处理过程如下图:图2.汽车调度系统数据流图 图3.汽车调度管理系统用户关系图三、 概念设计图4.汽车管理E-R图图5.司机管理E-R图图6.调度管理E-R图图7.申请管理E-R图3.逻辑设计3.1关系模型将E-R图转换成对应的关系模型,关系的码用下横线标出1. 车辆信息表(车牌号,车型,车载重,车座位数,入库时间)2. 司机信息(司机姓名,司机联系方式,驾驶证号,驾驶证类别)3. 请假信息(请假编号,司机姓名,驾驶证号,请假日期,返工时间)4. 维修信息(维修编号,车牌号,送修日期,返库时间)5. 出车登记信息(登记编号,车牌号,车型,司机姓名,司机联系方式,驾驶证号,申请时间,返库时间,客户姓名,客户联系方式)6. 用户信息(用户编号,用户姓名,用户身份证号,用户联系方式,用户职位)3.2视图设计(设计用户子模式)3.2.1供业务员查看的视图:l 一周内业务信息视图(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间,客户姓名,客户联系方式)Creat View Work_Info(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间,客户姓名,客户联系方式)ASSelect *From出车登记信息3.2.2供车队管理员查看的视图l 无病假司机视图(司机姓名,司机联系方式,驾驶证号,驾驶证类别)Creat View HeathDriver_Info(司机姓名,司机联系方式,驾驶证号,驾驶证类别)ASSelect *From 司机信息Where司机姓名 NOT Exists 请假信息.司机姓名 AND GETDATE() =< 返工时间 l 无维修车辆视图(车牌号,车型,车载重,车座位数)Creat View HeathCar_Info(车牌号,车型,车载重,车座位数)ASSelect *From车辆信息Where车牌号 NOT Exists 维修信息.车牌号 AND GETDATE() =< 返库时间l 正在执行业务车辆视图(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间)Create View OnWorkCar_Info(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间,客户姓名,客户联系方式)ASSelect *From出车登记信息Where 返库时间 >= GETDATE()3.2.3供车辆管理员查看的视图l 查询B类车近期业务:Create View Car1_Task_Info(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间,客户姓名,客户联系方式)ASSelect *From出车登记信息Where车型 = B3.2.4供司机管理员查看的视图l 查询张三近期业务(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间,客户姓名,客户联系方式)Create View Drive1_Work_Info(登记编号,车牌号,车型,司机姓名,司机联系方式,申请时间,返库时间,客户姓名,客户联系方式)ASSelect *From出车登记信息Where司机姓名=张三4.物理设计4.1索引设计为了加快查询速度,在基本表上建立了3个最经常用到的查询,加快查询速度。Create Cluster CarInfo Index ON 车辆信息表(车型)Create Unique TaskInfo Index ON出车登记信息(登记编号)Create Cluster DriverInfo Index ON司机信息(驾驶证类别) 数据库Sql语句select distinct 汽车信息.车牌号,汽车信息.车型from 申请信息,出车登记信息,汽车信息where 申请信息.车型=汽车信息.车型 and 汽车信息.车牌号 not in ( select 汽车信息.车牌号 from 出车登记信息,维修信息,汽车信息 where (汽车信息.车牌号 = 出车登记信息.车牌号 and 出车登记信息.返库时间 is null) or (汽车信息.车牌号 = 维修信息.车牌号 and 维修信息.返库时间 is null) ) )*+select distinct 司机信息.司机姓名,司机信息.驾驶证号,司机信息.司机联系方式from 申请信息,出车登记信息,司机信息where 申请信息.驾驶证类型 =司机信息.驾驶证类型and 司机信息.驾驶证号 not in(select 司机信息.驾驶证号 from 出车登记信息,请假信息,司机信息where(司机信息.驾驶证号=出车登记信息.驾驶证号 and 出车登记信息.返库时间 is null)or(司机信息.驾驶证号=请假信息.驾驶证号 and 请假信息.返工时间 is null)*+Java 连接数据库import java.sql.*;import javax.swing.*;import java.awt.*;import javax.swing.JOptionPane;public class databaseprotected static String driver="net.sourceforge.jtds.jdbc.Driver"protected static String url="jdbc:jtds:sqlserver:/localhost:1433;DatabaseName=database_zbg"protected static String username="sa"protected static String password="1234"protected static Connection conn=null;private database()tryif(conn=null)Class.forName(driver);conn=DriverManager.getConnection(url,username,password);else return;catch(Exception e)e.printStackTrace();/数据库查询操作public static ResultSet executeQuery(String sql)tryif(conn=null)new database();return conn.createStatement().executeQuery(sql);catch (SQLException e)e.printStackTrace();return null;/数据库更新public static int executeUpdate(String sql)tryif(conn=null)new database();return conn.createStatement().executeUpdate(sql);catch(SQLException e)System.out.println(e.getMessage();return -1;finallyimport java.sql.ResultSet;import java.sql.SQLException;public class login public static void main(String args) throws SQLException String sqlstr="SELECT * FROM ps "ResultSet result=database.executeQuery(sqlstr);while(result.next()String s1,s2,s3,s4,s5,s6,s7;s1= result.getString(1);s2= result.getString(2);s3= result.getString(3);s4= result.getString(4);s5= result.getString(5);s6= result.getString(6);s7= result.getString(7); System.out.print(s1+"tt");System.out.print(s2+"tt");System.out.print(s3+"tt");System.out.print(s4+"tt");System.out.print(s5+"tt");System.out.print(s6+"tt");System.out.println(s7);专心-专注-专业