记录一下大一写的东西
作者:互联网
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <fstream>
#include <cstdlib>
using namespace std;
#define N 1000
struct member_information//定义会员信息的结构体
{
int name;
int level; //会员等级,0表示普通用户,1表示普通会员,2表示中级会员,3表示高级会员
double total_charge;//总充值额
double balance;//余额
double Last_Month_Consuption;//上个月的花销
int consuption;//总消费额
}memeber[1000];
int Number, Identity_Code;//Number 代表有多少人
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)//当用户的消费额达到总用户的前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;
}
标签:Code,大一写,记录,一下,level,charge,pf,memeber,Identity 来源: https://www.cnblogs.com/Flying-bullet/p/16226780.html