1、学生信息管理系统 要求: (1)数据结构:创建学生信息结点类型以及学生信息结构体; (2)存储结构:选择单链表存储学生信息。 (3)实现功能(以函数方式实现):学生信息链表创建、学生信息输入、学生信息 查询、学生信息修改、学生信息删除、学生信息输出(全部或部分输出)或保存到文件,学生相关排序。
时间: 2023-12-20 14:05:31 浏览: 101
C语言数据结构之学生信息管理系统课程设计
好的,这是一个关于学生信息管理系统的问题,我会尽力回答。首先,我们需要创建一个学生信息结点类型以及学生信息结构体,可以定义如下:
```c
// 学生信息结构体
typedef struct student_info {
int id; // 学号
char name[20]; // 姓名
int age; // 年龄
char gender; // 性别
float score; // 成绩
} StudentInfo;
// 学生信息结点类型
typedef struct student_node {
StudentInfo info; // 学生信息
struct student_node *next; // 指向下一个结点的指针
} StudentNode;
```
接下来,我们选择单链表存储学生信息。可以定义一个头结点,用来存储链表的头指针,方便操作。
```c
// 定义头结点
StudentNode *head = NULL;
```
然后,我们按照要求实现各种功能函数:
1. 学生信息链表创建
```c
void createStudentList() {
int n; // 学生数量
printf("请输入学生数量:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
StudentNode *p = (StudentNode *) malloc(sizeof(StudentNode));
printf("请输入第%d个学生的信息(学号 姓名 年龄 性别 成绩):", i+1);
scanf("%d %s %d %c %f", &p->info.id, p->info.name, &p->info.age, &p->info.gender, &p->info.score);
p->next = head;
head = p;
}
printf("创建成功!\n");
}
```
2. 学生信息输入
```c
void inputStudentInfo() {
StudentNode *p = (StudentNode *) malloc(sizeof(StudentNode));
printf("请输入学生信息(学号 姓名 年龄 性别 成绩):");
scanf("%d %s %d %c %f", &p->info.id, p->info.name, &p->info.age, &p->info.gender, &p->info.score);
p->next = head;
head = p;
printf("输入成功!\n");
}
```
3. 学生信息查询
```c
void searchStudentInfo(int id) {
StudentNode *p = head;
while (p != NULL) {
if (p->info.id == id) {
printf("查询结果:\n");
printf("学号 姓名 年龄 性别 成绩\n");
printf("%d %s %d %c %.2f\n", p->info.id, p->info.name, p->info.age, p->info.gender, p->info.score);
return;
}
p = p->next;
}
printf("未找到该学生信息!\n");
}
```
4. 学生信息修改
```c
void modifyStudentInfo(int id) {
StudentNode *p = head;
while (p != NULL) {
if (p->info.id == id) {
printf("请输入修改后的学生信息(姓名 年龄 性别 成绩):");
scanf("%s %d %c %f", p->info.name, &p->info.age, &p->info.gender, &p->info.score);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生信息!\n");
}
```
5. 学生信息删除
```c
void deleteStudentInfo(int id) {
StudentNode *p = head;
StudentNode *prev = NULL;
while (p != NULL) {
if (p->info.id == id) {
if (prev == NULL) {
head = p->next;
} else {
prev->next = p->next;
}
free(p);
printf("删除成功!\n");
return;
}
prev = p;
p = p->next;
}
printf("未找到该学生信息!\n");
}
```
6. 学生信息输出
```c
void outputStudentInfo() {
StudentNode *p = head;
printf("所有学生信息如下:\n");
printf("学号 姓名 年龄 性别 成绩\n");
while (p != NULL) {
printf("%d %s %d %c %.2f\n", p->info.id, p->info.name, p->info.age, p->info.gender, p->info.score);
p = p->next;
}
}
```
7. 学生相关排序
```c
// 按学号升序排序
void sortStudentInfoById() {
StudentNode *p, *q, *r, *s;
p = head;
head = NULL;
while (p != NULL) {
q = p;
p = p->next;
if (head == NULL || q->info.id < head->info.id) {
q->next = head;
head = q;
} else {
r = head;
while (r != NULL && r->info.id < q->info.id) {
s = r;
r = r->next;
}
q->next = r;
s->next = q;
}
}
printf("按学号升序排序成功!\n");
}
```
以上就是一个简单的学生信息管理系统的实现,可以根据实际需求进行修改和完善。
阅读全文