用c语言写一个成绩管理系统,要求用动态链表和注释
时间: 2024-02-03 08:11:17 浏览: 22
以下是一个简单的成绩管理系统的C语言代码,使用了动态链表来存储学生信息和成绩,并且添加了详细的注释解释程序的各个部分:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体来存储学生信息和成绩
struct student {
char name[20];
int score;
struct student *next;
};
// 初始化链表头节点
struct student *head = NULL;
// 添加学生信息到链表中
void add_student() {
struct student *new_student = (struct student*) malloc(sizeof(struct student));
printf("请输入学生姓名:");
scanf("%s", new_student->name);
printf("请输入学生成绩:");
scanf("%d", &new_student->score);
new_student->next = head;
head = new_student;
printf("添加成功!\n");
}
// 删除指定学生信息
void delete_student() {
char name[20];
printf("请输入要删除的学生姓名:");
scanf("%s", name);
struct student *current_student = head;
struct student *previous_student = NULL;
while (current_student != NULL) {
if (strcmp(current_student->name, name) == 0) {
if (previous_student == NULL) {
head = current_student->next;
} else {
previous_student->next = current_student->next;
}
free(current_student);
printf("删除成功!\n");
return;
}
previous_student = current_student;
current_student = current_student->next;
}
printf("未找到该学生信息!\n");
}
// 修改指定学生信息
void modify_student() {
char name[20];
printf("请输入要修改的学生姓名:");
scanf("%s", name);
struct student *current_student = head;
while (current_student != NULL) {
if (strcmp(current_student->name, name) == 0) {
printf("请输入新的学生成绩:");
scanf("%d", ¤t_student->score);
printf("修改成功!\n");
return;
}
current_student = current_student->next;
}
printf("未找到该学生信息!\n");
}
// 查询指定学生信息
void query_student() {
char name[20];
printf("请输入要查询的学生姓名:");
scanf("%s", name);
struct student *current_student = head;
while (current_student != NULL) {
if (strcmp(current_student->name, name) == 0) {
printf("学生姓名:%s,学生成绩:%d\n", current_student->name, current_student->score);
return;
}
current_student = current_student->next;
}
printf("未找到该学生信息!\n");
}
// 展示所有学生信息
void show_all_students() {
struct student *current_student = head;
while (current_student != NULL) {
printf("学生姓名:%s,学生成绩:%d\n", current_student->name, current_student->score);
current_student = current_student->next;
}
}
// 主函数
int main() {
int choice;
while (1) {
printf("\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 展示所有学生信息\n");
printf("6. 退出程序\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
query_student();
break;
case 5:
show_all_students();
break;
case 6:
exit(0);
default:
printf("选择有误,请重新输入!\n");
}
}
return 0;
}
```
以上是一个简单的成绩管理系统的C语言代码,使用了动态链表来存储学生信息和成绩,并且添加了详细的注释解释程序的各个部分。