#include "7.h"
extern int n,k;
struct student st[N];
//*************帮助菜单*****************
void help()
{
printf("***********************\n");
printf("*****学生管理系统******\n");
printf("***********************\n");
printf(" 1.显示帮助菜单 \n");
printf(" 2.录入信息 \n");
printf(" 3.计算平均成绩 \n");
printf(" 4.查看信息 \n");
printf(" 5.平均成绩高低排序 \n");
printf(" 6.按学号查询 \n");
printf(" 7.清屏 \n");
printf(" 0.退出 \n");
printf("***********************\n");
}
//*************成绩录入*****************
void type()
{
printf("请输入学生人数:");
scanf("%d",&n);
printf("请输入%d名学生三门课成绩:\n",n);
printf("学号\t语文\t数学\t外语\n");
for(int i=1;i<=n;i++)
{
st[i-1].numb = i;
printf("%d ",st[i-1].numb);
scanf("%f\t%f\t%f",&st[i-1].score[0],&st[i-1].score[1],&st[i-1].score[2]);
}
}
//*************列出成绩*****************
void list()
{
printf("\t学号\t语文\t数学\t英语\t平均分\n");
for(int i=0;i<n;i++)
{
printf("\t%d\t%.1f\t%.1f\t%.1f\t%.2f\n",st[i].numb,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
}
}
//************求平均值*****************
void average()
{
printf("\t学号\t语文\t数学\t英语\t平均分\n");
for(int i=0;i<n;i++)
{
st[i].ave = (st[i].score[0]+st[i].score[1]+st[i].score[2])/3;
printf("\t%d\t%.1f\t%.1f\t%.1f\t%.2f\n",st[i].numb,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
}
}
//************按平均分从高到底排序***********
void sort()
{
printf("\t学号\t语文\t数学\t英语\t平均分\n");
for(int i=1;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(st[j].ave<st[j+1].ave)
{
struct student temp = st[j];
st[j] = st[j+1];
st[j+1] = temp;
}
}
}
for(int i=0;i<n;i++)
{
printf("\t%d\t%.1f\t%.1f\t%.1f\t%.2f\n",st[i].numb,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
}
}
//************按学号查询***************
void search()
{
int t;
printf("请输入一个学号:");
scanf("%d",&t);
printf("\t学号\t语文\t数学\t英语\t平均分\n");
for(int i=0;i<n;i++)
{
if((st[i].numb)==t)
{
printf("\t%d\t%.1f\t%.1f\t%.1f\t%.2f\n",st[i].numb,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
}
}
}
//***********新增学生的录入*************
void add()
{
printf("请输入新增学生人数:");
scanf("%d",&k);
printf("请输入%d名学生三门课成绩:\n",k);
printf("学号\t语文\t数学\t外语\n");
for(int i=1;i<=k;i++)
{
st[n+i-1].numb = n+i;
printf("%d ",st[n+i-1].numb);
scanf("%f\t%f\t%f",&st[n+i-1].score[0],&st[n+i-1].score[1],&st[n+i-1].score[2]);
}
printf("录入完毕");
}
#include <stdio.h>
#include <stdlib.h>
#define N 10
int n,k;
struct student
{
int numb;
float ave;
float score[3];
};
void help();
void type();
void list();
void average();
void sort();
void search();
void add();
#include "7.h"
int main(int argc, const char *argv[])
{
int num;
help();
while(1)
{
printf("请选择功能>>");
scanf("%d",&num);
switch(num)
{
case 1:
help();
break;
case 2:
if(n == 0)
type();
else
add();
n = n+k;
break;
case 3:
if(n==0)
puts("成绩表为空,请先录入成绩");
else
average();
break;
case 4:
if(n==0)
puts("成绩表为空,请先录入成绩");
else
list();
break;
case 5:
if(n==0)
puts("成绩表为空,请先录入成绩");
else
sort();
break;
case 6:
if(n==0)
puts("成绩表为空,请先录入成绩");
else
search();
break;
case 7:
printf("输入大写C清屏");
char c=getchar();
system("clear");
break;
case 0:
exit(1);
default:
printf("输入错误!\n");
break;
}
getchar();
}
return 0;
}