停车场管理系统C++课程设计报告.doc
《停车场管理系统C++课程设计报告.doc》由会员分享,可在线阅读,更多相关《停车场管理系统C++课程设计报告.doc(28页珍藏版)》请在冰点文库上搜索。
重庆科技学院《车辆管理系统》课程设计报告
重庆科技学院
《面向对象程序设计》
课程设计报告
学院:
电气与信息工程学院专业班级:
计科2012-05
学生姓名:
蒋鑫学号:
2012442101
设计地点(单位)_____I313________
设计题目:
_停车场管理系统___
完成日期:
2014年1月8日
指导教师评语:
_____________________________________
_________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
指导教师(签字):
________________
重庆科技学院《操作系统原理》课程设计报告
重庆科技学院
课程设计任务书
设计题目:
停车场管理系统设计
学生姓名
蒋鑫
课程名称
面向对象课程设计
专业班级
计科12-5班
地点
I313
起止时间
12月30日~1月10日
设计内容及要求
1)问题描述
定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。
停车场的具体要求:
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
2)功能要求
(1)添加功能:
程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:
可根据车牌号、车型等信息对已添加的停车场中的车辆信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;
(3)显示功能:
可显示当前系统中所有车辆的信息,每条记录占据一行。
(4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意车牌号的唯一性。
(5)删除功能:
主要实现对已添加的车辆记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作。
(6)统计功能:
能统计停车场中车辆的总数、按车型、按到达时间进行统计等。
3)问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
设计
参数
(1)系统分析、设计正确。
(2)结果以图表方式显示。
(3)界面简洁、美观。
(4)报告格式规范。
进度
要求
周一:
明确设计任务,学习相关基础知识
周二:
熟悉各知识点,进行基础练习
周三:
根据题目要求,进行设计和实现
周四:
根据题目要求,进行设计和实现
周五:
程序测试
参考资料
[1]RichardJohnsonbaugh.MartinKalin.《面向对象程序设计—C++语言描述》.机械工业出版社.2009年
[2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
裴仰军/伍建全/黄永文2013年12月12日
摘要
C++语言是计算机程序的最基本语言,俗话说学好数理化走遍天下都不怕,但是对于计算机专业的学生来说这句话并不完全正确!
对于计算机专业来说这句话应该改为学好C++走遍天下都不怕。
在学习完《面对对象C++》语言后,为了检验与巩固所学习到的知识,要求设计一个车辆系统能够完成引导管理者对车辆进行有效的管理,该管理系统可以大大的节省管理者的时间和资源也对所管理的对象的效率是非常高的,在无外界环境的影响下,该系统对车辆的管理根本不会出错,所以车辆管理系统不失为管理车辆者的一个好帮手。
该系统是用C语言和C++语言编写的一个简单的操作系统,在汇编环境下,用户可以按照界面的提示,选择不同的功能,C语言的编写是内核的编写,在内核中实现的是显示功能。
关键词:
C++C语言车辆管理系统显示
目录
课程设计任务书 2
摘要 3
第一章绪论 5
1.1课程设计的目的 5
1.2课程设计的背景和意义 5
1.2.1课程设计的背景 5
1.2.2课程设计的意义 5
1.3课程设计环境 5
第二章需求分析 6
2.1问题描述 6
2.2功能要求 6
2.3问题的解决方案 6
第三章系统设计 7
3.1数据设计 7
3.1.1类设计 7
3.1.2类之间的关系 7
3.1.3函数设计 7
3.2结构设计 8
3.2.1系统流程图 8
3.2.2界面设计 8
第四章系统实现 9
4.1类实现 9
4.2函数实现 10
4.3主函数实现 26
第五章系统测试 28
5.1模块测试 28
5.2课程设计过程中遇到的问题 34
总结 35
致谢 36
参考文献 36
附录 37
绪论
课程设计的目的
(1)要求学生能够熟练掌握C++语言的基本知识和技能。
(2)基本掌握面向对象程序设计的基本思路和方法。
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
课程设计的背景和意义
课程设计的背景
1.理论研究基础
(1)分析系统流程,并会画出流程图;
(2)熟练掌握C++程序设计语言。
2.技术层面的支持
C++面向对象程序设计中的类的声明与对象定义的熟练使用;以及继承、派生的熟练使用。
课程设计的意义
在经过了一个学期对C++程序设计的学习,课程设计可以很好的检验所学知识,对自身来说,是个查漏补缺的好时机,可以将所学知识进行复习与巩固,将前面所有知识综合起来,很好的联系在一起,有机结合,形成知识网络体系,将知识融会贯通,可以让自己进一步熟练掌握程序设计语言,并能熟练运用。
课程设计环境
软件:
WindosXP系统,MicrosoftVisualC++6.0编译器。
硬件:
联想双核处理器,二G内存,二G独立显卡,80G硬盘。
III
第一章需求分析
1.1问题描述
系统中的车辆主要有大客车、小轿车和卡车。
每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。
大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。
本系统主要是运用面对对象C语言编写的程序,在本系统中主要定义了
一个Car类,此类为系统的基本类,再由此类派生出三个子类。
整个系统的所有功能基本是围绕这三个子类编写的。
在这三个子类的基础上再加以辅助的函数及基本实现了整个系统的功能。
1.2基本要求和目的
1)添加车辆:
主要完成车辆信息的添加,要求编号唯一。
当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。
2)查询车辆:
可按照三种方式来查询物品,分别为:
按车辆制造公司查询:
输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!
”;
按编号查询:
输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!
”;
按类别查询:
输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!
”;
3)显示车辆信息库:
输出当前车辆信息库中所有车辆信息,每条记录占据一行。
4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除车辆:
主要完成车辆信息的删除。
如果当前车辆信息库为空,则提示“车辆信息库为空!
”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。
6)统计信息
输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。
1.3软件需求
本程序主要是运用C++语言编写的系统。
其功能是对在库的车辆信息进行有效的管理,所以该系统主要面对的是停车场管理员。
停车场管理员可以根据本系统的操作提示完成对所需要管理的对象进行有效的管理。
在本系统中有很多功能,例如可以输入新的车辆信息,包括车辆的车牌号码、购买时间、制作公司、车型、日常所需的费用以及油费等等。
所以本系统不失为一个管理车辆的有效系统,尤其是面对对车辆需要有效管理的停车场、车站、二手车交易市场等等。
1.4系统中各功能函数的关系图
主界面与各功能函数的关系:
主界面
统计功能
删除功能
编辑功能
显示功能
查询功能
添加功能
图1.41
添加函数功能:
完
成
添
加
添
加
页
面
不添加,返回主界面
主界面
继续添加
图1.42
查询函数功能:
完
成
完
成
查
询
页
面
不再查询,返回主界面
主界面
继续查询
图1.43
显示功能
主界面
显示车库所有信息
图1.44
主界面
库为空,没有任何信息
主界面
图1.45
编辑功能
按
照
提
示
进
行
修
改
输入的车辆信息有误,提示无此编号
编
辑
功
能
页
面
主
界
面
找到要修改的车辆
图1.45
删除功能
主界面
删除车辆功能函数
选择要删除的车型
按照提示输入信息
输入
正确
并按
提示
对信
息进
行了
修改
输入
有错
请重
新输
入
车库
已空
请重
新选
择操
作
图1.46
第二章主要代码
2.1系统运用的语言
本系统主要是运用面对对象C++语言所编写的软件。
面对对象C++语言是由C语言衍生而出的一个比C语言更完善更加容易操作的语言。
由于该语言主要是由C语言衍生而来,所以对C语言能够使用的语法该语言都能使用,不仅如此,该语言还添加了很多C语言所不具备的语法,例如对类的定义、类的继承以及操作符的重载等等。
本系统中主要运用面对对象C++语言对本系统的主要对象car进行类的定义,然后再运用类的继承完成对旗下三个子类的定义,最后对该三个子类赋予适当的辅助函数来完成本程序的编写。
2.2类的定义
按照本系统的功能,首先定义了一个父类Car,其代码如下:
classCar
{
private:
stringID;
stringPlateNumber;
stringFactory;
stringBuyTime;
stringCarType;
doubleDistance;
doubleOilCut;
doubleBaseFee;
doubleReadFee;
doubleAllFee;
doubleOilFee;
public:
voidsetCar()
{
//cout<<"请输入车辆编号"< //cin>>ID;
cout<<"请输入车牌号"< cin>>PlateNumber;
cout<<"请输入车辆制造公司"< cin>>Factory;
cout<<"请输入车辆购买时间"< cin>>BuyTime;
cout<<"请输入车辆型号"< cin>>CarType;
cout<<"请输入总公里数"< cin>>Distance;
cout<<"请输入耗油量/公里"< cin>>OilCut;
cout<<"请输入养路费"< cin>>ReadFee;
cout<<"请输入油价:
"< cin>>OilFee;
AllFee=Distance*OilCut+ReadFee;
}
voidgetCar()
{
cout<<"编码:
"<"<"
<"< <"<"
<"<"
<";
}
voidsetBaseFee(intfee)
{
BaseFee=fee;
}
doublegetAllFee()
{
returnAllFee;
}
voidsetID(strings)
{
ID=s;
}
stringgetID()
{
returnID;
}
stringgetFactory()
{
returnFactory;
}
};
classMotorBus:
virtualpublicCar
{
private:
intBusLoad;
public:
voidsetMotorBus()
{
Car:
:
setCar();
Car:
:
setBaseFee(2000);
cout<<"请输入载客量:
"< cin>>BusLoad;
}
voidgetMotorBus()
{
Car:
:
getCar();
cout<<(getAllFee()+2000)< }};
定义完父类之后又要对子类进行定义,子类有三个,首先是客车类MotorBus的定义,其代码如下:
classMotorBus:
virtualpublicCar
{
private:
intBusLoad;
public:
voidsetMotorBus()
{
Car:
:
setCar();
Car:
:
setBaseFee(2000);
cout<<"请输入载客量:
"< cin>>BusLoad;
}
voidgetMotorBus()
{
Car:
:
getCar();
cout<<(getAllFee()+2000)< }
};
}
};
其次是卡车类Van的定义:
classVan:
virtualpublicCar
{
private:
doubleLoad;
public:
voidsetVan()
{
Car:
:
setCar();
Car:
:
setBaseFee(1500);
cout<<"请输入载重量:
"< cin>>Load;
}
voidgetVan()
{
Car:
:
getCar();
cout<<(getAllFee()+1500)< }
};
最后是轿车Scar的定义:
classSCar:
virtualpublicCar
{
private:
intBoxNumber;
public:
voidsetSCar()
{
Car:
:
setCar();
Car:
:
setBaseFee(1000);
cout<<"请输入箱数:
"< cin>>BoxNumber;
}
voidgetSCar()
{
Car:
:
getCar();
cout<<(getAllFee()+1000)< }
};
子类与父类的关系图如下:
ClassCar
ClassVan
ClassScar
ClassMotorBus
图2.21
除此之外还在本程序中有一个对所有类进行操作的函数Function,其主要代码如下:
classFunction:
publicMotorBus,publicVan,publicSCar
{
private:
public:
{
switch(Type)
{
case1:
{
if(MLength==0)
returntrue;
break;
}
case2:
{
if(VLength==0)
returntrue;
break;
}
case3:
{
if(SLength==0)
returntrue;
break;
}
default:
{
returnfalse;
}
}
returnfalse;
}
intCheck_RepetID(stringCID,intType,intWay)
{
inti;
switch(Way)
{
case1:
{
switch(Type)
{
case1:
{
for(i=0;i if(CID==M[i].getID())
returni;
break;
}
case2:
{
for(i=0;i if(CID==V[i].getID())
returni;
break;
}
case3:
{
for(i=0;i if(CID==S[i].getID())
returni;
break;
}
}
break;
}
case2:
{
switch(Type)
{
case1:
{
for(i=0;i if(CID==M[i].getFactory())
returni;
break;
}
case2:
{
for(i=0;i if(CID==V[i].getFactory())
returni;
break;
}
case3:
{
for(i=0;i if(CID==S[i].getFactory())
returni;
break;
}
}
break;
}
case3:
{
switch(Type)
{
case1:
{
if(MLength==0)
{
cout<<"该类别没有车辆......"< return0;
}
else
{
for(i=0;i M[i].setMotorBus();
return0;
}
}
case2:
{
if(VLength==0)
{
cout<<"该类别没有车辆......"< return0;
}
else
{
for(i=0;i V[i].getVan();
return0;
}
}
case3:
{
if(SLength==0)
{
cout<<"该类别没有车辆......"< return0;
}