C/C++编程笔记:C语言成绩管理系统,链式结构体管理系统源码分享

本文分享了如何使用C语言基于链式结构实现学生成绩管理系统的源码,强调链表在管理系统中的核心作用。通过阅读,读者可以理解链式结构在管理系统中的应用,并提供singleList.h文件的关键代码作为参考。
摘要由CSDN通过智能技术生成

最近很多同学因为学校的要求,需要完成自己的那个C语言课程设计,于是就有很多人私信或者加我私聊我,问的最多的还是《学生成绩管理系统》,其实当你项目写多了你就会发现:其实各类的管理系统都离不开一个核心——链表!

是的,不管是你想要写学生成绩管理系统,宿舍管理系统、火车票管理系统亦或者还是旅游管理系统等等,都需要用的到我们的链式结构来写,那么今天呢,我们就来看看如何利用C语言链式管理系统应该如何来写!

本期分享并不是直接教大家写这个学生成绩管理系统,而是以这个为线头,引出我们的大学项目类管理系统核心——链式结构。

话不多说,我们接下来就来看看我们的本文核心——链式结构管理系统的核心源码吧!让你做到:一表在手,系统我有!

源码献上

先来看看我们的singleList.h文件的代码,这个文件实际上也就是对我们的数据进行具体的操作,当然,核心还是我们的链式结构:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct MM
{
   
	char name[20];
	int age;
	int num;
	char addr[20];
};
struct Node
{
   
	//int data;
	struct MM data;
	struct Node* next;
};
//所有涉及到数据的地方都要改
struct Node* createHead()
{
   
	struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
	headNode->next = NULL;
	return headNode;
}
struct Node* createNode(struct MM  data)
{
   
	struct Node * newNode = (struct Node*)malloc(sizeof(struct Node));
	newNode->data = data;
	newNode->next = NULL;
	return newNode;
}
void insertByHead(struct Node* headNode, struct MM data)
{
   
	struct Node* newNode = createNode(data);
	newNode->next = headNode->next;
	headNode->next = newNode;
}
//按查找浏览
void searchAllInfo(struct Node* headNode, char *name)
{
   
	struct Node* pMove = headNode->next;
	while (pMove != NULL)
	{
   
		//!strcmp(pMove->data.name,name)条件可以改为
		//strcmp(pMove->data.name,name)==0
		//!:否定  真变假 ,假变真
		//!-1等于0
		//计算机中非零表示成立
		if (!strcmp(pMove->data.name, name))
			printf("%s\t%d\t%d\t%s\n", pMove->data.name, pMove->data.age, pMove->data.num, pMove->data.addr);
		pMove = pMove->next;
	}
}
//按姓名查找
struct Node* searchInfo(struct Node* headNode, char *name)
{
   
	struct Node* pMove = headNode->next;
	while (pMove != NULL&&strcmp(pMove->data.name, name))
	{
   
		pMove = pMove->next;
	}
	return pMove;		//返回NULL没有找到
}

//改为按照姓名的方式
//删除一个方式
void deleteByAppoin(struct Node* headNode, char *name)
{
   
	struct Node* posNodeLeft = headNode;
	struct Node* posNode = headNode->next;
	//字符串比较+数据剥洋葱
	while (posNode != NULL&&strcmp(posNode->data.name ,name))
	{
   
		posNodeLeft = posNode;
		posNode = posNodeLeft->next;
	}
	if (posNode == NULL)
	{
   
		printf("未找到指定位置,无法删除!\n");
	}
	else
	{
   
		posNodeLeft->next =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值