数据结构大作业-班级考勤管理系统

article/2025/9/12 7:27:41

简介

此程序是本人大二时期的数据结构大作业,初学数据结构和算法后所编写的一个程序,是一个班级考勤管理系统,可实现班级考勤信息的管理。

本程序使用C语言编写,使用Visual Studio 2019进行开发,程序中使用到了数据结构及算法知识,整个系统功能完善、界面美观(虽然是控制台窗口界面,但经过各种调整,整个界面十分整洁好看)。程序分为两个模式,用户模式和管理模式,用户模式供普通学生登录,可查看和管理个人的考勤信息等,管理模式供班级干部等管理员登录,可查看和管理整个班级成员的考勤信息等。用户模式的功能包括:查看个人信息、确认个人考勤、查询考勤信息、统计缺勤人员、修改密码、退出系统;管理模式的功能包括:查看学生信息、查询考勤信息、添加考勤信息、删除考勤信息、修改考勤信息、统计缺勤人员、超级管理权限、初始化系统、退出系统。

本次数据结构大作业程序,是本人在假期期间从零开始写的,由于本人有强迫症,所以程序有很多代码都在调整界面,花费了大量时间进行各种调整,整个系统的界面非常美观,这也是本人写过的大作业里十分满意的一次之一,当然最后毫无疑问的依旧拿了个优秀的成绩。

本程序是作者本人呕心沥血之作,在此求各位点个赞 o( ̄▽ ̄)d

程序源代码及程序设计说明书可点击下方链接进行下载,供各位需要的人学习参考。

下载链接:班级考勤管理系统

目录

  • 简介
  • 程序流程
  • 功能展示
    • 欢迎界面(初始界面)
    • 帮助
    • 注册
    • 登录
    • 用户菜单界面
    • 查看个人信息
    • 确认个人考勤
    • 查询考勤信息
    • 统计缺勤人员
    • 修改密码
    • 管理菜单界面
    • 查看学生信息
    • 添加考勤信息
    • 删除考勤信息
    • 修改考勤信息
    • 超级管理权限
    • 初始化系统
  • 代码展示
    • 数据结构
    • 函数声明及全局变量
    • 主函数
  • 后记


程序流程

程序大概流程如下图:
程序流程图

功能展示

本程序功能及细节颇多,在此仅展示部分功能,若想了解完整功能及细节,请至文章开头处下载程序,进行体验。

欢迎界面(初始界面)

打开本程序,进入欢迎界面即初始界面,在此可选择进入用户模式或管理模式,亦可打开帮助界面,或退出系统。

欢迎界面(初始界面)

帮助

在欢迎界面按“3”可进入到帮助界面,进入帮助界面时,会先显示一个动态闪烁的“HELP”,然后再显示出帮助界面,帮助界面中展示一些帮助事项,在此界面按“1”可打开查看详细的程序设计说明书,按其他键将返回欢迎界面。

帮助
帮助

注册

进入用户模式后可选择进行用户注册,用户注册界面需输入各种用户信息进行注册,用户信息完整输入且无误即可成功注册,注册成功将展示用户的账号和密码,提示用户牢记账号密码。

用户注册
注册成功

登录

在用户模式下可进行用户登录,输入用户的账号(即学号)和密码进行登录;在管理模式下可进行管理员登录,输入特定的账号和密码进行登录,本程序的管理员账号和密码写死在了程序源代码中,均为“admin”。若登录成功会先展示一个动态的进度条并伴随音效,进度条加载完成后将进入相应的菜单界面。

登录
登录成功

用户菜单界面

用户登录成功后将进入到用户菜单界面,在此界面可进行各种用户功能选择,包括:查看个人信息、确认个人考勤、查询考勤信息、统计缺勤人员、修改密码、退出系统。

用户菜单界面

查看个人信息

查看个人信息功能,是用户模式的功能,可查看用户自己的个人信息。

查看个人信息

确认个人考勤

