基于c语言的学生学籍管理系统

简介: 基于c语言的学生学籍管理系统

系统需求分析


1.1 设计目的


(1)体验面向对象的编程思想,了解封装,继承,多态的基本思想。

(2)熟练运用文件操作,函数定义与使用,头文件引入,数组,类,循环结构,选择结构,判断结构等基本工具进行架构。

(3)体会开发流程,明白各个开发环节的意义以及作用。


1.2 需求分析


(1)学生学籍管理系统实现用户基本对数据操作的功能有:学生信息的录入、浏览、分类、排序、查询、统计、删除、修改、清空功能。还要求可以读写学生信息文件,以及实现退出功能。为与用户交互,功能需要以菜单方式工作,供用户选择


1.3 用户需求


(1)学生学籍信息读写文件功能;

(2)学生学籍信息录入功能;

(3)学生学籍信息浏览、分类、排序功能;

(4)学生学籍信息查询、统计功能;

(5)学生学籍信息删除功能;

(6)学生学籍信息修改功能;

(7)学生学籍信息清空功能;


2 系统总体设计


针对一般学生学籍管理系统的需求,通过对学生信息内容的分析,设计如图 2.1 所示的数据结构:


2.1 数据结构

2c5b184f6195a0f502d390e76dda41a5.jpg



图 2.1 数据结构

2.2 系统功能模块设计

根据实际需求和整体设计,可以将系统功能分为以下模块:


66140c092f1d3ba5d44509936e17f742.jpg


图 2.2 系统功能结构图


通过在需求阶段对系统的总体功能的要求,我们得到了这个学生学籍管理系统的总体功能结构,它应包括以下几大基本功能:


(1)菜单功能实现:系统显示菜单界面与用户形成交互。


(2)退出功能:用户输入指定数字实现退出功能。


(3)添加学生:选择功能后,系统给出提示,进行操作添加。


(4)显示学生:将文件中所有的学生信息显示出来。


(5)删除学生:按照学号删除学生信息。


(6)查找学生:根据学号查找学生信息。


(7)修改学生信息:按照学号找到学生后对学生信息进行修改。


(8)按学号排序:根据学号对学生进行排序。


(9)按年级分类查看:按照年级显示学生信息。


(10)清空数据:清空文件里所有学生数据。



3 系统详细设计

3.1 设计思想


(1)将管理操作类封装:对信息操作的函数、记录学生人数的变量、存储学生信息的指针数组进行封装。类内成员包括:记录人数的变量、学生的指针数组,构造函数、显示菜单、添加学生、退出程序、保存文件、文件是否为空的标志、统计人数、初始化、显示学生、删除学生、判断学生是否存在、查找学生、修改学生、按学号排序、清空数据、按年级分类显示、析构函数 。


(2)将学生信息类封装:对学生信息,包括类内自带的显示信息,年级的成员函数封装。类内包括成员:显示个人信息的成员函数、获取年级名称的成员函数、学号、姓名、性别、年级编号、班级、年龄等属性。


3.2 程序内部结构


7ae3ce4e0d0716363cd05cac9932dafd.jpg


图 3.2 程序内部结构图


3.3 设计流程


(1)创建学生类

先创建学生类作为父类,然后定义各种成员属性,类内包含显示年级函数和显示自身信息函数。子类继承学生抽象类,并重写父类中的重虚函数 分别继承出,大一,大二,大三,大四,四个子类。


(2)创建管理类


管理类负责的内容如下:提供与用户的沟通菜单界面、实现对职工增删改查的操作、数组数据与文件的读写交互。


(3)菜单功能实现


在 StudentManager.h 中定义 ShowMenu()函数在 StudentManager.cpp 中实现显示菜单功能,便于与用户交互,利用序号将所有功能显示出来,便于用户选择以及,进行后期的使用。在 main 函数中为管理操作的函数提供接口,创建实例对象,调用对象内成员函数。


(4)退出功能


在 StudentManager.h 中定义 Exit_System();函数在 StudentManager.cpp 中实现函数功能,利用 exit(0);实现程序的退出操作。


(5)添加学生


在 StudentManager.h 中添加属性以及成员函数。根据学生的人数加上添加后的人数,开辟一块新的空间记录数据。系统整体利用指针数组实现数据的临时保存,最终与文件的操作配合使用,使数据转存到文件中。在 StudentManager.cpp 中构造函数中初始化。在 StudentManager.cpp 中实现成员函数。


(6)保存文件


读取当前的指针数组,然后将数组元素存入文件中。


(7)初始化学生


在初始化学生之前,要判断学生文件状态,分为三种情况: 第一次使用文件未创建。 文件存在,但是为空文件。 文件和数据正常存在.


首先在 StudentManager.h 中添加标志文件是否为空的标志,若为空文件,或者文件不存在,则该 bool 类型的值返回 true,修改 StudentManager.cpp 中的构造函数代码,如果文件不存在,则初始化文件,文件不存在,或者为空的情况下,判断文件是否为空的标志都为真,成功添加学生信息后更改文件不为空,初始化文件,初始化 Student* 类型的指针数组,将 Student 类型的地址存到 Student*中,在 StudentManager.cpp 中实现。


(8)显示学生


基本思想就是遍历输出,按照需求可以按照不同的条件显示。


(9)删除学生


删除学生之前判断其是否存在,如果为空或者不存在,返回-1,如果存在,返回其下标,在 StudentManager.cpp 中实现,根据成员属性匹配的到数组的下标,便于后续索引类型的操作进行删除,实现按照学号删除。


(10)查找学生


按照学生编号,按照学生姓名,通过遍历加判断的方式查找。


(11)修改学生信息


按照编号对职工信息保存修改,利用 IsExist 函数获取学生数组元素下标,然后对应进行修改,记录保存。


(12)按学号排序


排序采用冒泡排序,前后两两比较,根据排序要求进行交换元素位置,达到排序目的。


(13)按年级分类查看


遍历数组,匹配相应年级相应代码,然后输出每个年级下面的学生分类。


(14)清空数据


首先确认是否清空,然后打开文件,打开模式 ios::trunc 就是如果存在删除文件并重新创建,关闭文件,判断,如果指针数组不为空,那么将里面的指针释放干净,成员个数更新为零,将指针数组置为空,更新文件为空的标志。


3.4 开发流程


57159171ffab278cb3f878eb5f8104c6.jpg



图 3.4 开发流程图


4 编码实现


完整代码:https://download.csdn.net/download/weixin_55771290/87394070

相关文章
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
308 4
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
1656 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
752 12
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
551 0
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
517 1
|
人工智能 安全 算法
基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。
本文深入探讨了基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。C语言因其高效、可移植、灵活及成熟度高等特点,在嵌入式系统开发中占据重要地位。文章还介绍了从系统需求分析到部署维护的完整开发流程,以及中断处理、内存管理等关键技术,并展望了嵌入式系统在物联网和人工智能领域的未来发展。
810 1
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别?
pymalloc 和系统的 malloc 有什么区别?
226 2
|
存储 编译器 C语言
【C语言】学生管理系统:完整模拟与实现(一)
【C语言】学生管理系统:完整模拟与实现
391 1
|
存储 大数据 文件存储
C语言实战 | 用户管理系统重构
【7月更文挑战第3天】在大数据背景下,云存储成为关键。案例展示了如何创建一个用户管理系统,包含登录和注册功能,确保数据持久化。通过文件存储,即便程序重启,用户信息仍能被保留,实现登录状态的延续。代码图片省略。
153 2
C语言实战 | 用户管理系统重构