一个简单的学生管理系统

标题可以实现的功能

1、利用单链表建立学生基本信息表
2、浏览每个学生的信息
3、根据学号查询某个学生的基本信息
4、添加学生信息到单链表中
5、删除一个学生的信息

无需多言,直接上代码,大一实验偷懒必备 在这里插入代码片
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
char name[20];
int age;
char sex[10];
int ID;
struct student* next;
}Student;
typedef Student* Link;
void AddList(Link* head);
void DeletList(Link* head);
void SearchList(Link head);
void ShowList(Link head);
void InsertList(Link head);

void InitialLink(Link* head)
{
head = NULL;
}
Link BuyListNode(char name[20], int age, char sex[10], int ID)
{
Link newnode = (Link)malloc(sizeof(Student));
if (newnode == NULL)
{
printf(“申请节点失败\n”);
exit(-1);
}
strcpy(newnode->name, name);
newnode->age = age;
strcpy(newnode->sex, sex);
newnode->ID = ID;
newnode->next = NULL;
return newnode;
}
void AddList(Link
head)
{
Link newnode = (Link)malloc(sizeof(Student));
printf(“请输入姓名:->”);
char name[20];
scanf("%s", name);
printf(“请输入年龄:->”);
int age;
scanf("%d", &age);
printf(“请输入性别:->”);
char sex[10];
scanf("%s", sex);
printf(“请输入ID:->”);
int ID;
scanf("%d", &ID);
newnode = BuyListNode(name, age, sex, ID);
if (!newnode)
{
printf(“添加失败\n”);
return;
}
if (!*head)
{
*head = newnode;
newnode->next = NULL;
printf(“添加成功\n”);
}
else
{
Link tail = head;
while (tail->next != NULL)
{
tail = tail->next;
}
tail->next = newnode;
newnode->next = NULL;
printf(“添加成功\n”);
}
}
void DeletList(Link
head)
{
Link tmp = *head;
Link q;
Link p;
if (!*head)
{
printf(“没有成员\n”);
return;
}
printf(“请输入要删除学生的学号:->”);
int ID;
scanf("%d", &ID);
if (tmp->ID == ID)
{
p = *head;
*head = p->next;
printf(“删除成功\n”);
return;
}
q = tmp;
tmp = tmp->next;
while (tmp)
{
if (tmp->ID == ID)
{
q->next = tmp->next;
free(tmp);
tmp = NULL;
printf(“删除成功\n”);
return;
}
q = tmp;
tmp = tmp->next;
}
if (!tmp)
{
printf(“没有该成员\n”);
return;
}
}
void ShowList(Link head)
{
if (!head)
{
printf(“没有成员\n”);
return;
}
Link cur = head;
while (cur)
{
printf("\n姓名:%s\t", cur->name);
printf(“年龄:%5d\t”, cur->age);
printf(“性别:%5s\t”, cur->sex);
printf(“ID:%5d\n”, cur->ID);
cur = cur->next;
}
}
void SearchList(Link head)
{
int ID;
printf(“请输入要查找学生的学号;->”);
scanf("%d", &ID);
Link cur = head;
while (cur)
{
if (!head)
{
printf(“没有成员\n”);
return;
}
if (cur->ID == ID)
{
printf("\n姓名:%s\t", cur->name);
printf(“年龄:%5d\t”, cur->age);
printf(“性别:%5s\t”, cur->sex);
printf(“ID:%5d\n”, cur->ID);
return;
}
cur = cur->next;
}
if (!cur)
{
printf(“没有该学生\n”);
return;
}
}
void InsertList(Link head)
{
int x = 0; int flag = 1; Link tmp = head;
printf(“请输入要插入的位点:->”);
scanf("%d", &x);
Link newnode = (Link)malloc(sizeof(Student));
printf(“请输入姓名:->”);
char name[20];
scanf("%s", name);
printf(“请输入年龄:->”);
int age;
scanf("%d", &age);
printf(“请输入性别:->”);
char sex[10];
scanf("%s", sex);
printf(“请输入ID:->”);
int ID;
scanf("%d", &ID);
newnode = BuyListNode(name, age, sex, ID);
if (!newnode)
{
printf(“添加失败\n”);
return;
}
if (x == 1)
{
newnode->next = tmp->next;
tmp->next = newnode;
printf(“插入成功\n”);
return;
}
while (++flag)
{
if (x == flag)
{
newnode->next = tmp->next;
tmp->next = newnode;
printf(“插入成功\n”);
return;
}
}
}

void menu()
{
printf(“请输入你要执行的操作\n”);
printf(“\n");
printf("*****1.添加 2.删除 *****\n");
printf("*****3.查找 4.显示 ****\n");
printf("5.插入 0.退出
\n");
printf("
\n”);
}
int main()
{
int input = 0;
Link head;
InitialLink(&head);
do
{
menu();
printf(“请选择->”);
scanf("%d", &input);
switch (input)
{
case 1:
AddList(&head);
break;
case 2:
DeletList(&head);
break;
case 3:
SearchList(head);
break;
case 4:
ShowList(head);
break;
case 5:
InsertList(head);
break;
case 0:
break;
default:
printf(“选择错误\n”);
break;
}
} while (input);
return 0;
}

运行图如下:
添加学生:在这里插入图片描述

显示学生信息:在这里插入图片描述

插入一个学生信息:在这里插入图片描述

删除一个学生信息:在这里插入图片描述
这是大一的一个实验数据,十分的简单易懂(亲测)😏👍,界面可以自己更改哦 !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值