1、学生信息管理系统 要求: (1)数据结构:创建学生信息结点类型以及学生信息结构体; (2)存储结构:选择单链表存储学生信息。 (3)实现功能(以函数方式实现):学生信息链表创建、学生信息输入、学生信息查询、学生信息修改、学生信息删除、学生信息输出(全部或部分输出)或保存到文件,学生相关排序。
时间: 2023-12-20 20:05:29 浏览: 91
以下是一个简单的C语言实现学生信息管理系统的示例代码,包括上述要求的所有功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生信息结构体
typedef struct student {
char id[20]; // 学号
char name[20]; // 姓名
int age; // 年龄
char gender[10]; // 性别
struct student *next; // 指向下一个学生信息结点的指针
} Student;
// 学生信息链表创建
Student *create() {
Student *head, *p, *q;
head = (Student *)malloc(sizeof(Student));
head->next = NULL;
q = head;
printf("请输入学生信息(输入0结束输入):\n");
while (1) {
p = (Student *)malloc(sizeof(Student));
printf("请输入学号:");
scanf("%s", p->id);
if (strcmp(p->id, "0") == 0) {
free(p);
break;
}
printf("请输入姓名:");
scanf("%s", p->name);
printf("请输入年龄:");
scanf("%d", &p->age);
printf("请输入性别:");
scanf("%s", p->gender);
q->next = p;
q = p;
}
q->next = NULL;
return head;
}
// 学生信息输入
void insert(Student *head) {
Student *p, *q;
p = (Student *)malloc(sizeof(Student));
printf("请输入学号:");
scanf("%s", p->id);
printf("请输入姓名:");
scanf("%s", p->name);
printf("请输入年龄:");
scanf("%d", &p->age);
printf("请输入性别:");
scanf("%s", p->gender);
p->next = NULL;
q = head;
while (q->next != NULL) {
q = q->next;
}
q->next = p;
printf("学生信息添加成功!\n");
}
// 学生信息查询
void search(Student *head) {
char id[20];
printf("请输入要查询的学生学号:");
scanf("%s", id);
Student *p = head->next;
while (p != NULL) {
if (strcmp(p->id, id) == 0) {
printf("学号:%s 姓名:%s 年龄:%d 性别:%s\n", p->id, p->name, p->age, p->gender);
return;
}
p = p->next;
}
printf("没有找到该学生信息!\n");
}
// 学生信息修改
void modify(Student *head) {
char id[20];
printf("请输入要修改的学生学号:");
scanf("%s", id);
Student *p = head->next;
while (p != NULL) {
if (strcmp(p->id, id) == 0) {
printf("请输入新的学号:");
scanf("%s", p->id);
printf("请输入新的姓名:");
scanf("%s", p->name);
printf("请输入新的年龄:");
scanf("%d", &p->age);
printf("请输入新的性别:");
scanf("%s", p->gender);
printf("学生信息修改成功!\n");
return;
}
p = p->next;
}
printf("没有找到该学生信息!\n");
}
// 学生信息删除
void del(Student *head) {
char id[20];
printf("请输入要删除的学生学号:");
scanf("%s", id);
Student *p = head->next, *q = head;
while (p != NULL) {
if (strcmp(p->id, id) == 0) {
q->next = p->next;
free(p);
printf("学生信息删除成功!\n");
return;
}
q = p;
p = p->next;
}
printf("没有找到该学生信息!\n");
}
// 学生信息输出
void output(Student *head) {
Student *p = head->next;
while (p != NULL) {
printf("学号:%s 姓名:%s 年龄:%d 性别:%s\n", p->id, p->name, p->age, p->gender);
p = p->next;
}
}
// 学生相关排序
void sort(Student *head) {
int n = 0;
Student *p = head->next, *q;
while (p != NULL) {
n++;
p = p->next;
}
for (int i = 0; i < n - 1; i++) {
p = head->next;
q = head;
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(p->id, p->next->id) > 0) {
q->next = p->next;
p->next = p->next->next;
q->next->next = p;
q = q->next;
} else {
p = p->next;
q = q->next;
}
}
}
printf("学生信息排序成功!\n");
}
int main() {
Student *head;
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("7. 学生信息排序\n");
printf("0. 退出程序\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
head = create();
printf("学生信息链表创建成功!\n");
break;
case 2:
insert(head);
break;
case 3:
search(head);
break;
case 4:
modify(head);
break;
case 5:
del(head);
break;
case 6:
output(head);
break;
case 7:
sort(head);
break;
case 0:
printf("程序已退出!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
```
以上代码实现了一个简单的学生信息管理系统,提供了学生信息链表的创建、学生信息输入、学生信息查询、学生信息修改、学生信息删除、学生信息输出和学生相关排序等功能。其中,学生信息使用单链表存储,每个学生信息结点包括学号、姓名、年龄和性别等信息。用户可以通过菜单选择需要的操作,对学生信息进行管理。
阅读全文