欢迎访问有用文档网!

当前位置: 有用文档网 > 心得体会 >

数据库课程设计实验报告

| 浏览次数:

 《数据库系统》

 课程设计

 题

 目: :

  考勤管理系统

 专

 业:

  计算机科学与技术

 年

 级:

  大二

 班

 级: :

  学

 号:

  姓

 名:

  指导老师

 : :

  完成时间

 : :

  201 7年 6 6 月 月 8 8 号

 目录 一、实验目得误错ﻩ 错误! 未定义书签。

 二、实验平台误错ﻩ 错误! 未定义书签。

 三、实验内容误错ﻩ 错误! 未定义书签。

 四、实验要求误错ﻩ 错误! 未定义书签。

 五、实验步骤误错ﻩ 错误! 未定义书签。

 1 1、 、 析分求需统系ﻩ 系统需求分析 .................................................................................. 错误! 未定义书签。

 1、1 系统功能分析误错ﻩ 错误! 未定义书签。

 1、2 系统功能模块设计(划分)误错ﻩ 错误! 未定义书签。

 1、3 与其它系统得关系误错ﻩ 错误! 未定义书签。

 1、4 误错 ......................................................................... 图程流据数ﻩ 错误! 未定义书签。

 2 2 、 计 数据库设计误错ﻩ 错误! 未定义书签。

 2、1 误错 ..................................................................... 析分求需库据数ﻩ 错误! 未定义书签。

 2、2 误错ﻩ计设构结念概库据数ﻩ 错误! 未定义书签。

 2、3 数据库逻辑结构设计误错ﻩ 错误! 未定义书签。

 2、4 使用 PowerDesigner16进行数据库得设计与建立误错ﻩ 错误! 未定义书签。

 2、5 误错 .............................. 计设得面界行进 8 PR eruxA 用使ﻩ 错误! 未定义书签。

 3 3 、 各功能模块得设计与实现 ........................................................... 错误! 未定义书签。

 3、1 误错 ................................................................................. 明说能功ﻩ 错误! 未定义书签。

 3、2 误错ﻩ计设面界户用ﻩ 错误! 未定义书签。

 3、3 误错 ................................................................. 现实得块模能功各ﻩ 错误! 未定义书签。

 4 4 、 系统实现 ..................................................................................................................... 14 4、1 误错 ....................................................................... 计设体总统系ﻩ 错误! 未定义书签。

 4、2 误错ﻩ现实得式方接连 CBDOﻩ 错误! 未定义书签。

 4、3 登陆界面得实现 ................................................................... 错误! 未定义书签。

 4、4 注册界面得实现 ................................................................... 错误! 未定义书签。

 4、5 找回密码得实现 ................................................................... 错误! 未定义书签。

 4、6 主界面得实现 ....................................................................... 错误! 未定义书签。

 4、7 误错 ......................................................... 现实得置设间时班下上ﻩ 错误! 未定义书签。

 4、8 考勤修改得实现误错ﻩ 错误! 未定义书签。

 4、9 出勤记录得实现 ................................................................... 错误! 未定义书签。

 4、10 加班记录得实现 ............................................................... 错误! 未定义书签。

 4、11 误错 ................................................................... 现实得录记假请ﻩ 错误! 未定义书签。

 4、12 误错 ................................................................... 现实得录记差出ﻩ 错误! 未定义书签。

 4、13 误错 ............................................... 现实得除删录记与计统勤考ﻩ 错误! 未定义书签。

 六、

 得 实验心得误错ﻩ 错误! 未定义书签。

 示 七、部分代码展示误错ﻩ 错误! 未定义书签。

 一、 实验目得

  数据库系统课程设计就是为了配合数据库原理及应用开发而设置得,就是计算机科学与技术、网络工程、信息安全、物联网工程、软件工程等专业集中实践得教学环节,就是将关系数据库理论知识转化为解决实际问题能力得重要环节。数据库系统课程设计目得在于加深对关系数据库理论知识得理解,通过使用具体得 DBMS,掌握一种实际得数据库管理系统并掌握其操作技术,熟练掌握使用数据库前端开发工具(如 VB、 C++、 Java、 Delphi、 PowerBuilder 等),进一步提高同学们运用数据库技术解决实际问题得能力。

 二、实验平台  PowerDesigner  Axure

  Sql sever 2005  QT 5、6 三、实验内容 目前市面上流行得后台数据库管理系统有:适合大型企业得 Oracle,适合中小型企业得 SQL

 SERVER,以及开源得 MySQL.考虑到数据库管理系统得易操作性以及实验室得实际情况,本次课程设计推荐使用 SQL

 SERVER 作为课程设计得后台数据库管理系统,也可以使用 MySQL 或 Oracle 等.前台数据库应用开发工具有 VB、PB、Delphi、VC、Java,以及广泛流行于互联网上得、NET、J2EE 技术等.、NET、J2EE 技术采用得就是典型得 B/S 计算模式,就是大学后续课程涉及到得开发技术,目前不适合本次课程设计实践教学开发环境。经典得桌面数据库应用开发就是典型得 C/S 计算模式,即应用数据库前端开发工具编写客户端程序,通过客户端程序来连接与访问后台数据库。考虑到同学们都学习过C/C++,因此,本次选用 VC++作为前台数据库开发工具(也可以选用 VB、Delphi、Java 等)。

 两周得课程设计要求同学们开发一个小型数据库管理信息系统。所设计得小型管理信息系统应包含查询、插入、删除、修改、统计、用户权限管理等基本功能,界面采用菜单或对话框得形式。根据同学们所选得设计课题,给出系统需求分析,设计出系统得概念模型、逻辑模型,用 SQL 语言实现数据库得建立、应用与维护,最后写出详细得设计说明书。

 四、实验要求 考勤制度就是每个企事业单位所必需得,计算机得出现使员工出勤情况得记录与统计变得十分简单。

 考勤管理系统得主要功能如下:  上下班时间得设定。上下班时间相对固定,可保存在客户端得设置文件中。

  员工出入单位得情况记录.出入情况主要由考勤机来记录,但就是需要设置人工添加得功能,以针对特殊情况得处理。

  请假、加班与出差情况得记录.  每个月底进行整个月得出勤情况统计. 考勤系统记录了员工上下班得情况,为工资管理直接提供每个月工作时间得统计结果,用以计算工资。同时考勤系统也需要其它系统提供得员工、部门等信息。

 五、实验步骤 1. 系统需求分析

 1.1 系统功能分析 考勤管理系统得主要功能如下:  上下班时间得设定。上下班时间相对固定,可保存在客户端得设置文件中。

  员工出入单位得情况记录。出入情况主要由考勤机来记录,但就是需要设置人工添加得功能,以针对特殊情况得处理。

  请假、加班与出差情况得记录。

  每个月底进行整个月得出勤情况统计. 1.2 系统功能模块设计(划分) 本系统功能模块如图 1 所示.

 1.3 与其它系统得关系 考勤系统记录了员工上下班得情况,为工资管理直接提供每个月工作时间得统计结果,用以计算工资.同时考勤系统也需要其它系统提供得员工、部门等信息。

 1.4 数据流程图 系统得数据流程如图 2 所示。出勤得原始时间记录主要来源于考勤机,并且以固定格式保存得数据库中。考勤管理系统得任务就是如何处理这些数据。

 2. 数据库设计

 2.1 数据库需求分析 根据数据流程,可以列出以下管理系统所需得数据项与数据结构  出勤记录:记录号、员工、出入情况、出入时间.  请假记录:记录号、员工、假期起始时间、假期结束时间、请假缘由。

  加班记录:记录号、员工、加班时间长度、日期。

  出差记录:记录号、员工、出差起始时间、出差结束时间、具体描述。

  月度考勤统计:记录号、员工、年月、累计正常工作时间、累计请假时间、累计加班时间、累计出差时间、迟到次数、早退次数、旷工次数 所需得外部数据支持:  人员信息:员工号、密码、权限、姓名、部门、当前状态等  部门设置:部门编号、名称等 2.2 数据库概念结构设计 图 3 就是本系统所需数据得 E-R 模型图。

 2.3 数据库逻辑结构设计 根据系统得 E-R 图,总共需要 8 个数据表得数据支持。其中人员信息与部门设置可以使用人事管理系统中已有得数据表,而出勤记录、月度考勤统计、请假、加班、出差表与上下班时间表需要独立设计。这 8 个数据表得结构如表 1 到表 8所示. 表 1

 ATTENDANCE 出勤记录表 名称 代码 数据类型 记录编号 ID Number (20) 出入状态 IN_OUT Characters (2) 出入时间 IO_TIME Date & Time 表 2

 ATTENDANCE_STAT月度考勤统计表 名称 代码 数据类型 记录编号 ID Number (20) 统计年月 YEAR_MONTH Date & Time 累计工作时间 WORK_HOUR Integer 累计请假时间 LEAVE_HDAY Integer 累计加班时间 OVER_HOUR Integer 累计出差时间 ERRAND_HD Integer

 AY 迟到次数 LATE_TIMES Integer 早退次数 EARLY_TIMES Integer 旷工次数 ABSENT_TIMES Integer 表3

 LEAVE 请假记录表 名称 代码 数据类型 记录编号 ID Number (20) 起始时间 START_TIME Date & Time 结束时间 END_TIME Date & Time 缘由 REASON Text 表4

 OVERTIME 加班记录表 名称 代码 数据类型 记录编号 ID Number (20) 加班时间 WORK_HOURS Integer 日期 WORK_DATE Date & Time 表 5

 ERRAND 出差记录表 名称 代码 数据类型 记录编号 ID Number (20)

 起始时间 START_TIME Date & Time 结束时间 END_TIME Date & Time 具体描述 DESCRIPSION Text 表 6

 PERSON 员工个人信息表 名称 代码 数据类型 员工号 PERSON_ID Number (20)

 密码 PERSON Variable characters (20)

 权限 AUTHORITY Text 姓名 NAME Variable characters (20) 性别 SEX Characters (2) 生日 BIRTHDAY Date & Time 所在部门 DEPARTMENT Variable characters (20) 职务 JOB Variable characters (20)

 受教育程度 EDU_LEVEL Variable characters (20) 专业技能 SPECIATY Text 家庭住址 ADDRESS Text

 联系电话 TEL Number (20)

 电子信箱 EMAIL Text 当前状态 STATE Characters (2) 备注 REMARK Text 表 7

  DEPARTMENT部门信息表 名称 代码 数据类型 部门编号 ID Number (20) 部门名称 NAME Text 部门经理 MANAGER Variable characters (20)

 简介 INTRO Text 表8 muting schedule 上下班时间表 名称 代码 数据类型 季节 Season Variable characters (20) 上班 Go_to_work Date & Time 下班 Go_off_work Date & Time 2.4 使用 PowerDesigner16进行数据库得设计与建立

 Power Designer 就是 Sybase 公司得 CASE 工具集,使用它可以方便地对管理信息系统进行分析设计,她几乎包括了数据库模型设计得全过程.利用Power Designer 可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控制. SQL Server 就是Microsoft 公司推出得关系型数据库管理系统.数据库引擎为关系型数据与结构化数据提供了更安全可靠得存储功能,使您可以构建与管理用于业务得高可用与高性能得数据应用程序。

 具体过程如下:  打开 PowerDesigner16,新建一个概念模型项目,将上面进行需求分析与数据库设计所得得表在软件中表示出来,同时将各个表之间得联系给关联好。

  概念模型设计好之后,选择 Tools -> Generate Physical Date Model ,在 DBMS 选项中选择想要生成脚本得对应得数据库,我这里选择得就是对应得 Microsoft SQL Server 2005 ,点击确定即可生成对应数据库得物理模型。

  生成物理模型之后,再检查下实体之间就是不就是有一些与预计得不同得地方,

 有得话则就是概念模型得设计不正确,需要重复第一步,没有得话就可以继续下一步。

  检查完物理模型之后,就可以将建立得模型以 SQL脚本得形式导出来,具体操作就是 Datebase -> Generate Datebase ,再点确定就可以将脚本导出来.  打开SQL Server Management Studio ,在自己得数据库位置单击右键,选择 新建查询 ,然后导入上一步生成得 SQL 脚本,选择 执行 即可将在 PowerDesigner16 中设计好得物理模型生成在 SQL Server Managemenat Studio 中,至此,数据库得设计与建立工作完成。

 2.5 使用 Axure RP 8 进行界面得设计 Axure RP 就是美国Axure Software Solution公司旗舰产品,就是一个专业得快速原型设计工具,让负责定义需求与规格、设计功能与界面得专家能够快速创建应用软件或Web 网站得线框图、流程图、原型与规格说明文档。

 具体过程如下:(以登陆界面为例)

  首先明确登录界面需要多少得输入框与标签以及按钮,需要多少就拖多少到中间得空白处去。

  为了能够更好地理解各个控件就是干什么用得,最好把对象名给改成自己能够理解得。

  按照自己喜欢得风格摆放各个控件得位置,调整属性。

  具体教程可以参考百度。

 3. 各功能模块得设计与实现

 3.1 功能说明 a) 上下班时间设置 系统默认采用每个季节八点上班,晚上十点下班,在上下班时间设置模块中能够更改选中季节得上下班时间. b) 添加修改出勤记录 通过系统选用上班(I)或者下班(O)进行出勤记录得添加,如果上班记录添加得时间晚于当个季节得上班时间,则会在迟到记录中加一,下班也就是同样得道理。

 c) 加班记录 通过系统可以选择添加加班小时数,同时添加加班记录得时刻会被记录在记录表中。

 d) 请假记录 通过系统可以添加请假记录,选择请假得起始时间与结束时间后,系统会自动

 将请假得时间记录到记录表中. e) 出差记录 通过系统可以添加出差记录,选择出差得起始时间与结束时间后,系统会自动将出差得时间记录到记录表中。

 f) 考勤统计 系统可以自动汇总出勤表、加班表、请假表、出差表得数据,计算出每个员工得考勤情况如加班小时数与迟到次数等等。

 3.2 用户界面设计 完成数据库创建与功能说明以后,我们可以进行下一步工作,即设计用户界面。

 a) 登录认证窗口 登录认证采用两种身份验证方式,管理员方式与员工方式。

 b) 主窗体 主窗体用来选择所要执行得功能。

 c) 上下班时间设置窗体 上下班时间窗体用来设置选中季节得对应上下班时间。

  d) 考勤修改窗体 考勤修改窗体用来记录每次得上下班时间.

 e) 添加修改出勤记录界面 出勤修改界面用来修改出勤记录,如迟到次数与早退次数等等。

  f) 加班记录界面 加班记录界面用来记录加班信息.

 g) 请假记录界面 请假记录界面用来记录请假信息.

  h) 出差记录界面 出差记录界面用来记录出差信息.

 i) 考勤统计窗口 考勤统计窗口用来显示或者全部删除或者指定删除统计信息.

  j) 注册窗口 注册窗口用来注册新员工信息。

 k) 忘记密码窗口 忘记密码窗口用来重置密码。

  l) 提交成功窗口 提交成功窗口用来显示提交就是否成功。

 3.3 各功能模块得实现 a) 数据模块得创建 数据模块得创建通过导入 PowerDesignr16 生成得脚本文件生成,导入得就是数据得结构,也可以与脚本一起导入数据,但就是我选择得就是手动输入数据。

 b) 上下班时间设置 上下班时间得设置在与数据库连通之后,首先通过select 语句查找出当前选择得季节得上下班时间,然后通过update 进行上下班时间得更新。

 c) 添加修改出勤记录 出勤记录得修改首先通过 select 查询到对应员工号,如果没有对应员工号则询问就是否要添加到员工表中,如果添加得话,顺便也会给统计表中插入一条新员工得记录。查询成功后即可选择迟到次数与早退次数等等,输入相应得值再按下提交(update)后即可将出勤信息修改。

 d) 加班记录 加班记录得增加首先通过 select 查询到对应员工号,如果没有对应员工号则询问就是否要添加到员工表中,如果添加得话,顺便也会给统计表中插入一条新员工得记录。查询成功后即可增加加班信息,加班信息包括加班时长与加班日期,按下提交(insert)后即可将加班记录增加到加班记录表中。

 e) 请假记录 请假记录得增加首先通过 select 查询到对应员工号,如果没有对应员工号则询问就是否要添加到员工表中,如果添加得话,顺便也会给统计表中插入一条新员工得记录。查询成功后即可增加请假信息,请假信息包括请假得起始时间与结束时间以及请假得缘由,按下提交(insert)后即可将请假记录增加到请假记录中。

 f) 出差记录 出差记录得增加首先通过 select 查询到对应员工号,如果没有对应员工号则询问就是否要添加到员工表中,如果添加得话,顺便也会给统计表中插入一条新员工得记录。查询成功后即可增加出差信息,出差信息包括出差得起始时

 间与结束时间以及出差得缘由,按下提交(insert)后即可将出差记录增加到出差记录中。

 g) 考勤统计 考勤统计通过将各个分表如出勤表、请假表等表进行汇总,汇总出得数据存入考勤统计表中。

 4. 系统实现

 4.1 系统总体设计 系统总体采用面向对象设计方法进行设计开发。对象指得就是类得实例.它将对象作为程序得基本单元,将程序与数据封装其中,以提高软件得重用性、灵活性与扩展性。加上 QT 所采用得就就是 C++得编程方法,选用面向对象编程方式成为了一种必然。

 从以上对数据库与功能得分析总结出本系统需要一个登录模块,一个注册模块,一个找回密码模块,一个功能选择模块,一个上下班时间设置模块,一个出勤登记模块,一个考勤修改模块,一个请假登记模块,一个出差登记模块,一共就是九个模块。

 ODBC数据库访问技术只适用于windows系统,因为需要在ODBC驱动程序管理器中进行数据源注册,而只有 windows 才集成了 ODBC驱动程序管理器(“控制面板/管理工具/数据源”)。ADO(ActiveX Data Object)具有跨系统平台特性,它直接对 DBMS 数据库进行操作,即系统中必须有 DBMS,但不需要驱动程序,不需要注册数据源,所以具有很好得可移植性。由于开发环境选在Windows XP,使用得数据库为Microsoft SQL Server 2005,因此采用ODBC得连接方式而不就是 ADO 方式。

 得益于采用面向对象得方式开发,软件在开发过程中得测试可以采用单元测试方法,独立测试每个模块即可,最后再组装到一起进行集成测试,这样可以尽可能地节省时间。

 4.2 ODBC 连接方式得实现 开放数据库连接(Open Database Connectivity,ODBC)就是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库得一个组成部分,它建立了一组规范,并提供了一组对数据库访问得标准API(应用程序编程接口)。这些 API 利用 SQL来完成其大部分任务。ODBC本身也提供了对 SQL 语言得支持,用户可以直接将 SQL 语句送给 ODBC。这里我们只需要知道基本得 ODBC连接方式与配制方法即可。

 Windows 已经包含了应用程序、驱动管理器、驱动程序以及数据源,我们所要做得就就是配置好数据源,具体配置方法如下:

  打开 控制面板

 —> 管理工具 -〉 数据源(ODBC)。

   单击 添加 按钮,准备添加一个新得数据源,这个数据源就是与自己所写得程序相关得.填写好名称,这个名称与后面程序进行 ODBC 连接有至关重要得联系,服务器选择数据库所在得服务器,完毕之后选择下一步。

  如图所示选择连接方式,输入正确得账号密码,单击下一步。

  默认得数据库更改为要操作得数据库,点击下一步.

   一直按下一步直到完成,然后单击 测试数据源 ,如果测试成功则 ODBC配置成功,可以进行接下来得工作.

 接下来就就是在QT 中实现使用 ODBC 方式连接数据库:  在QT中使用数据库操作需要添加对应得头文件,以及在工程文件中添加对SQL得支持.

   添加完成后即可通过代码进行数据库得连接

  其中,QSqlDatebase::addDatebase(“QODBC”)

 为添加 ODBC 得驱动到 QT程序中,没有驱动得话也就无法正确连接数据库.setHostName("416-12”) 为设置想要连接得主机得名字,如果就是远程服务器得话也可以直接输

 入 IP 地址。setDatabaseName("sqlserver")

 为设置数据库得连接名,这里就用到了之前设置数据源时得名称,这个连接名需要与数据源里面得名称一样才能连接。setUserName("sa") 与 setPassword("sa520")

 分别为设置登陆账号与密码,如果采用得就是Windows账户登陆得话就不需要设置这两项,不就是得话就需要设置。最后得那个 open() 就是用来判断就是不就是已经打开对应得数据库,成功得话会返回 true ,否则就就是 false ,表示不成功,需要重新设置。

 此外,在 Microsoft SQL Server Management Studio中可以直接导出对应表得增、删、查、改脚本,具体方法如下:

  到这里也就结束了 ODBC 连接方式得实现,接下来可以根据对应得功能写代码了。

 4.3 登陆界面得实现 登录界面所需要得东西主要就是用户与管理员单选框、账号与密码输入框、登录按钮、注册账号按钮与找回密码按钮,这里列出我得一些主要得控件: 控件类型 控件名 用途说明 QLabel TitleLabel 标题 QPushButton RegisterButton 注册

 ForgetPushButton 忘记密码

 LandButton 登陆

 pushButton 重置输入框 QRadioButton user_radioButton 用户按钮

 admin_radioButton 管理员按钮 QLineEdit AccountEdit 账户输入

 PasswordEdit 密码输入 在 QT 设计师模式中我设计完成得界面就是这样得:

  需要注意得就是:  四周得弹簧就是用来固定比例得,这样可以在改变窗口大小得时候动态改变各个控件得大小。

  背景得改变放在该类得构造函数中,使用自动填充全部。

  密码输入时显示为加密模式,使用 ui->PasswordEdit—〉setEchoMode(QLineEdit::Password);

  回车得焦点设置为登陆按钮

  按下登陆或注册或忘记密码时会将当前窗口隐藏,同时打开对应得窗口。

 4.4 注册界面得实现 用户注册界面主要用到得就是两个按钮,一个提交,一个返回,其她得均为输入框,主要控件如下:

 控件类型 控件名 用途说明 QPushButton SubmitButton 提交

 ReturnButton 返回 QLineEdit PersonNumberLineEdit 输入用户名

 PasswordLineEdit 输入密码

 NameLineEdit 输入姓名

 TELLineEdit 输入手机号码 QDate BirthdayDateEdit 选择生日 在QT 设计师模式中我设计完成得界面就是这样得:

  需要注意得就是:

  必须输入得为员工号,其她可以填也可以不填,不填得话就找不回密码。

 4.5 找回密码得实现 找回密码界面主要使用三个按钮,四个输入框,部分主要控件如下: 控件类型 控件名 用途说明 QPushButton PasswordPushButton 确认用户名

 SubmitPushButton 提交

 ReturnPushButton 返回 QLineEdit PersonNumberLineEdit 输入用户名

 NameLineEdit 输入密码

 TELLineEdit 输入手机号

 NewPasswordLineEdit 输入新密码 在 QT 设计师模式中我设计完成得界面就是这样得:

 需要注意得就是:  如果注册时没有输入姓名与手机号,在这里就是找不回密码得,只有联系管理员在数据库中修改。

 4.6 主界面得实现

 主界面主要使用七个按钮,部分主要控件如下:

 控件类型 控件名 用途说明 QPushButton WorkSetButton 上下班时间

 WorkAttendanceButton 考勤修改

 AttendanceButton 出勤管理

 OverTimeButton 加班管理

 LeaveButton 请假管理

 ErrandButton 出差管理

 WorkAttendanceStatisticsButton 考勤统计 在 QT 设计师模式中我设计完成得界面就是这样得:

 需要注意得就是:

  四周得弹簧与之前得一样,都就是为了维持固定比例不变形。

  每个按钮就是交叉分布得,所以有图得部分就是点不了得。

 4.7 上下班时间设置得实现 上下班时间设置界面主要使用两个显示标签,四个按钮,两个下拉框与两个时间设置框,部分主要控件如下:

 控件类型 控件名 用途说明 QLabel CurrentUpTimeShowLable 显示当前上班时间

 CurrentDownTimeShowLable 显示当前下班时间 QPushButton UpSubmitButton 提交上班时间更改

 DownSubmitButton 提交下班时间更改

 InitializationButton 初始化上下班时间

 BackButton 返回 QboBox up_season_boBox 上班季节下拉框

 down_season_boBox 下班季节下拉框 QTimeEdit Down_timeEdit 下班时间设置框

 Up_timeEdit 上班时间设置框 在 QT 设计师模式中我设计完成得界面就是这样得:

  需要注意得就是:

  重置为初值只能重置当前页面得,而不就是重置全部。

  系统默认上班时间上午八点,下班时间晚上十点。

  上下班时间表就是存在数据库中得,而不就是存在程序之中. 4.8 考勤修改得实现 考勤修改界面主要使用九个按钮,八个输入框与七个显示标签,部分主要控件如下: 控件类型 控件名 用途说明 QPushButton PersonSubmitButton 提交员工号

 returnButton 返回

 ChangeWorkSubmitButton 工作时间修改提交

 ChangeOvertimeSubmitButton 加班时间修改提交

 ChangeLeaveSubmitButton 请假时间修改提交

 ChangeErrandSubmitButton 出差时间修改提交

 ChangeLateSubmitButton 迟到次数修改提交

 ChangeLeaveearlySubmitButton 早退次数修改提交

 ChangeAbsenteeismSubmitButton 旷工次数修改提交 QLineEdit PersonlineEdit 员工号输入

 WorkTimeChange_lineEdit 改变得工作时间

 OverTimeChange_lineEdit 改变得加班时间

 LeaveTimeChange_lineEdit 改变得请假时间

 ErrandTimeChange_lineEdit 改变得出差时间

 LateTimesChange_lineEdit 改变得迟到次数

 LeaveEarlyTimesChange_lineEdit 改变得早退次数

 AbsenteeismTimesChange_lineEdit 改变得旷工次数

 QLabel CurrentWorkTimeNumberLabel 显示当前工作时间

 CurrentOvertimeTimeNumberLabel 显示当前加班时间

 CurrentLeaveTimeNumberLabel 显示当前请假时间

 CurrentErrandTimeNumberLabel 显示当前出差时间

 CurrentLateTimesNumberLabel 显示当前迟到次数

 CurrentLeaveearlyTimesNumberLabel 显示当前早退次数

 CurrentAbsenteeismTimesNumberLabel 显示当前旷工次数 在QT设计师模式中我设计完成得界面就是这样得:

 需要注意得就是:  只有输入了员工表中已有得员工号才能进行更改。

  如果输入得员工号不存在,可以选择新建一个员工信息, 4.9 出勤记录得实现 出勤记录界面主要使用三个按钮,一个输入框,两个单选框与一个时间设置框,部分主要控件如下: 控件类型 控件名 用途说明 QPushButton PersonNumberSubmitButton 提交员工号

 SubmitButton 提交出勤信息

 ReturnButton 返回 QLineEdit PersonNumberEditLine 输入员工号 QRadioButton IN_radioButton 选择上班

 OUT_radioButton_2 选择下班 QDateTimeEdit IN_OUT_dateTimeEdit 上下班时间记录 在 QT 设计师模式中我设计完成得界面就是这样得:

  需要注意得就是:

  只有输入了员工表中已有得员工号才能进行信息记录。

  必须选择上班或者就是下班,否则会提示错误无法提交信息。

 4.10 加班记录得实现 加班记录界面主要使用三个按钮,一个输入框,一个双精度自旋框与一个时间设置框,部分主要控件如下: 控件类型 控件名 用途说明 QPushButton PersonNumberSubmitButton 提交员工号

 SubmitButton

 提交信息

 ReturnButton

 返回 QLineEdit PersonNumberlineEdit 输入员工号 QDoubleSpinBox OvertimeLengthdoubleSpinBox 输入加班时长 QDateTimeEdit OvertimeDatedateEdit 加班记录日期 在 QT设计师模式中我设计完成得界面就是这样得:

 需要注意得就是:

  只有输入了员工表中已有得员工号才能进行信息记录。

  这里得加班日期就是指加班得那天而不就是进行记录得那天。

 4.11 请假记录得实现 请假记录界面主要使用三个按钮,两个输入框与两个时间选择框,部分主要控件如下:

 控件类型 控件名 用途说明 QPushButton PersonSubmitButton 提交用户名

 SubmitButton 提交信息

 ReturnButton 返回 QLineEdit PersonEditLine 输入员工号 QTextEdit ReasontextEdit 输入请假备注 QDateTimeEdit LeaveBegin_dateTimeEdit 请假起始时间

 LeaveEnd_dateTimeEdit 请假结束时间 在 QT 设计师模式中我设计完成得界面就是这样得:

 需要注意得就是:  只有输入了员工表中已有得员工号才能进行信息记录.  请假缘由字数没有限制。

 4.12

 出差记录得实现 出差记录界面主要使用三个按钮,两个输入框与两个时间设置框,部分主要控件如下: 控件类型 控件名 用途说明 QPushButton PersonSubmitButton 提交员工号

 SubmitButton 提交信息

 ReturnButton 返回 QLineEdit PersonEditLine 输入员工号 QTextEdit Description_textEdit 输入出差备注 QDateTimeEdit ErrandBegin_dateTimeEdit 出差起始时间

 ErrandEnd_dateTimeEdit 出差结束时间 在 QT 设计师模式中我设计完成得界面就是这样得:

  需要注意得就是:  只有输入了员工表中已有得员工号才能进行信息记录。

  具体描述部分没有字数限制。

 4.13

 考勤统计与记录删除得实现 考勤统计与记录删除界面主要使用四个按钮与一个表格显示视图,部分主要控件如下: 控件类型 控件名 用途说明 QPushButton ChooseDeleteButton 选中行删除

 AllClearButton 全部删除

 ShowStatisticButton 显示统计信息

 ReturnButton 返回 QTableView showTableView 显示表格 在 QT 设计师模式中我设计完成得界面就是这样得:

 需要注意得就是:  这里说得删除不就是删除当前行,而就是删除与当前表格相关得员工得信息,如加班表、出勤表中得相关信息全部删除.  选中删除必须选中一行,否则会直接删除第一行得员工相关信息. 六 、

 实验心得

 本实验如果采用得就是实验指导书中得方法去做得话,过程会稍显复杂,于就是我

 选择了我比较熟悉得 QT 来做,能够节约时间,实验期间主要心得与收获如下: 1. 实验本身并不就是很难,因为大多得实现方法就就是增、删、查、改四项,真正有问题得就是实现部分,因为要考虑到各个组件与界面得交互操作. 2. 代码本身不难写,难得就是数据库得设计与界面得美工,这两个方面就是这么久一直没有涉及过得,尤其就是界面得美工,对于我这种审美有点不对劲得人来说,别人觉得好瞧得我不一定觉得好瞧,我觉得好瞧得别人觉得很难瞧。数据库得设计也就是,要详细分析好各个数据项得数据类型,否则编写代码得时候会出现很严重得类型匹配错误。

 3. 好得开发工具很重要.像VC++ 6、0 这个软件年代太久远了,但就是机房得电脑又装不了我另一个比较熟悉得 VS2015,所以只能锁定在 QT。而且 QT 得版本选择也就是很重要,之前花了一天得时间下了又删,从 QT5、9 开始一直试到了 QT5、6 才能在 XP系统上用,但就是磨刀不误砍柴工,这点时间上得花费就是值得得. 4. 完成题目所要求得功能大概只花了两天时间,但就是剩下得时间也不能玩,我刚好可以把最近学得 《重构 改善既有代码得设计》这本书上得东西运用到实际上来,对我得代码进行重构,这个过程很痛苦,因为有些地方改了之后就会报错,花费很多时间来换条路进行重构。但就是结局就是开心得,因为最后完成了我得目标,使得代码得整洁度、可读性与鲁棒度都得到了不小得提升。

 七、 部分 代码展示

 // atte nd d a nce_cha n ge 、 cpp

 vo id A t ten da nce_C ha nge ::

 on_Pe rs onNum m be e rS ubm i tBu t to n_cl l i cked()

 )

 //确定按钮

 { {

 ex i st =

 fals; e;

 // / 判断员工号就是否存在

 personNum m b er = u i — 〉 Pe rso o n Numb er rEdi i t Line- - >text() ;

 QSqlQuer y

 sq q l qu er y;

 s ql quer r y、e xec (" SELE C T [PE ER SON]”

 " " F ROM

 [TY X_ DB_At tendanc e] ] 、[db b o] ] 、[ PE RSO N]”);

 whi le e ( sq l query 、 next()){

 QString temp p P ers on n I D = sqlque e ry、va lue ( 0) 、 toSt r ing( );

 if (t empPersonID 、 pare(pe r sonNum ber )

 == 0 ){

 // 如果存在与输入得相同得员工号,则可以直接使用

 ex i st =

 true;

 } }

 }

 if ( ex is t){

 QMes s ageB ox: : :wa a r nin g( ( this,"Query w a s s uc c ce e s sful” , ”Que ry

 w as

 su c ce ss ful");

 ui - >groupBox _2 2 — >show( );

 ui —> > gr r oupB B o x_3 —> > sh ow();

 ui- - 〉S S ub mit B utton — 〉 sh ow ();

 } }

 else {

 // 不存在输入得员工号, , 选择新建或者不新建返回

 in t r et

 =

 QMessage Bo x: :q q uesti on n ( th i s, " Query

 fa iled" " , "Do

 you want

 t o c r eate a n e w empl oyee r e cord ?",Q Q Me ssag eB ox :

 :Ye s

 |

 QM e ssageBox: :N N o, QMes sageBox :: : Yes) ) ;

 i i f (ret == QM e ssageBo x: : :

 Yes){

 sqlque ry y 、 pre pa a re e ( ”IN SER T IN T O [TYX_DB_ At tend an ce] 、 [dbo ]、[P P ERS ON ]([P ER R S ON],[PASSWO R D])"

 "VALU ES "

 ”( :

 PERSO N,:PA S SW ORD )”) ;

 s s q lque ry y 、 bin d Val ue( ( ”: P ERS ON" ,p er son n Nu u mb b er) ) ;

 sql q uer y、 bindV a lu e(”:PASSWORD" , pe r sonNumber ); ;

 sq q lquer y、e xec() ;

 // 插入新员工到考勤表

 st at _ inse rt t () ) ;

 u u i — 〉g g ro o u pB ox _2- - 〉 sh ow();

 ui -〉g ro upB B o x_3- - >show();

 ui — 〉 Su bmi i tB ut ton — >sh ow( );

 }

 }

 // 获取记录条数

 QSqlQuery s qlq q u eryI D;

 sqlqueryI D、 exec(" S ELECT [ID D ]" "

 ” FR OM [TYX_D B_ _ Atten d ance ]、 [d b o] 、[A A TT END A NCE ]") ) ;

 i i f(s qlqueryID 、 last() ){

 ID N umber = sqlq u eryID 、 va l ue(0) 、toIn t()

 + 1

 ;

 } }

 }

 void Att en n da a nc c e _C h an ge e ::

 on _ Submit Button_c li i ck ed ( ) //提交按钮

 { {

 Q Str in n g

 IO_ r adio;

 b b o ol io_ok

 =

 fals e;

 if( ui i- - 〉 IN_ ra dio B ut ton n- - 〉isChecked( )){

 IO _ radi o

 = =

 ”I” ;

 io_o k

 =

 true;

 } }

 el l se e

 if ( ui- - 〉 OU T _radioButt on_ _ 2— > is Ch ecked() ){

 IO_ rad i o =

 "O "; ;

 io_ ok

 = true;

 }

 el s e{

 QM essageBox:: warg ning ( this,” N

 o choi ce" " , ”P l ease s ele e ct t

 o o ne e !

 ");

 } }

 i f(io_ok){

 QSqlQuery sqlq u ery ;

 s s q lquer y、 prepare ( "INSE R T I NTO [T Y X_ DB B _A A tte e n dance] 、[d d b o] 、 [AT T ENDANC E]( [I I D], [P ER SON N ], [IN _O UT ], , [ IO _ TIME])" "

 "V A LU ES ”

 " (:ID"

 " ":

 ,:

 PE R SON" "

 ”,:IN _OUT”

 ” ,:IO_TIME )" );

 sq lq uery 、 bin d Value(”:ID" , IDNumb b e r);

 s ql q uer y、 bi nd Val u e(” :

 PE RS SON ", p ersonNumbe r );

 sql q uery 、b indValue ( ” :I I N _OU T”,IO _r r ad io ); ;

 sqlquery 、b b i nd V alu e( ":IO_ TIME” ,u u i- - >IN _O UT_ d at e TimeEdit — >dat eT ime()

 );

 if(sql q uery 、e xec() ){

 Q Q M essageB o x::inf orm m at t ion(thi s, ”Su b mi t

 s s u ccessf ul ly !", ”S ub bm it

 su cces sf ully!");

 }

 e e ls s e{ {

 QMessageBox: :wa a r ning(t his, " Subm it

 f f ai i l ur e ”,d b、la stErro r( ( )、tex x t()

 );

 } }

 IDNumbe r

 + +;

 }

 s s tat _addWorkTi m e( ); ;

 }

 void

 Atte n da nce_ Ch ang g e:

 :stat_a ddWor kT ime (){ {

 Q Tim m e

 tim e

 = QTime :

 :curr e nt T im e() ;

 // 获得当前季节上下班时间

 Q Time up _ti i m e = QTim e ::cu r rentTime () ;

 Q Tim e

 d d ow n_ ti me = QTime :: : cu rr ent t Ti me( ); ;

 QSqlQ u er y

 sqlque r y;

 sq l query 、 prep a re(” SE LE C T [ Season], , [G o_ _ t o_ w or k],[ Go _of f f_w w o rk] ] ”

 "F ROM [TYX X_ _D B_ At t t endance] 、[ dbo] 、[ [ m uting s ch h e dule]”

 ”WHERE [S e as on n] ]

 =

 ?

 ”) ;

 sq lq u ery 、a a d dBindValue( s easo n);

 s qlquery 、 exec();

 sqlquery 、n n e xt (); ;

 up_ t ime =

 sq lq ue ry y 、 va l ue( 1)、t oTim e() ;

 dow n _time =

 sqlque ry y 、 value(2) 、toTim e() ;

 if f ( ui i — >IN_r a di o But ton- - >is Checked ( )){

 // 如果迟到

 i i f (time >

 up_time ){

 sql l q uery 、 prepa re e ( ” UP PD AT E

 [ [ T YX_DB_Attenda n ce ]、 [dbo] 、[ATTENDANCE_STAT ]" "

 ” SET

 [Y E AR_ MO O N TH] =

 ? ”

 ”,[ LATE_TIME S]

 = [LA A TE _T IM M ES S ]

 + +

 1 ”

 "WHERE [PERSON ]

 = ?

 ”) ;

 sq q l quer y、a a d dBin d Value( QDateT im m e: : :

 currentDateTi m e());

 s ql qu er y、 addBi nd d Value ( pe r sonNumber);

 sqlque ry y 、e xec (); ;

 } }

 } }

 e e l se i f( ( ui i — >OUT_ r ad ioB utton_2 — 〉i sC h ec ke d() ){

 // 如果早退

 if ( tim e

 < down_ t im e){

 sq lque ry y 、 prep a re(" UP P DATE

 [ [ T YX _DB _Att en da nc c e]、 [ db o]、 [ AT T END

 AN N C E_STAT]"

 ”SE T

 [Y YEA A R _MO NTH H ]

 = ?

 "

 ",[ EARLY_TIM ES S ]

 = =

 [ [ EA AR R L Y_TIMES ]

 + 1 "

 ”W HE E R E [P ERS ON N ]

 = ?

 " " ); ;

 sq lq q u ery 、 addBind V alue( QDateTime :

 :c u rren t DateT i me ( ));

 s s q lquer、 y、 addBindV a lue(p e rso nNum b er ); ;

 s s ql quer y、 exec();

 } }

 } }

 //工作时间计算

 int

 worktim m e

 = 0;

 s qlquer、 y、p p r epare(”S E LE CT T

 t1、 、 [PERSO O N ],

 t1 、 [IO _T IM E ],

 t2、 [IO_ TI I M E] "

 "F R OM

 [TY X_ _ DB_ At te nd an ce]、 、[ [ d bo ]、 [ATTEND A NCE] AS t 1

 , ,

 [ [ TY Y X_ _ D B_At t en da a n ce ]、[ dbo]、 、 [A T TENDANCE] AS

 t2 "

 ”W H ERE t1 1 、[P ERS ON] ]

 =

 ?

 AN D

 t1、 、 [IN_ O UT] =

 ’I’ AND t t 1、 [IN_OUT] <〉

 t2、 、 [IN_OU T]

 AND t1 、[ PERSON] = =

 t t 2、[ PE R SON]");

 s qlq ue ry 、a ddBin d Va l ue(pers o nNum ber ); ;

 s s q lquer y、e e x ec();

 while( sq q l query 、 next()){

 if ( sqlq u er y、v alue (1 1 )、 toDat e() == sq l query 、 va l ue(2) 、 toD at t e( )) {

 w orktim e

 += s q lq u ery 、v alue( 2) 、 toTim e() ) 、 hour( )

 - -

 sqlq ue ry 、 valu e(1 )、 toTim e () 、h our ( );

 / / /

 qD ebu u g ()

 〈< <

 sq q lq ue ry y、 、e value ( 2)、 、 toDateTime() <<

 s s q lq u er y、v alue(1)、 toD at eTi m e() < 〈

 wor k time ;

 }

 } }

 // 工作时间插入统计表

 s ql q uery 、p re pe are ( ”UPD AT T E

 [ [ T YX_D B_Att e nda n c e] 、[ dbo] 、 [A T TENDAN C E_ S TAT ]" "

 "S E T [Y EAR_MONTH ]

 = =

 ? "

 " " ,[W OR K_ HOU R ] = ? " "

 ”WHERE [PERS ON] = ? " ); ;

 sqlq u ery 、ad dBindVal ue(Q Q DateTime::cu r ren tDa teTime ( ));

 sql qu u ery、a a dd d B indValu e (w orktime ); ;

 sql que ry 、add d B indVa lue( per sonN N u mber ); ;

 s s q lquery 、 exec( ); ;

 } }

 // / attendance_statistics 、c c pp p

 v oid A tt t end ance_ S tatistics :: : on_C C hoos eD D e le t eB utt on_cli c ked( )

 { {

 i i nt

 ret =

 QM e ssageBox::question(this,"C C l ear Thi s" " ," " D o y o u relly

 w w a nt

 to

 cl e ar

 thi s

 ro w

 ?

 ",Q Messag eB B ox x :: :Y es |

 QM e ssa g eBox:

 :

 :No , ,

 QMessag e Box:

 :

 :Y es s)

 ); ;

 if(ret == =

 QMe s sageB ox x ::Y es ){ {

 int t

 r r ow

 = ui i- -> > s howTa b leVi ew — >curr ent Index() 、r r ow ();

 //

  qDe bu g () < 〈

 row;

 Q Q Sq lQuer y

 s ql qu u er y;

 sql q uer y、p p r epare(”S ELECT

 [PERS O N] "

 "F R OM [TYX _DB B_A tte n dan ce e ]、[ [ d bo] 、[ATT T EN N DANCE_STAT ] ”);

 sq lq q ue e ry y 、 exe c() ) ;

 if ( sqlq u ery 、 seek ( row) ){

 p p e rson Nam m e

 =

 sql q uery 、v al ue e ( 0) 、 toSt ri ng ( );

 // / 删除考勤

 sqlqu ery y 、prep p are("DELETE FROM

 [TY X_DB_Attendance] 、[ dbo] ] 、[A T TEND A NCE]”

 ”WH ERE

 [PER S ON ]

 = ?

 ” ); ;

 sqlqu e ry 、 add B in d Val ue e(p ers o nName) ;

 sql l q ue ry y 、 exec();

 // 删除加班

 s qlquery 、 prep are ("DELET E

 FROM [TY X_DB_Att e ndan ce e ]、[ [ dbo] ] 、[OVERT IM E ]"

 "WHERE [ ...

推荐访问:课程设计 实验 数据库

热门排行Top Ranking

新时代青年的奋斗精神心得体会5篇

新时代青年的奋斗精神心得体会5篇新时代青年的奋斗精神心得体会篇1为进一步弘扬爱国奋斗奉献精神,激励党

坚持总体国家安全观心得体会250字8篇

坚持总体国家安全观心得体会250字8篇坚持总体国家安全观心得体会250字篇1“安而不忘危,存而不忘亡

宣传部部长心得体会15篇

宣传部部长心得体会15篇宣传部部长心得体会篇1首先,感谢领导给我这次评选优秀员工的机会,也感谢您能在

管理信息系统案例

第一章 信息系统与管理 案例((或实例) 得讨论题及点评((或回答)) [实例]利润计划工作中得反复

大学生体育课心得体会1500字5篇

大学生体育课心得体会1500字5篇大学生体育课心得体会1500字篇1不知不觉,进入大学第一个学期的体

餐饮单位疫情防控工作汇报

餐饮单位疫情防控工作汇报根据省、市、区疫情防控指挥部统一部署,严格落实《省市场监督管理局关于进一步加

党支部党建工作年度台账-基层党建工作台账

党支部党建工作年度台账::基层党建工作台账 党支部党建工作年度台账说明为抓好党建工作,根据《党章》《

党员的时代楷模心得体会12篇

党员的时代楷模心得体会12篇党员的时代楷模心得体会篇1@党员干部“打工攻略”请查收一年一度的“双十一

公文格式国家标准

公文格式国家标准 1范围 本标准规定了党政机关公文通用的纸张要求、排版和印制装订要求、公文格式各要素

内勤辅警先进事迹材料

内勤辅警先进事迹材料3篇 内勤辅警先进事迹材料1 办公室工作室一项既辛苦、又清苦的脑力劳动,他没有惊

傅雷家书阅读心得及感悟10篇

傅雷家书阅读心得及感悟10篇傅雷家书阅读心得及感悟篇1一连几天,我都沉浸在《傅雷家书》这本书中,感受

学校留观室设置及工作方案

学校留观室设置及工作方案 根据省、市、区疫情防控要求,为确保开学后切实保障师生生命安全和身体健康,特