员工考勤信息管理的设计和实现.docx

上传人:b****1 文档编号:2482944 上传时间:2022-10-30 格式:DOCX 页数:38 大小:421.43KB
下载 相关 举报
员工考勤信息管理的设计和实现.docx_第1页
第1页 / 共38页
员工考勤信息管理的设计和实现.docx_第2页
第2页 / 共38页
员工考勤信息管理的设计和实现.docx_第3页
第3页 / 共38页
员工考勤信息管理的设计和实现.docx_第4页
第4页 / 共38页
员工考勤信息管理的设计和实现.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

员工考勤信息管理的设计和实现.docx

《员工考勤信息管理的设计和实现.docx》由会员分享,可在线阅读,更多相关《员工考勤信息管理的设计和实现.docx(38页珍藏版)》请在冰豆网上搜索。

员工考勤信息管理的设计和实现.docx

员工考勤信息管理的设计和实现

员工考勤信息管理的设计和实现

1.系统描述

1.1问题说明

本试验要求是设计员工考勤管理系统,,本系统作用是用于企业员工管理,解决人工考勤面对庞大数据量的弊病.该系统侧重于员工考勤信息管理和员工考勤信息的登记与查询。

本系统使用的开发工具是vc++开发程序,通过已编制好的程序,完成对员工信息的输入、输出、插入、删除操作,以及员工迟到、早退考勤信息的登记和查询,完善企业管理现代化,方便管理人员统计,考核员工出勤情况,方便员工管理部门查询,考核员工的出勤率,准确地掌握员工出勤情况和相关资料,有效管理、掌握员工各项情况.

1.2功能需求

本试验要求实实现员工考勤管理系统,本系统包括的基本功能有:

1.2.1员工信息的管理

1.2.2员工信息的统计

1.2.3员工考勤信息的管理和查询

1.3数据需求

本系统为完成所要求功能需要的数据包括:

1.3.1员工ID,姓名,部门

1.3.2员工迟到,早退情况

1.3.3在一定期间里员工迟到,早退次数

2.系统设计

2.1内存数据结构设计

系统各实体可用以下关系表示:

员工(ID,姓名,部门)

考勤(ID,姓名,迟到,早退,日期)

统计(ID,姓名,迟到次数,早退次数,期间

2.2数据文件设计

2.2.1.存储员工信息的文件:

文件名:

information1.txt

文件内容:

日期

ID姓名部门

….…..…..

例:

201031

ID姓名部门

11张三安保部

12李四安保部

2.2.2.存储员工考勤信息的文件:

文件名:

由日期经过变换后得到。

变换方式:

(1)给整个系统设置一个基准日期

基准日期:

一段时期内的起始日期,通常规定为一个月的1号,考勤所记录的是基准日期之后的考勤信息.

(2)考勤记录的日期与基准日期相差的天数加1。

由以上变换可得:

基准日期的考勤的文件名为“1.txt”。

2.2.3.存储考勤一段时期的统计信息的文件:

文件名:

管理员自己输入。

文件内容:

起始日期终止日期

ID姓名迟到次数早退次数

…….……

例如:

2010412010630

ID姓名迟到次数早退次数

11张三12

12李四20

各文件之间的关系:

考勤文件是按照当天的员工信息文件的顺序依次记录。

在此把请假等排除在外不考虑。

2.3代码设计

设计代码主要包括:

voidinput_employee()//第一次输入员工信息

voidread_file()//专门用于读取存储员工信息的文件的函数

voidwrite_file()//专门用于向存储员工信息的文件中写函数

voidoutput_employee()//输出员工信息

voidinsert_employee(structemployeenew_person)//添加员工信息

voiddelete_employee(intid)//删除员工信息

voidmanagement_employee()//管理员工信息总函数

intcomputer(structdatasomeday)//计算日期对应的文件名

voidrecorder()//记录每天每个员工的考勤情况

voidstatistic()//统计所有员工某段时间的考勤情况,把统计结果输入文件中

voidsingle_quire()//查询某一天的考勤情况

voidmulti_quire()//查询一段连续时间的考勤情况

voidquire_attendance()//查询的总函数

voidmanagement_attendance()//考勤管理的总函数

2.4程序代码

#include"stdafx.h"

#include

#include

#include

#include"process.h"

#include

#defineMAX_COUNT30//最大员工数

structemployee//员工信息结构体

{

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

structdateBASE_DATA={2012,1,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.name,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.name,temp.department);

fprintf(fp2,"%d\t%s\t%s\n",temp.id,temp.name,temp.department);

printf("\t\t\t\t");

scanf("%d%s%s",&temp.id,temp.name,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("\n\t\t\t\tID\t姓名\t部门\n");

for(i=0;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

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

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

{

if(person[i].id==id)

{

printf("\t\t\t%d\t%s\t%s\n",person[i].id,person[i].name,

person[i].department

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1