课程设计 电话用户管理系统(c++)

#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
class date{
    public:
    int year;
    int month;
    int day;
    date(int y,int m,int d){year=y,month=m,day=d;}
    date(){}
    int getyear(){return year;}
    int getmonth(){return month;}
    int getday(){return day;}
    friend ostream&operator<<(ostream&os,const date&t);
    friend istream&operator>>(istream&is, date&t);
};
ostream &operator<<(ostream&os,const date&t)
{
    os<<t.day<<" "<<t.month<<" "<<t.day;
    return os;
}
istream&operator>>(istream&is,date&t)
{is>>t.year>>t.month>>t.day;
return is;
}
class taocan{
    double jine;//一月需要多少钱
    double liuliang;//一月送多少流量
    int duanxin;//一月免费多少短信
    double dianhua;//一月免费多长时间
    double sliuliang;//一月剩余多少流量
    int sduanxin;//一月剩余多少短信
    double sdianhua;//一月剩余多长时间
    double fei1;//超出套餐后每条短信费用
    double fei2;//超出套餐后每分钟电话费用
    double fei3;//超出套餐后每兆流量费用
    public:
    taocan(double j,double ll,int dx,double dh,double lll,int dxx,double dhh,double f1,double f2, double f3){jine=j,liuliang=ll,duanxin=dx,dianhua=dh,sliuliang=lll,sduanxin=dxx,sdianhua=dhh,fei1=f1,fei2=f2,fei3=f3;}
    taocan(){}
    double getjine(){return jine;}
    double getliuliang(){return liuliang;}
    int getduanxin(){ return duanxin;}
    double getdianhua(){ return dianhua;}
    void setjine(double m){jine=m;}
    void setliuliang(double ll){liuliang=ll;}
    void setduanxin(int d){duanxin=d;}
    void setdianhua(double h){dianhua=h;}
    double getsliuliang(){return sliuliang;}
    int getsduanxin(){ return sduanxin;}
    double getsdianhua(){ return sdianhua;}
    void setsliuliang(double lll){liuliang=lll;}
    void setsduanxin(int dd){duanxin=dd;}
    void setsdianhua(double hh){dianhua=hh;}
    double getfei1(){return fei1;}
    double getfei2(){return fei2;}
    double getfei3(){return fei3;}
    void setfei1(double q){fei1=q;}
    void setfei2(double w){fei1=w;}
    void setfei3(double a){fei1=a;}
     friend ostream&operator<<(ostream&os,const taocan&t);
    friend istream&operator>>(istream&is,taocan&t);
};
ostream &operator<<(ostream&os,const taocan&t)
{
    os<<t.jine<<" "<<t.liuliang<<" "<<t.duanxin<<" "<<t.dianhua<<" "<<t.sliuliang<<" "<<t.sduanxin<<" "<<t.sdianhua<<" "<<t.fei1<<" "<<t.fei2<<" "<<t.fei3;
    return os;
}
istream&operator>>(istream&is,taocan&t)
{is>>t.jine>>t.liuliang>>t.duanxin>>t.dianhua>>t.sliuliang>>t.sduanxin>>t.sdianhua>>t.fei1>>t.fei2>>t.fei3;
return is;
}
/*int main()
{
    taocan t(18,100,100,100,100,100,100,0.1,0.1,0.1);
    //cin>>t;
    double p;
    p=t.getliuliang();
    cout<<p<<endl;
    p=(double)t.getduanxin();
    cout<<p<<endl;
    p=t.getdianhua();
    cout<<p<<endl;
    p=t.getjine();
    cout<<p<<endl;
}*/

