职工考勤管理系统方案

合集下载

员工考勤平台管理制度

员工考勤平台管理制度

员工考勤平台管理制度一、总则为规范和统一员工的考勤管理,提高工作效率,增强企业内部管理,制定本管理制度。

二、适用范围本考勤管理制度适用于公司全体员工。

三、考勤系统公司将建立电子考勤系统,员工通过电子考勤机或手机App进行考勤打卡,每日上下班打卡需准时完成,迟到、早退、未打卡等情况将被记录。

四、工作时间1. 上班时间:公司规定的上班时间为每天8:30,员工需在规定时间内到岗上班。

2. 下班时间:公司规定下班时间为每天17:30,员工需在规定时间内完成工作交接后才能离岗。

3. 加班规定:员工如果需要加班,必须事先向直接主管提出申请,经批准后方可加班,并需要通过考勤系统记录加班时长。

五、考勤制度1. 打卡规定:员工需在考勤机或手机App上按规定时间打卡,打卡成功后才算完成考勤。

2. 请假规定:员工如需请假,必须提前向直接主管提出申请,经批准后方可请假,需要在考勤系统上填写请假事由及请假时间,否则按旷工处理。

3. 迟到早退:员工如有迟到或早退情况,需在考勤系统上填写迟到或早退事由,超过三次将会受到相应处罚。

4. 考勤异常处理:考勤系统会实时监控员工的考勤情况,如有异常情况,将由考勤管理员进行处理,员工应配合提供说明及证明材料。

六、考勤管理1. 考勤核实:每月底,考勤管理员将根据考勤系统记录核实员工的考勤情况,如有问题将与员工沟通核实。

2. 考勤统计:考勤管理员将按照公司规定对员工的考勤情况进行统计,定期向上级汇报,及时发现和解决问题。

3. 考勤奖惩:对于出勤优秀的员工,公司将给予相应的奖励;对于考勤不合格的员工,公司将给予相应的处罚,并记录在员工档案中。

七、审批流程1. 请假审批:员工向直接主管提出请假申请,主管审核后将请假信息录入系统,填写审批意见后方可生效。

2. 加班审批:员工向直接主管提出加班申请,主管审核后填写加班审批单,员工在考勤系统上记录加班时长后方可生效。

3. 考勤异议:如员工对考勤记录有异议,可向考勤管理员提出申诉,经核实后进行调整。

考勤系统标准版

考勤系统标准版

考勤系统标准版一、引言。

随着企业管理的不断深化和信息化的发展,考勤管理也变得越来越重要。

传统的考勤方式已经不能满足现代企业的需求,因此,我们开发了这款考勤系统标准版,旨在帮助企业实现高效、准确的考勤管理,提高工作效率,降低管理成本。

二、系统功能。

1. 考勤打卡,员工可以通过系统进行打卡,支持刷卡、指纹、人脸识别等多种方式,保证考勤的准确性和安全性。

2. 排班管理,支持灵活的排班设置,包括固定班制、弹性工作制等,满足不同企业的需求。

3. 请假管理,员工可以通过系统提交请假申请,经过审批流程后,系统会自动调整考勤数据,保证请假的准确性和规范性。

4. 加班管理,系统能够自动识别加班情况,根据企业规定自动生成加班报酬,并进行考勤统计。

5. 考勤统计,系统能够自动生成各类考勤报表,包括迟到早退统计、缺勤统计、加班统计等,帮助企业及时了解员工的考勤情况。

6. 薪资计算,系统能够根据考勤数据自动生成薪资报表,包括基本工资、加班工资、请假扣款等,减轻企业财务部门的工作负担。

7. 考勤提醒,系统能够自动提醒员工打卡、提交请假申请等,避免考勤管理中的疏忽和漏洞。

三、系统优势。

1. 灵活定制,系统支持多种考勤方式和排班规则的定制,能够满足不同企业的需求。

2. 数据安全,系统采用先进的加密技术,保障考勤数据的安全性和可靠性。

3. 自动化管理,系统能够自动识别和处理各类考勤情况,减少人工干预,提高管理效率。

4. 统计分析,系统能够自动生成各类考勤报表,帮助企业及时了解员工的考勤情况,为管理决策提供数据支持。

5. 效益提升,通过使用本系统,企业能够提高考勤管理的准确性和规范性,提高工作效率,降低管理成本。

四、系统应用。

本系统适用于各类企事业单位,包括但不限于企业、政府机关、学校、医院等,能够满足不同单位的考勤管理需求。

五、总结。

考勤系统标准版是一款功能强大、灵活定制、安全可靠的考勤管理工具,能够帮助企业实现高效、准确的考勤管理,提高工作效率,降低管理成本。

职工考勤管理系统

职工考勤管理系统

职工考勤管理系统前言20世纪90年代,随着我国市场经济的快速进展,职工考勤管理系统在企业的日常管理中发挥着越来越重要的作用。

职工考勤管理系统能够进行员工信息管理、出勤管理与密码管理等,方便处理企业内部员工的有关考勤信息。

此外Internet 的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用与延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间与地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。

职工考勤系统是在习惯市场需求的客观前提下,为了满足中小型公司或者事业单位管理自己的员工而开发的。

