成绩管理系统

系列文章

任务28 成绩管理系统


文章目录

  • 系列文章
  • 一、实践目的与要求
    • 1、目的
    • 2、要求
  • 二、课题任务
  • 三、总体设计
    • 1.存储结构及数据类型定义
    • 2.程序结构
    • 3.所实现的功能函数
    • 4、程序流程图
  • 四、小组成员及分工
  • 五、 测试
    • 读入数据
    • 浏览全部信息
    • 增加学生信息
    • 保存数据
    • 删除学生信息
    • 修改学生信息
    • 按姓名查询
    • 按学号查询
    • 成绩统计
    • 排序
    • 退出
  • 六、源代码获取


一、实践目的与要求

1、目的

通过此次实践环节主要达到以下目的:
(1)进一步理解和运用结构化程序设计的思想和方法,学会根据具体问题选择合理的计算机存储结构实现数据的存储,构造较有效率的算法;
(2)学会算法描述的方法,并编制具有结构清晰、合理和易读性的小型实用程序;
(3)并会设计测试方案,完成程序的测试,能撰写出该程序的技术报告,为文档整理工作打下一个初步的基础;
(4)培养小组成员间互相学习,取长补短,协同工作的能力。

2、要求

(1)模块化程序设计,锯齿型书写格式,代码要有足够的注释;
(2)根据课题中规定的要求实现既定目标;
(3)撰写格式排版规范、结构完整的技术文档。

二、课题任务

(题目、内容及主要功能描述)

成绩管理系统
1)问题描述
现有学生成绩信息,内容如下:
姓名 学号 语文 数学 英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47

编写一系统,实现学生信息管理。
2) 基本要求
功能要求:
(1)信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息(按学号)、修改学生信息(按学号)
(2)信息查询:
要求:查询时可实现按姓名查询、按学号查询、浏览全部信息
(3)成绩统计:
要求:A输入任意的一个课程名(如数学)和一个分数段(如60–70),统计出在此分数段的学生情况。
(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)

三、总体设计

1.存储结构及数据类型定义

(采用了什么存储结构、被处理数据定义的数据类型,数据类型定义中要有注释说明)

#define MAXLEN 1000 // 名称和学号的最大长度
#define MAXNUM 1000 // 学生人数的最大值
#define MAXCOURSE 3 // 课程数量的最大值

typedef struct {
    char name[MAXLEN];
    char id[MAXLEN];
    double score[MAXCOURSE];
} student; // 学生结构体,包含姓名、学号、成绩等信息

2.程序结构

(程序整体的模块结构图)
在这里插入图片描述

3.所实现的功能函数

(每个功能对应的函数名、函数形参及返回值说明)

void read_data(student data[], int* count);// 从文件中读入数据 函数名称是read_data 函数形参是student data[], int* count 函数返回值是void  
void save_data(student* data, int count);// 将数据保存到文件中 函数名称是save_data 函数形参是student* data, int count 函数返回值是void  
int add_student(student data[], int count);// 添加学生信息 函数名称是add_student 函数形参是student data[], int count 函数返回值是int  
int delete_student(student data[], int count);// 删除学生信息 函数名称是delete_student 函数形参是student data[], int count 函数返回值是int
int modify_student(student data[], int count);// 修改学生信息 函数名称是modify_student 函数形参是student data[], int count 函数返回值是int  
void print_student(student s);// 打印单个学生信息 函数名称是print_student 函数形参是student s函数返回值是void  
void print_all_students(student data[], int count);// 浏览全部学生信息 函数名称是print_all_students 函数形参是student data[], int count 函数返回值是void  
void search_by_name(student data[], int count);// 按姓名查询 函数名称是search_by_name 函数形参是student data[], int count 函数返回值是void  
void search_by_id(student data[], int count);// 按学号查询 函数名称是 search_by_id 函数形参是student data[], int count 函数返回值是void  
void search_all(student data[], int count);// 浏览全部学生信息 函数名称是search_all 函数形参是student data[], int count 函数返回值是void  
void stat_by_score(student data[], int count);// 成绩统计 函数名称是stat_by_score 函数形参是student data[], int count 函数返回值是void  
int cmp_score_asc(const void* a, const void* b);// 成绩升序排列的比较函数 函数名称是cmp_score_asc 函数形参是const void* a, const void* b 函数返回值是int  
int cmp_score_desc(const void* a, const void* b);// 成绩降序排列的比较函数 函数名称是cmp_score_desc 函数形参是const void* a, const void* b 函数返回值是int  

