思路
一开始学习函数的时候没有学好,所以在写这个管理系统的时候没有用函数,所以显的代码非常的臃肿,之后我会再发一个用函数写的学生管理系统。首先我写了一个结构体数组用来存储学生的信息,主函数里用的switch case来实现功能,这个学生管理系统的功能有添加信息、修改信息、查找信息和删除信息。先上效果图(代码在最下方)
效果
显示界面
未录入信息时的操作
当我们未录入信息时选择查找信息时,因为里面没有数据,所以当我们输入学号查找时会显示“查无此人”,未录入信息时无论是选择修改信息还删除信息效果都是一样的。
录入信息
我们可以多次录入信息,直到我们不想再录入,这时我们输入完一个信息后再输入0就会返回操作界面了
查找信息
输入学号查找即可,输入信息一样都可以继续查找,也可以主动返回操作界面。
修改信息
如图所示,我把小红的信息删除了,添加了小李的信息,所以在查找信息时找不到小红的信息了,但我们能查到小李的信息了。
删除信息
删除信息后还可以继续添加信息,因为我写了一个变量来计算结构体数组的长度,当删除后就减一,添加信息后就加一。
代码
#include <stdio.h>
#include <string.h>
struct student //定义结构体
{
char name[20];
int stu_number;
float chinese;
float math;
float english;
float _avg;
} stu[3];
int main(int argc, char const *argv[])
{
int number;
int number_1;
int x = 0, y, z, t,d;
int exit_1 = 1;
int exit_2 = 1;
float avg_ch,avg_math,avg_eng,avg_z;
float sum_avg=0;
float ch,ma,en,av;
char na[20];
int nu;
while (exit_1)
{
printf("------------------------------------------------------------------------\n");
printf("1.录入或添加信息 2.查找信息 3.修改信息 4.删除信息 5.退出\n");
printf("------------------------------------------------------------------------\n");
printf("请输入你的操作:");
scanf("%d", &number);
switch (number)
{
case 1: //录入或添加信息
exit_2 = 1;
for (; x < 50 && exit_2; x++)
{
printf("请输入第%d位同学的信息\n", x + 1);
printf("请输入姓名:");
scanf("%s", stu[x].name);
printf("请输入学号:");
scanf("%d", &stu[x].stu_number);
printf("请输入语文成绩:");
scanf("%f", &stu[x].chinese);
printf("请输入数学成绩:");
scanf("%f", &stu[x].math);
printf("请输入英语成绩:");
scanf("%f", &stu[x].english);
stu[x]._avg = (stu[x].chinese + stu[x].math + stu[x].english) / 3;
printf("退出请输入0,任意键继续输入:");
scanf("%d", &exit_2);
printf("\n");
}
break;
case 2: //查找信息
exit_2 = 1;
while (exit_2)
{
printf("请输入要查找学生的学号:");
scanf("%d", &number_1);
t = 1;
for (y = 0; y <= x; y++)
{
if (stu[y].stu_number == number_1)
{
t = 0;
printf("姓名:%s\n", stu[y].name);
printf("学号:%d\n", stu[y].stu_number);
printf("语文成绩:%.2f\n", stu[y].chinese);
printf("数学成绩:%.2f\n", stu[y].math);
printf("英语成绩:%.2f\n", stu[y].english);
printf("平均成绩:%.2f\n", stu[y]._avg);
printf("\n");
}
else if (y == x && t == 1)
{
printf("查无此人!");
}
}
printf("退出请输入0,任意键继续输入:");
scanf("%d", &exit_2);
printf("\n");
}
break;
case 3: //修改信息
exit_2 = 1;
while (exit_2)
{
t = 1;
printf("请输入要修改信息的学生的学号:");
scanf("%d", &number_1);
for (y = 0; y <= x; y++)
{
if (stu[y].stu_number == number_1)
{
t = 0;
printf("请输入姓名:");
scanf("%s", stu[y].name);
printf("请输入学号:");
scanf("%d", &stu[y].stu_number);
printf("请输入语文成绩:");
scanf("%f", &stu[y].chinese);
printf("请输入数学成绩:");
scanf("%f", &stu[y].math);
printf("请输入英语成绩:");
scanf("%f", &stu[y].english);
stu[x]._avg = (stu[y].chinese + stu[y].math + stu[y].english) / 3;
}
else if (y == x && t == 1)
{
printf("查无此人!");
}
}
printf("退出请输入0,任意键继续输入:");
scanf("%d", &exit_2);
printf("\n");
}
break;
case 4: //删除信息
exit_2=1;
while (exit_2)
{
printf("请输入你要删除的学生的学号");
scanf("%d", &number_1);
t = 0;
for (y = 0; y <= x; y++)
{
if (stu[y].stu_number == number_1)
{
t = 1;
for (z = y; z < x; z++)
{
stu[z] = stu[z + 1];
}
x = x - 1;//将x控制在有信息的最后一位
}
else if (y == x && t == 1)
{
printf("查无此人!");
}
}
printf("退出请输入0,任意键继续输入:");
scanf("%d", &exit_2);
printf("\n");
}
break;
case 5: //退出
exit_1 = 0;
break;
default:
break;
}
}
return 0;
}