C语言实现学生信息管理系统(顺序表)
C语言实现学生信息管理系统(顺序表)
项目概述
本项目使用 C 语言和顺序表数据结构实现一个简单的学生信息管理系统,该系统包含以下功能:
- 创建信息表
- 向表中插入信息
- 按指定 key 值修改信息
- 按指定 key 值查找信息 (查找算法不限:顺序查找、折半查找、分块查找、哈希表查找.......)
- 按指定 key 值删除信息
- 将系统数据按指定 key 值排序 (排序算法不限:冒泡排序、插入排序、选择排序.......)
代码实现
#include <stdio.h>
#include <stdlib.h>
// 定义学生信息结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
int score; // 成绩
} Student;
// 定义顺序表结构体
typedef struct {
Student *data; // 学生信息数组
int length; // 当前长度
int capacity; // 容量
} SeqList;
// 初始化顺序表
void init(SeqList *list, int capacity) {
list->data = (Student *)malloc(sizeof(Student) * capacity);
list->length = 0;
list->capacity = capacity;
}
// 插入信息
void insert(SeqList *list, Student student) {
if (list->length == list->capacity) {
printf('表已满,无法插入信息!\n');
return;
}
list->data[list->length] = student;
list->length++;
}
// 按学号查找信息
int search(SeqList list, int id) {
for (int i = 0; i < list.length; i++) {
if (list.data[i].id == id) {
return i;
}
}
return -1; // 未找到返回-1
}
// 按学号修改信息
void modify(SeqList *list, int id) {
int index = search(*list, id);
if (index == -1) {
printf('未找到该学生信息!\n');
return;
}
printf('请输入新的姓名和成绩:');
scanf('%s %d', list->data[index].name, &(list->data[index].score));
printf('修改成功!\n');
}
// 按学号删除信息
void remove(SeqList *list, int id) {
int index = search(*list, id);
if (index == -1) {
printf('未找到该学生信息!\n');
return;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
printf('删除成功!\n');
}
// 冒泡排序
void bubbleSort(SeqList *list) {
for (int i = 0; i < list->length - 1; i++) {
for (int j = 0; j < list->length - i - 1; j++) {
if (list->data[j].id > list->data[j + 1].id) {
Student temp = list->data[j];
list->data[j] = list->data[j + 1];
list->data[j + 1] = temp;
}
}
}
}
// 打印学生信息
void printStudent(Student student) {
printf('学号:%d\t姓名:%s\t成绩:%d\n', student.id, student.name, student.score);
}
// 打印所有学生信息
void printAll(SeqList list) {
for (int i = 0; i < list.length; i++) {
printStudent(list.data[i]);
}
}
int main() {
SeqList list;
init(&list, 100);
// 插入信息
Student s1 = {1001, '张三', 80};
insert(&list, s1);
Student s2 = {1002, '李四', 90};
insert(&list, s2);
Student s3 = {1003, '王五', 85};
insert(&list, s3);
Student s4 = {1004, '赵六', 95};
insert(&list, s4);
Student s5 = {1005, '钱七', 70};
insert(&list, s5);
// 向表中插入信息
Student s6 = {1006, '孙八', 88};
insert(&list, s6);
// 打印所有学生信息
printf('所有学生信息:\n');
printAll(list);
// 按学号查找信息
int id = 1002;
int index = search(list, id);
if (index != -1) {
printf('学号为%d的学生信息:\n', id);
printStudent(list.data[index]);
} else {
printf('未找到该学生信息!\n');
}
// 按学号修改信息
id = 1003;
modify(&list, id);
// 打印所有学生信息
printf('修改后的学生信息:\n');
printAll(list);
// 按学号删除信息
id = 1001;
remove(&list, id);
// 打印所有学生信息
printf('删除后的学生信息:\n');
printAll(list);
// 按学号排序
bubbleSort(&list);
// 打印所有学生信息
printf('排序后的学生信息:\n');
printAll(list);
return 0;
}
使用说明
- 编译代码:使用 C 语言编译器编译代码。
- 运行程序:运行编译后的程序。
- 操作系统:根据程序提示,输入相应指令进行操作。
注意事项
- 本项目只是一个简单的示例,实际应用中需要根据需求进行修改和完善。
- 代码中的注释详细解释了代码的功能和实现方式,请仔细阅读。
- 您可以根据需要修改和扩展代码,例如添加其他功能或使用不同的查找和排序算法。
原文地址: https://www.cveoy.top/t/topic/fT8e 著作权归作者所有。请勿转载和采集!