ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:28.20KB ,
资源ID:720763      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/720763.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人员签到管理系统.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人员签到管理系统.docx

1、人员签到管理系统我的第一个管理系统这是我的第一个人员签到签出管理系统。A 可以实现的功能1. 用户注册(只要内存足够可以实现无穷多个用户注册)2. 用户签到 记录用户员工是否迟到3. 用户签退 记录用户员工是否早退4. 员工出勤情况查询(包括总共上班天数,迟到次数,早退次数)B我认为程序比较好的地方1如果内存可以系统可以让无穷多个用户实现注册。2可以让用户在任意时刻签到或者签退,并且如果内存足够可以实现无穷多次的签到或者签退,并且完整记录信息。3用户注册时候提供了注册名不会重复的功能,如果重复提示用户重新确定注册名。4在输入注册密码时让用户两次输入密码比较是否一样,如果不一样则提示用户密码不一

2、致请重新输入。5所有密码在输入时全部以*回显,保证密码不会泄露。6每一步都有完整的提示指导用户操作,对每一种可能发生的情况都做了相应的处理(当然还会有我没有想到的情况)。7本程序是用纯C编写出来的,依靠的是链表指针操作,看起来不是很容易。C程序的主要思想1不用C+里面的类,完全用结构体来代替。2先创建一个用户emp结构体,用来作为横向链表的节点,存储用户名,用户密码等基本信息。3再创建一个day签到签退结构体用来作为竖向节点,用来记录用户每天签到情况。4总体就是一个用户就是一个链表,每注册一个用户就在横向链表里插入一个节点记录用户名等基本信息,然后就是每个横向节点又作为每个用户签到链表的头结点

3、,这样签到一次就在该用户对应的横节点下插入一个节点记录该用户签到情况。D程序的不足之处1没有漂亮的界面,看起来不爽。2没有提供开除员工的取消用户注册的操作(其实也比较好实现,再多加一个函数就可以解决)。(以实现)3程序中用到大量的goto语句,这里不提倡使用。4记录数据不是十分充分,但是随时可以扩充。5如果程序意外停止,那么所有数据全部丢失,所以本系统不是用来用的,是用来看的。6程序重复代码有好多,其实可以精简。7此程序最终可以实现回车重新输入密码所有功能都实现了哈哈哈哈哈#include#include#include#includetypedef struct days int stime

4、;/上班时间 int gotime;/下班时间 char islate;/是否迟到Y为迟到N为没有迟到 char isgoearly;/是否早退 days *next;day;typedef struct emplore char join20;/用户名 char sec20;/用户密码 emplore *next; day *next1;emp;int findjoin(emp *head,const char *name)/通过用户名查找 char C;while(head!=NULL) if(int(strcmp(head-join,name)=0) printf(请输入用户密码:n);

5、 return 1;/查找到对应的用户名 else head=head-next; if(head=NULL) printf(此用户名不存在,您现在需要注册吗?Y注册,N不注册n); C=getche(); /scanf(%c,&C); if(C=Y) return 2;/需要注册 else return 3;/不需要注册return 0;int insert1(emp *&head,char *name,char *mima1)/用户注册时候需要的链表?注意head要用引用哦! emp *p; p=(emp*)malloc(sizeof(emp); if(p=NULL) printf(注册失

6、败n); return 0; else printf(n恭喜您注册成功n); strcpy(p-join,name); strcpy(p-sec,mima1); p-next=head; p-next1=NULL;/重要的一步一定要初始化为NULL方便标记 head=p; return 0;int findmima(emp *head,const char *name,const char *mima1)/一定是在有用户名的情况下 while(head!=NULL) if(int(strcmp(head-join,name)=0) if(strcmp(head-sec,mima1)=0) pr

7、intf(n密码正确请选择签到还是签退:ne签到l签退t退出系统n);/提供选项让用户选择签到还是签退 return 0; else printf(n密码错误请重新输入:); return 1; else head=head-next; return 0;int cometime(day *&p)/输入签早到信息并且处理信息 printf(请输入签早到时间,相信你是诚实的哦n); scanf(%d,&(p-stime);/这个地方一定要注意,这不是C+是纯C一定要注意啊 if(p-stime8) p-isgoearly=Y; else p-isgoearly=N; p-islate=N;/实现

8、分开处理的必要条件 printf(您已经完成签到n); return 0;int goouttime(day *&p)/输入签退信息并且处理信息 printf(n请输入签退时间,相信你是诚实的哦n); scanf(%d,&(p-gotime); if(p-gotimeislate=Y; else p-islate=N; p-isgoearly=N;/实现分开处理的必要条件 printf(您已经完成签退n); return 0;int insert2(emp *head,char *name,day *p)/找到本用户的头结点并插入,这里找到的head就是该用户的头结点 while(head!=

9、NULL) if(int(strcmp(head-join,name)=0) p-next=head-next1; head-next1=p; return 0; head=head-next; return 0;int findrec(emp *head,char *name)/查找用户信息 int rday=0,rlate=0,rearly=0; day *p=NULL; while(head!=NULL) if(int(strcmp(head-join,name)=0) p=head-next1; while(p!=NULL) rday+;/记录一共签到多少次 if(p-isgoearl

10、y=Y) rearly+; if(p-islate=Y) rlate+; p=p-next; printf(总共有记录的条数:%dn,rday); printf(总共有记录迟到的次数:%dn,rlate); printf(总共有记录早退的次数:%dn,rearly); return 0;/这一步是必要的哦 head=head-next;/这一步不要忘记啊 return 0;int findname(emp *head,char *name)/查找用户信息 while(head!=NULL) if(int(strcmp(head-join,name)=0) return 1; head=head

11、-next; if(head=NULL) return 0; return 0;int delete_q(emp *p)/删除本人还有其所有的记录 day *p1,*p2; if(p=NULL) return 0; p1=p-next1; free(p); while(p1!=NULL) p2=p1; p1=p1-next; free(p2); return 0;int goout(emp *&p,char *name,char *mima)/用户注销,返回一注销成功删除所有记录 emp *p1; if(p=NULL) printf(n用户名不存在或密码错误n); return 0; if(p

12、-next=NULL)/一定不是不能操作 if(strcmp(p-join,name)=0&strcmp(p-sec,mima)=0) delete_q(p); p=NULL; printf(注销成功); return 1; else printf(密码错误,注销失败); return 0; if(strcmp(p-join,name)=0) if(strcmp(p-next-join,mima)!=0) p1=p; p=p-next; delete_q(p1); /printf(册成功yue); return 1; p1=p; while(p1-next!=NULL) if(strcmp(p1-next-join,name)=0&strcmp(p1-next-sec,mima)=0) /printf(%s %s,p1-next-sec,mima); p1-next=p1-next-next; delete_q(p1-next); printf(注销成功); return 1; p1=p1-next; printf(注销失败n); return 0; int change_mima(emp *p,char *name) char a20

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

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