目录第一章开发背景 (1)第二章需求分析 (2)第三章概念结构设计 (3)一、局部E-R图设计 (3)(一)、确定局部范围 (3)(二)、确定实体与属性 (3)(三)概念模型表示 (4)二、合并成总体E-R图 (5)第四章逻辑结构设计 (6)一、E-R图转换为关系模型 (6)关系模式的规范化 (6)第五章数据库实施与保护 (8)一、定义数据库结构 (8)二、组织数据入库 (10)三、数据库试运行 (10)第六章JAVA (11)一、JAVA代码: (12)(一)、登录代码 (12)(二)、管理员主界面代码 (15)二、JAVA运行 (29)(一)、用户登录界面 (29)(二)、主界面 (29)(三)、基本功能 (30)第七章参考文献 (34)第一章开发背景我们都明白,考勤管理系统是任何一个营业单位不可缺少的部分,它的内容关于单位的管理者与内部员工来说都至关重要,因此考勤管理系统应该能够为用户提供充足的信息与快捷的安全查询,及实时管理手段。

但在过去,人们一直在使用传统的人工的方式来进行考勤管理,这种落后的方式存在着许多缺点,如:效率低,保密性差,另外时间一长,将产生大量的文件与数据,这关于查找,更新与保护都带来了很多的困难。

考勤制度实施方案

考勤制度实施方案

考勤制度实施方案
一、目的与原则
本考勤制度旨在明确工作时间、规范考勤行为,通过科学管理提升工作效率,确保员工和企业双方权益。

我们坚持以下原则:公平性、合理性、激励性和可操作性。

二、考勤规定
1. 工作时间:员工应遵守公司规定的正常工作时间,即每周工作五天,每天工作八小时,具体上下班时间根据各部门的实际情况确定。

2. 打卡要求:员工需准时打卡,严禁代打卡或漏打卡。

迟到或早退超过规定时间将按公司规定进行处理。

3. 请假流程:员工因故不能按时上班,须提前向直属领导申请并填写请假条,获得批准后方可休假。

4. 加班安排:加班需事先经过部门主管审批,并按照国家相关法律规定支付加班费。

三、异常处理
对于考勤异常情况,如忘记打卡、机器故障等,员工应在第一时间内向人事部门报告并登记备案。

人事部门将根据实际情况进行核实和调整。

四、奖惩机制
1. 奖励措施:对于连续一定时期内无迟到、早退、缺勤记录的员工,公司将给予一定的奖励以示鼓励。

2. 惩罚措施:对于违反考勤制度的员工,根据情节轻重,公司将给予警告、罚款或其他相应的处罚。

五、监督执行
各级管理人员应加强对本部门员工考勤的监督管理,确保考勤制度的严格执行。

人事部门负责对全公司的考勤情况进行监控和分析,并提出改进建议。

六、持续改进
公司将定期对考勤制度进行评估和修订,以适应企业发展和员工需求的变化。

同时,鼓励员工提出合理化建议,共同完善考勤管理体系。

七、附则
本考勤制度自发布之日起实施,由人事部门负责解释。

如有与国家法律法规相抵触之处,以国家法律法规为准。

考勤及休假管理系统规章制度

考勤及休假管理系统规章制度

考勤及休假管理系统规章制度第一章总则第一条为了规范公司员工的考勤及休假管理,提高工作效率,保证公司正常运转,制定本规章制度。

第二条本规章制度适用于公司全体员工,员工应当遵守规定,经公司批准后方可实施。

第三条公司将根据实际情况不断完善和调整本规章制度,并保障员工的合法权益。

第二章考勤管理第四条员工应按照公司规定的考勤时间上下班,并在规定时间内进行打卡或签到。

第五条员工如因故未能按时到岗或提前离岗,应提前请假并经主管批准。

第六条员工应当如实记录自己的考勤记录,不得弄虚作假,一经发现,将受到相应的处罚。

第七条员工迟到早退三次以上,将视情况扣除相应的工资。

第八条公司将对员工的考勤情况进行定期检查和总结,对于表现优秀的员工将予以奖励。

第三章休假管理第九条员工在公司工作满一年后,享有带薪年假,年假的天数根据员工的工作岗位和工作年限而定。

第十条员工应提前向主管领导提出休假申请,并经主管批准后方可休假。

第十一条员工如遇特殊情况需请假,应提供相关证明,并经主管批准后方可休假。

第十二条员工未经批准擅自休假,将受到相应的处罚。

第十三条员工休假期间如有应急工作需求,应随时保持联系,并在规定时间内返回岗位。

第四章外出出差管理第十四条公司外出出差需提前向主管领导提出申请,并经公司批准后方可出差。

第十五条出差期间应当做好行程安排,并保持与公司上下级的联系。

第十六条出差期间如遇突发情况,应及时向公司汇报,并按照公司的要求处理。

第十七条出差期间如有费用支出,应及时报销,并提供相关发票和明细。

第五章备勤管理第十八条公司每日均有备勤人员,负责处理公司内外各类紧急事件。

第十九条备勤人员应随时保持手机畅通,并在第一时间响应公司的通知和指令。

