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

下载本文档

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

文档简介

1、华科学院数据库系统课程设计PAGE PAGE 47第一章系统概述1.1系统开发的背景与意义1.1.1系统开发背景现在不论哪个企业,都要进行考勤,一些企业在考勤管理方面用了大量的人力和财力,不说准确度和可信度如何,其效率很低,而且容易出错,不利于管理。所以人工考勤已经很难再满足企业规范化管理的要求,随着数据库技术的发展和企业信息化建设的进行,使用计算机管理考勤成为一种主流趋势,它不仅为企业减少了人力财力的付出,而且也大大减轻了考勤工作人员的工作量。本文系统的阐述了企业考勤管理设计开发的全过程。包括系统需求调查分析,概念结构设计,逻辑结构设计等部分。1.1.2 系统开发意义开发本系统的目的,就是要

2、解决目前企业中关于员工出勤管理中所面临的一系列问题。开发出企业考勤管理系统能有效地提高企业办事效率,解决目前员工出勤管理问题,实现员工请出勤信息和缺勤信息对企业领导透明,使管理人员及时把握员工的情况,及时与员工沟通,提高生产质量。第二章系统需求分析2.1系统功能要求(1)记录每个员工每天所有进入公司的时刻和离开公司的时刻。(2)每天结束时自动统计当天的工作时间(3)每天结束时自动统计当天迟到或早退的次数。(4)对于弹性工作制,每天结束时自动统计当月的工时,并自动算出当月欠缺或富余的时间(5)每个月末统计该月的工作时间判断是否足够(6)每个月末统计该月的工作天数并判断是否足够(7)管理人员查询并

3、修改工作时间(特殊情况下修改)(8)管理人员账户管理(如设置密码等)(9)管理人员设定早退及迟到的条件,每个月的工作时间(10)管理人员设定每个月的工作日期及放假日期22 需求分析概述实际的管理和记录工作非常需要快速获知各个部门员工的每日出勤情况,以便于及时向高层管理者反映员工的出勤,缺勤情况。目前,由于负责考勤的员工,工作任务比较多,而且还都是重复数据,让工作者没有办法及时的向上报告。工作问题不能及时处理。针对以上的情况,我们提出企业考勤管理系统,实现网上考勤任务,以减轻考勤人员的工作量。我公司准备开发员工考勤管理系统,完成员工基本信息维护、企业的部门信息维护、企业基本考勤类型的维护、员工考

4、勤的管理、员工考勤的查询与分析。实现人事考勤的需要,包括员工迟到、早退的情况的记录,在每个月底计算工资对员工和对员工进行绩效评估的时候,对员工整个月的考勤记录进行查询和统计。23系统层次划分设定工作放假日期统计工作时间记录时刻统计迟到早退次数统计工时设置密码设定迟到早退条件判断工作天数足够判断工作时间足够查询修改工作时间考勤系统管理管理系统整合系统考勤系统设定工作放假日期统计工作时间记录时刻统计迟到早退次数统计工时设置密码设定迟到早退条件判断工作天数足够判断工作时间足够查询修改工作时间考勤系统管理管理系统整合系统考勤系统毕业设计代做 QQ9361235 80634579博士硕士学生研究生留学生

5、论文代写 程序代做 软件制作 网站开发图2.1 系统层次图员工刷卡24 系统数据流图员工刷卡产生数据进出时间信息录入进出情况 进出记录分析数据 传送 统分析数据数据统计 录入迟到情况 迟到记录统 计数据统计 录入早退情况计 进早退记录统 迟 出录入 准备数据录入工作时间情况 计 到 记考勤管理系统时间记录 早 记 录考勤管理系统 退 录统计信息工作日期 放假日期 统计工作时间记录统计信息评 估参照已统计信息评 估职称表 完整的考勤数据 月度考勤统计 图2.2系统数据流程图登陆员工考勤管理系统帐号和 核对密码 查询考勤统计登陆员工考勤管理系统 月度考勤统计密码 查询日期情况工作日期 放假日期图2