确认个人考勤功能,是用户模式的功能,可在此确认用户本人的考勤信息。

确认个人考勤
确认个人考勤

查询考勤信息

查询考勤信息功能,是用户模式和管理模式都有的功能,可按条件查询考勤信息,亦可查看全部考勤信息,按条件查询时需输入指定的条件,输入后系统将查询并展示出所有符合条件的考勤信息。
查询考勤信息
查询考勤信息-按条件查询
查询考勤信息-按条件查询
查询考勤信息-查看全部

统计缺勤人员

统计缺勤人员功能,是用户模式和管理模式都有的功能,可统计出缺勤人员,既可按条件统计,也可统计全部,按条件统计时需输入指定的条件,输入后系统将统计并展示出所有符合条件的缺勤人员,统计全部将展示出所有有缺勤记录的学生,并统计缺勤次数。

统计缺勤人员
统计缺勤人员-按条件统计
统计缺勤人员-按条件统计
统计缺勤人员-统计全部

修改密码

修改密码功能,是用户模式的功能,可进行密码的修改,需输入旧密码和两次新密码,输入无误将成功修改密码。

修改密码
修改密码成功

管理菜单界面

管理员登录成功后将进入到管理菜单界面,在此界面可进行各种管理功能选择,包括:查看学生信息、查询考勤信息、添加考勤信息、删除考勤信息、修改考勤信息、统计缺勤人员、超级管理权限、初始化系统、退出系统。

管理菜单界面

查看学生信息

查看学生信息功能,是管理模式的功能,可查看所有学生的信息,进入此界面后先展示所有学生的简易信息,输入指定的学生编号可查看指定学生的详细信息。

查看学生信息
查看学生信息

添加考勤信息

添加考勤信息功能,是管理模式的功能,进入此界面后依次输入相应信息,信息输入完整无格式错误且确定后,该条考勤信息将录入到系统中并保存。

添加考勤信息

删除考勤信息

删除考勤信息功能,是管理模式的功能,进入此界面后会展示所有考勤信息,可输入指定编号删除指定考勤信息,亦可输入“0”删除全部考勤信息。

删除考勤信息

修改考勤信息

修改考勤信息功能,是管理模式的功能,进入此界面后会展示所有考勤信息,可输入指定编号进行指定考勤信息的修改,后续可对该考勤信息进行单个参数修改或整条修改。

修改考勤信息
修改考勤信息
修改考勤信息-修改单个参数

超级管理权限

超级管理权限功能,是管理模式的功能,输入超级管理权限密码“ADMIN”后,可进入超级管理模式,此模式下可对学生的个人信息进行各种操作,但当时由于时间问题(实则偷懒 ),所以该部分功能暂未实现。

超级管理权限
超级管理权限-NOTHING

初始化系统

初始化系统功能,是管理模式的功能,可将系统初始化,将所有信息还原至系统最初保存的信息。

初始化系统

代码展示

本程序代码较多且有详细注释,在此仅展示部分重要代码,完整代码请至文章开头处下载程序,进行了解。

为了系统界面的美观 强迫症患者 ,所以本程序的输出语句很多且很长,很多代码都在调整界面,请别介意。

数据结构

本程序使用的数据结构为单链表,整个程序的数据存放在考勤信息链表和学生信息链表中,并将这两条链表保存至文件中,以下代码为链表的定义。

