C++课程设计——停车场管理系统
停车场管理系统课程设计报告
1. 需求分析
2. 总体设计
3. 详细设计
4. 编码
5. 测试的步骤与内容
6. 总结
7. 参考文献
1. 需求分析
1.1 需求概述
设计一个停车场管理系统,使之能提供以下功能:
用户端:
⑴ 停车功能
⑵ 取车功能
管理员端:
⑴ 停车功能
⑵ 取车功能
⑶ 查询功能
⑷ 查询并修改功能
⑸ 显示停车场车辆功能
1.2 需求说明
(1) 车辆信息包括车牌号、颜色、车型、停车时间。
(2) 车辆信息用文件形式保存,并可以对其进行查看、查询、修改、删除等基本操作。
(3) 车辆信息要显示出车牌号、颜色、车型、停车的时间。
(4) 每个车辆信息是独立的、修改其中一个不会对其他造成影响。
(5) 对车辆信息可以通过车牌号、颜色、车型、停车时间结合来查询。
(6) 管理系统以菜单的形式展示给用户,更加便于使用。
2. 总体设计
功能划分
该系统按照功能模块划分,如图所示。
其中:
⑴ 用户通过用户端自主存取车或者通过管理员端接受存取车和查询等服务。
⑵ 查询车辆信息实现实时查询停车场所要查询车辆的信息(需要管理员权限)。
⑶ 显示车辆信息实现实时显示停车场所有车辆信息(需要管理员权限)
⑶ 编辑车辆信息实现对特定车辆的信息修改(需要管理员权限)
⑷ 统计车辆实现实时对停车场车辆总数的统计(需要管理员权限)。
⑸ 加载文件实现在重启管理端后加载所存车辆信息(需要管理员权限)。
1. 详细设计
3.1类设计
管理系统中包含了3个类
⑴ 车类:包含了车牌号、颜色、车型、停车时间。
class Car
{
public:
string licensePlate;
string color;
string model;
int time;
};
⑵ 管理员类:包括车辆的实例化,存车、查询、显示、修改、取车、统计、保存、加载功能函数。
class Manage
{
public:
Car a[100];
void add();
void inquire();
void show();
void modification();
void del();
void statistics();
void save();
void load();
};
⑶ 使用者类:包括用户名和密码,管理员的户名和密码,还有一个登陆验证的功能函数。
class User
{
public:
string ID;
string password;
string IDAdmin;
string passwordAdmin;
void longin();
};
3.2功能设计
存车: void add();
查询: void inquire();
显示: void show();
查询并修改: void modification();
取车: void del();
统计: void statistics();
保存: void save();
加载: void load();
登陆验证:void longin();
3.3菜单设计
4. 代码
#include <iostream>
#include <string>
#include <cstdlib>
#include<fstream>
using namespace std;
int i;
class Car
{
public:
string licensePlate;
string color;
string model;
int time;
};
class Manage
{
public:
Car a[100];
void add();
void inquire();
void show();
void modification();
void del();
void statistics();
void save();
void load();
};
void Manage::add()
{
string licensePlate1;
string color1;
string model1;
int time1;
cout<<"欢迎停车\n"<<endl;
if(i==100)
{
cout<<"对不起,停车场停车位已满!"<<endl;
}
else
{
cout<<"请输入车牌号:";
cin>>licensePlate1;
a[i].licensePlate = licensePlate1;
cout<<"请输入车辆颜色:";
cin>>color1;
a[i].color = color1;
cout<<"请输入车型:";
cin>>model1;
a[i].model = model1;
cout<<"请输入停车时间:";
cin>>time1;
a[i].time = time1;
i++;
cout<<"请将车停到停车场中空的车位!"<<endl;
}
}
void Manage::inquire()
{
int t;
int k;
string val;
cout<<"请选择查询方式"<<endl;
cout<<"1.通过车牌号查询"<<endl;
cout<<"2.通过车颜色查询"<<endl;
cout<<"3.通过车型查询"<<endl;
cout<<"4.通过停车时间查询"<<endl;
cin>>t;
switch(t)
{
case 1:
cout<<"请输入车牌号码:";
cin>>val;
for(int j = 0;j<i;j++)
{
if(val.compare(a[j].licensePlate)==0)
{
cout<<"您所查询的车辆的车牌号为:"<<a[j].licensePlate<<endl;
cout<<"您所查询的车辆的颜色为:"<<a[j].color<<endl;
cout<<"您所查询的车辆的车型为:"<<a[j].model<<endl;
cout<<"您所查询的车辆的停车时间为:"<<a[j].time<<endl;
}
}
system("pause");
break;
case 2:
cout<<"请输入车的颜色:";
cin>>val;
for(int j = 0;j<i-1;j++)
{
if(val.compare(a[j].color)==0)
{
cout<<"您所查询的车辆的车牌号为:"<<a[j].licensePlate<<endl;
cout<<"您所查询的车辆的颜色为:"<<a[j].color<<endl;
cout<<"您所查询的车辆的车型为:"<<a[j].model<<endl;
cout<<"您所查询的车辆的停车时间为:"<<a[j].time<<endl;
}
}
system("pause");
break;
case 3:
cout<<"请输入车的型号:";
cin>>val;
for(int j = 0;j<i-1;j++)
{
if(val.compare(a[j].model)==0)
{
cout<<"您所查询的车辆的车牌号为:"<<a[j].licensePlate<<endl;
cout<<"您所查询的车辆的颜色为:"<<a[j].color<<endl;
cout<<"您所查询的车辆的车型为:"<<a[j].model<<endl;
cout<<"您所查询的车辆的停车时间为:"<<a[j].time<<endl;
}
}
system("pause");
break;
case 4:
cout<<"请输入停车时间:";
cin>>k;
for(int j = 0;j<i-1;j++)
{
if(k==a[j].time)
{
cout<<"您所查询的车辆的车牌号为:"<<a[j].licensePlate<<endl;
cout<<"您所查询的车辆的颜色为:"<<a[j].color<<endl;
cout<<"您所查询的车辆的车型为:"<<a[j].model<<endl;
cout<<"您所查询的车辆的停车时间为:"<<a[j].time<<endl<<endl;
}
}
system("pause");
break;
}
}
void Manage::modification()
{
string c;
string licensePlate1;
string color1;
string model1;
int time1;
cout<<"请输入您所查询的车牌号码:"<<endl;
cin>>c;
for(int j = 0;j<i;j++)
{
if(c.compare(a[j].licensePlate)==0)
{
cout<<a[j].licensePlate<<"\t"<<a[j].color<<"\t"<<a[j].model<<"\t"<<a[j].time<<endl;
cout<<"请输入修改后的车牌号:";
cin>>licensePlate1;
a[j].licensePlate = licensePlate1;
cout<<"请输入修改后的车辆颜色:";
cin>>color1;
a[j].color = color1;
cout<<"请输入修改后车型:";
cin>>model1;
a[j].model = model1;
cout<<"请输入修改后停车时间:";
cin>>time1;
a[j].time = time1;
}
break;
}
}
void Manage::del()
{
int j;
string c;
cout<<"欢迎出停车场!"<<endl;
cout<<"请输入您想出停车场车辆的车牌号码:"<<endl;
cin>>c;
for(j=0;j<i;j++)
{
if(c.compare(a[j].licensePlate)==0)
{
cout<<"您的停车时间为"<<a[j].time<<"小时"<<endl;
cout<<"请缴纳"<<a[j].time*5<<"元的停车费"<<endl;
for(int k=j;k<=i;k++)
{
a[k]=a[k+1];
}
i--;
}
break;
}
}
void Manage::statistics()
{
cout<<"停车场停车总数为"<<i<<"辆"<<endl;
}
void Manage::show()
{
for(int j = 0;j<i;j++)
{
cout<<"车辆"<<j+1<<"车牌号为:"<<a[j].licensePlate<<endl;
cout<<"车辆"<<j+1<<"车颜色为:"<<a[j].color<<endl;
cout<<"车辆"<<j+1<<"车型为:"<<a[j].model<<endl;
cout<<"车辆"<<j+1<<"停车时间为:"<<a[j].time<<endl<<endl;
}
}
void Manage::save()
{
ofstream inputFile;
inputFile.open("file.txt");
for(int j = 0;j<i;j++)
{
inputFile<<a[j].licensePlate<<endl<<a[j].color<<endl<<a[j].model<<endl<<a[j].time<<endl;
}
inputFile.close();
ofstream zFile;
zFile.open("number.txt");
zFile<<i;
zFile.close();
}
void Manage::load()
{
int j = 0;
ifstream xFile;
xFile.open ("number.txt");
xFile>>i;
xFile.close();
ifstream outFile;
outFile.open("file.txt");
while(!outFile.eof())
{
outFile>>a[j].licensePlate>>a[j].color>>a[j].model>>a[j].time;
j++;
}
outFile.close();
}
class User
{
public:
string ID;
string password;
string IDAdmin;
string passwordAdmin;
void longin();
};
void User::longin()
{
User::ID = "abc";
User::password = "abc";
User::IDAdmin = "admin";
User::passwordAdmin = "admin";
int h=0;
string ID1;
string password1;
cout<<"\n\n\n\t\t\t 欢迎使用停车场管理系统!\n\n\n\n"<<endl;
cout<<"\t\t\t\t请登录系统!\n"<<endl;
while (h!=3)
{
cout<<"\t\t\t\t用户名:";
cin>>ID1;
cout<<"\t\t\t\t密码:";
cin>>password1;
if (ID1.compare(User::ID)==0&&password1.compare(User::password)==0)
{
cout<<"\t\t\t\t登陆成功!"<<endl;
system("pause");
system("cls");
int a;
Manage carManage;
User userName;
cout<<"\n\n\t\t\t 欢迎进入用户停车系统!\n\n"<<endl;
while (1)
{
cout<<"\t\t\t 菜单\n\n"<<endl;
cout<<" \t\t\t 1.停车\n\t\t\t 2.出停车场\n\t\t\t 3.退出\n"<<endl;
cin>>a;
switch (a)
{
case 1:
{
system ("cls");
carManage.add();
carManage.save();
system ("cls");
break;
}
case 2:
{
system ("cls");
carManage.del();
carManage.save();
system("cls");
break;
}
case 3:
{
exit(0);
}
default :
{
cout<<"请重新输入"<<endl;
system("pause");
break;
}
}
}
}
if (ID1.compare(User::IDAdmin)==0&&password1.compare(User::passwordAdmin)==0)
{
cout<<"\t\t\t\t登陆成功!"<<endl;
system("pause");
system("cls");
int a;
Manage carManage;
User userName;
cout<<"\n\n\t\t\t 欢迎进入管理员停车场管理系统!\n\n"<<endl;
while (1)
{
cout<<"\t\t\t 菜单\n\n"<<endl;
cout<<" \t\t\t 1.停车\n\t\t\t 2.查询车辆信息\n\t\t\t 3.显示所有车辆信息\n\t\t\t 4.编辑车辆信息\n\t\t\t 5.出停车场\n\t\t\t 6.统计车辆\n\t\t\t 7.加载文件\n\t\t\t 8.退出\n"<<endl;
cin>>a;
switch (a)
{
case 1:
{
system ("cls");
carManage.add();
carManage.save();
system ("cls");
break;
}
case 2:
{
system ("cls");
carManage.inquire();
system ("cls");
break;
}
case 3:
{
system ("cls");
carManage.show();
system("pause");
system ("cls");
break;
}
case 4:
{
system ("cls");
carManage.modification();
carManage.save();
system ("cls");
break;
}
case 5:
{
system ("cls");
carManage.del();
carManage.save();
system("cls");
break;
}
case 6:
{
system ("cls");
carManage.statistics();
system("pause");
system ("cls");
break;
}
case 7:
{
carManage.load();
system ("cls");
break;
}
case 8:
{
exit(0);
}
default :
{
cout<<"请重新输入"<<endl;
system("pause");
break;
}
}
}
}
else
{
h++;
system ("cls");
cout<<"\t\t\t 密码或用户名输入错误!"<<endl;
cout<<"\t\t\t请重新输入,您还有"<<3-h<<"次输入机会"<<endl;
}
if (h==3)
{
cout<<"\t\t\t\t您已三次输入错误,系统被强制停止"<<endl;
exit (0);
}
}
}
int main()
{
User userName;
userName.longin();
return 0;
}
5. 总结
停车场管理系统是生活中常用的一个程序,实现用户端和管理员端可以对信息进行保护,用户可以自主通过用户端实现存取车这两个基本功能,也可以在需要的情况下通过管理员的协助来实现信息的查询修改,也可以通过管理员来了解停车场的现状,本管理系统实现了对信息的保护,和功能的实现。
C++课程设计——停车场管理系统相关推荐
- c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...
<数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...
- 数据结构课程设计-停车场管理系统
利用前面所建立的算法库基础进行的课程设计,名曰停车场管理系统 具体利用顺序栈以及链队等知识 当车辆进入时,输入车辆车牌号码并且自动获取当前系统时间. 具体请运行代码. parking.h: 包含定义顺 ...
- c语言停车场管理系统课程设计,停车场管理系统—C语言课程设计
<停车场管理系统-C语言课程设计>由会员分享,可在线阅读,更多相关<停车场管理系统-C语言课程设计(12页珍藏版)>请在人人文库网上搜索. 1.精品好资料学习推荐停车场管理系统 ...
- c语言停车场管理系统源代码,C语言课程设计 停车场管理系统 源代码 原创 不得随意转载...
大学生C语言课程设计的成果源代码 # include # include # include # include int k=0; /*牌照信息结构体*/ struct l { char pro[20 ...
- C语言课程设计——停车场管理系统
一. 题目要求 1.设计一个停车场用长度为N的堆栈(顺序随意,先进后出)来模拟.由于停车场内如有某辆车要开走 ,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入. 2. ...
- 数据结构课程设计----停车场管理系统(栈和队列)
题目: 设停车场(如下图1所示)内只有一个可停放几量汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北 ...
- 课程设计---停车场管理系统
[要求C或C++编程] 设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北 ...
- 数据结构课程设计——停车场管理系统
main.cpp #include "Park.h" #include <iostream> using namespace std;//进入停车场 int InPar ...
- 课程设计 停车场管理系统(附源码)
c++数据结构课设 这个代码目前有一些问题,因为暂时不知道如何使用栈来实现出库任意车辆,所以暂定先有两个停车位,之后应该会有优化. 菜单界面 入库界面 在入库后它会自动弹回主菜单 入库界面(车库已满) ...
最新文章
- MATLAB中subplot函数使用
- 作价20亿美元!英特尔收购以色列AI芯片公司Habana Labs
- 「不会开会」是个病,这本书能治吗?
- 几个视频中行为识别的底层特征及代码
- UA MATH571A QE练习 R语言 非参数回归 上
- 2021-04-29 Python绘制柱状图之可视化神器Pyecharts
- H2O —— 宣称性能是 Nginx 2 倍的 HTTP 服务器
- mysql数据表设计要点以及快门
- Struts2源码学习(一)——Struts2中的XWork容器
- Innodb中的buffer poll和redo undo log
- 计算机硬件技术基础 统计字符串strl中字符'a'的个数,汕头大学工学院830计算机基础综合历年考研真题202p.doc...
- 计算机系统-电路设计03-或门电路
- OpenGL基础29:深度测试
- 小弟浅谈asp.net页面生成周期---上
- java继承案例分析,Java day5【第十四章】继承案例分析
- sendkeys安装包_利用Windows命令行解压zip压缩文件(不借助第三方软件)
- oracle数据库存储过程基本语法
- 人生哲理看完醍醐灌顶茅塞顿开(大部分技术都不懂所以爬不上去)
- 全网最新小白API查Q绑定带反查SGK+带接口
- Oracle高级数据库复习
热门文章
- vue el-table 显示/隐藏列异常-表格数据域高度变小
- “黎民百姓”从何而来
- Linux内核源代码分析经验
- [转帖]关于主板、中小板、创业板、新三板,再也不会傻傻分不清楚啦!
- ac 计算机考试,计算机接口试2010考试题Achenlin.doc
- 一步一个脚印的走法-走了N年
- 三年的php简历_PHP程序员个人简历
- 2023年自治区职业院校技能大赛暨全国职业院校技能大赛新疆选拔赛任务书
- CSS: scroll-behavior: smooth;让页面平滑滚动
- Android-Notes|BottomNavigationView-爱上-Lottie,kotlin声明数组