考勤管理系统模板_第1页
考勤管理系统模板_第2页
考勤管理系统模板_第3页
考勤管理系统模板_第4页
考勤管理系统模板_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考勤管理系统资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。第一章系统概述1.1系统开发的背景与意义1.1.1系统开发背景现在不论哪个企业,都要进行考勤,一些企业在考勤管理方面用了大量的人力和财力,不说准确度和可信度如何,其效率很低,而且容易出错,不利于管理。因此人工考勤已经很难再满足企业规范化管理的要求,随着数据库技术的发展和企业信息化建设的进行,使用计算机管理考勤成为一种主流趋势,它不但为企业减少了人力财力的付出,而且也大大减轻了考勤工作人员的工作量。本文系统的阐述了企业考勤管理设计开发的全过程。包括系统需求调查分析,概念结构设计,逻辑结构设计等部分。1.1.2系统开发意义开发本系统的目的,就是要解决当前企业中关于员工出勤管理中所面临的一系列问题。开发出企业考勤管理系统能有效地提高企业办事效率,解决当前员工出勤管理问题,实现员工请出勤信息和缺勤信息对企业领导透明,使管理人员及时把握员工的情况,及时与员工沟通,提高生产质量。第二章系统需求分析2.1系统功能要求(1)记录每个员工每天所有进入公司的时刻和离开公司的时刻。(2)每天结束时自动统计当天的工作时间(3)每天结束时自动统计当天迟到或早退的次数。(4)对于弹性工作制,每天结束时自动统计当月的工时,并自动算出当月欠缺或富余的时间(5)每个月末统计该月的工作时间判断是否足够(6)每个月末统计该月的工作天数并判断是否足够(7)管理人员查询并修改工作时间(特殊情况下修改)(8)管理人员账户管理(如设置密码等)(9)管理人员设定早退及迟到的条件,每个月的工作时间(10)管理人员设定每个月的工作日期及放假日期2.2需求分析概述实际的管理和记录工作非常需要快速获知各个部门员工的每日出勤情况,以便于及时向高层管理者反映员工的出勤,缺勤情况。当前,由于负责考勤的员工,工作任务比较多,而且还都是重复数据,让工作者没有办法及时的向上报告。工作问题不能及时处理。针对以上的情况,我们提出企业考勤管理系统,实现网上考勤任务,以减轻考勤人员的工作量。我公司准备开发员工考勤管理系统,完成员工基本信息维护、企业的部门信息维护、企业基本考勤类型的维护、员工考勤的管理、员工考勤的查询与分析。实现人事考勤的需要,包括员工迟到、早退的情况的记录,在每个月底计算工资对员工和对员工进行绩效评估的时候,对员工整个月的考勤记录进行查询和统计。2.3系统层次划分设定工作放假日期统计工作时间记录时刻统计迟到早退次数统计工时设置密码设定迟到早退条件判断工作天数足够判断工作时间足够查询修改工作时间考勤系统管理管理系统整合系统考勤系统设定工作放假日期统计工作时间记录时刻统计迟到早退次数统计工时设置密码设定迟到早退条件判断工作天数足够判断工作时间足够查询修改工作时间考勤系统管理管理系统整合系统考勤系统毕业设计代做QQ936123580634579博士硕士学生研究生留学生论文代写程序代做软件制作网站开发图2.1系统层次图员工刷卡2.4系统数据流图员工刷卡产生数据进出时间信息录入进出情况进出记录分析数据传送统分析数据数据统计录入迟到情况迟到记录统计数据统计录入早退情况计进早退记录统迟出录入准备数据录入工作时间情况计到记考勤管理系统时间记录早记录考勤管理系统退录统计信息工作日期放假日期统计工作时间记录统计信息评估参照已统计信息评估职称表完整的考勤数据月度考勤统计图2.2系统数据流程图登陆员工考勤管理系统帐号和核对密码查询考勤统计登陆员工考勤管理系统月度考勤统计密码查询日期情况工作日期放假日期图2.3系统查询数据流程图2.5数据字典(1),数据项描述数据项别名类型长度取值范围取值含义含义说明员工编号ynobigint0000000至9999999前三位为部门编号,后四位为顺序编号唯一标识每个员工员工姓名ynamechar3规范化唯一标识每个员工员工性别ysexchar”男”或”女”规范化性别是区分员工的一个大致范围职位yzhibigint标识员工工作性质入职时间ytimebigint至2050日期进入职位时间员工年龄yageint20至70员工年龄的允许范围唯一标识员工年龄密码ysecretint000000至9999996位登陆密码唯一标识每个人的信息表2-1数据项描述表(2)数据结构描述数据结构说明组成员工信息是考勤管理子系统的主体数据结构,定义了一个员工的有关信息员工编号,员工姓名,员工性别,出生日期,职位,密码部门信息是考勤管理子系统的主体数据结构,定义了一个部门的有关信息部门编号,部门名称表2-2数据结构描述(3)数据流描述数据流说明数据流来源数据流去向组成平均流量高峰期流量核对密码根据不同人员相应的权限登录时的信息考勤管理系统管理员的帐号密码与普通员工的帐号密码每天传输1000次1500次完整的考勤数据员工的考勤数据月度考勤统计工资评估月度考勤编号、员工编号、日期、累计正常工作时间迟到次数、早退次数、旷工次数每月传输1500次1500次表3-3数据流描述(4)数据存储数据存储说明流入数据流流出数据流组成数据量存取方式月度考勤统计记录员工每月的考勤情况一个月的信息统计统计好的考勤数据月度考勤编号、员工编号、日期、正常工作时间、迟到次数、早退次数、旷工次数每月1500次更新,顺序检索表3-4数据存储(5)处理过程处理过程说明输入数据流输出数据流处理登录用正确的账号登录账号和密码核对密码要求密码正确,而且根据账户名来区分管理员和普通员工录入数据将准备的数据依次录入准备的出差,请假,加班,出勤的数据录入正常工作,迟到早退,出勤的情况要求数据根据其内容分别编入不同的记录中修改数据根据相应的评估方法来修改数据完整的考勤数据修改数据单把错误数据修改成正确数据表3-5处理过程

