#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 3
int n=0;//输入的人数
int k;//输入的成绩科目总数
struct student
{
long num; //学生学号
char name[20]; //学生姓名
float score[6]; //学生的3门成绩
float sum; //学生的总成绩
float aver; //学生的平均成绩
}s[30];
void menu();
void input(); //输入学生成绩
void add(); //增加一名学生成绩
void browse(); //浏览学生信息
void numsearch(); //学号查找信息
void namesearch(); //姓名查找信息
void zongfenjiangxu(); //总成绩从高到低排序
void namepaixu(); //按姓名大小排序
void shanchu(); //删除一名学生信息
void xiugai(); //修改一名学生信息
void tese(); //特色功能 超过总成绩及格线的人数
int main()
{
int floag=1;
while(floag==1)
{
menu();
int shuzi;
printf("输入数字运行以下程序\n");
scanf("%d",&shuzi);
switch(shuzi)
{
case 0:
floag=0;
break;
case 1:
input();
break;
case 2:
add();
break;
case 3:
browse();
break;
case 4:
numsearch();
break;
case 5:
namesearch();
break;
case 6:
zongfenjiangxu();
break;
case 7:
namepaixu();
break;
case 8:
shanchu();
break;
case 9:
xiugai();
break;
case 10:
tese();
break;
}
}
}
void menu()
{
printf("学生成绩管理系统\n");
printf("1.输入学生信息\n");
printf("2.增加一名学生的信息\n");
printf("3.学生信息浏览\n");
printf("4.输入学号查询学生信息\n");
printf("5.输入姓名查询学生信息\n");
printf("6.成绩从高到低排序\n");
printf("7.按姓名从低到高排序\n");
printf("8.输入学号删除学生信息\n");
printf("9.输入学号修改学生信息\n");
printf("10.查询总成绩过线数\n");
printf("0.退出\n");
}
void input() //录入学生信息
{
printf("请输入您要录入的人数");
int shuzi;
scanf("%d",&shuzi);
n=shuzi;
printf("请输入您要输入的科目总数\n");
scanf("%d",&k);
printf("请输入学生信息\n");
int i,j;
for(i=0;i<n;i++)
{
scanf("%ld%s",&s[i].num,s[i].name);
for(j=0;j<k;j++)
{
scanf("%f",&s[i].score[j]);
}
}
while (getchar() != '\n')
{
;
}
}
void add() //增加一名学生信息
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
printf("请输入您要增加的人数\n");
int zenjia;
scanf("%d",&zenjia);
n=n+zenjia;
printf("请输入您要增加的学生信息\n");
int i,j;
for(i=n-zenjia;i<n;i++)
{
scanf("%ld%s",&s[i].num,s[i].name);
for(j=0;j<k;j++)
{
scanf("%f",&s[i].score[j]);
}
}
while (getchar() != '\n')
{
;
}
}
}
void browse() //浏览学生信息
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
int i=0,j=0;
for(i=0;i<n;i++)
{ s[i].sum=0;
for(j=0;j<k;j++)
{
s[i].sum+=s[i].score[j];
}
}
for(i=0;i<n;i++)
{
s[i].aver=s[i].sum/k;
}
for(i=0;i<n;i++)
{
printf("%ld %s ",s[i].num,s[i].name);
for(j=0;j<k;j++)
{
printf("%.1f ",s[i].score[j]);
}
printf("%.1f %.1f\n",s[i].sum,s[i].aver);
}
while (getchar() != '\n')
{
;
}
}
}
void numsearch() //学号查询学生信息
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
int i=0,j=0;
for(i=0;i<n;i++)
{ s[i].sum=0;
for(j=0;j<k;j++)
{
s[i].sum+=s[i].score[j];
}
}
for(i=0;i<n;i++)
{
s[i].aver=s[i].sum/k;
}
printf("请输入您要查询的学号\n");
long id;
scanf("%ld",&id);
for(i=0;i<n;i++)
{
if(s[i].num==id)
{
printf("%ld %s ",s[i].num,s[i].name);
for(j=0;j<k;j++)
{
printf("%.1f ",s[i].score[j]);
}
printf("%.1f %.1f\n",s[i].sum,s[i].aver);
}
}
while (getchar() != '\n')
{
;
}
}
}
void namesearch() //姓名查找学生信息
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
int i=0,j=0;
for(i=0;i<n;i++)
{ s[i].sum=0;
for(j=0;j<k;j++)
{
s[i].sum+=s[i].score[j];
}
}
for(i=0;i<n;i++)
{
s[i].aver=s[i].sum/k;
}
printf("请输入您要查询的名字\n");
char xingming[15];
scanf("%s",&xingming);
for(i=0;i<n;i++)
{
if(strcmp(s[i].name,xingming)==0)
{
printf("%ld %s ",s[i].num,s[i].name);
for(j=0;j<k;j++)
{
printf("%.1f ",s[i].score[j]);
}
printf("%.1f %.1f\n",s[i].sum,s[i].aver);
}
}
while (getchar() != '\n')
{
;
}
}
}
void zongfenjiangxu() //按总成绩从大到小排序
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
int i=0,j=0;
for(i=0;i<n;i++)
{ s[i].sum=0;
for(j=0;j<k;j++)
{
s[i].sum+=s[i].score[j];
}
}
for(i=0;i<n;i++)
{
s[i].aver=s[i].sum/k;
}
float a[30];
float t;
for(i=0;i<n;i++)
{
a[i]=s[i].sum;
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
int m,c;
for (i = 0, m = n; i < m; i++)
{
for (j = i + 1; j < m; j++)
{
if (a[i] == a[j])
{
for (c = j; c < m; c++)
a[c] = a[c + 1];
j--;
m--;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i]==s[j].sum)
{
printf("%ld %s ",s[j].num,s[j].name);
int jiang = 0;
for(jiang=0;jiang<k;jiang++)
{
printf("%.1f ",s[j].score[jiang]);
}
printf("%.1f %.1f\n",s[j].sum,s[j].aver);
}
}
}
while (getchar() != '\n')
{
;
}
}
}
void namepaixu() //按姓名排序
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
int i=0,j=0;
for(i=0;i<n;i++)
{ s[i].sum=0;
for(j=0;j<k;j++)
{
s[i].sum+=s[i].score[j];
}
}
for(i=0;i<n;i++)
{
s[i].aver=s[i].sum/k;
}
char jj[20][30];
for(i=0;i<n;i++)
{
strcpy(jj[i],s[i].name);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if (strcmp(jj[i], jj[j]) > 0)
{
char ss[20];
strcpy(ss, jj[i]);
strcpy(jj[i], jj[j]);
strcpy(jj[j], ss);
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(strcmp(jj[i], s[j].name)== 0)
{
printf("%ld %s ",s[j].num,s[j].name);
int jiang = 0;
for(jiang=0;jiang<k;jiang++)
{
printf("%.1f ",s[j].score[jiang]);
}
printf("%.1f %.1f\n",s[j].sum,s[j].aver);
}
}
}
while (getchar() != '\n')
{
;
}
}
}
void shanchu() //删除一名学生信息
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
printf("请输入您要删除学生成绩的学号\n");
long id;
scanf("%d",&id);
int i,j=0;
for(i=0;i<n;i++);
{
if(id==s[i].num)
j=i;
}
for(i=j;i<n-1;i++)
{
s[i]=s[i+1];
}
n--;
while (getchar() != '\n')
{
;
}
}
}
void xiugai()
{ if(n==0)
{
printf("请先摁1输入成绩\n");
}
else
{
int i,j;
printf("请输入学生信息的学号\n");
long id;
scanf("%ld",&id);
printf("请输入他修改后的所有成绩\n");
for(i=0;i<n;i++)
{
if(id==s[i].num)
{
for(j=0;j<k;j++)
{
scanf("%f",&s[i].score[j]);
}
}
}
while (getchar() != '\n')//清理缓冲区
{
;
}
}
}
void tese() //总成绩过线数
{
printf("请输入您要输入的总成绩的及格成绩\n");
long qq;
scanf("%ld",&qq);
int i=0,j=0;
for(i=0;i<n;i++)
{ s[i].sum=0;
for(j=0;j<k;j++)
{
s[i].sum+=s[i].score[j];
}
}
int a=0;
for(i=0;i<n;i++)
{
if(s[i].sum>=qq)
{
a++;
}
}
printf("及格人数为%d\n",a);
}
学生成绩管理系统
最新推荐文章于 2024-07-12 16:06:58 发布