使用C++写饭卡管理系统,要求面向对象,文件输入输出,循环出现菜单页面
时间: 2024-05-07 09:22:59 浏览: 61
用C++编写带菜单的窗口
4星 · 用户满意度95%
好的,我可以给你提供一份代码作为参考,帮助你完成饭卡管理系统。
首先,我们需要定义一个饭卡类(Card),包含饭卡编号(cardId)、余额(balance)和持卡人姓名(name)三个属性,以及对应的构造函数:
```cpp
class Card {
public:
Card() {}
Card(string id, string name, double balance) :
cardId(id), name(name), balance(balance) {}
string cardId;
string name;
double balance;
};
```
接下来,我们需要定义一个饭卡管理系统类(CardManager),包含添加饭卡、查询饭卡余额、充值饭卡和退出程序四个功能。在这个类中,我们需要定义一个 vector<Card> cards 存储所有饭卡信息,并且将这些信息保存到文件中。具体实现如下:
```cpp
class CardManager {
public:
CardManager() {
loadCardsFromFile();
}
void addCard() {
string id, name;
double balance;
cout << "请输入饭卡编号:";
cin >> id;
cout << "请输入持卡人姓名:";
cin >> name;
cout << "请输入饭卡余额:";
cin >> balance;
Card card(id, name, balance);
cards.push_back(card);
saveCardsToFile();
}
void queryBalance() {
string id;
cout << "请输入要查询的饭卡编号:";
cin >> id;
for (int i = 0; i < cards.size(); i++) {
if (cards[i].cardId == id) {
cout << "饭卡余额为:" << cards[i].balance << endl;
return;
}
}
cout << "未找到该饭卡!" << endl;
}
void recharge() {
string id;
double amount;
cout << "请输入要充值的饭卡编号:";
cin >> id;
for (int i = 0; i < cards.size(); i++) {
if (cards[i].cardId == id) {
cout << "请输入充值金额:";
cin >> amount;
cards[i].balance += amount;
cout << "充值成功,当前余额为:" << cards[i].balance << endl;
saveCardsToFile();
return;
}
}
cout << "未找到该饭卡!" << endl;
}
void exit() {
saveCardsToFile();
cout << "感谢使用,再见!" << endl;
std::exit(0);
}
private:
vector<Card> cards;
void loadCardsFromFile() {
ifstream ifs("cards.dat");
if (!ifs.is_open()) {
cout << "文件不存在,将创建新文件!" << endl;
return;
}
while (!ifs.eof()) {
string id, name;
double balance;
ifs >> id >> name >> balance;
if (!id.empty() && !name.empty() && balance >= 0) {
Card card(id, name, balance);
cards.push_back(card);
}
}
ifs.close();
}
void saveCardsToFile() {
ofstream ofs("cards.dat");
for (int i = 0; i < cards.size(); i++) {
ofs << cards[i].cardId << " " << cards[i].name << " " << cards[i].balance << endl;
}
ofs.close();
}
};
```
最后,我们需要在主函数中循环出现菜单页面,并根据用户输入调用相应的功能函数。具体代码如下:
```cpp
int main() {
CardManager manager;
while (true) {
cout << "---------------------------------------" << endl;
cout << "1. 添加饭卡" << endl;
cout << "2. 查询饭卡余额" << endl;
cout << "3. 充值饭卡" << endl;
cout << "4. 退出程序" << endl;
cout << "请选择操作:";
int choice;
cin >> choice;
switch (choice) {
case 1:
manager.addCard();
break;
case 2:
manager.queryBalance();
break;
case 3:
manager.recharge();
break;
case 4:
manager.exit();
break;
default:
cout << "输入有误,请重新选择!" << endl;
break;
}
}
return 0;
}
```
完整代码如下:
阅读全文