Lemonlegends 2023-01-04 14:26 采纳率: 100%
浏览 124
已结题

请把这个代码从struct改成class!急!


#include<stdio.h>//标准的输入输出函数头文件
#include<string.h>//字符串类头文件
#include<math.h>//数学函数头文件
#include<stdlib.h>
char f; 
FILE *fp;//文件指针
#define M 80
struct student //结构体定义声明
{
 char num[13];//学号
 char name[15];//姓名
 int age;//年龄
 char x[5];//性别
 char year_month_day[15];//出生年月
 char address[15];//地址
 int iphone;//手机号
 char profession[20];//专业
 int xx,yy,wl,yw,sw;//数学、英语、物理、语文、生物
};
void input(struct student stu[M]);//输入函数
void output(struct student stu[M]);//输出函数
void lookfor(struct student stu[M]);//查询函数
void order(struct student stu[M]);//排序函数
void delete_s(struct student stu[M]);//删除函数
void modify(struct student stu[M]);//修改函数
void xuehao(struct student stu[M]);//学号查询函数     
void xingming(struct student stu[M]);//姓名查询函数
void fileread(struct student stu[M]);//读取文件信息函数
void filewrite(struct student stu[M]);//写入文件函数
int count;//定义一个全局变量
struct student t;
int main()
{
 int choice,sum;
 struct student stu[M];
 sum=0;
 do 
 { 
  printf("\t-------------------------------------------------\n"); 
  printf("\t+  学生信息管理系统        +\n"); 
  printf("\t-------------------------------------------------\n"); 
  printf("\t\t ***************\n"); 
  printf("\t\t 1、添加学生信息\n"); 
  printf("\t\t 2、浏览学生信息\n"); 
  printf("\t\t 3、查询学生信息\n"); 
  printf("\t\t 4、修改学生信息\n"); 
  printf("\t\t 5、删除学生信息\n"); 
  printf("\t\t 6、排序学生信息\n");  
  printf("\t\t 7、读取文件学生\n");//从文件读取 
  printf("\t\t 8、保存到文件\n");//保存到文件 
  printf("\t\t 9、退出系统\n");    
  printf("\t\t ***************\n");  
  printf("请输入你的选择\n"); 
  scanf("%d",&choice); 
  fflush(stdin);       //清除输入缓冲区,类似getchar()接受一个无关字符
  if (choice>9||choice<=0) 
  { 
   sum++; 
   if (sum>=5) 
   { 
    printf("输入错误次数过多,程序将重新开始\n"); 
    system("pause");        //程序暂停提示 
    system("cls");   //清屏语句  
   } 
  } 
  switch (choice)       //根据选择,调用不同的函数来完成不同的任务 
  { 
  case 1:input(stu);break;        
  case 2:output(stu);break;
  case 3:lookfor(stu);break; 
  case 4:modify(stu);break; 
  case 5:delete_s(stu);break; 
  case 6:order(stu);break; 
  case 7:fileread(stu);break; 
  case 8:filewrite(stu);;break; 
  case 9:printf("感谢使用学生信息管理系统!\n");system("pause");break; 
  default:printf("找不到选项,请重新选择\n");break; 
  } 
 }
 while(choice!=9); 
 printf("the program is over!\n");  
 return 0;
}
void input(struct student stu[M])//自定义输入函数
{
 system("cls");
 printf("请添加要输入学生的信息\n");
 printf("请输入由8位数字组成的学生的学号\n");
 scanf("%s",stu[count].num);
 printf("请输入学生的姓名\n");
 scanf("%s",stu[count].name);
 printf("请输入学生的年龄\n");
 scanf("%d",&stu[count].age);
 printf("请输入学生的性别\n");
 scanf("%s",stu[count].x);
 printf("请输入学生的出生年月\n");
 scanf("%s",stu[count].year_month_day);
    printf("请输入学生的地址\n");
 scanf("%s",stu[count].address); 
 printf("请输入学生的电话\n");
 scanf("%d",&stu[count].iphone); 
 printf("请输入学生的专业\n");
 scanf("%s",stu[count].profession);
 printf("请依次输入五项学生各科成绩\n");
 scanf("%d%d%d%d%d",&stu[count].xx,&stu[count].yy,&stu[count].wl,&stu[count].yw,&stu[count].sw);
    count++;
}
void output(struct student stu[M])//自定义输出函数
{
 int j;
 system("cls");
 if(count==0)
 {
  printf("当前已存入学生的信息为0个\n");
  return;
 }
 else
 {
  for(j=0;j<count;j++)
  {
         printf("学号:%s\t",stu[j].num);
         printf("姓名:%s\t",stu[j].name);
         printf("年龄:%d\t",stu[j].age);
            printf("性别:%s\t",stu[j].x);
         printf("出生年月:%s\t",stu[j].year_month_day);
           printf("地址:%s\t",stu[j].address);
         printf("电话:%d\t",stu[j].iphone);
         printf("专业:%s\t",stu[j].profession);
         printf("数学:%d\t英语:%d\t物理:%d\t语文:%d\t生物:%d\n",stu[j].xx,stu[j].yy,stu[j].wl,stu[j].yw,stu[j].sw);
  }
 }
}
void lookfor(struct student stu[M])//自定义查询函数
{
 int choice;
 system("cls");
 if(count==0)
 {
  printf("当前已存学生的信息为0个,无法查询!\n");
  return;
 }
 else
 {
  printf("请选择你所要查询的方式: 1、学号 2、姓名 3、取消\n");
  scanf("%d",&choice);
  switch(choice)//switch语句对用户要查询的方式进行选择 
  { 
  case 3:return;break; 
  case 2:xingming(stu);break;//用户自定义函数之间的套用 
  case 1:xuehao(stu);break; 
  default:printf("无效的选择!请重新输入!\n");break; 
  } 
 }
}
void xuehao(struct student stu[M])//自定义学号查询函数
{
 int j,flag=0;
 char xh[25];
 system("cls");
 printf("请输入你想要查询的学生的学号");
 scanf("%s",xh);
 fflush(stdin);
 for(j=0;j<count;j++)
 {
  if(strcmp(stu[j].num,xh)==0)
  {
   printf("学号:%s\t",stu[j].num);
         printf("姓名:%s\t",stu[j].name);
         printf("年龄:%d\t",stu[j].age);
            printf("性别:%s\t",stu[j].x);
         printf("出生年月:%s\t",stu[j].year_month_day);
           printf("地址:%s\t",stu[j].address);
         printf("电话:%d\t",stu[j].iphone);
         printf("专业:%s\t",stu[j].profession);
         printf("数学:%d\t英语:%d\t物理:%d\t语文:%d\t生物:%d\n",stu[j].xx,stu[j].yy,stu[j].wl,stu[j].yw,stu[j].sw);
  }
 }
 if(j==count)
 {
  printf("很抱歉,没有你所需要的学生信息\n");
 }
}
void xingming(struct student stu[M])//自定义姓名查询函数
{
 int j,flag=0;
 char xm[25];
 system("cls");
 printf("请输入你想要查询的学生的姓名");
 scanf("%s",xm);
 fflush(stdin);
 for(j=0;j<count;j++)
 {
  if(strcmp(stu[j].name,xm)==0)
  {
   printf("学号:%s\t",stu[j].num);
         printf("姓名:%s\t",stu[j].name);
         printf("年龄:%d\t",stu[j].age);
            printf("性别:%s\t",stu[j].x);
         printf("出生年月:%s\t",stu[j].year_month_day);
           printf("地址:%s\t",stu[j].address);
         printf("电话:%d\t",stu[j].iphone);
         printf("专业:%s\t",stu[j].profession);
         printf("数学:%d\t英语:%d\t物理:%d\t语文:%d\t生物:%d\n",stu[j].xx,stu[j].yy,stu[j].wl,stu[j].yw,stu[j].sw);
  }
 }
 if(j==count)
 {
  printf("很抱歉,没有你所需要的学生信息\n");
 }
}
void order(struct student stu[M])//自定义排序函数
{
 int j,k,choice,max; 
    system("cls"); 
 printf("请输入你想要进行排序的方式\n");//所有排序的方式均是降序
 printf("1、数学 2、英语 3、物理 4、语文 5、生物\n"); 
 scanf("%d",&choice); 
 switch(choice) 
 {
 case 1:for(j=0;j<count;j++)    
     { 
      max=j;  
      for(k=j+1;k<count;k++)    
       if (stu[k].xx>stu[max].xx)    
       {t=stu[k];stu[k]=stu[max];stu[max]=t;}     
           };break; 
 case 2:for(j=0;j<count;j++)     
     { 
      max=j;  
      for (k=j+1;k<count;k++)    
       if (stu[k].yy>stu[max].yy)    
       {t=stu[k];stu[k]=stu[max];stu[max]=t;}//整个为排序部分,采用了选择排序的方法     
           };break; 
 case 3:for(j=0;j<count;j++)     
     { 
      max=j;  
         for (k=j+1;k<count;k++)    
       if (stu[k].wl>stu[max].wl)    
       {t=stu[k];stu[k]=stu[max];stu[max]=t;}     
           };break; 
 case 4:for(j=0;j<count;j++)     
     { 
      max=j;  
      for (k=j+1;k<count;k++)    
       if (stu[k].yw>stu[max].yw)    
       {t=stu[k];stu[k]=stu[max];stu[max]=t;}     
           };break; 
 case 5:for(j=0;j<count;j++)     
     { 
      max=j;  
      for (k=j+1;k<count;k++)    
       if (stu[k].sw>stu[max].sw)    
       {t=stu[k];stu[k]=stu[max];stu[max]=t;}     
           };break;       
 default:printf("无效的选择!请重新输入!\n");break; 
 }
}
void delete_s(struct student stu[M])//自定义删除函数(按学号删除)
{
 int j,index=0,k=count;
 char xh[25];
 system("cls");
 if(count==0)
 {
  printf("当前已存学生信息为0个,无法删除!\n");
  return;
 }
 else
 {
  printf("请输入你想要删除的同学学号\n"); 
  scanf("%s",xh); fflush(stdin); 
  for(j=0;j<count;j++) 
  { 
   if(strcmp(stu[j].num,xh)==0) 
   { 
    for(j=index;j<count;j++) 
     stu[j]=stu[j+1]; 
    count--; 
    if(count<k) 
     printf("你已经删除成功\n"); 
   } 
   index++;
  } 
  if(j==count) 
   printf("抱歉!没有你所需要删除的学生信息!\n");
 }
}
void modify(struct student stu[M])//自定义修改函数
{
 int j,flag=0,course; 
 char xh[25]; 
 system("cls"); 
 if (count==0) 
 { 
  printf("当前已存学生信息为0个,无法修改!\n"); 
  return; 
 } 
 else 
 { 
  printf("请输入你想要修改的同学学号\n"); 
  scanf("%s",&xh); 
  fflush(stdin); 
  for(j=0;j<count;j++) 
   if (strcmp(stu[j].num,xh)==0)       
   { 
    printf("你确定要修改学生的信息吗?如果不确定,请关闭程序\n"); 
    printf("选择课程: 1、数学 2、英语 3、物理 4、语文 5、生物\n"); 
    scanf("%d",&course); 
    printf("请输入你想要修改后的学生成绩\n"); 
    switch(course) 
    { 
    case 1:scanf("%d",&stu[j].xx);break; 
    case 2:scanf("%d",&stu[j].yy);break;//switch控制语句 
    case 3:scanf("%d",&stu[j].wl);break; 
    case 4:scanf("%d",&stu[j].yw);break; 
    case 5:scanf("%d",&stu[j].sw);break; 
    default:printf("无效的选择!请重新输入!\n");break;
    }
    printf("选择信息: 1、学号 2、姓名 3、年龄 4、性别 5、出生年月 6、地址 7、电话 8、专业\n"); 
    scanf("%d",&course);  
    switch(course) 
    {
    case 1:scanf("%s",stu[j].num);break;
             case 2:scanf("%s",stu[j].name);break;
             case 3:scanf("%d",&stu[j].age);break;
             case 4:scanf("%s",stu[j].x);break;
             case 5:scanf("%s",&stu[j].year_month_day);break;
             case 6:scanf("%s",stu[j].address);break;
             case 7:scanf("%d",&stu[j].iphone);break;
             case 8:scanf("%s",stu[j].profession);break;
    default:printf("无效的选择!请重新输入!\n");break;
    }
   }
 }
 return; 
}
void filewrite(struct student stu[M])//自定义写入文件函数
{ 
 int j=0;  
 printf("请选择是否要存入已输入的学生信息:'y'还是'n'???\n"); 
 scanf("%c",&f); 
 fflush(stdin); 
 while(f!='y'&&f!='n')
 { 
  if (f!='y'&&f!='n') 
   printf("输入错误,请重新输入\n"); 
  printf("以下操作将会覆盖已存储的数据,确定请输入'y'或'n'?\n"); 
  scanf("%c",&f); 
  fflush(stdin); 
 } 
 if (f=='y') 
 { 
  if((fp=fopen("E:\\stu.dat","w"))==NULL) 
  {  
   printf("cannot oswn this file\n");  
   exit(0); 
  } 
  for(j=0;j<count;j++)   
  {
   fwrite(&stu[j],sizeof(struct student),1,fp); 
  } 
  fclose(fp); 
  if(count==0)  
   printf("没有文件,无法保存\n"); 
  else 
   printf("数据存储完毕\n"); 
  system("pause"); 
 } 
 else  
  return;
}
void fileread(struct student stu[M])//自定义读取文件信息函数
{ 
 int j=0;  
 system("cls"); 
 printf("请选择是否要读取已输入的学生信息:'y'还是'n'?\n"); 
 scanf("%c",&f); 
 fflush(stdin);  
 if (f=='y') 
 { 
  if((fp=fopen("E:\\stu.dat","r"))==NULL) 
  {  
   printf("cannot oswn this file\n");  
   exit(0); 
  } 
  fread(&stu[j],sizeof(struct student),1,fp);  
  count=0; 
  count++; 
  j++; 
  while(fread(&stu[j],sizeof(struct student),1,fp)) 
  {  
   j++;  
   count++; 
  } 
  fclose(fp); 
  printf("数据读取完毕!\n"); 
  system("pause"); 
 } 
 else 
  return;
}

  • 写回答

6条回答 默认 最新

  • |__WhoAmI__| 2023-01-04 15:28
    关注

    把原来的 struct student 改成 class Student 即可。

    可以把所有的 struct student 改成 class Student:

    struct student stu[M]; 改成 Student stu[M];
    struct student t; 改成 Student t;
    void input(struct student stu[M]) 改成 void input(Student stu[M])
    void output(struct student stu[M]) 改成 void output(Student stu[M])
    void lookfor(struct student stu[M]) 改成 void lookfor(Student stu[M])
    void order(struct student stu[M]) 改成 void order(Student stu[M])
    void delete_s(struct student stu[M]) 改成 void delete_s(Student stu[M])
    void modify(struct student stu[M]) 改成 void modify(Student stu[M])
    void xuehao(struct student stu[M]) 改成 void xuehao(Student stu[M])
    void xingming(struct student stu[M]) 改成 void xingming(Student stu[M])
    void fileread(struct student stu[M]) 改成 void fileread(Student stu[M])
    void filewrite(struct student stu[M]) 改成 void filewrite(Student stu[M])
    

    仅供参考,望采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月4日
  • 已采纳回答 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存