比较完整的学生管理系统,实现了以下几种功能:
- 添加学生信息
- 删除学生信息(根据id查找)
- 修改学生信息
- 查找学生信息(根据姓名查找)
- 学生信息排序(按照分数降序)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
typedef struct Student
{
int id;
char name[20];
int score;
}student;
typedef struct Class
{
student person[N];
int count;
}class;
void printf_enum();
void printf_all(class *p);
int add_student(class *p);
int delete_student(class *p);
int fix_student(class *p);
int find_student(class* p);
int arrange_student(class *p);
int main()
{
int choose=0;
class my_class;
my_class.count=0;
printf("欢迎使用学生管理系统\n");
while(1)
{
printf_enum();
printf("请选择需要执行的操作:");
scanf("%d",&choose);
switch(choose)
{
case 1:
add_student(&my_class);
break;
case 2:
delete_student(&my_class);
break;
case 3:
fix_student(&my_class);
break;
case 4:
find_student(&my_class);
break;
case 5:
arrange_student(&my_class);
break;
default:
break;
}
if(choose==6)
{
break;
}
printf_all(&my_class);
}
printf("欢迎下次使用!\n");
return 0;
}
void printf_all(class *p)//打印所有学生信息
{
printf("\n");
for(int i=0;i<p->count;i++)
printf("id %4d name %10s score %4d\n",p->person[i].id,\
p->person[i].name,\
p->person[i].score);
printf("\n");
return;
}
void printf_enum()//初始界面
{
printf("----------------------------------------------\n");
printf("|1.添加学员信息 2.删除学员信息 3.修改学员信息|\n");
printf("|4.查找学员信息 5.学员信息排序 6.退出程序 |\n");
printf("----------------------------------------------\n");
}
int add_student(class *p)
{
if(p->count==N)
{
printf("人数已满,添加失败\n");
return -1;
}
printf("请输入学生信息:");
scanf("%d%s%d",&(p->person[p->count].id),\
p->person[p->count].name,\
&(p->person[p->count].score));
p->count++;
printf("学员信息添加成功\n");
return 0;
}
int fix_student(class* p)
{
int num1,num2;
printf("请输入您要修改的学生的id:");
scanf("%d",&num1);
printf("请输入您要修改的内容(1.id 2.姓名 3.分数):");
scanf("%d",&num2);
for(int i=0;;i++)
{
if(num1==p->person[i].id)
{
if(num2==1)
{
printf("请输入新的id:");
scanf("%d",&(p->person[i].id));
printf("输入成功!\n");
return 0;
}
if(num2==2)
{
printf("请输入新的name:");
scanf("%s",p->person[i].name);
printf("输入成功!\n");
return 0;
}
if(num2==3)
{
printf("请输入新的score:");
scanf("%d",&(p->person[i].score));
printf("输入成功!\n");
return 0;
}
else
{
printf("输入错误!\n");
return -1;
}
}
if(i>=p->count)
{
printf("输入id有误!\n");
}
}
}
int find_student(class* p)
{
printf("请输入您要查找的学生的姓名:");
char num[20];
scanf("%s",num);
int i;
for(i=0;i<p->count;i++)
{
for(int j=0;;j++)
{
if(num[j]==p->person[i].name[j])
{
if(num[j]=='\0')
{
printf("您要查找的学生是:%d %s ,分数:%d\n",p->person[i].id,\
p->person[i].name,\
p->person[i].score);
return 0;
}
}
else
break;
}
}
if(i==p->count)
{
printf("查无此人\n");
return -1;
}
}
int arrange_student(class *p)
{
for(int i=0;i<p->count-1;i++)
{
for(int j=0;j<p->count-i-1;j++)
{
if(p->person[j].score<p->person[j+1].score)
{
student temp;
temp=p->person[j];
p->person[j]=p->person[j+1];
p->person[j+1]=temp;
}
}
}
}
int delete_student(class *p)
{
int num=0;
int i;
printf("请输入您要删除的id:");
scanf("%d",&num);
for(i=0;i<p->count;i++)
{
if(num==p->person[i].id)
{
for(;i<p->count;i++)
{
p->person[i]=p->person[i+1];
}
printf("修改成功!\n");
p->count--;
}
}
if(i==p->count)
{
printf("查无此人\n");
}
}