#include <iostream>
#include <algorithm>
#include <cstdio>
#include <fstream>
#include <cstdlib>
using namespace std;
#define N 1000
struct member_information
{
int name;
int level;
double total_charge;
double balance;
double Last_Month_Consuption;
int consuption;
}memeber[1000];
int Number, Identity_Code;
void Read()
{
FILE *pf;
pf = fopen("member.txt","r");
int i = 0, j;
fscanf(pf, "用户人数: %d", &Number);
j = Number;
while(i < j)
{
fscanf(pf, "用户ID: %d 会员等级: %d 用户总充值额: %.2lf 账户余额: %.2lf 上个月的消费额: %.2lf 消费额: %d", &memeber[i].name, &memeber[i].level, &memeber[i].total_charge, &memeber[i].balance, &memeber[i].Last_Month_Consuption, &memeber[i].consuption);
i++;
}
fclose (pf);
}
void Save()
{
FILE *pf;
pf = fopen("member.txt","w");
fprintf(pf, "用户人数: %d\n", Number);
for(int i = 0;i < Number; i++)
{
fprintf(pf,"用户ID: %d 会员等级: %d 用户总充值额: %.2lf 账户余额: %.2lf 上个月的消费额: %.2lf 消费额: %d\n",memeber[i].name, memeber[i].level, memeber[i].total_charge, memeber[i].balance, memeber[i].Last_Month_Consuption, memeber[i].consuption);
}
fclose (pf);
}
bool cmp(member_information a, member_information b)
{
return a.Last_Month_Consuption > b.Last_Month_Consuption;
}
void Creat_Menu()
{
cout <<"*************************************" << endl;
cout <<"*****" << " 1.查询余额" <<"*********************"<< endl;
cout <<"*****" << " 2.查看用户等级" <<"*****************"<< endl;
cout <<"*****" << " 3.充值" <<"*************************"<< endl;
cout <<"*****" << " 4.查看上个月的消费额度反还" <<"*****"<< endl;
cout <<"*****" << " 5.评估用户等级" <<"*****************"<< endl;
cout <<"*****" << " 6.退出程序 " <<"********************"<< endl;
cout <<"*************************************" << endl;
}
void Check_Balance()
{
cout << memeber[Identity_Code].balance<< endl;
cout << "请输入数字:\n";
Creat_Menu();
}
void Creat_member_information()
{
cout << "用户身份码错误!!!" << endl << "即将为您创建新的用户账户\n\n";
cout << "系统为您创建的用户专属身份码为: " << Number<< endl;
Identity_Code=Number;
memeber[Number].name=Number;
Number++;
cout << "祝您使用愉快!\n\n";
}
void View_Membership_Level()
{
if(memeber[Identity_Code].level == 1)
cout << "尊敬的用户,您现在为普通会员\n";
else if(memeber[Identity_Code].level == 2)
cout << "尊敬的用户,您现在为中级会员\n";
else if(memeber[Identity_Code].level == 3)
cout << "尊敬的用户,您现在为高级会员\n";
else
cout << "尊敬的用户,您现在为普通用户\n";
cout << endl;
cout << "请输入数字:\n";
Creat_Menu();
}
void Assess_Membership_level()
{
if(memeber[Identity_Code].total_charge >= 500 && memeber[Identity_Code].total_charge < 2000 && memeber[Identity_Code].level == 0)
memeber[Identity_Code].level = 1;
else if(memeber[Identity_Code].total_charge >= 2000 && memeber[Identity_Code].total_charge < 10000 && memeber[Identity_Code].level <= 1)
memeber[Identity_Code].level = 2;
else if(memeber[Identity_Code].total_charge >= 10000 && memeber[Identity_Code].level <= 2)
memeber[Identity_Code].level = 3;
cout << endl;
View_Membership_Level();
}
void Recharge()
{
if(memeber[Identity_Code].level == 1)
cout << "由于您为普通会员,该次充值享受9折优惠" << endl;
else if(memeber[Identity_Code].level == 2)
cout << "由于您为中级会员,该次充值享受8折优惠" << endl;
else if(memeber[Identity_Code].level == 3)
cout << "由于您为高级会员,该次充值享受7折优惠" << endl;
cout << "请输入您充值的金额:\n";
double Recharge_Money;
cin >> Recharge_Money;
memeber[Identity_Code].total_charge += Recharge_Money;
if(memeber[Identity_Code].level == 1)
Recharge_Money /= 0.9;
else if(memeber[Identity_Code].level == 2)
Recharge_Money /= 0.8;
else if(memeber[Identity_Code].level == 3)
Recharge_Money /= 0.7;
memeber[Identity_Code].balance += Recharge_Money;
cout << "你当前的余额为: " << memeber[Identity_Code].balance << endl;
Save();
cout << endl;
cout << "请输入数字:\n";
Creat_Menu();
}
void Find_Last_Month_Consuption()
{
if(Identity_Code <= N / 10)
{
cout << "恭喜您,您上个月的消费额达到前10%,将为您返还消费额的5%\n";
cout << "返还的消费额为 :" << memeber[Identity_Code].Last_Month_Consuption * (0.05) << endl;
memeber[Identity_Code].balance += memeber[Identity_Code].Last_Month_Consuption * (0.05);
memeber[Identity_Code].Last_Month_Consuption = 0;
}
else
cout << "您上个月的消费额没有达到前10%,不能为您返还消费额,请接下来再接再力\n";
cout << endl;
cout << "请输入数字:\n";
Creat_Menu();
}
int main()
{
Read();
cout << "请输入会员专属身份码:\n";
cin >> Identity_Code;
if(Identity_Code >= Number)
Creat_member_information();
int key;
cout << "请输入数字:\n";
Creat_Menu();
while(cin >> key)
{
bool flag = 1;
switch(key)
{
case 1: Check_Balance(); break;
case 2: View_Membership_Level(); break;
case 3: Recharge(); break;
case 4: Find_Last_Month_Consuption(); break;
case 5: Assess_Membership_level(); break;
case 6: flag = 0; break;
default: cout <<"错误数字,请重新输入!!!\n" << endl; break;
}
if(!flag)
break;
}
Save();
cout << "程序已退出,感谢您的使用." << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通