使用顺序表设计简易学生管理系统——浅学数据结构

前言
学习C语言,会慢慢接触到数据结构,想要较为深入的掌握数据结构,需要经过足够多的实战训练,在这里,向大家分享一下数据结构的学习过程。最终实战是一个学生管理系统,需要的小伙伴在文章最后自取。

首先,什么是数据结构?

书上说,数据结构是相互之间存在一种或多种特定关系的数据元素的集合。是专门为处理非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

听起来好复杂,但是说回来,数据结构实际上是一种处理问题的方法,是一种算法与思维的集合,当然,如果实在不能理解它是什么,那也没关系,作为一种方法,使用才是它的重点。

数据结构与算法伴生,可以说,算法是数据结构的灵魂,好的算法可以起到事半功倍的作用,坏的算法可能让我们在有生之年都无法得到运行结果。数据结构就是为了解决某类问题而规定的一个有限长度的操作序列,能够极大程度上的提高效率,节省存储资源。

接下来,我们去具体的了解一下数据结构的内容

数据结构有三要素:逻辑结构、存储结构以及数据运算。其中,逻辑结构又分为线性结构、树形结构和图形结构。在这里,我们先看线性结构,也是接下来设计学生管理系统的关键。

线性结构是指数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有位唯一的后继。也就是说,在逻辑上是从首到尾依次连接,只要找到首,便可依次遍历结构中的每一个元素。在此基础上,线性结构也可根据存储类型的不同,分为顺序存储和链式存储。在这里我简单介绍一下二者的区别。顺序存储是把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。而链式存储在逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素的指针表示元素之间的逻辑关系。链式存储可以想象成一段堆叠在一起的链条,尽管没办法一眼看出各个节点具体的次序,但是,只要找到链首,必然能找到唯一存在的后继。只要处理的方法得当,不管链条有多长,相邻之间的联系一定是稳固且唯一存在的。

接下来,我们通过实例来理解数据结构中的线性结构。

在具体的项目中,没有任何的算法是可以通用的,优秀的算法也不一定是最合适的,合适的才是最好的。我们先来了解项目需求,再分析使用的方法与步骤。

学生信息管理系统 基本要求:
1.要求实现学生信息的 使用帮助、添加、查找、删除、修改、浏览、退出等功能。

2.要使用结构体来实现对学生信息的存储。

3.学生信息需包括:学号,姓名, 成绩等信息。

4.完成数据的存储与读取,要求每次运行某个功能模块时将数据读入结构体中。

5.系统需提供美观且实用的用户界面。

首先,我们需要存储的对象是学生的各种数据,如姓名,学号,成绩等。因此,想要将每个学生的各种信息存放在一起,我们需要定义一个结构体,用来存储不同的数据类型。

typedef struct STU
{
    char xuehao[20];
    char name[20];
    data_t score;
}stu_t;

通过这个结构体我们可以将一个学生的所有信息作为一个整体存放,在学生和学生之间,也应该存在一个联系。因此,我们可以建立一个顺序表,来串联系统中的所有学生。

建立顺序表

typedef struct  Stu
{
    stu_t data[20];
    int last;
}seqlist;

顺序表的各个节点可以通过结构体来存储,通过结构体数组下标,我们可以轻松找到表中对应的元素。

顺序表具备的基本功能有:

初始化、判空、判满、求表长、插入、删除、查找、修改、清空、销毁、输出等。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值