6、.3 系统查询数据流程图25 数据字典(1),数据项描述数据项别名类型长度取值范围 取值含义含义说明员工编号ynobigint0000000至9999999前三位为部门编号,后四位为顺序编号唯一标识每个员工员工姓名ynamechar3规范化唯一标识每个员工员工性别ysexchar“男”或“女”规范化性别是区分员工的一个大致范围职位yzhibigint标识员工工作性质入职时间ytimebigint2000至2050日期进入职位时间员工年龄yageint20至70员工年龄的允许范围唯一标识员工年龄密码ysecretint000000至9999996位登陆密码唯一标识每个人的信息表2-1 数据项描述

7、表(2)数据结构描述数据结构说明组成员工信息是考勤管理子系统的主体数据结构,定义了一个员工的有关信息员工编号,员工姓名,员工性别,出生日期,职位,密码部门信息是考勤管理子系统的主体数据结构,定义了一个部门的有关信息部门编号,部门名称表2-2数据结构描述(3)数据流描述数据流说明数据流来源数据流去向组成平均流量高峰期流量核对密码根据不同人员相应的权限登录时的信息考勤管理系统管理员的帐号密码与普通员工的帐号密码每天传输1000次1500次完整的考勤数据员工的考勤数据月度考勤统计工资评估月度考勤编号、员工编号、日期、累计正常工作时间迟到次数、早退次数、旷工次数每月传输1500次1500次表3-3数据

8、流描述(4)数据存储数据存储说明流入数据流流出数据流组成数据量存取方式月度考勤统计记录员工每月的考勤情况一个月的信息统计统计好的考勤数据月度考勤编号、员工编号、日期、正常工作时间、迟到次数、早退次数、旷工次数每月1500次更新,顺序检索表3-4数据存储(5)处理过程处理过程说明输入数据流输出数据流处理登录用正确的账号登录账号和密码核对密码要求密码正确,并且根据账户名来区分管理员和普通员工录入数据将准备的数据依次录入 准备的出差,请假,加班,出勤的数据录入正常工作,迟到早退,出勤的情况要求数据根据其内容分别编入不同的记录中修改数据根据相应的评估方法来修改数据完整的考勤数据修改数据单把错误数据修改

9、成正确数据表3-5处理过程第三章系统总体设计3.1 系统总体设计目标经过调查、信息流程分析、数据收集,并结合需求分析,明确了该子系统的功能:(1)给员工编号,登记其基本信息。(2)给员工配置信息,天下班时间,每天工作时间(3)对员工的考勤数据进行登记,并进行每日和月度考勤统计。(4)对员工的月度考勤统计的结果来核算员工工资和工作放假日期。3.2 系统概念设计3.2.1 概念模型(E-R图)员 工员 工员工号员工姓名员工号员工姓名职 位密 码员工年龄员工性别职 位密 码员工年龄员工性别图3.1 员工属性图刷 卡 机刷 卡 机规 格刷卡机名称刷卡机号规 格刷卡机名称刷卡机号图3.2刷卡机属性图管理

10、员号性 别管理员管理员号性 别管理员姓 名年 龄姓 名年 龄图3.3管理员属性图员工姓名员工号员工姓名员工号密 码员 工密 码员 工职 位职 位员工性别员工年龄员工性别员工年龄上班的时 间 m上班的时 间每天工作时间每天工作时间记录记录早退的次数迟到的次数下班的时 间早退的次数迟到的次数下班的时 间管理员号剩余的时间管理员号剩余的时间姓 名刷卡机号统计 n姓 名刷卡机号统计 管理员刷卡机 m n管理员刷卡机工作天数性 别年 龄规 格刷卡机名称工作天数性 别年 龄规 格刷卡机名称图4.4 系统E-R图3.2.2 关系模式员工(员工号,姓名,性别,年龄,职位,密码,入职时间)记录数据(员工号,刷卡

11、机号,上班的时间,下班的时间,每天工作时间)刷卡机(刷卡机号,刷卡机名称,规格)统计数据(员工号,刷卡机号,剩余的时间,迟到的次数,早退的次数,工作天数)管理员(管理员号,姓名,性别,年龄)员工表(employee)列名别名类型长度备注员工号ynobigint6设为主码员工姓名ynamechar20员工性别ysexchar2年龄ygageint3职位ygzhwchar6密码secretint6入职时间ygrzhtime8表3-1 员工表记录数据表(data_record):列名别名类型长度备注员工号ynobigint6设为主码刷卡机号sknobigint15设为主码上班的时间ondutytim

