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

news2024/11/28 0:43:54

背景:

目录

第一章 需求分析    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++语言开发

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

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

插入学生信息

显示所有学生信息

根据姓名查询学生信息

通过学号查询学生信息

通过数学成绩排序

通过英语成绩排序

通过语文成绩排序

统计学生成绩

通过学号修改学生记录

删除学生记录

源码、报告获取

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka第一篇——内部组件概念架构启动服务器zookeeper选举以及底层原理

目录 引入 ——为什么分布式系统需要用第三方软件&#xff1f; JMS 对比 组件 架构推演——备份实现安全可靠 &#xff0c; Zookeeper controller的选举 controller和broker底层通信原理 BROKER内部组件 ​编辑 topic创建 引入 ——为什么分布式系统需要用第三方软件&#…

【知识图谱】基于neo4j开发的信息化文档分析系统(源码)

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

R语言——数据与运算

练习基本运算&#xff1a; v <- c(2,4,6,9)t <- c(1,4,7,9)print(v>t)print(v < t)print(v t)print(v!t)print(v>t)print(v<t) v <- c(3,1,TRUE,23i)t <- c(4,1,FALSE,23i)print(v&t)print(v|t)print(!v)v <- c(3,0,TRUE,22i)t <- c(1,3,T…

O2OA的数据库数据库配置-使用不同用户访问Oracle时报错-表或视图不存在

在使用Oracle数据库时&#xff0c;多个O2OA服务器同一个Oracle实例中使用不同的用户启动时&#xff0c;可能会遇到数据库访问的错误。本篇阐述此类问题以及解决方案。 一、先决条件&#xff1a; 1、O2OA已经下载并且解压到指定的目录&#xff1b; 2、Oracle数据库已经完成安…

什么是 vCPU?有什么作用

vCPU 是物理 CPU 的虚拟化版本&#xff0c;是云计算的基本组成部分。这些虚拟化计算单元的一大优势是其良好的可扩展性&#xff0c;这也是它们在云托管中发挥重要作用的原因。 vCPU 有什么作用? vCPU(虚拟中央处理器)是物理CPU的虚拟化变体。换句话说&#xff0c;vCPU 是虚拟机…

数据库系统概念(第七周 第二堂)(E-R模型转关系模式)

前言 前一堂课我们深入研究了E-R模型的画法和要点&#xff0c;学习E-R模型肯定是为了给数据库表格设计提供帮助。数据库表格设计就是关系模式设计&#xff0c;数据库表就是关系模式的实例化。所以本堂课&#xff0c;我们来看E-R模型如何转为关系模式。 转化原则 转化步骤 转…

1 矢量分析与场论

目录 场就是函数 矢量函数 场的概念 矢量运算 矢量加法与矢量减法 矢量点乘 矢量叉乘 矢量混合积 场的分析方法 等值面 矢量线 场就是函数 矢量函数 场的概念 矢量运算 矢量加法与矢量减法 矢量点乘 矢量叉乘 矢量混合积 场的宏观分析 等值面 等值面之间不会…

python19 异常处理

