2022年大作业参考报告-使用C++语言开发小学生成绩管理系统、中学生成绩管理系统、大学生成绩管理系统【240621更新】

背景:

目录

第一章 需求分析    2
1.1    问题描述    2
6.1    功能需求    2
6.2    开发环境    2
6.3    开发过程    2
第二章 概要设计    3
2.1    总体设计    3
2.2    类的定义    3
2.3    接口设计    5
2.4    运行界面设计    6
第三章 详细设计    7
3.1    输入模块设计    7
3.2    查找、编辑模块设计    8
3.3    删除模块设计    8
3.4    文件读写模块设计    9
3.5    显示(含排序)模块设计    10
第四章  测试分析    12
4.1    测试程序执行情况    12
第六章 课程设计总结    13
附录:程序代码    13

第一章 需求分析

1.1问题描述
2学生信息包括:学号、姓名、性别、年龄、班级等信息。
3小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。
4中学生除了包括小学生所有信息外,还包括地理、历史成绩。
5大学生除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。
6设计一程序能够对学生成绩进行管理。

6.1功能需求
(1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(6)统计功能:能根据多种参数进行统计。能统计学生人数、总分、单科的平均分等。
(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
(9)排序功能:可按总分和单科成绩排名次。

6.2开发环境
Code::Blocks是一个免费、开源、跨平台的集成开发环境,使用C++开发,并且使用wxWidgets做为GUI函式库。Code::Blocks使用了外挂程式架构,其功能可以使用外挂程式自由地扩充。目前,Code::Blocks主要针对开发C/C++程式而设计。Code::Blocks目前支援Windows、Linux及Mac OS X数种平台,能够在FreeBSD环境中架设Code::Blocks。
6.3开发过程
第一天  选择课程设计题目,分析课题的要求
第二天  编程
第三天  编程及调试
第四天  写课程设计报告
第五天  提交课程设计报告

第二章概要设计

2.1总体设计

根据需求分析,由于学生种类包括小学生、中学生、大学生,所以设计了三个类(Ele_Student_System /Senior_Student_System /Uni_Student_System),用于封装不同种类的学生信息与成员函数。
其主要功能模块有:
(1)键盘输入
(2)屏幕输出
(3)文件读取
(4)文件写入
(5)统计
(6)排序
(7)编辑
(8)删除
各功能模块的调用应通过菜单进行选取。
为了让程序看起来更简洁明了,一级菜单。

2.2类的定义
由于小学生、中学生、大学生三种不同分类的信息组需要用到的函数大同小异,所以中学生类和大学生类是在小学生类的基础上进行添加与修改的。
    
类定义以小学生类为例展示:

11  class Ele_Student_System

 12  {

 13    private:

 14  

 15    int number;

 16    string name;

 17    int age;

 18    string sex;

 19    string class_info;

 20  

 21    float English;

 22    float Math;

 23    float Chinese;

 24    float Total;

 25  

 26    public:

 27  

 28    //Ele_Student_System();

 29    void Recording();

 30    float Counting_English( int Amount );

 31    float Counting_Math( int Amount );

 32    float Counting_Chinese( int Amount );

 33    void Writting();

 34    void Reading();

 35  

 36    void Sorting_English( int Amount );

 37    void Sorting_Total( int Amount );

 38    void Sorting_Math( int Amount );

 39    void Sorting_Chinese( int Amount );

 40  

 41    void Showing_All();

 42    void Removing();

 43    void Searching( string name, int Amount );

 44    void Searching( int number, int Amount );

 45    void Modifing ( int i );

 46  

 47  };

 48  

 49  Ele_Student_System Student[101];

2.3接口设计 

2.4运行界面设计

第三章 详细设计

3.1输入模块设计

55  void Ele_Student_System :: Recording()

 56  {

 57    int n = Ele_Amount;

 58    char Choice = 'Y';

 59    while ( Choice == 'Y' )

 60    {

 61      cout << " 输入å¦å·: ";

 62      cin >> Student[n].number;

 63      int i = 0;

 64      for ( i=0; i<Ele_Amount; i++ )

 65      {

 66        if ( Student[i].number == Student[n].number )

 67        {

 68          cout << " æ¤å¦å·å·²å˜åœ¨!" << endl;

 69          goto End;

 70        }

 71        else continue;

 72      }

 73      cout << " 输入姓å: " ;

 74      cin >> Student[n].name;

 75      cout << " 输入年龄: " ;

 76      cin >> Student[n].age;

 77      cout << " 输入性别: " ;

 78      cin >> Student[n].sex;

 79      cout << " 输入ç级: " ;

 80      cin >> Student[n].class_info;

 81      cout << " 英è¯æˆç»©: " ;

 82      cin >> Student[n].English;

 83      cout << " æ•°å¦æˆç»©: " ;

 84      cin >> Student[n].Math;

 85      cout << " è¯æ–‡æˆç»©: " ;

 86      cin >> Student[n].Chinese;

 87      Student[n].Total = Student[n].English + Student[n].Math + Student[n].Chinese;

 88      cout << " 总æˆç»©:   " << Student[n].Total << endl;

 89      n++;

 90      Ele_Amount++;

 91      Ele_Surplus--;

 92      End: cout << '\n' << " 继ç»è¾“å…¥æ–°çºªå½•å— ? (Y/N) :      " ;

 93      cin >> Choice ;

 94    }

 95    cout << " [ Finished ] " << endl;

 96  }

3.2查找、编辑模块设计

284  void Ele_Student_System :: Searching ( string name, int Amount )

285  {

286    int i = 0;

287    int Result = 0;

288    for ( i=0; i<Amount; i++ )

289    {

290      if ( name == Student[i].name )

291      {

292        cout << " 查找到记录: " << Student[i].number << "  " << Student[i].name << "  " << Student[i].age << " " << Student[i].sex << " " << Student[i].class_info << " " << Student[i].English << " " << Student[i].Math << " " << Student[i].Chinese << endl;

293        Result = 1;

294        cout << " 进行修改å—? Y/N :    ";

295        char Modification='N';

296        cin >> Modification;

297        if ( Modification=='Y' ){ Modifing( i );}

298        break;

299      }

300      else continue;

301    }

302    if ( Result == 1 ) {cout << " [ Finished ] " << endl;}

303    else  {cout << " [ The record not exist! ]" << endl;}

304  }

305  

……..
添加其它模块

第四章  测试分析

4.1测试程序执行情况

再添加各种测试截图


第六章课程设计总结

这学期通过学习C++,对C语言和C++语言都有了更深刻的认识,也学习到了面向对象程序设计的思想与方法。
C++主要在类、对象以及一些stream上有了扩充,这使得它更加能够适应各种编程需要,但是也是难度提升的一些知识点,我在编写类这块内容时,有时自己思路结构不清晰的话写出来的东西报错就很严重。。。。。。。。。。。。。。。。。


附录:程序代码

过程:

Dev-C++使用C++语言开发

系统包含小/中/大学生成绩管理三个子系统,此处以小学生成绩管理系统举例

小学生成绩管理系统主界面

插入学生信息

显示所有学生信息

根据姓名查询学生信息

通过学号查询学生信息

通过数学成绩排序

通过英语成绩排序

通过语文成绩排序

统计学生成绩

通过学号修改学生记录

删除学生记录

源码、报告获取

欢迎大家点赞、收藏、关注、评论、批评啦 、查看👇🏻👇🏻获取联系方式👇🏻👇🏻

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【滚动哈希 二分查找】1044. 最长重复子串

本文涉及知识点 滚动哈希 二分查找算法合集 LeetCode 1044. 最长重复子串 给你一个字符串 s &#xff0c;考虑其所有 重复子串 &#xff1a;即 s 的&#xff08;连续&#xff09;子串&#xff0c;在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。 返回 任意一个 可能具…

vs2022 studio控制台出现中文乱码解决

vs2022 studio控制台出现中文乱码解决 问题解决 问题 这里cout中间的中文&#xff0c;但控制台出现的是乱码对此需要进行修改 解决 打开运行的主文件&#xff0c;也就是整个程序的入口&#xff0c;对他另存为 之后点击编码保存 接着将编码保存的格式变为图片对应的这种 记…

ArcGIS定义1.5度带坐标系与投影转换

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 对于ArcGIS如何定义高斯克吕格3度带、6度带&#xff0c;我相信大部分人都是比较清楚的&#xff0…

ArcGIS批量投影转换的妙用(地理坐标系转换为平面坐标系)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 这次文章我们来介绍一下&#xff0c;如何巧妙用要素数据集来实现要素的批量投影。不需要ArcGIS的模型构建器与解决。 例如&#xff0c;有多个要素要将CGCS_2000地理坐标系投…

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的&#xff1a;修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中&#xff0c;轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…

Python酷库之旅-第三方库openpyxl(02)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

Leetcode 第 401 场周赛题解

Leetcode 第 401 场周赛题解 Leetcode 第 401 场周赛题解题目1&#xff1a;3178. 找出 K 秒后拿着球的孩子思路代码复杂度分析 题目2&#xff1a;3179. K 秒后第 N 个元素的值思路代码复杂度分析 题目3&#xff1a;3180. 执行操作可获得的最大总奖励 I思路代码复杂度分析 题目4…

leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II

题目&#xff1a; 题解&#xff1a; 本题比普通的寻找旋转排序数组中的最小值多了一个数组中的元素可以重复这一点。 这会时原来的思路出现一个漏洞&#xff08;大家感兴趣可以看看我做普通版寻找旋转排序数组最小值的思路&#xff09;&#xff0c;就是旋转后的数组中的第二个…

AI在线免费视频工具2:视频配声音;图片说话hedra

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ &#xff08;免费在线使用&#xff09; 2、图片说话在线图片生成播报hedra hedra 上传音频与图片即可合成 https://www.hedra.com/ https://www.…

论文浅读之Mamba: Linear-Time Sequence Modeling with Selective State Spaces

介绍 这篇论文提出了一种新型的"选择性状态空间模型"(Selective State Space Model, S6)来解决之前结构化状态空间模型(SSM)在离散且信息密集的数据&#xff08;如文本&#xff09;上效果较差的问题。 Mamba 在语言处理、基因组学和音频分析等领域的应用中表现出色。…

读AI新生:破解人机共存密码笔记08超级智能

1. 发现动作 1.1. 时间跨度长的智能行为&#xff0c;需要具备在多个抽象层次上分层规划和管理活动的能力&#xff0c;从攻读博士学位&#xff08;可能涉及1万亿个动作&#xff09;&#xff0c;到给一根手指发送一个运动控制指令&#xff0c;从而键入求职信的字符&#xff0c;无…

JavaWeb——Mysql的启动/登录/卸载

目录 1.Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql&#xff1a; 2.2 登录Mysql 2.3 退出 3. 连接别人的数据库 4.卸载mqsql 1.Mysql服务器 安装了Mysql的计算机都成为Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql&#xff1a; 第一种方法&#xff1a;搜索服务&am…

用户态协议栈05—架构优化

优化部分 添加了in和out两个环形缓冲区&#xff0c;收到数据包后添加到in队列&#xff1b;经过消费者线程处理之后&#xff0c;将需要发送的数据包添加到out队列。添加数据包解析线程&#xff08;消费者线程&#xff09;&#xff0c;架构分层 #include <rte_eal.h> #inc…

【Redis】List的常用命令以及常用场景

Redis List 是一个简单的链表&#xff0c;支持在两端进行插入和删除操作。这种数据结构在许多场景下非常有用&#xff0c;例如任务队列、消息队列等。Redis 提供了一系列针对 List 的操作命令&#xff0c;帮助我们更高效地操作链表。 1. List常用命令 操作类型命令时间复杂度…

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…

如何生成protobuf文件

背景 protobuf是一种用于序列化结构数据的工具&#xff0c;实现数据的存储与交换&#xff0c;与编程语言和开发平台无关。 序列化&#xff1a;将结构数据或者对象转换成能够用于存储和传输的格式。 反序列化&#xff1a;在其他的计算环境中&#xff0c;将序列化后的数据还原为…

解决双击bootstrap.bat没有生成b2.exe文件

双击bootstrap.bat但是并没有没有生成b2.exe文件&#xff0c;会报如下错误&#xff1a; "cl" 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。D:\cppsoft\boost_1_85_0\tools\build\src\engine>dir *.exe 驱动器 D 中的卷是 Data 卷的序列号是…

Swoole_loader扩展安装图文教程 Swoole扩展文件下载

Swoole_loader扩展安装图文教程 Swoole扩展文件下载 安装和配置Swoole Loader 1 - 下载Swoole Loader 请下载兼容PHP7.2和非线程安全的Swoole Loader扩展&#xff0c;点击下载适配环境的扩展文件 2 - 安装Swoole Loader 将刚才下载的Swoole Loader扩展文件&#xff08;swo…

AI播客下载:Machine Learning Street Talk(AI机器学习)

该频道由 Tim Scarfe 博士、Yannic Kilcher 博士和 Keith Duggar 博士管理。 他们做了出色的工作&#xff0c;对每个节目进行了彻底的研究&#xff0c;并与机器学习行业中一些受过最高教育、最全面的嘉宾进行了双向对话。 每一集都会教授一些新内容&#xff0c;并且提供未经过滤…

【从零到一】电子元器件网站建设/开发方案、流程及搭建要点全解

电子元器件行业在数字化转型的大潮下也迎来了前所未有的发展机遇。一个高效、专业、用户友好的电子元器件网站&#xff0c;不仅能够提升品牌形象&#xff0c;还能显著提高销售转化率&#xff0c;增强客户粘性。道合顺芯站点将详细阐述电子元器件开发方案、实施流程&#xff0c;…