用C语言编写学生档案管理系统
时间: 2023-08-26 09:04:32 浏览: 96
好的,我可以为您提供一些基本的思路。学生档案管理系统是一个比较典型的管理系统,需要实现对学生信息的增删改查等基本操作。在 C 语言中,可以通过结构体来存储学生的信息,然后使用链表或数组等数据结构来存储多个学生的信息。
下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct student {
int id; // 学号
char name[20]; // 姓名
char gender[10]; // 性别
int age; // 年龄
float score; // 成绩
struct student *next; // 指向下一个学生的指针
} Student;
// 插入学生信息
void insert(Student **head, int id, char *name, char *gender, int age, float score) {
// 创建新的学生节点
Student *new_student = (Student*)malloc(sizeof(Student));
new_student->id = id;
strcpy(new_student->name, name);
strcpy(new_student->gender, gender);
new_student->age = age;
new_student->score = score;
new_student->next = NULL;
// 将新节点插入到链表的末尾
if (*head == NULL) {
*head = new_student;
} else {
Student *p = *head;
while (p->next != NULL) {
p = p->next;
}
p->next = new_student;
}
}
// 删除学生信息
void delete(Student **head, int id) {
// 找到要删除的学生节点
Student *p = *head;
Student *prev = NULL;
while (p != NULL) {
if (p->id == id) {
break;
}
prev = p;
p = p->next;
}
// 将该节点从链表中删除
if (p == NULL) {
printf("No such student.\n");
} else {
if (prev == NULL) {
*head = p->next;
} else {
prev->next = p->next;
}
free(p);
}
}
// 修改学生信息
void modify(Student *head, int id, char *name, char *gender, int age, float score) {
// 找到要修改的学生节点
Student *p = head;
while (p != NULL) {
if (p->id == id) {
break;
}
p = p->next;
}
// 修改学生信息
if (p == NULL) {
printf("No such student.\n");
} else {
strcpy(p->name, name);
strcpy(p->gender, gender);
p->age = age;
p->score = score;
}
}
// 查询学生信息
void search(Student *head, int id) {
// 找到要查询的学生节点
Student *p = head;
while (p != NULL) {
if (p->id == id) {
break;
}
p = p->next;
}
// 输出学生信息
if (p == NULL) {
printf("No such student.\n");
} else {
printf("id: %d\n", p->id);
printf("name: %s\n", p->name);
printf("gender: %s\n", p->gender);
printf("age: %d\n", p->age);
printf("score: %.2f\n", p->score);
}
}
// 输出所有学生信息
void print_all(Student *head) {
Student *p = head;
while (p != NULL) {
printf("id: %d\n", p->id);
printf("name: %s\n", p->name);
printf("gender: %s\n", p->gender);
printf("age: %d\n", p->age);
printf("score: %.2f\n", p->score);
p = p->next;
}
}
int main() {
Student *head = NULL;
// 插入学生信息
insert(&head, 1001, "Tom", "male", 18, 90.5);
insert(&head, 1002, "Jerry", "female", 19, 85.0);
insert(&head, 1003, "Lucy", "female", 20, 92.0);
// 输出所有学生信息
print_all(head);
// 查询学生信息
search(head, 1002);
// 修改学生信息
modify(head, 1003, "Lily", "female", 21, 95.0);
// 删除学生信息
delete(&head, 1001);
// 再次输出所有学生信息
print_all(head);
return 0;
}
```
当然,这只是一个简单的示例,实际的学生档案管理系统还需要考虑很多其他的因素,比如数据的持久化存储、界面的设计等等。
阅读全文