老师布置了新内容,要求在原有user类的基础上,添加一个currentid,要求初始值是999,每增加一个客户,id值就加一,并把当前id值赋给最新一个用户

进行了一番尝试

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

首先在原来的代码里修改,代码如下:

#include<iostream>
#include<string>
 using namespace std;
 class user
 {
     public:
         void setinfo(string name0,string passwd0="111111",string email0=" ");
          void changepasswd();        
        void printinfo(); 
     private:        
        string name;        
        string passwd;        
        string email; 
        static int currentid; //新声明的currentid ,是一个静态数据成员 
 };
 int user::currentid=999;//静态数据成员在类外定义 
     void user::setinfo(string name0,string passwd0,string email0)
     {
         name=name0;
         passwd=passwd0;
         email=email0;
        currentid++;    //每多一个成员,Id加一        
    }
    void user::changepasswd()
    {
        cout<<"请输入旧密码:" <<endl;
        string passwd;
        int i=0;
        for(i=0;i<3;i++)
        {
            cin>>passwd;
            if(passwd=="111111")
            break;
            else
            cout<<"密码错误,请重新输入"<<endl;    
        }
        if(i==3)
        cout<<"请稍后再试"<<endl;
        else
        {
        cout<<"密码正确,输入新密码"<<endl;
        cin>>passwd;
        cout<<"修改密码成功"<<endl; 
        }
    }
    void user::printinfo()
    {
        cout<<"name:"<<name<<endl;
        cout<<"passwd:"<<"******" <<endl;
        cout<<"email:"<<email<<endl;
        cout<<"当前用户ID为:"<<currentid<<endl;//把当前的id输出 
     } 
     int main() 
     {   
          cout << "testing 1......" << endl; 
          
         user user1; 
        user1.setinfo("Leonard");  
          user1.printinfo();   
           user1.changepasswd();   
        cout << endl << "testing 2......" << endl << endl;
         
         user user2; 
        user2.setinfo("Jonny","92197","xyz@hotmail.com");  
        user2.printinfo();   
        return 0; 
     }

一开始并没有写成多文件结构的形式,编译通过,没有显示错误,效果如下:

user类2.0版 随笔 第1张

然后开始尝试改成多文件结构的形式,问题就成堆成堆地冒出来了

尝试改的多文件结构如下:

//user.h

#ifndef USER_H
#define USER_H 

#include<cstring>
#include<iostream>
using namespace std; 

class user
 {
     public:
         void setinfo(string name0,string passwd0="111111",string email0=" ");
          void changepasswd();        
        void printinfo(); 
     private:        
        string name;        
        string passwd;        
        string email; 
        static int currentid; 
 };
 #endif 

//user.cpp

#incude"user.h"
#include<iostream>
#include<cstring>
using namespace std;
int user::currentid=999;
     void user::setinfo(string name0,string passwd0,string email0)
     {
         name=name0;
         passwd=passwd0;
         email=email0;
        currentid++;        
    }
    void user::changepasswd()
    {
        cout<<"请输入旧密码:" <<endl;
        string passwd;
        int i=0;
        for(i=0;i<3;i++)
        {
            cin>>passwd;
            if(passwd=="111111")
            break;
            else
            cout<<"密码错误,请重新输入"<<endl;    
        }
        if(i==3)
        cout<<"请稍后再试"<<endl;
        else
        {
        cout<<"密码正确,输入新密码"<<endl;
        cin>>passwd;
        cout<<"修改密码成功"<<endl; 
        }
    }
    void user::printinfo()
    {
        cout<<"name:"<<name<<endl;
        cout<<"passwd:"<<"******" <<endl;
        cout<<"email:"<<email<<endl;
        cout<<"当前用户ID为:"<<currentid<<endl;
     } 

//main.cpp

#include<iostream>
#include"user.h" 
#include<string>
 using namespace std;
 int main() 
     {   
          cout << "testing 1......" << endl; 
          
         user user1; 
        user1.setinfo("Leonard");  
          user1.printinfo();   
           user1.changepasswd();   
        cout << endl << "testing 2......" << endl << endl;
         
         user user2; 
        user2.setinfo("Jonny","92197","xyz@hotmail.com");  
        user2.printinfo();   
        return 0; 
     }

 

 

 

1.做实验二时在机房里老师演示过如何使用多文件结构,当时听明白了,但是讲完在课上并没有用多文件结构,等到过了几天再尝试的时候发现忘得差不多了,试着写一下,各种报错,一开始连 #ifndef 和 #define 的顺序都搞错了,在写user.cpp时忘记#include<cstring>导致一堆提示string未定义,当时摸不着头脑,被吓到了。

2.在百度后稍微搞懂一些最简单的多文件结构的原理后,开始继续改user类,说是改,其实就是把上面那一整段分成三小个,然后又出问题了,第一次遇见这样的错误

错误如下:user类2.0版 随笔 第2张

之前遇到这个情况,都是在已经打开编译的小黑框后再一次编译时会出现,这一此根本没编译成功还出现这种情况,查了百度,说有可能是杀毒软件的问题,不明白问题出在哪里,今天又把老师发的实验三的ball的项目试了一遍,发现编译没有任何问题,希望有小伙伴知道可以告诉我一下,谢谢

然后又在codeblocks里试了一下,发现也出现了一种全新的错误,百度后查到我的编译少一个叫gdb.exe的调试器,然后到官网http://www.mingw.org/上去下载,结果英语不太好,没找到在哪里。

作业反思:

1.准确来说这次作业没有完全完成,改user多文件改了好久最后还是有问题。

2.老师在实验课上讲的新东西最好讲完就自己尝试一遍,不然课后要多花十倍的时间才能补回来,活生生的反面教材。

3.暴露了英语不好的事实,不抢救一下以后查文献也麻烦了。

4.在面对难题的时候还是没办法坚持下去直到解决掉问题,在有时候写oj的时候也是这样的,需要改正这个坏毛病。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