可以帮我完善一下修改的函数吗,我怎么写都不行,要哭了

代码如下:

#include <iostream> //包含了对输入输出流进行操作所需的基本信息
#include <string.h>  //包含了字符串处理函数
#include <vector>   //存放动态数组,增加和压缩数据 
#include <conio.h>  //定义了通过控制台进行数据输入和数据输出的函数
#include <fstream>  //用于用户管理的文件的I/O操作
#include <sstream>  //支持IO,既可从string读数据也可向string写数据 
#include <cstdlib>  //可以提供一些类型、函数与常量

using namespace std; //使用C++的命名空间std 

//函数的声明 
void function();
void writeUser(string ID,string name,string pwd);  //用户写入 
void writeGood(string ID,string name,int originalNum,int outNum,int inNum,int finalNum);  //商品写入 
void query();
void revise();

//总菜单
void menuSub(){
    cout << " ---------------------------欢迎使用仓库管理系统------------------------" << endl;
    cout << " |                         1、注册                                      |" << endl;
    cout << " |                         2、登录                                      |" << endl;
    cout << " |                         3、退出                                      |" << endl;
    cout << " -----------------------------------------------------------------------" << endl;
    cout << " 请输入你的选择:";
};

//登录后的菜单
void menuLogin()
{
    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 << " 请输入你的选择:";
}

//查询功能的菜单
void menuQuery()
{
    cout << " ---------------------------欢迎使用仓库管理系统------------------------" << endl;
    cout << " |                         1、查询账号信息                              |" << endl;
    cout << " |                         2、查询库存信息                              |" << endl;
    cout << " |                         3、退出                                      |" << endl;
    cout << " -----------------------------------------------------------------------" << endl;
    cout << " 请输入你的选择:";
}

//修改功能的菜单 
void menuRevise()
{
    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 << " 请输入你的选择:";    
}

//user类
class user{
private:
    string ID;
    string Name;
    string Password;
public:
    user(){};  //构造函数 
    void Register(); //注册函数 
    void Enter();    //登录函数 
    void queryUser();  //查询函数 
    void readUser(string number);   //读取函数 
};

//读取用户的信息
void user::readUser(string number){
    string IDStr,nameStr,pwdStr;
    istringstream is(number);  //包含在sstream中,输入输出控制类,从string中读取字符 
    is>>IDStr>>nameStr>>pwdStr;
    this->ID=IDStr;  //指向本类的指针,找到数据成员 
    this->Name=nameStr;
    this->Password=pwdStr;
}
//当前用户nowUser
user nowUser;

//注册功能
void user::Register()
{
    string pw1;
    string pw2;
    user person;
flag://使排序速度更高 
    cout << "请设置您的ID:";
    cin >> person.ID;
    ifstream rfile;//文件读操作 ,定义输入文件流对象rfile 
    rfile.open("user.txt",ios::in);//使文件流与user.txt建立关联 
    string temp;
    user u;
    while(getline(rfile,temp)){   //从标准输入读入整行数据,并存为字符数组 
        u.readUser(temp);
        if(u.ID == person.ID){
            cout << "该ID已存在,请重新设置!" << endl;
            goto flag;  //跳到 flag所在的那一行继续往下执行
        }
    }
    cout << "请设置您的用户名:";
    cin>>person.Name;
    cout << "请设置您的密码:";
flag0:
    cin >> pw1;
    cout << "请再次确认您的密码:";
    cin >> pw2;
        if(pw1 != pw2)
        {
            cout << "前后两次输入密码不一致,请重新设置密码!" << endl;
            goto flag0;
        }
    person.Password  =pw1;
    writeUser(person.ID,person.Name,person.Password);//写入ID、用户名、密码 
    cout << "\n" << endl;
    cout << "用户[" << person.Name << "]注册成功!" << endl;
    system("pause");
};