第二十条备勤人员需要在公司值班期间全程待命,并应做好相关记录。

第二十一条备勤人员如有事项需请假,应提前向主管领导汇报,并由主管批准后方可请假。

第六章处罚措施第二十二条对于违反公司考勤及休假规定的员工,公司将给予相应的处罚,包括但不限于:扣减工资、停止奖励、降职等。

企业员工考勤管理制度(3篇)

企业员工考勤管理制度(3篇)

企业员工考勤管理制度第一章总则第一条为了规范企业员工考勤管理,优化企业运营效率,提高员工工作纪律和积极性,制定本制度。

第二条本制度适用于公司所有员工并具有强制性。

第三条公司将根据实际情况,对本制度进行修订和完善,并及时通知全体员工。

第四条公司员工应严格遵守本制度,如有违反将受到相应的处罚。

第五条公司将建立相应的考勤管理系统,用于员工考勤记录和统计。

第二章考勤时间第一条员工应按照公司规定的工作时间表进行工作,不得私自调整工作时间。

第二条上班时间为每天早上8:30到下午5:30,中午12:00到1:00为午休时间。

第三条员工上班迟到超过15分钟将视为旷工半天,超过30分钟将视为旷工一天。

第四条员工下班早退超过15分钟将视为旷工半天,超过30分钟将视为旷工一天。

第五条员工请假应提前提交请假申请,并经部门主管批准后方可生效。

第六条员工应在工作时间内完成工作任务,不得进行无关工作和非工作活动。

第三章考勤记录第一条公司应建立考勤管理系统,用于员工考勤记录和统计。

第二条员工每天上班前应打卡,并在下班后再次打卡。

第三条员工在中午午休结束后应及时返回工作岗位。

第四条员工请假时应在考勤系统中填写请假记录,务必注明请假事由和请假时间。

第五条员工外出时应在考勤系统中填写外出记录,务必注明外出事由和外出时间。

第六条员工在考勤记录中不能存在任何人为篡改或欺骗的行为。

第七条员工应配合公司进行随机的考勤核查,如发现考勤异常情况,将进行严肃处理。

第四章考勤奖惩第一条公司将以员工的考勤表现和工作表现为基础,进行相应的奖励和惩罚。

第二条优秀的考勤表现将获得奖励,包括但不限于奖金、奖品、加班调休等。

第三条严重违反考勤制度的员工将受到相应的惩罚,包括但不限于扣除工资、降级、辞退等。

第四条一年内累计旷工超过7天的员工将被取消年终奖资格。

第五章附则第一条如有特殊情况需要临时调整工作时间或请假等事项,员工应提前向部门主管请示。

第二条本制度自发布之日起生效,并取代之前的相关制度。

员工管理软件考勤制度

员工管理软件考勤制度

员工管理软件考勤制度一、目的与原则制定本考勤制度的目的在于通过科学、合理的管理手段,确保员工按时上下班,遵守工作时间规定,同时兼顾员工的个人需求与公司的整体利益。

本制度以公正、合理为原则,旨在营造一个高效和谐的工作环境。

二、适用范围本考勤制度适用于全体员工,包括全职、兼职员工以及临时工。

管理层成员也应遵循相应的规定,以示表率。

三、考勤规则1. 上下班时间- 正常上班时间为上午9:00至下午6:00,中午休息时间为12:00至13:30。

- 所有员工需在上班前5分钟到达工作岗位,准备开始工作。

2. 打卡要求- 员工应使用员工管理软件进行打卡,作为考勤记录。

- 如遇特殊情况不能及时打卡,需在第一时间内向直接上级报告,并在事后补充相关证明。

3. 迟到早退处理- 迟到或早退超过3次者,将根据情况进行书面警告或扣减当日工资。

- 连续迟到或早退超过5次者,将视情节严重程度给予停职或解雇处理。

4. 请假规定- 员工因病或其他私人事务需请假时,应至少提前一天向直接上级申请,并说明理由。

- 病假需提供医院出具的病假条或相应证明。

- 事假、年假等其他类型的假期需按照公司规定的流程和标准执行。

5. 加班管理- 加班需事先经过直接上级批准,并在员工管理软件中进行记录。

- 加班时间应合理安排,确保员工的休息与健康。

四、异常处理1. 系统故障- 如遇到员工管理软件出现故障导致无法正常打卡,应及时通知IT部门进行处理。

- 在此期间,员工应手动记录考勤并报备给直接上级。

2. 出差与外勤- 出差或外勤的员工需提前告知上级,并在员工管理软件中登记出差或外勤信息。

- 出差或外勤期间的考勤记录应以实际工作时间为准,相关证明材料需留存备查。

五、监督与执行1. 监督责任- 人力资源部负责监督本考勤制度的执行情况,并对违规行为进行处理。

- 各级管理人员应加强对下属的考勤管理,确保制度的落实。

2. 定期审查- 定期对考勤数据进行分析,以发现潜在的问题并及时调整管理措施。

公司员工考勤管理制度方案

公司员工考勤管理制度方案

