数据库课程设计之某单位考勤管理系统

  • 格式:docx
  • 大小:1.25 MB
  • 文档页数:28

图4 系统功能结构图3.1.3安全性完整性需求(1)安全性需求分析①需要输入用户名与密码才能登陆本系统;②输入的登陆密码需要以“*”显示;③禁止非法数据写入;④对于各种错误可以做到提醒或纠正;(2)完整性需求①数据库设计时要使关系的属性不可再分,满足原子性;②约束表格中部分属性的内容;③为数据的新增、修改或删除设定对应的触发器;④给表格外键设置级联删除,当对应外键被删除时,将其关联信息全部删除;⑤防止数据库查询发生SQL 注入的攻击;3.1.4数据流图(1)顶层数据流图,如图1示:图1顶层数据流图(2)零层数据流图,如图2示:图2 零层数据流图(3)一层数据流图,如图3示:图3 一层流图3.1.5 E-R图(1)局部E-R图(以考勤表、员工信息表为例)如图5、图6示:图5 考勤信息表E-R图图6 员工信息表E-R图(2)全局ER图,如图7示:图7 全局E-R图3.1.6数据字典(1)数据结构部门信息表(表一)列名说明字段类型约束控制部门名称不同员工有不同部门nchar(10)非空部门编号所属部门编号1~6级int可以为空级别信息表(表二)列名说明字段类型约束控制其中部门信息表对应部门基本关系,员工信息表对应员工基本关系,级别信息表对应级别基本关系,状态信息表对应员工考勤基本情况,技能信息表对应员工基本技能,员工技能信息表对应技能与员工之间的关系,考勤信息表对应员工与员工打卡状态之间的关系。

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 = NONEON PRIMARY(NAME = 'timebookDB',FILENAME = 'D:\Program Files\Microsoft SQLServer\MSSQL12.MSSQLSERVER\MSSQL\DATA\timebookDB.mdf'SIZE = 5120KB,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB)LOG ON(NAME = 'timebookDB_log',FILENAME = 'D:\Program Files\Microsoft SQLServer\MSSQL12.MSSQLSERVER\MSSQL\DATA\timebookDB_log.ldf'SIZE = 2560KB,MAXSIZE = UNLIMITED,FILEGROWTH = 2048KB,FILEGROWTH = 10%) GOASdeclare @begin int,@time int,@cq char(10)select @cq=员工编号from insertedselect @begin=上班时间from insertedselect @time=下班时间from 考勤记录表if(@begin-@time)<5 and (@begin-@time)>0update 考勤记录表set 状态编号='3' where 员工编号=@cq and 上班时间=@beginif(@begin-@time)<0update 考勤记录表set 状态编号='1' where 员工编号=@cq and 上班时间=@beginif(@begin-@time)>5update 考勤记录表set 状态编号='2' where 员工编号=@cq and 上班时间=@begin●创建存储过程统计各员工指定月份的缺席、旷工次数;use timebookDBgocreate procedure pro_10(@日期date)as beginselect 员工信息表.员工编号,员工信息表.姓名,count(员工信息表.员工编号)-count(考勤记录表.员工编号)缺席from 员工信息表,考勤记录表where 员工信息表.员工编号=考勤记录表.员工编号group by 员工信息表.员工编号,员工信息表.姓名endgo●创建check约束,限制员工的性别必须为‘男’或‘女’;alter table 员工信息表with checkadd constraint df_性别default '男' for 性别(9)执行完上述操作,得到如下界面,如图12示:图12 数据库详情(10)表与表之间关系模式图,如图13示:图13 关系模式图3.3.3主流程图(1)主系统流程图,如图9示:图9 主系统流程图主界面:图10 主界面(2)员工信息管理界面功能,员工查询功能如图11示:图11 员工查询功能流程图界面如图12示:图12 查询员工信息(3)员工信息管理界面功能,修改员工信息功能如图13示:图13修改员工信息界面如图14所示:图14 修改员工信息(4)员工信息管理界面功能,员工考勤功能如图15示:图15 员工考勤功能界面如图16所示:图16 员工考勤界面(5)管理员界面管理功能,查询员工考勤流程图如图17示:图17 管理员查询流程图界面如图18所示:图18 管理员查询界面(6)管理员界面管理功能,录入员工流程图如图19示:图19 管理员录入员工信息流程图界面如图20所示:图20 员工录入界面(7)管理员界面管理功能,修改员工考勤流程图如图21示:4.系统实现图21 修改员工信息流程图界面如图22所示:图22 修改员工信息界面JOptionPane.showMessageDialog(null, "新密码不一致。

");return;}try{/*Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection connection =DriverManager.getConnection("jdbc:odbc:stu","sa","123456");*/DbConnect db=new DbConnect();Connection connection=db.getConn();Statement statement= connection.createStatement();ResultSet rs=statement.executeQuery("select * from 员工信息表 where 员工编号=\'"+ID.getText()+"\'and 密码=\'"+oldPassword.getText()+"\'");if(!rs.next()){JOptionPane.showMessageDialog(this, "ID或密码错误!");return;}rs.close();statement.executeUpdate("update 员工信息表 set 密码=\'"+newPassword.getText()+"\'where 员工编号=\'"+ID.getText()+"\'");statement.close();connection.close();JOptionPane.showMessageDialog(null, "修改密码成功!");}catch(Exception ee){JOptionPane.showMessageDialog(null,ee.getMessage()+"与数据库连接失败");return;} }4.2测试及调试4.2.1select查询(1)在数据库中查询正常上班(状态编号为1)的员工名单,运行结果如图23示:select*from考勤记录表where状态编号='1'图23 查询考勤记录(2)调用前端程序,查询正常上班的员工名单,看员工名单是否一致,运行结果如图24示:图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示:图19 客户端删除查询4.2.4 update语句(1)在sql中用update更新一组员工技能信息在员工技能表中,运行结果如图29示:update员工技能表set技能编号=2 where员工编号=202图20 更新数据(2)在客户端对员工编号为202的员工进行查询,返回她的员工技能,界面如图21示:图29客户端更新记录查询。