12、edatatime4下班的时间offdutytimedatatime4每天工作时间worktimechar4表3-2记录数据表刷卡机表(skj):列名别名类型长度备注刷卡机号sknobigint15设为主码刷卡机名称sknamechar8规格skggchar10表3-3刷卡机表统计数据表(statistics_data):列名别名类型长度备注员工号ynobigint6设为主码刷卡机号sknobigint15设为主码剩余的时间ljworktimechar10迟到的次数latetimesint2早退的次数leavetimesint2工作天数workdaybigint2表3-4统计数据表管理员表(A

13、dministrator)列名别名类型长度备注管理员号anobigint6设为主码姓名anamechar20性别asexchar2年龄aageint3表3-5管理员表第四章 数据库系统实现4.1 系统实现工具简介4.1.1 PowerDesigner 建模工具简介提高软件质量,开发周期, 并且使软件更能够适应业务需求的变化,以提高投资回报率,是每个企业所面临的、需要解决的关键问题。软件建模为是提高与有效控制软件质量的解决之道。近些年来为大家关注的主要是数据设计模型、对象模型、和业务流程模型。由于历史原因,面向数据架构,开发以及业务分析的建模工作总是被单独购买,彼此之间没有集成或共享信息。但是,

14、企业不断需要更集成的建模套件,即集成化企业级建模工具,来支持在共享环境下,企业整个架构的不同方面的全面建模。 目前各主要的建模工具厂商如Sybase PowerDesigner, IBM Rational Rose, Computer Associates的ERWin等都在加强各自建模工具的融合与集成。PowerDesigner经过近20年的发展,已经在原有的数据建模上,形成一套完整的集成化企业级建模解决方案。PowerDesigner系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员BA和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提

15、供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。PowerDesigner灵活的分析和设计特性允许使用一种结构化的方法有效地创建数据库或数据仓库,而不要求严格遵循一个特定的方法学。PowerDesigner提供了直观的符号表示使数据库的创建更加容易,并使项目组内的交流和通讯标准化,同时能更加简单地向非技术人员展示数据库和应用的设计。 PowerDesigner不仅加速了开发的过程,也向最终用户提供了管理和访问项目的信息的一个有效的结构。它允许设计人员不仅创建和管理数据的结构,而且开发和利用数据的结构针对领先的开发工具环境快速地生成应用对象和数据敏感的组件。开发

16、人员可以使用同样的物理数据模型查看数据库的结构和整理文档,以及生成应用对象和在开发过程中使用的组件。应用对象生成有助于在整个开发生命周期提供更多的控制和更高的生产率。 PowerDesigner是一个功能强大而使用简单工具集,提供了一个复杂的交互环境,支持开发生命周期的所有阶段,从处理流程建模到对象和组件的生成。PowerDesigner产生的模型和应用可以不断地增长,适应并随着你的组织的变化而变化。 PowerDesigner包含六个紧密集成的模块,允许个人和开发组的成员以合算的方式最好地满足他们的需要。这六个模块是: PowerDesigner ProcessAnalyst,用于数据发现。

17、 PowerDesigner DataArchitect,用于双层,交互式的数据库设计和构造。 PowerDesigner AppModeler,用于物理建模和应用对象及数据敏感组件的生成。 PowerDesigner MetaWorks,用于高级的团队开发,信息的共享和模型的管理。 PowerDesigner WarehouseArchitect,用于数据仓库的设计和实现。 PowerDesigner Viewer,用于以只读的、图形化方式访问整个企业的模型信息。 PowerDesigner 主要包括以下几个功能部分(1) DataArchitect 这是一个强大的数据库设计工具,使用Dat

18、aArchitect 可利用实体-关系图为一个信息系统创建概念数据模型CDM(Conceptual Data Model)。并且可根据CDM 产生基于某一特定 数据库管理系统(例如:Sybase System 11)的物理数据模型-PDM(Physical Data Model)。 还可优化PDM,产生为特定DBMS 创建数据库的SQL 语句并可以文件形式存储以便在其他时 刻运行这些SQL 语句创建数据库。另外,DataArchitect还可根据已存在的数据库反向生成 PDM,CDM 及创建数据库的SQL脚本。 (2) ProcessAnalyst 这部分用于创建功能模型和数据流图,创建处理层

