前言
学生管理系统的添加学生
提示:以下是本篇文章正文内容,下面案例可供参考
原理
我们的学生管理系统是基于链表来实现的,本节课是针对尾添加来讲解的。
链表图:
二、学生管理系统界面
while (1) { //3. system("cls");//清空屏幕 //学生管理系统界面 printf("*******************学生信息管理系统*********************\n"); printf("*******************本系统操作指令如下*******************\n"); printf("*** 1、 增加一个学生信息 ***\n"); printf("*** 2、 增加一个学生信息(在指定位置添加) ***\n"); printf("*** 3、 查找指定学生的信息(姓名/学号) ***\n"); printf("*** 4、 修改指定学生的信息 ***\n"); printf("*** 5、 删除指定学生的信息 ***\n"); printf("*** 6、 显示所有学生的信息 ***\n"); printf("*** 0、 退出系统 ***\n"); printf("********************************************************\n"); //输入 int a; scanf_s("%d", &a); //switch switch (a) { case 1://添加一个学生 addstudent(); break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 0://退出系统 return 0; break; default://输入错误 printf("输入有解,请重新输入!!!"); } }
实现功能
定义一个学生结构体
struct Node//学生结构体 { int stuID;//学号 char name[15];//学生名字 int fraction;//学生分数 struct Node* pNext;//指向下一个节点的指针 };
里面的成员可以自己定义
因为是尾添加的链表,所以要有指向下一个节点的指针。
定义头尾指针
意义:为了后面的遍历
//设置头尾指针 struct Node* pHead = NULL;//指向NULL,因为现在还没有节点 struct Node* pEnd = NULL;//指向NULL,因为现在还没有节点
实现功能0和1
0.
在case 0:后面加return 0;
1.添加一个学生
(1)添加学生就需要输入学生的信息:
int ID_;//学号 char name_[15];//名字 int fraction_;//学生分数 printf("请输入学号:"); scanf_s("%d", &ID_); printf("请输入名字:"); scanf_s("%s", name_,15); printf("请输入分数:"); scanf_s("%d", &fraction_);
2)但是没有学生节点 所以需要创建一个学生节点
//创建学生节点 struct Node* Temp = (struct Node*)malloc(sizeof(struct Node));
使用malloc申请空间
(3)但是你输入后还要添加到学生节点中
//初始化学生节点变量 strcpy(Temp->name, name_); Temp->fraction = fraction_; Temp->stuID = ID_; Temp->pNext = NULL;
切记:字符串的赋值一定要用strcpy()
pNext可以指向NULL,也可以不指向(不指向他也是NULL)
(4.)节点指针初始化
//节点指针初始化 if (pHead == NULL) { //头尾指向他 pHead = Temp; pEnd = Temp; } else { //向后移动 pEnd->pNext = Temp; //尾指向他 pEnd = Temp; }
图1:
图2:
写上提示:
printf("添加成功!!!"); Sleep(1000);
测试:
总结
本节课是添加学生的一个学习