软件综合课程设计车辆调度管理软件设计.doc

上传人:文库蛋蛋多 文档编号:2884372 上传时间:2023-03-01 格式:DOC 页数:33 大小:157.50KB
返回 下载 相关 举报
软件综合课程设计车辆调度管理软件设计.doc_第1页
第1页 / 共33页
软件综合课程设计车辆调度管理软件设计.doc_第2页
第2页 / 共33页
软件综合课程设计车辆调度管理软件设计.doc_第3页
第3页 / 共33页
软件综合课程设计车辆调度管理软件设计.doc_第4页
第4页 / 共33页
软件综合课程设计车辆调度管理软件设计.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《软件综合课程设计车辆调度管理软件设计.doc》由会员分享,可在线阅读,更多相关《软件综合课程设计车辆调度管理软件设计.doc(33页珍藏版)》请在三一办公上搜索。

1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:软件综合课程设计课程设计题目:车辆调度管理软件设计院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名: 指导教师:完成日期:2011年9月9日目 录第1章 需求分析11.1 问题内容与要求11.2 问题分析与假设1第2章 概要设计22.1 数据库逻辑模型设计22.1.1 数据库ER图22.1.2 数据库表格设计32.2 系统功能模块4第3章 详细设计53.1 客户功能模块53.2 管理人员功能模块63.2.1车辆信息更新63.2.2车辆信息的添加与删除73.2.3司机信息的添加与删除8第4章 调试使用104.1 客户功能104

2、.2 管理员功能114.2.1 车辆及司机信息的增删114.2.2 车辆信息的修改12参考文献14附 录(程序清单)15第1章 需求分析1.1 问题内容与要求设计一个简单的车辆调度管理程序,可实现对不同的车辆、不同要求、不同时间的调度算法。1) 建立车辆信息表;2) 实现对车辆信息的插入、修改、查询、删除功能;3) 界面要优化,直观、大方、美观;4) 实现针对不同任务、不同时间的调度分配算法;5) 独立完成系统的设计、编码和调试;6) 按照课程设计规范书写课程设计报告。1.2 问题分析与假设车辆调度就是根据客户的需求,合理地派遣出相应的车辆。假设每派遣出一辆车,需要记录下该车的特有信息以及使用

3、该车的客户信息。一辆车在被使用后,不能在重叠的时间段被其他客户使用。而客户在选择车辆时,除了能够了解车辆本身的属性外,也有权了解驾驶该车辆驾驶员的信息,比如驾驶员的性别、驾龄、年龄。而作为车辆调度员,应该做到对车辆信息的查看、增删、及时更新等操作。由于每一辆车都有一个专属司机,所以每新增一辆,都必须提供一个已存在的司机信息,如果添加了一个错误的司机,系统应该能够提供提示现提供一个正确的司机信息。同理,如果想要注销掉某个司机的信息,首先要取消掉他与配对车辆的关系,然后才能进行注销。分析了客户与车辆、司机与车辆的关系,有利于我们建立合理的表格,并且在设计程序时考虑到更多切合实际的应用。本次课设所需

4、要的表格将在SQL 2000中建立。使用Microsoft Visual C+编写代码、进行对数据库的读写等操作。ODBC将作为搭载数据库与VC+的平台。第2章 概要设计2.1 数据库逻辑模型设计2.1.1 数据库ER图汽车调度管理系统的ER图如图2.1所示。 车辆车牌号 车型 豪华程度 车辆载重 状态最早可用时间 驾驶 司机司机编号司机姓名性别 驾龄年龄 租用 客户客户电话客户姓名需求车型需求程度需求载重租用车辆租用时间归还时间m1n1 图2.1 车辆调度管理数据库ER图车辆实体与司机、客户这两个实体之间,分别通过驾驶关系和租用关系联系在一起。为便于管理,一辆汽车只配备一名司机,一名司机也只

