饭卡

#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;
}

  

posted @ 2023-11-19 10:02  陈若麟  阅读(6)  评论(0编辑  收藏  举报