C语言课题设计
发布网友
发布时间:2022-05-06 10:54
我来回答
共1个回答
热心网友
时间:2022-06-29 19:55
#include <stdio.h>
struct student /*结构体数组*/
{int num;
char name[8];
int class;
int math;
int eng ;
int c;
int he;
}st[10],temp;
int a=1;
main() /*主函数*/
{ int flag=1;
char c;
clrscr();
printf("\n\n\n");
printf(" *****************************************************");
printf("\n");
printf(" * *");
printf("\n");
printf(" * *");
printf("\n");
printf(" * 成绩统计系统 *");
printf("\n");
printf(" * *");
printf("\n");
printf(" * *\n");
printf(" *****************************************************\n");
while(flag==1)
{menu(); /*调用菜单函数*/
if(a==0)
{printf("确定要退出?(y/n):");
scanf("%s",&c);
}
if (c=='y')
break;
}
}
menu() /*菜单*/
{int num;
printf(" 1.输入3名学生成绩\n");
printf(" 2.成绩浏览\n");
printf(" 3.成绩排名\n");
printf(" 4.成绩查询\n");
printf(" 5.退出\n");
printf(" 请选择(1、2、3、4或5):");
scanf("%d",&num);
switch (num) /*用switch循环调用函数*/
{case 1:input();break;
case 2:output();break;
case 3:paixu();break;
case 4:lookfor();break;
case 5:a=0;break;
default:;printf("\n \n 错误\n\n\n");
}
/*退出菜单回到主函数*/
}
input()
{int i,j;
input_1(); /*调用输入函数*/
for(i=0;i<3;i++) /*检查学号是否重复*/
for(j=i+1;j<3;j++)
while(st[i].num==st[j].num)
{ printf("\n\n学号输入重复,请重新输入\n\n") ;
input_1();
}
}
input_1() /*输入*/
{int i;
for(i=0;i<3;i++)
{
printf("\n\输入第%d名学生\n",i+1);
printf("学号(整型):");
scanf("%d",&st[i].num);
printf("\n姓名(字母无空格):");
scanf("%s",&st[i].name);
printf("\n班级(整型):");
scanf("%d",&st[i].class);
printf("\n数学(整型):");
scanf("%d",&st[i].math);
printf("\n英语(整型):");
scanf("%d",&st[i].eng);
printf("\nC语言(整型):");
scanf("%d",&st[i].c);
}
for(i=0;i<3;i++) /*求总成绩*/
st[i].he=st[i].math+st[i].eng+st[i].c;
save(); /*调用文件函数*/
}
save() /*文件*/
{FILE*fp;
int i;
if ((fp=fopen("stu_list","wb"))==NULL) /*检查文件能否打开*/
{printf("cannot open file\n");
return;
}
for(i=0;i<3;i++)
if(fwrite(&st[i],sizeof(struct student),1,fp)!=1) /*检查文件能否写入*/
printf("file write error\n");
fclose(fp); /*关闭文件*/
}
output() /*输出*/
{int i;
FILE*fp;
fp=fopen("stu_list","rb");
printf("学号 姓名 班级 数学 英语 c语言 总分\n");
for(i=0;i<3;i++)
{fread(&st[i],sizeof(struct student),1,fp);
printf("%4d %-7s %4d %4d %4d %4d %4d\n",st[i].num,st[i].name,st[i].class,
st[i].math,st[i].eng,st[i].c,st[i].he);
}
}
paixu() /*排序*/
{int i,j;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
if(st[i].he<st[j].he)
{temp=st[i];
st[i]=st[j];
st[j]=temp;
}
printf("\n\n 名次榜\n\n");
printf("学号 姓名 班级 数学 英语 c语言 总分\n");
for(i=0;i<3;i++)
{printf("%4d %-7s %4d %4d %4d %4d %4d\n",st[i].num,st[i].name,st[i].class,
st[i].math,st[i].eng,st[i].c,st[i].he);
}
}
lookfor() /*查找*/
{int num,i,j=0;
printf("请输入要查询的学号(整型):");
scanf("%d",&num);
for(i=0;i<3;i++)
{if(st[i].num==num)
{printf("\n学号 姓名 班级 数学 英语 c语言 总分\n%4d %5s %4d %4d %4d %4d %4d\n\n",
st[i].num,st[i].name,st[i].class,st[i].math,st[i].eng,st[i].c,st[i].he);
j++ ;
}
}
if(j==0)
printf("\n\n无此学号学生,返回菜单。\n\n");
}
PS:跟你的要求类似,你看看吧,也许对你用用