VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 90|回复: 1

[求助] 为什么这个写入这个文件不能写入正确的数字信息

[复制链接]
71_avatar_middle
在线会员 发表于 2019-7-4 10:43:46 | 显示全部楼层 |阅读模式
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
using namespace std;
class withdrawal;
class accountltem{
        private:
        string name1;
        string password,account,address;
        double type,year0,month0,day0,money,money1;     //当前余额//
        double loss,m_loss;
public:
        void guashi()
        {
                                                        string m_name1,m_address,m_account,m_password;
                                                        int m_type;
                                                        cout<<"请输入原账户名字:";cin>>m_name1;
                                                        if(name1==m_name1)
                                                        {
                                                                cout<<"请输入原账户地址:";cin>>m_address;
                                                                if(address==m_address)
                                                                {
                                                                        cout<<"请输入原账户账号:";cin>>m_account;
                                                                        if(account==m_account)
                                                                        {
                                                                                        cout<<"请输入原账户密码:";cin>>m_password;
                                                                                if(password==m_password)
                                                                                {
                                                                                                cout<<"请输入原账户定期:";cin>>m_type;
                                                                                        if(type==m_type)
                                                                                        {
                                                                                                cout<<"验证完毕,储户存在,挂失成功";
                                                                                        }
                                                                                        else
                                                                                                cout<<"验证完毕,储户不存在,挂失失败";
                                                                                }
                                                                                else
                                                                                {
                                                                                        cout<<"密码错误";
                                                                                        cout<<"验证完毕,储户不存在,挂失失败";
                                                                                }
                                                                        }
                                                                        else
                                                                        {
                                                                                cout<<"账号错误";
                                                                                cout<<"验证完毕,储户不存在,挂失失败";
                                                                        }
                                                                }
                                                                else
                                                                {
                                                                        cout<<"地址错误";
                                                                        cout<<"验证完毕,储户不存在,挂失失败";;
                                                                }
                                                        }
                                                        else
                                                        {
                                                                cout<<"姓名错误";
                                                                cout<<"验证完毕,储户不存在,挂失失败";
                                                        }
       
        }
        short accountltem::IsNull()
        {
                if(account=="")
                        return 1;
                return 0;
        }
        void show_accountltem()
        {
                cout<<"姓名:"<<name1<<endl;
                cout<<"地址:"<<address<<endl;
                cout<<"账号:"<<account<<endl;
                cout<<"密码:"<<password<<endl;
                cout<<"年限:"<<type<<endl;
                cout<<"存款年份:"<<money<<endl;
                cout<<"存款月份:"<<year0<<endl;
                cout<<"存款日期:"<<month0<<endl;
                cout<<"存入金额:"<<day0<<endl;
        }
        string get_account()
        {
                return account;
        }
        int get_m_loss()
        {
                return m_loss;
        }
        int get_money()
        {
                return money;
        }
        string get_password()
        {
                return password;
        }
        void deductpassword(int pa)
        {
                password=pa;
        }
        accountltem()
        {
                name1="";
                address="";
                account="";
                password="";
                type=0;
                money=0;
                year0=0;
                month0=0;
                day0=0;
                loss=0;
        }
        accountltem (string na1,double ty,string ad,double y0,string ac,double m0,double d0,string pa,double mo,double l)
        {  
                name1=na1;
                type=ty;
                address=ad;
                year0=y0;
                account=ac;
                month0=m0;
                day0=d0;
                password=pa;
                money=mo;
                loss=l;
        }
        friend void benxi(accountltem& p,withdrawal& w);
        friend void change(accountltem& pe,withdrawal& wi);
        friend void judge(accountltem& p1,withdrawal& w1);
        friend void show(accountltem& p4,withdrawal& w4);
        void write(ofstream& s)
        {
                s<<name1;
                s<<address;
                s<<account;
                s<<password;
                s<<type;
                s<<money;
                s<<year0;
                s<<month0;
                s<<day0;
                return;
        }
         void read(ifstream& s)
        {
                s>>name1;
                s>>address;
                s>>account;
                s>>password;
                s>>type;
                s>>money;
                s>>year0;
                s>>month0;
                s>>day0;
                return;
        }

};
class withdrawal{
private:
        int id;
        int year1;
        int month1;
        int day1;
        string name2;
        float out;     //取款金额
        float out1;    //利润
public:
        friend void judge(accountltem& p1,withdrawal& w1)
        {
                string x;
                cout<<"请输入取款密码:";
                cin>>x;
                if(x==p1.password)
                {
                        cout<<"当前账户余额为:"<<p1.get_money ()<<endl;
                        cout<<"请输入取款金额:";
                        cin>>w1.out;
                                p1.m_loss=1;
                }
                else
                {
                        cout<<"密码错误,您还有两次机会!";
                        cout<<"请重新输入取款密码:";
                cin>>x;
                                if(x==p1.password)
                                {
                                        cout<<"当前账户余额为:"<<p1.get_money ()<<endl;
                                        cout<<"请输入取款金额:";
                                        cin>>w1.out;
                                                p1.m_loss=1;
                                }
                                else
                                {
                                        cout<<"密码错误,您还有一次机会!";
                                        cout<<"请重新输入取款密码:";
                                        cin>>x;
                                                if(x==p1.password)
                                                {
                                                        cout<<"当前账户余额为:"<<p1.get_money ()<<endl;
                                                        cout<<"请输入取款金额:";
                                                        cin>>w1.out;
                                                        p1.m_loss=1;
                                                }
                                                else
                                                {
                                                        cout<<"三次输入密码错误,接下来进行挂失程序!";
                                                        p1.guashi();
                                                        p1.m_loss=0;
                                                }
                                }
                }
        }
        friend void show(accountltem& p4,withdrawal& w4);
        withdrawal()
        {
                id=0;
                name2=="";
                year1=0;
                month1=0;
                day1=0;
        }
        withdrawal (int i,string na2,int y1,int m1,int d1)
        {
                id=i;
        name2=na2;
        year1=y1;
        month1=m1;
        day1=d1;
        }
friend void change(accountltem& pe,withdrawal& wi);
friend void benxi(accountltem& p,withdrawal& w);
};
void change(accountltem& pe,withdrawal& wi)
{
        pe.money=pe.money-wi.out;      //存款金额减去取出金额
}
void benxi(accountltem& p,withdrawal& w)
{
        p.money1=p.money;
        int g=0;
        int f=0;
        if(w.month1>=p.month0)
        {       
                f=f+(w.year1 -p.year0 )*12;
                if(w.day1>=p.day0)
                {       
                        g=g+(w.month1-p.month0+f)*30;
                        g=g+(w.day1-p.day0);
                }
                else
                {       
                        g=g+(w.month1-p.month0-1+f)*30;
                        g=g+(30-p.day0+w.day1);
                }
        }
        else
        {       
                f=f+(w.year1-p.year0-1)*12;
                if(w.day1>=p.day0)
                {
                        g=g+(w.month1-p.month0+f)*30;
                        g=g+(w.day1-p.day0);
                }
                else
                {
                        g=g+(w.month1-p.month0-1+f)*30;
                        g=g+(30-p.day0+w.day1);
                }
        }
       
        int h;
        h=g/365;//存款的年数
        if(h==0)
        p.money=p.money*(1+0.00002*g)-p.money*g*0.00002*0.2;
        else
        {
                if(h>=1&&h<3)
                        p.money=(p.money+p.money*0.0198*h+(g-h*365)*0.00002*p.money)-(p.money*0.0198*h+(g-h*365)*0.00002*p.money)*0.2;
                else
                {
                        if(h>=3&&h<5)
                                p.money=(p.money+p.money*0.025*h+(g-h*365)*0.00002*p.money)-(p.money*0.025*h+(g-h*365)*0.00002*p.money)*0.2;
                        else
                                p.money=(p.money+p.money*0.0279*h+(g-h*365)*0.00002*p.money)-(p.money*0.0279*h+(g-h*365)*0.00002*p.money)*0.2;
                }
        }
        w.out1=p.money-p.money1;   
}
void show(accountltem& p4,withdrawal& w4)
{
        cout<<"取款人姓名:"<<p4.name1 <<endl;
        cout<<"账号:"<<p4.account<<endl;
        cout<<"储种类型:"<<p4.type<<endl;
        cout<<"本金:"<<p4.money1<<endl;
        cout<<"起息日期:"<<p4.year0<<"."<<p4.month0<<"."<<p4.day0<<endl;
        cout<<"支取日期:"<<w4.year1<<"."<<w4.month1<<"."<<w4.day1<<endl;
        cout<<"利息:"<<w4.out1<<endl;
        cout<<"支取金额:"<<w4.out<<endl;
        cout<<"营业员工号:"<<w4.id<<endl;
        cout<<"营业员姓名:"<<w4.name2<<endl;
}
class accountbook
{
private:
        vector<accountltem>m_account;
        short m_accountcount;
public:
        accountbook();
        short loadaccountbook();
        void storeaccountbook(ofstream& ouputstream);
        accountltem findltem(string no);
        bool updateltem(accountltem ltem);
       
};
accountbook::accountbook()
{
        m_account=vector<accountltem>(100);
        m_accountcount=0;
}
short accountbook::loadaccountbook()
{
        ifstream inputstream("D:\\123.txt");
        short i;
        for(i=0;i<100;i++)
        {
                m_account[i].read(inputstream);
                if(inputstream.fail()!=0)
                        break;


        }
        inputstream.close();
        m_accountcount=i;
        return m_accountcount;
}
accountltem accountbook::findltem (string no)
{
        short i;
        bool found=false;
        for(i=0;i<=m_accountcount;i++)
        {
                if(m_account[i].get_account()==no)
                {
                        found=true;
                        break;
                }
        }
        if(found==true)
                return m_account[i];
        return accountltem();
}
bool accountbook::updateltem(accountltem ltem)
{
        string no=ltem.get_account ();
        short i;
        bool found=false;
        for(i=0;i<m_accountcount;i++)
        {
                if(m_account[i].get_account()==no)
                {
                        found=true;
                        break;
                }
        }
        if(found==true)
                m_account[i]=ltem;
        return found;
}

        void accountbook::storeaccountbook(ofstream& outputstream)
        {
                short i;
                for(i=0;i<m_accountcount;i++)
                        m_account[i].write(outputstream);
                outputstream.close();
                return;
        }