19、次关系。 (3) AppModeler 为客户/服务器应用程序创建应用模型。 (4) ODBC Administrator 此部分用来管理系统的各种数据源。 (5)XML文件 可以使用工具生成相应的XML文件,或者用XML文件生成相关模型4.1.2 SQL Server 2000简介SQL Server 是一个关系数据库管理系统,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQ

20、L Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本;Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。在本书中介绍的是Microsoft SQL Server 以后简称为SQL ServerSQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的一个版本。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运

21、行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 SQL Server 2000 的特性Microsoft SQL Server? 2000 的特性包括: (1).Internet 集成。SQL Server 2000 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。(2).可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows 98 的便携式电脑,到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。 (3).企业

22、级数据库功能。SQL Server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。 (4).易于安装、部署和使用。 SQL Server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。SQL Server 2000 还支持基于标准的、与 Windows DNA 集成的程序设计模型,使 SQL Server 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 SQL Server 应用程序,使客户

23、只需最少的安装和管理开销即可实现这些应用程序。4.1.2企业考勤管理系统的实现#include#include#include#includeprocess.h#include#define MAX_COUNT 30 struct employee int id;char name20;char department20;struct date /int year;int month;int day;struct attendance int id;int late;int early;char name20;struct date dat;struct statistic int id;in

24、t late_count;int early_count;char name20;int COUNT=0; intFLAG_pause=1;system(“pause”)struct employee personMAX_COUNT;struct data BASE_DATA=2010,3,1; voidinput_employee() system(cls); FILE *fp1,*fp2;struct employee temp;fp1=fopen(information1.txt,w);fp2=fopen(information2.txt,w);printf(tttt 员工信息n);pr

