#include "student_score.h"
#include <stdio.h>
#include<stdlib.h>
int n;//输入的学生数
int avar[M];
int Student_score_input()
{
int j;
int i = 0;
char c;
system("cls");
getchar();
printf("请输入要录入的学生数量\n");
scanf_s("%d",&n);
for(i = 0;i <= n;i++){
printf("请输入姓名:\n");
scanf_s("%s",student[i].name);
printf("请输入学号:\n");
scanf_s("%d",&student[i].id);
for(j = 0;j < M;j++)
{
printf("请输入成绩:\n");
scanf_s("%d",&student[i].grade[j]);
}
printf("按Y继续录入,按N结束录入!");
getchar();
scanf_s("%c",&c);
if(c!='Y'&&c!='y') //可以选择是否继续录入
break;
}
}
int Student_score_display()
{
int i,j;
for(i=0;i<n;i++)
{
printf(" 姓名 学号 数学0 语文1 英语2 计算机3\n");
printf("%s",student[i].name);
printf(" %d",student[i].id);
for(j=0;j<M;j++)
printf("%5d",student[i].grade[j]);
printf("\n");
}
}
int Student_score_save()
{
FILE *fp;
int i;
char save[20];
system("cls");
printf("请输入文件名:\n");
scanf("%s",save); /*输入选择项*/
if((fp=fopen("student-list","wb"))==NULL)
{
printf("文件打开失败!\n");
return;
}
else
{
for (i=0;i<n;i++)
if(fwrite (&student[i],sizeof(student),1,fp)!=1)
printf("文件写入错误!\n");
fclose(fp);
printf("成绩表保存成功!\n");
}
}
int Student_score_reorder()
{
int i,j,min,temp,k;
system("cls");
printf("请输入选择的科目[1-4]:\n");
scanf("%d",&k);
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
if(student[min].grade[k]>student[j].grade[k])
{
temp=student[min].grade[k];
student[min].grade[k]=student[j].grade[k];
student[j].grade[k]=temp;
}
}
printf("排序之后的结果:\n");
for(i=0;i<n;i++)
printf("%5d",student[i].grade[k]);
printf("\n");
}
int Student_score_modification()
{
int flag=0;
int num,ch;
int i,j;
char a[10],c,code[10]="1234";//密码
do
{
printf("请输入密码: \n");
scanf("%s",&a);
if(strcmp(code,a)==0)
break;
else
{
printf("你输入的密码有误,是否再试一次?[Y/N]\n");
scanf("%c\n",&c);
if(c=='n'||c=='N')
{
flag=1;
break;
}
}
}while(1);
if(flag==0)
{
printf("请输入你要修改的学号:\n");
scanf("%d",&num );
getchar();
for(i = 0;i < n;i ++)
if(student[i].id == num)
break;
if(i>=n)
printf("你要修改的学号是:\n",student[i].id);
else
{
printf("是否修改[Y/N]?\n");
ch=getchar();getchar();
if(ch=='y'||ch=='Y')
{
printf("请输入学号:\n");
scanf("%d",&student[i].id);
getchar();
}
printf("是否修改姓名[Y/N]?\n");
ch=getchar();getchar();
if(ch=='y'||ch=='Y')
{
printf("请输入新的姓名:\n");
scanf("%s",student[i].name);
getchar();
}
printf("是否修改成绩[Y/N]?\n");
ch=getchar();getchar();
if(ch=='y'||ch=='Y')
{
printf("请输入新的成绩:\n");
for(j=0;j<M;j++)
{
scanf_s("%d",&student[i].grade[j]);
getchar();
}
}
return;
}
}
}
int Student_score_total()
{
int key;
system("cls");
printf("成绩统计\n");
printf("1、显示每门课程成绩最高的学生的基本信息 \n");
printf("2、显示每门课程的平均成绩 \n");
printf("3、显示超过某门课程平均成绩的学生人数 \n");
printf("请输入你的选择:[1-3]\n");
scanf("%d",&key);
switch(key){
case 1:Student_score_total_best_information();break;
case 2:Student_score_total_avaerage_grade();break;
case 3:Student_score_total_more_information();break;
default:
printf("请输入正确的数字选项!\n");
}
}
int Student_score_total_best_information()
{
int k,i,j,c=0;
printf("请输入课程序号:\n");
scanf("%d",&k);
for(i=0;i<n;i++)
if(student[c].grade[k]<student[i].grade[k])
c=i;
printf("%s,%d",student[c].name,student[c].id);
for(j=0;j<M;j++)
printf("%5d",student[c].grade[j]);
}
int Student_score_total_avaerage_grade()
{
int i,j,sum;
for(j=0;j<M;j++)
{
sum=0;
for(i=0;i<n;i++)
sum=sum+student[i].grade[j];
avar[j]=sum/n;
printf("第%d门课程的平均成绩是:%d\n",j,avar[j]);
}
}
int Student_score_total_more_information()
{
int i,j = 0,m;
printf("请输入你想要显示的课程序号:[1-4]\n");
scanf("%d",&i);
if(i<M)
{
for(m = 0;m < M;m++)
{
if(student[i].grade[m] > avar[i])
{
j++;
}
}
}
printf("超过第%d课程平均成绩的人数:%d\n",i,j);
}
int Student_score_menu()
{
int a;
printf("\t\t\t---------------------------------------\n");
printf("\t\t\t-\t班级成绩管理系统 -\n");
printf("\t\t\t-\t 1、成绩录入 -\n");
printf("\t\t\t-\t 2、成绩显示 -\n");
printf("\t\t\t-\t 3、成绩保存 -\n");
printf("\t\t\t-\t 4、成绩排序 -\n");
printf("\t\t\t-\t 5、成绩修改 -\n");
printf("\t\t\t-\t 6、成绩统计 -\n");
printf("\t\t\t-\t 7、退出系统 -\n");
printf("\t\t\t-\t 请选择相应的菜单功能:[1~7] -\n");
printf("\t\t\t---------------------------------------\n");
scanf("%d",&a);
switch(a){
case 1:Student_score_input();break;
case 2:Student_score_display();break;
case 3:Student_score_save();break;
case 4:Student_score_reorder();break;
case 5:Student_score_modification();break;
case 6:Student_score_total();break;
case 7:exit(0);break;
default:
printf("请输入正确的数字!\n");
}
}
int main()
{
for(;;)
Student_score_menu();
}
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。