1、 重庆科技学院 《面向对象程序设计》 课程设计汇报 学 院:_ 电气和信息工程学院_ 专业班级: 计科12-04 学生姓名: 田园 学 号: 442095 设计地点(单位)________计算机自主学习中心 ___ _____ 设计题目:_____ _ 停车场管理系统__ ____ 完成日期: 年1月18日 指导老师评语: ______________________ __
2、 _________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _ 成绩(五级记分制):______ __________
3、 指导老师(签字):________ ________ 摘要 当今社会,停车场管理电脑化已经成为了停车场管理不可缺乏一项关键内容,伴随停车车辆不停增加,停车场对停车管理越来越复杂,所以要实现对停车正确管理是必不可少。此次课程设计就是为了对停车基础信息及其停车费用管理做一个简单表现,关键实现对停车信息录入,修改,删除,显示,添加,查找等多个方面功效。而要实现这些功效,首先要建一个数组,将全部停车信息全部统筹起来,而且经过C++建立类方法完成这些过程,而且能正确显著显示每辆停车基础信息和对其资费管理。经过如此对停车管理,能够达成对停车信息正确管理。 关键词
4、停车场管理 数组 C++ 类 重庆科技学院 课程设计任务书 设计题目:停车场管理系统设计 学生姓名 课程名称 程序设计基础课程设计 专业班级 计科11 地 点 I304/I306 起止时间 1月7日~1月18日 设计内容及要求 1)问题描述 定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、抵达时间和离开时间等信息和相关对属性做操作行为。 定义一个管理类,完成对停车场管理。停车场具体要求:设停车场是一个可停放n辆汽车狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆抵达时间前后次序,依次由北向南排列(大门在最南端,最先抵
5、达第一辆车停放在车场最北端),若车场内已停满n辆汽车,则以后汽车只能在门外便道上等候,一旦有车开走,则排在便道上第一辆车即可开入;每辆停放在车场车在它离开停车场时必需按它停留时间长短交纳费用。 2)功效要求 (1)添加功效:程序能够添加抵达停车场车辆信息,要求车辆车牌号要唯一,假如添加了反复编号统计时,则提醒数据添加反复并取消添加。 (2)查询功效:可依据车牌号、车型等信息对已添加停车场中车辆信息进行查询,假如未找到,给出对应提醒信息,假如找到,则显示对应统计信息; (3)显示功效:可显示目前系统中全部车辆信息,每条统计占据一行。 (4)编辑功效:可依据查询结果对对应统计进行修改,修
6、改时注意车牌号唯一性。 (5)删除功效:关键实现对已添加车辆统计进行删除。假如目前系统中没有对应人员统计,则提醒“统计为空!”并返回操作。 (6)统计功效:能统计停车场中车辆总数、按车型、按抵达时间进行统计等。 3)问题处理方案 依据系统功效要求,能够将问题处理分为以下步骤: (1)应用系统分析,建立该系统功效模块框图和界面组织和设计; (2)分析系统中各个实体及它们之间关系; (3)依据问题描述,设计系统类层次; (4)完成类层次中各个类描述; (5)完成类中各个组员函数定义; (6)完成系统应用模块; (7)功效调试; (8)完成系统总结汇报。 依
7、据题目要求,利用所学知识,完成设计和实现工作,并根据书写规范,撰写课程设计汇报。 设计 参数 (1)系统分析、设计正确。 (2)结果以图表方法显示。 (3)界面简练、美观。 (4)汇报格式规范。 进度 要求 周一:明确设计任务,学习相关基础知识 周二:熟悉各知识点,进行基础练习 周三:依据题目要求,进行设计和实现 周四:依据题目要求,进行设计和实现 周五:程序测试 参考资料 [1]Richard Johnsonbaugh. Martin Kalin.《面向对象程序设计—C++语言描述》.机械工业出版社. [2]钱能.《C++语言程序设计教程》.清华大学出
8、版社. 其它 说明 1.本表应在每次实施前一周由负责老师填写二份,院系审批后交院系办立案,一份由负责老师留用。2.若填写内容较多可另纸附后。 3.一题多名学生共用,在设计内容、参数、要求等方面应有所区分。 教研室主任: 指导老师:裴仰军/伍建全/焦晓军/陈应祖 1月1日 目录 1.软件需求分析说明书 关键介绍该软件含有哪些具体功效,及软件界面要求、数据结构要求等
9、要把软件全部功效全部写在该部分) 1.课程设计目标和要求 1.1 综合要求和目标: C++语言课程设计关键目标是培养学生综合利用C++语言程序设计课程所学到知识,编写C++程序处理实际问题能力,和严谨工作态度和良好程序设计习惯。经过课程设计训练,学生应该能够了解程序设计基础开发过程,掌握编写、调试和测试C++语言程序基础技巧,充足了解结构化程序设计基础方法。 C++语言程序设计关键任务是要求学生遵照软件开发过程基础规范,利用结构化程序设计方法,根据课程设计题目要求,分析、设计、编写、调试和测试C++语言程序及编写设计汇报。 1.2 本课程设计目标:
10、 1. 巩固和加深学生对C++语言课程基础知识了解和掌握 2. 掌握C++语言编程和程序调试基础技能 3. 掌握利用C++语言进行软件设计方法 4. 提升书写程序设计说明文档能力 5. 提升利用C++语言处理实际问题能力 1.3 基础要求: 1. 分析课程设计题目标要求 2. 对系统功效模块进行分析,写出具体设计说明文档 3. 编写程序代码,代码量要求不少于300行,调试程序使其能正确运行 4. 设计完成软件要便于操作和使用 5. 设计完成后提交课程设计汇报 1.4 设计要求 停车场是一个
11、可停放n辆汽车狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆抵达时间前后次序,依次由北向南排列(大门在最南端,最先抵达第一辆车停放在车场最北端),若车场内已停满n辆汽车,则以后汽车只能在门外便道上等候,一旦有车开走,则排在便道上第一辆车即可开入;每辆停放在车场车在它离开停车场时必需按它停留时间长短交纳费用。 车进入停车场需要输入该车车牌信息,车颜色,车型号和车进入停车场正确时间。 其中车牌信息是一辆车标志,只有经过车牌信息才能正确确实定该车;车颜色是每辆共有属性。 车型号一共分为四种,包含小汽车,小卡,中卡,大卡。这四种车型是用来统计车辆信息利器,停车场管理员能够依据四辆车型
12、号来统计这四种车分别有多少辆。这么才能愈加好管理停车场中全部停车。 车进入停车场正确时间包含车进停车场年,车进停车场月,车进停车场日,车进停车场小时,车进停车场分钟,车进停车场秒。只有正确统计这些信息才能对停车信息把握更充足,更到位。而且必需依据车进入停车场时间才能在车开出停车场时候计算出该车在停车场中所停时间,才能经过停车时间来计算车辆应该缴纳停车费用。 只有完全正确地输入全部信息多种车辆才能有条不紊进出停车场,完成停车,停车场管理员才能愈加愈加好完成工作。 2.系统分析和设计 2.1 软件界面设计 画出软件全部输入、输出数据界面,并对每一个界面进行具体操作说明 首页:
13、 图2.1-0 这是首页,接下来输入选择操作序号 输入1: 图2.1-1 选择1接下来输入进入停车场车车牌号,输完了车牌号以后会有Color、CheXing、year、mouth、day、hour、minute、second信息输入。 输入2: 图2.1-2 选择2接下来输入要离开停车场车车牌号,依据车牌号能够让车辆离开停车场,而且会在确定停车场之内有该辆车以后输入离开时间,用以计算停车费用。 输入3: 图2.1-3 选择3接下来输入车牌号就能够查询停车场中是否存在该车,假如没有有两种选择,一是车辆入库,二是返回首页,接下
14、来输入对应操作序号,就能够达成对应效果,假如输入错误会有提醒,并给出返回首页操作。 假如停车场中有该辆车,程序就会输出该车全部信息,并给出三种选项:一是删除该给信息,二是修改该车信息,三是返回首页,输入对应序号能够完成对应操作,假如输入错误会有提醒,并给出返回首页操作。 输入4: 图2.1-4 接下来程序就会显示出停车场中全部车辆信息,而且这些车辆信息会每辆汽车信息站一列显示,这么就能够很轻松对信息进行观察。信息显示完了以后会有:1.返回首页 选择操作,假如输入1就会返回首页,果输入错误会有提醒,并给出返回首页操作。 输入5: 图2.1-5 输入了
15、5,就会程序就会显示出按总数统计和按车型统计两种选择统计方法,假如接着输入1,选择按总数统计,程序就会自动统计出停车场中现有停车数量。接下来就会给出返回首页操作,假如选择怎却就会返回首页,假如错误会有提醒,并继续给出返回首页操作。 假如输入2,选择按车型统计,程序就会自动将四种车型在停车场中数量分别统计其辆数,而且显示出来。接下来就会给出返回首页操作,假如选择怎却就会返回首页,假如错误会有提醒,并继续给出返回首页操作。 输入其它: 图2.1-6 假如输入不是1、2、3、4、5种选项中其中一个,二是随意乱输一个数值,程序就会显示无此选项!操作而且给出返回首页重新选择操
16、作。假如继续输入错误就会继续提醒。 2.2 软件数据(结构)设计 对整个软件使用文件功效、文件内部数据格式进行说明 图2.2-1 在本课程设计中我一个用了一个txt文原来存放车辆信息,在该文本中,第一行是一个整形数值,它作用是显示该文本中一共存放了多少来辆车。 2.3 软件算法设计 画出整个软件模块图、并对每一个模块图算法用程序步骤图、功是伪代码来实现 四种车型分别数量 全部车辆数 车牌号 入场时间 车型 车色 车牌 汽车信息统计 显示全部汽车 汽车信息查询 汽车出停车场 汽车进停车场 首页
17、 车牌号 图2.3-1 3. 软件实现和测试 3.1 软件实现 3.1.1车类型 车属性,车包含车牌号,车色,车型,入停车场时间等属性。 车方法,包含Set()、show()两个方法。 车属性中车牌含有唯一性,是用来分辨各辆车唯一标准,所以输入时一定要小心别输入错误;色车在多种车中是能够相同,不含有唯一性; 车型一共就只有四种,分别是xiaoqiche,xiaoka,zhognka,daka,输入时一定要注意车型;汽车进入停车场时间用来在后面计算汽车费用是必不可少,所以以上四种属性多很关键。 车方法是Set(),sh
18、ow()其中Set()作用是用来给车属性赋值用,而show()作用是用来展示车多种属性。
class Che{
public:
string ID;
string Color;
string CheXing;
Time aTime;
Che *Next;
Che(){}
void Set()
{
cout<<"ID=";
cin>>ID;
cout<<"Color=";
cin>>Color;
cout<<"CheXing=(xiaoqiche xiaoka zhongka daka)"< 19、l;
cin>>CheXing;
aTime.setTime();
}
void show()
{
cout< 20、year,mouth,day,hour,minute是用来计算停车时间必不可少原因,而second是用来确定正确时间,所以全部很关键,不容有错!
时间方法就是setTime(),showTime()其中setTime()使用来给时间赋值,而showTime()是用来展示时间属性!
class Time
{
public:
int year;
int mouth;
int day;
int hour;
int minute;
int second;
void setTime()
{
cout<<"Time"< 21、year:";
cin>>year;
cout<<"mouth:";
cin>>mouth;
cout<<"day:";
cin>>day;
cout<<"hour:";
cin>>hour;
cout<<"minute:";
cin>>minute;
cout<<"second:";
cin>>second;
}
void showTime()
{
cout< 22、页不好看,该程序就会在用户心中有一个不好影响,假如首页很好,那即使你内容差一点,我相信用户也是会首先考虑你产品,就因为你首页,比别更美观,愈加好看,这就是一个很大优势了,在当今社会中有时候门面就比内容更关键,好门面就是好开始,而首页就是这个软件门面。所以好软件不能没有好首页,接下来就是我首页函数。
void Shouye()//首页
{
int i;
cout<<"**************************\n";
cout<<"\t"<<"1.汽车进停车场\n";
cout<<"\t"<<"2.汽车出停车场\n";
cout<<"\t"<<"3.汽车信息查询 23、\n";
cout<<"\t"<<"4.显示全部汽车\n";
cout<<"\t"<<"5.汽车信息统计\n";
cout<<"\t"<<"选择操作:";
cin>>i;
switch(i)
{
case 1:
{
system("cls");
Input();
break;
}
break;
case 2:
{
system("cls");
Output();
break;
}
break;
case 3:
{
s 24、ystem("cls");
Chaxun();
break;
}
break;
case 4:
{
system("cls");
Xianshi();
break;
}
break;
case 5:
{
system("cls");
Tongji();
break;
}
break;
default:
{
cout<<"无此选项!"< 25、
string h;
cin.clear();
cin>>h;
if(h=="1")
{
system("cls");
Shouye();
}
else{
Cuo1();
}
}
}
}
3.1.4车辆进入停车场
在我课程设计中车辆进入停车场我采取了数组存放车辆数据方法,数组中每一个空间单元存放一辆车。在输入停车信息之前先从text文本中把其存放车辆信息取出来放入p[]数组中,假如文本中存放车辆数目以达成极限,则提醒 26、停车场已满。假如文本中存放车辆数目没到极限,则输入进入停车场车信息。以后再把更新了数组在输入到text文本中保留。
void Input()//车辆进入停车场
{
ifstream fin("text.txt",ios::in);
if(!fin)
{
cout<<"文件打开失败!"< 27、j].CheXing>>p[j].aTime.year>>p[j].aTime.mouth
>>p[j].aTime.day>>p[j].aTime.hour>>p[j].aTime.minute>>p[j].aTime.second;
cout< 28、"< 29、mouth
<<"\t"< >h;
if(h==1)
Input( 30、);
if(h==2)
{
system("cls");
Shouye();
}
if(h!=1&&h!=2)
Cuo1();
}
else
{
cout<<"****************************************************";
cout<<"停车场已满!"< 31、e
Cuo1();
}
}
3.1.5车辆离开停车场
在我课程设计中车辆离开停车场我采取了数组存放车辆数据方法,数组中每一个空间单元存放一辆车。车辆要离开停车场,需要输入离开停车场车辆车牌号,在输入车牌号之前途序会先从text文本中把其存放车辆信息取出来放入p[]数组中,假如文本中存放车辆数目为0,则提醒停车场中没有停车。不然,则输入离开停车场车车牌号。以后会用数组中车车牌号和输入对比若有这辆车,则输出该车信息,若全部对不上,则提醒停车场中没有该车。最终再把更新了数组在输入到text文本中保留。
void Output()//车辆离开停车场并计算停车费用
{
32、ifstream fin("text.txt",ios::in);
if(!fin)
{
cout<<"文件打开失败!"< 33、[j].aTime.minute>>p[j].aTime.second;
cout< 34、t<<"按车牌查询"< 35、l;
cout<<"该车进入停车场时间为:";
cout< 36、uth-p[j].aTime.mouth)*31*24*60+(bTime.day-p[j].aTime.day)*24*60+(bTime.hour-p[j].aTime.hour)*60+(bTime.minute-p[j].aTime.minute)*10;
cout<<"累计:"< 37、p[j].ID<<"\t"< 38、ng<<"\t"< >h;
if(h==1)
{
system("cls");
39、 Shouye();
}
else
Cuo1();
break;
}
}
fout.close();
}
else
{
cout<<"停车场中无车"< 40、
Cuo1();
}
}
3.1.6 其它功效
在本软件中还有车辆信息查询,车辆信息删除,车辆信息修改,显示全部信息,车辆信息统计等功效。但这些功效全部和以上两种大同小异。
车辆信息查询,类似于车辆离开停车场,输入编号查找到有该车后直接输出该车信息就完成,不在出库,就是车辆信息查询。
string cx;
cout<<"按车牌查询"< 41、"< 42、
{
ofstream fout("text.txt",ios::out);
int a;
a=j;
fout< 43、d< 44、车辆信息修改,是在车辆信息查询基础上,在数组输入文件之前把要改信息改掉,在把数组输入文本中。
if(h==2)
{
cout<<"******************************"< 45、<<"3.修改车型"< 46、f(o!=1&&o!=2&&o!=3&&o!=4)
Cuo1();
break;
}
if(h==2)
{
p[j].Set();
}
if(h!=1&&h!=2&&h!=3)
Cuo1();
ofstream fout("text.txt",ios::out);
int a;
a=j;
fout< 47、 48、}
int i;
fin>>i;
cout<<"停车场中已经有车"<>p[j].ID>>p[j].Color>>p[j].CheXing>>p[j].aTime.year>>p[j].aTime.mouth
>>p[j].aTime.day>>p[j].aTime.hour>>p[j].aTime.minute>>p[j].aTime.second;
cout< 49、< >h;
if(h==1)
{
system("cls");
Shouye();
}
else
Cuo1();
} 50、
车辆信息统计,有两种计算方法,一是计算停车场中车辆总数,该种计算是直接读取文本中第一个整形,并给输出;二是根据车辆四种列别xiaoqiche、xiaoka、zhongka、daka分别来输出它们数量,即在文本信息读入后,用遍历方法,定义a、b、c、d全部为0,假如数组中其中一辆为这四种类型中一个,则a、b、c、d中对应自加1,最终输出结果,就是车辆信息统计。
void Tongji()//统计车库中车
{
ifstream fin("text.txt",ios::in);
if(!fin)
{
cout<<"文件打开失败!"<