25、intf(nttttIDt姓名t部门ntttt);fprintf(fp1,tttt 输入员工信息n);fprintf(fp1,nttttIDt姓名t部门n);scanf(%d%s%s,&temp.id,,temp.department);while(temp.id!=0) personCOUNT=temp; printf(%d,temp.id); COUNT+;fprintf(fp1,tttt%dt%st%sn,temp.id,,temp.department);fprintf(fp2,%dt%st%sn,temp.id,,temp.dep

26、artment); printf(tttt);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(cant not open filen); exit(1); while(!feof(fp) fscanf(fp,%d%s%s,&personCOUNT.id,personCOUNT.name,personCOUNT.department); C

27、OUNT+; COUNT-; fclose(fp);void write_file() int i; FILE *fp1,*fp2;fp1=fopen(information1.txt,w+);fp2=fopen(information2.txt,w+);if(fp1=NULL | fp2=NULL) printf(cant not open filen); exit(1); fprintf(fp1,tttt 输入员工信息n);printf(fp1,nttttIDt姓名t部门n); for(i=0;iCOUNT;i+) fprintf(fp1,tttt%dt%st%sn,personi.id,

28、,personi.department);fprintf(fp2,%dt%st%sn,personi.id,,personi.department); fclose(fp1); fclose(fp2);void output_employee()int i;int id;int choice;char temp20; system(cls);read_file(); printf(nttttt输出员工信息n);printf(nt1.输出全体员工信息t);printf(2.按姓名输出员工信息t);printf(3.按ID输出员工信息t);print

29、f(4.按部门员工信息t);printf(5.返回主菜单n);printf(nt请选择(15):t); start:scanf(%d,&choice);if(choice5) printf(t输入错误,请重输:t);goto start; switch(choice) case(1): printf(tttIDt姓名t部门n);for(i=0;iCOUNT;i+)printf(ttt%dt%st%sn,personi.id,,personi.department);break; case(2): printf(ttt输入姓名:); scanf(%s,temp);prin

30、tf(tttIDt姓名t部门n);for(i=0;iCOUNT;i+)if(strcmp(,temp)=0)printf(ttt%dt%st%sn,personi.id,,personi.department); break; case(3): printf(ttt输入ID:); scanf(%d,&id);printf(tttIDt姓名t部门n);for(i=0;iCOUNT;i+) if(personi.id=id) printf(ttt%dt%st%sn,personi.id,,personi.department)

31、;break; break; case(4): printf(ttt输入部门:); scanf(%s,temp);printf(tttIDt姓名t部门n);for(i=0;inew_person.id) personi=personi-1; i-; personi=new_person; COUNT+; write_file();if(FLAG_pause=0) system(pause);voiddelete_employee(int id) int i;int j; read_file(); system(cls);for(i=0;iCOUNT;i+)if(personi.id=id)br

32、eak;for(j=i;jCOUNT;j+) personj=personj+1; COUNT-; write_file();if(FLAG_pause=0) system(pause);voidedit_employee(intid)struct employee someone; system(cls); FLAG_pause=1; delete_employee(id);printf(t请输入新的员工信息:ntttIDt姓名t部门nttt);scanf(%d%s%s,&someone.id,,someone.department); insert_employee

33、(someone); write_file(); FLAG_pause=0; system(pause);void management_employee() int choice;int id;struct employee someone;printf(nttttt员工信息管理n);printf(nt1.输入员工信息t);printf(2.输出员工信息t);printf(3.插入员工信息t);printf(4.修改员工信息t);printf(5.删除员工t);printf(6.返回主菜单n);printf(nt请选择(16):t); start:scanf(%d,&choice);if(c

34、hoice6) printf(t输入错误,请重输:t);goto start; switch(choice) case(1): input_employee();break; case(2): output_employee();break; case(3): printf(ttt插入新员工信息n);printf(ttt请输入员工的:ntttIDt姓名t部门n);printf(ttt);scanf(%d%s%s,&someone.id,,someone.department); insert_employee(someone);break; case(4): print

35、f(ttt修改员工信息n);printf(t请输入要修改的员工ID:t); scanf(%d,&id); edit_employee(id);break; case(5): printf(ttt删除员工信息n);printf(t请输入要删除的员工ID:t); scanf(%d,&id); delete_employee(id);break; case(6):break; int computer(struct data someday) int i;int days=0;if(someday.month=BASE_DATA.month) days=someday.day-BASE_DATA.d

36、ay+1;else for(i=BASE_DATA.month+1;isomeday.month;i+)switch(i) case 2: days=days+28;case 3: days=days+31;case 4: days=days+30;case 5: days=days+31;case 6: days=days+30;case 7: days=days+31;case 8: days=days+31;case 9: days=days+30;case 10: days=days+31;case 11: days=days+30; days=days+someday.day; re

37、turn days;void recorder() int i;int late;int early;int id;int days;char name20;char filename40; FILE *fp; struct date current_date; system(cls); read_file();printf(ntttt考勤记录n);printf(ntt日期:);scanf(%d%d%d,¤t_date.year,¤t_date.month,¤t_date.day); days=computer(current_date); itoa(day

38、s,filename, 10); strcat(filename,.txt); fp=fopen(filename,w);fprintf(fp,%dt%dt%dn,current_data.year,current_data.month,current_data.day);printf(nttIDt姓名t迟到t早退n);fprintf(fp,IDt姓名t迟到t早退n);for(i=0;iCOUNT;i+) id=personi.id; strcpy(name,);printf(ntt%dt%st,id,name);scanf(%d%d,&late,&early); fp

39、rintf(fp,%dt%st%dt%dn,id,name,late,early); fprintf(fp,n); fclose(fp); system(pause);void statistic() int i;int j;int k=0;intstatus=0; /int begin_page;int end_page;char save; char filename40; int year;int month;int day;char ID20;char name20;char late20;char early20; FILE *fp; struct date begin;struct

40、 date end;struct statistic temp; struct statistic stat30; for(i=0;i30;i+) stati.early_count=0; stati.late_count=0; system(cls);printf(ttt统计员工考勤n);printf(nt请输入起止日期n);printf(ntt起始日期:);scanf(%d%d%d,&begin.year,&begin.month,&begin.day);printf(ntt终止日期:);scanf(%d%d%d,&end.year,&end.month,&end.day); begin_

41、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,&statk.id,,&statk.late_count,&st

42、atk.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;jk;j+) if(temp.id=statj.id) status=1;if(temp.late_count=1) statj.late_count+;if(temp.early_count=1) statj.early_count+;break; if(status=0) statk.id=temp.id; strcpy(statk.n

43、ame,); statk.late_count=temp.late_count; statk.early_count=temp.early_count; k+; status=0; printf(n); fclose(fp); printf(ntt考勤统计n);printf(tIDt姓名t迟到次数t早退次数n);for(j=0;jk;j+)printf(t%dt%st%dtt%dn,statj.id,,statj.late_count,statj.early_count);printf(ttt是否保存(y/n):t); save=getch();if(sa

44、ve=y) printf(请输入文件名;t);scanf(%s,filename); fp=fopen(filename,w); fprintf(fp,t考勤统计n);fprintf(fp,IDt姓名t迟到次数t早退次数n);for(j=0;jk;j+)fprintf(fp,%dt%st%dtt%dn,statj.id,,statj.late_count,statj.early_count); fclose(fp); system(pause);void single_quire() int key;int id;int flag=0; int choice;int yea

