C语言实现学生信息管理系统(单链表)
介绍
在学习 C 语言过程中,实现一些小型项目可以帮助我们更好的熟悉和巩固所学的知识。这里介绍一种用 C 语言实现学生信息管理系统的方法,使用单链表来管理学生详细信息,包括编号、姓名、年龄、性别、专业等。本文将讲解该项目的完整攻略。
步骤
步骤1:设计结构体
首先,在程序中需要设计一个结构体来储存学生详细信息。可以考虑在 main
函数外面定义一个结构体:
struct student {
int id;
char name[20];
int age;
char sex[5];
char major[20];
struct student *next;
};
上述结构体中,next
是指向下一个节点的指针,它将被用于组成链表。
步骤2:定义链表
接下来,我们需要定义一个链表结构,用来管理学生信息。具体实现如下:
struct student *head = NULL;
struct student *tail = NULL;
头指针 head
指向链表的第一个节点,尾指针 tail
指向链表的最后一个节点。因为是空链表,所以它们均初始化为 NULL
。
步骤3:添加学生信息
现在我们需要编写添加新学生信息的函数:
void add_student() {
struct student *p = (struct student*)malloc(sizeof(struct student));
printf("请输入新学生的学号:");
scanf("%d", &p->id);
printf("请输入新学生的姓名:");
scanf("%s", p->name);
printf("请输入新学生的年龄:");
scanf("%d", &p->age);
printf("请输入新学生的性别:");
scanf("%s", p->sex);
printf("请输入新学生的专业:");
scanf("%s", p->major);
p->next = NULL;
if (tail == NULL) {
head = p;
tail = p;
} else {
tail->next = p;
tail = p;
}
printf("添加成功!\n");
}
该函数会提示用户输入学生信息,然后创建一个新的学生结构体节点 p
。接着,该节点会被添加到链表末尾。如果链表为空,则将 head
和 tail
都指向新节点;否则,将新节点连接到 tail
的后面。
在主函数中,可以调用此函数来添加新学生:
int main() {
add_student();
return 0;
}
步骤4:查询学生信息
可以编写 find_student_by_id
函数,通过学号可以查询到学生信息。代码如下:
void find_student_by_id(int id) {
struct student *p = head;
while (p != NULL) {
if (p->id == id) {
printf("学生信息如下:\n");
printf("学号:%d\n", p->id);
printf("姓名:%s\n", p->name);
printf("年龄:%d\n", p->age);
printf("性别:%s\n", p->sex);
printf("专业:%s\n", p->major);
return;
}
p = p->next;
}
printf("没有查询到指定学号的学生信息!\n");
}
该函数传入参数为学号 id
,会遍历链表,当找到节点的学号与传入参数相同时,打印该学生的信息。如果找不到该学号,则输出相应提示信息。
在主函数中,可以调用此函数查询学生信息:
int main() {
add_student();
find_student_by_id(1);
return 0;
}
当然这里查询的是学号为 1 时的情况。
示例说明
接下来,我们举两个例子来做进一步说明:
示例 1:添加多个学生信息
int main() {
add_student();
add_student();
add_student();
return 0;
}
以上代码会提示用户加入 3 个学生的信息,将这 3 个学生节点连接成一个链表。
示例 2:查询某个学生信息
int main() {
add_student();
find_student_by_id(1);
return 0;
}
以上代码会添加一个学生节点并查询学号为 1 的学生信息,如果找到,我们会打印查询到的学生信息,否则输出“没有查询到指定学号的学生信息!”的提示信息。
总结
以上我们实现了一个简单的学生信息管理系统。我们使用了单链表来管理学生详细信息,实现了添加学生信息和查询学生信息的功能。在实际应用中,我们还可以扩展其他功能,如修改、删除学生信息等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现学生信息管理系统(单链表) - Python技术站