//登录功能
void user::Enter()
{
flag1:
    cout << "请输入你的ID:";
    string id;
    string pwd;
    cin >> id;
    ifstream rfileId;  //定义输入流对象rfileId 
    rfileId.open("user.txt",ios::in);//使文件流与user.txt建立关联 
    string tempId;
    user userId;
    while(getline(rfileId,tempId)){
        userId.readUser(tempId);
        if(userId.ID == id){
            goto flag2;
        }
    }
    cout << "该ID不存在,请重新输入!" << endl;
    goto flag1;
            
flag2:
    cout << "请输入你的密码:";
    cin >> pwd;
    ifstream rfilePwd;  //定义输入流对象rfilePwd
    rfilePwd.open("user.txt",ios::in);//使文件流与user.txt建立关联
    string tempPwd;
    user userPwd;
    while(getline(rfilePwd,tempPwd)){
        userPwd.readUser(tempPwd);
        if(userPwd.ID == id)
        {
            if(userPwd.Password == pwd)
            {
                break;
            }
            else
            {
                cout << "密码错误,请重新输入!" << endl;
                system("pause");
                goto flag2;
            }
        }
    }
    nowUser = userPwd;
    cout << "\n" << endl;
    cout << "用户[" << userPwd.Name << "]登录成功!" << endl;
    system("pause");
    function();
};

//显示当前用户的信息
void user::queryUser(){
     cout << "您的ID为:" << this->ID << endl;
     cout << "您的密码为:" << this->Password << endl;
     cout << "您的用户名为:" << this->Name << endl;
     system("pause");
}

//将注册的用户信息写入user.txt
void writeUser(string ID,string name,string pwd){
    fstream wfile;//定义输入输出文件流wfile 
    int IDLen = ID.size();//size()取字符串长度 
    int nameLen = name.size();
    int pwdLen = pwd.size();

    char *IDnumber = new char[IDLen];
    char *username = new char[nameLen];
    char *password = new char[pwdLen];

    strcpy(IDnumber,ID.c_str());//复制 
    strcpy(username,name.c_str());
    strcpy(password,pwd.c_str());

    wfile.open("user.txt",ios::out|ios::app);
    wfile.write(IDnumber,IDLen);
    wfile.write(" ",strlen(" "));
    wfile.write(username,nameLen);
    wfile.write(" ",strlen(" "));
    wfile.write(password,pwdLen);
    wfile.write("\n",strlen("\n"));
    wfile.close();
}


//good类
class good{
private:
    string ID;  //定义ID 
    string Name;
    int originalNum;
    int outNum;
    int inNum;
    int finalNum;
public:
    good(){};
    void queryGood();  //查询函数 
    void library();    
    void readGood(string number);   //读入函数 
    void outbound();       
    void deleteGood();     //删除函数 
};

//vector是一个封装了动态大小数组的顺序容器,用于存放所有商品的信息
vector<good> goods;

//将商品信息写入good.txt
void writeGood(string ID,string name,int originalNum,int outNum,int inNum,int finalNum){
    char originalNumCh[10];
    _itoa(originalNum, originalNumCh, 10);
    string originalNumStr(originalNumCh, originalNumCh+strlen(originalNumCh));

    char outNumCh[10];
    _itoa(outNum, outNumCh, 10);
    string outNumStr(outNumCh, outNumCh+strlen(outNumCh));

    char inNumCh[10];
    _itoa(inNum, inNumCh, 10);
    string inNumStr(inNumCh, inNumCh+strlen(inNumCh));

    char finalNumCh[10];
    _itoa(finalNum, finalNumCh, 10);
    string finalNumStr(finalNumCh, finalNumCh+strlen(finalNumCh));

    int IDLen = ID.size();
    int nameLen = name.size();
    int originalNumStrLen = originalNumStr.size();
    int outNumStrLen = outNumStr.size();
    int inNumLen = inNumStr.size();
    int finalNumLen = finalNumStr.size();

    char *IDnumber = new char[IDLen];
    char *username = new char[nameLen];
    char *originalNumArr = new char[originalNumStrLen];
    char *outNumArr = new char[outNumStrLen];
    char *inNumArr = new char[inNumLen];
    char *finalNumArr = new char[finalNumLen];

    strcpy(IDnumber,ID.c_str());
    strcpy(username,name.c_str());
    strcpy(originalNumArr,originalNumStr.c_str());
    strcpy(outNumArr,outNumStr.c_str());
    strcpy(inNumArr,inNumStr.c_str());
    strcpy(finalNumArr,finalNumStr.c_str());

    fstream wfile;
    wfile.open("good.txt",ios::out|ios::app);
    wfile.write(IDnumber,IDLen);
    wfile.write(" ",strlen(" "));
    wfile.write(username,nameLen);
    wfile.write(" ",strlen(" "));
    wfile.write(originalNumArr,originalNumStrLen);
    wfile.write(" ",strlen(" "));
    wfile.write(outNumArr,outNumStrLen);
    wfile.write(" ",strlen(" "));
    wfile.write(inNumArr,inNumLen);
    wfile.write(" ",strlen(" "));
    wfile.write(finalNumArr,finalNumLen);
    wfile.write("\n",strlen("\n"));
    wfile.close();
}