4、程序流程图

在这里插入图片描述

四、小组成员及分工

(组长、组员及每人承担的具体模块任务或其他)
组长:完成显示菜单、读取文件中的学生成绩信息到students数组、把学生信息写入文件
统计学生成绩并排名模块。

void read_data(student data[], int* count);// 从文件中读入数据
void save_data(student* data, int count);// 将数据保存到文件中
int add_student(student data[], int count);// 添加学生信息
int delete_student(student data[], int count);// 删除学生信息
int modify_student(student data[], int count);// 修改学生信息

组员1:完成添加学生信息、删除学生信息、根据学生学号查找学生模块

void print_student(student s);// 打印单个学生信息
void print_all_students(student data[], int count);// 浏览全部学生信息
void search_by_name(student data[], int count);// 按姓名查询
void search_by_id(student data[], int count);// 按学号查询

组员2:完成修改学生补考成绩、修改学生信息(姓名或成绩)、显示所有学生信息模块

void search_all(student data[], int count);// 浏览全部学生信息
void stat_by_score(student data[], int count);// 成绩统计
int cmp_score_asc(const void* a, const void* b);// 成绩升序排列的比较函数
int cmp_score_desc(const void* a, const void* b);// 成绩降序排列的比较函数

五、 测试

(整合各功能模块后的测试结果截图及说明)

读入数据

在这里插入图片描述

浏览全部信息

在这里插入图片描述

增加学生信息

在这里插入图片描述

保存数据

在这里插入图片描述

删除学生信息

在这里插入图片描述

修改学生信息

在这里插入图片描述

按姓名查询

在这里插入图片描述

按学号查询

在这里插入图片描述

成绩统计

在这里插入图片描述

排序

在这里插入图片描述

退出

在这里插入图片描述

六、源代码获取

本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕

提示:代码获取链接: 下载源码

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

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

相关文章

【活动预告】数据集成引擎BitSail遇上CDC

BitSail是字节跳动开源数据集成引擎,于2022年10月26日宣布开源,可支持多种异构数据源间的数据同步,并提供离线、实时、全量、增量场景下全域数据集成解决方案。BitSail支撑了字节内部众多的业务线,支持多种数据源之间的批式/流式/…

头歌计算机组成原理实验—运算器设计(6)第6关:5位无符号阵列乘法器设计

第6关:5位无符号阵列乘法器设计 实验目的 帮助学生掌握阵列乘法器的实现原理,能够分析阵列乘法器的性能,能在 Logisim 中绘制阵列乘法器电路。 视频讲解 实验内容 在 Logisim 中打开 alu.circ 文件,在5位阵列乘法器中实现斜向…

Rocketmq常用使用场景

RocketMQ 是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ 的特点是纯JAVA实现 基础概念 Producer: 消息生产者,负责产生消息,一般由业务系统负责产生消息 Producer Group: 消息生产者组&#xf…

聚会游戏玩什么?UMO轻松炒热气氛

UMO是一款有趣的多人益智桌游,考验玩家耐力和技巧的比拼!玩家将在游戏中通过特定的规则来出牌,谁先出完所有牌谁就赢,游戏非常讲究策略和运气哦~ 当玩家手上只剩一张牌时,必须喊出UMO!游戏因此得名。【数字…

3 个令人惊艳的 ChatGPT 项目,开源了!

过去一周,AI 界又发生了天翻地覆的变化,其中,最广为人知的,应该是 OpenAI 正式上线 ChatGPT iOS 客户端,让所有人都可以更方便的在手机上与 ChatGPT 聊天。 此外,Stable Diffusion 母公司 Stability AI 也…

论文阅读_音频压缩_SoundStream

论文信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: SoundStream: An End-to-End Neural Audio Codec name_ch: SoundStream:一种端到端的神经音频编解码器 paper_addr: http://arxiv.org/abs/2107.03312 doi: 10.1109/TASLP.2021.3129994 dat…

Apache Kafka - 安装注意事项

文章目录 概述安装Kafka配置Kafka启动Kafka配置注意事项导图 概述 在现代的大数据时代,消息队列成为了极为重要的组件。Kafka作为一种高吞吐量、低延迟、可扩展的分布式发布订阅消息系统,在大数据领域得到了广泛的应用。来,这里我们将介绍如…

Python系列之字符串和列表

