实现系统信息管理,用于设置上午、下午的上下班时间; 实现考勤登记; 创建触发器,如果打卡时间超出上班时间,并且小于5分钟,登记为迟到,否则登记为旷工; 创建存储过程统计各员工指定月份的缺席、旷工次数; 创建视图分组查询各部门的职工信息及职工人数,使用Compute子句; 创建check约束,限制员工的性别必须为‘男’或‘女’; 表间关系 3.课程设计说明书 3.1 需求分析 3.1.1功能需求 (1)管理层管理功能包括: ① 新员工基本信息录入工作 ② 在线查询公司各部门员工的考勤信息 ③ 修改员工基本信息 (2)员工功能包括 ① 签到、签出上班打卡 ② 查询个人账号信息 ③ 在线修改个人信息 3.1.2数据需求 关于考勤系统,以下是设计数据信息表: (1) 部门信息表:部门名称nchar(10)、部门编号int; (2) 级别信息表:级别int、级别名称nchar(10); (3) 技能信息表:技能编号nchar(10)、技能名称nchar(10); (4) 员工信息表:级别int、员工编号int、密码int、部门编号int、姓名nchar(10)、性别nchar(10)、年龄int、邮箱nchar(10)、住址nchar(10)、电话nchar(10)、进入公司日期nchar(10)、学历nchar(10)、政治面貌nchar(10); (5) 员工技能表:员工编号int、技能编号int; (6) 考勤记录表:员工编号int、状态编号int、上班时间nchar(20)、下班时间nchar(20)、日期nchar(20); (7) 状态信息表:状态编号int、状态名称nchar(10); 数据库程设计报告 第 3 页共 27 页
图4 系统功能结构图 3.1.3安全性完整性需求 (1)安全性需求分析 ① 需要输入用户名与密码才能登陆本系统; ② 输入的登陆密码需要以“*”显示; ③ 禁止非法数据写入; ④ 对于各种错误可以做到提醒或纠正; (2)完整性需求 ① 数据库设计时要使关系的属性不可再分,满足原子性; ② 约束表格中部分属性的内容; ③ 为数据的新增、修改或删除设定对应的触发器; ④ 给表格外键设置级联删除,当对应外键被删除时,将其关联信息全部删除; ⑤ 防止数据库查询发生 SQL 注入的攻击; 3.1.4数据流图 (1) 顶层数据流图,如图1示: 数据库程设计报告 第 4 页共 27 页
图1顶层数据流图 (2)零层数据流图,如图2示: 图2 零层数据流图 (3)一层数据流图,如图3示: 数据库程设计报告 第 5 页共 27 页
图3 一层流图 3.1.5 E-R图 (1)局部E-R图(以考勤表、员工信息表为例)如图5、图6示: 图5 考勤信息表E-R图 数据库程设计报告 第 6 页共 27 页
图6 员工信息表E-R图 (2)全局ER图,如图7示: 图7 全局E-R图 3.1.6数据字典 (1) 数据结构 部门信息表(表一) 列名 部门名称 部门编号 说明 不同员工有不同部门 所属部门编号1~6级 int 字段类型 nchar(10) 非空 可以为空 约束控制 级别信息表(表二) 列名 说明 字段类型 约束控制 数据库程设计报告 第 7 页共 27 页
级别 级别名称 对应的级别为1~5级 int 员工的具体职位 nchar(10) 技能信息表(表三) 列名 技能编号 技能名称 说明 不同职位负责不同工作 说明 对应的级别为1~5 员工工作的三种状态1~3(上班、缺勤、早退) 8:00-11:00 13:00-18:00 匹配具体时间 int int 字段类型 非空 可以为空 nchar(10) 约束控制 对应的技能为1~5种 nchar(10) 非空 可以为空 考勤信息表(表四) 列名 员工编号 状态编号 字段类型 非空 可以为空 约束控制 上班时间 下班时间 日期 nchar(20) nchar(20) Date 可以为空 可以为空 可以为空 员工技能表(表五) 列名 员工编号 技能编号 说明 对应的级别为1~5 int 对应的技能为1~5种 int 员工信息表(表六) 列名 级别 员工编号 密码 部门编号 姓名 性别 年龄 邮箱 住址 电话 进入公司日期 学历 政治面貌 说明 对应的级别为1~5级 int 不同职位的员工编号 int 独立存在用于登陆 部门编号1~5 员工的姓名 性别(男,女) 员工的年龄 联系方式 员工的家庭住址 联系方式 入职时间 员工的学历(...) 团员、党员、群众 int int nchar(10) nchar(10) int nchar(10) nchar(10) nchar(10) nchar(10) nchar(10) nchar(10) 字段类型 非空 非空 非空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 约束控制 字段类型 约束控制 可以为空 可以为空 状态信息表(表七) 列名 状态编号 状态名称 (3)数据流 说明 对应的上班状态 上班、矿工、早退 int nchar(10) 字段类型 非空 可以为空 约束控制 数据库程设计报告 第 8 页共 27 页
数据流简述:查询员工基础信息 数据流来源:员工信息存储 数据流去向:员工信息模块 数据流组成:级别+员工编号+密码+部门编号+姓名+性别+年龄+邮箱+住址+电话+进入公司时间+学历+政治面貌 数据流简述:添加/删除/修改员工基础信息 数据流来源:登录用户请求处理 数据流去向:员工信息模块 数据流组成:级别+员工编号+密码+部门编号+姓名+性别+年龄+邮箱+住址+电话+进入公司时间+学历+政治面貌 数据流简述:查询/搜索部门信息 数据流来源:员工信息存储 数据流去向:员工信息管理模块 数据流组成:部门信息+级别+技能+考勤+状态 数据流简述:查询考勤信息 数据流来源:考勤信息存储 数据流去向:员工信息管理模块 数据流组成:部门编号+级别+状态 数据流简述:登录信息 数据流来源:用户登录请求处理 数据流去向:登录模块 数据流组成:用户名+密码 (4)数据存储 数据存储名:用户信息 简述:存放登录系统时需要的用户的信息 数据存储组成:用户名+密码 关键字:用户名 数据存储名:部门信息 简述:存放公司所有部门的信息 数据存储组成:部门编号+级别号+级别技能+员工编号 关键字:员工编号 数据存储名:考勤信息 简述:存放公司考勤的信息 数据存储组成:部门编号+级别编号+员工编号+状态编号 关键字:员工编号+状态编号 数据存储名:员工信息 简述:存放公司员工的信息 数据存储组成:级别+员工编号+密码+部门编号+姓名+性别+年龄+邮箱+住址+电话+进入公司时间+学历+政治面貌 关键字:员工编号 数据流简述:添加/删除/修改部门信息 数据流来源:登录用户请求处理 数据流去向:员工信息管理模块 数据流组成:部门信息+级别+技能+考勤+状态 数据流简述:添加/删除考勤信息 数据流来源:登录用户请求处理 数据流去向:员工信息管理模块 数据流组成:部门编号+级别+状态 数据流简述:查询员工考勤人数信息 数据流来源:登录用户请求处理 数据流去向:员工信息管理模块 数据流组成:男生人数+女生人数 数据库程设计报告 第 9 页共 27 页
(5)处理过程 处理过程名:搜索员工 输入数据:员工编号 输出数据:级别+员工编号+密码+部门编号+姓名+性别+年龄+邮箱+住址+电话+进入公司时间+学历+政治面貌 处理逻辑:按照员工编号查找员工信息和与其对应的部门信息,之后输出数据 处理过程名:查询员工 输入数据:申请查询信息 输出数据:查询员工信息 处理逻辑:按照员工编号的递增顺序输出存储的员工信息 处理过程名:用户登录 输入数据:用户名+密码 输出数据:登录是否成功的信息 处理逻辑:先检测用户名是否存在,若不存在则提示“用户名不存在”,若用户名存在则核对其对应密码是否正确,正确则显示登录成功,跳转系统主页,否则提示登录失败 处理过程名:查询部门考勤人数 输入数据:部门编号 输出数据:打卡人数 处理逻辑:用户输入要查询员工打卡人数的部门编号,若输入的部门编号存在则调用存储过程,返回打卡的人数,之后以提示方式给出,否则提示输入有误并需要重新输入 处理过程名:查询部门 输入数据:申请查询信息 输出数据:查询部门信息 处理逻辑:按照部门编号的递增顺序输出存储的部门信息 处理过程名:添加/修改员工 输入数据:添加/修改员工信息 输出数据:添加/修改是否成功的信息 处理逻辑:用户输入要添加/修改的员工信息,数据库在确认员工信息是否合法之后给出添加/修改成功或失败的提示 3.2 概要设计 3.2.1关系模式 以下为本系统数据库的数据关系模型,下划直线标明的是关系模式的主码。 部门信息表(部门编号,部门信息) 级别信息表(级别编号,级别名称) 技能信息表(技能编号,技能名称) 考勤记录表(员工编号,状态编号,上班时间,下班时间,日期) 员工技能表(员工编号,技能编号) 状态信息表(状态编号,状态名称) 员工信息表(级别编号,员工编号,部门编号,密码,性别,姓名,年龄,电话,邮箱,住址,进入公司时间,学历,政治面貌) 数据库程设计报告 第 10 页共 27 页
其中部门信息表对应部门基本关系,员工信息表对应员工基本关系,级别信息表对应级别基本关系,状态信息表对应员工考勤基本情况,技能信息表对应员工基本技能,员工技能信息表对应技能与员工之间的关系,考勤信息表对应员工与员工打卡状态之间的关系。 3.2.2功能图 (1)系统功能结构图,如图8示: 图8系统功能结构图 3.3 详细设计 3.3.1数据库 SQL Server 2014 数据库文件分为3种类型:主数据文件、次数据文件和日志文件。 数据库名(DBO):timebookDB 文件位置(File):D:\\Program Files\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQL\\DATA 连接数据库:String conStr=\"jdbc:sqlserver://127.0.0.1:1433;databaseName=timebookDB\"; CREATE DATABASE [timebookDB] CONTAINNMNT = NONE ON PRIMARY (NAME = 'timebookDB',FILENAME = 'D:\\Program Files\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQL\\DATA\imebookDB.mdf' SIZE = 5120KB,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB) LOG ON (NAME = 'timebookDB_log',FILENAME = 'D:\\Program Files\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQL\\DATA\imebookDB_log.ldf' SIZE = 2560KB,MAXSIZE = UNLIMITED,FILEGROWTH = 2048KB,FILEGROWTH = 10%) GO 数据库程设计报告 第 11 页共 27 页
3.3.2表 (1) 用sql语句创建部门信息表: USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[部门信息表]( [部门名称] [nchar](10) NOT NULL, [部门编号] [int] NOT NULL, CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ( [部门编号] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO 部门信息表(表一) 列名 部门名称 部门编号 (2) 用sql语句创建级别信息表: USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[级别信息表]( [级别] [int] NOT NULL, [级别名称] [nchar](10) NULL, CONSTRAINT [PK_级别信息表] PRIMARY KEY CLUSTERED ( [级别] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO 级别信息表(表二) 列名 级别编号 级别名称 主键 约束 int nchar(10) 字段类型 是否可为空 非空 可以为空 int 字段类型 nchar(10) 是否可为空 非空 非空 (3) 用sql语句创建技能信息表: 数据库程设计报告 第 12 页共 27 页
USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[技能信息表]( [技能编号] [nchar](10) NOT NULL, [技能名称] [nchar](10) NULL, CONSTRAINT [PK_技能信息表] PRIMARY KEY CLUSTERED ( [技能编号] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO 技能信息表(表三) 列名 技能编号 技能名称 主键 (4) 用sql语句创建考勤信息表: USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[考勤记录表]( [员工编号] [int] NOT NULL, [状态编号] [int] NOT NULL, [上班时间] [nchar](20) NULL, [下班时间] [nchar](20) NULL, [日期] [nchar](20) NULL, CONSTRAINT [PK_Table_1_1] PRIMARY KEY CLUSTERED ( [员工编号] ASC, [状态编号] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[考勤记录表] WITH CHECK ADD CONSTRAINT [FK_考勤记录表_状态信息表] FOREIGN KEY([状态编号]) REFERENCES [dbo].[状态信息表] ([状态编号]) GO 约束 字段类型 nchar(10) nchar(10) 是否可为空 非空 可以为空 数据库程设计报告 第 13 页共 27 页
ALTER TABLE [dbo].[考勤记录表] CHECK CONSTRAINT [FK_考勤记录表_状态信息表] GO 考勤信息表(表四) 列名 员工编号 状态编号 上班时间 下班时间 日期 (5) 用sql语句创员工技能信息表: USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[员工技能表]( [员工编号] [int] NOT NULL, [技能编号] [int] NOT NULL, CONSTRAINT [PK_Table_1_2] PRIMARY KEY CLUSTERED ( [员工编号] ASC, [技能编号] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO 员工技能表(表五) 列名 员工编号 技能编号 (6) 用sql语句创建员工信息表: USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[员工信息表]( [级别] [int] NOT NULL, [员工编号] [int] NOT NULL, [密码] [int] NULL, 主键 主键 约束 int int 字段类型 是否可为空 非空 非空 主键 主键 约束 int int nchar(20) nchar(20) Date 字段类型 是否可为空 非空 非空 可以为空 可以为空 可以为空 数据库程设计报告 第 14 页共 27 页
[部门编号] [int] NOT NULL, [姓名] [nchar](10) NULL, [性别] [nchar](10) NULL CONSTRAINT [df_性别] DEFAULT ('男'), [年龄] [int] NULL, [邮箱] [nchar](10) NULL, [住址] [nchar](10) NULL, [电话] [nchar](10) NULL, [进入公司日期] [nchar](10) NULL, [学历] [nchar](10) NULL, [政治面貌] [nchar](10) NULL, CONSTRAINT [PK_Table_1_3] PRIMARY KEY CLUSTERED ( [级别] ASC, [员工编号] ASC, [部门编号] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[员工信息表] WITH CHECK ADD CONSTRAINT [FK_员工信息表_部门信息表] FOREIGN KEY([部门编号]) REFERENCES [dbo].[部门信息表] ([部门编号]) GO ALTER TABLE [dbo].[员工信息表] CHECK CONSTRAINT [FK_员工信息表_部门信息表] GO ALTER TABLE [dbo].[员工信息表] WITH CHECK ADD CONSTRAINT [FK_员工信息表_级别信息表] FOREIGN KEY([级别]) REFERENCES [dbo].[级别信息表] ([级别]) GO ALTER TABLE [dbo].[员工信息表] CHECK CONSTRAINT [FK_员工信息表_级别信息表] GO 员工信息表(表六) 列名 级别 员工编号 密码 部门编号 姓名 性别 年龄 邮箱 住址 电话 进入公司日期 学历 主键 主键 主键 约束 int int int int nchar(10) nchar(10) int nchar(10) nchar(10) nchar(10) nchar(10) nchar(10) 字段类型 是否可为空 非空 非空 非空 非空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 可以为空 数据库程设计报告 第 15 页共 27 页
政治面貌 (7) 用sql语句创建员工状态信息表: USE [timebookDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[状态信息表]( [状态编号] [int] NOT NULL, [状态名称] [nchar](10) NULL, CONSTRAINT [PK_状态信息表] PRIMARY KEY CLUSTERED ( [状态编号] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO 状态信息表(表七) 列名 状态编号 状态名称 (8) 视图、触发器、存储过程、约束 创建视图分组查询各部门的职工信息及职工人数,使用Compute子句; use timebookDB go create view wfm as select distinct 部门信息表.部门名称,部门信息表.部门编号,姓名,年龄,性别,学历 from 部门信息表,员工信息表 where 部门信息表 .部门编号=员工信息表.部门编号 select distinct 部门信息表.部门名称,部门信息表.部门编号,姓名,年龄,性别,学历 from 部门信息表,员工信息表 where 部门信息表 .部门编号=员工信息表.部门编号 order by 部门信息表.部门名称 compute count(部门信息表.部门编号) by 部门信息表.部门名称 go 创建触发器,如果打卡时间超出上班时间,并且小于5分钟,登记为迟到,否则登记为旷工; create Trigger tri on 考勤记录表 AFTER insert 主键 约束 int nchar(10) 字段类型 是否可为空 非空 可以为空 nchar(10) 可以为空 数据库程设计报告 第 16 页共 27 页
AS declare @begin int,@time int,@cq char(10) select @cq=员工编号 from inserted select @begin=上班时间 from inserted select @time=下班时间 from 考勤记录表 if(@begin-@time)<5 and (@begin-@time)>0 update 考勤记录表 set 状态编号='3' where 员工编号=@cq and 上班时间=@begin if(@begin-@time)<0 update 考勤记录表 set 状态编号='1' where 员工编号=@cq and 上班时间=@begin if(@begin-@time)>5 update 考勤记录表 set 状态编号='2' where 员工编号=@cq and 上班时间=@begin 创建存储过程统计各员工指定月份的缺席、旷工次数; use timebookDB go create procedure pro_10(@日期 date) as begin select 员工信息表.员工编号,员工信息表.姓名,count(员工信息表.员工编号)-count(考勤记录表.员工编号)缺席 from 员工信息表,考勤记录表 where 员工信息表.员工编号=考勤记录表.员工编号 group by 员工信息表.员工编号,员工信息表.姓名 end go 创建check约束,限制员工的性别必须为‘男’或‘女’; alter table 员工信息表 with check add constraint df_性别 default '男' for 性别 (9) 执行完上述操作,得到如下界面,如图12示: 图12 数据库详情 (10) 表与表之间关系模式图,如图13示: 数据库程设计报告 第 17 页共 27 页
图13 关系模式图 3.3.3主流程图 (1)主系统流程图,如图9示: 图9 主系统流程图 主界面: 数据库程设计报告 第 18 页共 27 页
图10 主界面 (2)员工信息管理界面功能,员工查询功能如图11示: 图11 员工查询功能流程图 界面如图12示: 数据库程设计报告 第 19 页共 27 页
图12 查询员工信息 (3)员工信息管理界面功能,修改员工信息功能如图13示: 图13修改员工信息 界面如图14所示: 图14 修改员工信息 (4)员工信息管理界面功能,员工考勤功能如图15示: 数据库程设计报告 第 20 页共 27 页
图15 员工考勤功能 界面如图16所示: 图16 员工考勤界面 (5)管理员界面管理功能,查询员工考勤流程图如图17示: 数据库程设计报告 第 21 页共 27 页
图17 管理员查询流程图 界面如图18所示: 图18 管理员查询界面 (6)管理员界面管理功能,录入员工流程图如图19示: 数据库程设计报告 第 22 页共 27 页
图19 管理员录入员工信息流程图 界面如图20所示: 图20 员工录入界面 (7)管理员界面管理功能,修改员工考勤流程图如图21示: 数据库程设计报告 第 23 页共 27 页
4.系统实现 图21 修改员工信息流程图 界面如图22所示: 图22 修改员工信息界面 数据库程设计报告 第 24 页共 27 页
4.1编码 4.1.1系统环境 操作系统:Windows 10 选用模式:C/S客户端 DBMS:sql server 2014 开发语言:Java 开发平台:Myeclipse10 数据库管理工具:sql server 2014 4.1.2 客户端界面关键代码: (1) 连接数据库 public DbConnect(){ try { } catch (ClassNotFoundException ex) { ex.printStackTrace(); } } public Connection getConn(){ Connection conn = null; String conStr=\"jdbc:sqlserver://127.0.0.1:1433;databaseName=timebookDB\"; try { conn = DriverManager.getConnection(conStr, \"sa\", \"sa\"); } catch (SQLException ex) { ex.printStackTrace(); } Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\"); (2) 修改密码 private void initialize() if((ID.getText().length()+oldPassword.getText().length()+newPassword.getText().length()+newAg { { JOptionPane.showMessageDialog(this,\"输入信息不完整。\");return;} if(!newPassword.getText().equals(newAgain.getText())) ain.getText().length())==0) { } { this.setSize(401, 350); this.setContentPane(getJContentPane()); this.setTitle(\"更改密码\"); public void chStuPass() 数据库程设计报告 第 25 页共 27 页
} JOptionPane.showMessageDialog(null, \"新密码不一致。\");return;} try { } catch(Exception ee) { JOptionPane.showMessageDialog(null,ee.getMessage()+\"与数据库连接失败\");return;} /*Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); Connection connection = DbConnect db=new DbConnect(); Connection connection=db.getConn(); Statement statement= connection.createStatement(); ResultSet rs=statement.executeQuery(\"select * from 员工信息表 where 员工编号if(!rs.next()) {JOptionPane.showMessageDialog(this, \"ID或密码错误!\");return;} rs.close(); statement.executeUpdate(\"update 员工信息表 set 密码statement.close(); connection.close(); JOptionPane.showMessageDialog(null, \"修改密码成功!\"); DriverManager.getConnection(\"jdbc:odbc:stu\ =\\'\"+ID.getText()+\"\\'and 密码=\\'\"+oldPassword.getText()+\"\\'\"); =\\'\"+newPassword.getText()+\"\\'where 员工编号=\\'\"+ID.getText()+\"\\'\"); 4.2测试及调试 4.2.1select查询 (1) 在数据库中查询正常上班(状态编号为1)的员工名单,运行结果如图23示: select * from 考勤记录表 where 状态编号='1' 图23 查询考勤记录 (2) 调用前端程序,查询正常上班的员工名单,看员工名单是否一致,运行结果如图24示: 数据库程设计报告 第 26 页共 27 页
图24 客户端查询 4.2.2insert语句 (1)在sql中用insert语句在员工信息表中插入一组新的数据,运行结果如图25示: insert into 员工信息表 values(6,1024,111,29,'wfm','女',23,1,2,3,20140101,'本科','群众') 图25插入记录 (2)在客户端进行查询,验证数据库数据功能是否完整,运行结果如图26示: 图26客户端插入记录 4.2.3 delete语句 (1)在sql 中用删除语句删除一组数据,代码如下,运行截图如图27示: DELETE FROM 员工信息表 WHERE 员工编号 = 1024; 图27 删除记录 (2)在客户端对员工编号为1024的员工进行查找,找不到该员工信息,删除成功,运行结果如图28示: 数据库程设计报告 第 27 页共 27 页
图19 客户端删除查询 4.2.4 update语句 (1)在sql中用update更新一组员工技能信息在员工技能表中,运行结果如图29示: update 员工技能表 set 技能编号=2 where 员工编号=202 图20 更新数据 (2)在客户端对员工编号为202的员工进行查询,返回她的员工技能,界面如图21示: 图29客户端更新记录查询 5.课程设计心得 数据库程设计报告 第 28 页共 27 页
员工考勤这块一直都是较为棘手的一个模块,对于公司稳定运营来讲。为此,我做了一个员工考勤的小模块,用以纠正公司考勤弊端。事实上,随着员工的数量的增加,对于员工信息的管理也越来越困难了,除了传统的纸质信息管理,现在最常用的就是通过计算机进行电子化的信息管理,这样不仅仅大大减少了考勤管理人员的负担,而且还提高了信息的安全程度。因此,我们需要设计一款员工考勤管理系统来帮助企业更好地来完成考勤管理工作,从而减轻管理人员的负担,并使得企业的管理更加规范化和系统化。 首先,部门执行刷卡机制可以较好的管理职工的考勤,通过查看多种记录表,管理员便可以比较直观的查看职工的考勤情况,其次,本系统在信息表述上还不完备,一些模块的信息还不够详细,主要是提供的报表有限。系统虽然针对中小企业的考勤管理业务。最后,还应熟悉系统设计的风格,在各个界面上进一步添加多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。本系统的创新点在于触发器的应用,每增加一条记录,都会重新统计一下记录次数,并存入月纪录中,使得信息更加准确。在设计时由于对编程语言知识的匮乏,所以数据库的界面化没有做成,如若想更加完善数据库,应该结合一些编程语言,使得操作界面更加人性化,简单化。 经过了一学期的学习,我从起初对数据库的认识模糊到后来清晰,深入,我认为我学到了许许多多的东西。当然,在学习中,得到了老师的更多指导,与帮助。在对课程的学习中,学习的SQL语句和数据库知识对之前刚开始的学习数据库时有了更深-步认识。在学习的深入中,虽然学习有时是十分叫人感到枯燥乏味的,但我庆幸的是我坚持了下来,在学期的课程设计中,对自己的认识和加深是十分有帮助的。我在设计发现,我对其中有许多以前不是十分明的地方,在通过这次课程设计后,对其中的一些疑惑顿时全消,了然于胸了。像其中对有关数据路径是透明还是隐藏的问题,后来明白了其中含有的深层的含义。 总结这学期我对数据库的学习,驱使我不断的学习和努力。其次,通过这次对数据库的课程设计我对使我对数据库开发和软件开发产生了极大的兴趣,我想我会在这条路上继续前进下去。我相信,只要以严格心态要求自己,注意培养自己的思维能力,就一定会有更大更辉煌的发展和提高。语句和数据库知识对之前刚开始的学习数据库时有了更深一步认识。在学习的深入中,虽然学习有时是十分叫人感到枯燥乏味的,但我庆幸的是我坚持了下来,在学期的课程设计中,对自己的认识和加深是十分有帮助的。我在设计发现,我对其中有许多以前不是十分明的地方,在通过这次课程设计后,对其中的一些疑惑顿时全消,了然于胸了。像其中对有关数据路径是透明还是隐藏的问题,后来明白了其中含有的深层的含义。总结这学期我对数据库的学习,驱使我不断的学习和努力。其次,通过这次对数据库的课程设计我对使我对数据库开发和软件开发产生了极大的兴趣,我想我会在这条路上继续前进下去。我相信,只要以严格心态要求自己,注意培养自己的思维能力,就-定会有更大更辉煌的发展和提高。 这次的课程设计可以说是为毕业设计做的- -个预演,真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。
因篇幅问题不能全部显示,请点此查看更多更全内容