嗑着瓜子 2014-03-07 05:43 采纳率: 0%
浏览 975

C加加有错,不知错在哪。求解?? 234不能用?

#include
#include
#include
using namespace std;
void print(); //声明实现第一功能的函数
//void shanchu();

//void add();
//void again();
//void iofile();
//void show_menu();

class putong //定义一个普通账户的类
{
public:
putong(int n,string nam,double m)
{
num=n;
name=nam;
money=m;

  }
  //int get_num();
  //string get_name();
  //double get_money();
  //void set_num();
  //void set_name();
  //void set_money();


  int num;               //账号
  string name;           //姓名
  double money;          //余额

};

class vip:public putong //定义一个VIP,继承putong类
{
public:
vip(int n,string nam,double m,int s):putong(n,nam,m)
{
score=s;
}
//int get_score();

int score; //积分
};

/*int putong::get_num()
{

return num;
}

string putong::get_name()
{

return name;
}

double putong::get_money()
{

return money;
}
int vip::get_score()

{

return score;
}

/*void set_num()
{
cin>>num;
}

void set_name()
{
cin>>name;
}
void set_money()
{
cin>>money;

}*/
void show_menu() //开始菜单
{

 cout<<'\0'<<'\0'<<'\0'<<"银行储户信息管理系统"<<endl;
 cout<<"----------------------------------"<<endl;
 cout<<"1.打印客户信息"<<endl;
 cout<<"2.更新客户信息"<<endl;
 cout<<"3.添加客户信息"<<endl;
 cout<<"4.删除客户信息"<<endl;
 cout<<"5.退出程序"<<endl;
 cout<<"----------------------------------"<<endl;

}

int main()
{

putong a[5]= {putong(1,"刘敏",-3500), //初始化
putong(2,"w",1200.7),
putong(3,"吴丽", -220),
putong(4,"王世明",10000),
putong(5,"张明华",300.32)};

  int key;  
  show_menu();   //显示开始菜单
  //vip b();
  void iofile();  
  while (1)   
  {     

      cout<<'\n'<<"请选择功能<1-5>:";      
      cin>>key;        
      switch (key)     
      {     
        case 1:          print();         continue;      
        case 2:         

            {int n=5;
             putong b(0,"0",0);       //建立一个临时变量
             int A;
            string  B;
             double C;
             fstream iofile;
             iofile.open("Client.dat",ios::out|ios::binary);
              iofile.seekg(0,ios::beg);



                for(int f=0;f<5;f++)
                {

                    iofile.read((char*)&a[f],sizeof(a[f]));

                }

             cout<<"请输入账号"<<'\0'<<'\0'<<"姓名"<<'\0'<<'\0'<<"余额"<<endl;
             cin>>A>>B>>C;
             putong e(A,B,C);
             iofile.seekg((A-1)*sizeof(b),ios::beg);
             iofile.write((char*)&e,sizeof(e));
             iofile.seekg(0,ios::beg);
             iofile.read((char*)&e,sizeof(e));


                for( f=0;f<5;f++)
                {
                    //cout<<e.money <<e.name <<e.num <<endl;
                    iofile.read((char*)&e,sizeof(e));

                }


                 cout<<"一条记录被更新!"<<endl;



             iofile.close();
             continue;
            }


        case 3:             
        {
            int add_num;
            string add_name;
            double add_value;

            //putong d(0,"0",0);       //建立一个临时变量
            fstream iofile;
            iofile.open("Client.dat",ios::out|ios::binary);
            iofile.seekg(0,ios::beg);
             for( int f=0;f<5;f++)
                {
                    iofile.read((char*)&a[f],sizeof(a[f]));

                }




            cout<<"请输入账号"<<'\0'<<'\0'<<"姓名"<<'\0'<<'\0'<<"余额"<<endl;

            cin>>add_num>>add_name>>add_value;
            putong g(add_num,add_name,add_value);
             iofile.seekg((add_num-1)*sizeof(a[0]),ios::beg);
             iofile.write((char*)&g,sizeof(g));
             iofile.seekg(0,ios::beg);
             iofile.read((char*)&g,sizeof(g));


                for(  f=0;f<5;f++)
                {
                    iofile.read((char*)&g,sizeof(g));

                }




            cout<<"已追加一条新记录!"<<endl;
            iofile.close();      
            continue;  
        }

    case 4:         
        {   
            putong c(0," ",0);   //建立一个临时变量
            int n=5;
            int b;
            fstream iofile;
            iofile.open("Client.dat",ios::out|ios::binary);
            iofile.seekg(0,ios::beg);
            for(int i=0;i<n;i++)
            {
                iofile.read((char*)&a[i],sizeof(a[i]));
            }
            cout<<"请输入待删除的账号"<<endl;
            cin>>b;
            iofile.seekg((b-1)*sizeof(c),ios::beg);  

                     iofile.write((char*)&c,sizeof(c));
                     iofile.seekg(0,ios::beg);    
            for(i=0;i<n;i++)
            {


                     iofile.read((char*)&c,sizeof(c));

            }
             cout<<"已删除!"<<endl;
             iofile.close();
             continue;  
        }

    case 5:          exit(1) ;        continue;   
    default:         cout<<"此输入无效!"<<endl;   continue;
      }
  }    
  return 0;

}