感谢点赞和关注 ,每天进步一点点!加油! 目录 一、字符串 1.1 字符串的定义与输入 1.2 字符串的拼接与格式化输出 1.3 字符串的下标 1.4 字符串的切片和倒序 1.5 字符串的常见操作 二、列表-List 2.1 列表的常见操作 2.2 列表合并和拼…

RocketMQ(超级无敌认真好用,万字收藏篇!!!!)

文章目录 RocketMQ1 RocketMQ简介2 Rocket安装2.1 Rocket安装(基于Linux)2.2 控制台安装 3 Rocket的使用3.1 普通消息发送3.1.1 同步消息发送3.1.2 异步消息发送3.1.3 单向消息发送 3.2 普通消息消费3.2.1 集群消费3.2.2 广播消费 3.3 收发顺序消息3.3.1 全局顺序生产消费3.2.2…

越来越多企业出现网络安全问题,是什么原因导致的?

近年来网络安全问题层出不穷,信息泄露、网络钓鱼、黑客攻击等问题频繁发生。 尽管有证据表明在一些全球知名的企业组织中存在价值数十亿美元的网络安全漏洞,但企业仍然没有认真对待网络安全。大公司在寻找各种理由来减少其网络安全预算,从而…

无魔法插件 - ChatGPT Sidebar with GPT-4

文章目录 1.介绍2.功能一览2.1 唤醒方式2.2 聊天功能2.3 快捷模板2.4 单独聊天界面2.5 ChatPDF2.6 任意位置快捷使用模板2.7 手机 APP 3.GPT-3.0 还是 GPT-3.5?4.免费 or 收费?5.安装 Sidebar 创作不易,如果本文对你有帮助,胖友记…

国考省考行测:资料分析:增量减量计算公式,百分数化分数

国考省考行测:增量减量计算公式 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧,我讲一起屡屡申论和行测的重要知…

【FMC155】2 路14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合ADC 同步采集FMC 子卡模块(AD9680)中文资料

板卡概述 FMC155 是一款基于VITA57.1 标准的,实现2 路14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合ADC 同步采集FMC 子卡模块。该模块遵循VITA57.1 规范,可直接与FPGA 载卡配合使用,板卡ADC 器件采用ADI 的AD9680 芯片,该芯片具有两…

C++模板初阶

本期我们来学习C的模板,我们本期只是简单学习,为后续做铺垫,未来会深入讲解 目录 函数模板 类模板 下面我们进入正题 我们之前学习了函数重载,有函数重载我们可以完成很多事情,比如交换两个变量 void Swap(int&am…

tuple基本用法

元组简介 C11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时&#xf…

高压功率放大器在木结构的螺栓连接松动检测系统中的应用

实验名称:功率放大器在面向木结构的螺栓连接松动检测系统中的应用 实验设备: 计算机、压电传感器PZT、D型数显扭矩扳手、NIELVISII+数据采集卡、ATA-2021H功率放大器等。 实验过程: 设计了一种基于压电时间反演法的木材连接螺栓松…

Menards EDI对接流程

Menards是一家美国的家居建材零售商,成立于1962年,总部位于美国威斯康星州的伊甸谷市。该公司经营各种家居建材产品,包括木材、地板、墙纸、厨房卫浴用品等,并拥有超过300家门店,分布在美国中西部和北部地区。Menards的…

Beats:如何在 Docker 容器中运行 Filebeat

今天在这篇博客中,我们将学习如何在容器环境中运行 Filebeat。 为了快速了解 Filebeat 是做什么用的: Filebeat用于转发和集中日志数据它重量轻,小型化,使用的资源更少它作为代理安装在你的服务器上它监视来自指定位置的日志文件…

[CTF/网络安全] 攻防世界 weak_auth 解题详析

[CTF/网络安全] 攻防世界 weak_auth 解题详析 弱认证弱认证绕过方法姿势Burp Suite 爆破 总结 题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。 弱认证 weak_auth翻译:弱认证 这个术语通常用来描述一种较弱的安全认证方法或机制&am…

UVC调用过程部分细节分析

UVC调用过程部分细节分析 文章目录 UVC调用过程部分细节分析概括分析UVC驱动调用过程1.open:ioctl 2.VIDIOC_QUERYCAP3.VIDIOC_ENUM_FMT4.VIDIOC_G_FMT5.VIDIOC_TRY_FMT6.VIDIOC_S_FMT /7.VIDIOC_REQBUFS8.VIDIOC_QUERYBUF9.mmap10.VIDIOC_QBUF11.VIDIOC_STREAMON12.poll13.VID…