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

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


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


目录

  • 【C++】C++ 汽车租赁管理系统(源码+论文)【500+行代码】【独一无二】
  • 一、设计要求
  • 二、设计思路
      • 结构体定义
        • `Car` 结构体
        • `RentalInfo` 结构体
        • `User` 结构体
      • 类定义
        • `CarRentalSystem` 类
          • 私有成员变量
          • 公有成员函数
      • 排序函数
      • 排序车辆
      • 主函数
  • 三、可视化分析


一、设计要求

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,系统查找对应车辆信息。
如果找到对应车辆,则允许管理员修改车辆的型号和租金。
更新车辆信息,并提示修改成功。


二、设计思路

在这里插入图片描述

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

结构体定义

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;
}

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


三、可视化分析

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/792915.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAN总线实战项目:使用STM32和PCAN-View实现数据采集与监控系统(附完整代码)

摘要: 本文深入浅出地介绍CAN&#xff08;Controller Area Network&#xff0c;控制器局域网络&#xff09;总线协议&#xff0c;涵盖其基础概念、报文帧格式、仲裁机制、错误处理等关键知识。同时&#xff0c;文章结合STM32平台&#xff0c;从硬件设计、软件开发到实战案例&am…

【益起童行】为“来自星星的孩子”点亮希望之光

在未来的日子里&#xff0c; 我期望每一个孩子都能得到优质的干预治疗&#xff0c;让他们在未来能够过上正常、快乐的生活。 我也期望每一个家庭都能战胜困境&#xff0c;迎来美好。 作为社会的一份子&#xff0c;我愿意为这繁华人世贡献出自己微不足道但却真挚的力量&#xff…

24暑假计划

暑假计划&#xff1a; 1.从明天起开始将C语言的部分补充完整&#xff0c;这部分的预计在7月24日前完成 2.由于之前的文章内容冗余&#xff0c;接下来进行C语言数据结构的重新编写和后面内容的补充预计8月10号前完成 3.后续开始C的初级学习

新加坡很火的slots游戏代投Facebook广告新流量趋势

新加坡很火的slots游戏代投Facebook广告新流量趋势 在新加坡这片充满活力的土地上&#xff0c;Slots游戏以其独特的魅力和吸引力&#xff0c;迅速成为了许多玩家的心头好。而Facebook&#xff0c;作为全球最大的社交媒体平台之一&#xff0c;为Slots游戏的推广提供了得天独厚的…

element-plus 按需导入问题 404等问题

场景 新开一个项目&#xff0c;需要用element-plus这个ui库&#xff0c;使用按需引入。 这是我项目的一些版本号 "element-plus": "^2.7.6","vue": "^3.2.13","vue-router": "^4.0.3",过程&#xff08;看解决方法…

【MySQL】常见的MySQL日志都有什么用?

MySQL日志的内容非常重要&#xff0c;面试中经常会被问到。同时&#xff0c;掌握日志相关的知识也有利于我们理解MySQL 底层原理&#xff0c;必要时帮助我们排查解决问题。 MySQL中常见的日志类型主要有下面几类(针对的是InnoDB 存储引擎): 错误日志(error log):对 MySQL 的启…

利用Python与uiautomator2实现【手机群控】

利用Python与uiautomator2实现多设备自动化测试 引言 在移动应用测试中&#xff0c;自动化测试是一种提高测试效率和覆盖率的有效手段。本文将介绍如何使用Python语言结合uiautomator2库来实现对多个设备的并行自动化测试。 老规矩先放实现的效果 环境准备 Python环境安装u…

评价妙笔生词智能写歌词软件:助力与局限并存

在音乐创作的领域&#xff0c;科技的发展催生了各种创新工具&#xff0c;妙笔生词智能写歌词软件便是其中引人注目的一项。对于这款软件&#xff0c;我们需要以客观和全面的视角来进行评估&#xff0c;因为它既带来了显著的助力&#xff0c;同时也存在不可忽视的局限。 妙笔生…

Iridient Developer:解锁Mac RAW图像处理的极致潜力,打造专业级色彩与细节

