#include<stdio.h>
#include<string.h>
int i=0;
struct student
{
char number[10];
char name[10];
char sex[4];
int classes;
int chinese,english,maths;
}stu[50];
struct student temp;
void input()
{int n;
for(n=0;n<50;n++)
{
printf("请输入学生学号(输入0结束)\n");
scanf("%s",&stu[n].number);
if(stu[n].number==0) {break;}
printf("请输入学生姓名\n");
scanf("%s",stu[n].name);
printf("请输入学生性别\n");
scanf("%s",stu[n].sex);
printf("请输入学生班级\n");
scanf("%d",stu[n].classes);
printf("请输入学生成绩\n");
scanf("%d",&stu[n].chinese);
scanf("%d",&stu[n].english);
scanf("%d",&stu[n].maths);
i=n+1;
}
}
void update()
{int o,j,n;
char a[10];
printf("请输入需要修改信息的学生学号:");
scanf("%s",&a);
for(n=0;n<i;n++)
{
if(strcmp(a,stu[n].number)==0)
{
printf("学号:%s\n",stu[n].number);
printf("姓名:%s\n",stu[n].name);
printf("班级:%d\n",stu[n].classes);
printf("性别:%s\n",stu[n].sex);
printf("语文成绩:%d\n",stu[n].chinese);
printf("英语成绩:%d\n",stu[n].english);
printf("数学成绩:%d\n",stu[n].maths);
o=n;
}
}
printf("*********************************************\n");
printf("1.学号 2.姓名 3.性别 4.班级\n");
printf("5.语文成绩 6.英语成绩 7.数学成绩 8.退出修改\n");
printf("*********************************************\n");
printf("请选择需要进行的操作");
scanf("%d",&j);
switch(j)
{
case 1:printf("请输入该学生的新学号");
scanf("%s",stu[o].number);
break;
case 2:printf("请输入该学生的新姓名");
scanf("%s",stu[o].name);
break;
case 3:printf("请输入该学生的新性别");
scanf("%s",stu[o].sex);
break;
case 4:printf("请输入该学生的新班级");
scanf("%d",&stu[o].classes);
break;
case 5:printf("请输入该学生新的语文成绩");
scanf("%d",&stu[o].chinese);
break;
case 6:printf("请输入该学生新的英语成绩");
scanf("%d",&stu[o].english);
break;
case 7:printf("请输入该学生新的数学成绩");
scanf("%d",&stu[o].maths);
break;
case 8:break;
}
}
void deal()
{int n,number1,b,m,index=1;
char num[10];
printf("******************************\n");
printf("1.按学号排序 2.查询\n");
printf("3.统计 4.返回主菜单\n");
printf("******************************\n");
printf("请选择数字");
scanf("%d,&number1");
switch(number1)
{
case 1:
{printf("排序后结果:\n");}
printf("学号 姓名 性别 班级 语文 英语 数学\n");
for(m=1;m<i;m++)
for(b=0;n<i-m;i++)
if(stu[b].number>stu[b+1].number)
{temp=stu[n];
stu[n]=stu[n=1];
stu[n+1]=temp;}
for(n=0;n<i;n++)
printf("%-9s%-9s%-9s%-9d%-9d%-9d%-9d\n",stu[n].number,stu[n].name,stu[n].sex,stu[n].classes,stu[n].classes,stu[n].english,stu[n].maths);
break;}
case 2:
{ printf("请输入要查询的学生学号");
scanf("%s",&num);
for(n=0;n<i;n++)
{ if(strcmp(num,stu[n].number)==0)
{printf("学号 姓名 性别 班级 语文 英语 数学\n");
printf("---------------------------------------\n");
printf("%-9s%-9s%-9s%-9d%-9d%-9d%-9d",stu[n].number,stu[n].name,stu[n].sex,stu[n].classes,stu[n].chinese,stu[n].english,stu[n].maths);}
break;}
case 3:
{int choice,n;
printf("----------------------------------------------\n");
printf("1.统计平均分 2.统计不及格学生信息 3返回\n");
printf("-----------------------------------------------\n");
printf("请选择数字");
scanf("%d,&choice");
switch(choice)
{case 1:
{ printf("所有学生的平均成绩是\n");
printf("学号 姓名 平均成绩\n");
printf("---------------------------\n");
for(n=0;n<i;n++)
printf("%-9s%-9s%-9d\n",stu[n].number,stu[n].name,((stu[n].chinese+stu[n].english+stu[n].maths)/3));
break;}
case 2:
{printf("有不及格科目的学生是\n");
printf("学号 姓名 性别 班级 语文 英语 数学\n");
printf("-----------------------------------------\n");
for(n=1;n<=i;n++)
if(stu[n].chinese<60||stu[n].english<60||stu[n].maths<60)
printf("%-9s%-9s%-9s%-9d%-9d%-9d%-9d%\n",stu[n].number,stu[n].name,stu[n].sex,stu[n].classes,stu[n].chinese,stu[n].english,stu[n].maths);
break;}
case 3:
break;
}
break;}
case 4:
break;
}
void output()
{int n;
printf("学号 姓名 性别 班级 语文 英语 数学\n");
printf("-------------------------------------------------------------------------\n");
for(n=0;n<i;n++)
printf("%-9s%-9s%-9s%-9d%-9d%-9d%-9d\n",stu[n].number,stu[n].name,stu[n].sex,stu[n].classes,stu[n].chinese,stu[n].english,stu[n].maths);
}
void main(void)
{
int x;
while(true)
{
printf("*******************************\n");
printf("* 学生信息管理系统 *\n");
printf("*-----------------------------*\n");
printf("* 1.读入数据 *\n");
printf("* 2.数据修改 *\n");
printf("* 3.数据处理 *\n");
printf("* 4.数据输出 *\n");
printf("* 5.退出 *\n");
printf("*******************************\n");
printf("请选择编号\n");
scanf("%d",&x);
switch(x)
{case 1:input();break;
case 2:update();break;
case 3:deal();break;
case 4:output();break;
case 5:break;}
}
}