#include<stdio.h>
#define number 12
int fflush(FILE*);
struct student
{
char name[20];
int id;
int chinese;
int math;
int c;
}a[number] =
{
{ "guoa",2017211180,80,67,65},
{ "wued",2017211195,90,98,32},
{ "yeili",2017211112,88,96,84},
{ "zhaot",2017211140,79 ,89,76},
{ "cnghu",2017211151,91 ,70,69},
{ "songdf",2017211136,79,87,91},
};
void fuction()//函数初始化
{
void show();
void jieguo();
void jiandanpaixu();
void shanchu();
void tianjia();
void pinjun();
void maopao();
}
int main()
{
int choice;
fuction();
show();
while (scanf("%d", &choice) == 1)
{
switch (choice)
{
case 1:jieguo(); break;
case 2:shanchu(); break;
case 3:maopao(); break;
case 4:pinjun(); break;
case 5:tianjia(); break;
case 0: {
printf("\n\n\n\n\t\t\t\t\t\t【欢迎再次使用】\n\n\n");
system("pause");
exit(0); }; break;
default:printf("请按要求输入\a\n");
}
show();
}
system("pause");
}
void show()//初始界面
{
for (int i = 0; i < 8; i++)
{
printf("------------------------");
}
printf("\n\n");
printf("\t\t\t\t\t\t\t\t\t\t\t学生信息管理系统\n\n");
for (int i = 0; i < 8; i++)
{
printf("------------------------");
}
printf("\n");
printf("【欢迎使用学生成绩管理系统】\n");
printf("[1] [显示所有学生信息]\n");
printf("[2] [删除学生信息]\n");
printf("[3] [对学生信息进行排序]\n");
printf("[4] [求平均分]\n");
printf("[5] [录入学生信息]\n");
printf("[0] [退出程序]\n");
printf("[请输入您的选择](0 - 5):");
}
void jieguo()//显示结果
{
int i;
for (i = 0; a[i].id != 0; i++)
{
}
printf("\n【姓名】\t\t【学号】\t\t【语文成绩】\t【数学成绩】\t【C语言】\n");
for (int h = 0; h < i; h++)
{
printf("%s\t\t\t%d\t\t %d\t\t %d \t\t%d\n", a[h].name, a[h].id, a[h].chinese, a[h].math, a[h].c);
}
}
void jiandanpaixu(int y)//排序
{
struct student *t = NULL, l;
t = a;
for (int i = y; i <6; i++)
{
*(t + i) = *(t + i + 1);
}
}
void shanchu()//删除某个成员
{
char str[20] = { NULL };
struct student *t, m;
char *q = NULL, *p = NULL;
int xc = 0, k = 0, *l = NULL, c,m1;
t = a;
p = a->name;
l = &a->id;
printf("[1] [按姓名删除某个学生信息]\n");
printf("[2] [按学号删除某个学生信息]\n");
scanf("%d", &c); fflush(stdin);
switch (c)
{
case 1: {
printf("[请输入你所要删除的信息的学生的名字!]:");
scanf("%s", str); fflush(stdin);
q = str;
for (int i = 0; i < number; i++)
{
while ((!(xc = *p - *q)) && *p)
{
*q++;
*p++;
}
if (xc == 0)
{
t = NULL;
t = (struct student *)malloc(sizeof(struct student));
jiandanpaixu(i);
free(t);
t = &a[i - 1];
}
q = str;
p = a[i + 1].name;
t++;
}
jieguo();
}break;
case 2:
{
printf("[请输入你所要删除的信息的学生的学号]:");
scanf("%d", &k); fflush(stdin);
for (int i = 0; i < number; i++)
{
if (!(*l - k))
{
t = NULL;
t = (struct student *)malloc(sizeof(struct student));
jiandanpaixu(i);
free(t);
t = &a[i - 1];
}
l += sizeof(m) /sizeof(m1);
t++;
}
jieguo();
}break;
default:printf("[输入错误,已返回主菜单!]\n\a");
}
}
void tianjia()//添加某个信息
{
int i, b;
printf("你想要添加几组学生的信息?\n");
scanf("%d", &b); fflush(stdin);
for (i = 0; a[i].id != 0; i++)
{
}
printf("\n\t\t【姓名】 【学号】 【语文成绩】 【数学成绩】 【C语言】\n");
for (int j = i; j<i + b; j++)
{
printf("第[%d]组:\t", j + 1);
scanf("%s", a[j].name);
scanf("%d", &a[j].id);
scanf("%d", &a[j].chinese);
scanf("%d", &a[j].math);
scanf("%d", &a[j].c);
}
printf("[添加成功!!!]\n");
}
void maopao()//排序
{
struct student *v = NULL, b;
int c;
v = a;
printf("[1] [按学号对学生排序]\n");
printf("[2] [按语文成绩对学生排序]\n");
printf("[3] [按数学成绩对学生排序]\n");
printf("[4] [按c语言成绩对学生排序]\n");
scanf("%d", &c); fflush(stdin);
for (int i = 0; i < 5; i++)
{
for (int j = i + 1; j < 6; j++)
{
switch (c)
{
case 1:
{
if ((v + i)->id >(v + j)->id)
{
b = *(v + i);
*(v + i) = *(v + j);;
*(v + j) = b;
}
}break;
case 2:
{
if ((v + i)->chinese > (v + j)->chinese)
{
b = *(v + i);
*(v + i) = *(v + j);;
*(v + j) = b;
}
}break;
case 3:
{
if ((v + i)->math > (v + j)->math)
{
b = *(v + i);
*(v + i) = *(v + j);;
*(v + j) = b;
}
}break;
default:printf("[输入错误,已返回主菜单!]\a\n");
}
}
}
jieguo();
}
void pinjun()//求平均值
{
float guide = 0;
struct student m;
int *ojbk = NULL, c;
int k = 0;
printf("[1] [语文平均分]\n");
printf("[2] [数学平均分]\n");
printf("[3] [C语言平均分]\n");
scanf("%d", &c); fflush(stdin);
if (c == 1)ojbk = &a->chinese;
else if (c == 2)ojbk = &a->math;
else if (c == 3)ojbk = &a->c;
else goto cv;
for (int i = 0; *(ojbk + i) != '\0'; i += sizeof(m) / 4)
{
guide += *(ojbk + i);
k++;
}
if (c == 1)printf("语文成绩的总平均为[%f]\n", guide / k);
else if (c == 2)printf("数学成绩的总平均为[%f]\n", guide / k);
else if (c == 3)printf("C语言成绩的总平均为[%f]\n", guide / k);
else cv:printf("[输入错误,已返回主菜单!]\a\n");
}
学生信息管理系统(简单)
猜你喜欢
转载自blog.csdn.net/yyk219/article/details/79988964
今日推荐
周排行