公司员工考勤管理制度方案公司员工考勤管理制度方案范文一一.目的为了规范公司考勤管理,严肃工作纪律,有效提升员工的敬业精神,并使员工的工资核算做到有据可依,结合我公司实际情况,特制定本规定。

适用范围本制度适用于公司所有员工。

二.考勤制度(一)工作时间:第一条实行五天工作制,每周工作四十小时。

第二条有特殊工作安排人员,工作时间另行规定,具体工作时间安排由部门负责人提出申请。

第三条上下班时间上午 8:00---12:00 下午 14:00—18:00(二)考勤规定:第一条员工上、下班考勤由部门负责人监督执行。

综合部统计考勤单据辅助考勤。

第二条考勤违纪处分 1.迟到:在规定的上班时间 5 分钟后,30 分钟内考勤的,视为迟到。

迟到两次以内部门负责人提出警告,一个月迟到三次以上者每次扣 10 元,并在本月工资发放时扣除,一个月迟到超过五次,情节严重者予以开除。

2.早退:在规定的下班时间前 30 分钟内下班的,视为早退。

早退按旷工半日处分,并在本月工资发放时扣除早退工资。

3.迟到或早退超过 30 分钟视为当日旷工,并在本月工资发放时扣除旷工工资。

旷工扣款规定:未完成请假手续或休假期满未续假而擅自不上班者、伪造出勤记录者,一经查明对责任人予以旷工处理。

1每旷工一天按个人日工资额三倍扣款。

凡旷工连续两天或全年累计三天者,一概予以违纪辞退,将被解除劳动合同并没有任何经济补偿。

第三条全勤奖励规定 1、凡是根据公司作息时间规定,月内上班达全勤者即月内应出勤天数全勤,即可获得月全勤奖,月内有迟到、早退、旷工、请假行为者,不享受全勤奖,凡是公司正常的统一的放假如停水、停电,其他法定假日、带薪年假休假、婚假和丧假等均视为正常出勤,不影响全勤奖的考核。

2、当月提交《离职申请》者次月不计发放全勤奖。

3、全勤奖每人每月 100 元,每月同员工工资一起发放。

第四条经单位统一安排,工作人员在双休日、节假日加班,执行正常作息时间,并需要兑现加班工资的,应由部门负责人做好登记。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计课程设计报告课设题目:考勤管理系统专业:班级: 姓名:成绩:完成日期: 指导教师:目录1.课程设计目的 (2)2.需求分析 (2)2.1要求 (2)2.2任务描述 (2)2.3运行环境 (2)2.4开发工具 (3)3.总体设计 (3)3.1系统流设计 (3)3.2系统模块设计 (4)4.详细设计 (5)4.1数据结构设计 (5)4.2模块接口设计 (6)4.3 以下是几个主要模块的流程图: (7)5.运行结果 (9)5.1主菜单界面: (9)5.2信息录入界面: (9)5.3信息浏览界面: (10)5.4 信息查询界面: (10)5.5信息修改界面: (11)6.程序调试与测试 (12)6.1程序调试 (12)6.2程序测试 (12)7.问题与不足 (13)8.建议 (13)9.编程体会 (13)10.程序源代码: (13)11.参考文献 (30)12.用户使用手册 (30)1.课程设计目的1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

2)通过课程设计,进一步掌握C语言中重要的数据结构。

掌握并熟练运用指针、链表、结构体、文件等数据结构。

3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。

4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。

5)通过课程设计,加强了自己的程序分析能力。

2.需求分析2.1要求1)遵循软件开发过程的基本规;能灵活应用,初步具备运用C程序解决实际问题的能力。

2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。

3)学会利用数组、结构体、链表进行相关信息表示。

4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。

6)所设计的C程序较好的可读性和可靠性;程序书写风格规,注释清晰。

7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。

8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。

9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。

10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。

11)C语言课程设计报告的容反应实际设计过程,且符合格式要求,无抄袭现象。

2.2任务描述此系统以对职工考勤为背景,提供对职工信息、上下班时间的新建、录入、编辑、查询、密码保护等功能。

具体功能实现如下:1)职工信息新建:实现职工工号以及的录入功能,并能将其以文件形式加以保存。

2)考勤信息编辑:实现对职工上下时间的记录,并对指定职工的考勤信息进行删除或修改等功能。

3)考情信息浏览:实现对全体职工当天迟到、早退、矿工、全勤的浏览功能。

4)查询功能:实现按工号或查询职工一周的上下班时间的功能。

5)密码功能:实现对进入系统、修改和删除考勤信息的保护功能以及密码重设的功能。

6)系统以菜单方式工作,界面清晰,易于操作。

2.3运行环境1)WindowsXP/7系统2)VC++6.0编译环境2.4开发工具C语言3.总体设计3.1系统流设计本系统的功能模块如图1所示,主要有以下模块:图1系统功能模块图3.2系统模块设计1)系统欢迎界面:构造函数void welcome(),实现欢迎使用职工考勤管理系统的显示。

2)主菜单界面:构造函数int menu_select(),实现系统主菜单的显示。

3)职工信息新建:构造函数void createInfo(),实现职工基本信息的录入及显示。

并可以通过函数void deleteRec()和void modifyRec(),实现对职工基本信息的删除和修改。

