c语言用顺序表建立一个学生管理系统,查询功能:能够根据学生的学号、姓名、性别等属性进行单关键字或 多关键字的查询,查询结果按学号排序
时间: 2024-09-26 14:03:22 浏览: 27
在C语言中,创建一个基于顺序表的学生管理系统并实现查询功能,首先需要定义一个结构体`Student`表示学生信息,包括学号、姓名和性别等字段。接着,我们可以使用动态内存分配来创建和管理顺序表。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int student_id;
char name[50];
char gender;
} Student;
// 动态数组作为顺序表
typedef struct List {
Student* data;
size_t size;
size_t capacity;
} List;
// 功能函数
void init_list(List* list);
bool search_student(List* list, const char* query, const char* field); // 查询函数
void print_students(const List* list);
int main() {
List students;
init_list(&students);
// 添加学生...
// ...
// 查询功能示例
char search_key[] = "1234";
char field[] = "student_id"; // 或者 "name", "gender"
if (search_student(&students, search_key, field)) {
print_students(&students);
}
return 0;
}
// 初始化列表
void init_list(List* list) {
list->data = NULL;
list->size = 0;
list->capacity = 10; // 初始容量
}
// 根据指定键值和字段查找学生
bool search_student(List* list, const char* query, const char* field) {
for (size_t i = 0; i < list->size; i++) {
Student* current = &list->data[i];
if (!strcmp(current->field[field], query)) { // 比较对应字段的值
return true;
}
}
return false;
}
// 打印所有学生
void print_students(const List* list) {
for (size_t i = 0; i < list->size; i++) {
printf("学号:%d, 姓名:%s, 性别:%c\n",
list->data[i].student_id,
list->data[i].name,
list->data[i].gender);
}
}
```
阅读全文