车辆管理系统(C++)

功能分析

该车辆管理系统主要具有以下功能:

  1. 添加车辆
    • 用户输入车辆信息,包括编号、车牌号、制造公司、购买时间、型号、公里数等。
    • 检查编号是否重复,若重复则提示添加失败并返回。
    • 根据车辆型号输入相应的载客量、车厢数或载重量。
    • 可选择是否继续添加车辆。
  2. 查询车辆
    • 提供按车辆制造公司、编号和型号查询的选项。
    • 根据用户选择查询车辆信息,若存在相关车辆则显示信息,并可选择是否进行修改。
    • 若查询结果不存在相应车辆,则给出提示。
  3. 显示车辆
    • 显示当前车库中所有车辆的信息,包括编号、车牌号、制造公司、购买时间、型号、公里数、相关属性(载客量、车厢数或载重量)和基本费用。
    • 若车辆库为空,则给出提示。
  4. 编辑车辆
    • 用户输入需要修改的车辆编号,若编号存在则依次修改车辆的相关信息。
    • 若编号不存在,则提示不能进行修改并要求重新输入。
    • 修改成功后返回主界面。
  5. 删除车辆
    • 用户输入需要删除的车辆编号,若编号存在则删除该车辆的信息。
    • 若编号不存在,则提示不能进行删除并要求重新输入。
    • 删除成功后返回功能界面。
  6. 统计车辆
    • 统计当前车辆信息库中总车辆数以及各型号车辆(大客车、小轿车、卡车)的数量。
    • 若车库信息为空,则给出提示。
  7. 存储车辆
    • 将车辆信息写入同目录下的a.txt文件中。
    • 提示车辆信息写入成功并返回主界面。
  8. 读取车辆
    • 读取同目录下的b.txt文件中的车辆信息。
    • 提示读取成功并返回主界面。

详细代码

#include<iostream>
#include<windows.h>
#include<fstream>

using namespace std;

#define N 20 //车辆总存储量

struct Cars {
    int num; //车辆编号
    int pnum; //车牌号
    char made[20];//车辆制造公司
    double year; //车辆购买时间
    char type; //车辆型号,B-大客车,C-小轿车,L-卡车
    int km; //总公里数
    int cost; //基本维护费用
};


class Manager {
private:
    Cars car[N];
    int people[N];//载客量
    int coach[N]; //箱数
    int weight[N];//载重量
    int top; //记录当前车辆数量
public:
    Manager() { top = 0; };//车辆初始值为0
    void add(); //添加函数 
    void search();//查询函数
    void show(); //显示函数
    void edit(); //编辑函数
    void delet(); //删除函数
    void sum(); //统计函数
    void read(); //读取函数
    void write(); //存储函数
    void jiemian();//总界面
};


void Manager::add() {
    int a = 0, y;
    while (1) {
        if (top < N) {
            int i;
            cout << "请输入需添加的车辆信息:" << endl;
            cout << "车辆编号:";
            cin >> i;
            for (int j = 0; j < top; j++) {
                if (car[j].num == i) {
                    cout << "编号重复,添加失败!系统将自动返回..." << endl;
                    a++;
                    break;
                }
            }
            if (a == 0) { //编号不重复
                car[top].num = i;
                cout << "车牌号:";
                cin >> car[top].pnum;
                cout << "车辆制造公司:";
                cin >> car[top].made;
                cout << "购买时间:";
                cin >> car[top].year;
                cout << "车辆型号(B-大客车,C-小轿车,L-卡车):";
                cin >> car[top].type;
                cout << "总公里数:";
                cin >> car[top].km;
                if (car[top].type == 'B' || car[top].type == 'b') {
                    cout << "载客量:";
                    cin >> people[top];
                    car[top].cost = 2000;
                } else if (car[top].type == 'C' || car[top].type == 'c') {
                    cout << "车厢数:";
                    cin >> coach[top];
                    car[top].cost = 1000;
                } else {
                    cout << "载重量:";
                    cin >> weight[top];
                    car[top].cost = 1500;
                }
                top++;
                cout << "是否继续添加?(1-是, 2-否)" << endl;
                cin >> y;
                if (y == 2) {
                    cout << "请稍等,系统将自动返回功能界面..." << endl;
                    break;
                }
            } else //编号重复
                break;
        } else {
            cout << "车辆信息库已满,不能再添加!" << endl;
            cout << "系统将自动返回功能界面..." << endl;
            break;
        }
    }
    Sleep(2000);
    jiemian();
}


