写一个有三种身份选择的校园卡管理系统
时间: 2024-02-17 22:03:26 浏览: 68
好的,以下是一个基于控制台的有三种身份选择的校园卡管理系统的示例代码。该系统包括学生、教师和管理员三种身份,具有不同的功能和权限。
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 学生类
class Student {
private:
string name; // 姓名
int id; // 学号
double balance; // 余额
public:
Student(string n, int i, double b) {
name = n;
id = i;
balance = b;
}
// 充值
void recharge(double amount) {
balance += amount;
cout << "充值成功,当前余额为:" << balance << endl;
}
// 消费
bool consume(double amount) {
if (balance >= amount) {
balance -= amount;
cout << "消费成功,当前余额为:" << balance << endl;
return true;
}
else {
cout << "余额不足,消费失败!" << endl;
return false;
}
}
// 查看余额
void checkBalance() {
cout << "当前余额为:" << balance << endl;
}
};
// 教师类
class Teacher {
private:
string name; // 姓名
int id; // 工号
public:
Teacher(string n, int i) {
name = n;
id = i;
}
// 查看教师信息
void checkInfo() {
cout << "姓名:" << name << ",工号:" << id << endl;
}
};
// 管理员类
class Admin {
private:
string name; // 姓名
int id; // 管理员编号
vector<Student*> students; // 学生列表,使用指针动态管理内存
public:
Admin(string n, int i) {
name = n;
id = i;
}
// 添加学生
void addStudent(string name, int id, double balance) {
Student* s = new Student(name, id, balance);
students.push_back(s);
cout << "添加学生成功!" << endl;
}
// 删除学生
void deleteStudent(int id) {
for (int i = 0; i < students.size(); i++) {
if (students[i]->id == id) {
delete students[i];
students.erase(students.begin() + i);
cout << "删除学生成功!" << endl;
return;
}
}
cout << "未找到该学生,删除失败!" << endl;
}
// 查看所有学生信息
void checkStudentsInfo() {
for (int i = 0; i < students.size(); i++) {
cout << "姓名:" << students[i]->name << ",学号:" << students[i]->id << ",余额:" << students[i]->balance << endl;
}
}
};
int main() {
int choice; // 选择身份
cout << "请选择您的身份:1.学生 2.教师 3.管理员" << endl;
cin >> choice;
if (choice == 1) {
// 学生登录
string name;
int id;
double balance;
cout << "请输入您的姓名、学号和余额:" << endl;
cin >> name >> id >> balance;
Student s(name, id, balance);
while (true) {
cout << "请选择您要进行的操作:1.充值 2.消费 3.查看余额 0.退出" << endl;
cin >> choice;
if (choice == 1) {
double amount;
cout << "请输入充值金额:" << endl;
cin >> amount;
s.recharge(amount);
}
else if (choice == 2) {
double amount;
cout << "请输入消费金额:" << endl;
cin >> amount;
s.consume(amount);
}
else if (choice == 3) {
s.checkBalance();
}
else if (choice == 0) {
break;
}
else {
cout << "输入有误,请重新输入!" << endl;
}
}
}
else if (choice == 2) {
// 教师登录
string name;
int id;
cout << "请输入您的姓名和工号:" << endl;
cin >> name >> id;
Teacher t(name, id);
t.checkInfo();
}
else if (choice == 3) {
// 管理员登录
string name;
int id;
cout << "请输入您的姓名和管理员编号:" << endl;
cin >> name >> id;
Admin admin(name, id);
while (true) {
cout << "请选择您要进行的操作:1.添加学生 2.删除学生 3.查看所有学生信息 0.退出" << endl;
cin >> choice;
if (choice == 1) {
string name;
int id;
double balance;
cout << "请输入学生姓名、学号和余额:" << endl;
cin >> name >> id >> balance;
admin.addStudent(name, id, balance);
}
else if (choice == 2) {
int id;
cout << "请输入要删除的学生学号:" << endl;
cin >> id;
admin.deleteStudent(id);
}
else if (choice == 3) {
admin.checkStudentsInfo();
}
else if (choice == 0) {
break;
}
else {
cout << "输入有误,请重新输入!" << endl;
}
}
}
else {
cout << "输入有误,请重新输入!" << endl;
}
return 0;
}
```
以上是一个简单的校园卡管理系统示例,仅供参考。实际应用中,还需要根据具体需求进行进一步的设计和完善。
阅读全文