车辆综合业务管理系统说明书_第1页
车辆综合业务管理系统说明书_第2页
车辆综合业务管理系统说明书_第3页
车辆综合业务管理系统说明书_第4页
车辆综合业务管理系统说明书_第5页
已阅读5页,还剩16页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*******************

实践教学

***********x*******

兰州理工大学

计算机与通信学院

2011年秋季学期

面向对象课程设计

题目:车辆综合业务管理系统

专业班级:

姓名:

学号:

指导教师:

成绩:__________________________

目录

摘要............................................................1

序言............................................................2

一.流程调查.....................................................3

二.函数的调用关系图.............................................4

三。调试分析......................................................4

1.调试过程中的主要问题........................................0

5

2o测试结果及主要操作..........................................6

四.总结.......................................................6

五.主耍参考文献................................................7

六.致谢.......................................................8

附录..............................................................9

源程序代码(带注释):.............................................9

摘要

循环队列是一种环状的队列并且对头元素指向队尾元

素,车辆综合管理系统问题是典型的采用循环队列和栈解决

的问题,再综合与类和结构,实验表明该算法的空间复杂度优

于其他算法。该车辆综合管理系统就是采用的这种算法。

关键词:

车辆综合管理;类;循环队列;栈

序言

在人们的生活中,机动车辆是我们每天都离不开的交通工具,

因此,我们要想能更好的使用它们,充分的发挥它们的作用,使其

能更好的服务于社会,就应该有一个良好的车辆管理系统。车辆

综合业务管理系统的主要作用是对于一个中等规模的、独立运营

的车队实现车辆调度和车队综合业务的有效管理。在对某车队的

车辆调度、驾驶员管理、车辆管理以及业务管理的深入调研后,

力争开发出一个实用性较强的车辆综合业务管理软件,基本上可

以满足正常的车辆管理。

通过本软件的设计一、开发,使学生初步得到软件工程的训练,

全面培养软件开发过程中的分析、设计、编码、测试及文档规范

书写的能力。

流程调查

机动车辆是我们每天都离不开的交通工具,因此,我们要想

能更好的使用它们,充分的发挥它们的作用,使其能更好的服务

于社会,就应该有一个良好的车辆管理系统。

车辆综合业务管理系统的主要作用是对于一个中等规模的、

独立运营的车队实现车辆调度和车队综合业务的有效管理。在对

某车队的车辆调度、驾驶员管理、车辆管理以及.业务管理。

深入调研后,通过实践,本程序可以实现车队的车辆调度、

驾驶员管理、车辆管理及派出去的功能.

二.函数的调用关系

lo调试过程中的主要问题

由于此停车场管理系统是分模块设计的,而且在程序的实现过程

中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务后,

又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构

清晰,使用方便.本程序的调试运行,总体上情况良好,但中间也出

现了一些小问题。其中比较有代表性的主要问题有:

当车场已经达到最大容量,但仍有车辆进入停车场的时候,运行

界面上没有出现或者说出现了但又跳掉了“停车场已满,该车辆需在

便道上等待!”的提示信息•我们小组成员经过反复商量讨论,并且在

查阅了多种资料后,在那一个cin语句后加了一个cin,此时,程序运

行结果就符合要求了.要将驾驶员信息存入文本后,必须和读出的文本

名称一致,否者讲初相乱码;设计更加合理,更加人性化,更加方面

用户使用,同时也提高了用户的操作效率.调试中遇到的问题及对问题

的解决方法

lo问题:字符和括号的输写错误

解决方法:把中文输入字母切换成英文输入

2o问题:括号的对应

解决方法:一个一个的补充括号和调整括号

2.调试程序

i.车辆管理界面;

2.有车辆问来,录入信息;

3.查看驾驶员界面;

4.派出任务的车辆;

5.车库满界面;

6.车库情况界面;

7.退出系统界面:

见I.总结

通过这两周的课程设计,加深了我对《C++面向对象程序设计教程》这门课

程所学内容的进一步的理解与掌握;同时,通过充车辆管理系统的开发,使得我

将计算机课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,

培养了我开发一个中小型程序的能力.在这次对停车场管理系统的开发过程中,

有过程序功能成功实现时的欣喜,也有遇到问题、解决问题时的执着以及迷茫。

在这次课程设计中,使得我很好地了解了在开发程序过程中合作的重要性。