void Manager::search() {
    int i, j, a = 0, b;
    char k;
    cout << "1.按车辆制造公司查询" << endl;
    cout << "2.按编号查询" << endl;
    cout << "3.按类别查询" << endl;
    cout << "请输入你的选项:(1-3)" << endl;
    cin >> i;
    switch (i) {
        case 1:
            char m[20];
            cout << "请输入需查询车辆的制造公司:" << endl;
            cin >> m;
            for (j = 0; j < top; j++) {
                if (strcmp(car[j].made, m) == 0) {
                    cout << "车辆编号:" << car[j].num << "" << "车牌号:" << car[j].pnum << " " << "车辆制造公司:"
                         << car[j].made << "" << "车辆购买时间:" << car[j].year << " " << "车辆型号:" << car[j].type
                         << "" << "总公里数:" << car[j].km << " ";
                    if (car[j].type == 'B' || car[j].type == 'b')
                        cout << "载客量:" << people[j] << "" << "基本费用:" << car[j].cost << endl;
                    else if (car[j].type == 'C' || car[j].type == 'c')
                        cout << "车厢数:" << coach[j] << "" << "基本费用:" << car[j].cost << endl;
                    else
                        cout << "载重量:" << weight[j] << "" << "基本费用:" << car[j].cost << endl;
                    a++;
                }
            }
            if (a == 0)
                cout << "该车辆制造公司不存在!" << endl;
            else {
                cout << "是否进行修改?(Y-是,N-否)" << endl;
                cin >> k;
                if (k == 'Y' || k == 'y')
                    edit();
            }
            break;
        case 2:
            int n;
            cout << "请输入需查询的车辆编号:" << endl;
            cin >> n;
            for (j = 0; j < top; j++) {
                if (car[j].num == n) {
                    cout << "车辆编号:" << car[j].num << "" << "车牌号:" << car[j].pnum << " " << "车辆制造公司:"
                         << car[j].made << "" << "车辆购买时间:" << car[j].year << " " << "车辆型号:" << car[j].type
                         << "" << "总公里数:" << car[j].km << " ";
                    if (car[j].type == 'B' || car[j].type == 'b')
                        cout << "载客量:" << people[j] << "" << "基本费用:" << car[j].cost << endl;
                    else if (car[j].type == 'C' || car[j].type == 'c')
                        cout << "车厢数:" << coach[j] << "" << "基本费用:" << car[j].cost << endl;
                    else
                        cout << "载重量:" << weight[j] << "" << "基本费用:" << car[j].cost << endl;
                    a++;
                }
            }
            if (a == 0)
                cout << "该车辆编号不存在!" << endl;
            else {
                cout << "是否进行修改?(Y-是,N-否)" << endl;
                cin >> k;
                if (k == 'Y' || k == 'y')
                    edit();
            }
            break;
        case 3:
            char t;
            cout << "请输入需查询的车辆型号:(B-大客车,C-小轿车,L-卡车)" << endl;
            cin >> t;
            for (j = 0; j < top; j++) {
                if (car[j].type == t) {
                    cout << "车辆编号:" << car[j].num << "" << "车牌号:" << car[j].pnum << " " << "车辆制造公司:"
                         << car[j].made << "" << "车辆购买时间:" << car[j].year << " " << "车辆型号:" << car[j].type
                         << "" << "总公里数:" << car[j].km << " ";
                    if (car[j].type == 'B' || car[j].type == 'b')
                        cout << "载客量:" << people[j] << "" << "基本费用:" << car[j].cost << endl;
                    else if (car[j].type == 'C' || car[j].type == 'c')
                        cout << "车厢数:" << coach[j] << "" << "基本费用:" << car[j].cost << endl;
                    else
                        cout << "载重量:" << weight[j] << "" << "基本费用:" << car[j].cost << endl;
                    a++;
                }
            }
            if (a == 0) {
                cout << "该车辆型号不存在!" << endl;
            } else {
                cout << "是否进行修改?(Y-是,N-否)" << endl;
                cin >> k;
                if (k == 'Y' || k == 'y')
                    edit();
            }
            break;
        default:
            cout << "输入有误!" << endl;
            break;
    }
// Sleep(2000);
    cout << "按1返回主界面:" << endl;
    cin >> b;
    if (b == 1)
        jiemian();
    else {
        cout << "输入有误,系统将退出..." << endl;
        Sleep(3000);
        return;
    }
}


