学生考勤信息管理系统

news2024/12/24 8:32:53

系列文章

任务36 学生考勤信息管理系统


文章目录

  • 系列文章
  • 一、实践目的与要求
    • 1、目的
    • 2、要求
  • 二、课题任务
  • 三、总体设计
    • 1.存储结构及数据类型定义
    • 2.程序结构
    • 3.所实现的功能函数
    • 4、程序流程图
  • 四、小组成员及分工
  • 五、 测试
    • 操作页面
    • bk.txt
    • 信息录入:加入新出勤的信息
    • 查询:按编号条件查找学生的出勤信息
    • 查询:按学号条件查找学生的出勤信息
    • 查询:按姓名条件查找学生的出勤信息
    • 更新:按编号对某个学生的某项出勤信息进行修改
    • 浏览:输出所有学生出勤信息
    • 统计:统计某学生在某月内的出勤和缺勤天数并输出
    • 排序:按学号对所有学生的出勤信息进行排序
    • 删除:按学号删除已退学的学生出勤的信息
    • 退出系统
  • 六、源代码获取


一、实践目的与要求

1、目的

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

2、要求

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

二、课题任务

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

学生考勤信息管理系统
内容:学生考勤的信息包括:编号、学号、姓名、性别、班级、日期、节次、出勤情况、备注等。系统能够完成学生出勤信息的查询、更新、插入、删除、排序等功能。
功能分类:
(1) 排序:按学号对所有学生的出勤信息进行排序。
(2) 查询:分别按编号、学号、姓名条件查找学生的出勤信息。
(3) 更新:按编号对某个学生的某项出勤信息进行修改。
(4) 插入:加入新出勤的信息。
(5) 删除:按学号删除已退学的学生出勤的信息。
(6) 浏览:输出所有学生出勤信息。
(7) 统计:统计某学生在某月内的出勤和缺勤天数并输出。

三、总体设计

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

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

// 学生出勤信息结构体
typedef struct {
    int id;             // 编号
    char student_id[10];// 学号
    char name[MAX_NAME_LEN];  // 姓名
    char gender[5];     // 性别
    char clazz[10];     // 班级
    char date[15];      // 日期
    int session;        // 节次
    char attendance[10];// 出勤情况
    char remark[50];    // 备注
} Attendance;

Attendance students[MAX_STUDENTS];
int num_students = 0;   // 当前学生数量

2.程序结构

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

3.所实现的功能函数

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

void display_menu(void); //面板展示 函数形参void 返回值为void
void sort_student_by_id(void);//按学号对所有学生的出勤信息进行排序 函数形参void 返回值为void
void search_student_by_id(void);//按编号条件查找学生的出勤信息 函数形参void 返回值为void
void search_student_by_student_id(void);//按学号条件查找学生的出勤信息 函数形参void 返回值为void
void search_student_by_name(void);//按姓名条件查找学生的出勤信息 函数形参void 返回值为void
void update_attendance_by_id(void);//按编号对某个学生的某项出勤信息进行修改 函数形参void 返回值为void
void insert_attendance(void);//加入新出勤的信息 函数形参void 返回值为void
void delete_attendance_by_student_id(void);//按学号删除已退学的学生出勤的信息 函数形参void 返回值为void
void browse_attendance_info(void);//输出所有学生出勤信息 函数形参void 返回值为void
void count_attendance_days_by_month(void);//统计某学生在某月内的出勤和缺勤天数并输出 函数形参void 返回值为void
int main(void);

4、程序流程图

在这里插入图片描述

四、小组成员及分工

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

组长:完成学生考勤信息排序、学生考勤信息查询、学生考勤信息更新模块功能
组员1:完成学生考勤信息插入、学生考勤信息删除模块与主函数的功能
组员2:完成学生考勤信息浏览、学生考勤信息统计模块功能

五、 测试

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

操作页面

在这里插入图片描述

bk.txt

在这里插入图片描述

信息录入:加入新出勤的信息

在这里插入图片描述

查询:按编号条件查找学生的出勤信息

在这里插入图片描述

查询:按学号条件查找学生的出勤信息

在这里插入图片描述

查询:按姓名条件查找学生的出勤信息

在这里插入图片描述

更新:按编号对某个学生的某项出勤信息进行修改

在这里插入图片描述

浏览:输出所有学生出勤信息

在这里插入图片描述

统计:统计某学生在某月内的出勤和缺勤天数并输出

在这里插入图片描述

排序:按学号对所有学生的出勤信息进行排序

在这里插入图片描述

删除:按学号删除已退学的学生出勤的信息

在这里插入图片描述

退出系统

在这里插入图片描述

六、源代码获取

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

提示:代码获取链接:

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

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

相关文章

chatgpt赋能Python-pythonget

PythonGet:一个优秀的Python包管理器 PythonGet是一个优秀的Python包管理器,它可以帮助Python工程师安装、管理和更新Python包。本文将在介绍PythonGet的基本用法的同时,探讨PythonGet在SEO优化中的应用。 PythonGet的简介 PythonGet是Pyt…

不用魔法,快速、手摸手上线Midjourney!【附源码】【示例】

首先来一波感谢: 感谢laf提供赞助,目前可以免费使用Midjourney进行开发和测试。 感谢白夜、米开朗基杨sealos.io的耐心解答,让我对laf有了更多的使用与了解。 什么是laf?来了解下。 文末有【示例】 开始 废话不多说,…

基于Freertos的ESP-IDF开发——7.WS2812B彩色灯循环

基于Freertos的ESP-IDF开发——7.WS2812B彩色灯循环 0. 前言1. WS2812B简介2. 完整代码3. 演示效果4. 其他FreeRtos文章 0. 前言 本节使用WS2812B实现彩灯循环 开发环境:ESP-IDF 4.3 操作系统:Windows10 专业版 开发板:自制的ESP32-WROOM-3…

