68,372
社区成员




啊啊啊啊要死,有没有大佬来帮帮我,我的课程设计有好多小问题,一直都达不到要求,真的不会写啊
哪位大佬可以帮我改一下!拜托了
#include <stdio.h>
#include <stdlib.h>
#define N 30
struct student
{
int num; //学号
char name[20];//姓名
float chinese; //语文
float math; //数学
float english; //外语
float sum; //平均成绩
}stu[N];
//函数声明
int input(int n);
void display(int n);
void sort(int n);
void modify(int n);
void statis(int n);
void save(int n);
int main()//主菜单
{
int a,b=1;
while(b)
{
printf("\n-----------------------学生成绩管理系统-----------------------\n");
printf("请选择你需要的功能:\n");
printf(" 1.录入 2.显示 3.排序 4.修改 5.统计 6.退出\n");
scanf("%d",&a);
switch(a)
{
case 1:printf("\n-----------------------学生成绩录入功能-----------------------\n");input(1);break;
case 2:printf("\n-----------------------学生成绩显示功能-----------------------\n");display(2);break;
case 3:printf("\n-----------------------学生成绩排序功能-----------------------\n");sort(3);break;
case 4:printf("\n-----------------------学生成绩修改功能-----------------------\n");modify(4);break;
case 5:printf("\n-----------------------学生成绩统计功能-----------------------\n");statis(5);break;
case 6:b = 0; break;
default:printf("输入有误!请重新输入!\n");
}
}
printf("\n-----------------------已退出成绩管理系统-----------------------\n");
return 0;
}
int input(int n) //输入成绩
{
//student p;
printf("请输入学生人数:\n");
scanf("%d", &n);
for(int i=1;i<=n;i++)
{
printf("请输入学生学号:\n");
scanf("%d",&stu[i].num);
printf("请输入学生姓名:\n");
scanf("%s",stu[i].name);
printf("请输入学生语文成绩:\n");
scanf("%f",&stu[i].chinese);
printf("请输入学生数学成绩:\n");
scanf("%f",&stu[i].math);
printf("请输入学生英语成绩:\n");
scanf("%f",&stu[i].english);
stu[i].sum=stu[i].chinese+stu[i].math+stu[i].english;
}
printf("\n-----------------------学生成绩完成录入-----------------------\n");
}
void display(int n) //显示成绩
{
printf("\n-----------------------学生成绩信息显示-----------------------\n");
printf("学号\t 姓名\t 语文\t 数学\t 英语\t 总分\n");
int j;
for(j=0;j<n;j++)
{
printf(" %d\t %s%12f %6f %6f %6f\n",stu[j].num,stu[j].name,stu[j].chinese,stu[j].math,stu[j].english,stu[j].sum);
}
printf("\n-----------------------学生成绩完成显示-----------------------\n");
}
void sort(int n) //根据总分成绩排序
{
int t,q,p;
for(q=1; q<n; q++)
{
for(p=0; p<n-q-1; p++)
{
if(stu[p].sum<stu[p+1].sum)
{
stu[t]=stu[p];
stu[p]=stu[p+1];
stu[p+1]=stu[t];
}
}
}
printf("学号\t 姓名\t 总分\n");
for(q=1; q<n; q++)
printf(" %d\t %s %12f\n",stu[q].num,stu[q].name,stu[q].sum);
printf("\n-----------------------学生成绩完成排序-----------------------\n");
}
void statis(int n) //统计成绩
{
//找出语文最高的分数
int i1,j1,max1;
max1=stu[0].chinese;
for(i1=0;i1<n;i1++)
{
if(max1<stu[i1].chinese)
{
max1=stu[i1].chinese;
j1=i1;
}
}
printf("语文成绩最高学生信息:\n");
printf("学号:%d 姓名:%s 语文成绩:%f\n",stu[j1].num,stu[j1].name,stu[j1].chinese);
//找出数学最高的分数
int i2,j2,max2;
max2=stu[0].math;
for(i2=0;i2<n;i2++)
{
if(max2<stu[i2].math)
{
max2=stu[i2].math;
j2=i2;
}
}
printf("数学成绩最高学生信息:\n");
printf("学号:%d 姓名:%s 数学成绩:%f\n",stu[j2].num,stu[j2].name,stu[j2].math);
//找出英语最高的分数
int i3,j3,max3;
max3=stu[0].english;
for(i3=0;i3<n;i3++)
{
if(max3<stu[i3].english)
{
max3=stu[i3].english;
j3=i3;
}
}
printf("英语成绩最高学生信息:\n");
printf("学号:%d 姓名:%s 英语成绩:%f\n",stu[j3].num,stu[j3].name,stu[j3].english);
printf("\n*******************每门课程最高成绩学生信息完成显示*******************\n");
//求语文平均成绩
printf("\n*********************语文平均成绩显示*********************\n");
float avg;
avg=0.00;
for(int i=0;i<n;i++)
{
avg=avg+stu[i].chinese;
}
avg=avg/N;
printf("语文平均成绩:%0.2f\n",avg);
//大于平均分学生信息成绩
printf("\n*********************超过语文平均成绩的学生显示*********************\n");
int i;
for(i=0;i<n;i++)
{
if(avg<stu[i].chinese)
{
printf("学号:%d 姓名:%s 语文成绩:%f\n",stu[i].num,stu[i].name,stu[i].chinese);
}
}
printf("超过语文平均成绩的学生有:%d\n",i);
}
void save(int n) //保存文件
{
FILE *fp;
fp=fopen("c:\\STUDENT.txt","wb");
if(fp==NULL)
{
printf("error!");
exit(1);
}
else
{
for(int j=0;j<n;j++)
{
fprintf(fp,"学号:%d 姓名:%s 语文:%f 数学:%f 英语:%f 总分:%f\n",stu[j].num,stu[j].name,stu[j].chinese,stu[j].math,stu[j].english,stu[j].sum);
}
printf("文件保存成功\n");
}
fclose(fp);
}
void modify(int n) //修改成绩
{
int i;
printf("请输入要修改的学号:");
scanf("%d",&stu[i].num);
if(stu[i].num!=n)
{printf("学生不存在!\n");}
else
{
printf("请输入新姓名:");
scanf("%s",stu[i].name);
printf("请输入新语文成绩:");
scanf("%f",&stu[i].chinese);
printf("请输入新数学成绩:");
scanf("%f",&stu[i].math);
printf("请输入新英语成绩:");
scanf("%f",&stu[i].english);
}
printf("学号:%4d 姓名:%6s 语文:%8f 数学:%8f 英语:%8f",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english);
printf("\n-----------------------学生成绩完成修改-----------------------\n");
}