#include<stdio.h>
#include<string.h>
#define N 4
struct student
{
int xh;
char mz[20];
char xb;
int bj;
float yw;
float sx;
float yy;
}stu[N];
void cd()//主菜单
{
printf("*******************************************************\n");
printf(" 1: 输入学生数据 2: 修改学生数据 3: 处理数据 \n");
printf(" 4:输出学生数据 5: 退出系统 \n");
printf("*******************************************************\n");
}
void sr()//数据输入
{
int i=0,num;
do{
printf("请输入第%d个学生的学号(输入0结束):",i+1);
scanf("%d",&stu[i].xh);
num=stu[i].xh;
if(num==0) continue;
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",stu[i].mz);
printf("请输入第%d个学生的性别:",i+1);
scanf("%d",&stu[i].xb);
printf("请输入第%d个学生的班级:",i+1);
scanf("%d",&stu[i].bj);
printf("请输入第%d个学生的语文成绩:",i+1);
scanf("%f",&stu[i].yw);
printf("请输入第%d个学生的数学成绩:",i+1);
scanf("%f",&stu[i].sx);
printf("请输入第%d个学生的英语成绩:",i+1);
scanf("%f",&stu[i].yy);
i++;
}while(num!=0);
}
void xg()//修改
{
int x,i,n,j=1;
printf("请输入需要修改学生的学号:");
scanf("%d",&x);
for(i=0;i<N;i++)
{
if(x!=stu[i].xh)
j++;
if(j>N) printf("无该学生记录!\n");
if(x==stu[i].xh)
{
printf("学号\t姓名\t性别\t班级\t语文\t数学\t英语\n");
printf("-----------------------------------------------------------------------------\n");
printf("%d\t%s\t%c\t%d\t%.1f\t%.1f\t%.1f\n",stu[i].xh,stu[i].mz,stu[i].xb,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy);
printf("**********************************************************\n");
printf("1:学号 2:姓名 3:性别 4:班级 \n");
printf("5:语文成绩 6:数学成绩 7:英语成绩 8:退出修改 \n");
printf("**********************************************************\n");
printf("请选择需要修改的项目(1~8):");
scanf("%d",&n);
if(n==1)
{
printf("请输入该学生的新学号:");
scanf("%d",&stu[i].xh);
}
if(n==2)
{
printf("请输入该学生的新姓名:");
scanf("%s",stu[i].mz);
}
if(n==3)
{
printf("请输入该学生的性别:");
getchar();
scanf("%c",&stu[i].xb);
}
if(n==4)
{
printf("请输入该学生的新班级:");
scanf("%d",&stu[i].bj);
}
if(n==5)
{
printf("请输入该学生的语文成绩:");
scanf("%f",&stu[i].yw);
}
if(n==6)
{
printf("请输入该学生的数学成绩:");
scanf("%f",&stu[i].sx);
}
if(n==7)
{
printf("请输入该学生的英语成绩:");
scanf("%f",&stu[i].yy);
}
if(n==8) break;
if(n>8||n<1) printf("输入数据错误,请重新输入/n");
printf("修改后的学生信息为:\n");
printf("学号\t姓名\t性别\t班级\t语文\t数学\t英语\n");
printf("-----------------------------------------------------------------------------\n");
printf("%d\t%s\t%c\t%d\t%.1f\t%.1f\t%.1f\n",stu[i].xh,stu[i].mz,stu[i].xb,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy);
}
}
}
void ave()//平均值
{
int j;
float k;
printf("所有学生的平均成绩是:\n");
printf("学号\t姓名\t平均\n");
printf("-------------------------\n");
for(j=0;j<N;j++)
{ if(stu[j].xh!=0)
{
k=(stu[j].yw+stu[j].sx+stu[j].yy)/3.0;
printf("%d\t%s\t%.1f\n",stu[j].xh,stu[j].mz,k);
}
else continue;
}
}
void tjgxsxx()//统计不及格学生信息
{
int j;
printf("有不及格科目的学生是:\n");
printf("学号\t姓名\t性别\t班级\t语文\t数学\t英语\n");
printf("------------------------------------------------------------------\n");
for(j=0;j<N;j++)
{
if(stu[j].xh!=0)
{
if(stu[j].yw<60.0||stu[j].sx<60.0||stu[j].yy<60.0)
printf("%d\t%s\t%c\t%d\t%.1f\t%.1f\t%.1f\n",stu[j].xh,stu[j].mz,stu[j].xb,stu[j].bj,stu[j].yw,stu[j].sx,stu[j].yy);
}
else continue;
}
}
void tj()//统计
{
int i;
do{
printf("******************************************************\n");
printf("1:统计平均分 2:统计不及格学生信息 3:返回 \n");
printf("******************************************************\n");
printf("请再选择具体的统计内容(1~3):");
scanf("%d",&i);
if(i==1)
{
ave();
}
if(i==2)
{
tjgxsxx();
}
}while(i<3);
}
void px()//排序
{
struct student x;
int i,j;
for(j=0;j<N;j++)
{
for(i=0;i<N-j;i++)
{
if(stu[i].xh==0)
break;
if(stu[i].xh>stu[i+1].xh)
{
x=stu[i];
stu[i]=stu[i+1];
stu[i+1]=x;
}
}
}
printf("排序后结果为:\n");
printf("学号\t姓名\t性别\t班级\t语文\t数学\t英语\n");
printf("---------------------------------------------------------------\n");
for(j=0;j<N+1;j++)
{
if(stu[j].xh==0)
continue;
printf("%d\t%s\t%c\t%d\t%.2f\t%.2f\t%.2f\n",stu[j].xh,stu[j].mz,stu[j].xb,stu[j].bj,stu[j].yw,stu[j].sx,stu[j].yy);
}
}
void cx()//查询
{
int i,x,j=1;
printf("请输入要查询的学生的学号:");
scanf("%d",&x);
for(i=0;i<N;i++)
{
if(x!=stu[i].xh)
j++;
if(j>N) printf("无该学生记录!");
if(x==stu[i].xh)
{
printf("学号\t姓名\t性别\t班级\t语文\t数学\t英语\n");
printf("------------------------------------------------------------\n");
printf("%d\t%s\t%c\t%d\t%.1f\t%.1f\t%.1f\n",stu[i].xh,stu[i].mz,stu[i].xb,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy);
}
}
}
void cl()//处理数据
{
int n;
do{
printf("*******************************************************\n");
printf("1:按学号排序 2:查询 \n");
printf("3:统计 4:返回主菜单 \n");
printf("*******************************************************\n");
printf("请选择具体的处理内容(1~4):");
scanf("%d",&n);
if(n==1) px();
if(n==2) cx();
if(n==3) tj();
}while(n<4);
}
void sc()//输出数据
{
int i;
printf("\t学号\t姓名\t性别\t班级\t语文\t数学\t英语\n");
printf("----------------------------------------------------------\n");
for(i=0;i<N;i++)
{
if(stu[i].xh!=0)
printf("\t%d\t%s\t%c\t%d\t%.2f\t%.2f\t%.2f\n",stu[i].xh,stu[i].mz,stu[i].xb,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy);
else
continue;
}
}
void main()//主函数
{
int i;
cd();
printf("请选择需要进行的操作(1~5):");
scanf("%d",&i);
while(i!=5)
{
if(i==1)
{
sr();
}
if(i==2)
{
xg();
}
if(i==3)
{
cl();
}
if(i==4)
{
sc();
}
if(i>5)printf("输入错误,请重新输入\n");
cd();
printf("请选择需要进行的操作(1~5):");
scanf("%d",&i);
}
printf("谢谢使用!!!\n");
}