目录
一.需求分析
1.1 基本情况说明
随着城市的发展,汽车线路和汽车数量的剧增,汽车运营公司迫切的需要一种简单高效的汽车调度系统。为提高我国汽车企业的运营管理效率,适应时代对汽车事业提出的阶段性发展需求,本文设计并实现一种能够适应汽车发展需要的综合的汽车调度系统。
1.2 数据库系统的预期功能
1.2.1 信息要求
数据库中需要存储的信息有;
1)车辆的基本数据:包括汽车编号,汽车车型,购买时间,使用时间,是否有座,有无电视,有无空调等信息。
2)车票的基本数据:包括车票编号,汽车编号,起始城市,到达城市,车票价格等信息。
3)汽车线路的基本数据:包括线路编号,起始城市,到达城市,起始日期,汽车编号,车票价格等信息。
1.2.2 处理要求
1)系统管理
*可按照职务类型创建用户并对用户权限进行定义;
*对登录用户进行密码验证管理;
*车队管理员可创建车辆管理员、司机管理员并进行派车登记的填写;车辆管理员负责车辆的信息包括车辆的出车,维修,收车及登记;司机管理员负责司机的出车,病事假,返工的登记;业务管理员负责申请车辆信息与司机的信息的查询与登记。
2)基本信息管理:
*车辆基本信息登记:登记信息如上述。
*车票基本信息登记:登记信息为上述。
*车辆路线基本信息登记。
3)数据查询与更新管理:
*车辆基本信息查询与更新:根据所需车辆要求查询可用车辆,该车辆时间上应满足在发车时间与收车时间之间的要求,车辆状态应符合:已发车,未收车,未在维修。并对车辆数据进行增加,删除和修改操作。
*车辆出车记录查询与更新:查询车辆在各次运营中的乘客数,及总票价。并对相关数据进行插入,删除和修改操作。
*车辆维修记录查询与更新:查询各车辆在各个时间的维修情况,并对相关数据进行插入,删除和修改操作。
4)车辆维修管理:
*登记信息包括车次号,送修日期,送修原因,维保费用,取车备注。
*回库登记,登记信息包括车次号,驾驶员,回库时间,维修完成情况。
5)用车调度管理:
*查出可调度的符合申请要求的车辆。
*登记出车信息。
*查询正在检修的车辆信息。
1.3 数据安全性与完整性要求
*系统管理员创建用户,并赋予用户相应的权限。
*进行用户密码管理
*避免数据冗余,使数据简洁清晰
*避免误删,空值,重复等数据操作存储错误。
1.4 数据项
表1 车辆信息表
名称 | 类型 |
车次 | Char(9) |
车号 | Char(10) |
发车时间 | Char(8) |
收车时间 | Char(8) |
运营次数 | Int(6) |
起点站 | Char(16) |
终点站 | Char(20) |
表2 车票信息表
名称 | 类型 |
车票编号 | Char(10) |
车辆编号 | Char(10) |
起始城市 | Char(10) |
到达城市 | Char(10) |
车票价格 | Int(5) |
表3 汽车线路信息表
名称 | 类型 |
线路编号 | Char(10) |
起始城市 | Char(20) |
到达城市 | Char(20) |
起始日期 | Date(8) |
汽车编号 | Char(10) |
车票价格 | Int(4) |
备注 | 备注型(4) |
表4 汽车信息表
名称 | 类型 |
汽车编号 | Char(10) |
汽车车型 | Char(20) |
购买时间 | Date(8) |
使用时间 | Date(8) |
是否有坐 | Char(2) |
有无电视 | Char(2) |
有无空调 | Char(2) |
表5 维修
名称 | 类型 |
车号 | Char(10) |
维修费用 | Int(10) |
故障类型 | Char(10) |
日期 | Char(10) |
表6 收入
名称 | 类型 |
车次 | Char(10) |
车号 | Char(10) |
乘客数 | Int(10) |
单位票价 | float(10) |
日期 | Char(10) |
表7 结算
名称 | 类型 |
车次 | Char(10) |
收入 | Float(10) |
维修费用 | Float(10) |
利润 | Float(10) |
二.概念结构设计
图1 E-R图
根据要实现的功能做出E-R图如上,E-R图为原创,使用PRESSON所做。
三.逻辑结构设计
将E-R图转换成对应的关系模型,关系的码用下横线标出
1.车辆(汽车编号,汽车车型,购买时间,使用时间,是否有座,有无电视,有无空调)
2.车票(车票编号,汽车编号,起始城市,到达城市,车票价格)
3.汽车线路(线路编号,起始城市,到达城市,起始日期,汽车编号,车票价格)
四.功能模块结构设计
图2 功能模块图
1.登陆界面
2.欢迎界面
1.欢迎界面
3.查询线路信息
4.添加线路信息
5.修改线路信息
6.添加车票信息报表
六.主要代码
程序1 登录
x=allt(thisform.text1.value) y=allt(thisform.text2.value)
set exact on locate for 账号=x if found() if y=密码 a=messageb(' 欢迎进入本系统 ',1+0+48,'登录系统') if a=1 do form 欢迎界面 endif else b=messageb(' 密码错误 ',5+0+48,'登录系统') if b=4 thisform.text1.setfocus thisform.text1.value='' thisform.text2.value='' return endif endif else b=messageb(' 密码错误 ',5+0+48,'登录系统') if b=4 thisform.text1.setfocus thisform.text1.value='' thisform.text2.value='' return endif endif |
程序2 查询线路信息
x=allt(thisform.text1.value) set exact on locate for 线路编号=x if found() report form 查询线路信息 else messagebox(' 对不起,没有查找到此编号 ','提示信息') thisform.text1.value='' thisform.text1.setfocus endif |
程序3 添加线路信息
a2=ALLT(ThisForm.text1.Value) a3=ALLT(ThisForm.text2.Value) a4=ALLT(ThisForm.text3.Value) a5=ALLT(ThisForm.text4.Value) a6=ALLT(ThisForm.text5.Value) a7=ALLT(ThisForm.text6.Value) a8=ALLT(ThisForm.text7.Value) Insert Into 汽车线路信息表 Values (a2,a3,a4,a5,a6,a7,a8) MessageBox("录入成功",64,"提示") |
程序4 修改密码
x=allt(thisform.text1.value) y=allt(thisform.text2.value) z=allt(thisform.text3.value) if x='admin' locate for 账号=x if found() if y==z replace 密码 with y messageb(' 修改成功! ',0+48+256,'修改密码提示') else a=messageb(' 两次输入密码不同,请重新输入! ',0+48+256,'修改密码提示') if a=1 thisform.text1.value='' thisform.text2.value='' thisform.text3.value='' thisform.text1.setfocus endif endif endif else messageb(' 请输入用户名 ',0+48+256,'修改密码提示') endif |
程序5 添加车票信息
a2=ALLT(ThisForm.text1.Value) a3=ALLT(ThisForm.text2.Value) a4=ALLT(ThisForm.text3.Value) a5=ALLT(ThisForm.text4.Value) a6=ALLT(ThisForm.text5.Value) a7=ALLT(ThisForm.text6.Value)
Insert Into 车票信息表 Values (a2,a3,a4,a5,a6,a7) MessageBox("录入成功",64,"提示") |
程序6 添加汽车信息
a2=ALLT(ThisForm.text1.Value) a3=ALLT(ThisForm.text2.Value) a4=ALLT(ThisForm.text3.Value) a5=ALLT(ThisForm.text4.Value) a6=ALLT(ThisForm.text5.Value) a7=ALLT(ThisForm.text6.Value) a8=ALLT(ThisForm.text7.Value) Insert Into 汽车信息表 Values (a2,a3,a4,a5,a6,a7,a8) MessageBox("录入成功",64,"提示") |
程序7 浏览车票信息
*首条 GO top
thisform.command1.enabled=.f. thisform.command2.enabled=.f.
thisform.command3.enabled=.t. thisform.command4.enabled=.t.
thisform.refresh
*上一条 skip -1 if recno()=1 thisform.command1.enabled=.f. thisform.command2.enabled=.f. endif thisform.command3.enabled=.t. thisform.command4.enabled=.t. thisform.refresh
*下一条 skip 1 if recno()=reccount() thisform.command3.enabled=.f. thisform.command4.enabled=.f. endif thisform.command1.enabled=.t. thisform.command2.enabled=.t. thisform.refresh
*末条 go bottom thisform.command3.enabled=.f. thisform.command4.enabled=.f.
thisform.command1.enabled=.t. thisform.command2.enabled=.t.
thisform.refresh |
七. 总结
1.设计方案的主要优点及不足
设计方案较为全面的考虑到了用户的需求,从用户的需求出发,分别实现了车票信息,车辆信息及线路信息的的查询功能和更新功能(插入,删除和修改)。同时也生成了菜单和相应的统计报表。但是由于临时更换题目,报告和程序中有的部分没来得及更改,也没有来得及对功能进行完善,没有实现用户的分级管理和结算功能。可以在此方面加以改进和推广。
2.收获及建议
本次课程设计中,加强了自己的动手能力,在与同学的交流中较好的完成了本次课程设计,也加强了使用网络进行自主学习的能力。同时,本次课程设计也使我对vfp软件有了更好的了解和更深的学习。