【软考中级】软件设计师选择题题集(一)

海明校验码是在n个数据位之外增设k个校验位,从而形成一个k+n位的新的码字, 使新的码字的码距比较均匀地拉大。n与k的关系是(1)。 (1)A.2k - 1≥n + k  B.2n - 1≤ n + k   C.n = k  D.n-1≤k 【答案】A 【解析】 【答案】B A 【解析】 在采用结构化方法进行系统分析时,…

MySQL高级篇——索引失效的11种情况

导航: 【黑马Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 1. 索引优化思路 2. 索引失效的11种情况 2.0. 数据准备 2.1 要尽量满足全值匹配 2.2 要满足最佳左前缀法则 2.3 主键插…

详解Jetpack Compose中的Modifier修饰符

前言 本文将会介绍Jetpack Compose中的Modifier。在谷歌官方文档中它的描述是这么一句话:Modifier元素是一个有序、不可变的集合,它可以往Jetpack Compose UI元素中添加修饰或者各种行为。例如,背景、填充和单击事件监听器装饰或添加行为到文…

依次对数组中的元素进行逻辑非和异或判断numpy.logical_not()numpy.logical_xor()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 依次对数组中的元素进行逻辑非和异或判断 numpy.logical_not() numpy.logical_xor() [太阳]选择题 下列代码中np.logical_xor(A, B)输出的结果是? import numpy as np A [True, …

苹果新增了28个以AI为重点的职位,希望利用这种AI技术改变iPhone和iPad

🚀 苹果新增了28个以AI为重点的职位,希望利用这种AI技术改变iPhone和iPad 苹果公司限制了使用ChatGPT等外部AI工具,正在开发自主的生成式AI技术。 苹果此前新增了28个以AI为重点的职位,希望利用这种AI技术改变iPhone和iPad。 此…

IntelliJ 导出和导入配置文件

导出: File->Manage IDE Setting->Export Settings…->选择导出目录,可以得到一个 settings.zip 的文件 导入方法: File->Manage IDE Setting->Import Settings…->选择需要导入的文件即可,导入之后重启IDE。

13-2-CSS3-渐变色、2D转换、3D转换

一、渐变色 CSS渐变色(Gradient)是指在元素背景中使用两种或多种不同的颜色进行过渡,超过两个颜色可以形成更为细腻的渐变效果。常见的CSS渐变色有线性渐变和径向渐变。 1. 线性渐变:Linear Gradients 向下/向上/向左/向右/对角…

CyberLink的屏幕录制软件Screen Recorder Deluxe 4.3版本在win10系统的下载与安装配置教程

目录 前言一、Screen Recorder Deluxe安装二、使用配置总结 前言 Screen Recorder Deluxe是由CyberLink公司开发的一款高效的屏幕录制工具,该软件提供了全面而易于使用的功能,可以满足广泛的屏幕录制需求。 Screen Recorder Deluxe的一些主要特点&…

代码随想录算法训练营 Day 46 | 139.单词拆分,关于多重背包,你该了解这些!,背包问题总结篇!

139.单词拆分 讲解链接:代码随想录-139.单词拆分 确定 dp 数组以及下标的含义:dp[i] : 字符串长度为 i 的话,dp[i]为 true,表示可以拆分为一个或多个在字典中出现的单词。 确定递推公式:如果确定 dp[j] 是 true&…

PyTorch-Dataset

Dataset类: 如何获取数据及标签。 Dataloader类:为之后的网络提供不同的数据形式。 1. 数据文件夹表示: from torch.utils.data import Dataset from PIL import Image import osclass MyData(Dataset):def __init__(self, root_dir, label_d…

三十七、雪崩问题、Sentinel、簇点链路、流控模式

1、初识Sentinel 1.1雪崩问题 微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。 解决雪崩问题的常见方式有四种: 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息&am…

Rust每日一练(Leetday0006) 三数之和、字母组合、四数之和

目录 16. 最接近的三数之和 3Sum Closest 🌟🌟 17. 电话号码的字母组合 Letter-combinations-of-a-phone-number 🌟🌟 18. 四数之和 4Sum 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust…

肝一肝设计模式【九】-- 享元模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…

java枚举类解读

目录 为什么需要枚举类 枚举类的使用 枚举类的实现 枚举类的属性 自定义枚举类 使用enum定义枚举类 常见enum的使用场景 switch 向枚举中添加新方法 覆盖枚举的方法 Enum类的主要方法 实现接口的枚举类 为什么需要枚举类 类的对象只有有限个,确定的。…

如何将map与对象进行转换

Spring Boot内置了一个强大的JSON转换器Jackson,可以实现将JSON字符串或Map类型的数据转换成Java对象。以下是将Map类型的数据转换成Java对象的示例代码: import com.fasterxml.jackson.databind.ObjectMapper;//定义Java对象 public class User {priva…

oracle客户端的安装教程

文章目录 一、安装前的准备工作 1.1、百度网盘安装包的连接 1.2、百度网盘oracle11g软件包 二、oracle数据库客户端的安装与数据的准备 安装步骤 前言 本文主要讲解oracle客户端的安装与简单使用过程 一、安装前的准备工作 1.1、百度网盘安装包的连接 客户端的软件包 …

STM32 FMC篇-SDRAM(IS42S16400J)

IS42S16400J 这个东西太常见啦,长方形的。不会过多解释,详细请阅读它的数据手册。 IS42S16400J是一种高速同步动态随机存储器(SDRAM),64Mb的存储容量,采用4个bank,每个bank大小为16Mb,总线宽度为16位&…