【C++】C++ 汽车租赁管理系统(源码+论文)【500+行代码】【独一无二】

简介: 【C++】C++ 汽车租赁管理系统(源码+论文)【500+行代码】【独一无二】

一、设计要求

1.注册功能:

用户输入用户名和密码,系统检查用户名是否已存在。

如果用户名不存在,则将用户名和密码存储在unordered_map容器中。

反馈注册成功或失败信息。


2.登录功能:

用户输入用户名和密码,系统在unordered_map中查找匹配的记录。

如果找到匹配记录,则登录成功,并将当前用户记录在系统中。

如果没有找到匹配记录,则提示用户名或密码错误。


3.修改密码功能:

用户输入旧密码,系统检查与当前用户的密码是否匹配。

如果匹配,则用户输入新密码,并更新unordered_map中的密码记录。

提示密码修改成功或失败的信息。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


车辆管理模块

设计思路:

1.添加车辆:

管理员输入车辆ID、车型和租金。

系统将车辆信息存储在unordered_map中,初始状态为未租。

反馈车辆添加成功信息。


2.删除车辆:

管理员输入车辆ID,系统在unordered_map中查找车辆信息。

如果找到对应车辆,则删除该记录。

提示车辆删除成功或未找到该车辆的信息。


3.查询车辆:

管理员输入车辆ID,系统在unordered_map中查找车辆信息。

如果找到对应车辆,则显示车辆的详细信息。

如果未找到,则提示车辆不存在的信息。


4.显示所有车辆:

系统遍历unordered_map中的所有车辆记录,逐条显示车辆的详细信息。

该功能提供了车辆的整体视图,便于管理员掌握所有车辆的情况。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


5.按车型查询车辆:

管理员输入车型,系统遍历unordered_map中所有车辆记录,查找匹配车型的车辆。

显示所有匹配车型的车辆信息,如果未找到,则提示无匹配车型的车辆。


6.显示已租车辆和未租车辆:

系统分别遍历unordered_map中的所有车辆记录,根据租赁状态显示已租车辆和未租车辆的信息。

该功能便于管理员了解车辆的使用情况和可用资源。


7.修改车辆信息:

管理员输入车辆ID,系统查找对应车辆信息。

如果找到对应车辆,则允许管理员修改车辆的型号和租金。

更新车辆信息,并提示修改成功。


二、设计思路

b0860bab41a84d0fb24e4bb92ccc40e5.png


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


结构体定义


Car 结构体
struct Car {
    string id;       // 车辆ID
    string model;    // 车辆型号
    double rent;     // 车辆租金
    bool isRented;   // 车辆租赁状态(true表示已租,false表示未租)
};

Car 结构体用于存储车辆的信息,包括车辆的ID、型号、租金以及是否已被租赁。


RentalInfo 结构体
struct RentalInfo {
    string userId;     // 租车用户ID
    string carId;      // 租车车辆ID
    string rentalDate; // 租车日期
    string returnDate; // 归还日期
    double rent;       // 租金
};

RentalInfo 结构体用于存储租车的相关信息,包括租车用户ID、车辆ID、租车日期、归还日期以及租金。


User 结构体
struct User {
    string username;  // 用户名
    string password;  // 密码
};

User 结构体用于存储用户的信息,包括用户名和密码。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


类定义

CarRentalSystem
私有成员变量
private:
    unordered_map<string, Car> cars;       // 存储车辆信息的哈希表,以车辆ID为键
    unordered_map<string, RentalInfo> rentals; // 存储租车信息的哈希表,以用户ID为键
    unordered_map<string, User> users;     // 存储用户信息的哈希表,以用户名为键
    string currentUser;                    // 当前登录的用户


公有成员函数
  1. 注册用户
void registerUser() {
    User user;
    cout << "输入用户名: ";
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
    cout << "注册成功!" << endl;
}

通过输入用户名和密码,注册新用户并存储到users哈希表中。


  1. 用户登录
bool login() {
    string username, password;
    cout << "输入用户名: ";
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
    }
}

验证用户名和密码,如果匹配则设置当前用户为currentUser,并返回登录成功状态。


  1. 修改密码
