基于顺序表的学生成绩管理系统

🌈 个人主页:白子寰
🔥 分类专栏:python从入门到精通,魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~
💡 坚持创作博文(平均质量分81+),分享更多关于深度学习、C/C++,python领域的优质内容!(希望得到您的关注~) 

 

注:
学生成绩管理系统(语法)简单实现icon-default.png?t=N7T8http://t.csdnimg.cn/DDppq该篇是基于数据结构顺序表的学生管理系统👇

gitee链接:基于数据结构顺序表的学生管理系统icon-default.png?t=N7T8https://gitee.com/mei-tianbu/stay-up-late-coding

目录

目的

 效果呈现

①学生数据添加

②查看学生数据 

​编辑

③删除及查看

代码的具体实现

一.在测试文件(StuScoreTest.c)框架构建

学生管理系统框架代码实现

二.在头文件(StuScore.h)定义学生管理系统的相关函数

三.在文件(StuScore.c)具体实现学生数据的增删查改

学生管理系统的初始化和销毁代码具体实现

学生增删查找的具体实现 

学生数据添加代码具体实现

利用学生姓名寻找学生相关数据代码具体实现

 学生数据删除具体实现

修改学生数据的具体实现

学生数据的完整查看具体实现

一个学生相关数据的查看具体实现


 

目的

针对学生信息(学号,姓名,性别,英语、数学、数据结构成绩、简介)进行

操作(添加、删除、修改、查找个人、查找全部)信息


 

 效果呈现

①学生数据添加

②查看学生数据 

③修改和查看

 

③删除及查看


 

代码的具体实现

一.在测试文件(StuScoreTest.c)框架构建

1.先基于顺序表的初始化学生管理系统

2.主函数学生管理系统利用在do...while...语句中包含switch...case..语句实现学生数据的增删查改操作的框架

3.再基于顺序表的销毁学生管理系统

学生管理系统框架代码实现

int main()
{int op = -1;Stu con;//初始化学生管理系统STUCS(&con);do {menu();printf("请选择你的操作:");scanf("%d", &op);switch (op){case 1://添加学生数据stuscoreadd(&con);break;case 2://删除学生数据stuscoredel(&con);break; case 3://修改学生数据stuscoremodify(&con);break;case 4://查找学生数据stuscorefind(&con);break;case 5://查看完整学生数据stuscoreshow(&con);break;case 0:printf("成功退出系统\n");break;default:printf("选择错误,请重新选择\n");}} while (op != 0);//销毁学生管理系统STUdestroy(&con);return 0;
}

 


二.在头文件(StuScore.h)定义学生管理系统的相关函数

1.创建(学生相关数据类型)结构体和顺序表的前置声明

#pragma once#define MAX_NAME 100//(学生相关数据类型)结构体
typedef struct stuscore
{int id;//学号char name[MAX_NAME];//姓名char sex[5];//性别float EngScore;//英语float MathScore;//数学float DatastrScore;//数据结构char StudentProfile[1000];
}Stu;//顺序表的前置声明
struct shunxu;typedef struct shunxu stu;

2.定义学生管理系统的初始化和销毁,增添查改函数

//学生管理系统的初始化和销毁
void STUCS(stu* pcon);
void STUdestroy(stu* pcon);//添加,删除,修改,查找,查找全部
void stuscoreadd(stu* pcon);
void stuscoredel(stu* pcon); 
void stuscoremodify(stu* pcon);
void stuscorefind(stu* pcon);
void stuscoreshow(stu* pcon);

 

三.在文件(StuScore.c)具体实现学生数据的增删查改

1.学生管理系统的初始化和销毁(调用顺序表中的初始化和销毁)

调用代码

//初始化
void CS(SX* ps)
{//具体arr,size,nowsize具体的值不知道是多少,所以初始化为NULL,0ps->arr = NULL;ps->size = ps->nowsize = 0;
}//销毁
void SXdestroy(SX* ps)
{//保证指针有效assert(ps);if (ps->arr){free(ps->arr);}ps->arr = NULL;ps->size = ps->nowsize = 0;
}

学生管理系统的初始化和销毁代码具体实现

//学生管理系统的初始化和销毁
void STUCS(stu* pcon)
{CS(pcon);
}void STUdestroy(stu* pcon)
{SXdestroy(pcon);
}

 

学生增删查找的具体实现 

2.学生数据的添加

①输入学生数据保存在结构体变量

②使用.访问结构体成员输入学生的数据(学号,姓名,性别,英语、数学、数据结构成绩、简介)

③基于顺序表的尾插将学生数据保存在学生管理系统里去

调用顺序表的尾部插入数据