class user{
    public:
    string name;
    string ID;
    double jine;
    double yue;
    taocan f;//套餐种类
    int dmessage;//超出套餐短信
    double dliuliang;//超出套餐流量
    double ddianhua;//超出套餐电话
    //public:
    user(string na,string id,double j,double y,taocan c,int m,double l,double d){name=na,ID=id,jine=j,yue=y,f=c,dmessage=m,dliuliang=l,ddianhua=d;}
    user(){}
    string getname(){return name;}
    string getID(){return ID;}
    double getjine(){return jine;}
    double getyue(){return yue;}
    taocan gettaocan(){return f;}
    int getmessage(){return dmessage;}
    double getliuliang(){return dliuliang;}
    double getdianhua(){return ddianhua;}
    void setname(string n){name=n;}
    void setID(string i){ID=i;}
    void setjine(double ji){jine=ji;}
    void setyue(double yu){yue=yu;}
    void settaocan(taocan tc){f=tc;}
    void setmessage(int me){ dmessage=me;}
    void setliuliang(double li){dliuliang=li;}
    void setdianhua(double di){ddianhua=di;}
    friend ostream&operator<<(ostream&os,const user&u);
    friend istream&operator>>(istream&is,user&u);
};
ostream &operator<<(ostream&os,const user&u)
{
    os<<u.name<<" "<<u.ID<<" "<<u.jine<<" "<<u.yue<<" "<<u.f<<" "<<u.dmessage<<" "<<u.dliuliang<<" "<<u.ddianhua;
    return os;
}
istream&operator>>(istream&is,user&u)
{is>>u.name>>u.ID>>u.jine>>u.yue>>u.f>>u.dmessage>>u.dliuliang>>u.ddianhua;
return is;
}
/*int main(){
    user u1;
   cin>>u1;//输入zhangaimin,18864805175,50,32,18 0 0 0 0 0 0 0 0 0,0,0,0
    cout<<u1.getname()<<endl;
    cout<<u1.gettaocan()<<endl;
}*/
class userop{
    public:
    user u1;
    vector<taocan>t;
    vector<taocan>::iterator t1;
    userop(user u1){this->u1=u1,load(),menu();}
    //userop(){load();}
    ~userop(){save2();}
    void load();
    //void save1();
    void save2();
    void menu();
    taocan taocanchange();//套餐选择
    void jiaofei();
    void yuechaxun();
    void dadianhua();
    void faduanxin();
    void shangwang();
    void feiyongxiangdan();
    void taocanchaxun();
    };
