【C语言期末】基于VS2022的学生成绩管理系统(2)

诚接计算机专业编程任务(C语言、C++、Python、Java、HTML、JavaScript、Vue等)10/15R,如有需要请私信我,或者加我的企鹅号:1404293476

本文资源:https://download.csdn.net/download/weixin_47040861/88737450


1.题目要求

设计题目:学生成绩管理系统

〔问题描述〕学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本项目是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:

  1. 输入学生数据;
  2. 输出学生数据;
  3. 学生数据查询;
  4. 修改学生数据;
  5. 删除学生数据。

〔基本要求〕本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除、排序等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。学生的考试成绩必须通过键盘输入,且需对输出进行格式控制。

2.实现效果

1.菜单

2.添加功能

3.显示功能

4.查询功能

5.修改功能

6.删除功能

7.排序功能

3.实现思路

1.添加函数:inputStudentData()

这个函数是为了方便用户录入学生信息而设计的。当我调用这个函数时,首先会看到一条提示信息,要求我输入学生的信息。接着,我需要提供学生的学号,函数会检查是否已存在相同学号的学生。如果存在,会输出错误信息,要求重新输入。然后,我需要输入学生的姓名、语文成绩、数学成绩和英语成绩。函数会自动计算总成绩,并将新的学生数据添加到学生信息数组中。最后,函数会输出添加成功的提示信息,并暂停程序执行,等待用户按下任意键继续。这个函数的设计旨在简化学生信息的录入过程,确保数据的准确性和唯一性。

2.删除函数:deleteStudentData

这个函数实现了删除学生信息的功能。当调用这个函数时,首先会检查传递给它的参数是否有效,包括学生信息数组 Info 和数组长度 len。接着,函数会要求用户输入要删除的学生信息的学号。

然后,函数会遍历学生数组,查找具有与用户输入学号相匹配的学生信息。如果找到匹配的学生,函数会输出该学生删除前的信息,包括学号、姓名、语文成绩、数学成绩、英语成绩和总成绩。随后,函数会通过将数组中的元素向前移动一个位置,实现删除该学生的信息,并更新数组长度。

如果未找到匹配的学生,函数会输出相应的提示信息。

最后,函数会暂停程序的执行,等待用户按下任意键继续。这个函数的设计目的是提供一种方便的方式,允许用户通过学号定位到要删除的学生信息,并执行删除操作。

3.修改函数:modifyStudentData

这个函数是一个用于修改学生信息的功能。当调用这个函数时,首先会检查传递给它的参数是否有效,包括学生信息数组 Info 和数组长度 len。接着,函数会要求用户输入要修改的学生信息的学号。

然后,函数会遍历学生数组,查找具有与用户输入学号相匹配的学生信息。如果找到匹配的学生,函数会调用 inputStudentData 函数,将修改后的学生信息输入到数组中。这样,实际上是通过重新输入新的学生信息来实现修改操作。

如果未找到匹配的学生,函数会输出相应的提示信息。

最后,函数会暂停程序的执行,等待用户按下任意键继续。这个函数的设计目的是提供一种方便的方式,允许用户通过学号定位到要修改的学生信息,并用新的信息进行更新。

4.查询函数:searchStudentData

这个函数实现了对学生数据的查询功能。调用这个函数时,首先会检查传递给它的参数是否有效,包括学生信息数组 Info 和数组长度 len。接着,函数会调用 searchShow 函数,显示查询选项的信息,让用户选择查询的项。用户输入要查询的编号后,函数会根据不同的查询项(学号、姓名、语文成绩、数学成绩、英语成绩、总成绩)接收用户输入的具体查询值。

然后,函数会遍历学生数组,根据用户选择的查询项进行匹配。如果找到符合条件的学生,函数会输出该学生的详细信息,包括学号、姓名、语文成绩、数学成绩、英语成绩和总成绩。如果未找到符合条件的学生,函数会输出提示信息。

最后,函数会暂停程序的执行,等待用户按下任意键继续。这个函数的设计旨在提供用户友好的学生信息查询功能,允许用户通过不同的查询项查找特定学生的信息。

5.排序函数:sort_info

这一段包含两个函数,一个是 swap 函数,用于交换两个学生信息结构体的内容;另一个是 sort_info 函数,用于根据用户选择的成绩项对学生信息进行排序。

swap 函数