4)职工考勤录入:构造函数void createRec(),实现由主菜单选择通过工号和两种方式职工上下班时间的录入。

5)职工考勤修改:构造函数void modifyRec(),实现由主菜单选择通过工号和两种方式对职工考勤以及基本信息的修改。

6)职工考勤删除:构造函数void deleteRec(),实现由主菜单选择通过工号和两种方式对职工考勤信息的删除。

7)职工考勤查询:构造函数void searchRec(),实现对指定职工一周上下班的时间的查询。

8)职工考勤浏览:构造函数void listRec();,实现所有职工一天中上下班的出勤情况的浏览。

9)密码重设:构造函数void resetPassword(),实现对初始密码888888的重设,并保存在文件中10)保存所有信息:构造函数void saveRec(),实现随时对考勤信息的保存。

4.详细设计4.1数据结构设计为了能实现不受限制的增加职工信息,采用链表的结构保存职工信息,在增加职工的基本信息时,创建一个职工信息的节点,将其插入到链表中,示意图如下。

为此,先声明一个类型为struct worker的结构体,其成员为职工的考勤信息。

然后通过对指针、链表、文件等数据结构的操作,实现对职工考勤信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作。

还声明了一个结构体TIME,用于储存职工上下班的时间。

其中,结构体定义如下:typedef struct //结构体定义{int hour;int minute;}TIME;typedef struct worker{char id[10];char name[10];TIME time[20];struct worker *next;}worker;4.2模块接口设计1)所有函数模块声明如下:int menu_select(); //主菜单void welcome(); //显示欢迎界面void createInfo(); //新建职工信息void createRec(); //录入考勤信息void listRec(); //浏览当天考勤信息void searchRec(); //查询考勤信息void saveRec(); //保存所有信息void deleteRec(); //删除考勤信息void modifyRec(); //修改考勤信息void loadRec(); //加载文件信息void resetPassword(); //重设密码2)并定义三个全局变量:worker *head=NULL; //链表头指针headwriteinfo_flag=0; //信息保存标记char password[16]="888888"; //密码保存3)主要模块的实现系统以主函数void main()为入口。

调用void welcome( )函数,显示课程设计名称及作者信息。

然后调用void loadRec( )函数读取文件中的信息。

然后调用int menu_select( )函数,进入主菜单界面。

系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。

4.3 以下是几个主要模块的流程图:1)主菜单函数:图2 主函数流程图2)考勤查询函数:3)图4考勤删除流程图图3 信息查询流程图5.运行结果5.1主菜单界面:图5主菜单界面输入功能选择,系统自动进入相应功能界面。

5.2考勤录入界面:图6 信息录入界面5.3考勤浏览界面:图7 全部信息浏览5.4 考勤查询界面:从键盘中输入选择,可以按工号和进行查询,并显示结果。

图8 按查询的结果5.5信息修改界面:从键盘中输入需要修改的信息代码,自动提示输入新的信息。

图9 按工号修改的结果6.程序调试与测试6.1程序调试(1)各模块分别调试过程及结果。

(2)集成调试过程及结果。

(3)功能调试过程及结果6.2程序测试(1)输入初始密码后进入系统。

首先选择‘0’新建4个职工信息。

分别为1 aa;2 bb;3 cc;4 dd。

(2)建立信息后系统的各功能都可以使用。

输入‘2’,可以看到刚才新建的所有职工信息,由于还没有考勤,所以都显示为旷工。

选择‘1’,可以录入上午上班考勤信息,通过工号输入1,可以将现在的时间录入到职工号为1的响应的位置。

通过查询功能可也查看他的时间。

选择‘4’输入初始密码删除1后,在查询可以看到aa不存在了密码修改测试:略。

7.问题与不足(1)系统对时间的识别方面比较的差,比如上午:8:00上班,12:30下班,而16:30的时候输入上午上班,系统还是会记为迟到。

(2)工号和不能输入太长,不然整个屏幕的输出都会乱。

(3)必须每周周日开启系统的时候,才能初始化考勤信息。

8.建议我觉得这个题目中有些要求不是很明确,程序刚开始里面的信息要怎么建立,职工是哪里来的啊,题目所给的功能中并没有要求要建立职工的档案,就给我职工是系统本来就有的感觉,我不需要去建立职工信息。

在课设过程中我觉得老师和学生接触有点少啊,每个星期就见一次,有些问题都不能及时的解决。

9.编程体会通过这次做C语言课设,我发现这学期在老师那学的只是一些皮毛而已。

编程的知识博大精深,还有许许多多的函数我都不知道,不会用,在今后自己还要不断的学习。

这次我做的题目中就有一个要求要自动获取系统时间,当初看到这个我就苦恼了,最后还是在网上找到了time.h这个头文件的里面有相关的函数。

课设中我遇到的最大的困难就是信息库的建立,之前总是想着把信息都存在文件中,系统在从中读取,可我自己有对文件不是很熟;之后我改变路径,先通过系统建立链表,在保存到文件中。

通过这几天做课设,我体会到这个过程是艰辛并快乐着的,这个过程中充满了编程的乐趣。

