简介

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

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

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

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

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

GitHub链接:班级考勤管理系统

目录

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

程序流程

程序大概流程如下图:

功能展示

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

欢迎界面(初始界面)

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

帮助

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


注册

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


登录

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


用户菜单界面

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

查看个人信息

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

确认个人考勤

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


查询考勤信息

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



统计缺勤人员

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




修改密码

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


管理菜单界面

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

查看学生信息

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


添加考勤信息

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

删除考勤信息

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

修改考勤信息

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



超级管理权限

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


初始化系统

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

代码展示

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

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

数据结构

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

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;
}

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

后记

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

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

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

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

  1. 数据结构课程设计-班级考勤管理系统

    数据结构课程设计-班级考勤管理系统 写这个博客,主要是为了总结一下,之前写过的东西,方便以后回来看看,写得不好,勿喷!!! 题目描述: 设计一个对本班所有人员进行考勤的管理系统,要求系统管理员(班长. ...

  2. 数据结构大作业之停车场管理系统

    数据结构大作业之停车场管理系统 安排: 1. 分析停车场的数据属性,并依据停车场管理的功能要求,确定模拟系统设计方案: 2. 完成停车场管理的数据结构设计工作,包括栈和队列的逻辑结构和存储结构等: 3 ...

  3. 班级考勤管理系统 数据结构 C语言

    程序概述 开发环境 开发程序的工具Microsoft Visual C++ 6.0,(简称Visual C++ 6.0.VC++ 6.0或VC 6.0)是Microsoft公司推出的以C++语言为基础 ...

  4. C/C++《数据结构大作业》

    C/C++<数据结构大作业> 要求 一.作业目的 1. 掌握用数据结构的知识进行程序设计. 2. 应用所学的数据结构完成一个具有一定实际意义的应用程序的设计.编码.调试,锻炼实践动手能力, ...

  5. CC++《数据结构大作业》

    C/C++<数据结构大作业> 要求 一.作业目的 1. 掌握用数据结构的知识进行程序设计. 2. 应用所学的数据结构完成一个具有一定实际意义的应用程序的设计.编码.调试,锻炼实践动手能力, ...

  6. C语言霍夫曼编码压缩,数据结构大作业——哈夫曼编码压缩BMP格式文件

    数据结构大作业--哈夫曼编码压缩BMP格式文件 首先需要了解BMP图像格式 BMP图像格式详解 其次需要了解哈夫曼编码如何对BMP文件进行压缩 哈夫曼压缩与解压缩 编程部分 使用的头文件 虽然这里用了 ...

  7. 学委作业管理系统c语言,c语言大作业-学生信息管理系统.doc

    c语言大作业-学生信息管理系统.doc 课程设计报告书 题目:学生信息管理系统设计 学 院 电子与信息学院 专 业 电子信息类 学生姓名 学生学号 指导教师 课程编号 135160 课程学分 1学分 ...

  8. 数据结构大作业——银行排队系统

    数据结构大作业--银行排队系统 离散事件模拟--银行业务处理 题目分析 声明部分 辅助函数 初始化窗口节点 创建顾客节点 比较四个窗口的排队人数 输出离开顾客的信息 主要函数 完整的头文件代码 离散事 ...

  9. 数据结构大作业--迷宫问题

    数据结构大作业–迷宫问题 上图: 代码有详细注解 迷宫自动生成问题单独讨论 当然由于出口随机的原因右小概率会出现bug(这无伤大雅) 首先我们都知道,迷宫只有一条正确的道路. 这个时候请把自己想象成一 ...

最新文章

  1. 目标检测中特征融合技术(YOLO v4)(下)
  2. 数据结构与算法:19 排序
  3. 运行返回签名不正确_不正确运行废气治理RTO设备容易引起爆炸,注意事项有哪些?...
  4. 动态规划与卫星任务规划
  5. Android开发之android_apk 在线安装(源代码分享)
  6. 双击“本地连接”打不开无反应的解决方法
  7. Adnroid提高效率之资源文件改名
  8. 【SSL】调用HTTPS://服务遇到错误:unable to find valid certification path to requested target
  9. 6/7 SELECT语句:过滤(正则表达式REGEXP)
  10. Archive object standard check
  11. Shell编程:简洁的 Bash Programming 技巧续篇
  12. (转)Spring Boot 2 (八):Spring Boot 集成 Memcached
  13. mysql更改安装路径6_关于mysql安装后更改数据库路径方法-Centos6环境
  14. python分割压缩_Python读取分割压缩TXT文本文件实例
  15. JavaScript 游戏开发:手把手实现碰撞物理引擎
  16. Excel VBA快速去除Excel中的所有公式
  17. blos硬盘启动台式计算机,怎么进bios设置硬盘启动顺序|电脑bios硬盘启动设置方法...
  18. 可能致癌的几种化妆品
  19. Makefile中wildcard函数的应用理解
  20. java h5 视频播放_selenium(java)处理HTML5的视频播放

热门文章

  1. 英语dyamaund钻石dyamaund单词
  2. locate用主动还是被动_主动形式表被动意义
  3. 这是一个个人的“云图库”
  4. JS实现关闭当前子窗口,刷新父窗口及调用父窗口的方法
  5. 新地理信息时代的信息化测绘
  6. iOS YYTextView使用笔记(富文本使用常见问题整理)
  7. QT入门基础认知(三个常用类、三种对话框类型、信号和槽)
  8. JS 大文件分割上传
  9. Spring Boot2 redis
  10. Python 画图学习入门