#include <iostream> #include <ctime> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ void show_menu() { cout<<"********欢迎使用停车场管理系统********"<<endl; cout<<"********1.汽车信息模块**********"<<endl; cout<<"********2.普通用户模块**********"<<endl; cout<<"********3.管理员用户模块*******"<<endl; } void exitsystem() { cout<<"正在退出系统,欢迎下次使用"<<endl; system("pause"); exit(0);//退出系统 } void show_car() { 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; } void show_user() { cout<<"***********欢迎使用停车管理系统*********"<<endl; cout<<"***************普通用户模板**************"<<endl; cout<<"****************1.显示汽车信息************"<<endl; cout<<"****************2.查询汽车信息*************"<<endl; cout<<"****************3.停车时间统计*************"<<endl; } void show_admin() { cout<<"*************欢迎使用停车管理系统********"<<endl; cout<<"***********管理员用户模板****************"<<endl; cout<<"*************1.添加汽车信息***************"<<endl; cout<<"*************2显示汽车信息*****************"<<endl; cout<<"*************3.查询汽车信息****************"<<endl; cout<<"*************4.修改汽车信息****************"<<endl; cout<<"*************5.删除汽车信息****************"<<endl; cout<<"*************6.汽车信息统计****************"<<endl; } class Car{ public: string carnumber;//车牌号 string brand;//品牌 string color;//颜色 int entrytime;//进场时间 Car(){} void AddInformation() { cout<<"请输入汽车的车牌号,品牌,颜色,进场时间:"<<endl; cin>>carnumber>>brand>>color>>entrytime; } void disInformation() { cout<<"车牌号:"<<carnumber<<"品牌:"<<brand<<"颜色:"<<color<<"进场时间:"<<entrytime<<endl; } ~Car(){} }; class Person { public: }; class User { public: User(){} ~User(){} }; class Admin { public: Admin(){} ~Admin(){} }; int main(int argc, char** argv) { show_menu(); int choice=0; while(true) { //show_menu(); cout<<"请输入你的选择:"<<endl; cin>>choice; switch(choice) { case 0://退出系统 exitsystem(); break; case 1://1.汽车信息模板 while(true) { show_car(); int car_choice=1; cout<<"请输入你的选择:"<<endl; cin>>car_choice; switch(car_choice) { case 1: cout<<"你的选择是:1.添加汽车信息"<<endl; Car c; c.AddInformation(); break; case 2: c.disInformation(); cout<<"你的选择是:2.删除汽车信息"<<endl; break; case 3: cout<<"你的选择是:3.查找汽车信息"<<endl; break; case 4: cout<<"你的选择是:4.修改汽车信息"<<endl; break; case 5: cout<<"你的选择是:5.停车时长统计"<<endl; break; case 6: cout<<"你的选择是:6.停车场信息显示"<<endl; break; case 7: cout<<"你的选择是:7.汽车信息保存"<<endl; break; } break; } case 2://2.普通用户模板 while(true) { show_user(); int user_choice=1; cout<<"请输入你的选择:"<<endl; cin>>user_choice; switch(user_choice) { case 1: cout<<"你的选择是:1.显示汽车信息"<<endl; break; case 2: cout<<"你的选择是:2.查询汽车信息"<<endl; break; case 3: cout<<"你的选择是:3.停车时长统计"<<endl; break; } } break; case 3://3.管理员用户模板 while(true) { show_admin(); int admin_choice=1; cout<<"请输入你的选择:"<<endl; cin>>admin_choice; switch(admin_choice) { case 1: cout<<"你的选择是:1.添加汽车信息"<<endl; break; case 2: cout<<"你的选择是:2.显示汽车信息1"<<endl; break; case 3: cout<<"你的选择是:3.查询汽车信息"<<endl; break; case 4: cout<<"你的选择是:4.删除汽车信息"<<endl; break; case 5: cout<<"你的选择是:5.删除汽车信息"<<endl; break; case 6: cout<<"你的选择是:6.汽车信息统计"<<endl; break; } } break; } } return 0; }为社么在刚刚那个地方会报错
时间: 2025-06-05 15:34:07 浏览: 12
从你的代码来看,问题可能出现在以下几个方面:
1. **`Car c;` 的作用域问题**:在 `case 1:` 中,你定义了一个局部变量 `Car c;` 并调用了它的方法 `c.AddInformation();`。然而,在其他 `case` 分支中(例如 `case 2:`),你试图再次使用 `c.disInformation();`,但此时 `c` 已经超出了其作用域,因为它是 `case 1:` 中的局部变量。
解决方案:将 `Car c;` 提升到整个 `switch` 语句外部,使其在整个 `while` 循环中可用。
2. **未实现的功能**:在 `case 2:` 中调用了 `c.disInformation();`,但在其他分支中(如 `case 3:`、`case 4:` 等)没有实现具体的功能逻辑,这可能导致编译器报错或运行时错误。
3. **缺少退出机制**:在汽车信息模块的 `while(true)` 循环中,没有提供退出选项,这可能导致程序陷入死循环。
以下是修正后的代码:
```cpp
#include <iostream>
#include <ctime>
#include <vector>
using namespace std;
void show_menu() {
cout << "********欢迎使用停车场管理系统********" << endl;
cout << "********1. 汽车信息模块**********" << endl;
cout << "********2. 普通用户模块**********" << endl;
cout << "********3. 管理员用户模块*******" << endl;
}
void exitsystem() {
cout << "正在退出系统,欢迎下次使用" << endl;
system("pause");
exit(0); // 退出系统
}
void show_car() {
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;
}
class Car {
public:
string carnumber; // 车牌号
string brand; // 品牌
string color; // 颜色
int entrytime; // 进场时间
Car() {}
void AddInformation() {
cout << "请输入汽车的车牌号、品牌、颜色、进场时间:" << endl;
cin >> carnumber >> brand >> color >> entrytime;
}
void disInformation() {
cout << "车牌号:" << carnumber << " 品牌:" << brand << " 颜色:" << color << " 进场时间:" << entrytime << endl;
}
~Car() {}
};
int main() {
show_menu();
int choice = 0;
vector<Car> cars; // 使用 vector 存储多辆汽车的信息
Car c;
while (true) {
cout << "请输入你的选择:" << endl;
cin >> choice;
switch (choice) {
case 0: // 退出系统
exitsystem();
break;
case 1: // 汽车信息模块
while (true) {
show_car();
int car_choice = 0;
cout << "请输入你的选择:" << endl;
cin >> car_choice;
switch (car_choice) {
case 1: // 添加汽车信息
cout << "你的选择是:1. 添加汽车信息" << endl;
c.AddInformation();
cars.push_back(c); // 将新汽车加入停车场
break;
case 2: // 删除汽车信息
if (!cars.empty()) {
cout << "你的选择是:2. 删除汽车信息" << endl;
cars.pop_back(); // 删除最后一辆汽车
cout << "已删除最后一辆汽车信息" << endl;
} else {
cout << "停车场为空,无法删除!" << endl;
}
break;
case 3: // 查找汽车信息
if (!cars.empty()) {
cout << "你的选择是:3. 查找汽车信息" << endl;
cars.back().disInformation(); // 显示最后一辆汽车的信息
} else {
cout << "停车场为空,无法查找!" << endl;
}
break;
case 4: // 修改汽车信息
if (!cars.empty()) {
cout << "你的选择是:4. 修改汽车信息" << endl;
cars.back().AddInformation(); // 修改最后一辆汽车的信息
} else {
cout << "停车场为空,无法修改!" << endl;
}
break;
case 5: // 停车时长统计
if (!cars.empty()) {
cout << "你的选择是:5. 停车时长统计" << endl;
time_t current_time = time(nullptr);
int duration = current_time - cars.back().entrytime;
cout << "最后一辆汽车的停车时长为:" << duration << " 秒" << endl;
} else {
cout << "停车场为空,无法统计!" << endl;
}
break;
case 6: // 停车场信息显示
if (!cars.empty()) {
cout << "你的选择是:6. 停车场信息显示" << endl;
for (const auto& car : cars) {
car.disInformation();
}
} else {
cout << "停车场为空,无信息可显示!" << endl;
}
break;
case 7: // 汽车信息保存
cout << "你的选择是:7. 汽车信息保存" << endl;
cout << "汽车信息已保存到内存中!" << endl;
break;
case 8: // 返回主菜单
cout << "返回主菜单..." << endl;
goto main_menu; // 返回主菜单
break;
default:
cout << "无效的选择,请重新输入!" << endl;
}
}
break;
case 2: // 普通用户模块
cout << "普通用户模块功能尚未实现!" << endl;
break;
case 3: // 管理员用户模块
cout << "管理员用户模块功能尚未实现!" << endl;
break;
default:
cout << "无效的选择,请重新输入!" << endl;
}
}
main_menu:
return 0;
}
```
### 代码解释
1. **`Car` 类**:
- 包含了汽车的基本属性(车牌号、品牌、颜色、进场时间)。
- 提供了添加、显示等方法。
2. **主菜单逻辑**:
- 使用 `switch` 语句根据用户输入的选择执行不同的功能。
- 在汽车信息模块中,使用 `vector<Car>` 来存储多辆汽车的信息,方便管理。
3. **功能实现**:
- 添加汽车信息时,创建一个新的 `Car` 对象并将其加入 `vector`。
- 删除汽车信息时,简单地移除 `vector` 中的最后一辆汽车。
- 查找汽车信息时,显示 `vector` 中最后一辆汽车的详细信息。
- 修改汽车信息时,允许用户更新最后一辆汽车的属性。
- 显示停车场信息时,遍历 `vector` 并打印所有汽车的详细信息。
---
###
阅读全文
相关推荐

















