#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
int id;
char name[15];
float score;
}student_t;
typedef struct
{
int n;
student_t stu[30];
}class_t;
enum
{
ADD=1,
DEL,
SHOW,
SORT,
MOD,
NB,
LJ,
QUIT,
};
void *malloc(size_t size);
int myADD(class_t *p);
void myMOD(class_t *p);
void mySORT(class_t *p);
int myDEL(class_t *p);
void myNB(class_t *p);
void mySHOW(class_t *p);
void myLJ(class_t *p);
int main(int argc, const char *argv[])
{
int i;
class_t *p;
p = (class_t *)malloc(sizeof(class_t));
printf("*********************************************************\n");
printf(" 欢迎使用学生管理系统 \n");
printf("*********************************************************\n");
printf(" 请选择您想使用的功能 \n");
printf("*********************************************************\n");
while(i)
{
printf("*********************************************************\n");
printf("1.录入 2.删除 3.查找 4.排序 5.修改 6.牛逼 7.垃圾 8.退出 \n");
printf("*********************************************************\n");
scanf("%d",&i);
getchar();
switch(i)
{
case ADD:myADD(p);break;
case DEL:myDEL(p);break;
case SHOW:mySHOW(p);break;
case SORT:mySORT(p);break;
case MOD:myMOD(p);break;
case NB:myNB(p);break;
case LJ:myLJ(p);break;
case QUIT:
goto out;
;break;
defalt:
printf("bye bye\n")
;continue;
}
}
out:
printf("退出学生管理系统\n");
if(p != NULL)
{
free(p);
p=NULL;
}
return 0;
}
int myADD(class_t *p)
{
/* int i,m;
printf("请输入班级里具体的学生人数:\n");
scanf("%d",&m);
while(getchar() !='\n');
p->n=m;
printf("请录入班级中的学生信息:\n");
for(i=0;i<p->n;i++)
{
scanf("%d %s %f",&p->stu[i].id,p->stu[i].name,&p->stu[i].score);
}
printf("学生信息录入成功\n");
*/ //一次性输入多个学生,并且无法增加学生的数量
int i;
p->n++;
if((p->n) >= 30 )
{
p->n--;
printf("学生太多了!\n");
return -1;
}
again:
printf("请输入添加学生的信息:\n");
i = scanf("%d %s %f",&p->stu[p->n].id,p->stu[p->n].name,&p->stu[p->n].score);
if(i != 3)
{
printf("你输入的信息有问题\n");
while(getchar() !='\n');
goto again;
}
printf("成功录入学生信息\n");
return 0;
}
void myMOD(class_t *p)
{
int i;
char name[15] = {0};
float new_score;
printf("请输入想修改成绩的学生的名字:");
scanf("%s",name);
while(getchar() != '\n');
printf("请输入想修改成绩的学生的分数:");
scanf("%f",&new_score);
while(getchar() != '\n');
for(i=0;i<p->n;i++)
{
if(strcmp(name,p->stu[i].name)==0)
p->stu[i].score = new_score;
printf("%d %s %f\n",p->stu[i].id,p->stu[i].name,p->stu[i].score);
}
}
void mySORT(class_t *p)
{
int i,j;
student_t tmp;
for(i=0;i<(p->n)-1;i++)
{
for(j=0;j<(p->n)-1-i;j++)
{
if((p->stu[j].score)<(p->stu[j+1].score))
{
tmp = p->stu[j+1];
p->stu[j+1] = p->stu[j];
p->stu[j] = tmp;
}
}
}
for(i=0;i<(p->n);i++)
{
printf("%d %s %.2f\n",p->stu[i].id,p->stu[i].name,p->stu[i].score);
}
}
int myDEL(class_t *p)
{
int i,j;
char name[15]={0};
printf("请输入想要删除的名字:");
scanf("%s",name);
while(getchar() != '\n');
for(i=0,j=0;i<p->n;i++)
{
if(strcmp(name,p->stu[i].name))
{
p->stu[j] = p->stu[i];
j++;
}
}
if(i==j)
{
printf("没有要删除的学生\n");
return -1;
}
p->n=j;
printf("删除的学生个数是:%d\n",i-j);
return i-j;
}
void myNB(class_t *p)
{
int i;
printf("90分以上的大佬有:\n");
for(i=0;i<p->n;i++)
{
if(p->stu[i].score > 90 && p->stu[i].score < 100)
{
printf("%d %s %.2f\n",p->stu[i].id,p->stu[i].name,p->stu[i].score);
}
}
}
void mySHOW(class_t *p)
{
int i;
char name[15] = {0};
printf("请输入你想查询的名字:\n");
scanf("%s",name);
while(getchar()!= '\n');
for(i=0;i<p->n;i++)
{
if(!(strcmp(name,p->stu[i].name)))
{
printf("%d %s %.2f\n",p->stu[i].id,p->stu[i].name,p->stu[i].score);
}
}
}
void myLJ(class_t *p)
{
int i;
printf("不及格的小垃圾有:\n");
for(i=0;i<p->n;i++)
{
if(p->stu[i].score<60 && p->stu[i].score>0)
{
printf("%d %s %.2f\n",p->stu[i].id,p->stu[i].name,p->stu[i].score);
}
}
}