学生信息管理,声明一个结构体存储信息先。
//存储学生信息的结构体
typedef struct Student {
//姓名,学号,语文成绩,数学成绩,英语成绩
char name[30];
char ID[20];
int chinese;
int math;
int english;
} Student;
然后呢,增,删,查,改,显示,分别封装为五个函数。其中添加和删除的部分,为了使数据长度随函数内增加和删除的操作改变,传参时除了数组指针,数组的长度也使用指针型传递。
增
//添加学生信息
void AddStudent(Student stu_arr[], int* length) {
//如果存储的信息量已达最大
if (*length == MAXSIZE) {
printf("不能添加更多的学生信息了!\n");
return ;
}
Student stu;
printf("请输入要添加的学生姓名:");
scanf("%s", &stu.name);
printf("请输入要添加的学生学号:");
scanf("%s", &stu.ID);
printf("请输入要添加的学生语文成绩:");
scanf("%d", &stu.chinese);
printf("请输入要添加的学生数学成绩:");
scanf("%d", &stu.math);
printf("请输入要添加的学生英语成绩:");
scanf("%d", &stu.english);
stu_arr[*length] = stu;
(*length)++;
int in = (*length) - 1;
printf("学生 %s 信息添加成功!\n", stu_arr[in].name);
}
删
删除的部分使用数组覆盖的方式实现。
//删除学生信息
void DeleteStudent(Student stu_arr[], int* length) {
//如果数组已经为空
if (length == 0) {
printf("没有可删除的数据!\n");
return ;
}
char name[30];
printf("请输入要删除的学生姓名:");
scanf("%s", &name);
int i, j, is_find = 0;
for (i = 0; i < *length && is_find == 0; i++) {
if (strcmp(stu_arr[i].name, name) == 0) {
is_find = 1;
//对被删除信息进行覆盖
for (j = i; j < (*length) - 1; j++) {
stu_arr[j] = stu_arr[j + 1];
}
}
}
if (is_find == 0) {
printf("未找到该学生信息!\n");
} else {
(*length)--;
printf("学生 %s 信息删除成功!\n", name