1、Description 实现一个初步的学生信息管理系统,该系统可以实现对学生信息的:录入、查询、删除和输出。 定义学生结构体,存放学生的学号、姓名、性别、和年龄信息。结构体参考定义如下: struct student { int id; //学生序号:初始为0,当输入第1名学生的信息后序号为1,输入两名学生信息后,序号为2… char no[11]; //学号,例如:2022180219 char name[10]; //姓名,例如:liqiang char sex; //性别:’F’或’M’ int age; }; 定义函数void InputData(struct student *stu, int n)用于实现对n名学生信息的录入, 定义函数int QueryData(struct student *stu, char *stu_no)实现对输入的某学号进行查询,若查询有该学生,则输出该学生的完整信息;若查询失败,则输出:该学号不存在! 定义函数void DeleteData(struct student *stu, char *stu_no)实现对输入学号对应的学生信息的删除,若输入学号不存在,则不操作。(注意数组中后续学生数据应该前移一位,序号也应相应变更) 定义函数void OutputData(struct student *stu, int i)实现对结构体数组中序号为i的学生的信息输出。 主函数中定义结构体数组struct student stu[5],用于存放5名学生的信息。主函数中, (1)、调用InputData函数实现对5名学生的信息录入 (2)、调用QueryData函数实现对某输入学号的查询 (3)、若(2)中所查询学号存在,调用DeleteData函数进行删除 (4)、调用OutputData函数实现对全部的学生信息进行输出
时间: 2024-02-29 16:53:41 浏览: 105
好的,我明白了你的问题,下面是对应的代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
int id; //学生序号:初始为0,当输入第1名学生的信息后序号为1,输入两名学生信息后,序号为2…
char no[11]; //学号,例如:2022180219
char name[10]; //姓名,例如:liqiang
char sex; //性别:’F’或’M’
int age;
};
void InputData(struct student *stu, int n);
int QueryData(struct student *stu, char *stu_no);
void DeleteData(struct student *stu, char *stu_no);
void OutputData(struct student *stu, int i);
int main() {
struct student stu[5];
InputData(stu, 5);
char stu_no[11];
printf("请输入要查询的学生学号:");
scanf("%s", stu_no);
int index = QueryData(stu, stu_no);
if (index != -1) {
DeleteData(stu, stu_no);
OutputData(stu, index);
}
printf("\n当前学生信息:\n");
for (int i = 0; i < 5; i++) {
OutputData(stu, i);
}
return 0;
}
void InputData(struct student *stu, int n) {
for (int i = 0; i < n; i++) {
stu[i].id = i;
printf("请输入第%d名学生的学号:", i + 1);
scanf("%s", stu[i].no);
printf("请输入第%d名学生的姓名:", i + 1);
scanf("%s", stu[i].name);
printf("请输入第%d名学生的性别(F/M):", i + 1);
scanf(" %c", &stu[i].sex);
printf("请输入第%d名学生的年龄:", i + 1);
scanf("%d", &stu[i].age);
}
}
int QueryData(struct student *stu, char *stu_no) {
for (int i = 0; i < 5; i++) {
if (strcmp(stu[i].no, stu_no) == 0) {
printf("查询到该学生信息:\n");
printf("学号:%s\n", stu[i].no);
printf("姓名:%s\n", stu[i].name);
printf("性别:%c\n", stu[i].sex);
printf("年龄:%d\n", stu[i].age);
return i;
}
}
printf("该学号不存在!\n");
return -1;
}
void DeleteData(struct student *stu, char *stu_no) {
for (int i = 0; i < 5; i++) {
if (strcmp(stu[i].no, stu_no) == 0) {
for (int j = i; j < 4; j++) {
stu[j] = stu[j + 1];
stu[j].id = j;
}
printf("已删除该学生信息!\n");
return;
}
}
}
void OutputData(struct student *stu, int i) {
printf("序号:%d\n", stu[i].id);
printf("学号:%s\n", stu[i].no);
printf("姓名:%s\n", stu[i].name);
printf("性别:%c\n", stu[i].sex);
printf("年龄:%d\n\n", stu[i].age);
}
```
这是一个简单的学生信息管理系统,你可以根据需要对其进行补充和扩展。
阅读全文