其他分享
首页 > 其他分享> > 记录一下大一写的东西

记录一下大一写的东西

作者:互联网

#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