5、能驾驶一辆汽车。所以这两个实体之间是1:n的关系。而一辆汽车可以出租给不同的客户,而一个顾客又可以租用多辆汽车,所以两个实体之间的关系是m:n的关系。E-R图表示的关系模式为:车辆(车牌号,车型,司机编号,载重,豪华程度,状态,最早可用时间);司机(司机编号,司机姓名,性别,驾龄,年龄);客户(客户电话,客户姓名,需求车型,需求程度,需求载重,租用时间,归还时间,租用车辆)。“车辆”实体的主码是“车牌号”。属性“司机编号”是来自于实体“司机”,的外码,参照其属性“司机编号”。“司机”实体的主码是“司机编号”。“客户”实体的主码是“客户电话”。属性“租用车辆”是来自于实体“车辆”外码,参照其属性

6、“车牌号”。2.1.2 数据库表格设计1 车辆(Vehicles) 表2.1 车辆信息表列名数据类型长度是否可以为空说明Vnochar20否车牌号Vtypechar10是车型Vdnochar20否司机编号Vloadint不定是车辆载重Vgrandchar10是豪华程度Vstatuschar10是状态Vbacktimeint不定是最早可用时间2 司机(Drivers) 表2.2 司机信息表列名数据类型长度是否可以为空说明Dnochar20否司机编号Dnamechar10是司机姓名Dsexchar10是性别Ddegreeint不定是驾龄Dageint不定是年龄3 客户(Orders)表2.3 客户

7、信息表列名数据类型长度是否可以为空说明Otelchar20否客户电话Onamechar10是客户姓名Otypechar10是需求车型Ograndchar10是需求程度Oloadint不定是需求载重Ohiertimeint不定是租用时间Obacktimeint不定是归还时间Ovnochar20否租用车辆2.2 系统功能模块本系统主要功能和层次结构如图2.2所示。本系统有七个主要功能。其中客户的使用到的功能更有用户下单、车辆信息查询两个功能,而管理人员使用到的功能有车辆信息更改、新增车辆、新增司机、车辆删除、司机删除五个功能。 车辆调度管理系统功能模块 客户下单 车辆信息查询 车辆信息更改 新增车

8、辆 新增司机 删除车辆 删除司机图2.2 系统主要功能和层次结构第3章 详细设计3.1 客户功能模块顾客类模块是为了实现顾客下订单和查询车辆信息的需求。客户可以通过它,查看全部车辆或指定车辆的信息,或是根据自己的需求筛选车辆。并且,客户还可以根据指定车辆的车牌号,查看该辆车的司机信息。客户在输入了客户电话、姓名、对车辆的需求,以及时间等相关信息后,可以先使用查询功能查看满足条件的车辆,然后选定某辆车查看其司机信息,全部信息都满意后,再通过了系统对客户的租用时间与该车最早可用时间的核对,就可以下单,已取得该车的使用权。客户功能模块流程图如图3.1所示。 开始 输入客户数据 显示满足客户需求的车辆

9、 输入指定车辆的车牌 查看司机信息最早可用时间大于租用时间 成功下单 结束NY 图3.1 客户功能模块流程图3.2 管理人员功能模块该模块主要实现对车辆与司机信息的增删查改。3.2.1车辆信息更新通过该功能,管理人员可以改变指定车辆的配置司机,或是将已归还的汽车的订单取消,使该汽车可以投入下一轮使用。在改变车辆的配置司机时,输入车牌号和新的司机编号,就可以将指定的车辆的司机改变。注意,输入的新司机编号只能是已存在的,并且是没有被配置到其他车辆的司机的编号,否则系统会提示出错。改变车辆配置司机的流程图如图3.2所示。 开始输入需要更改的信息该司机编号是否合法Y 更改信息 结束N 图3.2 改变车

10、辆配置司机的流程图在取消已归还汽车的的订单时,输入车票号和归还时间,就可以将对应的订单取消,若该车辆已其他没有订单,将车辆状态由“Busy”变为“Free”,表示目前空闲,否则车辆状态保持“Busy”,直至该车辆无任何订单。取消已归还汽车订单的流程图如图3.3所示。 开始输入订单信息换车时间小于该车最早可用时间 取消对应订单 车辆状态不改变 结束 取消对应订单车辆状态变为“Free”NY 图3.3 取消已归还汽车订单的流程图3.2.2车辆信息的添加与删除该功能显而易见,主要是完成对车辆的新增或删除。输入车牌号、车型、司机编号、车辆载重、豪华程度、初始车辆状态,而初始最早可用时间默认为0。就可以