//顺序表的尾插
void CHARUback(SX* ps, datatype x)
{//方式一:断言 -- 暴力方式 --会报错且知道具体错误位置assert(ps);//方式二:断言 -- 温柔方式--会报错,不知道具体错误位置/*if (ps == NULL){return;}*///空间不够,扩容publicKUOR(ps);//空间足够,直接插入/*第一种写法*///ps->arr[ps->size] = x;//ps->size++;/*第二种写法*/ps->arr[ps->size++] = x;}
学生数据添加代码具体实现
//添加学生数据
void stuscoreadd(stu* pcon)
{Stu stu;printf("请输入学生学号:\n");scanf("%d", &stu.id);	printf("请输入学生姓名:\n");scanf("%s", stu.name);printf("请输入学生性别:\n");scanf("%s", stu.sex);printf("请输入学生英语成绩:\n");scanf("%f", &stu.EngScore);printf("请输入学生数学成绩:\n");scanf("%f", &stu.MathScore);printf("请输入学生数据结构成绩:\n");scanf("%f", &stu.DatastrScore);printf("请输入学生个人简介:\n");scanf("%s", stu.StudentProfile);//保存到学生管理系统:尾插CHARUback(pcon, stu);
}

3.利用学生姓名寻找学生相关数据,若找到返回下标,找不到,返回-1

使用strcmp进行字符串之间的比较进而实现学生姓名的查找

利用学生姓名寻找学生相关数据代码具体实现
//寻找学生名字,找到返回下标,没找到,返回-1
int findname(stu* pcon, char name[])
{for (int i = 0; i < pcon->size; i++){if (strcmp(pcon->arr[i].name, name) == 0) {return i;//找到了}}return -1;
}

4.学生数据删除

①利用寻找学生姓名删除该生的相关数据

若找到该生姓名,调用顺序表的删除进而删除该生的相关数据

若找不到该生姓名,直接返回

②调用顺序表的删除进而删除学生的相关数据

调用代码

//删除指定位置数据
void SXpointdestroy(SX* ps, int pos)
{//判断ps是否为有效指针assert(ps);//断言,保证下标pos>=0且pos小于顺序表空间大小sizeassert(pos >= 0 && pos < ps->size);for (int i = pos; i < ps->size - 1; i++){ps->arr[i] = ps->arr[i + 1];}ps->size--;
}
 学生数据删除具体实现
//学生数据删除
void stuscoredel(stu* pcon)
{printf("请输入要删除的学生姓名:");char name [MAX_NAME];scanf("%s", name);int findIndex = findname(pcon, name);if (findIndex < 0){printf("要删除的学生不存在!\n");return;}SXpointdestroy(pcon, findIndex);printf("该生相关数据删除成功!!!\n");
}

5.修改学生数据

利用寻找学生姓名修改该生的相关数据

若找到该生姓名,利用指针修改该生的相关数据

若找不到该生姓名,直接返回

修改学生数据的具体实现
//学生数据的修改
void stuscoremodify(stu* pcon)
{char name[MAX_NAME];printf("请输入要修改的学生姓名:");scanf("%s", name);int findIndex = findname(pcon, name);if (findIndex < 0){printf("要找的该生相关数据不存在!\n");return;}printf("请输入要修改的学生学号:\n");scanf("%d", &pcon->arr[findIndex].id);printf("请输入要修改的学生姓名:\n");scanf("%s", pcon->arr[findIndex].name);printf("请输入要修改的学生性别:\n");scanf("%s", pcon->arr[findIndex].sex);printf("请输入要修改的学生英语成绩:\n");scanf("%f", &pcon->arr[findIndex].EngScore);printf("请输入要修改的学生数学成绩:\n");scanf("%f", &pcon->arr[findIndex].MathScore);printf("请输入要修改的学生数据结构成绩:\n");scanf("%f", &pcon->arr[findIndex].DatastrScore);printf("请输入要修改的学生个人简介:\n");scanf("%s", pcon->arr[findIndex].StudentProfile);printf("修改学生相关数据成功!!!\n");
}

6.学生数据的完整查看

使用for循环指针访问结构体成员输出全部学生的相关数据

学生数据的完整查看具体实现
//学生完整数据查看
void stuscoreshow(stu* pcon)
{for (int i = 0; i < pcon->size; i++){printf("学生学号:%d\n",pcon->arr[i].id);printf("学生姓名:%s\n", pcon->arr[i].name);printf("学生性别:%s\n", pcon->arr[i].sex);printf("学生英语成绩:%.2f\n", pcon->arr[i].EngScore);printf("学生数学成绩:%.2f\n", pcon->arr[i].MathScore);printf("学生数据结构成绩:%.2f\n", pcon->arr[i].DatastrScore);printf("学生个人简介:%s\n", pcon->arr[i].StudentProfile);}
}

7.一个学生相关数据的查看

利用寻找学生姓名打印该生的相关数据

若找到该生姓名,利用指针打印该生的相关数据

若找不到该生姓名,直接返回

一个学生相关数据的查看具体实现
//学生相关数据查看
void stuscorefind(stu* pcon)
{char name[MAX_NAME];printf("请输入要查找的学生姓名:\n");scanf("%s", name);int findIndex = findname(pcon, name);if (findIndex < 0){printf("查找到学生相关数据不存在!!!\n");return;}//找到了,打印学生相关数据printf("学生学号:%d\n", pcon->arr[findIndex].id);printf("学生姓名:%s\n", pcon->arr[findIndex].name);printf("学生性别:%s\n", pcon->arr[findIndex].sex);printf("学生英语成绩:%.2f\n", pcon->arr[findIndex].EngScore);printf("学生数学成绩:%.2f\n", pcon->arr[findIndex].MathScore);printf("学生数据结构成绩:%.2f\n", pcon->arr[findIndex].DatastrScore);printf("学生个人简介:%s\n", pcon->arr[findIndex].StudentProfile);
}

 


 ***********************************************************分割线*****************************************************************************
完结!!!

感谢浏览和阅读。
等等等等一下,分享最近喜欢的一句话:

“道阻且长,行则将至”。

我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!! 
好了划走吧。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/591586.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty经典32连问

文章目录 1、Netty是什么&#xff0c;它的主要特点是什么&#xff1f;2、Netty 应用场景了解么&#xff1f;3、Netty 核心组件有哪些&#xff1f;分别有什么作用&#xff1f;4、Netty的线程模型是怎样的&#xff1f;如何优化性能&#xff1f;5、EventloopGroup了解么?和 Event…

实操:driver.js 实现产品导览、亮点、上下文帮助

官网 https://driverjs.com/ 依赖 <script src"https://cdn.jsdelivr.net/npm/driver.js1.0.1/dist/driver.js.iife.js"></script> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/driver.js1.0.1/dist/driver.css"/…

前端三剑客 —— CSS (第二节)

目录 内容回顾&#xff1a; CSS选择器*** 属性选择器 伪类选择器 1&#xff09;:link 超链接点击之前 2&#xff09;:visited 超链接点击之后 3&#xff09;:hover 鼠标悬停在某个标签上时 4&#xff09;:active 鼠标点击某个标签时&#xff0c;但没有松开 5&#xff09;:fo…

AI绘图:Stable Diffusion WEB UI 详细操作介绍:进阶-面部修复和调参

结合两篇文章完成了本地部署和基础操作,现在我们来介绍下进阶内容:面部修复,高清修复和调参区。 一:脸部修复 面部修复的适用在画真人、三次元的场景,特别是在画全身的时候 一般在画全身,由于脸部占比的空间比较小,那么绘制出来的效果就会比较差 1.面部修复 SD 支持…

装饰工程管理系统|基于Springboot的装饰工程管理系统设计与实现(源码+数据库+文档)

装饰工程管理系统-项目立项子系统目录 目录 基于Springboot的装饰工程管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 &#xff08;2&#xff09;合同报价管理 &#xff08;3&#xff09;装饰材料总计划管理 &#xff08;4&#xff0…

linux虚拟机上安装,使用以及远程连接mysql

1. 安装mysql 5.7 1) 首先更新软件源 sudo apt-get update 2) 安装MySQL数据库软件 ​ sudo apt-get install mysql-server 3) 安装MySQL数据库管理软件​ sudo apt-get install mysql-client 4) 安装MySQL数据库客户端&#xff0c;用户访问数据库 sudo apt-get install…

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