void iofile() //创建一个Client.dat文件,并读入数据
{
putong a(0,"0",0); //建立一个临时变量
fstream iofile("Client.dat",ios::out|ios::binary);
if(!iofile)
{
cerr<<"open error!"<<endl;
abort();
}

  for(int i=0;i<5;i++)      //将数据读入文件里          
{
    iofile.write((char*)&a,sizeof(a));
}
  iofile.close();

}

void print()
{

fstream iofile;
iofile.open("Client.dat",ios::out|ios::binary); //打开Client.dat文件
putong a[5]= {putong(1,"刘敏",-3500), //初始化
putong(2,"w",1200.7),
putong(3,"吴丽", -220),
putong(4,"王世明",10000),
putong(5,"张明华",300.32)};
for(int i=0;i<5;i++) //读数据
{

iofile.read((char*)&a[i],sizeof(a[i]));
cout<<"----------------------------------"<<endl;
if (a[i].money<100000) //如果读出的数据的余额小于1000000,则运行
{

        cout<<"普通账户信息:"<<endl;
        cout<<"账号"<<'\0'<<'\0'<<"姓名"<<'\0'<<'\0'<<"余额"<<endl;

        cout<<a[i].num<<'\0'<<'\0'<<a[i].name<<'\0'<<'\0'<<a[i].money<<endl;
    }
        else   //否则则运行下面这个

    {   
        iofile.seekg(i*sizeof(a[i]),ios::beg);

        cout<<"VIP账户信息:"<<endl;
        cout<<"账号"<<'\0'<<'\0'<<"姓名"<<'\0'<<'\0'<<"余额"<<"VIP账户积分"<<endl;

        cout<<a[i].num<<'\0'<<'\0'<<a[i].name<<'\0'<<'\0'<<a[i].money<<'\0'<<'\0'<<a[i].money/10<<endl;
    };

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        fstream printfile("accouts.doc",ios::out);  //创建一个accouts.doc文件
        if(!printfile)
    {
            cout<<"open error!"<<endl;
    };


  for(int i=0;i<5;i++)                //读数据       
        {
            iofile.seekg(0,ios::beg); 
            iofile.read((char*)&a,sizeof(a)); 
            printfile<<"----------------------------------"<<endl;
            if (a[i].money<100000)  //如果读出的数据的余额小于1000000
            {

        printfile<<"普通账户信息:"<<endl;
        printfile<<"账号"<<'\0'<<'\0'<<"姓名"<<'\0'<<'\0'<<"余额"<<endl;

        printfile<<a[i].num<<'\0'<<'\0'<<a[i].name<<'\0'<<'\0'<<a[i].money<<endl;

            }
          else  //如果读出的数据的余额大于或等于100000

    {  
        //iofile.seekg(i*sizeof(a[i]),ios::beg);
        printfile<<"VIP账户信息:"<<endl;
        printfile<<"账号"<<'\0'<<'\0'<<"姓名"<<'\0'<<'\0'<<"余额"<<"VIP账户积分"<<endl;

        printfile<<a[i].num<<'\0'<<'\0'<<a[i].name<<'\0'<<'\0'<<a[i].money<<'\0'<<'\0'<<a[i].money/10<<endl;
    }
        }

        printfile.close();
        iofile.close(); 
        cout<<"客户信息已输出至可打印文件中!"<<endl;

}

}

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-08 00:25
    关注

    该回答引用ChatGPT

    这段代码存在一些错误,我将逐一说明:

    • 第一行缺少 # 符号,正确应该是:
      #include <iostream>
      
    • 第 69 行的 void iofile() 应该是函数的声明,不应该在这里,应该在 main 函数之前。
    • 第 104 行的 switch case 结构缺少 break 语句,在每个 case 语句块的最后加上 break。
    • 第 105 行的 print() 函数没有定义,需要在程序中实现该函数。
    • 第 129 行的 case 2 中,fstream 的打开方式应该是 in | out,而不是 out | binary。
    • 第 134 行的变量 f 没有定义,应该在外层定义。
    • 第 149 行的 case 3 中,fstream 的打开方式应该是 in | out,而不是 out | binary。
    • 第 157 行的变量 f 没有定义,应该在外层定义。
    • 第 185 行的 iofile.seekg(...) 应该是 iofile.close()。
    • 第 192 行的 for 循环中,应该读取 a[f] 而不是 g。
    • 第 197 行的 cout 语句中,应该输出已添加,而不是已追加。

    最后,该程序中也存在一些问题,例如使用了不规范的命名方式,没有使用头文件,使用了不安全的输入方式,没有进行错误检查等等。

    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示