首先定义一个简单的结构体,里面有姓名,学号,和成绩。然后定义一个此类型的数组,假设有50人。
struct Stu{
char name[20];
int id;
float score;
};
struct Stu stu[50];
这个系统共有1.添加学生信息 2.删除学生信息 3.修改学生信息 4.查询学生信息5.学生成绩排序 6.遍历学生信息 0.退出系统 几个功能。
具体代码如下(没有写注释,太懒了我)
#include<stdio.h>
void Menu();
void Add();
void Change();
void Print();
void Find();
void Rank();
void Del();
struct Stu{
char name[20];
int id;
float score;
};
struct Stu stu[50];
//enum Tag{quit,add,del,change,find,rank,print };
int count;
int main()
{
while(1)
{
int num;
Menu();
scanf("%d",&num);
switch(num)
{
case 1:Add();break;
case 2:Del();break;
case 3:Change();break;
case 4:Find();break;
case 5:Rank();break;
case 6:Print();break;
case 0:return 0;
default:printf("输出有误!\n");
}
}
}
void Menu()
{
printf("*******欢迎来到学生管理系统*********\n");
printf("* 1.添加学生信息 2.删除学生信息 *\n");
printf("* 3.修改学生信息 4.查询学生信息 *\n");
printf("* 5.学生成绩排序 6.遍历学生信息 *\n");
printf("* 0.退出系统 *\n");
printf("************************************\n");
printf("请输入您的选择:");
}
void Add()
{
int num;
printf("请输入您要添加的学号:");
scanf("%d",&num);
for(int i=0;i<count;i++)
{
if(stu[i].id==num)
{
printf("该学号已存在!\n");
return;
}
}
stu[count].id=num;
printf("请输入您要添加的学生姓名:");
scanf("%s",stu[count].name);
printf("请输入您要添加的学生成绩:");
scanf("%f",&stu[count].score);
count++;
printf("该学生信息添加成功\n");
return;
}
void Change()
{
int num,a,b;
printf("请输入您要修改学生的学号:");
scanf("%d",&num);
for(int i=0;i<count;i++)
{
if(stu[i].id==num)
{
printf("该学生的信息为:\n");
printf("学号\t姓名\t成绩\n");
printf("%d\t%s\t%3.f\n",stu[i].id,stu[i].name,stu[i].score);
printf("请输入您想要修改的信息:\n1.成绩 2.其他功能修改暂未开放\n");
scanf("%d",&a);
if(a==1)
{
printf("请输入您想要的成绩:");
scanf("%d",&b);
stu[i].score=b;
}
printf("修改成功!\n");
printf("学号\t姓名\t成绩\n");
printf("%d\t%s\t%3.f\n",stu[i].id,stu[i].name,stu[i].score);
return;
}
else if(i==count-1&&stu[i].id!=num)
{
printf("该学号不存在!\n");
return ;
}
}
}
void Print()
{
printf("共有%d个学生信息\n",count);
printf("学号\t姓名\t成绩\n");
for(int i=0;i<count;i++)
{
printf("%d\t%s\t%3.f\n",stu[i].id,stu[i].name,stu[i].score);
}
}
void Find()
{
int num;
printf("请输入您要查询学生的学号:\n");
scanf("%d",&num);
for(int i=0;i<count;i++)
{
if(stu[i].id==num)
{
printf("该学生的信息为:\n");
printf("学号\t姓名\t成绩\n");
printf("%d\t%s\t%3.f\n",stu[i].id,stu[i].name,stu[i].score);
return ;
}
else if(i==count-1&&stu[i].id!=num)
{
printf("查询失败\n");
return;
}
}
}
void Del()
{
int num;
printf("请输入你删除学生的学号:\n");
scanf("%d",&num);
for(int i=0;i<count;i++)
{
if(stu[i].id==num)
{
for(int j=i;j<count-1;j++)
{
stu[j]=stu[j+1];
}
count--;
printf("删除成功!!\n");
return ;
}
else if(i==count-1&&stu[i].id!=num)
{
printf("没有此人!\n");
return;
}
}
}
void Rank()
{
struct Stu temp;
printf("按成绩由高到低排序为:\n");
for(int i=0;i<count;i++)
{
for(int j=0;j<count-i;j++)
{
if(stu[j].score<stu[j+1].score)
{
temp=stu[j+1];
stu[j+1]=stu[j];
stu[j]=temp;
}
}
}
printf("学号\t姓名\t成绩\n");
for(int i=0;i<count;i++)
{
printf("%d\t%s\t%3.f\n",stu[i].id,stu[i].name,stu[i].score);
}
}