求助这是什么问题啊,应该怎么改啊!!!!!!

#include<iostream>
#include<iomanip>
#include<fstream>
#include<stdio.h>	
#include<stdlib.h>
using namespace std; 
void menu();                                 //目录函数
void input();                                //输入函数
void save() ;                                //保存函数
void modify();                               //修改函数
void search();                               //查询函数
void lessonput1 (int y);                     //用于输出课程名
void lessonput2 (int i,int j);               //用于输出旷工类型
void select(int m);                          //选择函数
void quit() ;                                //退出函数
void paixu1();                               //按员工排序
void paixu2();                               //按备注说明排序
struct staff  
{  char name[10];
   int num;
   int month[5];
   int day[5];
   int classnum[5];
   char classname[20];
   int type[5];                             //旷工分类类型
   int f;                                   //用于计算旷工次数
}stu[20];
struct lesson                               //在排序函数2中使用
{   char name;
    int g;                                  //用于计算旷工人次
}les[6];
/***************************主函数***********************************/
void main()
{   int m;
	menu();
	bool flag=0;
	do
	{
     cin>>m;
	 if(m>=1&&m<=6)
	 flag=1;
	 else
	 cout<<"指令错误!请重新输入:";
	 }while(flag==0);
	while(m!=6)
		{
			select(m);							//功能选择函数
			menu();
			flag=0;
			do
			{
				cin>>m;
				if((m>=1&&m<=6))
				flag=1;

			else
				cout<<"指令错误!请重新输入:";
			}while(flag==0);
		}
	quit();
	system("pause");
}		
/*******************************目录函数**********************************/
void  menu()
{     cout<<"\t\t**************************************************\n";
      cout<<"\t\t**         欢  迎  使  用  本  系  统           **\n";
	  cout<<"\t\t**************************************************\n";
	  cout<<"\t\t**      1. 添加员工旷工信息                     **\n";
	  cout<<"\t\t**      2. 查询员工旷工信息                     **\n";
	  cout<<"\t\t**      3. 修改员工旷工信息                     **\n";
	  cout<<"\t\t**      4. 按员工旷工次数排序                 **\n";
	  cout<<"\t\t**      5. 按每周的旷工人次排序                 **\n";
	  cout<<"\t\t**      6. 退出本系统                           **\n";
	  cout<<"\t\t**************************************************\n";
	  cout<<"                                     请输入1~6选择功能\n";
}
/**********************************输入函数*********************************/
void input()
{  
   for(int i=0;i<20;i++)
   {   cout<<"请输入员工姓名和工号"<<endl;
	   cin>>stu[i].name>>stu[i].num;
	   cout<<"请依次输入旷工日期(月-日)·旷工次数(仅数字)·备注说明(输入字母代表 a(请假) b(未请假事后补假条) c(未请假事后也未补假条))" 
		   <<"旷工分类类型(输入数字代表0(迟到) 1(早退) 2(请假) 3(旷课))"<<endl;
       for(int j=0;j<5;j++)
	   {   cin>>stu[i].month[j]>>stu[i].day[j]>>stu[i].classnum[j]>>stu[i].classname[j]>>stu[i].type[j];
	       char c;
		   cout<<"是否继续输入该员工其他旷工信息(y或n)"<<endl;
		   cin>>c;
		   if(c=='y') cout<<"请继续按以上顺序输入"<<endl;
		   if(c=='n') break;
	   }	  
	   char k;
	   cout<<"是否继续输入其他员工旷工信息(y或n)"<<endl;
	   cin>>k;
	   if(k=='n') break;
   }
    save();
}
/******************************保存函数******************************/
void save()                                
{   int i;

	fstream fout("D:\\考勤.txt",ios::binary);
	for(i=0;i<20;i++)
	{
		fout.write((char*)&stu[i],sizeof (staff));		
	
	}
		cout<<"员工信息已保存"<<endl;
}

/*******************************修改函数*****************************/
void modify()                               
{
	 int i,j,c=0,k,b,d=0,m,n;
	 ofstream fout("D:\\考勤.txt",ios::binary);
	 if(!fout)
	 { 
		 cout<<"文件不能打开"<<endl;
		 fout.close();
		 return ;
	 }
	cout<<"请输入要修改员工工号"<<endl;
   	cin>>k;
	cout<<"请输入要修改员工的旷工日期(月-日)"<<endl;
	cin>>m>>n;
	cout<<"请输入要修改员工的旷工次数:"<<endl;
    cin>>b;
	bool y=0;
	do
	{
	for(i=0;i<20;i++)
	{
		fout.write((char*)&stu[i],sizeof(struct  staff));//打开并修改文件
		string s0 ="\n\r";//写入换行符【文本文件:换行符\n   二进制文件:换行符\r\n】

             fout.write(s0.c_str(),sizeof(char) * (s0.size()));
				for(j=0;j<5;j++)
				{
				 if (k==stu[i].num&&b==stu[i].classnum[j]&&m==stu[i].month[j]&&n==stu[i].day[j])
				 {
		           c=i; 
				   d=j;
				 } 				
				}
	}
	if(c!=0&&d!=0) y=1;
	else
	    {   cout<<"输入信息不存在,请重新输入工号·日期·次数"<<endl;
	        cin>>k>>m>>n>>b;
	    }
	}while(y==0);
	cout<<"请输入新修改的内容:\n";
    //下面输入该员工新信息
     cout<<"请依次输入要修改的员工姓名和工号旷工日期(月-日)·旷工次数(仅数字)·"
		 <<"备注说明(输入字母代表 a(请假) b(未请假事后补假条) c(未请假事后也未补假条))"
		 <<"旷工分类类型(输入数字代表0(迟到) 1(早退) 2(请假) 3(旷课))"<<endl;
     cin>>stu[c].name>>stu[c].num>>stu[c].month[d]>>stu[c].day[d]>>stu[c].classnum[d]>>stu[c].classname[d]>>stu[c].type[d];		
    save();
}