每次为如何把实际中的问题转化为计算机可以识别的语言而苦恼、烦躁,不停的在图书馆和网上查找自己需要的资料,可是一旦自己把程序编出来了,并在计算机上运行通过,自己心里又是快乐的,有一种巨大的成就感回荡在心头,把坐在电脑前几个小时的苦和累都忘了。

这次课设,是我自己第一次靠自己编出来的一个完整的程序,我会把这个程序一直的保存着,随着我今后在编程方面的学习加深,我会自己慢慢的改进它,让它见证我的成长历程。

总言而之,这几天做课设我国的非常的充实,也让我学习到了很多。

10.程序源代码:#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 id[10];char name[10];TIME time[20];struct worker *next;}worker;int menu_select(); //主菜单void welcome();void createInfo(); //新建职工信息void createRec(); //录入考勤信息void listRec(); //浏览当天考勤信息void searchRec(); //查询考勤信息void saveRec(); //保存所有信息void deleteRec(); //删除考勤信息void modifyRec(); //修改考勤信息void loadRec(); //加载文件信息void resetPassword(); //重设密码worker *head=NULL; //链表头指针headwriteinfo_flag=0; //信息保存标记char password[16]="888888"; //初始密码struct tm *timeinfo;int main() //主函数{char s[16];welcome(); //欢迎界面loadRec(); //加载文件信息printf("\n提示:\n\n初始密码为:888888\n"); //进入系统密码管理printf("\t\t\t\n\n\n\n\n请输入密码,进去系统(密码不超过15个字符):");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");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:system("cls");if(writeinfo_flag==1)saveRec();return 0;default:{printf("\n 选择错误,请按回车键返回后,重新输入(0~8)!");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("\t\t**************选择菜单**************\t");//在菜单中显示当前时间printf("时间:星期%d %2d:%2d",timeinfo->tm_wday,timeinfo->tm_hour,timeinfo->tm_min);printf("\n---------------------------------------------------------------------------");printf("\t\t\t0.新建职工信息\n");printf("\t\t1.录入考勤信息\n");printf("\t\t2.浏览考勤信息\n");printf("\t\t3.查询考勤信息\n");printf("\t\t4.删除考勤信息\n");printf("\t\t5.修改考勤信息\n");printf("\t\t6.保存所有信息\n");printf("\t\t7.重设密码\n");printf("\t\t8.退出(退出后信息会自动保存在磁盘中)\n\t\t(任何情况下按Ctrl+C退出程序)\n");printf("\n---------------------------------------------------------------------------");printf("\n\n 请输入您的选择(0~8):");scanf("%d",&c);if(timeinfo->tm_wday==0&&p!=NULL) //每周周日所有考勤信息初始化{for(k=0;k<20;k++){p->time[k].hour=88;p->time[k].minute=88;}}return c;}void loadRec() //从磁盘导入信息{worker *rear,*p,*pre;FILE *fp,*key;int i;if((fp=fopen("workerRec.txt","r"))==NULL) //打开职工信息文件和密码文件{printf("\n提示:\n\n提取职工信息失败,文本无法打开或文件不存在!\n");printf("\n请按回车键进入主菜单新建职工信息^_^\n");getchar();system("cls"); //清屏return;}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->time[i].hour,&p->time[i].minute);if(head==NULL){head=p;pre=p;rear=p;}else{rear->next=p;pre=rear;rear=p;}}pre->next=NULL;key=fopen("key.txt","r");while(!feof(key)) fscanf(key,"%s",password);fclose(fp);fclose(key); //关闭文件return;}void createInfo() //新建职工信息{worker *p,*rear;int i,n,k;if(head!=NULL){printf("\n\n\n\n\t\t\t职工信息数据库已存在\n\n\t\t\t新建职工信息将续接在信息库的后面\n\n\n\t\t\t按回车键继续");getchar();getchar();rear=head;while(rear->next!=NULL)rear=rear->next;system("cls");}printf("\n\n请输入希望建立职工信息条数:");scanf("%d",&n);if(n<=0){printf("\n\n输入错误,建立信息条数至少为1条!\n");printf("\n\n请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}printf("\n请输入职工的工号(至多10个字符)和(至多10个字符):\n");for(i=0;i<n;i++){p=(worker*)malloc(sizeof(worker));scanf("%s%s",p->id,p->name);for(k=0;k<20;k++) //时间初始化为88:88{p->time[k].hour=88;p->time[k].minute=88;}if(head==NULL){head=p;rear=p;}else{rear->next=p;rear=p;}}p->next=NULL;printf("\n%d条信息建立完毕!\n\n请按回车键返回主菜单\n",n);getchar();getchar();system("cls");writeinfo_flag=1;return;}void createRec() //录入考勤信息{time_t nowtime;worker *p;char s[10];int c,m,week;if(head==NULL){printf("\n\t\t\t不存在职工信息\n\n\t\t\t请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t请选择录入考勤种类:\n\n\t\t\t1.上午上班(8:00)\n\n\t\t\t2.上午下班(11:30)\n\n\t\t\t3.下午上班(2:00)\n\n\t\t\t4.下午下班(5:30)\n\n");printf("\n\t\t您的选择(以回车键结束):");scanf("%d",&m);system("cls");//可通过工号或;录入printf("\n\n\n\t\t\t请选择输入工号还是:\n\n\t\t\t1.选择输入工号\n\n\t\t\t2.选择输入\n\n");printf("\n\t\t您的选择(以回车键结束):");scanf("%d",&c);system("cls");switch(c){case 1:{printf("\n\n\n\n\n\n\t\t\t请输入工号(以回车键结束):");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("\n\n\n\n\t\t\t不存在该工号\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday;p->time[4*week+m-5].hour=(timeinfo->tm_hour); //存储时间p->time[4*week+m-5].minute=(timeinfo->tm_min);break;}case 2:{printf("\n\n\n\n\n\n\t\t\t请输入(以回车键结束):");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("\\n\n\n\n\t\t\t不存在该\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday;p->time[4*week+m-5].hour=(timeinfo->tm_hour);p->time[4*week+m-5].minute=(timeinfo->tm_min);break;}}system("cls");printf("\n\n\n\n\n\n\t\t\t考勤成功!请按回车键返回主菜单\n");getchar();getchar();writeinfo_flag=1;system("cls");return;}void listRec() //浏览当天的考勤信息{worker *p=head;int m,week;week=timeinfo->tm_wday;if(head==NULL){printf("\n不存在职工信息\n\n请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n职工今天整体出勤情况如下(没有考勤一律视为旷工):\n\n");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->time[( week-1)*4].hour==8&&p->time[(week-1)*4].minute>0))printf(" 迟到");else if(p->time[(week-1)*4].hour==88)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->tim e[(week-1)*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->t ime[(week-1)*4+2].hour==14&&p->time[(week-1)*4+2].minute>0))printf(" 迟到");else if(p->time[(week-1)*4+2].hour==88)printf(" 旷工");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->t ime[(week-1)*4+3].hour==17&&p->time[(week-1)*4+3].minute<30))printf(" 早退");else {printf(" ");m++;}if(m==4)printf(" 全勤!");p=p->next;}printf("\n\n显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;}void searchRec() //根据工号或查找考勤信息{worker *p=head;int c,i;char s[10];if(head==NULL){printf("\n不存在职工信息\n\n请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t请选择输入工号还是:\n\n\t\t\t1.选择输入工号\n\n\t\t\t2.选择输入\n\n");printf("\n\t\t您的选择(以回车键结束):");scanf("%d",&c);system("cls");switch(c){case 1:{printf("\n\n\n\n\n\n\t\t\t请输入工号(以回车键结束):");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("\n\n\n\n\t\t\t不存在该工号\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}break;}case 2:{printf("\n\n\n\n\n\n\t\t\t请输入(以回车键结束):");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("\n\n\n\n\t\t\t不存在该\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}break;}}system("cls");printf("职工号上午上班上午下班下午上班下午下班\n\n");printf(" %s %s",p->id,p->name);printf(" 周一");for(i=0;i<4;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute);if(i==4)printf("\n\n");}printf("\n 周二");for(i=4;i<8;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute);if(i==8)printf("\n\n");}printf("\n 周三");for(i=8;i<12;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute);if(i==12)printf("\n\n");}printf("\n 周四");for(i=12;i<16;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute);if(i==16)printf("\n\n");}printf("\n 周五");for(i=16;i<20;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute);if(i==20)printf("\n\n");}printf("\n\n\n\n\n\n\t\t\t显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;}void saveRec() //储存所有信息{worker *p=head;FILE *fp,*key;int i;if(writeinfo_flag==0){printf("\n\n\n\n\t\t\t信息无改动,无需保存!\n\n\t\t\t请按回车键返回主菜单\n");getchar();getchar();system("cls");return;}if(writeinfo_flag==1){if((fp=fopen("workerRec.txt","w"))==NULL||(key=fopen("key.txt","w"))==NU LL){printf("\n\t\t\t提示:\n\n\t\t\t存储信息失败!\n");printf("\n\t\t\t请按回车键进入主菜单重新开始\n");getchar();getchar();system("cls");return;}while(p!=NULL){fprintf(fp,"%s\n%s\n",p->id,p->name);for(i=0;i<20;i++)fprintf(fp,"%d\n%d\n",p->time[i].hour,p->time[i].minute);p=p->next;}fprintf(key,"%s",password);fclose(fp),fclose(key);writeinfo_flag=0; //消除改动标志printf("\n\n\n\n\n\t\t\t保存完毕,按回车键继续!");getchar();getchar();system("cls");return;}}void deleteRec() //删除考勤信息{worker *p,*pre=head;char s[16];int c;if(head==NULL){printf("\n不存在职工信息\n\n请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t提示:\n\n\t\t\t初始密码为:888888\n");printf("\n\n\n\t\t\t请输入密码(密码不超过15个字符):");scanf("%s",s);while(strcmp(password,s)!=0){printf("n\n\n\t\t\t密码错误!\n\n");printf("\t\t\t按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t密码输入成功!\n\n\t\t\t请按回车键继续");getchar();getchar();system("cls");printf("\n\n\n\t\t\t请选择输入工号还是:\n\n\t\t\t1.选择输入工号\n\n\t\t\t2.选择输入\n\n");printf("\n\t\t您的选择(以回车键结束):");scanf("%d",&c);system("cls");switch(c){case 1:{printf("\n\n\n\n\n\n\t\t\t请输入工号:");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("\n\n\n\n\t\t\t不存在该工号\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}break;}case 2:{printf("\n\n\n\n\n\n\t\t\t请输入:");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("\n\n\n\n\t\t\t不存在该\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\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("\n\n\n\n\n\n\t\t\t删除成功,请按回车键返回主菜单!");getchar();getchar();system("cls");writeinfo_flag=1;return;}void modifyRec() //修改考勤信息{worker *p,*pre=head;char s[16];int c;if(head==NULL){printf("\n不存在职工信息\n\n请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t提示:\n\n\t\t\t初始密码为:888888\n");printf("\n\n\n\t\t\t请输入密码(密码不超过15个字符):");scanf("%s",s);if(strcmp(password,s)!=0){printf("n\n\n\t\t\t密码错误!\n\n");printf("\t\t\t按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t密码输入成功!\n\n\t\t\t请按回车键继续");getchar();getchar();system("cls");printf("\n\n\n\t\t\t请选择通过工号修改还是修改:\n\n\t\t\t1.选择输入工号\n\n\t\t\t2.选择输入\n\n");printf("\n\n\n\t\t您的选择(以回车键结束):");scanf("%d",&c);system("cls");switch(c){case 1:{printf("\n\n\n\n\n\n\t\t\t请输入工号:");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("\n\n\n\n\t\t\t不存在该工号\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}break;}case 2:{printf("\n\n\n\n\n\n\t\t\t请输入:");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("\n\n\n\n\t\t\t不存在该\n");printf("\n\n\n\n\t\t\t请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;}break;}}system("cls");printf("\n\n\n\t\t\t请选择要修改的容:\n\n\t\t\t1.工号\n\n\t\t\t2.\n\n\t\t\t3.上午上班时间\n\n\t\t\t4.上午下班时间\n\n\t\t\t5.下午上班时间\n\n\t\t\t6.下午下班时间");printf("\n\n\n\t\t您的选择(以回车键结束):");scanf("%d",&c);system("cls");switch(c){case 1:printf("\n\n\n\t\t\t请输入要修改的工号:");scanf("%s",p->id);break;case 2:printf("\n\n\n\t\t\t请输入要修改的:");scanf("%s",p->name);break;case 3:printf("\n\n\n\t\t\t请输入要修改星期几的考勤:");scanf("%d",&c);printf("\n\n\n\t\t\t请输入要修改的时间和分钟:");scanf("%d%d",&p->time[(c-1)*4].hour,&p->time[(c-1)*4].minute);break;case 4:printf("\n\n\n\t\t\t请输入要修改星期几的考勤:");scanf("%d",&c);printf("\n\n\n\t\t\t请输入要修改的时间和分钟:");scanf("%d%d",&p->time[(c-1)*4+1].hour,&p->time[(c-1)*4+1].minute);break;case 5:printf("\n\n\n\t\t\t请输入要修改星期几的考勤:");scanf("%d",&c);printf("\n\n\n\t\t\t请输入要修改的时间和分钟:");scanf("%d%d",&p->time[(c-1)*4+2].hour,&p->time[(c-1)*4+2].minute);break;case 6:printf("\n\n\n\t\t\t请输入要修改星期几的考勤:");scanf("%d",&c);printf("\n\n\n\t\t\t请输入要修改的时间和分钟:");scanf("%d%d",&p->time[(c-1)*4+3].hour,&p->time[(c-1)*4+3].minute);break;}printf("\n\n\n\t\t\t修改成功,请按回车键返回主菜单!");getchar();getchar();system("cls");writeinfo_flag=1;return;}void resetPassword() //重设密码{char s[16];if(head==NULL){printf("\n\n\n\n\n\t\t\t不存在职工信息\n\n\t\t\t请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t提示:\n\n\t\t初始密码为:888888\n");printf("\n\t\t请输入密码(密码不超过15个字符):");scanf("%s",s);if(strcmp(password,s)!=0){printf("\n\n\n\t\t密码错误!\n\n");printf("\n\n\n\t\t按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\t\t密码输入成功!\n\n\t\t请按回车键继续");getchar();getchar();system("cls");printf("\n\n\n\t请输入要修改的密码(密码不超过15个字符):");scanf("%s",s);strcpy(password,s);printf("\n\n\t修改成功,请按回车键返回主菜单!");getchar();getchar();system("cls");writeinfo_flag=1;return;}void welcome() //欢迎界面{printf("\n\n\n\n\n\n\n\t\t\t欢迎使用职工考勤管理系统");printf("\n\n\n\t\t\t请按任意键进入系统,开始您的操作");printf("\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t作者:胡开喜T1123-7");getch();system("cls");return;}11.参考文献[1] 廖湖声.C程序设计案例教程.人民邮电,2010.9[2] 谭浩强.C程序设计(第2、3、4版).清华大学,2000.1.12.用户使用手册(1)该系统为职工考勤管理系统。

相关文档
最新文档