void userop::load(){
    taocan tc;
    //int i;
    ifstream infile("D:\\taocan.txt",ios::in);
    if(!infile)
    return ;
    t.clear();
   // i=0;
    while(infile>>tc){//cout<<tc<<endl;
        t.push_back(tc);
       // i++;
    }
    infile.close();
}
/*void userop::save1(){
    ofstream outfile("D:\\taocan.txt",ios::out);
    if(!outfile)
    return ;
    for(t1=t.begin();t1!=t.end();t1++)
    {
        outfile<<*t1<<endl;
    }
    outfile.close();
    }*/
    void userop::save2(){
        vector<user>u;
        vector<user>::iterator uit;
        user u2;
        ifstream infile("D:\\user.txt",ios::in);
        if(!infile)
        return;
        u.clear();
        while(infile>>u2)
        {
            if(u1.getID()==u2.getID()){u.push_back(u1);}
            else  u.push_back(u2);
        }
        infile.close();
        ofstream outfile("D:\\user.txt",ios::out);
    if(!outfile)
    return ;
    for(uit=u.begin();uit!=u.end();uit++)
    {
        outfile<<*uit<<endl;
    }
    outfile.close();
    }
    taocan userop::taocanchange(){//system("pause");
        //system("cls");
        date d1;
        cout<<"请输入当前日期"<<endl;
        cin>>d1;
        if(d1.getday()!=1){cout<<"不是月初无法选择套餐"<<endl;system("pause");system("cls");menu();}
        else{
            int i,m,l,k;
           m=t.size();
            for(i=0;i<m;i++)
            {
                k=i+1;
                cout<<k<<" "<<t[i]<<endl;}
            cout<<"请根据上述套餐输入你想选择的套餐按-1结束"<<endl;
            while(cin>>l&&l!=-1)
             {
                 if((l-1)>=m)
            {cout<<"error"<<endl;}
            else
                {
                   u1.setyue(u1.getyue()+u1.gettaocan().getjine());
                    u1.settaocan(t[l-1]);
                    u1.setyue(u1.getyue()-u1.gettaocan().getjine());
            cout<<"设置成功"<<endl;
            cout<<"请继续输入或按-1结束"<<endl;
            }
            }
            system("cls");
            menu();
        }}
        void userop::jiaofei(){       //system("cls");
            double fei;
            cout<<"请输入需要交的费用输入-1结束"<<endl;
            //cin>>fei;
            //if(fei!=-1)
            while(cin>>fei&&fei!=-1)
            {
            u1.setyue(u1.getyue()+fei);
            cout<<"缴费成功请继续输入或按-1结束"<<endl;
            }
            system("cls");
            menu();
        }
        void userop::yuechaxun(){        //system("cls");
            cout<<"您的余额为"<<endl;
            cout<<u1.getyue()<<endl;
            //break;//youyiwen
            system("pause");
            system("cls");
            menu();
        }
        void userop::dadianhua(){        //system("cls");
            double k;
            //string l;
            if(u1.getyue()<=0)
            {cout<<"已停机"<<endl;system("pause");system("cls");menu();}
            else{
            cout<<"请输入你打电话的时长输入-1结束"<<endl;
            //cin>>k;
            //if(k!=-1)
             while(cin>>k&&(int)k!=-1)
            {
            if(k>u1.gettaocan().getsdianhua())
            {u1.setyue(u1.yue-(k-u1.gettaocan().getsdianhua())*u1.gettaocan().getfei2());
            u1.gettaocan().setsdianhua(0);            u1.setdianhua(k-u1.gettaocan().getsdianhua());
}
            else {u1.gettaocan().setsdianhua(u1.gettaocan().getsdianhua()-k);}
            cout<<"请继续输入或按-1结束"<<endl;
            }
            system("cls");
            menu();
            }}
        void userop::shangwang(){        //system("cls");
            double k;
            if(u1.getyue()<=0)
            {cout<<"已停机"<<endl;system("pause");system("cls");menu();}
            else{
            cout<<"请输入你上网用的时长输入-1结束"<<endl;
           // cin>>k;
            //if(k!=-1)
             while(cin>>k&&(int)k!=-1)
            {
            if(k>u1.gettaocan().getsliuliang())
           {u1.setyue(u1.yue-(k-u1.gettaocan().getsliuliang())*u1.gettaocan().getfei3());
            u1.gettaocan().setsliuliang(0);            u1.setliuliang(k-u1.gettaocan().getsliuliang());
}
            else {u1.gettaocan().setsliuliang(u1.gettaocan().getsliuliang()-k);}
            cout<<"请继续输入或按-1结束"<<endl;
            }
            system("cls");
            menu();
            }}
       void userop::faduanxin(){        //system("cls");
            int k;
            //string l;
            if(u1.getyue()<=0)
            {cout<<"已停机"<<endl;system("pause");system("cls");menu();}
            else{
            cout<<"请输入你发送短信的数量输入-1结束"<<endl;
             while(cin>>k&&k!=-1)//cin>>k;
            //if(k!=-1)
            {
            if(k>u1.gettaocan().getsduanxin())
           {u1.setyue(u1.yue-(double)((k-u1.gettaocan().getsduanxin())*u1.gettaocan().getfei1()));
            u1.gettaocan().setsduanxin(0);
            u1.setmessage(k-u1.gettaocan().getsduanxin());}
            else {u1.gettaocan().setsduanxin(u1.gettaocan().getsduanxin()-k);}
            cout<<"请继续输入或按-1结束"<<endl;
            }
            system("cls");
            menu();
            }}
            void userop::taocanchaxun(){
                cout<<"您的套餐为:"<<endl;
                cout<<"套餐金额"<<u1.gettaocan().getjine()<<endl;
                cout<<"套餐流量"<<u1.gettaocan().getliuliang()<<endl;
                cout<<"套餐短信"<<u1.gettaocan().getduanxin()<<endl;
                cout<<"套餐电话"<<u1.gettaocan().getdianhua()<<endl;
                cout<<"超出套餐后每兆流量费用为"<<u1.gettaocan().getfei2()<<endl;
                cout<<"超出套餐后每条短信费用为"<<u1.gettaocan().getfei1()<<endl;
                cout<<"超出套餐后每分钟话费为"<<u1.gettaocan().getfei3()<<endl;
                system("pause");
                system("cls");
                menu();
            }
            void userop::feiyongxiangdan(){
                double i;
                i=u1.gettaocan().getjine()+(double)u1.getmessage()+u1.getliuliang()+u1.getliuliang();      //system("cls");
                cout<<"月初时金额"<<" "<<u1.getjine()<<endl;
                cout<<"余额"<<" "<<u1.getyue()<<endl;
                cout<<"本月花费"<<" "<<i<<endl;
                cout<<"套餐费用"<<" "<<u1.gettaocan().getjine()<<endl;
                cout<<"本月充值"<<" "<<u1.getyue()-(u1.getjine()-i)<<endl;
                cout<<"套餐外短信费用"<<" "<<u1.getmessage()<<endl;
                cout<<"套餐外上网费用"<<" "<<u1.getliuliang()<<endl;
                cout<<"套餐外电话费用"<<" "<<u1.getliuliang()<<endl;
                system("pause");
                system("cls");
            menu();
            }
            void userop::menu(){
                 system("cls");
                cout<<"**************************************************"<<endl;
                cout<<"**********Welcom to the system!!!!****************"<<endl;
                cout<<"****1,                      套餐选择***************"<<endl;
                cout<<"****2,                      手机缴费***************"<<endl;
                cout<<"****3,                      电话模拟***************"<<endl;
                cout<<"****4,                      短信模拟***************"<<endl;
                cout<<"****5,                      上网模拟***************"<<endl;
                cout<<"****6,                      余额查询***************"<<endl;
                cout<<"****7,                      详单查询***************"<<endl;
                cout<<"****8,                      套餐查询***************"<<endl;
                cout<<"**************************************************"<<endl;
                cout<<"请输入您的选择按-1结束"<<endl;
                int choose;
                cin>>choose;
                if(choose!=-1)
{
                    switch(choose)
                    {case 1:
                    taocanchange();
                    break;
                    case 2:
                    jiaofei();
                    break;
                    case 3:
                    dadianhua();
                    break;
                    case 4:
                    faduanxin();
                    break;
                    case 5:
                    shangwang();
                    break;
                    case 6:
                    yuechaxun();
                    break;
                    case 7:
                    feiyongxiangdan();
                    break;
                    case 8:
                    taocanchaxun();
                    break;
                    }
                }//system("pause");
            }
           /*int main(){
                user u1;//(zhangaimin 18864805175 50 50 0 0 0 0 0 0 0 0 0 0 0 0 0);//..输入zz,18864805175,32,18 500 100 100 500 100 100 0.1 0.1 0.1,0,0,0
                cin>>u1;
                userop uo(u1);
            }*/