enum Sex {                                    //性别Man, Woman, Unknow                        //男,女,未知
};
enum Type {                                   //缺勤类型Late, Absent, Leave                       //迟到,缺席,请假
};
enum State {                                  //考勤信息状态No, Yes                                   //未确认,已确认
};
typedef struct attendanceInfo_node* apointer; //考勤信息结点指针类型
struct attendanceInfo_node {                  //考勤信息结点结构int X;                                    //编号,即在链表中的序号char num[15];                             //学号char name[10];                            //姓名tm data;                                  //日期int n;                                    //第几节char subject[25];                         //课程char locale[8];                           //地点enum Type type;                           //性质enum State state;                         //状态apointer next;                            //考勤信息结点指针域
};
typedef apointer alklist;                     //考勤信息单链表类型,即头指针类型
typedef struct studentInfo_node* spointer;    //学生信息结点指针类型
struct studentInfo_node {                     //学生信息结点结构int X;                                    //编号,即在链表中的序号char name[10];                            //姓名enum Sex sex;                             //性别char grade[8];                            //年级char clas[20];                            //班级char num[15];                             //学号char password[20];                        //密码char phone[15];                           //手机char idCard[20];                          //身份证int times;                                //缺勤次数(非出席次数)spointer next;                            //学生信息结点指针域
};
typedef spointer slklist;                     //学生信息单链表类型,即头指针类型

函数声明及全局变量

本程序定义了17个主要功能函数和9个辅助操作函数,函数声明如下,全局变量为两条单链表,即两条单链表的头指针和尾指针。

//主要功能函数
void Title(); //标题函数,用于输出标题
void Registe(slklist* studentHead, spointer* studentRear); //注册函数,用于用户注册
void Login(int flag); //登录函数,用于用户登录和管理员登录
void Help(); //帮助函数,用于查看程序使用说明书
void AdminMenu(slklist* studentHead, alklist* attendanceHead, apointer* attendanceRear); //管理员菜单函数,用于显示菜单并选择功能
void UserMenu(spointer sp); //用户菜单函数,用于显示菜单并选择功能
void StudentInfo(); //查看学生信息
void Query(); //查询考勤信息
void Add(); //添加考勤信息
void Delete(); //删除考勤信息
void Modify(); //修改考勤信息
void Statistic(); //统计缺勤人员
void Super(); //超级管理权限,暂时无实用功能
void Init(); //初始化系统
void UserInfo(spointer sp); //查看个人信息
void Confirm(spointer sp); //确认个人考勤
void ChangePassword(spointer sp); //修改密码//辅助操作函数
void DisplayCursor(int flag); //显示或隐藏光标
void Goto_xy(short x, short y); //定位光标位置到指定坐标
void InputPassword(char* password); //输入密码
void ReadStudentInfo(slklist* studentHead, spointer* studentRear, int flag); //从文件读取学生信息,建立学生信息链表
void WriteStudentInfo(slklist* studentHead); //将学生信息链表写入文件
void ReadAttendanceInfo(alklist* attendanceHead, apointer* attendanceRear, int flag); //从文件读取考勤信息,建立考勤信息链表
void WriteAttendanceInfo(alklist* attendanceHead); //将考勤信息链表写入文件
void Destroy(slklist* studentHead, alklist* attendanceHead); //销毁链表
void QuickSort(int flag, struct student stu[], int left, int right); //快速排序//全局变量,学生信息链表、考勤信息链表
slklist studentHead = NULL; //学生信息链表头指针
spointer studentRear = NULL; //学生信息链表尾指针
alklist attendanceHead = NULL; //考勤信息链表头指针
apointer attendanceRear = NULL; //考勤信息链表尾指针

主函数

