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

下载本文档

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

文档简介

1、#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<malloc.h>#include<time.h>/*所使用的头文件*/typedef struct/*时间结构体定义*/int hour;int minute;TIME;typedef struct worker /*职工结构体定义*/char id10;char name10;TIME time20;struct worker *next;worker;int m

2、enu_select();/*主菜单*/void welcome();/*欢迎界面*/void createInfo();/*新建职工信息*/void createRec();/*录入考勤信息*/void listRec();/*浏览当天考勤信息*/void searchRec();/*/查询考勤信息*/void saveRec();/*保存所有信息*/void deleteRec();/*删除考勤信息*/void modifyRec();/*修改考勤信息*/void loadRec();/*加载文件信息*/void resetPassword();/*重设密码*/int fun();/*判断

3、输入选择是否正确*/worker *head=NULL;/*链表头指针head*/writeinfo_flag=0;/*信息保存标记*/char password16="888888"/*初始密码*/struct tm *timeinfo;int main()/*主函数*/char s16;welcome(); /*欢迎界面*/loadRec(); /*加载文件信息*/printf("n提示:nn初始密码为:888888n");/*进入系统密码管理*/printf("tttnnnnn请输入密码,进去系统(密码不超过15个字符):");

4、scanf("%s",s);while(strcmp(password,s)!=0)printf("n密码错误,请重新输入:");scanf("%s",s);system("cls");for(;)/*菜单循环*/switch(menu_select()case 0:system("cls");createInfo();break;case 1:system("cls");createRec();break;case 2:system("cls");lis

5、tRec();break;case 3:system("cls");searchRec();break;case 4:system("cls");deleteRec();break;case 5:system("cls");modifyRec();break;case 6:system("cls");saveRec();break;case 7:system("cls");resetPassword();break;case 8:system("cls");if(writei

6、nfo_flag=1)saveRec();return 0;default:printf("n 选择错误,请按回车键返回后,重新输入(08)!");getchar();getchar();system("cls");break;return 0;/*选择菜单*/int menu_select()worker *p=head;int c,k;time_t nowtime;time( &nowtime );timeinfo = localtime( &nowtime );printf("tt*选择菜单*t");/*在菜单中

7、显示当前时间*/if(timeinfo->tm_wday=0)printf("时间:星期天");printf(" %d:%d",timeinfo->tm_hour,timeinfo->tm_min);elseprintf("时间:星期%d %d:%d",timeinfo->tm_wday,timeinfo->tm_hour,timeinfo->tm_min);printf("n-");printf("ttt0.新建职工信息n");printf("tt

8、1.录入考勤信息n");printf("tt2.浏览考勤信息n");printf("tt3.查询考勤信息n");printf("tt4.删除考勤信息n");printf("tt5.修改考勤信息n");printf("tt6.保存所有信息n");printf("tt7.重设密码n");printf("tt8.退出(退出后信息会自动保存在磁盘中)ntt(任何情况下按Ctrl+C退出程序)n");printf("n-");print

9、f("nn 请输入您的选择(08):");scanf("%d",&c);if(timeinfo->tm_wday=0&&p!=NULL)/*每周周日所有考勤信息初始化*/for(k=0;k<20;k+)p->timek.hour=88;p->timek.minute=88;return c;void loadRec()/*从磁盘导入信息*/worker *rear,*p,*pre;FILE *fp,*key;int i,pos=0;key=fopen("key.txt","r&

10、quot;);if(key!=NULL) fscanf(key,"%s",password);fclose(key);fp=fopen("workerRec.txt","r");if(fp!=NULL)fseek(fp, 0, SEEK_END);/*指针移到文件末尾*/pos= ftell(fp);if(fp=NULL|0 = pos)/*打开职工信息文件和密码文件*/printf("nnnnnntt提示:nntt数据库中没有职工信息,文本为空或文件不存在!n");printf("ntt请按回车键进入主

11、菜单新建职工信息_n");getchar();system("cls");/*清屏*/return;fseek(fp, 0, SEEK_SET);/*指针移到文件开头*/while(!feof(fp)/*fp不指向文件末尾*/p=(worker*)malloc(sizeof(worker);/*开辟一个新单元*/fscanf(fp,"%s%s",p->id,p->name);for(i=0;i<20;i+)fscanf(fp,"%d%d",&p->timei.hour,&p->t

12、imei.minute);if(head=NULL)head=p;pre=p;rear=p;elserear->next=p;pre=rear;rear=p;pre->next=NULL;fclose(fp);/*关闭文件*/return;void createInfo()/*新建职工信息*/worker *p,*rear;int i,k,n;char s10;if(head!=NULL)printf("nnnnnnnttt职工信息数据库已存在nnttt新建职工信息将续接在信息库的后面nnnttt按回车键继续");getchar();getchar();rear

13、=head;while(rear->next!=NULL)rear=rear->next;system("cls");printf("nn请输入希望建立职工信息条数:");scanf("%s",s);if(fun(s)=0)return;elsen=atoi(s);printf("n请输入职工的工号(至多6个字符)和姓名(至多5个字符):n");for(i=0;i<n;i+)p=(worker*)malloc(sizeof(worker);scanf("%s%s",p->

14、id,p->name);if(strlen(p->id)>6|strlen(p->name)>5)printf("n职工工号或姓名输入长度不合法!nn请按回车键返回主菜单n",n);rear->next=NULL;free(p);getchar();getchar();system("cls");return;for(k=0;k<20;k+)/*时间初始化为88:88*/p->timek.hour=88;p->timek.minute=88;if(head=NULL)head=p;rear=p;els

15、erear->next=p;rear=p;p->next=NULL;printf("n%d条信息建立完毕!nn请按回车键返回主菜单n",n);getchar();getchar();system("cls");writeinfo_flag=1;return;void createRec()/*录入考勤信息*/time_t nowtime;worker *p;char s10,k10,*g=k,ss10;int c,m,week;time( &nowtime );timeinfo = localtime( &nowtime );

16、week=timeinfo->tm_wday;if(head=NULL)printf("nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;if(timeinfo->tm_wday=6|timeinfo->tm_wday=0)printf("nnnnttt今天不是工作日nnttt无法录入考勤信息nnttt请按回车键返回主菜单!");getchar();getchar();syste

17、m("cls");return;printf("nnnttt请选择录入考勤种类:nnttt1.上午上班(8:00)nnttt2.上午下班(11:30)nnttt3.下午上班(14:00)nnttt4.下午下班(17:30)nn");printf("ntt您的选择(以回车键结束):");scanf("%s",k);if(fun(k)=0)return;elsem=atoi(k);if(m<1|m>4)printf("nntt输入错误!nntt请按回车键返回主菜单重新开始!n");get

18、char();getchar();system("cls");return ;system("cls");if(m=1&&(timeinfo->tm_hour>11|(timeinfo->tm_hour=11&&timeinfo->tm_min>30)printf("nnnttt现在已经过了上午下班的时间(11:30)nnttt无法录入上班的时间(8:00)信息nnttt请按回车键返回主菜单");getchar();getchar();system("cls&qu

19、ot;);return;if(m=3&&(timeinfo->tm_hour>17|(timeinfo->tm_hour=17&&timeinfo->tm_min>30)printf("nnnttt现在已经过了下午下班的时间(17:30)nnttt无法录入上班的时间(14:00)信息nnttt请按回车键返回主菜单");getchar();getchar();system("cls");return;/*可通过工号或姓名;录入*/printf("nnnttt请选择输入工号还是姓名:nn

20、ttt1.选择输入工号nnttt2.选择输入姓名nn");printf("ntt您的选择(以回车键结束):");scanf("%s",ss);if(fun(ss)=0)return;elsec=atoi(ss);if(c<1|c>2)printf("nntt输入错误!nntt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return ;system("cls");switch(c)case 1:printf(&qu

21、ot;nnnnnnttt请输入工号(以回车键结束):");scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next=NULL)printf("nnnnttt不存在该工号n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls&quo

22、t;);return;if(m=2|m=4)&&p->time4*week+m-6.hour=88)printf("nnnnttt该职工无上班记录,无法记录下班信息,请先录入上班信息n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;p->time4*week+m-5.hour=(timeinfo->tm_hour);/*存储时间*/p->time4*week+m-5.minute=(tim

23、einfo->tm_min);break;case 2:printf("nnnnnnttt请输入姓名(以回车键结束):");scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next=NULL)printf("nnnnttt不存在该姓名n");printf("nnnnttt请按回车键返回主菜单重新开始!n&qu

24、ot;);getchar();getchar();system("cls");return;if(m=2|m=4)&&p->time4*week+m-6.hour=88)printf("nnnnttt该职工无上班记录,无法记录下班信息,请先录入上班信息n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;time( &nowtime );timeinfo = localtime( &

25、amp;nowtime );week=timeinfo->tm_wday;p->time4*week+m-5.hour=(timeinfo->tm_hour);p->time4*week+m-5.minute=(timeinfo->tm_min);break;system("cls");printf("nnnnnnttt考勤成功!请按回车键返回主菜单n");getchar();getchar();writeinfo_flag=1;system("cls");return;void listRec()/*浏

26、览当天的考勤信息*/worker *p=head;int m,week;week=timeinfo->tm_wday;if(head=NULL)printf("nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;if(timeinfo->tm_wday=6|timeinfo->tm_wday=0)printf("nnnnttt今天不是工作日,无考勤记录nnttt无法浏览当天的考勤信息nntt

27、t请按回车键返回主菜单!");getchar();getchar();system("cls");return;printf("n职工今天整体出勤情况如下:nn");printf("职工号姓名上午上班上午下班下午上班下午下班n");while(p!=NULL)m=0;printf("n%s%s",p->id,p->name);if(p->time(week-1)*4.hour>8&&p->time(week-1)*4.hour<25)|(p->ti

28、me(week-1)*4.hour=8&&p->time(week-1)*4.minute>0)printf("迟到");/*上班时间之后来的都算迟到*/else if(p->time(week-1)*4.hour=88&&(timeinfo->tm_hour>11|(timeinfo->tm_hour=11&&timeinfo->tm_min>30)printf("旷工");/*过了下班时间就是旷工*/else if(p->time(week-1)*4

29、.hour=88&&(timeinfo->tm_hour<11|(timeinfo->tm_hour=8&&timeinfo->tm_min=30)printf("无记录");/*下班之前还没有来显示无记录*/else if(p->time(week-1)*4.hour!=88)printf(" ");m+;if(p->time(week-1)*4+1.hour<11&&p->time(week-1)*4.hour!=0)|(p->time(week-1

30、)*4+1.hour=11&&p->time(week-1)*4+1.minute<30)printf("早退");else printf(" ");m+;if(p->time(week-1)*4+2.hour>14&&p->time(week-1)*4+2.hour<25)|(p->time(week-1)*4+2.hour=14&&p->time(week-1)*4+2.minute>0)printf("迟到");else if(

31、p->time(week-1)*4+2.hour=88&&(timeinfo->tm_hour>17|(timeinfo->tm_hour=17&&timeinfo->tm_min>30)printf("旷工");else if(p->time(week-1)*4+2.hour=88&&(timeinfo->tm_hour<17|(timeinfo->tm_hour=17&&timeinfo->tm_min=30)printf("无记录

32、");else if(p->time(week-1)*4+2.hour!=88)printf(" ");m+;if(p->time(week-1)*4+3.hour<17&&p->time(week-1)*4+2.hour!=0)|(p->time(week-1)*4+3.hour=17&&p->time(week-1)*4+3.minute<30)printf("早退");else printf(" ");m+;if(m=4&&(ti

33、meinfo->tm_hour>17|(timeinfo->tm_hour=17&&timeinfo->tm_min>30)printf(" 全勤!");p=p->next;printf("nn显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;void searchRec()/*根据工号或姓名查找考勤信息*/worker *p=head;int c,i;char s10,k10;if(head=NULL)printf

34、("nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;printf("nnnttt请选择输入工号还是姓名:nnttt1.选择输入工号nnttt2.选择输入姓名nn");printf("ntt您的选择(以回车键结束):");scanf("%s",k);if(fun(k)=0)return;elsec=atoi(k);if(c<1|c>2)print

35、f("nntt输入错误!nntt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return ;system("cls");switch(c)case 1:printf("nnnnnnttt请输入工号(以回车键结束):");scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!

36、=0&&p->next=NULL)printf("nnnnttt不存在该工号n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;break;case 2:printf("nnnnnnttt请输入姓名(以回车键结束):");scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;

37、p=p->next);if(strcmp(p->name,s)!=0&&p->next=NULL)printf("nnnnttt不存在该姓名n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;break;system("cls");printf("职工号姓名 上午上班 上午下班 下午上班 下午下班nn");printf(" %s%s",p

38、->id,p->name);printf("周一");for(i=0;i<4;i+)if(p->timei.hour=88)printf(" -:- ");if(p->timei.hour!=88)printf(" %2d:%2d ",p->timei.hour,p->timei.minute);if(i=4)printf("nn");printf("n 周二");for(i=4;i<8;i+)if(p->timei.hour=88)prin

39、tf(" -:- ");if(p->timei.hour!=88)printf(" %2d:%2d ",p->timei.hour,p->timei.minute);if(i=8)printf("nn");printf("n 周三");for(i=8;i<12;i+)if(p->timei.hour=88)printf(" -:- ");if(p->timei.hour!=88)printf(" %2d:%2d ",p->timei.

40、hour,p->timei.minute);if(i=12)printf("nn");printf("n 周四");for(i=12;i<16;i+)if(p->timei.hour=88)printf(" -:- ");if(p->timei.hour!=88)printf(" %2d:%2d ",p->timei.hour,p->timei.minute);if(i=16)printf("nn");printf("n 周五");for(

41、i=16;i<20;i+)if(p->timei.hour=88)printf(" -:- ");if(p->timei.hour!=88)printf(" %2d:%2d ",p->timei.hour,p->timei.minute);if(i=20)printf("nn");printf("nnnnnnttt显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;void saveRec()/*储存

42、所有信息*/worker *p=head;FILE *fp,*key;int i;if(writeinfo_flag=0)printf("nnnnttt信息无改动,无需保存!nnttt请按回车键返回主菜单n");getchar();getchar();system("cls");return;if(writeinfo_flag=1)if(fp=fopen("workerRec.txt","w")=NULL|(key=fopen("key.txt","w")=NULL)prin

43、tf("nttt提示:nnttt存储信息失败!n");printf("nttt请按回车键进入主菜单重新开始n");getchar();getchar();system("cls");return;while(p!=NULL)fprintf(fp,"%sn%sn",p->id,p->name);for(i=0;i<20;i+)fprintf(fp,"%dn%dn",p->timei.hour,p->timei.minute);p=p->next;fprintf(

44、key,"%s",password);fclose(fp),fclose(key);writeinfo_flag=0;/*消除改动标志*/printf("nnnnnttt保存完毕,按回车键继续!");getchar();getchar();system("cls");return;void deleteRec()/删除考勤信息*/worker *p,*pre=head;char s16,k10;int c;if(head=NULL)printf("nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键

45、返回主菜单新建职工信息!");getchar();getchar();system("cls");return;printf("nnnttt提示:nnttt初始密码为:888888n");printf("nnnttt请输入密码(密码不超过15个字符):");scanf("%s",s);while(strcmp(password,s)!=0)printf("nnttt密码错误!nn");printf("ttt按回车键返回主菜单!");getchar();getchar

46、();system("cls");return;printf("nnnttt密码输入成功!nnttt请按回车键继续");getchar();getchar();system("cls");printf("nnnttt请选择输入工号还是姓名:nnttt1.选择输入工号nnttt2.选择输入姓名nn");printf("ntt您的选择(以回车键结束):");scanf("%s",k);if(fun(k)=0)return;elsec=atoi(k);if(c<1|c>

47、2)printf("nntt输入错误!nntt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return ;system("cls");switch(c)case 1:printf("nnnnnnttt请输入工号:");scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=

48、0&&p->next=NULL)printf("nnnnttt不存在该工号n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;break;case 2:printf("nnnnnnttt请输入姓名:");scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->n

49、ext);if(strcmp(p->name,s)!=0&&p->next=NULL)printf("nnnnttt不存在该姓名n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;break;system("cls");if(p=head)head=p->next;else for(;pre->next!=p;pre=pre->next);pre->next=

50、p->next;free(p);printf("nnnnnnttt删除成功,请按回车键返回主菜单!");getchar();getchar();system("cls");writeinfo_flag=1;return;void modifyRec()/*修改考勤信息*/worker *p,*pre=head;char s16,k10;int c;if(head=NULL)printf("nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!");getchar();getchar

51、();system("cls");return;printf("nnnttt提示:nnttt初始密码为:888888n");printf("nnnttt请输入密码(密码不超过15个字符):");scanf("%s",s);if(strcmp(password,s)!=0)printf("nnnttt密码错误!nn");printf("ttt按回车键返回主菜单!");getchar();getchar();system("cls");return;print

52、f("nnnttt密码输入成功!nnttt请按回车键继续");getchar();getchar();system("cls");printf("nnnttt请选择通过工号修改还是姓名修改:nnttt1.选择输入工号nnttt2.选择输入姓名nn");printf("nnntt您的选择(以回车键结束):");scanf("%s",k);if(fun(k)=0)return;elsec=atoi(k);if(c<1|c>2)printf("nntt输入错误!nntt请按回车键

53、返回主菜单重新开始!n");getchar();getchar();system("cls");return ;system("cls");switch(c)case 1:printf("nnnnnnttt请输入工号:");scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next=NULL)printf

54、("nnnnttt不存在该工号n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;break;case 2:printf("nnnnnnttt请输入姓名:");scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&a

55、mp;&p->next=NULL)printf("nnnnttt不存在该姓名n");printf("nnnnttt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return;break;system("cls");printf("nnnttt请选择要修改的内容:nnttt1.工号nnttt2.姓名nnttt3.上午上班时间nnttt4.上午下班时间nnttt5.下午上班时间nnttt6.下午下班时间");printf("nnntt您的选择(以回车键结束):");scanf("%s",&k);if(fun(k)=0)return;elsec=atoi(k);if(c<1|c>6)printf("nntt输入错误!nntt请按回车键返回主菜单重新开始!n");getchar();getchar();system("cls");return ;system("c

温馨提示

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

评论

0/150

提交评论