从课题的布置到完成课程设计,按时完成了相关任务。通过这次课程设计,

我学习到了很多算法与数据结构的知识,同时对本学期的课本所学知识有了进一

步巩固,特别是对栈和队列等的熟练运用。

设计过程中,我另一个大的体会就是要及时参考图书馆借来的书,通过教程,

大大的提高了工作的效率。同时我也发现自己的不足之处。对于很多自己以为很

熟悉的东西,在细节上的把握有许多不足:有些想当然,认为它应该是这样,而

忽略的事实。这也让我明白,做事细心是必须的,所谓细节决定成败!

程序还有好多不足,在今后的日子里,我会虚心向老师同学请教,尽自己最

大的努力做到最好。

五.主要参考文献

[1]《C++面向对象程序设计教程》陈维兴、林小茶编著,清华大学出

本社.

[2]JeraodV.Post,数据库管理系统(英文版。第三版)[美]清华

大学出版社,2006.1

[3]张海藩,李劲,谢兆阳。SQLServer2000数据库设计与系统管

理[M]。北京:清华大学出版社,2000.9

六.致谢

首先感谢我的指导老师年福忠老师在我的课程设计过程中提出

了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在面

对从书本到实际应用的鸿沟之时有了一座坚固的桥.

我的同学在设计过程及完成后的测试中起到了相当重要的作用,

没有他们,我就不能发现后期测试过程出现的错误和漏洞,在此一并

表示感谢.

附录

源程序代码(带注释):

#include(iostream>

#include(mallocoh>

ffinclude<string>

#include<fstream)

#include〈windows.h>

〃常量定义

defineMAX_STOP6〃定义停车场最大停车数

defineMAX_ITATE10〃定义车牌号最大长度

^defineTIMECOUNT"秒”〃定义时间单位

#defineT[ME/IS_TO_CONUT1000〃定义时间进制

usingnamespacestd:〃使用std命名空间

typedefstruct〃数据结构定义,定义存储汽车信息的结构体

(

charlicenseplate[MAXPLATE];〃汽车牌照号码,定义为一个字符指针类型

charstate;〃汽车W前状态,字符P表示停放在停车位上,字符s表示停放在便道上

inttime;〃汽车停入停车场忖的时间,用来计时收贽

}CAR;

typedefstruct〃定义模拟停车场的栈结构

(

CARSTOP[MAX_STOP];〃汽车信息的存储空间

inttop;〃用来指示栈顶位置的静态指针

}SeqStack;

typedefstructnode〃定义模拟便道的队列结构

(

CARWAIT;〃汽车信息的存储空间

structnode*next;〃月来指示队列位置的动态指针

}QNode:〃链队列节点的类型

typedefstruct〃定义链队列的收尾指针

QNode*front,*rcar;

}LQueue;//将头尾指针封装在•起的链队

intwrite():〃函数声明

intreadO:

intEmptyLQueue(I.Queue*q);〃判队空

〃检查离开的车是否在停车场中

intLeaveCheck(SeqStackparking,char*license_plate);

intQueueLength(LQueue*q);〃判队长度

intOutLQueue(LQueue*&sidewalk,char*license_plate);//出队操作

intStackEmpty(SeqStackparking);〃判断栈是否为空

intStackFul1(SeqStackparking):〃判断栈是否为满

intStackPop(SeqStack&pai,king)://出栈操作