swap 函数实现了两个学生信息结构体的内容交换,它通过引用传递两个结构体指针,将结构体内容进行交换。

sort_info 函数

sort_info 函数根据用户选择的成绩项(语文、数学、英语、总分),使用冒泡排序算法对学生信息进行排序。根据不同的成绩项,调用 swap 函数进行结构体内容的交换。最后,输出排序后的学生信息。

这样的设计使得用户能够选择不同的成绩项进行排序,提供了一种灵活的排序功能。

6.显示函数:outputStudentData

这个函数实现了输出学生信息的功能。当调用这个函数时,它首先检查传递给它的参数是否有效,包括学生信息数组 Info 和数组长度 len。然后,函数会输出表头,包括学号、姓名、语文、数学、英语和总成绩的标题。接下来,它通过循环遍历学生信息数组,逐行输出每个学生的具体信息,包括学号、姓名、语文成绩、数学成绩、英语成绩和总成绩。最后,函数会暂停程序的执行,等待用户按下任意键继续。这个函数的设计目的是清晰地展示整个学生信息,方便用户查看和分析。

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

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

相关文章

探索设计模式的魅力:简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,其主要目的是用于创建对象的实例。这种模式通过封装创建对象的代码来降低客户代码与具体类之间的耦合度。简单工厂不是GoF(四人帮)设计模式之一&#xff0c…

Java合并两个有序链表

思路: 创建一个临时的节点,命名傀儡节点,可以理解成临时的头节点,newHead,list1和list2的两两元素比较,小的连接newHead(升序)newHead的路径(蓝色)就是连接后…

第8章-第4节-Java中字节流的缓冲流

1、缓冲流:属于高级IO流,并不能直接读写数据,需要依赖于基础流。缓冲流的目的是为了提高文件的读写效率?那么是如何提高文件的读写效率的呢? 在内存中设置一个缓冲区,缓冲区的默认大小是8192字节&#xff…

VScode全局搜索屏蔽、显示屏蔽指定文件类型及文件夹

1.键盘上按快捷键“ crtl 逗号 ”启动设置界面 crtl ,设置界面显示如下: 2.搜索屏蔽 2.1.输入 search.exclude search.exclude 设置界面显示如下: 2.2. 点击下图红色箭头“Add Pattern”,添加想要屏蔽的文件类型或文件夹 **/*.git *…

python + selenium 初步实现数据驱动

如果在进行自动化测试的时候将测试数据写在代码中,若测试数据有变,不利于数据的修改和维护。但可以尝试通过将测试数据放到excel文档中来实现测试数据的管理。 示例:本次涉及的项目使用的12306 selenium 重构------三层架构 excel文件数据如…

Java项目:03 基于Springboot的销售培训考评管理系统

项目介绍 企业的销售要进行培训,由技术人员进行辅导并考评检测培训效果,所以有了这个小系统。实现了系统的登录验证、请求拦截验证、基础模块(用户管理、角色管理、销售管理)、业务模块(评分管理、评分结果&#xff0…

使用 Docker 进行 Go 应用程序引导指南

为在 Docker 中部署的 Go 应用程序做准备 在使用 Go 开发 Web 应用程序时,无论是用于 HTTP 还是其他类型的服务,部署到不同的阶段或环境(本地开发、生产环境等)都是一个常见的考虑因素。在本文中,我们将探讨在 Docker …

【Matlab】在Matlab中安装优化工具yalmip的方法

最近博主想做一些关于多目标优化的问题,因为之前对Matlab有一定经验,所以直接在网上查找了如何在Matlab上实现多目标优化的文献,看到有人提到了yamip,于是博主就试着在Matlab中安装yamip,将其中遇到的问题和一些经验和…

21. 合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 [] 输出&#xff1…

【详解】结构体的内存对齐(每步配图)

目录 引言: 为什么存在结构体内存对齐? 结构体内存对齐规则: 练习一: 测试代码: 结果如下: 第二个练习:结构体的嵌套问题 测试代码: 代码结果如下: 两个关于结构体的易错…

WPF实现右键选定TreeViewItem

在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem中实现右键菜单时,往往希望在弹出菜单的同时选中该节点,以使得菜单针对选中的节点生…

Day28 17电话号码的字母组合 39组合求和 40组合求和II

17 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 因为输入的数字的数量是不确定的,所以for循环的次数也是不确定的&…