//主函数
int main() {char choice;ReadStudentInfo(&studentHead, &studentRear, 1); //建立学生信息链表ReadAttendanceInfo(&attendanceHead, &attendanceRear, 1); //建立考勤信息链表SetConsoleTitle(TEXT("◇ 班 级 考 勤 管 理 系 统 ◇")); //设置控制台标题do { //欢迎界面system("cls");printf("\n\t\t\t=====================================================================\n");printf("\t\t\t  ===============                                   ===============\n");printf("\t\t\t   ◇=========== 欢 迎 使 用 班 级 考 勤 管 理 系 统 ===========◇\n");printf("\t\t\t  ===============                                   ===============\n");printf("\t\t\t=====================================================================\n\n\n\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                             1.用户模式\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                             2.管理模式\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                             3. 帮  助\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                             4.退出系统\n");printf("\t\t\t                        --------------------\n");DisplayCursor(0); //隐藏光标choice = _getch();switch (choice) {case '1': //用户模式do { //用户登录注册选择界面system("cls");Title();printf("\t\t\t                            请登录或注册\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                               1.登录\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                               2.注册\n");printf("\t\t\t                        --------------------\n");printf("\t\t\t                               3.取消\n");printf("\t\t\t                        --------------------\n");choice = _getch();if (choice == '1') { //登录Login(0);break;}else if (choice == '2') { //注册Registe(&studentHead, &studentRear);break;}else if (choice == '3') //取消,返回欢迎界面break;} while (1);break;case '2':Login(1); break; //管理模式case '3':Help(); break; //帮助case '4':exit(0); //退出系统}} while (1);return 0;
}

… …
其他代码请见程序源码!

后记

本程序仅供学习和参考,请勿抄袭或另作他用。

感谢观看,有什么问题可在下方评论区进行评论,若觉得本文章写得不错,还请点个赞呢。

关注我,收看更多精彩!( • ̀ω•́ )✧求点赞、评论、收藏、关注


http://chatgpt.dhexx.cn/article/Z9YddHbt.shtml

相关文章

C语言实现班级档案管理系统

C语言课设题目要求: 根据自己所在班级人数,通过该系统实现对该班级学生的档案信息的管理,信息包括:学号,姓名,性别,年龄,身高,体重,省份,专业&…

C语言课设--班级档案管理系统(设计文档+源码)

文章目录 一、作业要求1. 问题描述2. 功能要求 二、问题分析1.数据结构(1)学生信息(2)数据存放① 结构体数组② 链表 (3)储存结构设计 2.模块划分3.模块功能分析(1)主控模块——用户…

基于Python班级管理系统毕业设计-附源码171809

目 录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2 基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

Python+班级管理系统 毕业设计-附源码171809

目 录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2 基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

C语言课设班级档案管理系统(大作业)

一、设计功能(文章仅供参考) 1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。 2、本系统显示这样的菜单: 请选择系统功能项: a. 学生基本信息录入 b. 学生基本信息显示 c. 学生…

C语言:班级成绩管理系统

文章目录 前言:程序要求说明代码main.cdef.cmyIO.cfile.cmenu.cfunction.c 前言: 有朋友最近在做c语言课设,要求写一个班级成绩管理系统,便写份简单的代码来玩。代码原创,未参考任何其他人的代码 程序要求 说明 本程序…

班级档案管理系统(C语言)

这是本人基本学完C语言时做的一个课程设计,希望能够帮到大家(设计要求如上图片)。 怎么说呢?这个也是我第一次写课程设计,准确来说,对于第一次确实时有难度的。 现在我要分享我写这个课程设计的一些心得分…

学生信息管理系统----班级信息管理

嵌入班级信息到System页面 这一部分要实现班级信息的相关操作。   还是在名为servlet的package下创建一个显示班级列表的Servlet——ClazzServlet。这样取名字是避免与系统关键字class起冲突,以免出现不必要的麻烦。 public class ClazzServlet extends HttpServ…

数据库系统及应用——班级管理系统

我的GitHub网址 数据库技术 在本次设计中,用SQL Server建了六个表用来存储基本信息,分别为Tb_Student (学生信息表)、Tb_Course(课程信息表)、Tb_Course2(选修课程表)、Tb_ScoreSt…

班级管理系统的设计与实现/java/SSM

SSM班级管理系统 摘 要 随着社会的发展,计算机的优势和普及使得SSM班级管理系统的开发成为必需。SSM班级管理系统主要是借助计算机,通过对首页、商铺信息、班级综合评测数据、综合评测数据商品、新闻资讯、我的、跳转到后台、购物车等信息进行管理。减…

学生管理系统

