大学生考勤系统再升级--增加老师信息 获取系统时间版本

本文主要是介绍大学生考勤系统再升级--增加老师信息 获取系统时间版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现的主要功能是:

新设密码功能,只有输入正确密码方可进入真正的大学生考勤系统,以此和网上搜到的大学生考勤系统做区分

a 新增学生和老师信息数据(学生姓名,辅导员老师姓名,班级,考勤结果)

考勤时间从系统自动获取

b 查找数据(可按学号、姓名、考勤日期等查找)。

c 修改学生记录(可以先查找,再修改)。

d 删除学生记录(请参考上面修改的处理)。

e 显示学生考勤数据列表(可显示部分或全部)。

f 排序(可按学号、姓名、考勤日期等排序)。

g 数据统计(对考勤数据统计分析,统计完成后,可以通过考勤系统中得出考勤明细表,考勤日报表、考勤汇总表、考勤异常表,请假汇总表等)。

h 保存数据到文件中并从文件中读入数据。&num);

有需要完整源码的私信联系我

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <stdbool.h> // 添加头文件以使用布尔类型
#include <time.h>
#define maxsize 15
#define maxnum 1000
typedef struct {char Teacher_Name[maxsize];char Name[maxsize];char Class_Number[maxsize];char Attandance_date[maxsize];char Attandance_Result[maxsize];
} student;student Students[maxnum];//下面是代码中包括的函数及其说明://读取并返回存储在文件 mima.txt 中的密码。
char *password()://检查输入的密码是否与文件 mima.txt 中存储的密码匹配,返回 1 表示匹配,返回 0 表示不匹配。
int check(char *ps)://修改文件 mima.txt 中的密码为新密码 nw。
void newpassword(char *nw)://获取当前系统日期并将其格式化为字符串存储在 datetime_str 中。
void get_current_datetime(char *datetime_str, size_t max_len)://等待用户按下回车键。
void wait_for_Enter()://将日期字符串 str 转换为整数格式,以便进行比较。
int convert(char str[])://qsort 的比较函数,用于按日期对学生信息进行排序。
int compare_dates(const void *a, const void *b)://将 b 学生信息复制到 a。
void copy(student *a, student *b)://打印提示信息 pinfo,并读取用户输入存储到 desinfo 中。
void setInfo(char pinfo[], char desinfo[])://打印所有学生的详细信息。
void PrintAllInformation()://打印所有学生的部分信息(姓名、考勤日期、考勤结果)。
void PrintPartInformation()://添加学生信息,并记录当前日期为考勤日期。
void ADD()://根据辅导员姓名、学生姓名或考勤日期查找学生信息。
void Find()://修改系统中已有的学生信息,支持按辅导员姓名、学生姓名或考勤日期进行修改。
void Change()://根据辅导员姓名或学生姓名删除学生信息。
void Delete()://根据用户选择,打印部分或全部学生信息。
void Print()://交换两个学生的所有信息。
void exchange(student *a, student *b)://根据辅导员姓名、学生姓名或考勤日期对学生信息进行排序并打印。
void Order()://打印考勤明细表,并生成相应的 CSV 文件。
void Detail_Print()://打印指定日期的考勤日报表,并生成相应的 CSV 文件。
void Daily_Print()://打印考勤异常表(考勤结果不是“出勤√”的学生),并生成相应的 CSV 文件。
void Informal_Print()://打印请假汇总表(考勤结果为“事假▲”或“病假O”的学生),并生成相应的 CSV 文件。
void AskForLeave_Print()://根据用户选择,打印考勤明细表、考勤日报表、考勤异常表或请假汇总表。
void Statistics()://主函数,处理密码验证、菜单显示和调用相应的功能函数。
int main(){
int i, a, b = 1;char str[10];int k=0,j=0;char nw[50];char password[50];printf("-----------请输入密码(初始密码123456)----------\n");while((str[k]=_getch())!='\r'){printf("*");k++;}str[k]='\0';if(check(str)){printf("\n密码正确\n");system("cls");FILE *fp= fopen("exist.txt", "at+");if (!fp) {printf("错误!未能打开文件\n");exit(0);}fscanf(fp, "%d", &num);//读入已经在系统中的学生的个数 printf("当前系统中储存的学生个数:%d人\n", num);for (i = 0; i < num; i++) {//读入系统中学生的信息 fscanf(fp, "%s%s%s%s%s", &Students[i].Teacher_Name, &Students[i].Name, &Students[i].Class_Number, &Students[i].Attandance_date, &Students[i].Attandance_Result);}fclose(fp);while (b != 0) {printf("==========================================================\n");printf("===================1.新增学生数据=========================\n");printf("===================2.查找学生数据=========================\n");printf("===================3.修改学生记录=========================\n");printf("===================4.删除学生记录=========================\n");printf("===================5.显示学生考勤的数据列表===============\n");printf("===================6.对指定数据进行排序===================\n");printf("===================7.进行数据统计=========================\n");printf("===================8.修改密码=============================\n");printf("===================9.退出系统=============================\n");scanf("%d", &a);switch (a) {case 1:ADD();break;case 2:Find();break;case 3:Change();break;case 4:Delete();break;case 5:Print();break;case 6:Order();break;case 7:Statistics();break;case 8:printf("请输入新的密码\n");scanf("%s",nw);newpassword(nw);break; case 9:printf("已退出\n");b = 0;break;}system("cls");//清屏函数,为了使界面更加美观 }//在最后把信息输入到文件,保留以备下次运行使用......  

这篇关于大学生考勤系统再升级--增加老师信息 获取系统时间版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058417

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

java时区时间转为UTC的代码示例和详细解释

《java时区时间转为UTC的代码示例和详细解释》作为一名经验丰富的开发者,我经常被问到如何将Java中的时间转换为UTC时间,:本文主要介绍java时区时间转为UTC的代码示例和详细解释,文中通... 目录前言步骤一:导入必要的Java包步骤二:获取指定时区的时间步骤三:将指定时区的时间转换为UTC时间步

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Spring Boot中获取IOC容器的多种方式

《SpringBoot中获取IOC容器的多种方式》本文主要介绍了SpringBoot中获取IOC容器的多种方式,包括直接注入、实现ApplicationContextAware接口、通过Spring... 目录1. 直接注入ApplicationContext2. 实现ApplicationContextA

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日