红豆泥! 2021-12-14 22:56 采纳率: 94.4%
浏览 27
已结题

在Teacher类文件的保存和读取中为什么文件中无法正确显示输入信息,该怎样解决呢

#include"iostream"
#include <fstream>
#include<string.h>
#include"stdlib.h"
#define MAX 100
#define PASSWORD 111//密码
using namespace std;
class person
{
public:
    int num;
    char name[200];
    char sex[4];
    int age;
};
class  Calculate
{
private:
    int m,j1,j2;
public:
     void calc();
};
//Teacher class
class Teacher:virtual public person
{
public:
    char dept[20];
    char special[20];
    char title[20];
    void Input()
    {
        cout<<"Input num:";cin>>num;
        cout<<"Input name:";cin>>name;
        cout<<"Input sex:";cin>>sex;
        cout<<"Input age:";cin>>age;
        cout<<"Input dept:";cin>>dept;
        cout<<"Input special:";cin>>special;
        cout<<"Input title:";cin>>title;
    }
    void Output()
    {
        cout<<"编号: "<<num<<"  "<<"姓名: "<<name<<"  "<<"性别: "<<sex<<"  "<<"年龄: "<<age<<
            "  "<<"所在系: "<<dept<<"  "<<"专业: "<<special<<"  "<<"职称: "<<title<<endl;
    }
};

Teacher Tea[MAX];
static int Teatop;



class TeaManager:public Calculate
{
public:
    int Add();
    int Search();
    void Show();
    void Edit();
    int Delete();
    void Save();
    void Read();
    void count();
};
int TeaManager::Add()
{
    Teacher t;
    int i,nu;
    if(Teatop==MAX) 
    {cout<<"人数已满"<<endl;
    return 0;
    }
    cout<<"请输入编号:";cin>>nu;
    for(i=0;i<Teatop;i++)
    {
        if(nu==Tea[i].num)
        {cout<<"已有编号,请重新输入"<<endl;
        return 0;
        }
    }
    t.Input();
    cout<<"您确定要添加这条信息吗?(1.添加 2.不添加)"<<endl;
    int a;
    cin>>a;
    if(a==1){
        Tea[Teatop]=t;
        Teatop++;
        cout<<"添加成功!"<<endl;
    }
    else cout<<"添加失败!"<<endl;
    return 1;
}
int TeaManager::Search()
 {
    int j,n,s;
    char a[100];
      cout<<"请选择:1.按编号查找;"<<endl;
      cout<<"        2.按姓名查找:"<<endl;
      cin>>s;
      switch(s)
      {
          case 1:
              {
                cout<<"输入查询编号:";
                  cin>>n;
                  for(j=0;j<Teatop;j++)
                  {
                    if(n==Tea[j].num) break;
                  else
                      continue;
                }
                if(j==Teatop)
                {
                cout<<"查无此人;"<<endl;
                return 0;
                }
                if(j!=Teatop)
                 {Tea[j].Output();
                return 1;}
              }break;
          case 2:
              {
                  cout<<"输入查询姓名:";
                  cin>>a;
                  for(j=0;j<Teatop;j++)
                  {
                    if(strcmp(Tea[j].name,a)==0) break;
                }
                if(j==Teatop)
                { cout<<"查无此人;"<<endl;
                   return 0;   
                }
                if(j!=Teatop)
             {  Tea[j].Output();
                return 1;}
                  
              }break;
    }
      
  }
