设计一个校园卡系统中有用户注册,登入,选择套餐中有二级菜单30元套餐和50元套餐,余额查询,余额不足提醒,充值中有30元充值、50元充值和其他数额充值的二级菜单,消费,自动结算等功能,要用C++来写此程序设计
时间: 2023-10-27 13:07:01 浏览: 32
好的,我可以为您设计一个基于C++的校园卡系统,包括以下功能:
1. 用户注册:用户输入姓名、学号、密码等信息进行注册。
2. 登录:用户输入学号和密码进行登录。
3. 选择套餐:用户可以选择30元套餐和50元套餐,选择后系统会提示用户确认,用户确认后扣除相应金额。
4. 余额查询:用户可以查询当前余额。
5. 余额不足提醒:当用户余额不足时,系统会提示用户进行充值。
6. 充值:用户可以选择30元、50元或其他数额进行充值,充值后余额增加相应金额。
7. 消费:用户可以进行消费,消费后余额减少相应金额。
8. 自动结算:系统会每月自动结算用户的消费金额,将消费金额从余额中扣除。
以下是代码实现:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 用户结构体
struct User {
string name; // 姓名
string id; // 学号
string password; // 密码
double balance; // 余额
};
// 套餐结构体
struct Package {
string name; // 套餐名称
double price; // 价格
};
// 套餐列表
vector<Package> packageList = {
{"30元套餐", 30},
{"50元套餐", 50}
};
// 用户列表
vector<User> userList;
// 查找用户
int findUser(string id) {
for (int i = 0; i < userList.size(); i++) {
if (userList[i].id == id) {
return i;
}
}
return -1; // 找不到用户,返回-1
}
// 注册用户
void registerUser() {
User user;
cout << "请输入姓名:";
cin >> user.name;
cout << "请输入学号:";
cin >> user.id;
cout << "请输入密码:";
cin >> user.password;
user.balance = 0;
userList.push_back(user);
cout << "注册成功!" << endl;
}
// 登录
int login() {
string id, password;
cout << "请输入学号:";
cin >> id;
cout << "请输入密码:";
cin >> password;
int index = findUser(id);
if (index == -1) {
cout << "用户不存在!" << endl;
return -1;
}
if (userList[index].password != password) {
cout << "密码错误!" << endl;
return -1;
}
return index;
}
// 选择套餐
void choosePackage(User& user) {
cout << "请选择套餐:" << endl;
for (int i = 0; i < packageList.size(); i++) {
cout << i + 1 << ". " << packageList[i].name << "(" << packageList[i].price << "元)" << endl;
}
int choice;
cin >> choice;
if (choice < 1 || choice > packageList.size()) {
cout << "选择无效!" << endl;
return;
}
Package package = packageList[choice - 1];
cout << "您选择了" << package.name << ",确认支付" << package.price << "元?(Y/N)" << endl;
char confirm;
cin >> confirm;
if (confirm != 'Y' && confirm != 'y') {
cout << "取消支付!" << endl;
return;
}
if (user.balance < package.price) {
cout << "余额不足,请充值!" << endl;
return;
}
user.balance -= package.price;
cout << "支付成功!" << endl;
}
// 余额查询
void checkBalance(User& user) {
cout << "当前余额:" << user.balance << "元" << endl;
}
// 充值
void recharge(User& user) {
cout << "请选择充值金额:" << endl;
cout << "1. 30元" << endl;
cout << "2. 50元" << endl;
cout << "3. 其他金额" << endl;
int choice;
cin >> choice;
double amount;
switch (choice) {
case 1:
amount = 30;
break;
case 2:
amount = 50;
break;
case 3:
cout << "请输入充值金额:";
cin >> amount;
break;
default:
cout << "选择无效!" << endl;
return;
}
user.balance += amount;
cout << "充值成功!当前余额:" << user.balance << "元" << endl;
}
// 消费
void consume(User& user) {
cout << "请输入消费金额:";
double amount;
cin >> amount;
if (user.balance < amount) {
cout << "余额不足,请充值!" << endl;
return;
}
user.balance -= amount;
cout << "消费成功!当前余额:" << user.balance << "元" << endl;
}
// 自动结算
void autoSettlement(User& user) {
cout << "自动结算成功!消费金额:" << user.balance << "元" << endl;
user.balance = 0;
}
int main() {
while (true) {
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;
int choice;
cin >> choice;
if (choice == 8) {
break;
}
int index;
switch (choice) {
case 1:
registerUser();
break;
case 2:
index = login();
if (index != -1) {
User& user = userList[index];
cout << "登录成功!欢迎您," << user.name << "!" << endl;
}
break;
case 3:
if (userList.empty()) {
cout << "请先登录!" << endl;
break;
}
index = login();
if (index != -1) {
User& user = userList[index];
choosePackage(user);
}
break;
case 4:
if (userList.empty()) {
cout << "请先登录!" << endl;
break;
}
index = login();
if (index != -1) {
User& user = userList[index];
checkBalance(user);
}
break;
case 5:
if (userList.empty()) {
cout << "请先登录!" << endl;
break;
}
index = login();
if (index != -1) {
User& user = userList[index];
recharge(user);
}
break;
case 6:
if (userList.empty()) {
cout << "请先登录!" << endl;
break;
}
index = login();
if (index != -1) {
User& user = userList[index];
consume(user);
}
break;
case 7:
if (userList.empty()) {
cout << "请先登录!" << endl;
break;
}
index = login();
if (index != -1) {
User& user = userList[index];
autoSettlement(user);
}
break;
default:
cout << "选择无效!" << endl;
break;
}
}
cout << "感谢使用校园卡系统!" << endl;
return 0;
}
```
注意:本程序仅为示例,实际应用中需要根据具体需求进行修改和完善。