intStackTop(SeqStackparking,char"licenseplate,int&time):〃取栈顶元素

voidCarcome(SeqStack&parking,LQueue*&sidewalk):〃有车到来时的操作

voidCar_leave(SeqStack&parking,LQueue*&sidewalk):〃有.车离开的操作

voidDisplay(SeqStackparking);〃显示停车场内的所有信息调试时用

voidInitStack(SeqStack&parking):〃初始化栈

voidInitList(l.Queue*&sidewalk):〃初始化队列

voidInl.Queue(LQueue*&sidewalk,char*1icense_plate);〃进队操作

voidInput_Chcck(char*liccnsc_platc);〃〃检验输入的车牌是否合法

voidStackPush(SeqStackSparking,char*license_plate,intstop_time);

voidmain()

SeqStackparking;〃定义变量

LQueue*sidcwalk=NULL;

char*choice=newchar;

intflag=1;〃定义一个变量判断是否退出

InitStack(parking);〃初始化一个为空的停车场

InitLisl(sidewalk);〃初始化一个为空的便道

while(flag)〃运行界面及功能选择

cout«w\n\t♦♦欢迎使用车辆管理系统♦♦\n\n";

cout〈〈、★★★★★★★★★★★★★★★★★★★★★★\n\n”;

cout有左回来时请按c键。★\n\n";

cout«M\t*查看驾驶员请按K键。★\n\n”:

cout<要派出车辆请按1键.★\n\n”;

cout〈<”、1★查看停车场请按D键.★\n\n”;

cout«”\tW要退出系统请按Q键。★\n\n~;

cout<("\t★★★★★★★★★

cout<<”请选择操作:”:

gets(choice):

if(1!=strlen(choice))

(

cout《《”请正确输入选项!”;

continue:

)

else

(

switch(*choice)

(

case'c':

case'C':

(

Car_come(parking,sidewaIk):break;

)

casetr:

case'L':

(

Car1eave(parking,sidewaIk);break;

)

case'q':

case'Q':

flag=O;break;

case'd':

case'D':

(

Display(parking);break;

)

case'k':

case'K':

(

read0;break;

)

default:

cout<〈”选择不正确!请重新选择!'n";

)

}

)

)

〃有年到来时的操作

voidCarcome(SeqStack&parking,1.Queue*&sidewalk)