void changePassword() {
    string oldPassword, newPassword;
    cout << "输入旧密码: ";
    cin >> oldPassword;
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


当前用户输入旧密码和新密码,如果旧密码匹配,则更新密码。


  1. 添加车辆
void addCar() {
    Car car;
    cout << "输入车辆ID: ";
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

输入车辆信息(ID、型号、租金),并将车辆添加到cars哈希表中。


  1. 删除车辆
void deleteCar() {
    string carId;
    cout << "输入要删除的车辆ID: ";
    cin >> carId;
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

通过车辆ID删除车辆信息,如果车辆存在则删除成功。


  1. 查询车辆
void queryCar() {
    string carId;
    cout << "输入要查询的车辆ID: ";
    cin >> carId;
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

通过车辆ID查询车辆信息,并输出车辆的详细信息。


  1. 显示所有车辆信息
void displayCars() {
    for (auto& pair : cars) {
        Car car = pair.second;
        cout << "车辆ID: " << car.id << " 车辆型号: " << car.model << " 租金: " << car.rent << " 状态: " << (car.isRented ? "已租" : "未租") << endl;
    }
}

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


显示所有车辆的信息。


  1. 按车型查询车辆
void displayCarsByModel() {
    string model;
    cout << "输入要查询的车型: ";
    cin >> model;
    bool found = false;
    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

通过车型查询车辆,并显示符合条件的车辆信息。


  1. 显示已租车辆
void displayRentedCars() {
    bool found = false;
    for (auto& pair : cars) {
        Car car = pair.second;
        if (car.isRented) {
            cout << "车辆ID: " << car.id << " 车辆型号: " << car.model << " 租金: " << car.rent << " 状态: 已租" << endl;
            found = true;
        }
    }
    if (!found) {
        cout << "没有已租车辆。" << endl;
    }
}

显示所有已租车辆的信息。


  1. 显示未租车辆
void displayAvailableCars() {
    bool found = false;
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

显示所有未租车辆的信息。


  1. 添加租车信息
void addRental() {
    RentalInfo rental;
    cout << "输入租车用户ID: ";
    cin >> rental.userId;
    cout << "输入租车车辆ID: ";
    cin >> rental.carId;
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
    rentals[rental.userId] = rental;
    cout << "租车信息添加成功!" << endl;
}

输入租车用户ID、车辆ID、租车日期和归还日期,添加租车信息并更新车辆的租赁状态。


  1. 归还车辆
void returnCar() {
    string userId;
    cout << "输入租车用户ID: ";
    cin >> userId;
    if (rentals.find(userId) == rentals.end()) {
        cout << "未找到该用户的租车信息!" << endl;
        return;
    }
    string carId = rentals[userId].carId;
    cars[carId].isRented = false;
    rentals.erase(userId);
    cout << "车辆归还成功!" << endl;
}

输入租车用户ID,归还车辆并更新车辆的租赁状态。


  1. 显示所有租车信息
void displayRentals() {
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

显示所有租车的信息。


  1. 修改车辆信息
void modifyCar() {
    string carId;
       // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

输入车辆ID,修改车辆信息(型号、租金)。


  1. 修改租车信息
void modifyRental() {
    string userId;
    cout << "输入租车用户ID: ";
    cin >> userId;
       // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

输入租车用户ID,修改租车信息(租车日期、归还日期)。


  1. 查询租车信息
void queryRental() {
    string userId;
    cout << "输入要查询的租车用户ID: ";
    cin >> userId;
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...

通过租车用户ID查询租车信息,并输出详细信息。


排序函数

  1. 冒泡排序
void bubbleSort(vector<Car>& carList) {
    for (size_t i = 0; i < carList.size(); ++i) {
        // >  👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈

        }
    }
}

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


对车辆列表按照租金进行冒泡排序。


  1. 快速排序
int partition(vector<Car>& carList, int low, int high) {
    double pivot = carList[high].rent;
    i    // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
    }
    swap(carList[i + 1], carList[high]);
    return i + 1;
}

void quickSort(vector<Car>& carList, int low, int high) {
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

对车辆列表按照租金进行快速排序。


  1. 堆排序
void heapify(vector<Car>& carList, int n, int i) {
    int largest = i;
    int left = 2 * i + 1;
    // >  👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈

}


对车辆列表按照租金进行堆排序。


  1. 计数排序
void xxxx(vector<Car>& carList) {
    double maxRent = 0;
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
    }
}

对车辆列表按照租金进行计数排序。


排序车辆

void sortCars() {
    int choice;
    cout << "选择排序方式: \n1. 冒泡排序\n2. 快速排序\n3. 堆排序\n4. 计数排序\n";
    cin >> choice;

    vector<Car> carList;
        // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
}

提供多种排序方式,用户可以选择不同的排序方式对车辆进行排序,并显示排序后的车辆信息。


主函数

int main() {
    CarRentalSystem system;

    int choice;
    do {
            // 代码 略...
    // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
  // 代码 略...
        }
    } while (choice != 3);

    return 0;
}

主函数实现用户注册、登录、修改密码以及各种车辆和租车管理功能,提供用户交互的菜单。


三、可视化分析



👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈




👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈



👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


727c777d2c47427ba0c6dac5fb3639a8.png

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


96436a59d2004a47805deb6a85731752.png


3c2bd5df744c4a7980a7938c624d8273.png

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


2b78345e4aaf456cb902d25dd868c7b4.png

340b65be637741ba88711b26e7f27496.png

4e140f68cc6841c5b2343e2a0d939bf2.png


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


相关文章
|
3月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
79 0
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
53 2
|
2月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
42 3
|
3月前
|
Rust 安全 C++
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
61 1
|
3月前
|
存储 算法 数据可视化
【C++】C++旅游管理系统(源码+论文)【独一无二】
【C++】C++旅游管理系统(源码+论文)【独一无二】
|
3月前
|
存储 数据可视化 C++
【C++】C++ 职工信息管理系统(源码)【独一无二】
【C++】C++ 职工信息管理系统(源码)【独一无二】
|
3月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
26 0
|
3月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
56 0
|
3月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)【独一无二】
【C++】C++-学生考试题库管理系统(源码)【独一无二】
120 0
|
3月前
|
算法 数据可视化 C++
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】