11、添加一辆新车。需要注意的是,输入的司机编号只能是已存在的,并且是没有被配置到其他车辆的司机的编号,否则系统会提示出错。若只输入车牌号,则表示需要删除某一个已经存在的车辆信息。需要注意的是,输入的车牌号必须是存在的已有的车辆的车牌号,否则系统提示出错。车辆信息的添加与删除功能的流程图如图3.4所示。 开始输入车辆信息是否只有车牌号信息司机编号是否合法 初始化最早可用时间 写入新车辆信息 结束车牌号存在 删除车辆信息 输入司机编号YNNNYY 图3.4 车辆信息的添加与删除功能的流程图3.2.3司机信息的添加与删除归还功能与车辆信息的添加与删除类似。输入司机编号、司机姓名、性别、驾龄、年龄等信息,

12、就可以添加一名新司机。需要注意的是,输入的新司机编号不能与已有的司机编号重复,否则系统提示出错。 若只输入司机编号,则表明需要删除某一个司机。需要注意的是,删除的这一个司机不能是配置到车辆上的,否则系统提示出错。司机信息的添加与删除功能流程图如图3.5所示。NN 开始输入司机信息是否只有司机信号 添加司机信息者 司机已配置 删除司机 禁止删除 结束YY图3.5 司机信息的添加与删除功能流程图第4章 调试使用4.1 客户功能客户下单和查询车辆信息界面如图4.1所示。图4.1 客户下单和查询车辆信息界面输入合理信息后,通过鼠标点击按钮,就可以实现不同的功能。比如依次输入:“15008777886”

13、、“Vanpersy”、“Audi”、“A+”、“3”、“1530”、“2311”后,点击“根据客户需要显示车辆”出现匹配车辆如图4.2所示。然后选中其中的车牌为“A1256”的车型,点击“查看司机信息”,出现“0706”、“Ronaldo”、“male”、“6”、“30”字样。分别代表司机编号、司机姓名、性别、驾龄、年龄。信息如图4.3所示。客户如果满意,点击“下单”即可成功下单。图4.2 匹配客户Vanpersy需求的车辆图4.3 车辆A1256的司机信息4.2 管理员功能4.2.1 车辆及司机信息的增删若需要在车辆信息表Vehicles中加入一辆车型为“Lambor”、车牌号为“A112

14、2”、驾驶司机为“0755”豪华程度为“AA+”、载重为2人的新车,需要在车辆信息更新界面输入信息。如图4.4所示。图 4.4 新增车辆信息但是点击添加后,会提示“没有该司机!请先输入司机信息”。原因是编号为0755的司机信息还没有存入数据库。解决办法就是在司机信息更新界面输入编号为0755的司机的相关信息。如图4.5所示。图4.5 新增司机信息点击“添加”。添加了司机信息后,重新在车辆信息更新界面输入司机编号,就可以添加所需要的新车辆了。删除车辆信息与司机信息时,只需要输入对应的车牌号或是司机编号,点击删除即可。4.2.2 车辆信息的修改若有车辆归还,输入归还车辆的车牌号,以及该车辆的返回时

15、间,就可以取消对应的订单。如上面被租用的车辆A1256,车辆返回后,在车辆信息更新界面输入信息“A1256”、“2311”,点击“修改”,就完成了订单的取消。如图4.6所示。图4.6 取消车辆A1256的订单若是修改车辆的的配置司机,在司机编号处输入合法的司机编号即可。参考文献1 高富平,张楚 . 电子商务法M. 北京:北京大学出版社,20022 沈炜,徐慧 . VC+数据库编程技术与实例 M . 北京:人民邮电出版社,20053 杨章伟等 . 21天学通Visual C+ M. . 北京:电子工业出版社,20094 王珊,萨师煊 . 数据库系统概论M. 北京:高等教育出版社,20065 崔莹