class SA{
    public:
    vector<user>u;
    vector<user>::iterator uit;
    multimap<string,int>m1;//按电话号码查找人
    multimap<string,int>::iterator mit1;
    multimap<string,int>m2;//按姓名查找人
    multimap<string,int>::iterator mit2;
    vector<taocan>t;
    vector<taocan>::iterator t1;
    SA(){load1(),load2(),menu();}
    ~SA(){save1(),save2();}
void load1();
void load2();
void save1();
void save2();
void adduser();
void deleteuser();
void chazhaoyonghubyID();
void chazhaoyonghubyname();
void xiugaiuser();
void addtaocan();
void deletetaocan();
void chazhaotaocan();
void xiugaitaocan();
void zifeibiaozhun();
void menu();
};
void SA::load1(){
        user u2;int i;
        ifstream infile("D:\\user.txt",ios::in);
        if(!infile)
     return;
        u.clear();
        m1.clear();
        m2.clear();
        i=0;
        while(infile>>u2)
        {
            u.push_back(u2);
            m1.insert(make_pair(u2.getID(),i));
            m2.insert(make_pair(u2.getname(),i));
            i++;
        }
        infile.close();
}
void SA::save1(){
        ofstream outfile("D:\\user.txt",ios::out);
    if(!outfile)
    return ;
    for(uit=u.begin();uit!=u.end();uit++)
    {
        outfile<<*uit<<endl;
    }
    outfile.close();
}
void SA::load2(){
    taocan tc;//int i;
        ifstream infile("D:\\taocan.txt",ios::in);
        if(!infile)
        return;
        t.clear();
       // m2.clear();
        //i=0;
        while(infile>>tc)
        {
            t.push_back(tc);
        }
        infile.close();
}
void SA::save2(){
      ofstream outfile("D:\\taocan.txt",ios::out);
    if(!outfile)
    return ;
    for(t1=t.begin();t1!=t.end();t1++)
    {
        outfile<<*t1<<endl;
    }
    outfile.close();
}
void SA::adduser(){
    cout<<"请输入姓名,号码,已有话费输入-1结束"<<endl;
    taocan f(0,0,0,0,0,0,0,0.1,0.1,0.1);
    string na;
    string number;double hf;
    while(cin>>na&&na!="-1")
    {cin>>number>>hf;
    user u1(na,number,hf,hf-f.getjine(),f,0,0,0);
    u.push_back(u1);
    m1.insert(make_pair(u1.getID(),u.size()-1));
    m2.insert(make_pair(u1.getname(),u.size()-1));
    cout<<"增加成功请继续添加或按-1结束"<<endl;}
    system("cls");
    menu();
}
void SA::deleteuser(){
    cout<<"请输入你要删除的帐号号码按-1结束"<<endl;
    string number,s;
    while(cin>>number&&number!="-1")
    {int i;
        mit1=m1.find(number);
        i=mit1->second;s=u[mit1->second].getname();
        if(mit1==m1.end()){cout<<"输入错误"<<endl;}
        else {u.erase(u.begin()+i);
              m1.erase(m1.find(number));
              m2.erase(m2.find(s));
              cout<<"删除成功请继续输入或按-1结束"<<endl;
              }
    }system("cls");
               menu();
}
void SA::chazhaoyonghubyID(){
    cout<<"请输入您需要查找的账户号码并按-1结束"<<endl;
    string number;
    while(cin>>number&&number!="-1"){
    mit1=m1.find(number);
    if(mit1==m1.end()){cout<<"你输入的号码没有"<<endl;}
    else
    {  cout<<"该账户的所有信息"<<endl;
       cout<<"用户姓名为"<<u[mit1->second].getname()<<endl;
       cout<<"用户号码为"<<u[mit1->second].getID()<<endl;
       cout<<"用户月初金额为"<<u[mit1->second].getjine()<<endl;
       cout<<"用户余额为"<<u[mit1->second].getyue()<<endl;
       cout<<"用户套餐金额为"<<u[mit1->second].gettaocan().getjine()<<endl;
       cout<<"用户套餐流量为"<<u[mit1->second].gettaocan().getliuliang()<<endl;
       cout<<"用户套餐短信为"<<u[mit1->second].gettaocan().getduanxin()<<endl;
       cout<<"用户套餐电话为"<<u[mit1->second].gettaocan().getdianhua()<<endl;
       cout<<"用户剩余流量为"<<u[mit1->second].gettaocan().getsliuliang()<<endl;
       cout<<"用户剩余短信为"<<u[mit1->second].gettaocan().getsduanxin()<<endl;
       cout<<"用户剩余电话为"<<u[mit1->second].gettaocan().getsdianhua()<<endl;
       cout<<"用户超出套餐每条短信费用为"<<u[mit1->second].gettaocan().getfei1()<<endl;
       cout<<"用户超出套餐每兆流量费用为"<<u[mit1->second].gettaocan().getfei3()<<endl;
       cout<<"用户超出套餐每分钟电话费用为"<<u[mit1->second].gettaocan().getfei2()<<endl;
       cout<<"用户超套餐流量为"<<u[mit1->second].getliuliang()<<endl;
       cout<<"用户超套餐短信为"<<u[mit1->second].getmessage()<<endl;
       cout<<"用户超套餐电话为"<<u[mit1->second].getdianhua()<<endl;
       cout<<"请继续输入或按-1结束"<<endl;}
    }system("cls");
               menu();
}
void SA::chazhaoyonghubyname(){
    cout<<"请输入你要查找的账户姓名并按-1结束"<<endl;
    string name;
    multimap<string,int>::iterator mb,me;
        while(cin>>name&&name!="-1")
    {
    mb=m2.lower_bound(name);
    me=m2.upper_bound(name);
    if(mb==me){cout<<"您输入的姓名有误请重输"<<endl;}
    else {for(mit2=mb;mit2!=me;mit2++)
    {
        cout<<"用户姓名为"<<u[mit2->second].getname()<<endl;
       cout<<"用户号码为"<<u[mit2->second].getID()<<endl;
       cout<<"用户月初金额为"<<u[mit2->second].getjine()<<endl;
       cout<<"用户余额为"<<u[mit2->second].getyue()<<endl;
       cout<<"用户套餐金额为"<<u[mit2->second].gettaocan().getjine()<<endl;
       cout<<"用户套餐流量为"<<u[mit2->second].gettaocan().getliuliang()<<endl;
       cout<<"用户套餐短信为"<<u[mit2->second].gettaocan().getduanxin()<<endl;
       cout<<"用户套餐电话为"<<u[mit2->second].gettaocan().getdianhua()<<endl;
       cout<<"用户剩余流量为"<<u[mit2->second].gettaocan().getsliuliang()<<endl;
       cout<<"用户剩余短信为"<<u[mit2->second].gettaocan().getsduanxin()<<endl;
       cout<<"用户剩余电话为"<<u[mit2->second].gettaocan().getsdianhua()<<endl;
       cout<<"用户超出套餐每条短信费用为"<<u[mit2->second].gettaocan().getfei1()<<endl;
       cout<<"用户超出套餐每兆流量费用为"<<u[mit2->second].gettaocan().getfei3()<<endl;
       cout<<"用户超出套餐每分钟电话费用为"<<u[mit2->second].gettaocan().getfei2()<<endl;
       cout<<"用户超套餐流量为"<<u[mit2->second].getliuliang()<<endl;
       cout<<"用户超套餐短信为"<<u[mit2->second].getmessage()<<endl;
       cout<<"用户超套餐电话为"<<u[mit2->second].getdianhua()<<endl;
        }
    cout<<"上述为该用户的所有账号"<<endl;
    }
    cout<<"请继续输入或按-1结束"<<endl;
    }
        system("cls");
        menu();
    }
