#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct edu_adm
{
char name[10];
int id;
int chinese;
int math;
};
typedef struct edu_adm info;
void show()
{
system("clear");
printf("\t\t********************************************\n");
printf("\t\t********************************************\n");
printf("\t\t**************欢迎进入教务系统**************\n");
printf("\t\t********************************************\n");
printf("\t\t********************************************\n");
sleep(2);
system("clear");
}
void PrintInfo()
{
printf("\t\t********************************************\n");
printf("\t\t**1.输入学生信息 2.查询学生信息**\n");
printf("\t\t**3.查询成绩排序 4.修改学生信息**\n");
printf("\t\t**5.输出学生信息 6.退出教务系统**\n");
printf("\t\t********************************************\n");
printf("\t\t**************请按回车键清屏****************\n");
printf("\t\t********************************************\n");
printf("\t\t请输入选项:");
}
int InputInfo(info str[])
{
int i = 0;
while(1)
{
printf("请输入学生名字,学号,语文成绩,数学成绩:\n");
scanf("%s", str[i].name);
if(strcmp(str[i].name, "end") == 0)
{
getchar();
break;
}
scanf("%d%d%d", &str[i].id, &str[i].chinese, &str[i].math);
i++;
}
return i;
}
void SearchInfo(info str[], int len)
{
int i = 0;
int num;
printf("请输入你想查询的学号:");
scanf("%d", &num);
getchar();
for(i = 0; i < len ; i++)
{
if(str[i].id == num)
{
printf("***************************\n");
printf("姓名 学号 语文 数学\n");
printf("%s", str[i].name);
printf(" %d", str[i].id);
printf(" %d", str[i].chinese);
printf(" %d", str[i].math);
printf("\n");
printf("***************************\n");
return;
}
}
printf("***************************\n");
printf("没有这个学生!!\n");
printf("***************************\n");
}
void SortInfo(info str[], int len)
{
int j, k;
int tmp;
char median[100];
for(j = 0; j < len - 1; j++)
{
for(k = j+1 ; k < len ; k++)
{
if(str[j].chinese < str[k].chinese)
{
tmp = str[j].math;
str[j].math = str[k].math;
str[k].math = tmp;
strcpy(median, str[j].name);
strcpy(str[j].name, str[k].name);
strcpy(str[k].name, median);
tmp = str[j].chinese;
str[j].chinese = str[k].chinese;
str[k].chinese = tmp;
tmp = str[j].id;
str[j].id = str[k].id;
str[k].id = tmp;
}
}
}
for(j = 0; j < len - 1; j++)
{
for(k = j+1 ; k < len ; k++)
{
if(str[j].math < str[k].math)
{
tmp = str[j].math;
str[j].math = str[k].math;
str[k].math = tmp;
strcpy(median, str[j].name);
strcpy(str[j].name, str[k].name);
strcpy(str[k].name, median);
tmp = str[j].chinese;
str[j].chinese = str[k].chinese;
str[k].chinese = tmp;
tmp = str[j].id;
str[j].id = str[k].id;
str[k].id = tmp;
}
}
}
for(j = 0; j < len; j++)
{
printf("###########################\n");
printf("按语文成绩排名:\n");
printf("姓名 学号 语文 数学\n");
printf("%s", str[j].name);
printf(" %d", str[j].id);
printf(" %d", str[j].chinese);
printf(" %d", str[j].math);
printf("\n");
printf("############################\n");
}
for(j = 0; j < len; j++)
{
printf("############################\n");
printf("按数学成绩排名:\n");
printf("姓名 学号 语文 数学\n");
printf("%s", str[j].name);
printf(" %d", str[j].id);
printf(" %d", str[j].chinese);
printf(" %d", str[j].math);
printf("\n");
printf("############################\n");
}
}
void ChangeInfo(info str[], int len)
{
int number, m;
printf("请输入你想修改信息的学号:");
scanf("%d", &number);
printf("\n");
for (m = 0; m < len; m++)
{
if(str[m].id == number)
{
scanf("%s", str[m].name);
scanf("%d", &str[m].id);
scanf("%d", &str[m].math);
scanf("%d", &str[m].chinese);
getchar();
printf("Change Success!\n");
return;
}
else
{
getchar();
printf("没有这个学生\n");
}
}
}
void OutputInfo(info str[], int len)
{
int j ;
printf("######################################################\n");
printf("姓名 学号 语文 数学\n");
for(j = 0; j < len; j++)
{
printf("%s", str[j].name);
printf(" %d", str[j].id);
printf(" %d", str[j].chinese);
printf(" %d", str[j].math);
printf("\n");
}
printf("######################################################\n");
}
int main()
{
info str[100];
int len;
char num[10];
show();
while(1)
{
PrintInfo();
fgets(num, 2, stdin);
switch(num[0])
{
case '1':
{
len = InputInfo(str);
break;
}
case '2':
{
SearchInfo(str, len);
break;
}
case '3':
{
getchar(); //获取回车
SortInfo(str, len);
break;
}
case '4':
{
ChangeInfo(str, len);
break;
}
case '5':
{
getchar(); //获取回车
OutputInfo(str, len);
break;
}
case '6':
{
exit(1);
}
case 10:
{
system("clear");
break;
}
default:
{
printf("Unkown Input!\n");
break;
}
}
}
return 0;
}