博主首次文件作业尝试
很久没更新博客了
最近也是有很多很多的问题,无论是学习上的还是生活上的
但毕竟生活就是问题叠着问题
生活总会前进的
今天终于完成了小组的文件作业
全篇100%自己手写
(拥有100%的知识产权)
相当于是自己的一次锻炼了
纪念一下第一次的文件作业~
#include <bits/stdc++.h> #define endl '\n' #define x first #define y second #define int long long #define SugarT ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; const int N=1e3+10; //定义宏会员人数 const int INF=0x3f3f3f3f; const int mod=1e9+7; const double eps = 1e-6; int n,choice; typedef pair<string, int> PII; map<string,int> now; //当前账户的金额 map<string,int> modify_in; //累计充值金额 map<string,int> modify_out; //累计消费金额 vector<string> Namebook; //花名册 PII temp[N]; bool cmp(PII x,PII y) //将temp进行排序处理(结构体自定义排序) { if(x.second==y.second) return x.first>y.first; return x.second>y.second; } void Creat() { printf("请输入会员录入人数\n"); printf("格式为:姓名 初始充值金额\n"); cin >> n; for(int i=0;i<n;i++) { string name; int money; cin >> name >> money; modify_in[name]=money; //初始金额即为初始充值金额 Namebook.push_back(name); //将初始名字存进花名册 now[name]=money; //充值金额即为当前余额 } printf("会员信息录入完毕!\n"); } void Query_Ranking() { printf("会员现存金额排行显示如下\n"); int k=0; for(map<string,int>::iterator it=now.begin();it!=now.end();it++) //转入temp数组进行排序处理 temp[k++]=make_pair(it->first,it->second); sort(temp,temp+now.size(),cmp); for(int i=0;i<now.size();i++) //输出降序排序结果 cout << temp[i].x << " " << temp[i].y << endl; printf("显示完毕!\n"); } void In() { int money; string name; printf("请输入会员名称以及充值金额\n"); printf("格式为:姓名 充值金额\n"); cin >> name >> money; now[name]+=money; modify_in[name]+=money; //充值累计存入当前金额 printf("会员充值操作进行完毕!\n"); printf("信息更新成功!\n"); cout << name << " 当前剩余金额为 " << now[name] << endl; } void Out() { int money; string name; printf("请输入会员名称以及消费金额\n"); printf("格式为:姓名 消费金额\n"); cin >> name >> money; now[name]-=money; modify_out[name]+=money; //消费累计存入当前金额 printf("会员消费操作进行完毕!\n"); printf("信息更新成功!\n"); cout << name << " 当前剩余金额为 " << now[name] << endl; } void Kill() { printf("请输入需要注销的会员名称\n"); string name; cin >> name; modify_in[name]=0; modify_out[name]=0; //消费、充值金额全部归零 for(vector<string>::iterator iter=Namebook.begin();iter!=Namebook.end();iter++) { if(*iter==name) { Namebook.erase(iter); //遍历到ID,删除 break; } } printf("该会员注销操作完成!\n"); } void Query_Name() { for(vector<string>::iterator it=Namebook.begin();it!=Namebook.end();it++) //遍历花名册输出 cout<<*it<<endl; cout << endl; } void Query_Money() { printf("请输入想要查询会员的名称\n"); string name; cin >> name; cout << name << " 当前剩余金额为 " << now[name] << endl; //输出当前余额即可 } void Query_In() { printf("会员累计充值金额排行显示如下\n"); int k=0,ord=0,mid=0,adv=0; for(map<string,int>::iterator it=modify_in.begin();it!=modify_in.end();it++)//转入temp数组进行排序处理 { temp[k++]=make_pair(it->first,it->second); //统计三个阶段的人数 if(it->second<=100) ord++; else if(it->second>=700) adv++; else mid++; } sort(temp,temp+modify_in.size(),cmp); if(adv) { printf("高级会员:\n"); for(int i=0;i<adv;i++) cout << temp[i].x << " " << temp[i].y << endl; } if(mid) { printf("中级会员:\n"); for(int i=adv;i<adv+mid;i++) cout << temp[i].x << " " << temp[i].y << endl; } if(ord) { printf("普通会员:\n"); for(int i=adv+mid;i<modify_in.size();i++) cout << temp[i].x << " " << temp[i].y << endl; } printf("显示完毕!\n"); } void Query_Out() { int k=0,money; int num=modify_out.size()/10; //确定返还金额的人数 printf("会员累计消费金额排行显示如下\n"); for(map<string,int>::iterator it=modify_out.begin();it!=modify_out.end();it++)//转入temp数组进行排序处理 temp[k++]=make_pair(it->first,it->second); sort(temp,temp+modify_out.size(),cmp); for(int i=0;i<modify_out.size();i++) //输出降序排序结果 cout << temp[i].x << " " << temp[i].y << endl; if(num) printf("消费金额在前10%的顾客共有%d位,将会返回消费金额的10%\n",num); else printf("人数不满足返回条件,系统将自动选择消费金额最高的会员返回消费金额的10%\n"),num++; printf("返还名单及返还金额如下\n"); for(int i=0;i<num;i++) { money=temp[i].y*5/100; cout << temp[i].x << " 返还金额为 " << money << endl; now[temp[i].x]+=money; modify_in[temp[i].x]+=money; //将返还金额存入余额以及充值金额中 } printf("显示完毕!\n"); } void End() { fstream File; File.open("d:\\Membership_Management_System.txt",ios::out|ios::app); int k=0; for(map<string,int>::iterator it=now.begin();it!=now.end();it++) //转入temp数组进行排序处理 temp[k++]=make_pair(it->first,it->second); sort(temp,temp+now.size(),cmp); for(int i=0;i<now.size();i++) //输出降序排序结果 File << temp[i].x << " " << temp[i].y << endl; File.close(); printf("会员信息以储存至 D:\\Membership_Management_System.txt 中\n"); printf("期待您下次使用!"); } void Membership_Management_System() { system("cls"); //系统命令:清除控制台显示的内容 system("color f0"); //系统命令:设置控制台背景颜色 printf("您好,欢迎使用会员管理系统!\n"); printf("请根据您的需求选择对应的功能\n"); printf("1.会员信息录入 2.会员排行榜 3.会员充值\n"); printf("4.会员消费 5.会员注销 6.会员花名册\n"); printf("7.会员余额查询 8.上月充值金额排行 9.上月消费金额排行\n"); printf("0.退出系统"); printf("请输入您的选择\n"); fflush(stdin); //刷新输入缓冲区,清除缓冲区内容 while(cin >> choice) { //进行选择判断 if(!choice) { End(); return; } else if(choice==1) Creat(); else if(choice==2) Query_Ranking(); else if(choice==3) In(); else if(choice==4) Out(); else if(choice==5) Kill(); else if(choice==6) Query_Name(); else if(choice==7) Query_Money(); else if(choice==8) Query_In(); else if(choice==9) Query_Out(); } } signed main() { int T=1; //cin >> T; while(T--) Membership_Management_System(); return 0; } // https://paste.ubuntu.com/p/qPtJzWDrKr/