void SA::xiugaiuser(){
    int i;
    cout<<"请输入您要修改的账户号码并按-1结束"<<endl;
    string number;
   // while(cin>>number&&number!="-1"){
   cin>>number;if(number!="-1"){
    mit1=m1.find(number);
    i=mit1->second;
    if(mit1==m1.end()){cout<<"你输入的号码没有"<<endl;}
    else{
        cout<<"********子菜单**********"<<endl;
        cout<<"1,              修改姓名"<<endl;
        cout<<"2,              修改金额"<<endl;
        cout<<"3,              修改余额"<<endl;
        cout<<"4,              修改套餐"<<endl;
        cout<<"5,              修改超出套餐流量"<<endl;
        cout<<"6,              修改超出套餐短信"<<endl;
        cout<<"7,              修改超出套餐电话"<<endl;
        cout<<"************************"<<endl;
        cout<<"请输入您的选择,并按-1结束"<<endl;
        int choose;
        while(cin>>choose&&choose!=-1)
        {
            switch(choose)
            {
                case 1:
                {cout<<"请输入你要修改后的姓名"<<endl;
                string name;
                cin>>name;
                u[i].setname(name);
                cout<<"设置成功请继续输入您的选择或按-1结束结束此菜单"<<endl;}
                break;
                case 2:
                {cout<<"请输入你要修改的金额"<<endl;
                int jine;
                cin>>jine;
                u[i].setjine(jine);
                cout<<"设置成功请继续输入您的选择或按-1结束此菜单"<<endl;}
                break;
                case 3:
                {cout<<"请输入您要修改的余额"<<endl;
                double yue;
                cin>>yue;
                u[i].setyue(yue);
                cout<<"设置成功请继续输入您的选择或按-1结束此菜单"<<endl;}
                break;
                case 4:
              { int j,m,l,k;
               m=t.size();
               for(j=0;j<m;j++)
               {k=j+1;
                   cout<<k<<" "<<t[j]<<endl;}
               cout<<"请根据上述套餐输入你想修改的套餐"<<endl;
                 cin>>l;
               if(l>m)
               {cout<<"error"<<endl;}
               else
                {u[i].settaocan(t[l-1]);
                cout<<"设置成功请继续输入您的选择或按-1结束此菜单"<<endl;}}
                break;
                case 5:
                {cout<<"请输入您要修改的超出套餐的流量"<<endl;
                int d1;
                cin>>d1;
                u[i].setliuliang(d1);
                cout<<"设置成功请继续输入您的选择或按-1结束此菜单"<<endl;}
                break;
                case 6:
               { cout<<"请输入您要修改的超出套餐的短信"<<endl;
                int dm;
                cin>>dm;
                u[i].setmessage(dm);
                cout<<"设置成功请继续输入您的选择或按-1结束此菜单"<<endl;}
                break;
                case 7:
                {cout<<"请输入您要修改的超出套餐的电话"<<endl;
                int da;
                cin>>da;
                u[i].setdianhua(da);
                cout<<"设置成功请继续输入您的选择或按-1结束此菜单"<<endl;}
                break;
                }
        }
    }
    }system("cls");
               menu();
}
void SA::addtaocan(){
    cout<<"请输入您要增加的套餐的金额与套餐流量,套餐短信,套餐电话,与套餐外每分钟电话费用,每兆流量费用,每条短信费用按-1结束"<<endl;
    int jine;
    double liuliang;
    int duanxin;
    double dianhua;
    double fei1;
    double fei2;
    double fei3;
    while(cin>>jine&&jine!=-1)
    {
        cin>>liuliang>>duanxin>>dianhua>>fei1>>fei2>>fei3;
        taocan tc(jine,liuliang,duanxin,dianhua,liuliang,duanxin,dianhua,fei3,fei1,fei2);
        t.push_back(tc);
        cout<<"增加成功请继续输入或按-1结束"<<endl;
    }system("cls");
               menu();
}
void SA::deletetaocan(){
               int j,m,l,k;
             // double e,r;
               m=t.size();
               for(j=0;j<m;j++)
               {k=j+1;
                   cout<<k<<" "<<t[j]<<endl;}
               cout<<"请根据上述套餐输入你想删除的套餐按-1结束"<<endl;
                 while(cin>>l&&l!=-1){
               if((l-1)>=m)
               {cout<<"error"<<endl;}
               else
                {
                    t.erase(t.begin()+l-1);
                             // m1.erase(m1.find(number));
                cout<<"删除成功"<<endl;}
                cout<<"请继续输入或按-1结束"<<endl;
                 }
                system("cls");
               menu();
}
void SA::chazhaotaocan(){
               int j,m,k;
             // double e,r;
               m=t.size();
               for(j=0;j<m;j++)
               {k=j+1;
               cout<<"第"<<k<<"种套餐"<<" "<<"套餐金额"<<" "<<t[j].getjine()<<" "<<"套餐流量"<<" "<<t[j].getliuliang()<<" "<<"套餐短信"<<" "<<t[j].getduanxin()<<" "<<"套餐电话"<<" "<<t[j].getdianhua()<<" "<<"超出套餐后每条短信美兆流量每分钟电话各自费用"<<" "<<t[j].getfei1()<<" "<<t[j].getfei3()<<" "<<t[j].getfei2()<<endl;}
               system("pause");
               system("cls");
               menu();
    }