16、,王华军 . VC+数据库编程100例M. 北京:中国铁道出版社,2007附 录(程序清单)#include stdafx.h#include ylz.h#include ylzSet.h#include ylzDoc.h#include ylzView.h#include Driverset.h#include Ve1set.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifCYlzView:CYlzView(): CRecordView(CYlzView:IDD)/

17、AFX_DATA_INIT(CYlzView)m_pSet = NULL;m_tel = _T();m_name = _T();m_type = _T();m_grand = _T();m_load = 0;m_upvno = _T();m_upvdno = _T();m_upvgrand = _T();m_upvstatus = _T();m_upvtype = _T();m_upvload = 0;m_dno = _T();m_dname = _T();m_dsex = _T();m_ddegree = 0;m_dage = 0;m_vno = _T();m_htime = 0;m_bti

18、me = 0;m_upbtime = 0;/AFX_DATA_INITvoid CYlzView:DoDataExchange(CDataExchange* pDX)CRecordView:DoDataExchange(pDX);/AFX_DATA_MAP(CYlzView)DDX_Control(pDX, IDC_LIST3, m_listd);DDX_Control(pDX, IDC_LIST1, m_list1);DDX_Text(pDX, IDC_EDIT1, m_tel);DDX_Text(pDX, IDC_EDIT2, m_name);DDX_Text(pDX, IDC_EDIT3

19、, m_type);DDX_Text(pDX, IDC_EDIT4, m_grand);DDX_Text(pDX, IDC_EDIT5, m_load);DDX_Text(pDX, IDC_EDIT9, m_upvno);DDX_Text(pDX, IDC_EDIT11, m_upvdno);DDX_Text(pDX, IDC_EDIT13, m_upvgrand);DDX_Text(pDX, IDC_EDIT14, m_upvstatus);DDX_Text(pDX, IDC_EDIT10, m_upvtype);DDX_Text(pDX, IDC_EDIT12, m_upvload);DD

20、X_Text(pDX, IDC_EDIT6, m_dno);DDX_Text(pDX, IDC_EDIT8, m_dname);DDX_Text(pDX, IDC_EDIT15, m_dsex);DDX_Text(pDX, IDC_EDIT16, m_ddegree);DDX_Text(pDX, IDC_EDIT17, m_dage);DDX_Text(pDX, IDC_EDIT7, m_vno);DDX_Text(pDX, IDC_EDIT18, m_htime);DDX_Text(pDX, IDC_EDIT19, m_btime);DDX_Text(pDX, IDC_EDIT20, m_u

21、pbtime);/AFX_DATA_MAPBOOL CYlzView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CRecordView:PreCreateWindow(cs);void CYlzView:OnInitialUpdate()m_pSet = &GetDocument()-m_ylzSet;CRecordView:OnInitialUpdate();GetParentFrame()-Re

22、calcLayout();ResizeParentToFit();BOOL CYlzView:OnPreparePrinting(CPrintInfo* pInfo)return DoPreparePrinting(pInfo);#ifdef _DEBUGvoid CYlzView:AssertValid() constCRecordView:AssertValid();void CYlzView:Dump(CDumpContext& dc) constCRecordView:Dump(dc);CYlzDoc* CYlzView:GetDocument() / non-debug versio

23、n is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CYlzDoc);return (CYlzDoc*)m_pDocument;#endif /_DEBUGCRecordset* CYlzView:OnGetRecordset()return m_pSet;/ CYlzView message handlersvoid CYlzView:OnButton1() CVeset cc;CString pp( );/int nItem=-1; CString str0;UpdateData(TRUE);for(int j=0;jIsOpen()m