第三章系统总体设计3.1系统总体设计目标经过调查、信息流程分析、数据收集,并结合需求分析,明确了该子系统的功能:(1)给员工编号,登记其基本信息。(2)给员工配置信息,天下班时间,每天工作时间(3)对员工的考勤数据进行登记,并进行每日和月度考勤统计。(4)对员工的月度考勤统计的结果来核算员工工资和工作放假日期。3.2系统概念设计3.2.1概念模型(E-R图)员工员工员工号员工姓名员工号员工姓名职位密码员工年龄员工性别职位密码员工年龄员工性别图3.1员工属性图刷卡机刷卡机规格刷卡机名称刷卡机号规格刷卡机名称刷卡机号图3.2刷卡机属性图管理员号性别管理员管理员号性别管理员姓名年龄姓名年龄图3.3管理员属性图员工姓名员工号员工姓名员工号密码员工密码员工职位职位员工性别员工年龄员工性别员工年龄上班的时间m上班的时间每天工作时间每天工作时间记录记录早退的次数迟到的次数下班的时间早退的次数迟到的次数下班的时间管理员号剩余的时间管理员号剩余的时间姓名刷卡机号统计n姓名刷卡机号统计管理员刷卡机mn管理员刷卡机工作天数性别年龄规格刷卡机名称工作天数性别年龄规格刷卡机名称图4.4系统E-R图3.2.2关系模式员工(员工号,姓名,性别,年龄,职位,密码,入职时间)记录数据(员工号,刷卡机号,上班的时间,下班的时间,每天工作时间)刷卡机(刷卡机号,刷卡机名称,规格)统计数据(员工号,刷卡机号,剩余的时间,迟到的次数,早退的次数,工作天数)管理员(管理员号,姓名,性别,年龄)员工表(employee)列名别名类型长度备注员工号ynobigint6设为主码员工姓名ynamechar20员工性别ysexchar2年龄ygageint3职位ygzhwchar6密码secretint6入职时间ygrzhtime8表3-1员工表记录数据表(data_record):列名别名类型长度备注员工号ynobigint6设为主码刷卡机号sknobigint15设为主码上班的时间ondutytimedatatime4下班的时间offdutytimedatatime4每天工作时间worktimechar4表3-2记录数据表刷卡机表(skj):列名别名类型长度备注刷卡机号sknobigint15设为主码刷卡机名称sknamechar8规格skggchar10表3-3刷卡机表统计数据表(statistics_data):列名别名类型长度备注员工号ynobigint6设为主码刷卡机号sknobigint15设为主码剩余的时间ljworktimechar10迟到的次数latetimesint2早退的次数leavetimesint2工作天数workdaybigint2表3-4统计数据表管理员表(Administrator)列名别名类型长度备注管理员号anobigint6设为主码姓名anamechar20性别asexchar2年龄aageint3表3-5管理员表第四章数据库系统实现4.1系统实现工具简介4.1.1PowerDesigner建模工具简介提高软件质量,开发周期,而且使软件更能够适应业务需求的变化,以提高投资回报率,是每个企业所面临的、需要解决的关键问题。软件建模为是提高与有效控制软件质量的解决之道。近些年来为大家关注的主要是数据设计模型、对象模型、和业务流程模型。由于历史原因,面向数据架构,开发以及业务分析的建模工作总是被单独购买,彼此之间没有集成或共享信息。可是,企业不断需要更集成的建模套件,即集成化企业级建模工具,来支持在共享环境下,企业整个架构的不同方面的全面建模。当前各主要的建模工具厂商如SybasePowerDesigner,IBMRationalRose,ComputerAssociates的ERWin等都在加强各自建模工具的融合与集成。PowerDesigner经过近20年的发展,已经在原有的数据建模上,形成一套完整的集成化企业级建模解决方案。PowerDesigner系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员BA和开发人员能够对其裁剪以满足她们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开发单位能够根据其项目的规模和范围来使用她们所需要的工具。PowerDesigner灵活的分析和设计特性允许使用一种结构化的方法有效地创立数据库或数据仓库,而不要求严格遵循一个特定的方法学。PowerDesigner提供了直观的符号表示使数据库的创立更加容易,并使项目组内的交流和通讯标准化,同时能更加简单地向非技术人员展示数据库和应用的设计。PowerDesigner不但加速了开发的过程,也向最终用户提供了管理和访问项目的信息的一个有效的结构。它允许设计人员不但创立和管理数据的结构,而且开发和利用数据的结构针对领先的开发工具环境快速地生成应用对象和数据敏感的组件。开发人员能够使用同样的物理数据模型查看数据库的结构和整理文档,以及生成应用对象和在开发过程中使用的组件。应用对象生成有助于在整个开发生命周期提供更多的控制和更高的生产率。PowerDesigner是一个功能强大而使用简单工具集,提供了一个复杂的交互环境,支持开发生命周期的所有阶段,从处理流程建模到对象和组件的生成。PowerDesigner产生的模型和应用能够不断地增长,适应并随着你的组织的变化而变化。PowerDesigner包含六个紧密集成的模块,允许个人和开发组的成员以合算的方式最好地满足她们的需要。这六个模块是:PowerDesignerProcessAnalyst,用于数据发现。PowerDesignerDataArchitect,用于双层,交互式的数据库设计和构造。PowerDesignerAppModeler,用于物理建模和应用对象及数据敏感组件的生成。PowerDesignerMetaWorks,用于高级的团队开发,信息的共享和模型的管理。PowerDesignerWarehouseArchitect,用于数据仓库的设计和实现。PowerDesignerViewer,用于以只读的、图形化方式访问整个企业的模型信息。PowerDesigner主要包括以下几个功能部分(1)DataArchitect这是一个强大的数据库设计工具,使用DataArchitect可利用实体-关系图为一个信息系统创立"概念数据模型"-CDM(ConceptualDataModel)。而且可根据CDM产生基于某一特定数据库管理系统(例如:SybaseSystem11)的"物理数据模型"-PDM(PhysicalDataModel)。还可优化PDM,产生为特定DBMS创立数据库的SQL语句并能够文件形式存储以便在其它时刻运行这些SQL语句创立数据库。另外,DataArchitect还可根据已存在的数据库反向生成PDM,CDM及创立数据库的SQL脚本。(2)ProcessAnalyst这部分用于创立功能模型和数据流图,创立"处理层次关系"。(3)AppModeler为客户/服务器应用程序创立应用模型。(4)ODBCAdministrator此部分用来管理系统的各种数据源。(5)XML文件能够使用工具生成相应的XML文件,或者用XML文件生成相关模型4.1.2SQLServer简介SQLServer是一个关系数据库管理系统,它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了。Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本;Sybase则较专注于SQLServer在UNIX操作系统上的应用。在本书中介绍的是MicrosoftSQLServer以后简称为SQLServerSQLServer是Microsoft公司推出的SQLServer数据库管理系统的一个版本。该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows的大型多处理器的服务器等多种平台使用。SQLServer的特性Microsoft®SQLServer?的特性包括:(1).Internet集成。SQLServer数据库引擎提供完整的XML支持。它还具有构成最大的Web站点的数据存储组件所需的可伸缩性、可用性和安全功能。(2).可伸缩性和可用性。同一个数据库引擎能够在不同的平台上使用,从运行MicrosoftWindows®98的便携式电脑,到运行MicrosoftWindows数据中心版的大型多处理器服务器。(3).企业级数据库功能。SQLServer关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。(4).易于安装、部署和使用。SQLServer中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用SQLServer的过程。SQLServer还支持基于标准的、与WindowsDNA集成的程序设计模型,使SQLServer数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付SQLServer应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。4.1.2企业考勤管理系统的实现#include<stdio.h>#include<stdlib.h>#include<string.h>#include"process.h"#include<conio.h>#defineMAX_COUNT30structemployee{intid;charname[20];chardepartment[20];};structdate/{intyear;intmonth;intday;};structattendance{intid;intlate;intearly;charname[20];structdatedat;};structstatistic{intid;intlate_count;intearly_count;charname[20];};intCOUNT=0;intFLAG_pause=1;system(”pause”)structemployeeperson[MAX_COUNT];structdataBASE_DATA={,3,1};voidinput_employee(){system("cls");FILE*fp1,*fp2;structemployeetemp; fp1=fopen("information1.txt","w"); fp2=fopen("information2.txt","w"); printf("\t\t\t\t员工信息\n"); printf("\n\t\t\t\tID\t姓名\t部门\n\t\t\t\t"); fprintf(fp1,"\t\t\t\t输入员工信息\n"); fprintf(fp1,"\n\t\t\t\tID\t姓名\t部门\n"); scanf("%d%s%s",&temp.id,,temp.department); while(temp.id!=0) { person[COUNT]=temp; printf("%d",temp.id);COUNT++;fprintf(fp1,"\t\t\t\t%d\t%s\t%s\n",temp.id,,temp.department); fprintf(fp2,"%d\t%s\t%s\n",temp.id,,temp.department); printf("\t\t\t\t");scanf("%d%s%s",&temp.id,,temp.department);} fclose(fp1); fclose(fp2);}voidread_file(){FILE*fp;COUNT=0;if((fp=fopen("information2.txt","r"))==NULL){printf("cantnotopenfile\n");exit(1);}while(!feof(fp)){fscanf(fp,"%d%s%s",&person[COUNT].id,person[COUNT].name,person[COUNT].department);COUNT++;}COUNT--;fclose(fp);}voidwrite_file(){inti;FILE*fp1,*fp2;fp1=fopen("information1.txt","w+"); fp2=fopen("information2.txt","w+"); if(fp1==NULL||fp2==NULL) {printf("cantnotopenfile\n");exit(1);}fprintf(fp1,"\t\t\t\t输入员工信息\n"); printf(fp1,"\n\t\t\t\tID\t姓名\t部门\n");for(i=0;i<COUNT;i++){fprintf(fp1,"\t\t\t\t%d\t%s\t%s\n",person[i].id,person[i].name,person[i].department); fprintf(fp2,"%d\t%s\t%s\n",person[i].id,person[i].name,person[i].department);}fclose(fp1);fclose(fp2);}voidoutput_employee(){inti;intid;intchoice;chartemp[20];system("cls");read_file();printf("\n\t\t\t\t\t输出员工信息\n");printf("\n\t1.输出全体员工信息\t");printf("2.按姓名输出员工信息\t");printf("3.按ID输出员工信息\t");printf("4.按部门员工信息\t");printf("5.返回主菜单\n");printf("\n\t请选择(1~5):\t");start:scanf("%d",&choice);if(choice<1||choice>5){printf("\t输入错误,请重输:\t");gotostart;}switch(choice){case(1):{printf("\t\t\tID\t姓名\t部门\n");for(i=0;i<COUNT;i++)printf("\t\t\t%d\t%s\t%s\n",person[i].id,person[i].name,person[i].department);break;}case(2):{printf("\t\t\t输入姓名:");scanf("%s",temp);printf("\t\t\tID\t姓名\t部门\n");for(i=0;i<COUNT;i++)if(strcmp(person[i].name,temp)==0)printf("\t\t\t%d\t%s\t%s\n",person[i].id,person[i].name,person[i].department);break;}case(3):{printf("\t\t\t输入ID:");scanf("%d",&id);printf("\t\t\tID\t姓名\t部门\n");for(i=0;i<COUNT;i++){if(person[i].id==id){printf("\t\t\t%d\t%s\t%s\n",person[i].id,person[i].name,person[i].department);break;}}break;}case(4):{printf("\t\t\t输入部门:");scanf("%s",temp);printf("\t\t\tID\t姓名\t部门\n");for(i=0;i<COUNT;i++)if(strcmp(person[i].department,temp)==0)printf("\t\t\t%d\t%s\t%s\n",person[i].id,person[i].name,person[i].department);break;}case(5):break;}system("pause");}voidinsert_employee(structemployeenew_person){inti;system("cls");read_file();i=COUNT;while(person[i].id>new_person.id){person[i]=person[i-1];i--;}person[i]=new_person;COUNT++;write_file();if(FLAG_pause==0)system("pause");}voiddelete_employee(intid){inti;intj;read_file();system("cls");for(i=0;i<COUNT;i++)if(person[i].id==id) break;for(j=i;j<COUNT;j++)person[j]=person[j+1];COUNT--;write_file();if(FLAG_pause==0)system("pause");}voidedit_employee(intid){structemployeesomeone;system("cls");FLAG_pause=1;delete_employee(id);printf("\t请输入新的员工信息:\n\t\t\tID\t姓名\t部门\n\t\t\t");scanf("%d%s%s",&someone.id,,someone.department);insert_employee(someone);write_file();FLAG_pause=0;system("pause");}voidmanagement_employee(){intchoice;intid;structemployeesomeone;printf("\n\t\t\t\t\t员工信息管理\n");printf("\n\t1.输入员工信息\t");printf("2.输出员工信息\t");printf("3.插入员工信息\t");printf("4.修改员工信息\t");printf("5.删除员工\t");printf("6.返回主菜单\n");printf("\n\t请选择(1~6):\t");start:scanf("%d",&choice);if(choice<1||choice>6){printf("\t输入错误,请重输:\t");gotostart;}switch(choice){case(1):{input_employee();break;}case(2):{output_employee();break;}case(3):{printf("\t\t\t插入新员工信息\n");printf("\t\t\t请输入员工的:\n\t\t\tID\t姓名\t部门\n");printf("\t\t\t");scanf("%d%s%s",&someone.id,,someone.department);insert_employee(someone);break;}case(4):{printf("\t\t\t修改员工信息\n");printf("\t请输入要修改的员工ID:\t");scanf("%d",&id);edit_employee(id);break;}case(5):{printf("\t\t\t删除员工信息\n");printf("\t请输入要删除的员工ID:\t");scanf("%d",&id);delete_employee(id);break;}case(6):break;}}intcomputer(structdatasomeday){inti;intdays=0;if(someday.month==BASE_DATA.month)days=someday.day-BASE_DATA.day+1;else{for(i=BASE_DATA.month+1;i<someday.month;i++)switch(i){case2:days=days+28;case3:days=days+31;case4:days=days+30;case5:days=days+31;case6:days=days+30;case7:days=days+31;case8:days=days+31;case9:days=days+30;case10:days=days+31;case11:days=days+30;}days=days+someday.day;}returndays;}voidrecorder(){inti;intlate;intearly;intid;intdays;charname[20];charfilename[40];FILE*fp;structdatecurrent_date;system("cls");read_file();printf("\n\t\t\t\t考勤记录\n");printf("\n\t\t日期:");scanf("%d%d%d",¤t_date.year,¤t_date.month,¤t_date.day);days=computer(current_date);itoa(days,filename,10);strcat(filename,".txt");fp=fopen(filename,"w");fprintf(fp,"%d\t%d\t%d\n",current_data.year,current_data.month,current_data.day);printf("\n\t\tID\t姓名\t迟到\t早退\n");fprintf(fp,"ID\t姓名\t迟到\t早退\n");for(i=0;i<COUNT;i++){id=person[i].id;strcpy(name,person[i].name);printf("\n\t\t%d\t%s\t",id,name);scanf("%d%d",&late,&early);fprintf(fp,"%d\t%s\t%d\t%d\n",id,name,late,early);}fprintf(fp,"\n");fclose(fp);system("pause");}voidstatistic(){inti;intj;intk=0;intstatus=0;/intbegin_page;intend_page;charsave;charfilename[40];intyear;intmonth;intday;charID[20];charname[20];charlate[20];charearly[20];FILE*fp;structdatebegin;structdateend;structstatistictemp;structstatisticstat[30];for(i=0;i<30;i++){stat[i].early_count=0;stat[i].late_count=0;}system("cls");printf("\t\t\t统计员工考勤\n");printf("\n\t请输入起止日期\n");printf("\n\t\t起始日期:");scanf("%d%d%d",&begin.year,&begin.month,&begin.day);printf("\n\t\t终止日期:");scanf("%d%d%d",&end.year,&end.month,&end.day);begin_page=computer(begin);end_page=computer(end);for(i=begin_page;i<=end_page;i++){itoa(i,filename,10);strcat(filename,".txt");fp=fopen(filename,"r");fscanf(fp,"%d%d%d%s%s%s%s",&year,&month,&day,ID,name,late,early);if(i==begin_page){while(!feof(fp)){fscanf(fp,"%d%s%d%d",&stat[k].id,stat[k].name,&stat[k].late_count,&stat[k].early_count);k++;}k--;}else{while(!feof(fp)){fscanf(fp,"%d%s%d%d",&temp.id,,&temp.late_count,&temp.early_count);for(j=0;j<k;j++){if(temp.id==stat[j].id){status=1;if(temp.late_count==1)stat[j].late_count++;if(temp.early_count==1)stat[j].early_count++;break;}}if(status==0){stat[k].id=temp.id;strcpy(stat[k].name,);stat[k].late_count=temp.late_count;stat[k].early_count=temp.early_count;k++;}status=0;}printf("\n");}fclose(fp);}printf("\n\t\t考勤统计\n");printf("\tID\t姓名\t迟到次数\t早退次数\n");for(j=0;j<k;j++)printf("\t%d\t%s\t%d\t\t%d\n",stat[j].id,stat[j].name,stat[j].late_count,stat[j].early_count);printf("\t\t\t是否保存(y/n):\t");save=getch();if(save=='y'){printf("请输入文件名;\t");scanf("%s",filename);fp=fopen(filename,"w");fprintf(fp,"\t考勤统计\n");fprintf(fp,"ID\t姓名\t迟到次数\t早退次数\n");for(j=0;j<k;j++)fprintf(fp,"%d\t%s\t%d\t\t%d\n",stat[j].id,stat[j].name,stat[j].late_count,stat[j].early_count);fclose(fp);}system("pause");}voidsingle_quire(){intkey;intid;intflag=0;intchoice;intyear,month,day;charID[20];charname[20];charlate[20];charearly[20];charfilename[20];structdateoneday;structattendanceatten;FILE*fp;system("cls");printf("\t\t\t查询某一天的考勤\n");printf("\n\t请输入日期:\t");scanf("%d%d%d",&oneday.year,&oneday.month,&oneday.day);key=computer(oneday);itoa(key,filename,10);strcat(filename,".txt");fp=fopen(filename,"r");fscanf(fp,"%d%d%d%s%s%s%s",&year,&month,&day,ID,name,late,early);printf("\n\t1.查询全体员工考勤\t");printf("2.按ID查询\t");printf("3.按姓名查询\t");printf("4.返回主菜单\n");printf("\n\t请选择(1~4):\t");start:scanf("%d",&choice);if(choice<1||choice>4){printf("\t输入错误,请重输:\t");gotostart;}switch(choice){case(1):{printf("\t\t\tID\t姓名\t迟到\t早退\n");while(!feof(fp)){fscanf(fp,"%d%s%d%d",&atten.id,,&atten.late,&atten.early);printf("\t\t\t%d\t%s\t%d\t%d\n",atten.id,,atten.late,atten.early);}break;}case(2):{printf("\t请输入ID:\t");scanf("%d",&id);printf("\t\t\tID\t姓名\t迟到\t早退\n");while(!feof(fp)){fscanf(fp,"%d%s%d%d",&atten.id,,&atten.late,&atten.early);if(atten.id==id){flag=1;printf("\t\t\t%d\t%s\t%d\t%d\n",atten.id,,atten.late,atten.early);break;}}if(flag==0)printf("\t对不起,没有此ID的员工,谢谢!\n");break;}case(3):{printf("\t请输入姓名:\t");scanf("%s",name);printf("\t\t\tID\t姓名\t迟到\t早退\n");while(!feof(fp)){fscanf(fp,"%d%s%d%d",&atten.id,,&atten.late,&atten.early);if(strcmp(,name)==0){flag=1;printf("\t\t\t%d\t%s\t%d\t%d\n",atten.id,,atten.late,atten.early);break;}}if(flag==0){printf("\t对不起,没有此姓名的员工,谢谢!\n");}break;}case(4):break;}fclose(fp);system("pause");}voidmulti_quire(){intbegin_page,end_page,id;inti;intk;intflag=0;intchoice;intyear,month,day;charID[20];charname[20];charlate[20];charearly[20];charfilename[20];structdatebegin,end;structattendanceatten;FILE*fp;system("cls");printf("\t\t\t\t\t查询某一段时间的考勤\n");printf("\n\t请输入起止日期\n");printf("\n\t\t起始日期:");scanf("%d%d%d",&begin.year,&begin.month,&begin.day);printf("\n\t\t终止日期:");scanf("%d%d%d",&end.year,&end.month,&end.day);begin_page=computer(begin);end_page=computer(end);printf("\n\t1.查询全体员工考勤\t");printf("2.按ID查询\t");printf("3.按姓名查询\t");printf("4.返回主菜单\n");printf("\n\t请选择(1~4):\t");start:scanf("%d",&choice);if(choice<1||choice>4){printf("\t输入错误,请重输:\t");gotostart;}switch(choice){case(1):{for(i=begin_page;i<=end_page;i++){itoa(i,filename,10);strcat(filename,".txt");fp=fopen(filename,"r");fscanf(fp,"%d%d%d%s%s%s%s",&year,&month,&day,ID,name,late,early);printf("\t\t\t%d\t%d\t%d\n\t\t\t%s\t%s\t%s\t%s\n",year,month,day,ID,name,late,early);while(!feof(fp)){fscanf(fp,"%d%s%d%d",&atten.id,,&atten.late,&atten.early);printf("\t\t\t%d\t%s\t%d\t%d\n",atten.id,,atten.late,atten.early);}fclose(fp);}break;}case(2):{printf("\n\t请输入ID:\t");scanf("%d",&id);printf("\t\t\tID\t姓名\t迟到\t早退\n");for(k=begin_page;k<=end_page;k++){itoa(k,filename,10);strcat(filename,".txt");fp=fopen(filename,"r");fscanf(fp,"\n%d%d%d%s%s%s%s",&year,&month,&day,ID,name,late,early);while(!feof(fp)){fscanf(fp,"%d%s%d%d",&atten.id,,&atten.late,&atten.early);if(atten.id==id){flag=1;printf("\t\t\t%d\t%s\t%d\t%d\n",atten.id,,atten.late,atten.early);}}fclose(fp);}if(flag==0)printf("\t对不起,没有此ID的员工,谢谢!\n");break;}case(3):{printf("\n\t请输入姓名:\t");scanf("%s",name);printf("\t\t\tID\t姓名\t迟到\t早退\n");for(k=begin_page;k<=end_page;k++){itoa(k,filename,10);strcat(filename,".txt");fp=fopen(filename,"r");fscanf(fp,"%d%d%d%s%s%s%s",&year,&month,&day,ID,name,late,early);while(!feof(fp)){fscanf(fp,"%d%s%d%d",atten.id,,&atten.late,&atten.early);if(strcmp(,name)==0){flag=1;printf("\t\t\t%d\t%s\t%d\t%d\n",atten.id,,atten.late,atten.early);}}fclose(fp);}if(flag==0)printf("\t对不起,没有此姓名的员工,谢谢!\n");break;}case(4):break;}system("pause");}void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论