void TeaManager::Show()
{

    int i;
    if(Teatop==0)
    {cout<<"记录为空!"<<endl; return;}
    for(i=0;i<Teatop;i++)
            Tea[i].Output();
}
void TeaManager::Edit()
{
    Teacher t1;
    int j,n;
    cout<<"请输入要编辑的人的编号:";cin>>n;
    for(j=0;j<Teatop;j++)
    {
        if(n==Tea[j].num) break;
    }
    if(j==Teatop)
    {cout<<"没有此人!"<<endl;return;};
    cout<<"输入修改后的信息,编号不能改:"<<endl;
    t1.Input();
    Tea[j]=t1;
    cout<<"编辑成功!"<<endl;
}
int TeaManager::Delete()
{
    int j,n;
    cout<<"请输入要删除的人的编号:";cin>>n;
    for(j=0;j<Teatop;j++)
    {
        if(n==Tea[j].num) break;
    }
    if(j==Teatop)
    {cout<<"没有此人!"<<endl;return 0;};
      for(j;j<Teatop;j++){
        cout<<"您确定要删除此条信息吗?(1.删除 2.不删除)"<<endl;
        int a;
        cin>>a;
        if(a==1){
            Tea[j]=Tea[j+1];
            Teatop--;
            cout<<"删除成功!"<<endl;
        }
        else cout<<"删除失败!"<<endl;
    }
    return 1;
}
void TeaManager::Save()
{
    int i;
    ofstream outfile,outfile1;   
    outfile1.open("Teatop.txt",ios::out);
    outfile1<<Teatop;
    outfile.open("Tea_data.txt",ios::binary);   
       if(!outfile)
       {cerr<<"open error!"<<endl; return; }
       for(i=0;i<Teatop;i++)
           outfile.write((char *)&Tea[i],sizeof(Tea[i])); 
       outfile.close();   
       cout<<"保存成功!"<<endl;
} 
void TeaManager::Read()
{
    int i;
    ifstream infile,infile1; 
    infile1.open("Teatop.txt",ios::in);
    infile1>>Teatop;
    infile.open("Tea_data.txt",ios::binary);   
       if(!infile)
       {cerr<<"open error!"<<endl; return; }
       for(i=0;i<Teatop;i++)
           infile.read((char *)&Tea[i],sizeof(Tea[i])); 
       infile.close();  
       cout<<"读取成功!"<<endl;
} 
void Tea_mune(TeaManager TM)
{
    int b;
    char c;
    do{
        cout<<"教师管理"<<endl;
        cout<<"=========================================================================================="<<endl;
        cout<<"1.添加    ";
        cout<<"2.查询    ";
        cout<<"3.显示    ";
        cout<<"4.编辑    ";
        cout<<"5.删除    ";
        cout<<"6.统计    ";
        cout<<"7.保存    ";
        cout<<"8.读取    ";
        cout<<"0.退出 |"<<endl;
        cout<<"=========================================================================================="<<endl;
        cout<<"请选择:";cin>>b;
        switch(b)
        {
        case 1:TM.Add();break;
        case 2:TM.Search();break;
        case 3:TM.Show();break;
        case 4:TM.Edit();break;
        case 5:TM.Delete();break;
        case 6:TM.count();break;
        case 7:TM.Save();break;
        case 8:TM.Read();break;
        default:cout<<"\n error"<<endl;break;
        case 0:break;
        }
        cout<<"按回车键继续"<<endl;
        system("pause");
        c=getchar();
        system("cls");
    }while(b!=0);
}
int main()
{
    TeaManager Tmer1;
    TestManager Tetmer;
    PolicerManager Polimer;
    TeaPolicerManager TeaPolimer;
    int a=1,m=0;
    int j;
    char c;
    cout<<"    *************************************";
    cout<<endl<<"    $         高校人员管理系统         $"<<endl;
    cout<<"    *************************************";
    cout<<endl;


    while(a)
    {
         cout<<endl;
        cout<<"              =================================="<<endl;
        cout<<"              -----欢迎来到高校人员管理系统-----"<<endl;
        cout<<"                                                "<<endl;
        cout<<"|                              制作人:          |"<<endl;
        cout<<"              =================================="<<endl;

        cout<<"按回车键继续"<<endl;
        flushall();
        c=getchar();         
        system("cls");
        cout<<endl;
        cout<<"              ****欢迎使用高校人员信息管理系统****"<<endl;
        cout<<"               ================================="<<endl;
        cout<<"               | 1.教师管理                    |"<<endl;

        cout<<"               | 0.退出                        |"<<endl;
        cout<<"               ================================="<<endl;
        cout<<"请选择:";cin>>a;    

        switch(a)
        {
        case 1:Tea_mune(Tmer1);break;

        case 0:break;
        default:cout<<"\n error"<<endl;
        cout<<"按回车键继续"<<endl;
        system("pause");
        c=getchar();         
        break;
        }
    }

    cout<<endl<<"谢谢使用"<<endl;
    system("pause");
    c=getchar();
    return 0;
}

输入

img

之后打开文件,文件内容如下,没有记录我输入的内容,该怎么解决呢

img

  • 写回答

1条回答 默认 最新

  • 五一编程 2021-12-14 23:57
    关注

    写文件的编码格式有问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 修改了问题 12月14日
  • 修改了问题 12月14日
  • 展开全部

悬赏问题

  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致