前言【Unity 实用工具篇】| Unity 实现背景模糊效果,简单易用一、实现背景模糊效果1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍2.1 导入下载好的资源2.2 功能介绍2.2.1 捕获特效2.2.2 高级选项

【漏洞复现】用友NC cloud importhttpscer 存在任意文件上传

0x01 阅读须知 “如棠安全的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供…

算法基础 - 并查集

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 算法 - 并查集前言Quick FindQuick Union加权 Quick Union路径压缩的加权 Quick Union比较&#x1f604;总结 算法 - 并查集 前言 用于解决动态连通性问题&#xff0c;能动态连接两个点&#xff0c;并且判断两个点是否连…

php基于PHP的网上订餐系统的设计与开发

摘 要 快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;通过线上管理订餐也就相继涌现。与此同时&#xff0c;人们开始接受方便的生…

四川尚熠电子商务有限公司靠谱吗?怎么样?

在当下数字化浪潮中&#xff0c;电子商务行业正以前所未有的速度蓬勃发展。四川尚熠电子商务有限公司&#xff0c;作为专注于抖音电商服务的企业&#xff0c;凭借其敏锐的市场洞察力和创新精神&#xff0c;正成为行业内的佼佼者&#xff0c;为众多品牌打开抖音电商市场的大门。…

SpringBoot登录校验(四)过滤器Filter

JWT令牌生成后&#xff0c;客户端发的请求头中会带有JWT令牌&#xff0c;服务端需要校验每个请求的令牌&#xff0c;如果在每个controller方法中添加校验模块&#xff0c;则十分复杂且冗余&#xff0c;所以引入统一拦截模块&#xff0c;将请求拦截下来并做校验&#xff0c;这块…