python19 异常处理 代码 异常处理 result 0; try:num1 int(input(请输入一个整数:))num2 int(input(请输入一个整数:))result num1 / num2 except ZeroDivisionError:print(除数不能为0) except ValueError:print(不能将字符串转成整数) except BaseException:print(未知异…

远程问诊优劣势并存,满足医患需求更关键

随着互联网技术的快速发展&#xff0c;如今其已经融入到了这个社会的各个领域&#xff0c;就连医疗行业也不例外。尤其是近几年在国家政策的支持和疫情的推动下互联网医疗平台更是如雨后春笋般冒了出来&#xff0c;并且这些平台中有不少还开发了远程问诊功能&#xff0c;对于此…

CRMEB 多店商品详情页装修说明

一、功能介绍 商家可调整商品详情各板块样式&#xff0c;可根据不同的需求开启或关闭单独的板块 二、操作流程 装修 > 商品详情 三、功能说明 1、商品信息 可控制商品详情页面商品信息的显示与隐藏 2、会员信息&#xff0c;排行榜 控制商品详情页面会员信息及排行榜的…

编译原理-各章典型题型+思路求解

第2章文法和语言习题 基础知识&#xff1a; 思路&#xff1a; 基础知识&#xff1a; 思路&#xff1a; 基础知识&#xff1a; 编译原理之 短语&直接短语&句柄 定义与区分_编译原理短语,直接短语,句柄-CSDN博客 思路&#xff1a; 题目&#xff1a; 基础解释&#xff1a…

Javase.认识异常

认识异常 【本章目标】1. 异常的概念与体系结构1.1 异常的概念1.2 异常的体系结构1.3 异常的分类 2. 异常的处理2.1 防御式编程2.2 异常的抛出2.3 异常的捕获2.3.2 try-catch捕获并处理2.3.3 finally2.4 异常的处理流程 3. 自定义异常类 【本章目标】 异常概念与体系结构异常的…

04-echarts-立体柱状图扩展

柱状图扩展 一、前言二、思路1、新增面①、在drawShape方法中&#xff0c;新增一个实际左侧面&#xff0c;②、 在drawShape方法中&#xff0c;新增一个实际右侧面&#xff0c;③ 绘制 2、新增series对象① 添加实际值的左侧面和右侧面 三、效果图 一、前言 事情是这样子的&am…

java技术专家面试指南50问【java学习+面试宝典】(十)

ConcurrentHashMap实现原理 JDK1.7 : 【数组&#xff08;Segment&#xff09; 数组&#xff08;HashEntry&#xff09; 链表&#xff08;HashEntry节点&#xff09;】 ConcurrentHashMap&#xff08;分段锁&#xff09; 对整个桶数组进行了分割分段(Segment)&#xff0c;每一…

IDEA集成Docker实现快捷部署

本文已收录于专栏 《运维》 目录 背景介绍优势特点操作步骤一、修改Docker配置二、配置Docker插件三、编写Maven插件四、构建Docker镜像五、创建Docker容器 总结提升 背景介绍 在我们手动通过Docker部署项目的时候&#xff0c;都是通过把打包好的jar包放到服务器上并且在服务器…

AI穿戴设备是未来手机的终结者?中国AI商业化的未来预测

AI技术的发展正处于商业化应用的关键阶段&#xff0c;而中国在互联网时代已凭借商业化应用逆袭。AI算法大模型虽强大&#xff0c;但真正普惠民众需与设备深度结合。穿戴式智能设备就成为了新战场&#xff0c;AI算法与穿戴设备结合能释放更大工作效率。私人助理AI将成趋势&#…

南卡、漫步者和Oladance开放式哪家强?无广避坑测评!

现在市面上的开放式耳机种类非常多&#xff0c;在购买的时候大多数人都没有非常确定的目标&#xff0c;这主要是因为大多数人对开放式耳机的认识程度不够。 作为一个有着多年数码产品测评经验的测评员&#xff0c;我刚好对开放式耳机也有比较深刻的理解&#xff0c;也借着大家…

【Splitpanes】Vue.js 靠谱、简单并支持触摸的窗格分割器/调整器。

【Splitpanes】Vue.js 靠谱、简单并支持触摸的窗格分割器/调整器。 介绍安装使用示例与文档 介绍 Vue.js 靠谱、简单并支持触摸的窗格分割器/调整器。用于实现可调节窗口&#xff0c;支持Vue2、Vue3。 安装 Vue3 npm install splitpanesVue2 npm install splitpaneslegac…

一文读懂数据仓库ODS层

数据仓库一般分为三层&#xff0c;分别为数据贴源层&#xff08;ODS&#xff0c;Operation Data Store&#xff09;、数据公共层&#xff08;CDM&#xff0c;Common Data Model&#xff09;和数据应用层&#xff08;ADS&#xff0c;Application Data Service&#xff09;。其中…

小巧悦耳的百元耳机,也有纯净的音乐享受,西圣AVA2体验

无论是居家休闲还是出门在外&#xff0c;音乐成为了许多人生活中不可或缺的一部分。特别是在拥有一款既经济又好听的蓝牙耳机之后&#xff0c;我们就可以在通勤路上和办公室里&#xff0c;隔绝外界干扰&#xff0c;找回属于自己的天地&#xff0c;提升生活品质。目前我用的是一…