一、设计要求
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; // 当前登录的用户
公有成员函数
- 注册用户
void registerUser() { User user; cout << "输入用户名: "; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... cout << "注册成功!" << endl; }
通过输入用户名和密码,注册新用户并存储到users
哈希表中。
- 用户登录
bool login() { string username, password; cout << "输入用户名: "; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... } }
验证用户名和密码,如果匹配则设置当前用户为currentUser
,并返回登录成功状态。
- 修改密码
void changePassword() { string oldPassword, newPassword; cout << "输入旧密码: "; cin >> oldPassword; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
当前用户输入旧密码和新密码,如果旧密码匹配,则更新密码。
- 添加车辆
void addCar() { Car car; cout << "输入车辆ID: "; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
输入车辆信息(ID、型号、租金),并将车辆添加到cars
哈希表中。
- 删除车辆
void deleteCar() { string carId; cout << "输入要删除的车辆ID: "; cin >> carId; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
通过车辆ID删除车辆信息,如果车辆存在则删除成功。
- 查询车辆
void queryCar() { string carId; cout << "输入要查询的车辆ID: "; cin >> carId; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
通过车辆ID查询车辆信息,并输出车辆的详细信息。
- 显示所有车辆信息
void displayCars() { for (auto& pair : cars) { Car car = pair.second; cout << "车辆ID: " << car.id << " 车辆型号: " << car.model << " 租金: " << car.rent << " 状态: " << (car.isRented ? "已租" : "未租") << endl; } }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
显示所有车辆的信息。
- 按车型查询车辆
void displayCarsByModel() { string model; cout << "输入要查询的车型: "; cin >> model; bool found = false; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
通过车型查询车辆,并显示符合条件的车辆信息。
- 显示已租车辆
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; } }
显示所有已租车辆的信息。
- 显示未租车辆
void displayAvailableCars() { bool found = false; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
显示所有未租车辆的信息。
- 添加租车信息
void addRental() { RentalInfo rental; cout << "输入租车用户ID: "; cin >> rental.userId; cout << "输入租车车辆ID: "; cin >> rental.carId; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... rentals[rental.userId] = rental; cout << "租车信息添加成功!" << endl; }
输入租车用户ID、车辆ID、租车日期和归还日期,添加租车信息并更新车辆的租赁状态。
- 归还车辆
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,归还车辆并更新车辆的租赁状态。
- 显示所有租车信息
void displayRentals() { // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
显示所有租车的信息。
- 修改车辆信息
void modifyCar() { string carId; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
输入车辆ID,修改车辆信息(型号、租金)。
- 修改租车信息
void modifyRental() { string userId; cout << "输入租车用户ID: "; cin >> userId; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
输入租车用户ID,修改租车信息(租车日期、归还日期)。
- 查询租车信息
void queryRental() { string userId; cout << "输入要查询的租车用户ID: "; cin >> userId; // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略...
通过租车用户ID查询租车信息,并输出详细信息。
排序函数
- 冒泡排序
void bubbleSort(vector<Car>& carList) { for (size_t i = 0; i < carList.size(); ++i) { // > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 } } }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
对车辆列表按照租金进行冒泡排序。
- 快速排序
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) { // 代码 略... // 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈 // 代码 略... }
对车辆列表按照租金进行快速排序。
- 堆排序
void heapify(vector<Car>& carList, int n, int i) { int largest = i; int left = 2 * i + 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; }
主函数实现用户注册、登录、修改密码以及各种车辆和租车管理功能,提供用户交互的菜单。
三、可视化分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