C语言项目实战学生管理系统(5)

举报
yd_274589494 发表于 2023/07/22 09:49:23 2023/07/22
【摘要】 @TOC 前言本文我们介绍如何在指定的位置添加学生的信息,还有main函数里面相关函数调用我们也展示给大家。 一、指定位置添加学生信息在指定位置添加学生的信息首先要得到指定的位置。这个时候我们采用之前学的查找函数查找到我们想要的位置,然后把得到的位置当成参数传入函数,若指定位置在尾节点处那么就和前面我们所讲尾添加是一样的操作。如果不在尾节点处而是在中间位置那么我们就得按照下面方法插入。//指...

@TOC

前言

本文我们介绍如何在指定的位置添加学生的信息,还有main函数里面相关函数调用我们也展示给大家。

一、指定位置添加学生信息

在指定位置添加学生的信息首先要得到指定的位置。
这个时候我们采用之前学的查找函数查找到我们想要的位置,然后把得到的位置当成参数传入函数,若指定位置在尾节点处那么就和前面我们所讲尾添加是一样的操作。
如果不在尾节点处而是在中间位置那么我们就得按照下面方法插入。

//指定位置插入节点
void insertnote(STUNODE*Ptemp, char arrStunum[10], char arrStuname[10], int iStuSorce)
{
	//创建节点
	STUNODE*Pnewtemp = malloc(sizeof(STUNODE));
	strcpy(Pnewtemp->arrStuname, arrStuname);
	strcpy(Pnewtemp->arrStunum, arrStunum);
	Pnewtemp->iStuSorce = iStuSorce;
	Pnewtemp->pNext = NULL;
	if (Ptemp == g_pEnd) //指定节点为尾节点
	{
		g_pEnd->pNext = Pnewtemp;
		g_pEnd = Pnewtemp;
	}
	else
	{
		Pnewtemp->pNext = Ptemp->pNext; //先让指定位置下一个节点和插入节点连上
		Ptemp->pNext = Pnewtemp;  
	}
}

二、main函数里面的函数调用

在主函数里面我们主要是进行一些参数的初始化以及使用switch case结构进行命令的使用。

int main(void)
{
	int norder = -1;
	char arrStunum[10] = { '\0' };
	char arrStuname[10]= { '\0' };
	int iStuSorce=-1;
	char nflag = 1;
	char xorder = 0;
	STUNODE *Ptemp = NULL;

	showorder();

	//读取学生信息
	readstuformfile();
	while (nflag)
	{
		printf("请输入指令:\n");
		scanf_s("%d", &norder);

		switch (norder)
	   {
		case 1://头添加
			//添加一个学生信息
			printf("输入学号:");
			scanf("%s", arrStunum);
			printf("输入姓名:");
			scanf("%s", arrStuname);
			printf("输入分数:");
			scanf("%d", &iStuSorce);
			AddstuMSG(arrStunum, arrStuname, iStuSorce);
			break;
		case 11://尾添加
			//添加一个学生信息
			printf("输入学号:");
			scanf("%s", arrStunum);
			printf("输入姓名:");
			scanf("%s", arrStuname);
			printf("输入分数:");
			scanf("%d", &iStuSorce);
			AddstuMSGtolinkhead(arrStunum, arrStuname, iStuSorce);
			break;
		case 12://中间添加
			printf("输入指定学号:");
			scanf("%s", arrStunum);
			Ptemp = Findstunum(arrStunum); //将找到的节点传递给Ptemp
			if (NULL != Ptemp)
			{
				//TODO:插入
				//添加一个学生信息
				printf("输入学号:");
				scanf("%s", arrStunum);
				printf("输入姓名:");
				scanf("%s", arrStuname);
				printf("输入分数:");
				scanf("%d", &iStuSorce);
				insertnote(Ptemp, arrStunum, arrStuname, iStuSorce);
			}
			break;
		case 2://打印指定学生信息
			//输入一个学号
			printf("输入指定学号:\n");
			scanf("%s",arrStunum);
			//查找
			Ptemp = Findstunum(arrStunum);
			//打印
			if (NULL != Ptemp)
			{
				printf("学号:%s,分数:%d,姓名:%s\n",Ptemp->arrStunum, Ptemp->iStuSorce, Ptemp->arrStuname);
			}
			break;
		case 3://修改指定学生信息
			//输入一个学号
			printf("输入指定学号:\n");
			scanf("%s", arrStunum);
			//查找
			Ptemp = Findstunum(arrStunum);
			//修改
			if (NULL != Ptemp)
			{
				printf("修改学号按:%d 修改姓名按:%d 修改分数按:%d 退出修改按%d\n", 1, 2, 3,0);
				while (scanf("%d", &xorder)&&xorder!=0)
				{
					switch (xorder)
					{
					case 1:
						//修改学号
						printf("输入学号:");
						scanf("%s", arrStunum);
						strcpy(Ptemp->arrStunum, arrStunum);
						break;
					case 2:
						//修改姓名
						printf("输入姓名:");
						scanf("%s", arrStuname);
						strcpy(Ptemp->arrStuname, arrStuname);
						break;
					case 3:
						//修改分数
						printf("输入分数:");
						scanf("%d", &iStuSorce);
						Ptemp->iStuSorce = iStuSorce;
						break;
					}
				}
			}
			printf("修改完成!\n");
			break;
		case 6://删除指定学生信息
			//输入一个学号
			printf("输入要删除学生学号:\n");
			scanf("%s", arrStunum);
			//查找
			Ptemp = Findstunum(arrStunum);
			//删除
			if (NULL != Ptemp)
			{
				//删除指定学生
				delectstunode(Ptemp);
				printf("删除完成!\n");
			}
			break;
		case 7://恢复学生信息
			//释放链表
			FreeLinkDate();
			//恢复学生信息
			readstuformfile();
			break;
		case 4://保存学生信息
			savestutofile();
			printf("保存完成!\n");
			break;
		case 9:
			//显示链表信息
			showdate();
			break;
		case 10:
			//显示指令
			showorder();
			break;
		case 0:
			//退出系统
			nflag = 0;
			break;
		default:
			printf("输入的指令不对!\n");
			break;
	   }
	}
	
	//保存学生信息
	savestutofile();

	//清空链表
	FreeLinkDate();
	return 0;
}

总结

学了这么多大家应该发现了学生管理系统主要就是链表的添加、遍历、查找这些操作了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。