#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // _kbhit() _getch()
typedef struct
{
int id;
char name[20];
int age;
char class[100];
} student;
void emue()
{
printf("【1】新增学生信息\n");
printf("【2】修改学生信息\n");
printf("【3】删除学生信息\n");
printf("【4】查询学生信息\n");
printf("【5】退出系统\n");
};
void enums()
{
printf("【1】修改学生姓名\n");
printf("【2】修改学生年龄\n");
printf("【3】修改学生班级\n");
}
void addStu(student *Stu, int *count);
void editStu(student *Stu, int *count);
void deleteStu(student *Stu, int *count);
void seeStu(student *Stu, int count);
int main()
{
int count = 5;
student p[] = {
{.id = 1, .name = "John", .age = 18, .class = "一班"},
{.id = 2, .name = "Mary", .age = 17, .class = "二班"},
{.id = 3, .name = "Tom", .age = 16, .class = "三班"},
{.id = 4, .name = "Jerry", .age = 15, .class = "四班"},
{.id = 5, .name = "Lily", .age = 14, .class = "五班"}};
student *Stu = realloc(NULL, count * sizeof(student));
if (Stu == NULL)
{
perror("realloc");
return -1;
}
for (int i = 0; i < count; i++)
{
Stu[i] = p[i];
}
// for(int i=0;i<count;i++){
// printf("id:%d,name:%s,age:%d,class:%s\n",Stu[i].id,Stu[i].name,Stu[i].age,Stu[i].class);
// }
while (1)
{
emue();
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
addStu(Stu, &count);
break;
case 2:
editStu(Stu, &count);
break;
case 3:
deleteStu(Stu, &count);
break;
case 4:
seeStu(Stu, count);
break;
case 5: // 退出
return 0;
break;
default:
printf("输入错误,请重新输入!\n");
}
}
free(Stu);
return 0;
}
// 新增学生信息
void addStu(student *Stu, int *count)
{
student info;
printf("请依次输入【学号】【姓名】【年龄】【班级】\n");
scanf("%d%s%d%s", &info.id, info.name, &info.age, info.class);
for (int i = 0; i < *count; i++)
{
if (info.id == Stu[i].id)
{
printf("学号已存在,请重新添加!\n");
return;
}
}
*count += 1;
Stu = realloc(Stu, (*count) * sizeof(student));
Stu[*count - 1] = info;
printf("添加成功!");
printf("按任意键继续!\n");
_getch();
}
// 修改学生信息
void editStu(student *Stu, int *count)
{
printf("请输入要修改的学生学号:\n");
int id, index;
scanf("%d", &id);
for (int i = 0; i < *count; i++)
{
if (Stu[i].id == id)
{
enums();
scanf("%d", &index);
switch (index)
{
case 1:
printf("请输入新的学生姓名:\n");
scanf("%s",Stu[i].name);
printf("修改【姓名】成功!");
printf("按任意键继续!\n");
_getch();
break;
case 2:
printf("请输入新的学生年龄:\n");
scanf("%d",&Stu[i].age);
printf("修改【年龄】成功!");
printf("按任意键继续!\n");
_getch();
break;
case 3:
printf("请输入新的学生班级:\n");
scanf("%s",Stu[i].class);
printf("修改【班级】成功!");
printf("按任意键继续!\n");
_getch();
break;
default:
printf("输入错误,无此选项!");
printf("按任意键继续!\n");
_getch();
break;
}
return ;
}
}
printf("学号不存在!");
printf("按任意键继续!\n");
_getch();
}
// 删除学生信息
void deleteStu(student *Stu, int *count)
{
printf("请输入要删除的学生学号:\n");
int id, sum;
scanf("%d", &id);
for (int i = 0; i < *count; i++)
{
if (Stu[i].id == id)
{
*count -= 1;
for (int j = i; j < *count; j++)
{
Stu[j] = Stu[j + 1];
}
printf("删除成功!");
printf("按任意键继续!\n");
_getch();
}
}
}
// 查看学生信息
void seeStu(student *Stu, int count)
{
for (int i = 0; i < count; i++)
{
// printf("id:%d,name:%s,age:%d,class:%s\n", Stu[i].id, Stu[i].name, Stu[i].age, Stu[i].class);
printf("学号:%d\t\t姓名:%s\t年龄:%d\t\t班级:%s\n", Stu[i].id, Stu[i].name, Stu[i].age, Stu[i].class);
}
printf("按任意键继续!\n");
_getch();
}
09-29
255