int main()
{
        ofstream outputstream("D:\\123.txt");
        vector<accountltem>accltem(100);
        accltem[0]=accountltem("小明 ",2,"邵阳 ",2019,"1581918318 ",9,5,"0905 ",10000,0);
        accltem[0].show_accountltem();
        accltem[1]=accountltem("小红 ",3,"耒阳 ",2019,"1105358745 ",9,22,"0922 ",10000,0);
        accltem[1].show_accountltem();
        for(int i=0;i<2;i++)
        {accltem[i].write(outputstream);}
        outputstream.close();
        ifstream inputstream("D:\\123.txt");
        accltem[2].read(inputstream);
        accltem[2].show_accountltem();
        int q;
   cout<<" *******************************************************"<<endl;
   cout<<" *******************************************************"<<endl;
   cout<<" **              欢迎使用湘南移动银行                 **"<<endl;
   cout<<" **请选择您的服务:                                   **"<<endl;
   cout<<" **                                                   **"<<endl;
   cout<<" **             1、取款;                             **"<<endl;
   cout<<" **             2、查询余额;                         **"<<endl;
   cout<<" **             3、挂失;                             **"<<endl;
   cout<<" **             4、修改密码;                         **"<<endl;
   cout<<" **             5、查看账户信息;                     **"<<endl;
   cout<<" **                                                   **"<<endl;
   cout<<" **                                                   **"<<endl;
   cout<<" *******************************************************"<<endl;
   cout<<" *******************************************************"<<endl;
        cin>>q;
        if(q==1)
        {
                                                string accountno;
                                                string accpassword;
                                                accountltem foundltem;
                                                accountbook myaccountbook;
                                                myaccountbook.loadaccountbook();
                                                cout<<"请输入您的账号"<<endl;
                                                cin>>accountno;
                                                foundltem=myaccountbook.findltem(accountno);
                                                if(foundltem.IsNull())
                                                {
                                                        cout<<"账号不存在"<<endl;
                                                        return 0;
                                                }
                                               
        int s;
        string b;
        int d,f,g;
        cout<<"请依次输入营业员工号、姓名、取款年、月、日"<<endl;
        cout<<"营业员工号:";cin>>s;cout<<endl;
        cout<<"营业员姓名:";cin>>b;cout<<endl;
        cout<<"年:";cin>>d;
        cout<<"月:";cin>>f;
        cout<<"日:";cin>>g;cout<<endl;
        withdrawal w5(s,b,d,f,g);
       
        judge(foundltem, w5);
        int h;
        h=foundltem.get_m_loss();
       
        if(h==1)
                {
                judge(foundltem, w5);
                         benxi(foundltem, w5);
                        int k;
                         cout<<"是否打印利息单"<<endl;
                        cout<<"是,请输入1;否,请输入0"<<endl;
                         cin>>k;
                        cout<<endl;
                        if(k==1)
                        {       
                                show(foundltem, w5);
                        }
                         cout<<"欢迎下次光临"<<endl;
                }
                else
                        cout<<"取款失败,挂失失败,请在七个工作日后再次挂失,下次再见!"<<endl;
        }
        else
        {
                if(q==2)
                {
                       
                ifstream inputstream("D:\\123.txt");
                                                string accountno;
                                                double accountcount;
                                                accountltem foundltem;
                                                accountbook myaccountbook;
                                                myaccountbook.loadaccountbook();
                                                cout<<"请输入您的账号"<<endl;
                                                cin>>accountno;
                                                foundltem=myaccountbook.findltem(accountno);
                                                if(foundltem.IsNull())
                                                {
                                                        cout<<"账号不存在"<<endl;
                                                        return 0;
                                                }
                                                cout<<"您的余额为:"<<foundltem.get_money()<<endl;
                }
                else
                {
                        if(q==3)
                        {
                               
                ifstream inputstream("D:\\123.txt,ios::app");
                                                string accountno;
                                                accountltem foundltem;
                                                accountbook myaccountbook;
                                                myaccountbook.loadaccountbook();
                                                cout<<"请输入您的账号"<<endl;
                                                cin>>accountno;
                                                foundltem=myaccountbook.findltem(accountno);
                                                if(foundltem.IsNull())
                                                {
                                                        cout<<"账号不存在"<<endl;
                                                        return 0;
                                                }
                                                foundltem.guashi();
                        }
                        else
                        {
                                if(q==4)
                                {
                                        ifstream inputstream("D:\\123.txt,ios::app");
                                                string accountno;
                                                string accpassword;
                                                double accountcount;
                                                accountltem foundltem;
                                                accountbook myaccountbook;
                                                myaccountbook.loadaccountbook();
                                                cout<<"请输入您的账号"<<endl;
                                                cin>>accountno;
                                                foundltem=myaccountbook.findltem(accountno);
                                                if(foundltem.IsNull())
                                                {
                                                        cout<<"账号不存在"<<endl;
                                                        return 0;
                                                }
                                                cout<<"请输入原密码:"<<endl;
                                                cin>>accpassword;
                                                while(accpassword!=foundltem.get_password())
                                                {
                                                        cout<<"密码错误,重新输入密码:"<<endl;
                                                        cin>>accpassword;
                                                }
                                                int accp;
                                                cout<<"请输入新密码:"<<endl;
                                                cin>>accp;
                                                foundltem.deductpassword(accp);
                                                myaccountbook.updateltem(foundltem);
                                                ofstream outputstream("account.in");
                                                myaccountbook.storeaccountbook(outputstream);
                                }
                                else
                                {
                                        if(q==5)
                                        {
                                                ifstream inputstream("D:\\123.txt,ios::app");
                                                string accountno;
                                                string accpassword;
                                                accountltem foundltem;
                                                accountbook myaccountbook;
                                                myaccountbook.loadaccountbook();
                                                cout<<"请输入您的账号"<<endl;
                                                cin>>accountno;
                                                foundltem=myaccountbook.findltem(accountno);
                                                if(foundltem.IsNull())
                                                {
                                                        cout<<"账号不存在,无法查询信息"<<endl;
                                                        return 0;
                                                }
                                                foundltem.show_accountltem();
                                        }
                                       
                                       
                                }
                        }
                }
        }       
         return 0;
         }




上一篇:windows程序设计怎么还不更新呢,
下一篇:指针问题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-22 22:51

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表