void SA::xiugaitaocan(){

            int j,m,l,q,k;
               m=t.size();
               for(j=0;j<m;j++)
               {
                   k=j+1;
                   cout<<k<<" "<<t[j]<<endl;
                }
               cout<<"请根据上述套餐输入你想修改的套餐按-1结束"<<endl;
               while(cin>>l&&l!=-1)
               {int jine;
                double liuliang;
                int duanxin;
                double dianhua;
                double fei1;
                double fei2;
                double fei3;
                cout<<"请输入你要修改的结果"<<endl;
                cout<<"套餐金额  流量  短信  电话  超出套餐后每条短信费用 每分钟电话费用 每兆流量费用"<<endl;
                cin>>jine>>liuliang>>duanxin>>dianhua>>fei1>>fei2>>fei3;
                taocan tc(jine,liuliang,duanxin,dianhua,liuliang,duanxin,dianhua,fei1,fei2,fei3);
                t[l-1]=tc;
                cout<<"修改成功"<<endl;
                cout<<"请继续输入或按-1结束"<<endl;
               }
               system("cls");
               menu();
    }
void SA::menu(){
    cout<<"**************************************************"<<endl;
    cout<<"**********Welcom to the system!!!!****************"<<endl;
    cout<<"***********1,                 增加用户************"<<endl;
    cout<<"***********2,                 删除用户************"<<endl;
    cout<<"***********3,                 按号码查找用户******"<<endl;
    cout<<"***********4,                 按姓名查找用户******"<<endl;
    cout<<"***********5,                 修改用户************"<<endl;
    cout<<"***********6,                 增加套餐************"<<endl;
    cout<<"***********7,                 删除套餐************"<<endl;
    cout<<"***********8,                 查找套餐************"<<endl;
    cout<<"***********9,                 修改套餐************"<<endl;
    cout<<"***********10,                资费详单************"<<endl;
    cout<<"**************************************************"<<endl;
    cout<<"请输入您的选择按-1结束"<<endl;
    int choose;
    cin>>choose;if(choose!=-1)
    {
        switch(choose)
        {
            case 1:
            adduser();
            break;
            case 2:
            deleteuser();
            break;
            case 3:
            chazhaoyonghubyID();
            break;
            case 5:
            xiugaiuser();
            break;
            case 6:
            addtaocan();
            break;
            case 7:
            deletetaocan();
            break;
            case 8:
            chazhaotaocan();
            break;
            case 9:
            xiugaitaocan();
            break;
            case 10:
            zifeibiaozhun();
            break;
            case 4:
            chazhaoyonghubyname();
            break;
        }
    }
}
void SA::zifeibiaozhun(){
           int j,m,k;
               m=t.size();
               for(j=0;j<m;j++)
               {k=j+1;
               cout<<"第"<<k<<"种套餐"<<endl;
               cout<<"需金额"<<t[j].getjine()<<endl;
               cout<<"超出套餐后"<<endl;
               cout<<"每分钟电话"<<t[j].getfei2()<<endl;
               cout<<"每条短信"<<t[j].getfei1()<<endl;
               cout<<"每兆流量费用"<<t[j].getfei3()<<endl;
               }system("pause");
               system("cls");
               menu();
}
//int main(){SA sa;}
class denglu{
    public:
    vector<user>u;
    vector<user>::iterator uit;
    multimap<string,int>m1;
    multimap<string,int>::iterator mit1;
    denglu(){load();}
    void login();
    void load();
};
void denglu::login(){
    int i;
    date d1;
    string na,zh;
    for(i=0;i<3;i++)
    {
        cout<<"请输入你的名称与号码(如果想进入管理端请输入admin admin)"<<endl;
        cin>>na>>zh;
        if(na=="admin"&&zh=="admin")
       { system("cls");
           SA sa;
       break;}
       else {
           mit1=m1.find(zh);
           if(mit1!=m1.end()){
           if(u[mit1->second].getname()==na)
           {//system("cls");
               cout<<"请输入当前时间"<<endl;
               cin>>d1;
               if(d1.getday()==1){
                /*//system("pause");
        //system("cls");
            int i,m,l,k;
           m=t.size();
            for(i=0;i<m;i++)
            {
                k=i+1;
                cout<<k<<" "<<t[i]<<endl;}
            cout<<"请根据上述套餐输入你想选择的套餐按-1结束"<<endl;
            while(cin>>l&&l!=-1)
             {
                 if((l-1)>=m)
            {cout<<"error"<<endl;}
            else
                {
                    u1.settaocan(t[l-1]);
            cout<<"设置成功"<<endl;
            cout<<"请继续输入或按-1结束"<<endl;
            }
            }
            system("cls");
            menu();
        }*/
               u[mit1->second].setjine(u[mit1->second].getyue());
                u[mit1->second].setyue( u[mit1->second].getyue()-u[mit1->second].gettaocan().getjine());
                 u[mit1->second].gettaocan().setsliuliang(u[mit1->second].gettaocan().getliuliang());
                 u[mit1->second].gettaocan().setsduanxin(u[mit1->second].gettaocan().getduanxin());
                 u[mit1->second].gettaocan().setsdianhua(u[mit1->second].gettaocan().getdianhua());
                 u[mit1->second].setmessage(0);
                 u[mit1->second].setliuliang(0);
                 u[mit1->second].setdianhua(0);
               //user u1(na,zh,u[mit1->second].getjine(),u[mit1->second].getyue(),u[mit1->second].gettaocan(),u[mit1->second].getmessage(),u[mit1->second].getliuliang(),u[mit1->second].getdianhua())
               system("cls");
               userop u1(u[mit1->second]);
          break;}
          else
          {system("cls");
          userop u1(u[mit1->second]);
          break;}
          }}
          else  {cout<<"此账号不存在"<<endl;}
       }
    }
       if(i=3)
       cout<<"error"<<endl;
}
void denglu::load(){
    user u2;int i;
        ifstream infile("D:\\user.txt",ios::in);
        if(!infile)
        return;
        u.clear();
        m1.clear();
        i=0;
        while(infile>>u2)
        {

            u.push_back(u2);
            m1.insert(make_pair(u2.getID(),i));
            i++;

        }
        infile.close();
}
int main(){
    denglu d;
    d.login();
}

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值