#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
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("\n\n\t\t学生成绩管理系统\n\n");
printf("\t\t1--初次录入学生信息\n");
printf("\t\t2--增加一名学生的信息\n");
printf("\t\t3--学生信息浏览\n");
printf("\t\t4--按学号查信息\n");
printf("\t\t5--按姓名查信息\n");
printf("\t\t6--按总分降序\n");
printf("\t\t7--按姓名排序\n");
printf("\t\t8--删除一条记录\n");
printf("\t\t9--修改一条记录\n");
printf("\t\t0--退出\n");
}
void init()
{
int n,i;
printf("\n\n输入初次录入学生人数:");
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("\n\n增加一条新的学生信息:\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("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", 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("\n\n学生信息浏览:\n");
for (i = 0; i < c.n; i++)
printOne(i);
}
void findId()
{
int i;
char id[10];
printf("\n\n请输入学号:");
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("\n\n请输入姓名:");
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("\n\n总分降序:\n");
for(i=0;i<c.n-1;i++)
for (j = 0; j < c.n - i - 1; j++)
if (c.s[j].total < c.s[j + 1].total)
{
t = c.s[j];
c.s[j] = c.s[j + 1];
c.s[j + 1] = t;
}
}
void sortName()
{
int i, j;
struct Stu t;
printf("\n\n姓名排序:\n");
for (i = 0; i < c.n - 1; i++)
for (j = 0; j < c.n - i - 1; j++)
if (strcmp(c.s[j].name, c.s[j + 1].name)>0)
{
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("\n\n请输入要删除的学生学号:");
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("\n\n请输入要修改的学生学号:");
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~9\n\n");
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~9\n\n");
}
menu();
printf("选择 (0~9):");
}
return 0;
}
|