void Manager::show() {
    int i;
    if (top != 0) {
        cout << "当前车库中的所有车辆信息为:" << endl;
        for (int j = 0; j < top; j++) {
            cout << "车辆编号:" << car[j].num << "" << "车牌号:" << car[j].pnum << " " << "车辆制造公司:" << car[j].made
                 << "" << "车辆购买时间:" << car[j].year << " " << "车辆型号:" << car[j].type << "" << "总公里数:"
                 << car[j].km << " ";
            if (car[j].type == 'B' || car[j].type == 'b')
                cout << "载客量:" << people[j] << "" << "基本费用:" << car[j].cost << endl;
            else if (car[j].type == 'C' || car[j].type == 'c')
                cout << "车厢数:" << coach[j] << "" << "基本费用:" << car[j].cost << endl;
            else
                cout << "载重量:" << weight[j] << "" << "基本费用:" << car[j].cost << endl;
        }
    } else
        cout << "车辆库为空!" << endl;
    cout << "按1返回主界面:" << endl;
    cin >> i;
    if (i == 1)
        jiemian();
    else {
        cout << "输入有误,系统将退出..." << endl;
        Sleep(3000);
        return;
    }
}


void Manager::edit() {
    int i, j, a = 0;
    char m[20];
    cout << "请依次输入需要修改的车辆信息:" << endl;
    while (1) {
        cout << "车辆编号:";
        cin >> i;
        for (j = 0; j < top; j++) {
            if (car[j].num == i) {
                cout << "车牌号:";
                cin >> car[j].pnum;
                cout << "车辆制造公司:";
                cin >> m;
                strcpy(car[j].made, m);
                cout << "购买时间:";
                cin >> car[j].year;
                cout << "车辆型号(B-大客车,C-小轿车,L-卡车):";
                cin >> car[j].type;
                cout << "总公里数:";
                cin >> car[j].km;
                if (car[j].type == 'B' || car[j].type == 'b') {
                    cout << "载客量:";
                    cin >> people[j];
                } else if (car[j].type == 'C' || car[j].type == 'c') {
                    cout << "车厢数:";
                    cin >> coach[j];
                } else {
                    cout << "载重量:";
                    cin >> weight[j];
                }
                a++;
            }
        }
        if (a == 0)
            cout << "此编号不存在,不能进行修改,请重新输入!" << endl;
        if (a != 0) {
            cout << "修改成功!系统将返回主界面..." << endl;

            break;
        }
    }
    Sleep(1500);
    jiemian();
}


void Manager::delet() {
    int i, a = 0;
    while (1) {
        if (top == 0) {
            cout << "车辆信息库为空!系统将返回功能界面..." << endl;
            break;
        } else {
            cout << "请输入需要删除的车辆编号:";
            cin >> i;
            for (int j = 0; j < top; j++) {
                if (car[j].num == i) {//车辆编号存在
                    if (car[top - 1].type == 'B' || car[top - 1].type == 'b') {
                        people[j] = people[top - 1];
                        car[j].cost = 2000;
                    } else if (car[top - 1].type == 'C' || car[top - 1].type == 'c') {
                        coach[j] = coach[top - 1];
                        car[j].cost = 1000;


                    } else {
                        weight[j] = weight[top - 1];
                        car[j].cost = 1500;
                    }
                    car[j].num = car[top - 1].num;
                    car[j].pnum = car[top - 1].pnum;
                    strcpy(car[j].made, car[top - 1].made);
                    car[j].year = car[top - 1].year;
                    car[j].type = car[top - 1].type;
                    car[j].km = car[top - 1].km;
                    top--;
                    a++;
                }
            }
            if (a == 0)
                cout << "此编号不存在,不能进行删除,请重新输入!" << endl;
            else {
                cout << "删除成功!系统将返回功能界面..." << endl;
                break;
            }

        }


    }
    Sleep(1500);
    jiemian();
}


