C语言学生成绩管理系统的设计
发布网友
发布时间:2022-04-25 19:27
我来回答
共3个回答
热心网友
时间:2023-10-14 12:12
#include<stdio.h>
#define N 40
#include<string.h>
struct student{
long num;
char name[10];
float score[5];
int number[6][6];
float sum;
};
void menu()
{
printf(" ****************************************\n");
printf(" 1--------------查询\n");
printf(" 2--------------排序\n");
printf(" 3--------------插入\n 4--------------删除\n");
printf(" 0--------------退出\n");
printf(" ****************************************\n");
}
void input(struct student s[],int *n)
{
printf("please intput the number of the student you want to add\n");
int x,i,j,b,flag=0;
scanf("%d",&x);
b=*n+x;
for(i=*n+1;i<=b;i++)
{
flag=1;
scanf("%ld",&s[i].num);
for(j=1;j<i;j++)
if(s[i].num==s[j].num&&i>1)
{ printf("input error\n");flag=0;i--;b--;break;}
if(flag)
{
scanf("%s",s[i].name);
for(j=1;j<=5;j++)
scanf("%f",&s[i].score[j]);
}
}
*n=b;if(flag) printf("添加成功\n");
}
void Delete(struct student s[],int *n)
{
printf("please input the name of the student you want to delete\n");
char m[10];int j;
scanf("%s",m);
for(j=1;j<=*n;j++)
if(strcmp(s[j].name,m)==0)
{
*n=*n-1;
for(;j<=*n;j++)
s[j]=s[j+1];
break;
}
printf("Delete succeed!\n");
}
void find(struct student s[],int n)
{
long b=0;char c[10],kk[10];
printf(" ****************************************\n");
printf(" 1.1----------按学号查询\n");
printf(" 1.2----------按姓名查询\n");
printf(" 1.3----------按成绩查询\n");
printf(" ****************************************\n");
int j,e;
float soc;
scanf("%s",kk);
if(strcmp(kk,"1.1/0")==0){
printf("请输入学生学号\n");
scanf("%s",c);
{
for(j=0,e=strlen(c);j<e;j++)
b=b*10+c[j]-48;
printf("学号\t姓名\t高数\t英语读写 英语听说 计导 程序(一) 总分\n");
for(j=1;j<=n;j++)
if(b==s[j].num)
{
printf("%ld\t%s\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\n",s[j].num,s[j].name,s[j].score[1],s[j].score[2],s[j].score[3],s[j].score[4],s[j].score[5],s[j].sum);
}
}
}
else if(strcmp(kk,"1.2")==0)
{
printf("请输入学生姓名\n");
scanf("%s",c);
printf("学号\t姓名\t高数\t英语读写 英语听说 计导 程序(一) 总分\n");
for(j=1;j<=n;j++)
if(strcmp(s[j].name,c)==0)
{
printf("%ld\t%s\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\n",s[j].num,s[j].name,s[j].score[1],s[j].score[2],s[j].score[3],s[j].score[4],s[j].score[5],s[j].sum);
}
}
else
{
printf("请输入学生分数\n");
scanf("%f",&soc);
printf("学号\t姓名\t高数\t英语读写 英语听说 计导 程序(一) 总分\n");
for(j=1;j<=n;j++)
if(s[j].sum==soc)
{
printf("%ld\t%s\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\n",s[j].num,s[j].name,s[j].score[1],s[j].score[2],s[j].score[3],s[j].score[4],s[j].score[5],s[j].sum);
}
}
}
void sort(struct student s[],int n)
{
int j,f,g,h;
for(j=1;j<=5;j++)
for(h=1;h<=5;h++)
s[0].number[j][h]=0;
for(j=1;j<=n;j++)
for(f=1,s[j].sum=0;f<=5;f++)
s[j].sum=s[j].sum+s[j].score[f];
for(f=1;f<=5;f++)
for(g=1;g<=n;g++)
if(s[g].score[f]>=90)
s[0].number[f][5]++;
else if(s[g].score[f]>=80&&s[g].score[f]<90)
s[0].number[f][4]++;
else if(s[g].score[f]>=70&&s[g].score[f]<80)
s[0].number[f][3]++;
else if(s[g].score[f]>=60&&s[g].score[f]<70)
s[0].number[f][2]++;
else
s[0].number[f][1]++;
struct student temp;
for(j=1;j<n;j++)
for(g=1;g<=n-j;g++)
if(s[g].sum>s[g+1].sum )
{
temp=s[g];
s[g]=s[g+1];
s[g+1]=temp;
}
}
void print1(struct student s[],int n)
{
printf("学号\t姓名\t高数\t英语读写 英语听说 计导 程序(一) 总分\n");
for(;n>0;n--)
printf("%ld\t%s\t%-0.2f\t%0.2f\t %0.2f\t %0.2f\t %0.2f\t %0.2f\n",s[n].num,s[n].name,s[n].score[1],s[n].score[2],s[n].score[3],s[n].score[4],s[n].score[5],s[n].sum );
}
int main()
{
menu();
int x,n=0;
struct student stu[N];
while(scanf("%d",&x)!=EOF&&x!=0)
{
switch(x)
{
case 1:find(stu,n);break;
case 2:sort(stu,n);print1(stu,n);break;
case 3:input(stu,&n);sort(stu,n);break;
case 4:Delete(stu,&n);break;
default:printf("Input error!\n");
}
}
return 0;
}
注:
(1)在插入的时候,先是输入添加的学生个数,按回车之后分别输入学生的学号、姓名、高数成绩、英语读写成绩、英语听说成绩、计算机导论、程序设计成绩
(2)在删除时,可以输入学生的姓名或者学号
热心网友
时间:2023-10-14 12:12
这是做项目,这里好像不是谈项目合作的地方吧
热心网友
时间:2023-10-14 12:13
这个就20分 有点少