/********************************查询函数****************************/
void search()                                
{
    	int i,j;
		ofstream fout("D:\\考勤.txt",ios::binary);
        int N;
		cout<<"请输入您要查找的员工工号:\n";
		cin>>N;
		if(fout)
		{   for(i=0;i<20;i++)
			{
				fout.write((char*)&stu[i],sizeof(struct staff));  
				string s0 ="\n\r";//写入换行符【文本文件:换行符\n   二进制文件:换行符\r\n】

                fout.write(s0.c_str(),sizeof(char) * (s0.size()));
				for(j=0;j<5;j++)
				{
					if(N==stu[i].num)
			         { 
					   if(stu[i].month[j]==0) break;
					   cout<<"员工的信息为:姓名     工号     月-日   次数     备注说明     旷工分类类型";
					   cout<<"                        "<<stu[i].name<<setw(7)<<stu[i].num<<setw(8)
						   <<stu[i].month[j]<<stu[i].day[j]<<setw(8)<<stu[i].classnum[j]<<setw(12);
					   lessonput1( stu[i].classname[j]);
					   cout<<" "<<setw(10);
					   lessonput2 (i,j);
					   cout<<endl;					   
			         }
				}
		     } 
		}
		else
	    {   cout<<"文件无法打开\n";
			exit(0);
			fout.close();
		}
}
/***********************排序函数1***********************************/
void paixu1()
{  int i,j;
   staff   temp;
   for(int m=0;m<20;m++) stu[m].f=0;
  
   ofstream fout("D:\\考勤.txt",ios::binary);

   if(fout)
   { 
	    for(i=0;i<20;i++)
         {   
			 fout.write((char*)&stu[i],sizeof(struct staff));
			 string s0 ="\n\r";//写入换行符【文本文件:换行符\n   二进制文件:换行符\r\n】

             fout.write(s0.c_str(),sizeof(char) * (s0.size()));
	         for(j=0;j<5;j++)
	         {   if(stu[i].type[j]==3) stu[i].f++;
	         }
         }
   } 
   else
   {   cout<<"文件不能打开"<<endl;
       fout.close();
	   return ;
   }
  
   for(int m=0;m<20;m++)
   {   for(int n=0;n<20-m;n++)
       {   if(stu[n].f<stu[n+1].f)
             {   temp=stu[n];
                 stu[n]=stu[n+1];
				 stu[n+1]=temp;
             }
       }
   }
   cout<<"排序结果:员工姓名             旷工次数"<<endl;
   for(int n=0;n<20;n++)
   {  
	   if(stu[n].num==0) break;
	   cout<<"             "<<stu[n].name<<setw(15)<<stu[n].f<<endl;     
   }
}
/************************排序函数2***************************************/
void paixu2()
{    les[0].name='a';les[1].name='b';les[2].name='c';les[3].name='d';
     les[4].name='e';les[5].name='f';
	 for(int m=0;m<7;m++) les[m].g=0;
	 int i,j;
	 lesson temp;
	 ofstream fout("D:\\考勤.txt",ios::binary);
     if(fout)
     {  
       for(i=0;i<20;i++)
          {   fout.write((char*)&stu[i],sizeof(struct staff));
	           string s0 ="\n\r";//写入换行符【文本文件:换行符\n   二进制文件:换行符\r\n】

           fout.write(s0.c_str(),sizeof(char) * (s0.size()));
	          for(j=0;j<5;j++)
		         {   for(int n=0;n<6;n++)
		             {   if(stu[i].classname[j]==les[n].name) les[n].g++;
		             }
		          }
		      for(int m=0;m<20;m++)
                 {   for(int n=0;n<20-m;n++)
                     {   if(les[n].g<les[n+1].g)
                          {   temp=les[n+1];
                              les[n+1]=les[n];
				              les[n]=temp;
                           }
                     }
		         }
	       }
     } 
	 else 
	 {  cout<<"文件不能打开"<<endl;
	    fout.close();
	    return ;
	 }
	  cout<<"排序结果:备注说明           旷工人次"<<endl;
	 for(int n=0;n<6;n++)
	 {   cout<<"            ";
	     lessonput1(les[n].name);
		 cout<<setw(15)<<les[n].g;
		 cout<<endl;
	 }
}




/*******************************选择函数**********************************/
void select(int m )
{   switch(m)
    {  
     case 1: input();        break;
     case 2: search();       break;
     case 3: modify();       break;
     case 4: paixu1();       break;
     case 5: paixu2();       break;
	 case 6: quit();         break;
    }
}
/******************************退出函数******************************/
void quit()                                 
{
	cout<<"谢谢使用本系统!\n";
	exit(0);	
}
/*********************备注说明输出函数***************************************/
void lessonput1 (int y)
{   
    switch(y)
	{    
	case 'a':cout<<"请假";  break;
	case 'b':cout<<"未请假事后补假条";  break;
	case 'c':cout<<"未请假事后也未补假条";  break;

	
	}
}
/*********************缺工类型输出函数***************************************/
void lessonput2 (int i,int j)
{   switch(stu[i].type[j])
    { 
     case 0:cout<<"迟到";   break;
     case 1:cout<<"早退";   break;
     case 2:cout<<"请假";   break;
     case 3:cout<<"旷工";   break;
    }
}
int类型的数字全部不能用txt显示,这是为什么啊!!!!!!
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618141653419.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc2MzYwMA==,size_16,color_FFFFFF,t_70)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值