void Manager::sum() {
    if (top != 0) {
        int j, b = 0, c = 0, l = 0;
        cout << "当前车辆信息库中总车辆数为:" << top << "辆" << endl;
        for (j = 0; j < top; j++) {
            if (car[j].type == 'B' || car[j].type == 'b')
                b++; //统计大客车的数量
            else if (car[j].type == 'C' || car[j].type == 'c')
                c++; //统计小轿车的数量
            else
                l++; //统计卡车的数量
        }
        cout << "各型号车辆数为:" << endl;
        cout << "大客车:" << b << "辆" << "" << "小轿车:" << c << "辆" << " " << "卡车:" << l << "辆" << endl;
    } else
        cout << "车库信息为空!" << endl;
    cout << "系统将返回主界面..." << endl;
    Sleep(5000);
    jiemian();


}


void Manager::write() {
    ofstream write("a.txt");
    for (int i = 0; i < top; i++) {
        write << "车辆编号:" << car[i].num << "";
        write << "车牌号:" << car[i].pnum << "";
        write << "车辆制造公司:" << car[i].made << "";
        write << "车辆购买时间:" << car[i].year << "";
        write << "车辆型号:" << car[i].type << "";
        write << "总公里数:" << car[i].km << "";
        write << "基本维护费用:" << car[i].cost << "";
        if (car[i].type == 'B' || car[i].type == 'b')
            write << "载客量:" << people[i] << endl;
        else if (car[i].type == 'C' || car[i].type == 'c')
            write << "车厢数:" << coach[i] << endl;
        else
            write << "载重量:" << weight[i] << endl;
    }
    write.close();
    cout << "车辆信息已成功写入同目录下的a.txt文件中!系统将返回主界面..." << endl;
    Sleep(3000);
    jiemian();


}


void Manager::read() {
    ifstream read("b.txt");
    while (!read.eof()) {
        read >> car[top].num >> car[top].pnum >> car[top].made >> car[top].year >> car[top].type >> car[top].km
             >> car[top].cost;
        if (car[top].type == 'B' || car[top].type == 'b')
            read >> people[top];
        else if (car[top].type == 'C' || car[top].type == 'c')
            read >> coach[top];
        else
            read >> weight[top];
        top++;
    }

    read.close();
    cout << "读取同目录下的b.txt文件成功!系统将返回主界面..." << endl;
    Sleep(3000);
    jiemian();
}


void Manager::jiemian() {
    system("cls");
    int i;
    cout << "***********************************" << endl;
    cout << "欢迎进入车辆管理系统" << endl;
    cout << "1.添加车辆" << endl;
    cout << "2.查询车辆" << endl;
    cout << "3.显示车辆" << endl;
    cout << "4.编辑车辆" << endl;
    cout << "5.删除车辆" << endl;
    cout << "6.统计车辆" << endl;
    cout << "7.存储车辆" << endl;
    cout << "8.读取车辆" << endl;
    cout << "0.退出系统" << endl;
    cout << "***********************************" << endl;
    cout << "请输入你需要操作的选项:" << endl;
    cin >> i;
    switch (i) {
        case 1:
            add();
            break;
        case 2:
            search();
            break;
        case 3:
            show();
            break;
        case 4:
            edit();
            break;
        case 5:
            delet();
            break;
        case 6:
            sum();
            break;
        case 7:
            write();
            break;
        case 8:
            read();
            break;
        case 0:
            return;
        default:
            cout << "输入有误!系统将退出..." << endl;
            return;
    }
}


int main() {
    Manager a;
    a.jiemian();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值