#define _CRT_SECURE_NO_WARNINGS
#include
#include
struct Stu
{
//个学生的信息[学号 姓名 物理 英文 语文 C语言 化学]
char id[10];
char name[10];
double c[5];
double total;
};
struct Class //教室
{
struct Stu s[100];
int n; //学生人数
};
struct Class c;
void menu()
{
printf("nntt学生成绩管理系统nn");
printf("tt1--初次录入学生信息n");
printf("tt2--增加一名学生的信息n");
printf("tt3--学生信息浏览n");
printf("tt4--按学号查信息n");
printf("tt5--按姓名查信息n");
printf("tt6--按总分降序n");
printf("tt7--按姓名排序n");
printf("tt8--删除一条记录n");
printf("tt9--修改一条记录n");
printf("tt0--退出n");
}
void init()
{
int n,i;
printf("nn输入初次录入学生人数:");
scanf("%d",&n);
for (i = 0; i < n; i++)
{
c.s[i].total = 0;
printf("请输入第%d个学生的信息[学号 姓名 物理 英文 语文 C语言 化学]:n",i+1);
scanf("%s%s%lf%lf%lf%lf%lf", c.s[i].id , c.s[i].name, &c.s[i].c[0], &c.s[i].c[1], &c.s[i].c[2], &c.s[i].c[3], &c.s[i].c[4]);
c.s[i].total += c.s[i].c[0];
c.s[i].total += c.s[i].c[1];
c.s[i].total += c.s[i].c[2];
c.s[i].total += c.s[i].c[3];
c.s[i].total += c.s[i].c[4];
}
c.n = n;
}
void input()
{
printf("nn增加一条新的学生信息:n");
printf("请输入一个新的学生的信息[学号 姓名 物理 英文 语文 C语言 化学]:n");
c.s[c.n].total = 0;
scanf("%s%s%lf%lf%lf%lf%lf", c.s[c.n].id, c.s[c.n].name, &c.s[c.n].c[0], &c.s[c.n].c[1], &c.s[c.n].c[2], &c.s[c.n].c[3], &c.s[c.n].c[4]);
c.s[c.n].total += c.s[c.n].c[0];
c.s[c.n].total += c.s[c.n].c[1];
c.s[c.n].total += c.s[c.n].c[2];
c.s[c.n].total += c.s[c.n].c[3];
c.s[c.n].total += c.s[c.n].c[4];
c.n += 1;
}
void printOne(int i)
{
printf("%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fn", c.s[i].id, c.s[i].name, c.s[i].c[0], c.s[i].c[1], c.s[i].c[2], c.s[i].c[3], c.s[i].c[4], c.s[i].total);
}
void printAll()
{
int i;
printf("nn学生信息浏览:n");
for (i = 0; i < c.n; i++)
printOne(i);
}
void findId()
{
int i;
char id[10];
printf("nn请输入学号:");
scanf("%s",id);
for (i = 0; i < c.n; i++)
if (strcmp(c.s[i].id, id) == 0)
{
printf("信息已查到,内容如下:n");
printOne(i);
return;
}
printf("信息不存在~!请核实后重新操作。n");
}
void findName()
{
int i;
char name[10];
printf("nn请输入姓名:");
scanf("%s", name);
for (i = 0; i < c.n; i++)
if (strcmp(c.s[i].name, name) == 0)
{
printf("信息已查到,内容如下:n");
printOne(i);
return;
}
printf("信息不存在~!请核实后重新操作。n");
}
void sortTotal()
{
int i, j;
struct Stu t;
printf("nn总分降序:n");
for(i=0;i0)
{
t = c.s[j];
c.s[j] = c.s[j + 1];
c.s[j + 1] = t;
}
}
void delet()
{
int i,j;
char id[10];
printf("nn请输入要删除的学生学号:");
scanf("%s", id);
for (i = 0; i < c.n; i++)
if (strcmp(c.s[i].id, id) == 0)
{
printf("信息已查到,内容如下:n");
printOne(i);
break;
}
if (i < c.n)
{
for (j = i; j < c.n - 1; j++)
c.s[j] = c.s[j + 1];
c.n--;
printf("此学生信息已经被删除~!n");
}
else
printf("信息不存在~!请核实后重新操作。n");
}
void edit()
{
int i;
char id[10];
printf("nn请输入要修改的学生学号:");
scanf("%s", id);
for (i = 0; i < c.n; i++)
if (strcmp(c.s[i].id, id) == 0)
{
printf("信息已查到,内容如下:n");
printOne(i);
break;
}
if (i < c.n)
{
c.s[i].total = 0;
printf("请输入学号为%s学生的信息[姓名 物理 英文 语文 C语言 化学]:n", id);
scanf("%s%lf%lf%lf%lf%lf",c.s[i].name, &c.s[i].c[0], &c.s[i].c[1], &c.s[i].c[2], &c.s[i].c[3], &c.s[i].c[4]);
c.s[i].total += c.s[i].c[0];
c.s[i].total += c.s[i].c[1];
c.s[i].total += c.s[i].c[2];
c.s[i].total += c.s[i].c[3];
c.s[i].total += c.s[i].c[4];
printf("此学生信息已经被修改~!n");
}
else
printf("信息不存在~!请核实后重新操作。n");
}
int main()
{
char key;
c.n = 0;
menu();
printf("选择 (0~9):");
while (1)
{
key=getch();
while (key < '0' || key>'9')
{
printf("n只能选择0~9nn");
key = getch();
}
switch (key)
{
case '1': init(); break;
case '2': input(); break;
case '3': printAll(); break;
case '4': findId(); break;
case '5': findName(); break;
case '6': sortTotal(); printAll(); break;
case '7': sortName(); printAll(); break;
case '8': delet(); break;
case '9': edit(); break;
case '0': return 0; break;
default:
printf("只能选择0~9nn");
}
menu();
printf("选择 (0~9):");
}
return 0;
}