45、r,month,day;char ID20;char name20;char late20;char early20;char filename20;struct date oneday;struct attendance atten; FILE *fp; system(cls);printf(ttt查询某一天的考勤n);printf(nt请输入日期:t);scanf(%d%d%d,&oneday.year,&oneday.month,&oneday.day); key=computer(oneday); itoa(key,filename, 10); strcat(filename,.txt

46、); fp=fopen(filename,r);fscanf(fp,%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early);printf(nt1.查询全体员工考勤t);printf(2.按ID查询t);printf(3.按姓名查询t);printf(4.返回主菜单n);printf(nt请选择(14):t); start:scanf(%d,&choice);if(choice4) printf(t输入错误,请重输:t);goto start; switch(choice) case(1): printf(tttIDt姓名t迟到t早退n);whi

47、le(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early);printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early); break; case(2): printf(t请输入ID:t); scanf(%d,&id);printf(tttIDt姓名t迟到t早退n);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early)

48、;if(atten.id=id) flag=1;printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early);break; if(flag=0)printf(t对不起,没有此ID 的员工,谢谢!n);break; case(3): printf(t请输入姓名:t); scanf(%s,name);printf(tttIDt姓名t迟到t早退n);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early);if(strcmp

49、(,name)=0) flag=1;printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early);break; if(flag=0) printf(t对不起,没有此姓名的员工,谢谢!n); break; case(4):break; fclose(fp); system(pause);void multi_quire() int begin_page,end_page,id;int i;int k;int flag=0;int choice;int year,month,day;char ID20;ch

50、ar name20;char late20;char early20;char filename20;struct date begin,end;struct attendance atten; FILE *fp; system(cls);printf(ttttt查询某一段时间的考勤n);printf(nt请输入起止日期n);printf(ntt起始日期:);scanf(%d%d%d,&begin.year,&begin.month,&begin.day);printf(ntt终止日期:);scanf(%d%d%d,&end.year,&end.month,&end.day); begin_p

51、age=computer(begin); end_page=computer(end);printf(nt1.查询全体员工考勤t);printf(2.按ID查询t);printf(3.按姓名查询t);printf(4.返回主菜单n);printf(nt请选择(14):t); start:scanf(%d,&choice);if(choice4) printf(t输入错误,请重输:t);goto start; switch(choice) case(1): for(i=begin_page;i=end_page;i+) itoa(i,filename, 10); strcat(filename,

52、.txt); fp=fopen(filename,r);fscanf(fp,%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early);printf(ttt%dt%dt%dnttt%st%st%st%sn,year,month,day,ID,name,late,early);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early);printf(ttt%dt%st%dt%dn,atten.id,,atten.late,att

53、en.early); fclose(fp); break; case(2): printf(nt请输入ID:t); scanf(%d,&id);printf(tttIDt姓名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.

54、id,,&atten.late,&atten.early);if(atten.id=id) flag=1;printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early); fclose(fp); if(flag=0) printf(t对不起,没有此ID的员工,谢谢!n);break; case(3): printf(nt请输入姓名:t); scanf(%s,name);printf(tttIDt姓名t迟到t早退n);for(k=begin_page;k=end_page;k+) itoa(k,filena

55、me, 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(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early); fclose(fp); if(flag=0) printf(t对不起,没有此姓名的员工,谢谢!n);break; case(4)

温馨提示

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

评论

0/150

提交评论