饭卡
#include <iostream> #include <windows.h> #include <fstream> using namespace std; struct card{ //属性 string name; int id; string classroom; float money=0; string creat_time; bool gua=0;//是否挂失 //方法 //开卡 bool creat(int i,string n,string c){ name=n; classroom=c; id=i; return true; } //充钱 bool Recharge(int m){ money+=m; return true; } //消费 bool consumption(int m){ if(money>=m&&m>0){ money-=m; return true; } return false; } //退钱 bool tuiqian(int m){ if(money-m<0){ return false; }else{ money-=m; return true; } } }; string g[1000][3]; void fen(int i,int length,string data){ length=data.find("|"); g[i][0]=data.substr(0,length); data=data.substr(length+1); length=data.find("|"); g[i][1]=data.substr(0,length); data=data.substr(length+1); length=data.find("|"); g[i][2]=data.substr(0,length); data=data.substr(length+1); } int main(int argc, char** argv) { card cardlist[100]; int startid=1000; int number=0;//当前有几个人办卡 ifstream file; string data; file.open("1.txt"); //getline获取文件的一行数据 int length; int r=0; while(getline(file,data)){ if(data.length()>5){ fen(r,length,data); } r++; //eof 是否到了文件末尾 if(file.eof()){ break; } } file.close(); for(int i=0;i<r;i++){ cardlist[i].name=g[i][0]; cardlist[i].id=stoi(g[i][1]); cardlist[i].money=stoi(g[i][2]); } while(1){ cout<<"*太康一高附属学校充值系统**"<<endl; cout<<"1.开卡"<<endl<<"2.充值"<<endl<<"3.消费"<<endl<<"4.查询余额"<<endl; cout<<"5.修改姓名"<<endl<<"6.退钱"<<endl<<"7.挂失"<<endl<<"8.退出系统"; cout<<endl; int index; cin>>index; card c; int a;//充值,消费金额,退钱 int _cid;//卡号 bool t=0;//挂失 bool have=false; switch(index){ case 1://开卡 cout<<"请输入姓名:"; cin>>c.name; c.id=startid+number; cardlist[number]=c; cout<<"你的学号为"<<cardlist[number].id<<"你的金额为"<<cardlist[number].money; number++; break; case 2://充钱 cout<<"请输入你的卡号:"; cin>>_cid; for(int i=0;i<=number;i++){ if(cardlist[i].id==_cid){ if(cardlist[i].gua==1){ cout<<"对不起,该同学的卡已挂失"; have=true; }else{ cout<<cardlist[i].name<<"同学你好,请输入充值金额:"; cin>>a; cardlist[i].Recharge(a); cout<<"你的金额有:"<<cardlist[i].money; have=true; break; } } } if(have==false){ cout<<"对不起,该同学没有创建卡号"<<endl; } break; case 3://消费 cout<<"请输入你的卡号"; cin>>_cid; for(int i=0;i<=number;i++){ if(cardlist[i].id==_cid){ if(cardlist[i].gua==1){ cout<<"对不起,该同学的卡已挂失"; have=true; }else{ cout<<cardlist[i].name<<"同学你好,请输入消费金额: 上限为500"<<endl; cin>>a; if(a>500){ cout<<"消费超过上限"; }else{ cardlist[i].consumption(a); cout<<"你的剩余金额:"<<cardlist[i].money; } have=true; break; } } } if(have==false){ cout<<"对不起,该同学没有创建卡号"<<endl; } break; case 4://查余额 cout<<"请输入你的卡号"; cin>>_cid; for(int i=0;i<=number;i++){ if(cardlist[i].id==_cid){ cout<<cardlist[i].name<<"同学你好,你的余额为"<<cardlist[i].money; have=true; break; } } if(have==false){ cout<<"对不起,该同学没有创建卡号"<<endl; } break; case 5://修改姓名 cout<<"请输入你的卡号"; cin>>_cid; for(int i=0;i<=number;i++){ if(cardlist[i].id==_cid){ if(cardlist[i].gua==1){ cout<<"对不起,该同学的卡已挂失"; have=true; }else{ cout<<cardlist[i].name<<"同学你好,请输入修改的姓名"<<endl; cin>>cardlist[i].name; cout<<cardlist[i].name<<"同学,姓名已修改"<<endl; have=true; break; } } } if(have==false){ cout<<"对不起,该同学没有创建卡号"<<endl; } break; case 6://退钱 cout<<"请输入你的卡号"; cin>>_cid; for(int i=0;i<=number;i++){ if(cardlist[i].id==_cid){ if(cardlist[i].gua==1){ cout<<"对不起,该同学的卡已挂失"; have=true; }else{ cout<<cardlist[i].name<<"同学你好,请输入你要退多少钱"<<endl; cin>>a; if(cardlist[i].tuiqian(a)==0){ cout<<"同学,你的余额不足"; } have=true; cout<<cardlist[i].name<<"同学,你的余额为"<<cardlist[i].money; } break; } } if(have==false){ cout<<"对不起,该同学没有创建卡号"<<endl; } break; case 7://挂失 cout<<"请输入你的卡号"; cin>>_cid; for(int i=0;i<=number;i++){ if(cardlist[i].id==_cid){ cardlist[i].gua=1; cout<<"同学,你的卡已挂失"; have=true; break; } } if(have==false){ cout<<"对不起,没有该卡"<<endl; } break; case 8: return 0; break; } Sleep(500); system("cls"); } /* 卡片: 属性: 姓名:string 张三 卡号:int 123456 班级:string 三2班 余额:float 0.2 余额单位: 元 办卡时间:string 2023 11 19 08 40 手机号:string 办卡地点:string 充值点 身份证:string 家庭住址:string 每日消费上限:int 50 消费记录: string[] 最后一次消费时间:string 充值记录:string[] 挂失状态:bool 方法: 开卡 参数1:姓名、班级、 充值 参数1:int 金额 刷卡 参数1:float 金额 参数2:string 地点 挂失: 参数1 卡号 余额查询:参数1 卡号 修改姓名:参数1 卡号 参数2 新名字 删除卡片:参数1 卡号 退钱:参数1 卡号 参数2 金额 增加利息:参数1 卡号 参数2 金额 */ return 0; }