




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include#include#include#include#include#include/*所使用的头文件*/typedef struct/*时间结构体定义*/int hour;int minute;time;typedef struct worker /*职工结构体定义*/char id10;char name10;time time20;struct worker *next;worker;int menu_select();/*主菜单*/void welcome();/*欢迎界面*/void createinfo();/*新建职工信息*/void createrec();/*录入
2、考勤信息*/void listrec();/*浏览当天考勤信息*/void searchrec();/*/查询考勤信息*/void saverec();/*保存所有信息*/void deleterec();/*删除考勤信息*/void modifyrec();/*修改考勤信息*/void loadrec();/*加载文件信息*/void resetpassword();/*重设密码*/int fun();/*判断输入选择是否正确*/worker *head=null;/*链表头指针head*/writeinfo_flag=0;/*信息保存标记*/char password16=888888;/
3、*初始密码*/struct tm *timeinfo;int main()/*主函数*/char s16;welcome(); /*欢迎界面*/loadrec(); /*加载文件信息*/printf(n提示:nn初始密码为:888888n);/*进入系统密码管理*/printf(tttnnnnn请输入密码,进去系统(密码不超过15个字符):);scanf(%s,s);while(strcmp(password,s)!=0)printf(n密码错误,请重新输入:);scanf(%s,s);system(cls);for(;)/*菜单循环*/switch(menu_select()case 0:s
4、ystem(cls);createinfo();break;case 1:system(cls);createrec();break;case 2:system(cls);listrec();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:syst
5、em(cls);if(writeinfo_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);/*在菜单中显示当前时间*/if(timeinfo-tm_wday
6、=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(tt1.录入考勤信息n);printf(tt2.浏览考勤信息n);printf(tt3.查询考勤信息n);printf(tt4.删除考勤信息n);printf(tt5.修改考勤信息n);printf(tt6.保存所有信息n);printf
7、(tt7.重设密码n);printf(tt8.退出(退出后信息会自动保存在磁盘中)ntt(任何情况下按ctrl+c退出程序)n);printf(n-);printf(nn 请输入您的选择(08):);scanf(%d,&c);if(timeinfo-tm_wday=0&p!=null)/*每周周日所有考勤信息初始化*/for(k=0;ktimek.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,
8、r);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请按回车键进入主菜单新建职工信息_n);getchar();system(cls);/*清屏*/return;fseek(fp, 0
9、, seek_set);/*指针移到文件开头*/while(!feof(fp)/*fp不指向文件末尾*/p=(worker*)malloc(sizeof(worker);/*开辟一个新单元*/fscanf(fp,%s%s,p-id,p-name);for(i=0;itimei.hour,&p-timei.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
10、*p,*rear;int i,k,n;char s10;if(head!=null)printf(nnnnnnnttt职工信息数据库已存在nnttt新建职工信息将续接在信息库的后面nnnttt按回车键继续);getchar();getchar();rear=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;
11、iid,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;ktimek.hour=88;p-timek.minute=88;if(head=null)head=p;rear=p;elserear-next=p;rear=p;p-next=null;printf(n%d条信息建立完毕!nn请按回车键返回主菜单n,n);getchar();getch
12、ar();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 );week=timeinfo-tm_wday;if(head=null)printf(nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!);getchar();getchar();system(
13、cls);return;if(timeinfo-tm_wday=6|timeinfo-tm_wday=0)printf(nnnnttt今天不是工作日nnttt无法录入考勤信息nnttt请按回车键返回主菜单!);getchar();getchar();system(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;el
14、sem=atoi(k);if(m4)printf(nntt输入错误!nntt请按回车键返回主菜单重新开始!n);getchar();getchar();system(cls);return ;system(cls);if(m=1&(timeinfo-tm_hour11|(timeinfo-tm_hour=11&timeinfo-tm_min30)printf(nnnttt现在已经过了上午下班的时间(11:30)nnttt无法录入上班的时间(8:00)信息nnttt请按回车键返回主菜单);getchar();getchar();system(cls);return;if(m=3&(timeinf
15、o-tm_hour17|(timeinfo-tm_hour=17&timeinfo-tm_min30)printf(nnnttt现在已经过了下午下班的时间(17:30)nnttt无法录入上班的时间(14:00)信息nnttt请按回车键返回主菜单);getchar();getchar();system(cls);return;/*可通过工号或姓名;录入*/printf(nnnttt请选择输入工号还是姓名:nnttt1.选择输入工号nnttt2.选择输入姓名nn);printf(ntt您的选择(以回车键结束):);scanf(%s,ss);if(fun(ss)=0)return;elsec=ato
16、i(ss);if(c2)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)!=0&p-next=null)printf(nnnnttt不存在该工号n);printf(nnnnttt请按回车键返回主菜单重新开始!n
17、);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;p-time4*week+m-5.hour=(timeinfo-tm_hour);/*存储时间*/p-time4*week+m-5.minute=(timeinfo-tm_min);break;case 2:prin
18、tf(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);getchar();getchar();system(cls);return;if(m=2|m=4)&p-time4*week+m-6.hour=88)printf(nnnnttt该职工无上班记录,无法记录下班信息,请先录入上班信息
19、n);printf(nnnnttt请按回车键返回主菜单重新开始!n);getchar();getchar();system(cls);return;time( &nowtime );timeinfo = localtime( &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()
20、;writeinfo_flag=1;system(cls);return;void listrec()/*浏览当天的考勤信息*/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无法浏
21、览当天的考勤信息nnttt请按回车键返回主菜单!);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.hour8&p-time(week-1)*4.hourtime(week-1)*4.hour=8&p-time(week-1)*4.minute0)printf(迟到);/*上班时间之后来的都算迟到*/else if(p-time
22、(week-1)*4.hour=88&(timeinfo-tm_hour11|(timeinfo-tm_hour=11&timeinfo-tm_min30)printf(旷工);/*过了下班时间就是旷工*/else if(p-time(week-1)*4.hour=88&(timeinfo-tm_hourtm_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.hourtime(week-1)*4.h
23、our!=0)|(p-time(week-1)*4+1.hour=11&p-time(week-1)*4+1.minutetime(week-1)*4+2.hour14&p-time(week-1)*4+2.hourtime(week-1)*4+2.hour=14&p-time(week-1)*4+2.minute0)printf(迟到);else if(p-time(week-1)*4+2.hour=88&(timeinfo-tm_hour17|(timeinfo-tm_hour=17&timeinfo-tm_min30)printf(旷工);else if(p-time(week-1)*4
24、+2.hour=88&(timeinfo-tm_hourtm_hour=17&timeinfo-tm_min=30)printf(无记录);else if(p-time(week-1)*4+2.hour!=88)printf( );m+;if(p-time(week-1)*4+3.hourtime(week-1)*4+2.hour!=0)|(p-time(week-1)*4+3.hour=17&p-time(week-1)*4+3.minutetm_hour17|(timeinfo-tm_hour=17&timeinfo-tm_min30)printf( 全勤!);p=p-next;print
25、f(nn显示完毕,按回车键返回主菜单!);getchar();getchar();system(cls);return;void searchrec()/*根据工号或姓名查找考勤信息*/worker *p=head;int c,i;char s10,k10;if(head=null)printf(nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!);getchar();getchar();system(cls);return;printf(nnnttt请选择输入工号还是姓名:nnttt1.选择输入工号nnttt2.选择输入姓名nn);prin
26、tf(ntt您的选择(以回车键结束):);scanf(%s,k);if(fun(k)=0)return;elsec=atoi(k);if(c2)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)!=0&p-nex
27、t=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-next);if(strcmp(p-name,s)!=0&p-next=null)printf(nnnnttt不存在该姓名n);printf(nnnnttt请按回车键返回主菜单重新开始!n
28、);getchar();getchar();system(cls);return;break;system(cls);printf(职工号姓名 上午上班 上午下班 下午上班 下午下班nn);printf( %s%s,p-id,p-name);printf(周一);for(i=0;itimei.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;itimei.hour=88)printf( -:-
29、 );if(p-timei.hour!=88)printf( %2d:%2d ,p-timei.hour,p-timei.minute);if(i=8)printf(nn);printf(n 周三);for(i=8;itimei.hour=88)printf( -:- );if(p-timei.hour!=88)printf( %2d:%2d ,p-timei.hour,p-timei.minute);if(i=12)printf(nn);printf(n 周四);for(i=12;itimei.hour=88)printf( -:- );if(p-timei.hour!=88)printf(
30、 %2d:%2d ,p-timei.hour,p-timei.minute);if(i=16)printf(nn);printf(n 周五);for(i=16;itimei.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()/*储存所有信息*/worker *p=
31、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)printf(nttt提示:nnttt存储信息失败!n);printf(nttt请按回车键进入主菜单重新开始n);getchar();getchar();system(cls);ret
32、urn;while(p!=null)fprintf(fp,%sn%sn,p-id,p-name);for(i=0;itimei.hour,p-timei.minute);p=p-next;fprintf(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
33、;if(head=null)printf(nnnnttt数据库中没有职工信息nnttt无法使用该功能nnttt请按回车键返回主菜单新建职工信息!);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();system(cls);ret
34、urn;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(c2)printf(nntt输入错误!nntt请按回车键返回主菜单重新开始!n);getchar();getchar();system(cls);return ;system(cls);switch(c)
35、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(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)!=
36、0&p-next!=null;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);if(p=head)head=p-next;else for(;pre-next!=p;pre=pre-next);pre-next=p-next;free(p);printf(nnnnnnttt删除成功,请按回车键返回主菜单!);getchar();ge
37、tchar();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();system(cls);return;printf(nnnttt提示:nnttt初始密码为:888888n);printf(nnnttt请输入密码(密码不超过15个字符):);scanf(%s,s
38、);if(strcmp(password,s)!=0)printf(nnnttt密码错误!nn);printf(ttt按回车键返回主菜单!);getchar();getchar();system(cls);return;printf(nnnttt密码输入成功!nnttt请按回车键继续);getchar();getchar();system(cls);printf(nnnttt请选择通过工号修改还是姓名修改:nnttt1.选择输入工号nnttt2.选择输入姓名nn);printf(nnntt您的选择(以回车键结束):);scanf(%s,k);if(fun(k)=0)return;elsec=a
39、toi(k);if(c2)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)!=0&p-next=null)printf(nnnnttt不存在该工号n);printf(nnnnttt请按回车键返回主菜单重新开始!n);getch
40、ar();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&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(c6)printf(nntt输入错误!nntt请按回车键返回主菜单重新开始!n);getchar();getchar();system(cls);return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国海龟标本市场调查研究报告
- 二零二五年度保健用品应急配送与救援服务合同
- 火锅合伙合同范本
- 房屋拆卸合同范本
- 修路结账合同范本
- 简短企业合同范本
- 鱼池承包合同范本
- 电子游戏机软件开发及整机生产合作合同范本
- 建筑安装工程分包合同管理与风险控制
- 有限责任公司劳动合同范本
- 第一课走进人工智能 说课稿 2023-2024学年浙教版(2023)初中信息技术八年级下册
- 体检中心前台接待流程
- 2024年大唐集团招聘笔试试题及答案-
- 徐州生物工程职业技术学院单招职业技能测试参考试题及答案
- 小儿急性胃肠炎课件
- 翁恺C语言课件下载
- 维生素D缺乏性手足搐搦症课件
- 2024年山东省公务员考试《行测》真题及答案解析
- 《人工智能通识教程》(第2版)教学大纲
- 国家基本医疗保险和工伤保险药品目录(2004年版)
- 文学类文本阅读(理解赏析类)-2025年北京高考语文一轮总复习(原卷版)
评论
0/150
提交评论