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. 总结

停车场管理系统是生活中常用的一个程序,实现用户端和管理员端可以对信息进行保护,用户可以自主通过用户端实现存取车这两个基本功能,也可以在需要的情况下通过管理员的协助来实现信息的查询修改,也可以通过管理员来了解停车场的现状,本管理系统实现了对信息的保护,和功能的实现。


1需求分析……………………………………………………………………(页码) 2概要设计……………………………………………………………………(页码) 3详细设计……………………………………………………………………(页码) 4 测试与分析………………………………………………………………………(页码) 5 用户使用说明……………………………………………………………………(页码) 6.发现问题及错误分析 7总结…………………………………………………………………………………(页码)  参考文献 ……………………………………………………………………………(页码)  附录:程序源代码 …………………………………………………………………(页码) 1、需求分析:   根据题目要求,充分地分析和理解问题,描述系统的功能要求,明确问题要求做什么?以及限制条件是什么? 问题描述 随着我国人民生活水平提高和汽车工业的高速发展.越来越多的家庭拥有了汽车,但受到土地的限制,所以采用立体停车场是解决停车难的必然出路。立体停车场占地少,容量大.利用效率高;泊车与取车全自动化,省时省力,安全防盗。本文主要以两层停车场为例,设计一能完成存车与取车的停车场系统。 有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 每辆车的信息包括车牌号、 层号、 车位号、停车时间共4项, 其中停车时间按分钟计算 。 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.dat”中( 数组的对应元素也要进行赋值 ) 。  停车操作:当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号, 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.dat”中, 并将在此之前的所有车的停车时间加5。 收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元. (停车费用可设置一个变量进行保存), 同时从文件”car.dat”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零). 按用户的选择来判断是否要输出停车收费的总计。
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值