(

〃定义变量

char1icense_plate[MAX_PLATE];

cout«"请输入车辆的车牌号码:";

Input_Check(license_plaie);

writoO;//判断停车场是否已满,满则进入便道,不满进入停车场

if(StackFul1(parking))

(

InLQueue(sidewalk,1icense_plate):〃进入便道

cout«”停车场已满请在便道等候,您的位置为"<<QucucLcnglh(sidewalk)

«endl;

else

(

StackPush(parking,license_plate,GetTickCount());〃进入停车场

cout<<“请进入停车场中的”《<parking。top+1((w号停车位"n”;

)

)

voidCar_leave(SeqStackSparking,LQucuc*&sidcwalk)//向车离开时的操作

(

SeqStacktmpparking;〃定义临时停车场〃定义变量

charleavelicenseplate[MAXPLATE];//要离开的车牌号

charlicense_plate[MAX_PL\TE];〃存放从停车场中读出来的车牌信息

inttime;

InitStack(tmpparking);〃初始化临时停车场

if(StackEmpty(parking))〃判断停车场中是否有车

(

cout<<"当前停车场中没有.车\n”;

return:〃退出子函数

)

cout(<"请输入要离开的车牌照:”:

TnputCheck(1eave_1icense_plate);

cout〈〈”当前停车场中有""parking。top+l<〈"辆车\n”;

if(LeaveCheck(parking,leave_license_plate))//判断车是否在停车场中

(

cout(《"您的车在"<<LeaveCheck(parking,leavelicenseplate)《〈”号车位上\n”;//车在停

车场中

while(StackTop(parking,license_plate,time)

&&(strcmp(parking.STOP[parking»top].licenseplate,leave_1icense_plate)!=0))

(

strcpy(parking.STOP[parking,top]o1icense_plale,]icensc_plate);

cout<<"牌照为"<(license_plate<(”的车暂时退出停车场"«parkingotop+l<〈”号位、n";

StackPush(tmpparking,license_plate,time)://停车场中的车暂时退出进入临时停车场

StackPop(parking):〃出栈

cout《<”牌照为"《license_plate<《"的车离开停车场”《parking,top+1《<”号位、n";

cout〈(”您在停车场中停了"<((GetTickCountGrime)/TIME_MS_T0_C0NUT<(TIME_COUNT<(endl<

<endl;〃输出所停时间信息

StackPop(parking):〃出栈

while(StackEmpty(tmpparking)!=1)〃将临时停车场中的车停回停车场

(

StackTop(tmpparking,license_plate,time):

StackPush(parking,licenseplate,time):

cout牌照为"《<license_plate〈〈”的车进入停车场”(〈parking,lop+1〈〈”号位\n”;

license_plate[0]='\(F;

StackPop(tmpparking):

}

if(parking.top+1==MAX_ST0P-l)〃判断车离开前停车场是否停满

if(QueueLength(sidewalk))〃如果停满则判断便道上是否有车

{

Out_LQueue(sidewalk,1icense_plate):〃便道中有车则从便道中停入停车场〃出队

StackPush(parking,licenseplate,GetTickCount()):〃入栈

cout<<”在便道中牌照为"<<】icense_plate<("的车进入停车场(parking,top+1((w号位\n”;

)

)

else

cou伏〈”您的车不在停车场中!\n”;〃车不在停车场中

)

voidInitStack(ScqStack&parking)〃初始化顺序栈

(

parking,top=—1;

)

intStackEmpty(SeqStackparking)〃判栈空

(

if(parkingotop=-1)

return1:

else

return0;

)

intStackFul1(SeqStackparking)〃判栈满

(

if(parkingotop=MAX_STOP—1)

return1:

else

return0;

)

voidStackPush(SeqStack&parking,char*Iicense_plate,intslop_time)〃入栈

(

parking.top++;

strepy(parkingoSTOP[parking。top],licenseplate,licenseplate);

parking.STOP[parking,top],state='p';

parking。STOP[parking.top]»time=stop_time:

)

intStackPop(SeqStack&parking)〃出栈返回栈顶指针

(

if(StackEmrity(parking))

return0;

else

returnparking.,top-—;

)

intStackTop(SeqStackparking,char*license_plate,int取栈顶元素

{

if(StackEmpty(parking))

return0:

else

(

strepy(license_plate,parking.STOP[parking.top]<>license_plate);

time=parking.STOP[parkingotop]»time:

return1;

)

)

voidDisplay(SeqStackparking)〃显示所有

(

if(parking<.top=-1)

printf("停车场为空\n"):

else

(

while(parking.top!=-1)

(

cout车牌号为:"<(parking.STOPEparking.top].license_plate;

cout<(endl;

read():

//////////

cout«w»停在“<(parking,top+1〈《”号车位上”;

cout〈〈已停"<<(GetTickCount()—parking。STOP[parking»

top],time)/TIMEMSTOCONLI«TIMEC0UNT<(endl;

parking.top-

)

)

)

voidInitList(【.Queue火&sidewalk)〃初始化队列

(

sidewalk=(LQucuc*)maHoc(sizcof(LQucuc));

sidewa1k->front=sidewalk—>rear=NULL:

)

voidInLQueue(I.Queue*&sidewalk,char*1icenseplate)〃入队

(

QNode*car_on_sidewa1k;

car_on_sidewalk=(QNode*)malloc(sizeof(QNode)):〃为新节点开辟新空间

strcpy(caronsidewalk-)WAITolicenseplate,licenseplate);〃将数据写入节点

car_on_sidewa1k->WAIT0state=';〃写入停车信息

car_on_sidewalk-)WAIT«time=GetTickCount():〃写入停车时间

car_on_sidewa1k->next=NULL;

if(Empty一LQueue(sidewalk))〃队空则创建第一个节点

sidewalk->front=sidewalk—>rear=caronsidewalk:

else

(

sidewalk—>rear->next=car_on_sidewalk;〃队非空插入队尾

sidewalk—>rear=car_on_sidewalk;

)

)

intEmpty_LQueue(LQueue*q)〃判队空

(

if(q->front==NULL)

return1;

else

return0;

)

intQueueLength(LQueue*q)〃判队长度返回队长

(

QNodc*p=q—>front;

inti=0:

while(p!=NULL)

(

i++;

p=p〉next;

}

returni:

)

intOut_LQueue(LQueue*&si加walk,char*license_plate)〃出队成功返回1队空返回0

QNode"caronsidewalk:

if(Empty_LQueue(sidewalk))〃如果队空返回0

return0:

car_on_sidewalk=sidewalk—>front;

strepy(1icenseplate,caronsidewalk—>WAITOlicenseplate):〃取出队头元素

if(sidewalk—>front==sidewalk—>rear)〃队中只有一个元素

sidewalk—>front=sidewalk->rear=NULL;〃删除元素

else

sidewalk->front=sidewalk->front->next;〃队头指针后移

free(car_on_sidewa1k);〃释放指针

return1;

)

intLeaveChcck(ScqStackparking,char*license_plate)//桧查离开的车是否在停车场中返回车在停

车场中位置不在则返回0

(

intflag=parkingotop+1;〃定义变量记录当前车在停车场中位置

if(StackEmpty(parking))

return0:

else

(

while(parking,top!--1&&strem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论