//读取商品的信息
void good::readGood(string number){
    string IDStr,nameStr,originalNumStr,outNumStr,inNumStr,finalNumStr;
    istringstream is(number);
    is >> IDStr >> nameStr >> originalNumStr >> outNumStr >> inNumStr >> finalNumStr;
    stringstream ssOriginalNum;
    ssOriginalNum << originalNumStr;
    int originalNum;
    ssOriginalNum >> originalNum;
    stringstream ssOutNum;
    ssOutNum << outNumStr;
    int outNum;
    ssOutNum >> outNum;
    stringstream ssInNum;
    ssInNum << inNumStr;
    int inNum;
    ssInNum >> inNum;
    stringstream ssFinalNum;
    ssFinalNum << finalNumStr;
    int finalNum;
    ssFinalNum >> finalNum;
    this->ID = IDStr;
    this->Name = nameStr;
    this->originalNum = originalNum;
    this->outNum = outNum;
    this->inNum = inNum;
    this->finalNum = finalNum;    
}

//查询并显示对应商品的信息
void good::queryGood()
{
    good findGood;
    string temp;
    string inNumber;
    ifstream rfile;
    rfile.open("good.txt",ios::in);
    int num = rfile.tellg();
    if(num == -1)
    {
        cout << "提示:找不到 good.txt 文件!" << endl;
        cout << "提示:请添加 good.txt 文件!" << endl;
        rfile.close();
    }
    else
    {
        rfile.close();
        while(1)
        {
            ifstream rfile;
            rfile.open("good.txt",ios::in);
            cout << "请输入查询商品的货品编号:";
            cin >> inNumber;
            while(getline(rfile,temp))
            {
                findGood.readGood(temp);string *p;
                if(findGood.ID==inNumber)   
                {
                    cout << "您的商品编号为:" << findGood.ID << endl;                
                    cout << "您的商品名称为:" << findGood.Name << endl;
                    cout << "您的原始库存为:" << findGood.originalNum << endl;
                    cout << "您的出货数目为:" << findGood.outNum << endl;
                    cout << "您的进货数目为:" << findGood.inNum << endl;
                    cout << "您的最终库存为:" << findGood.finalNum << endl;    
                    rfile.close();
                    goto flag3;
                }
            }
            cout << "输入有误,请重新输入!" << endl;
        }
flag3:
        system("pause");
    }
}

//查询功能
void query()
{
    char choice;
    good queryGood;
    while(1)
    {
        system("cls");
        menuQuery();
        cin >> choice;
        switch(choice)
        {
            case '1':
                nowUser.queryUser();
                break;
            case '2':
                queryGood.queryGood();
                break;
            case '3':
                return ;
                break;
            default:
            cout << "提示:请输入有误,重新输入!" << endl;
            system("pause");
        }
    }
}

//修改功能
void revise()
{
    char choose;
    string a,b;int c,d,e,f;
    while(1)
    {
        system("cls");
        menuRevise();
        cin>>choose;
        switch(choose)
        {
            case '1':
                cout<<"请输入您修改后的商品ID:"<<endl;
                cin>>a;
                writeGood(a,b,c,d,e,f);
                break;
            case '2':
                cout<<"请输入您修改后的商品名称:"<<endl;
                cin>>b;
                writeGood(a,b,c,d,e,f);
                break;
            case '3':
                cout<<"请输入您修改后的原始库存:"<<endl;
                cin>>c;
                writeGood(a,b,c,d,e,f);
                break;
            case '4':
                cout<<"请输入您修改后的出库数目:"<<endl;
                cin>>d;
                writeGood(a,b,c,d,e,f);
                break;
            case '5':
                cout<<"请输入您修改后的商品入库数目:"<<endl;
                cin>>e;
                writeGood(a,b,c,d,e,f);
                break;
            case '6':
                cout<<"请输入您修改后的最终库存数:"<<endl;
                cin>>f;
                writeGood(a,b,c,d,e,f);
                break;
            case '7':
                return ;
                break;
            default:
            cout << "提示:请输入有误,重新输入!" << endl;
            system("pause");
        }    
    }
 } 