Iridient Developer for Mac是一款专为Mac用户设计的RAW图像调整软件&#xff0c;它以其卓越的性能和丰富的功能&#xff0c;赢得了众多摄影师的青睐。以下是对这款软件的详细介绍&#xff1a; 一、强大的RAW图像处理能力 Iridient Developer专为处理RAW图像而设计&#xff0…

JAVA毕业设计146—基于Java+Springboot+vue+uniapp的景区旅游购票小程序(源代码+数据库+9000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvueuniapp的景区旅游购票小程序(源代码数据库9000字论文)146 一、系统介绍 本项目前后端分离&#xff0c;分为用户、管理员两种角色 1、用户&#xff1a; 注册…

PHP充电桩小程序系统源码

绿色出行新伴侣&#xff01;充电桩小程序&#xff0c;让充电不再烦恼✨ &#x1f50b; 开篇&#xff1a;告别电量焦虑&#xff0c;充电桩小程序来救场&#xff01; 在这个电动车日益普及的时代&#xff0c;电量不足成了不少车主的“心头大患”。但别担心&#xff0c;充电桩小…

神器!3个免费PPT成品网站推荐+3款AIPPT工具盘点!

熬夜加班做PPT却没有头绪&#xff1f;别再自己憋着想了&#xff01;现在凡事主打一个“抄作业”&#xff0c;想做ppt却没想法&#xff0c;可以去到ppt成品网站搜集PPT模板&#xff0c;或是使用时下流行的AI生成PPT工具&#xff0c;只需输入PPT主题&#xff0c;即可快速生成一份…

MongoDB教程(二):mongoDB引用shell

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

为企业提升销售工作效率的工作手机管理系统

在竞争日益激烈的市场环境中&#xff0c;企业的销售团队如同前线战士&#xff0c;其作战效率直接关乎企业的生存与发展。然而&#xff0c;传统销售管理模式下的信息孤岛、沟通不畅、数据混乱等问题&#xff0c;正悄然成为制约销售效率提升的瓶颈。今天&#xff0c;我们为您揭秘…

VR头显如何低延迟播放8K的RTSP|RTMP流

技术背景 我们在做Unity平台RTSP、RTMP播放器的时候&#xff0c;有公司提出来这样的技术需求&#xff0c;希望在头显播放全景的8K RTSP|RTMP直播流&#xff0c;8K的数据&#xff0c;对头显和播放器&#xff0c;都提出了新的要求&#xff0c;我们从几个方面&#xff0c;探讨下V…

mongo数据库迁移

前言 mongo数据库迁移的方式目前常见的有两种&#xff1a; 1&#xff0c;mongodump与mongorestore 2&#xff0c;mongoimport与mongoexport 二者主要区别有&#xff1a; 1、mongoexport 可以导出json和csv格式&#xff0c; mongodump导出的是bson可读性不如前者 2&#xff0c;…

智慧金融-数据可视化

智慧金融-数据可视化 导入所需的库 import numpy as np import numpy_financial as npf import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams[font.sans-serif][FangSong] mpl.rcParams[axes.unicode_minus]False单图曲线图 r 0.05 # 贷款的年利率 n 30…

LeetCode LCR024.反转链表 经典题目 C写法

LeetCode LCR024.反转链表 经典题目C写法 第一种思路&#x1f9d0;&#xff1a; ​ 使用三个指针&#xff0c;n1,n2,n3&#xff0c;n1为空&#xff0c;n2为头结点&#xff0c;n3为头结点的next。开始反转后&#xff0c;n1赋值给n2的next&#xff0c;n2赋值给n1&#xff0c;n3赋…

深入理解FFmpeg--libavformat接口使用(一)

libavformat&#xff08;lavf&#xff09;是一个用于处理各种媒体容器格式的库。它的主要两个目的是去复用&#xff08;即将媒体文件拆分为组件流&#xff09;和复用的反向过程&#xff08;以指定的容器格式写入提供的数据&#xff09;。它还有一个I/O模块&#xff0c;支持多种…

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具&#xff0c;完全可以满足个人以及一些小企业的需求&#xff0c;分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中&#xff0c;Jpom 可以解…