数据库设计考勤系统
① 基于sql的考勤查询系统----学习探讨
卡机系统的数据结构一般分为:考勤一套,请假一套,加班一套。
考勤不会刻意每个栏位判断一次是早上卡还是晚上卡,而是根据员工对应排班表来自行决定时间对应的考勤Type。
请假一般分带薪、半薪、无薪,调休四类。然后带薪假和半薪假一般会分顺延和扣减两类。
加班则分大,中,小三个类别,对应3工,2工,1.5工。调休则优先对应3工、2工类型扣减。
而且还需要处理跨天(我建议设置大于24小时,方便计算),调班等问题
② 如何设计学生考勤数据库
1. MVC 设计模式设计模式概述
1.1 MVC 设计模式
MVC 设计模式是一种着名的软件开发设计模式,它是模型、视图、控制器( Mode1.View.Controller )缩写.模型封装了用户数据和处理数据的业务逻辑;视图提供了用户界面,将用户输入数据传递给控制器或将模型数据显示给用户;控制器连接了模型和视图,判断请求交给哪个模型,调用视图显示模型处理用户请求结果.
MVC 设计模式将应用程序进行了分层,视图和模型通过控制器连接,从而减少了用户界面和业务逻辑之间的耦合,使程序设计更加清晰、灵活,也提高了软件的可扩展性、可维护性.
1.2 Struts 框架
Struts 是基于的MVC模式应用框架,遵守了 J2EE 的Servlet、JSP 等技术规范,并且根据J2EE的特点做了相应的变化和扩展,是J2EE 体系架构的一种轻量级实现.
在Struts 框架中,控制器由 ActionServlet 和Action 类以及 Struts.config.xml 配置文件实现.ActionServlet 是Struts 框架的核心控制组件, 所有的用户请求都被映射到 ActionServlet, 由ActionServlet 根据配置文件中的定义将控制转移到指定的 Action 类.Action 类是用户请求与业务逻辑之间的桥梁,它执行一个 execute()方法并返回一个ActionForward对象,当ActionServlet 接收到该对象后,根据 Struts config.xml 中的配置信息将请求转发.Struts 框架中的视图主要由 JSP 页面组成.ActionForm 是Struts 在视图层的一个核心组件,它是专门用来在视图层和控制层之间传递表单数据的 DTO(Dam Transfer Object,数据传输对象),它还包括了用于数据验证的 validate()方法和用于数据复位的 reset()方法.在Struts 应用程序中,开发人员可以选择 javaBean、Hibernate、EJB 等组件来实现 Struts 框架中的模型.
2.Hibernate 持久化技术
Hibernate 是一个基于 Java 的开放源代码的 O/R Mapping (对象关系映射框架),它通过其强大的 O/R 映射功能 JAVA 对象同存于关系数据库中的数据进行映射,并对 JDBC 进行了轻量级的对象封装,可以使JAVA程序员方便地使用对象编程思维来操纵数据库,它不仅提供 ORM 映射服务,还提供数据查询和数据缓存的方法,可以提高查询和处理数据的效率.它是一种提供面向对象的数据库服务中间件.
3.基于 Struts 和Hibernate 的考勤管理系统的设计
随着教育部对在校大学生出勤的相关规定出台,各大专院校加大了对学生考勤的管理力度,但大部份都采用手工处理的方法,工作量大且效率低.本系统能够实现网上对学生考勤信息进行添加、删除、修改、查询和统计功能,管理人员能及时了解学生出勤情况和某课班级某课程的出勤情况.在开发的过程中,使用 PowerDesigner 作为 CASE 工具,采用对 Hibernate 和Struts 提供良好支持的 Myeclipse 6.0 作为系统的开发环境,数据库采用 MYSQL5.0,WEB 服务器采用 jakarta Tomcm6.0 并安装了 JDK6.0.
3.1数据库层的设计
Power Designer 是Sybase 公司的 CASE 工具集,使用它可以方便地对管理信息系统进行分析设计.DataArchitect 模块是Power designer 的核心工具,它采用二级数据建模方式,即概念级和物理级.在概念级,概念数据模型 (CDM) 代表业务信息需求,不考虑在数据库上的物理实现,通过它可以绘制系统的实体联系图(E.R图),即系统的静态特征;在物理级,物理数据模型 (PDM) 指定了物理实现的目标RDBMS的特征等细节.它可以生成数据库脚本,通过选择 ODBC 方式则可以直接连接到数据库,从而直接产生数据库表以及其他数据库对象.它与其它设计软件相配合使用可以缩短开发时间和使系统设计更优化.
在本系统的设计过程中,我们利用 Power Designer 来完成系统数据库概念设计和 MYSQL 数据库表的工作.首先,在PowerDesigner 中设计系统的概念层次的数据模型,通过它的CDM 功能创建实体关系图来描述系统的数据组织结构.通过它的检查模型功能,校验概念数据模型中实体、实体属性、实体标识和实体间关系等是否存在问题.接着,选择 MYSQL 作为系统的目标数据库,生成在MYSQL 上实现的数据库的物理数据模型 (PDM) :最后,通过产生数据库功能,并选择 ODBC 方式连接到指定的数据库,从而直接产生MYSQL 上的数据库表以及其他数据库对象.
3.2 持久化层的设计
数据持久层基于 Hibernate 架构,采用了 DAO 设计模式和抽象工厂设计模式.下面以学生类 (Student) 为例进行说明.首先,把学生信息封装为 VO(Value Object) .VO 是一组值对象,只包含了一些属性和 getter/setter 方法的 POJO(Plan Old Java Bean) .然后,采用 DAO 设计模式和抽象工厂设计模式,完成 DAO 工厂和 Hibernate 数据库操作的具体实现.最后,利用 Hibernate 的配置文件完成从应用程序到数据库的映射.
在Myeclipse 开发环境中,首先配置数据库服务器的连接,然后利用 Myeclipse 的Hibernate 的逆向工程,可以自动完成持久化层的设计任务.例如对学生表 (student) 进行逆向工程, 将会自动生成Student.iava、AbstractStudent.iava、StudentDAO.iava、Student.hbm.xml等文件.其中,Abstract Student.iava 就是一个封装了 Student 信息的VO.Student DAO.java采用DAO模式封闭了数据库操作.
在hibemate.cfg.xml 配置文件中,定义了符合 SQLServer 规范的 dialect 方言,连接池访问数据库的 URL 资源定位地址以及数据库名称kq, 数据库连接驱动程序,Hibernate管理事务、是否显示SQL语句.在mapping映射文件配置部分,定义了教师表 (Teacher)、学生表 (Student1、考勤表(Attendance) 等对应的映射文件等.在该层的设计中,VO 的信息封装体现了面向对象设计编程思想; DAO 的设计模式和抽象工厂模式减弱了上层调用和具体实现之间的耦合;Hibemate 配置实现了数据库高移植性,只需要改变 Hibemate 配置文件,不用修改程序设计就可以完成不同数据库之间的更换.
3.3 业务逻辑层设计
业务逻辑层包含了供客户端程序调用的业务逻辑规则,以帮助客户端完成业务操作.该层采用业务代理、DAO和抽象工厂设计模式使用业务代理、DAO 和抽象工厂设计模式,可以使业务逻辑更加灵活,如果具体业务发生变化,在表示层和数据持久化层改变很小就可以完成改变,这种设计能够增强系统的可维护性和灵活性.
3.4 表示层设计
③ 考勤管理系统的这个日常考勤模块 数据库表怎么设计呢,是一张表,还是两张表功能如下
用三张表来实现
第一张表记录人员信息,包括工号、姓名、性别、适应考勤规则代码
第二张表记录人员上班明细记录,包括工号、上班时间、下班时间
第三张表记录考勤规则,报表考勤规则代码、另外的字段就是你上面的这些规则
做考勤处理的时候把这三种关联起来
④ 设计一个关系数据库,用于存储学生的考勤记录。
简要说下,这个同学还是要自己动手:
数据库设计为最少3个表:
1. Subjects(课程),包含 ID,任课老师,学生人数
2. Students, 包含ID, 姓名,班级,等相关人员信息的字段;
3. Attendance(出勤表),包含ID, 课程的ID,出席的学生ID,出勤时间,等。
可以看到“出勤”表中将“课程”,“学生”共三个表联系起来了,分别通过他们各自的ID进行关联。
⑤ OA办公考勤管理模块的数据库该怎么设计分几张表啊
一般是3到4张表
一张员工表,一张部门表,一张考勤表。
员工表
员工id,部门id,员工姓名
部门表
部门id,部门名称
考勤表
考勤id,员工id,考勤时间(自动获取服务器时间)
如果员工的资料很复杂的话,你卡亿考虑再加一张员工详细信息表,不是很复杂的话就在员工表里面直接加上就可以,有什么疑问再问我把。
⑥ 如何用sql数据库和c#程序设计设计一个考勤管理系统
template <typename DataType>
void AllSort<DataType>::InitArr(vector<DataType> &a,int len,int arrType)
{
if (arrType == 1)
{
for (int i=0;i<len;i++)
{
a.push_back(i);
}
}else if(arrType == 2)
{
for (int i=0;i < len;i++)
{
int key=i%countNum;
a.push_back(key);
}
}
}
⑦ 求考勤表的数据库设计思路,要求方便统计出勤天数。我用的是SQL
如果你这个是最简单的考勤记录,不涉及到三班倒和加班之类的,那么一个最简单的表是这样
员工表(不用说了吧,基本信息)
记录表(日期、员工号、开始时间、结束时间、出勤情况)
如果自动打卡机,获取的就是工号、日期、时间。你通过程序判断每个人当天最小和最大时间,写到记录表里面
如果当天开始时间和结束时间都有,而且你还能根据时间段判断迟到、早退什么的,然后在出勤情况中写上相应信息
后面想怎么统计都用这个表来完成
比如说每个月出勤天数 select sum(*) from 记录表 where 日期在指定月范围 and 出勤情况 = '出勤'
月报表等等都能通过语句加上适当的循环来实现
是不是给你说得有点复杂?那你就别考虑打卡机和迟到早退,更简单了,呵呵
⑧ 编程开发设计:做一个考勤系统的设计
这个应该只是一方面的问题,考勤算法不是那么简单的,有很多种情况,所以如果自己开发最少花很久的时间,不断的完善,还不如直接买个考勤系统,像这些功能对于诶诺基人力资源管理系统都是小事了,完全可以实现.