//入库功能
void good::library(){
    ifstream rfile;
    good findGood;
    rfile.open("good.txt",ios::in);
    string temp;
    string inNumber;
    int num = rfile.tellg();
    if(num == -1)
    {
        cout << "提示:找不到 good.txt 文件!" << endl;
        cout << "提示:请添加 good.txt 文件!" << endl;
    }
    else
    {
        while(1)
        {
            cout << "请输入查询商品的货品编号:";
            cin >> inNumber;
            while(getline(rfile,temp))
            {        
                findGood.readGood(temp);
                if(findGood.ID == inNumber)
                {
                    goto flag4;
                }
            }
            cout << "输入有误,请重新输入!" << endl;
            system("pause");
        }
flag4:
        cout<<"请输入入库的数目:";
        int libraryNumber;
        cin >> libraryNumber;
        int inNumTemp = findGood.inNum;
        int finalNumTemp = findGood.finalNum;
        findGood.inNum += libraryNumber;
        findGood.finalNum += libraryNumber;

        if(findGood.inNum < 0 || findGood.finalNum < 0 || libraryNumber < 0){
            cout << "输入的数目错误,请重新输入!"<<endl;
            findGood.inNum = inNumTemp;
            findGood.finalNum = finalNumTemp;
            goto flag4;
        }

        //将文件的数据全部取出,修改对应的那行数据,再写入文件
        rfile.seekg(0);
        good tempGood;
        string tempStr;
        while(getline(rfile,tempStr))
        {        
            tempGood.readGood(tempStr);
            if(tempGood.ID == inNumber)
            {
                goods.push_back(findGood);    
            }
            else
            {
                goods.push_back(tempGood);
            }
        }
        ofstream f("good.txt",ios::trunc);
        f.close();
        for(int i=0;i<goods.size();i++)
        {
            writeGood(goods.at(i).ID,goods.at(i).Name,goods.at(i).originalNum,goods.at(i).outNum,goods.at(i).inNum,goods.at(i).finalNum);
        }
        goods.clear();
    }
    cout << "\n" << endl;
    cout << "入库成功!" << endl;
    cout << "提示:当前入库的数目为:"<<findGood.inNum << ",当前库存的数目为:"<<findGood.finalNum<<endl;
    system("pause");
}

//出库功能
void good::outbound(){
    ifstream rfile;
    good findGood;
    rfile.open("good.txt",ios::in);
    string temp;
    string inNumber;
    int num = rfile.tellg();
    if(num == -1)
    {
        cout << "提示:找不到 good.txt 文件!" << endl;
        cout << "提示:请添加 good.txt 文件!" << endl;
    }
    else
    {
        while(1)
        {
            cout << "请输入查询商品的货品编号:";
            cin >> inNumber;
            while(getline(rfile,temp))
            {        
                findGood.readGood(temp);
                if(findGood.ID==inNumber)
                {
                    goto flag5;
                }    
            }
            cout << "输入有误,请重新输入!"<< endl;
        }
flag5:
        cout<<"请输入出库的数目:";
        int outboundNumber;
        cin >> outboundNumber;
        int outNumTemp = findGood.outNum;
        int finalNumTemp = findGood.finalNum;
        findGood.outNum += outboundNumber;
        findGood.finalNum -= outboundNumber;
        if(findGood.outNum < 0 || findGood.finalNum < 0 || outboundNumber < 0){
            cout << "输入的数目错误,请重新输入!"<<endl;
            findGood.outNum = outNumTemp;
            findGood.finalNum = finalNumTemp;
            goto flag5;
        }

        //将文件的数据全部取出,修改对应的那行数据,清空文件数据,再重新写入文件
        rfile.seekg(0);
        good tempGood;
        string tempStr;
        while(getline(rfile,tempStr))
        {        
            tempGood.readGood(tempStr);
            if(tempGood.ID == inNumber)
            {
                goods.push_back(findGood);    
            }
            else
            {
                goods.push_back(tempGood);
            }
        }
        ofstream f("good.txt",ios::trunc);
        f.close();
        for(int i = 0;i<goods.size();i++)
        {
            writeGood(goods.at(i).ID,goods.at(i).Name,goods.at(i).originalNum,goods.at(i).outNum,goods.at(i).inNum,goods.at(i).finalNum);
        }
        goods.clear();
    }
    cout << "\n" << endl;
    cout << "出库成功!" << endl;
    cout << "提示:当前出库的数目为:" << findGood.outNum << ",当前库存的数目为:"<<findGood.finalNum << endl;
    system("pause");
}

