#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;
}
请把这个代码从struct改成class!急!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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])
仅供参考,望采纳,谢谢。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 求指导ADS低噪放设计
- ¥15 CARSIM前车变道设置
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存