#include<stdio.h>
#include<stdlib.h>
#define N 100
//函数声明
void init();
char welcome();
void InputInfo();
void xiugai();
void view();
void DeLeteInfo();
void paiming(struct student_info student[]);
void ViewAll();
void PaimingView();
void exit();
struct student_info input();
void Sortinfo(struct student_info student[]);
void ViewInfo(struct student_info *sp);
void SaveStruct(struct student_info *sp,int SIZE,int n,char filename[20]);
void LoadStruct(struct student_info *sp,int SIZE,int n,char filename[20]);
void SaveInt(int*p,int size,int n,char filename[20]);
void LoadInt(int*p,int size,int n,char filename[20]);
int NumExist(struct student_info student[],int num);
//定义学生信息结构体
struct student_info
{
int num;
char name[6];
int writetest, classtest ,teatest;
double ave ,zongping;
};
//定义全局结构体数据
struct student_info student[N];
int counter,PM;
//主函数
void main()
{
char select;
init();
while(1)
{
select=welcome();
switch(select)
{
case'1':system("cls"); InputInfo(); break;//选项1:录入学生信息
case'2':system("cls"); view();break;//选项2:添加学生信息
case'3':system("cls"); paiming(student);PM=1;
getchar(); system("cls"); break;//选项3:学生排名
case'4':system("cls"); PaimingView();break;//选项4:查询学生信息
case'5':system("cls"); xiugai();break;//选项5:修改学生信息
case'6':system("cls"); DeLeteInfo();break;//选项6:删除学生信息
case'7':system("cls"); ViewAll();break;//选项7:浏览学生信息
case'0':system("cls"); exit();break;//选项0:退出
}
}
}
//函数初始化
void init()
{
FILE *fp;
fp=fopen("counter.dat","rb");
if(fp!=NULL)
{
fclose(fp);
LoadInt(&counter,sizeof(counter),1,"counter.dat");
}
else
{
fp=fopen("counter.dat","wb");
fclose(fp);
counter=0;
}
if(counter!=0)
LoadStruct(student,sizeof(struct student_info),counter,"student_info.dat");
}
//欢迎函数
char welcome()
{
char select;
while(1)
{
system("cls");
printf("\n\n\n\n\t\t☆☆☆☆☆学生数据处理系统☆☆☆☆☆\n\n");
printf("\n");
printf("\t\t\t●1.录入成绩数据\n");
printf("\t\t\t●2.添加学生数据\n");
printf("\t\t\t●3.综合成绩排名\n");
printf("\t\t\t●4.查询学生成绩\n");
printf("\t\t\t●5.修改学生数据\n");
printf("\t\t\t●6.删除学生数据\n");
printf("\t\t\t●7.浏览学生数据\n");
printf("\t\t\t●0.退出\n\n");
select=getchar();
if(select=='1'||select=='2'||select=='3'||select=='4'||select=='5'
||select=='6'||select=='7'||select=='9')
return select;
system("cls");
continue;
}
}
//录入学生信息
void InputInfo()
{
int i,n;
printf("需要录入多少位学生信息:");
scanf("%d",&n);
system("cls");
for(i=1;i<=n;i++)
{
student[counter]=input();
counter++;
}
PM=0;
Sortinfo(student);
SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
SaveInt(&counter,sizeof(counter),1,"counter.dat");
}
//修改学生信息
void xiugai()
{
int i,num;
char YN,select;
printf("请输入需要修改的学生信息的学号:");
scanf("%d",&num);
getchar();
if((i=NumExist(student,num))==-1)
{
printf("不存在该学号,按返回键返回。。。");
getchar();
system("cls");
return;
}
ViewInfo(&student[i]);
printf("是否要修改?(Y/N):");
scanf("%c",&YN);
getchar();
if(YN!='Y'&& YN !='y')
{
printf("修改取消...");
getchar();
system("cls");
return;
}
system("cls");
printf("1.学号\n");
printf("2.姓名\n");
printf("3.考试平均成绩\n");
printf("4.同学互评分\n");
printf("5.任课老师评分\n");
scanf("%c",&select);
switch(select)
{
case'1':printf("修改学号"); scanf("%d",&student[i].num);break;
case'2':printf("修改姓名"); scanf("%d",&student[i].name);break;
case'3':printf("考试平均成绩"); scanf("%d",&student[i].writetest);break;
case'4':printf("修改同学互评分"); scanf("%d",&student[i].classtest);break;
case'5':printf("修改任课老师评分"); scanf("%d",&student[i].teatest);break;
}
Sortinfo(student);
SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
PM=0;
printf("修改完成。。。");
getchar();
system("cls");
}
//删除学生信息
void DeLeteInfo()
{
int i,j,num;
char YN;
printf("请输入需要删除的学生信息的学号:");
scanf("%d",&num);
getchar();
if((i=NumExist(student,num))==-1)
{
printf("不存在该学号,按返回键返回。。。");
getchar();
system("cls");
return;
}
ViewInfo(&student[i]);
printf("\n确认删除(Y/N):");
scanf("%c",&YN);
getchar();
if(YN!='Y'&& YN !='y')
{
printf("修改取消...");
}
else
{
for(j=i;j<counter-1;j++)
student[j]=student[j+1];
counter--;
PM=0;
SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
SaveInt(&counter,sizeof(counter),counter,"counter.dat");
printf("删除完成。。。");
}
getchar();
system("cls");
}
// 综合测评分排名
void paiming(struct student_info student[])
{
struct student_info *p[N],*temp;
int i,j;
for(i=0;i<counter;i++)
p[i]=&student[i];
for(i=0;i<counter-1;i++)
for(j=i+1;j<counter;j++)
{
if(p[i]->zongping < p[j] ->zongping)
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
for(i=0;i<counter;i++)
p[i]->paiming=i+1;
printf("综合测评分排名完成。。。\n");
}
//浏览所有学生信息
void viewAll()
{
int i;
for(i=0;i<counter;i++)
{
ViewInfo(&student[i]);
printf("\n");
}
getchar();
printf("按回车键返回。。。");
getchar();
system("cls");
}
//查询排名
void paimingView()
{
int i,num;
printf("请输入需要查询的学生的学号:");
scanf("%d",&num);
getchar();
i=NumExist(student,num);
if(i==-1)
{
printf("不存在该学号。。。");
getchar();
return;
}
if(PM==0)
{
printf("请先进行成绩排名。。。");
getchar();
return;
}
printf("%s的综合测评分排名%d\n",student[i].name,student[i].paiming);
printf("按回车键返回。。。");
getchar();
return;
}
//退出
void exit()
{
printf("谢谢使用!\n");
exit(0);
}
// 输入信息函数
struct student_info input()
{
struct student_info stu,*sp;
char YN;
sp=&stu;
while(1)
{
while(1)
{
printf("录入学号:");
scanf("%d",&sp->num);
getchar();
if(NumExist(student,sp->num)!=-1)
{
printf("该学号已存在,请重新输入。。。");
getchar();
system("cls");
continue;
}
break;
}
printf("录入姓名:");
gets(sp->name);
printf("录入考试平均成绩:");
scanf("%d",&sp->writetest);
printf("录入同学互评分:");
scanf("%d",&sp->classtest);
printf("录入任课老师评分:");
scanf("%d",&sp->teatest);
getchar();
sp->zongping=(sp->writetest*0.6+sp->classtest*0.2+sp->teatest*0.2);
printf("录入完毕,确认信息是否正确(Y/N)");
YN=getchar();
getchar();
if(YN=='Y'||YN=='y')
break;
else
{
printf("按回车键重新录入信息。。");
getchar();
system("cls");
continue;
}
}
system("cls");
return stu;
}
//排序函数
void Sortinfo(struct student_info student[])
{
int i,j;
struct student_info temp;
for(i=0;i<counter-1;i++)
for(j=i+1;j<=counter-1;j++)
{
if(student[i].num<student[j].num)
{
temp=student[i];
student[i]=student[j];
student[i]=temp;
}
}
}
//显示学生信息
void ViewInfo(struct student_info *sp)
{
printf("学号\t姓名\n");
printf("%d\t%s\n",sp->num,sp->name);
printf("考试平均成绩\t同学互评分\t任课老师评分\n");
printf("%d\t%d\t%d\n",sp->writetest,sp->classtest,sp->teatest\n);
printf("综合分\n");
printf("%.2f\n",sp->zongping);
if(PM==1)
{
printf("综合测评分排名\n");
printf("%d\n",sp->zongping);
}
}
//信息存盘(结构体)
void SaveStruct(struct student_info *sp,int SIZE,int n,char filename[20])
{
FILE *fp;
fp=fopen(filename,"wb");
fwrite(sp,SIZE,n,fp);
fclose(fp);
}
//读取信息(结构体)
void LoadStruct(struct student_info *sp,int SIZE,int n,char filename[20])
{
FILE *fp;
fp=fopen(filename,"rb");
fread(sp,SIZE,n,fp);
fclose(fp);
}
//信息存盘(整型)
void SaveInt(int*p,int size,int n,char filename[20])
{
FILE *fp;
fp=fopen(filename,"wb");
fwrite(p,size,n,fp);
fclose(fp);
}
//读取信息(整型)
void LoadInt(int*p,int size,int n,char filename[20])
{
FILE *fp;
fp=fopen(filename,"rb");
fread(p,size,n,fp);
fclose(fp);
}
//检索学号
int NumExist(struct student_info student[],int num)
{
int i;
for(i=0;i<counter;i++)
{
if(student[i].num==num)
return i;
}
return -1;
}
//浏览学生信息
void view()
{
int i,num;
printf("请输入需要浏览的学生信息的学号:");
scanf("%d",&num);
getchar();
if((i=NumExist(student,num))==-1)
{
printf("不存在该学号,按回车键返回。。。");
getchar();
system("cls");
return;
}
ViewInfo(&student[i]);
printf("\n按回车键返回。。。");
getchar();
system("cls");
return;
}
求改正错误 ' ' : is not a member of 'student_info'
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- yycgis 2021-07-02 22:33关注
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #define N 100 //函数声明 void init(); char welcome(); void InputInfo(); void xiugai(); void view(); void DeLeteInfo(); void paiming(struct student_info student[]); void ViewAll(); void PaimingView(); void exit(); struct student_info input(); void Sortinfo(struct student_info student[]); void ViewInfo(struct student_info *sp); void SaveStruct(struct student_info *sp, int SIZE, int n, char filename[20]); void LoadStruct(struct student_info *sp, int SIZE, int n, char filename[20]); void SaveInt(int*p, int size, int n, char filename[20]); void LoadInt(int*p, int size, int n, char filename[20]); int NumExist(struct student_info student[], int num); //定义学生信息结构体 struct student_info { int num; char name[6]; int writetest, classtest, teatest, paiming; double ave, zongping; }; //定义全局结构体数据 struct student_info student[N]; int counter, PM; //主函数 void main() { char select; init(); while (1) { select = welcome(); switch (select) { case'1':system("cls"); InputInfo(); break;//选项1:录入学生信息 case'2':system("cls"); view(); break;//选项2:添加学生信息 case'3':system("cls"); paiming(student); PM = 1; getchar(); system("cls"); break;//选项3:学生排名 case'4':system("cls"); PaimingView(); break;//选项4:查询学生信息 case'5':system("cls"); xiugai(); break;//选项5:修改学生信息 case'6':system("cls"); DeLeteInfo(); break;//选项6:删除学生信息 case'7':system("cls"); ViewAll(); break;//选项7:浏览学生信息 case'0':system("cls"); exit(); break;//选项0:退出 } } } void ViewAll() { } void PaimingView() { } //函数初始化 void init() { FILE *fp; fp = fopen("counter.dat", "rb"); if (fp != NULL) { fclose(fp); LoadInt(&counter, sizeof(counter), 1, "counter.dat"); } else { fp = fopen("counter.dat", "wb"); fclose(fp); counter = 0; } if (counter != 0) LoadStruct(student, sizeof(struct student_info), counter, "student_info.dat"); } //欢迎函数 char welcome() { char select; while (1) { system("cls"); printf("\n\n\n\n\t\t☆☆☆☆☆学生数据处理系统☆☆☆☆☆\n\n"); printf("\n"); printf("\t\t\t●1.录入成绩数据\n"); printf("\t\t\t●2.添加学生数据\n"); printf("\t\t\t●3.综合成绩排名\n"); printf("\t\t\t●4.查询学生成绩\n"); printf("\t\t\t●5.修改学生数据\n"); printf("\t\t\t●6.删除学生数据\n"); printf("\t\t\t●7.浏览学生数据\n"); printf("\t\t\t●0.退出\n\n"); select = getchar(); if (select == '1' || select == '2' || select == '3' || select == '4' || select == '5' || select == '6' || select == '7' || select == '9') return select; system("cls"); continue; } } //录入学生信息 void InputInfo() { int i, n; printf("需要录入多少位学生信息:"); scanf("%d", &n); system("cls"); for (i = 1; i <= n; i++) { student[counter] = input(); counter++; } PM = 0; Sortinfo(student); SaveStruct(student, sizeof(struct student_info), counter, "student_info.dat"); SaveInt(&counter, sizeof(counter), 1, "counter.dat"); } //修改学生信息 void xiugai() { int i, num; char YN, select; printf("请输入需要修改的学生信息的学号:"); scanf("%d", &num); getchar(); if ((i = NumExist(student, num)) == -1) { printf("不存在该学号,按返回键返回。。。"); getchar(); system("cls"); return; } ViewInfo(&student[i]); printf("是否要修改?(Y/N):"); scanf("%c", &YN); getchar(); if (YN != 'Y'&& YN != 'y') { printf("修改取消..."); getchar(); system("cls"); return; } system("cls"); printf("1.学号\n"); printf("2.姓名\n"); printf("3.考试平均成绩\n"); printf("4.同学互评分\n"); printf("5.任课老师评分\n"); scanf("%c", &select); switch (select) { case'1':printf("修改学号"); scanf("%d", &student[i].num); break; case'2':printf("修改姓名"); scanf("%s", &student[i].name); break; case'3':printf("考试平均成绩"); scanf("%d", &student[i].writetest); break; case'4':printf("修改同学互评分"); scanf("%d", &student[i].classtest); break; case'5':printf("修改任课老师评分"); scanf("%d", &student[i].teatest); break; } Sortinfo(student); SaveStruct(student, sizeof(struct student_info), counter, "student_info.dat"); PM = 0; printf("修改完成。。。"); getchar(); system("cls"); } //删除学生信息 void DeLeteInfo() { int i, j, num; char YN; printf("请输入需要删除的学生信息的学号:"); scanf("%d", &num); getchar(); if ((i = NumExist(student, num)) == -1) { printf("不存在该学号,按返回键返回。。。"); getchar(); system("cls"); return; } ViewInfo(&student[i]); printf("\n确认删除(Y/N):"); scanf("%c", &YN); getchar(); if (YN != 'Y'&& YN != 'y') { printf("修改取消..."); } else { for (j = i; j<counter - 1; j++) student[j] = student[j + 1]; counter--; PM = 0; SaveStruct(student, sizeof(struct student_info), counter, "student_info.dat"); SaveInt(&counter, sizeof(counter), counter, "counter.dat"); printf("删除完成。。。"); } getchar(); system("cls"); } // 综合测评分排名 void paiming(struct student_info student[]) { struct student_info *p[N], *temp; int i, j; for (i = 0; i<counter; i++) p[i] = &student[i]; for (i = 0; i<counter - 1; i++) for (j = i + 1; j<counter; j++) { if (p[i]->zongping < p[j]->zongping) { temp = p[i]; p[i] = p[j]; p[j] = temp; } } for (i = 0; i<counter; i++) p[i]->paiming = i + 1; printf("综合测评分排名完成。。。\n"); } //浏览所有学生信息 void viewAll() { int i; for (i = 0; i<counter; i++) { ViewInfo(&student[i]); printf("\n"); } getchar(); printf("按回车键返回。。。"); getchar(); system("cls"); } //查询排名 void paimingView() { int i, num; printf("请输入需要查询的学生的学号:"); scanf("%d", &num); getchar(); i = NumExist(student, num); if (i == -1) { printf("不存在该学号。。。"); getchar(); return; } if (PM == 0) { printf("请先进行成绩排名。。。"); getchar(); return; } printf("%s的综合测评分排名%d\n", student[i].name, student[i].paiming); printf("按回车键返回。。。"); getchar(); return; } //退出 void exit() { printf("谢谢使用!\n"); exit(0); } // 输入信息函数 struct student_info input() { struct student_info stu, *sp; char YN; sp = &stu; while (1) { while (1) { printf("录入学号:"); scanf("%d", &sp->num); getchar(); if (NumExist(student, sp->num) != -1) { printf("该学号已存在,请重新输入。。。"); getchar(); system("cls"); continue; } break; } printf("录入姓名:"); // gets(sp->name); printf("录入考试平均成绩:"); scanf("%d", &sp->writetest); printf("录入同学互评分:"); scanf("%d", &sp->classtest); printf("录入任课老师评分:"); scanf("%d", &sp->teatest); getchar(); sp->zongping = (sp->writetest*0.6 + sp->classtest*0.2 + sp->teatest*0.2); printf("录入完毕,确认信息是否正确(Y/N)"); YN = getchar(); getchar(); if (YN == 'Y' || YN == 'y') break; else { printf("按回车键重新录入信息。。"); getchar(); system("cls"); continue; } } system("cls"); return stu; } //排序函数 void Sortinfo(struct student_info student[]) { int i, j; struct student_info temp; for (i = 0; i<counter - 1; i++) for (j = i + 1; j <= counter - 1; j++) { if (student[i].num<student[j].num) { temp = student[i]; student[i] = student[j]; student[i] = temp; } } } //显示学生信息 void ViewInfo(struct student_info *sp) { printf("学号\t姓名\n"); printf("%d\t%s\n", sp->num, sp->name); printf("考试平均成绩\t同学互评分\t任课老师评分\n"); printf("%d\t%d\t%d\n", sp->writetest, sp->classtest, sp->teatest); printf("综合分\n"); printf("%.2f\n", sp->zongping); if (PM == 1) { printf("综合测评分排名\n"); printf("%f\n", sp->zongping); } } //信息存盘(结构体) void SaveStruct(struct student_info *sp, int SIZE, int n, char filename[20]) { FILE *fp; fp = fopen(filename, "wb"); fwrite(sp, SIZE, n, fp); fclose(fp); } //读取信息(结构体) void LoadStruct(struct student_info *sp, int SIZE, int n, char filename[20]) { FILE *fp; fp = fopen(filename, "rb"); fread(sp, SIZE, n, fp); fclose(fp); } //信息存盘(整型) void SaveInt(int*p, int size, int n, char filename[20]) { FILE *fp; fp = fopen(filename, "wb"); fwrite(p, size, n, fp); fclose(fp); } //读取信息(整型) void LoadInt(int*p, int size, int n, char filename[20]) { FILE *fp; fp = fopen(filename, "rb"); fread(p, size, n, fp); fclose(fp); } //检索学号 int NumExist(struct student_info student[], int num) { int i; for (i = 0; i<counter; i++) { if (student[i].num == num) return i; } return -1; } //浏览学生信息 void view() { int i, num; printf("请输入需要浏览的学生信息的学号:"); scanf("%d", &num); getchar(); if ((i = NumExist(student, num)) == -1) { printf("不存在该学号,按回车键返回。。。"); getchar(); system("cls"); return; } ViewInfo(&student[i]); printf("\n按回车键返回。。。"); getchar(); system("cls"); return; }
编码不易,望采纳哦!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 winform的chart曲线生成时有凸起
- ¥15 msix packaging tool打包问题
- ¥15 finalshell节点的搭建代码和那个端口代码教程
- ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
- ¥15 Centos / PETSc / PETGEM
- ¥15 centos7.9 IPv6端口telnet和端口监控问题
- ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
- ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 海浪数据 南海地区海况数据,波浪数据
- ¥20 软件测试决策法疑问求解答