//添加商品功能
void addGood(){
    string addID;
    string addName;
    int addOriginalNum;
    int addOutNum;
    int addInNum;
    int addFinalNum;
    cout << "请输入商品ID:";
    cin >> addID;
    cout << "请输入商品名称:";
    cin >> addName;
    cout << "请输入商品原始库存:";
    cin >> addOriginalNum;
    cout << "请输入商品出库数目:";
    cin >> addOutNum;
    cout << "请输入商品入库数目:";
    cin >> addInNum;
    cout << "请输入商品最终数目:";
    cin >> addFinalNum;
    writeGood(addID,addName,addOriginalNum,addOutNum,addInNum,addFinalNum);
    cout << "\n" << endl;
    cout << "商品[" << addName << "]添加成功!" << endl;
    system("pause");
}

//删除商品功能
void good::deleteGood(){
    ifstream rfile;
    good findGood;
    rfile.open("good.txt",ios::in);
    string temp;
    string inNumber;
    int num = rfile.tellg();
    if(num == -1)
    {
        cout << "提示:找不到 good.txt 文件!" << endl;
        cout << "提示:请添加 good.txt 文件!" << endl;
    }
    else
    {
        while(1)
        {
            cout << "请输入查询商品的货品编号:";
            cin >> inNumber;
            while(getline(rfile,temp))
            {        
                findGood.readGood(temp);
                if(findGood.ID==inNumber)
                {
                    goto flag6;
                }    
            }
            cout << "输入有误,请重新输入!"<< endl;
        }
flag6:
        //将文件的数据全部取出,删除对应的那行数据,清空文件数据,再重新写入文件
        rfile.seekg(0);
        good tempGood;
        string tempStr;
        while(getline(rfile,tempStr))
        {        
            tempGood.readGood(tempStr);
            if(tempGood.ID != inNumber)
            {
                goods.push_back(tempGood);
            }
        }
        ofstream f("good.txt",ios::trunc);
        f.close();
        for(int i = 0;i<goods.size();i++)
        {
            writeGood(goods.at(i).ID,goods.at(i).Name,goods.at(i).originalNum,goods.at(i).outNum,goods.at(i).inNum,goods.at(i).finalNum);
        }
        goods.clear();
    }
    cout << "\n" << endl;
    cout << "商品删除成功!" << endl;
    system("pause");
}

//总功能
void function(){
    char choice;
    good d;
    while(1)
    {
        system("cls");
        menuLogin();
        cin >> choice;
        switch(choice)
        {
            case '1':
                //查询功能
                query();
                break;
            case '2':
                //修改商品功能
                revise();
                break;
            case '3':
                //入库功能
                d.library();
                break;
            case '4':
                //出库功能
                d.outbound();
                break;
            case '5':
                //添加商品功能
                addGood();
                break;
            case '6':
                //删除商品功能
                d.deleteGood();
                break;
            case '7':
                //退出
                return ;
                break;
            default:
            cout << "提示:请输入有误,重新输入!" << endl;
            system("pause");
        }
    }
}

//主函数
int main()
{
    //设置控制台窗口和字体的颜色
    system("color 70");
    char choice;
    user u;string *p;
    while(1)
    {
        system("cls");
        menuSub();
        cin >> choice;
        switch(choice)
        {
            case '1':
                //注册功能
                u.Register();
                break;
            case '2':
                //登录功能
                u.Enter();
                break;
            case '3':
                //退出
                return 0;
                break;
            default:
            cout << "提示:请输入有误,重新输入!" << endl;
            system("pause");
        }
    }
}


是哪里有问题呢