24、_pSet-Close();if(cc.IsOpen()cc.Close();cc.Open();m_vno=m_vno+pp;m_pSet-Open();m_pSet-AddNew();m_pSet-m_Otel=m_tel;m_pSet-m_Oname=m_name;m_pSet-m_Otype=m_type;m_pSet-m_Ogrand=m_grand;m_pSet-m_Oload=m_load; m_pSet-m_Ovno=m_vno;m_pSet-m_Ohiretime=m_htime;m_pSet-m_Obacktime=m_btime;while(cc.IsEOF()!=1)i

25、f(cc.m_Vno=m_vno)UpdateData(TRUE);cc.Edit();cc.m_Vstatus=busy;cc.m_Vbacktime=m_btime;cc.Update();cc.MoveNext();cc.Requery();UpdateData(FALSE);elsecc.MoveNext();m_pSet-Update(); m_pSet-MoveLast();m_pSet-Requery();MessageBox(已下单!);m_tel=m_name=m_type=m_grand=;m_load=0;m_htime=m_btime=0;m_pSet-Close();

26、cc.Close();m_vno=;for(int i=0;i10;i+)m_list1.DeleteString(0);m_listd.DeleteString(0);UpdateData(FALSE);void CYlzView:OnButton2() CVeset vs;CString str=;UpdateData(TRUE);for(int i=0;i=%d and Vgarnd=%s,m_type,m_load,m_grand);vs.Open();while(vs.IsEOF()!=1)str.Format(%4s %4s %4s %d %18s %5s %7d,vs.m_Vno

27、,vs.m_Vtype,vs.m_Vdno,vs.m_Vload,vs.m_Vgarnd,vs.m_Vstatus,vs.m_Vbacktime);m_list1.AddString(str);vs.MoveNext();UpdateData(FALSE);vs.Close();void CYlzView:OnButton3() CVeset s1; CDriverset s2; CString str1=; UpdateData(TRUE); for(int i=0;iIsOpen() m_pSet-Close();if(m_upbtime!=0) alv.m_strFilter.Forma

28、t(Vno=%s,m_upvno); alv.Open(); if(m_upbtime=alv.m_Vbacktime) alv.Edit(); alv.m_Vstatus=free; alv.m_Vbacktime=0; alv.Update(); alv.MoveNext(); alv.Requery(); m_pSet-m_strFilter.Format(Ovno=%s and Obacktime=%d,m_upvno,m_upbtime); m_pSet-Open(); CRecordsetStatus status; m_pSet-GetStatus(status); m_pSet

29、-Delete(); if(status.m_lCurrentRecord=0) m_pSet-MoveNext(); else m_pSet-MoveFirst(); MessageBox(订单已删除,该车辆已返回,可以使用!); m_upvstatus=; m_upvno=; m_upbtime=0; UpdateData(FALSE); if(m_upvdno!=) ckd1.Open(); ckd1.MoveFirst();UpdateData(TRUE);m_upvdno=m_upvdno+sp2;while(ckd1.IsEOF()!=1)if(ckd1.m_Dno=m_upvdn

30、o)b+; alv.m_strFilter.Format(Vno=%s,m_upvno); alv.Open(); alv.Edit();alv.m_Vdno=m_upvdno;alv.Update();alv.MoveLast();alv.Requery();MessageBox(修改成功!); m_upvdno=m_upvno=;UpdateData(FALSE);ckd1.MoveNext();else ckd1.MoveNext();if(b=0)alv.Open();MessageBox(无此司机!请先输入司机信息!); m_upvdno=; UpdateData(FALSE);al

31、v.Close();m_pSet-Close();void CYlzView:OnButton9() CVeset vs1;CString strc=;for(int i=0;i10;i+)m_list1.DeleteString(0);UpdateData(1);if(vs1.IsOpen()vs1.Close();vs1.m_strFilter.Format(Vno=%s,m_vno);vs1.Open();strc.Format(%4s %4s %4s %d %18s %5s %7d,vs1.m_Vno,vs1.m_Vtype,vs1.m_Vdno,vs1.m_Vload,vs1.m_Vgarnd,vs1.m_Vstatus,vs1.m_Vbacktime);m_list1.AddString(strc);vs1.MoveNext();UpdateData(FALSE);vs1.Close();void CYlzView:OnShowall() CVeset sowv;CString show;UpdateData(TRUE);for(int i=0;i10

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号