学生信息管理系统设计 一、需求分析 1、开发背景: 信息化已经渗透到我们生活的方方面面,学校信息化的发展也是一种不可避免的趋势。伴随着高等院校招生规模的不断扩大,传统人工管理信息的方法不但不能满足这种管理上的需求,而且…

基于Java的班级管理系统的设计与实现(论文+源码)_kaic

摘 要 伴随着信息技术不断的飞速发展,信息技术给现在的生活也在带来翻天覆地的变化。信息时代的到来已经成为一种趋势,人类的发展历史正在进入到一个新的时代。信息技术已经在生活中的各个领域得到普及以及被应用。班级管理在信息技术发展之前一直都是…

班级管理系统(SSM+LayUI)

项目预览 1.项目预览 获取项目q 2300852495(有偿) 项目预览地址 项目源码 角色分类账号密码管理员1705145123老师170507111123学生170507106123 2.系统功能介绍 3.开发环境 系统开发及运行环境 班级管理系统开发环境如下: 操作系统&…

C++课程设计班级管理系统

整体代码展示&#xff1a;借鉴作业的同学可以直接复制粘贴ctrlACV一气呵成&#xff0c;代码可以直接运行。如果怕和同学的重复了再改下参数名就可以&#xff0c;不过记得先备份一份哦。 如果觉得对你们有用还请不要忘记一键三连哟。ヾ(≧▽≦*)o #include <iostream> #i…

c语言编译器好玩的代码,读懂这4个函数,528行代码,你也可以实现一个C语言编译器...

引言 自从华为方舟编译器横空出世,一举成为全民网红之后,一下子点燃了大家对编译器的热情。不过,对于大多数人来说,编译器依旧是遥不可及的神秘存在。 今天,介绍一个国外大牛写的C语言编译器 - C4,揭开编译器的神秘面纱。原来实现一个具备基本功能的编译器,竟是如此简单…

c语言编译器 dev,1.1开篇一:C语言编译器的选择---Dev C++

目录&#xff1a; 1.Dev C的下载&安装&#xff1a; 2.Dev C的使用&#xff1a; 前言&#xff1a; 那么多编译器&#xff0c;为什么选择Dev C&#xff1f;理由有下 理由一&#xff1a;Dev C 体积比较小&#xff0c;不占用太多的内存。 理由二&#xff1a;Dev C 打开速度快&a…

C语言推荐编译器

前言&#xff1a;vs虽然好,但是2015往后的版本相对使用起来比较复杂,对小白不太友好 既然是第一次打C语言,就要使用一个简洁明了,通俗易懂的编译器,这里 推荐 小熊猫devC,这非常的简洁,没有过多的插件,点击下方链接就可以下载&#xff01; DevC官方下载-DevC中文最新版下载(…

C语言编译器Visual Studio官方正版下载安装

首先打开微软官网。 微软官网https://www.microsoft.com/zh-cn/进入Visual Studio的产品介绍页。 一般我们用的是win系统。 点击下载。 选择社区版&#xff0c;因为其他版本要花钱&#xff0c;专业版和企业版。 打开安装包。 选择c&#xff0c;确定没选错&#xff0c;接下来进行…

【Linux03-基本工具之GCC】Linux下的C语言编译器

前言 接上篇&#xff0c;继续学习基本工具。 三、gcc 是什么 Linux下的C语言编译器&#xff08;C的编译器是g&#xff0c;用法选项基本一样&#xff09;。 既然是编译器&#xff0c;我们就再来加点餐…… 链接其实分为两种类型&#xff1a;静态链接和动态链接&#xff0…

初学者-C语言基础练习(二)——C语言编译器的使用方法

安装完之后我们就可以开始我们的程序编写了&#xff0c;但是这里还是有必要讲一下初学者该注意的事项。 1.拒绝堆排多个文件 2.切记不能使用中文输入&#xff0c;编写程序一定要在英文状态下编写&#xff0c;注释内容除外 3.每个语句结束不要忘记分号 说完这三个注意了&am…