数据库课程设计实验报告.doc_第1页
数据库课程设计实验报告.doc_第2页
数据库课程设计实验报告.doc_第3页
数据库课程设计实验报告.doc_第4页
数据库课程设计实验报告.doc_第5页
免费预览已结束,剩余26页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统课程设计题 目: 考勤管理系统 专 业: 计算机科学与技术 年 级: 大二 班 级: 学 号: 姓 名: 指导老师 : 完成时间 : 2017年6月8号 . .目录一、实验目的2二、实验平台2三、实验内容2四、实验要求2五、实验步骤31.系统需求分析31.1系统功能分析31.2系统功能模块设计(划分)31.3与其它系统的关系31.4数据流程图32.数据库设计32.1数据库需求分析42.2数据库概念结构设计42.3数据库逻辑结构设计42.4使用PowerDesigner16进行数据库的设计与建立62.5使用Axure RP 8 进行界面的设计73.各功能模块的设计与实现73.1功能说明73.2用户界面设计83.3各功能模块的实现134.系统实现144.1系统总体设计144.2ODBC连接方式的实现144.3登陆界面的实现174.4注册界面的实现184.5找回密码的实现194.6主界面的实现204.7上下班时间设置的实现204.8考勤修改的实现214.9出勤记录的实现224.10加班记录的实现234.11请假记录的实现244.12出差记录的实现244.13考勤统计和记录删除的实现25六、 实验心得26七、部分代码展示26一、实验目的 数据库系统课程设计是为了配合数据库原理及应用开发而设置的,是计算机科学与技术、网络工程、信息安全、物联网工程、软件工程等专业集中实践的教学环节,是将关系数据库理论知识转化为解决实际问题能力的重要环节。数据库系统课程设计目的在于加深对关系数据库理论知识的理解,通过使用具体的 DBMS,掌握一种实际的数据库管理系统并掌握其操作技术,熟练掌握使用数据库前端开发工具(如 VB、 C+、 Java、 Delphi、 PowerBuilder等),进一步提高同学们运用数据库技术解决实际问题的能力。二、实验平台l PowerDesignerl Axure l Sql sever 2005l 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语言实现数据库的建立、应用和维护,最后写出详细的设计说明书。四、实验要求考勤制度是每个企事业单位所必需的,计算机的出现使员工出勤情况的记录和统计变得十分简单。考勤管理系统的主要功能如下:l 上下班时间的设定。上下班时间相对固定,可保存在客户端的设置文件中。l 员工出入单位的情况记录。出入情况主要由考勤机来记录,但是需要设置人工添加的功能,以针对特殊情况的处理。l 请假、加班和出差情况的记录。l 每个月底进行整个月的出勤情况统计。考勤系统记录了员工上下班的情况,为工资管理直接提供每个月工作时间的统计结果,用以计算工资。同时考勤系统也需要其它系统提供的员工、部门等信息。五、实验步骤1. 系统需求分析1.1 系统功能分析考勤管理系统的主要功能如下:l 上下班时间的设定。上下班时间相对固定,可保存在客户端的设置文件中。l 员工出入单位的情况记录。出入情况主要由考勤机来记录,但是需要设置人工添加的功能,以针对特殊情况的处理。l 请假、加班和出差情况的记录。l 每个月底进行整个月的出勤情况统计。1.2 系统功能模块设计(划分)本系统功能模块如图 1所示。1.3 与其它系统的关系考勤系统记录了员工上下班的情况,为工资管理直接提供每个月工作时间的统计结果,用以计算工资。同时考勤系统也需要其它系统提供的员工、部门等信息。1.4 数据流程图系统的数据流程如图 2所示。出勤的原始时间记录主要来源于考勤机,并且以固定格式保存的数据库中。考勤管理系统的任务是如何处理这些数据。2. 数据库设计2.1 数据库需求分析根据数据流程,可以列出以下管理系统所需的数据项和数据结构l 出勤记录:记录号、员工、出入情况、出入时间。l 请假记录:记录号、员工、假期起始时间、假期结束时间、请假缘由。l 加班记录:记录号、员工、加班时间长度、日期。l 出差记录:记录号、员工、出差起始时间、出差结束时间、具体描述。l 月度考勤统计:记录号、员工、年月、累计正常工作时间、累计请假时间、累计加班时间、累计出差时间、迟到次数、早退次数、旷工次数所需的外部数据支持:l 人员信息:员工号、密码、权限、姓名、部门、当前状态等l 部门设置:部门编号、名称等2.2 数据库概念结构设计图 3是本系统所需数据的E-R 模型图。2.3 数据库逻辑结构设计根据系统的 E-R 图,总共需要 8 个数据表的数据支持。其中人员信息和部门设置可以使用人事管理系统中已有的数据表,而出勤记录、月度考勤统计、请假、加班、出差表和上下班时间表需要独立设计。这8个数据表的结构如表 1到表 8所示。表1 ATTENDANCE出勤记录表名称代码数据类型记录编号IDNumber (20)出入状态IN_OUTCharacters (2)出入时间IO_TIMEDate & Time表2 ATTENDANCE_STAT月度考勤统计表名称代码数据类型记录编号IDNumber (20)统计年月YEAR_MONTHDate & Time累计工作时间WORK_HOURInteger累计请假时间LEAVE_HDAYInteger累计加班时间OVER_HOURInteger累计出差时间ERRAND_HDAYInteger迟到次数LATE_TIMESInteger早退次数EARLY_TIMESInteger旷工次数ABSENT_TIMESInteger表3 LEAVE请假记录表名称代码数据类型记录编号IDNumber (20)起始时间START_TIMEDate & Time结束时间END_TIMEDate & Time缘由REASONText表4 OVERTIME加班记录表名称代码数据类型记录编号IDNumber (20)加班时间WORK_HOURSInteger日期WORK_DATEDate & Time表5 ERRAND出差记录表名称代码数据类型记录编号IDNumber (20)起始时间START_TIMEDate & Time结束时间END_TIMEDate & Time具体描述DESCRIPSIONText表6 PERSON员工个人信息表名称代码数据类型员工号PERSON_IDNumber (20)密码PERSONVariable characters (20)权限AUTHORITYText姓名NAMEVariable characters (20)性别SEXCharacters (2)生日BIRTHDAYDate & Time所在部门DEPARTMENTVariable characters (20)职务JOBVariable characters (20)受教育程度EDU_LEVELVariable characters (20)专业技能SPECIATYText家庭住址ADDRESSText联系电话TELNumber (20)电子信箱EMAILText当前状态STATECharacters (2)备注REMARKText表7 DEPARTMENT部门信息表名称代码数据类型部门编号IDNumber (20)部门名称NAMEText部门经理MANAGERVariable characters (20)简介INTROText表8 Commuting schedule上下班时间表名称代码数据类型季节SeasonVariable characters (20)上班Go_to_workDate & Time下班Go_off_workDate & Time2.4 使用PowerDesigner16进行数据库的设计与建立 Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控制。SQL Server 是Microsoft 公司推出的关系型数据库管理系统。数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。具体过程如下:l 打开PowerDesigner16,新建一个概念模型项目,将上面进行需求分析和数据库设计所得的表在软件中表示出来,同时将各个表之间的联系给关联好。l 概念模型设计好之后,选择 Tools - Generate Physical Date Model ,在 DBMS 选项中选择想要生成脚本的对应的数据库,我这里选择的是对应的 Microsoft SQL Server 2005 ,点击确定即可生成对应数据库的物理模型。l 生成物理模型之后,再检查下实体之间是不是有一些和预计的不同的地方,有的话则是概念模型的设计不正确,需要重复第一步,没有的话就可以继续下一步。l 检查完物理模型之后,就可以将建立的模型以SQL脚本的形式导出来,具体操作是 Datebase - Generate Datebase ,再点确定就可以将脚本导出来。l 打开SQL Server Management Studio ,在自己的数据库位置单击右键,选择 新建查询 ,然后导入上一步生成的SQL脚本,选择 执行 即可将在PowerDesigner16中设计好的物理模型生成在SQL Server Managemenat Studio中,至此,数据库的设计与建立工作完成。2.5 使用Axure RP 8 进行界面的设计Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。具体过程如下:(以登陆界面为例)l 首先明确登录界面需要多少的输入框和标签以及按钮,需要多少就拖多少到中间的空白处去。l 为了能够更好地理解各个控件是干什么用的,最好把对象名给改成自己能够理解的。l 按照自己喜欢的风格摆放各个控件的位置,调整属性。l 具体教程可以参考百度。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已经包含了应用程序、驱动管理器、驱动程序以及数据源,我们所要做的就是配置好数据源,具体配置方法如下:l 打开 控制面板 - 管理工具 - 数据源(ODBC)。l 单击 添加 按钮,准备添加一个新的数据源,这个数据源是与自己所写的程序相关的。填写好名称,这个名称和后面程序进行ODBC连接有至关重要的联系,服务器选择数据库所在的服务器,完毕之后选择下一步。l 如图所示选择连接方式,输入正确的账号密码,单击下一步。l 默认的数据库更改为要操作的数据库,点击下一步。l 一直按下一步直到完成,然后单击 测试数据源 ,如果测试成功则ODBC配置成功,可以进行接下来的工作。接下来就是在QT中实现使用ODBC方式连接数据库:l 在QT中使用数据库操作需要添加对应的头文件,以及在工程文件中添加对SQL的支持。l 添加完成后即可通过代码进行数据库的连接l 其中,QSqlDatebase:addDatebase(“QODBC”) 为添加ODBC的驱动到QT程序中,没有驱动的话也就无法正确连接数据库。setHostName(416-12) 为设置想要连接的主机的名字,如果是远程服务器的话也可以直接输入IP地址。setDatabaseName(sqlserver) 为设置数据库的连接名,这里就用到了之前设置数据源时的名称,这个连接名需要和数据源里面的名称一样才能连接。setUserName(sa) 和 setPassword(sa520) 分别为设置登陆账号和密码,如果采用的是Windows账户登陆的话就不需要设置这两项,不是的话就需要设置。最后的那个open() 是用来判断是不是已经打开对应的数据库,成功的话会返回true ,否则就是false ,表示不成功,需要重新设置。此外,在Microsoft SQL Server Management Studio中可以直接导出对应表的增、删、查、改脚本,具体方法如下:l 到这里也就结束了ODBC连接方式的实现,接下来可以根据对应的功能写代码了。4.3 登陆界面的实现登录界面所需要的东西主要是用户和管理员单选框、账号和密码输入框、登录按钮、注册账号按钮和找回密码按钮,这里列出我的一些主要的控件:控件类型控件名用途说明QLabelTitleLabel标题QPushButtonRegisterButton注册ForgetPushButton忘记密码LandButton登陆pushButton重置输入框QRadioButtonuser_radioButton用户按钮admin_radioButton管理员按钮QLineEditAccountEdit账户输入PasswordEdit密码输入在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 四周的弹簧是用来固定比例的,这样可以在改变窗口大小的时候动态改变各个控件的大小。l 背景的改变放在该类的构造函数中,使用自动填充全部。l 密码输入时显示为加密模式,使用ui-PasswordEdit-setEchoMode(QLineEdit:Password); l 回车的焦点设置为登陆按钮l 按下登陆或注册或忘记密码时会将当前窗口隐藏,同时打开对应的窗口。4.4 注册界面的实现用户注册界面主要用到的是两个按钮,一个提交,一个返回,其他的均为输入框,主要控件如下:控件类型控件名用途说明QPushButtonSubmitButton提交ReturnButton返回QLineEditPersonNumberLineEdit输入用户名PasswordLineEdit输入密码NameLineEdit输入姓名TELLineEdit输入手机号码QDateBirthdayDateEdit选择生日在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 必须输入的为员工号,其他可以填也可以不填,不填的话就找不回密码。4.5 找回密码的实现找回密码界面主要使用三个按钮,四个输入框,部分主要控件如下:控件类型控件名用途说明QPushButtonPasswordPushButton确认用户名SubmitPushButton提交ReturnPushButton返回QLineEditPersonNumberLineEdit输入用户名NameLineEdit输入密码TELLineEdit输入手机号NewPasswordLineEdit输入新密码在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 如果注册时没有输入姓名和手机号,在这里是找不回密码的,只有联系管理员在数据库中修改。4.6 主界面的实现主界面主要使用七个按钮,部分主要控件如下:控件类型控件名用途说明QPushButtonWorkSetButton上下班时间WorkAttendanceButton考勤修改AttendanceButton出勤管理OverTimeButton加班管理LeaveButton请假管理ErrandButton出差管理WorkAttendanceStatisticsButton考勤统计在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 四周的弹簧和之前的一样,都是为了维持固定比例不变形。l 每个按钮是交叉分布的,所以有图的部分是点不了的。4.7 上下班时间设置的实现上下班时间设置界面主要使用两个显示标签,四个按钮,两个下拉框和两个时间设置框,部分主要控件如下:控件类型控件名用途说明QLabelCurrentUpTimeShowLable显示当前上班时间CurrentDownTimeShowLable显示当前下班时间QPushButtonUpSubmitButton提交上班时间更改DownSubmitButton提交下班时间更改InitializationButton初始化上下班时间BackButton返回QComboBoxup_season_comboBox上班季节下拉框down_season_comboBox下班季节下拉框QTimeEditDown_timeEdit下班时间设置框Up_timeEdit上班时间设置框在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 重置为初值只能重置当前页面的,而不是重置全部。l 系统默认上班时间上午八点,下班时间晚上十点。l 上下班时间表是存在数据库中的,而不是存在程序之中。4.8 考勤修改的实现考勤修改界面主要使用九个按钮,八个输入框和七个显示标签,部分主要控件如下:控件类型控件名用途说明QPushButtonPersonSubmitButton提交员工号returnButton返回ChangeWorkSubmitButton工作时间修改提交ChangeOvertimeSubmitButton加班时间修改提交ChangeLeaveSubmitButton请假时间修改提交ChangeErrandSubmitButton出差时间修改提交ChangeLateSubmitButton迟到次数修改提交ChangeLeaveearlySubmitButton早退次数修改提交ChangeAbsenteeismSubmitButton旷工次数修改提交QLineEditPersonlineEdit员工号输入WorkTimeChange_lineEdit改变的工作时间OverTimeChange_lineEdit改变的加班时间LeaveTimeChange_lineEdit改变的请假时间ErrandTimeChange_lineEdit改变的出差时间LateTimesChange_lineEdit改变的迟到次数LeaveEarlyTimesChange_lineEdit改变的早退次数AbsenteeismTimesChange_lineEdit改变的旷工次数QLabelCurrentWorkTimeNumberLabel显示当前工作时间CurrentOvertimeTimeNumberLabel显示当前加班时间CurrentLeaveTimeNumberLabel显示当前请假时间CurrentErrandTimeNumberLabel显示当前出差时间CurrentLateTimesNumberLabel显示当前迟到次数CurrentLeaveearlyTimesNumberLabel显示当前早退次数CurrentAbsenteeismTimesNumberLabel显示当前旷工次数在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 只有输入了员工表中已有的员工号才能进行更改。l 如果输入的员工号不存在,可以选择新建一个员工信息,4.9 出勤记录的实现出勤记录界面主要使用三个按钮,一个输入框,两个单选框和一个时间设置框,部分主要控件如下:控件类型控件名用途说明QPushButtonPersonNumberSubmitButton提交员工号SubmitButton提交出勤信息ReturnButton返回QLineEditPersonNumberEditLine输入员工号QRadioButtonIN_radioButton选择上班OUT_radioButton_2选择下班QDateTimeEditIN_OUT_dateTimeEdit上下班时间记录在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 只有输入了员工表中已有的员工号才能进行信息记录。l 必须选择上班或者是下班,否则会提示错误无法提交信息。4.10 加班记录的实现加班记录界面主要使用三个按钮,一个输入框,一个双精度自旋框和一个时间设置框,部分主要控件如下:控件类型控件名用途说明QPushButtonPersonNumberSubmitButton提交员工号SubmitButton提交信息ReturnButton返回QLineEditPersonNumberlineEdit输入员工号QDoubleSpinBoxOvertimeLengthdoubleSpinBox输入加班时长QDateTimeEditOvertimeDatedateEdit加班记录日期在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 只有输入了员工表中已有的员工号才能进行信息记录。l 这里的加班日期是指加班的那天而不是进行记录的那天。4.11 请假记录的实现请假记录界面主要使用三个按钮,两个输入框和两个时间选择框,部分主要控件如下:控件类型控件名用途说明QPushButtonPersonSubmitButton提交用户名SubmitButton提交信息ReturnButton返回QLineEditPersonEditLine输入员工号QTextEditReasontextEdit输入请假备注QDateTimeEditLeaveBegin_dateTimeEdit请假起始时间LeaveEnd_dateTimeEdit请假结束时间在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 只有输入了员工表中已有的员工号才能进行信息记录。l 请假缘由字数没有限制。4.12 出差记录的实现出差记录界面主要使用三个按钮,两个输入框和两个时间设置框,部分主要控件如下:控件类型控件名用途说明QPushButtonPersonSubmitButton提交员工号SubmitButton提交信息ReturnButton返回QLineEditPersonEditLine输入员工号QTextEditDescription_textEdit输入出差备注QDateTimeEditErrandBegin_dateTimeEdit出差起始时间ErrandEnd_dateTimeEdit出差结束时间在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 只有输入了员工表中已有的员工号才能进行信息记录。l 具体描述部分没有字数限制。4.13 考勤统计和记录删除的实现考勤统计和记录删除界面主要使用四个按钮和一个表格显示视图,部分主要控件如下:控件类型控件名用途说明QPushButtonChooseDeleteButton选中行删除AllClearButton全部删除ShowStatisticButton显示统计信息ReturnButton返回QTableViewshowTableView显示表格在QT设计师模式中我设计完成的界面是这样的:需要注意的是:l 这里说的删除不是删除当前行,而是删除与当前表格相关的员工的信息,如加班表、出勤表中的相关信息全部删除。l 选中删除必须选中一行,否则会直接删除第一行的员工相关信息。六、 实验心得本实验如果采用的是实验指导书中的方法去做的话,过程会稍显复杂,于是我选择了我比较熟悉的QT来做,能够节约时间,实验期间主要心得与收获如下:1. 实验本身并不是很难,因为大多的实现方法就是增、删、查、改四项,真正有问题的是实现部分,因为要考虑到各个组件和界面的交互操作。2. 代码本身不难写,难的是数据库的设计和界面的美工,这两个方面是这么久一直没有涉及过的,尤其是界面的美工,对于我这种审美有点不对劲的人来说,别人觉得好看的我不一定觉得好看,我觉得好看的别人觉得很难看。数据库的设计也是,要详细分析好各个数据项的数据类型,否则编写代码的时候会出现很严重的类型匹配错误。3. 好的开发工具很重要。像VC+ 6.0这个软件年代太久远了,但是机房的电脑又装不了我另一个比较熟悉的VS2015,所以只能锁定在QT。而且QT的版本选择也是很重要,之前花了一天的时间下了又删,从QT5.9开始一直试到了QT5.6才能在XP系统上用,但是磨刀不误砍柴工,这点时间上的花费是值得的。4. 完成题目所要求的功能大概只花了两天时间,但是剩下的时间也不能玩,我刚好可以把最近学的 重构 改善既有代码的设计这本书上的东西运用到实际上来,对我的代码进行重构,这个过程很痛苦,因为有些地方改了之后就会报错,花费很多时间来换条路进行重构。但是结局是开心的,因为最后完成了我的目标,使得代码的整洁度、可读性和鲁棒度都得到了不小的提升。. .七、部分代码展示/attendance_change.cppvoid Attendance_Change:on_PersonNumberSubmitButton_clicked() /确定按钮 exist = false; /判断员工号是否存在 personNumber = ui-PersonNumberEditLine-text(); QSqlQuery sqlquery; sqlquery.exec(SELECT PERSON FROM TYX_DB_Attendance.dbo.PERSON); while(sqlquery.next() QString tempPersonID = sqlquery.value(0).toString(); if(tempPersonID.compare(personNumber) = 0) / 如果存在和输入的相同的员工号,则可以直接使用 exist = true; if(exist) QMessageBox:warning(this,Query was successful,Query was successful); ui-groupBox_2-show(); ui-groupBox_3-show(); ui-SubmitButton-show(); else /不存在输入的员工号,选择新建或者不新建返回 int ret = QMessageBox:question(this,Query failed,Do you want to create a new employee record?,QMessageBox:Yes | QMessageBox:No,QMessageBox:Yes); if(ret = QMessageBox:Yes) sqlquery.prepare(INSERT INTO TYX_DB_Attendance.dbo.PERSON(PERSON,PASSWORD) VALUES (:PERSON,:PASSWORD); sqlquery.bindValue(:PERSON,personNumber); sqlquery.bindValue(:PASSWORD,personNumber); sqlquery.exec(); /插入新员工到考勤表 stat_insert(); ui-groupBox_2-show(); ui-groupBox_3-show(); ui-SubmitButton-show(); /获取记录条数 QSqlQuery sqlqueryID; sqlqueryID.exec(SELECT ID FROM TYX_DB_Attendance.dbo.ATTENDANCE); if(sqlqueryID.last() IDNumber = sqlqueryID.value(0).toInt() + 1 ; void Attendance_Change:on_SubmitButton_clicked() /提交按钮 QString IO_radio; bool io_ok = false; if(ui-IN_radioButton-isChecked() IO_radio = I; io_ok = true; else if(ui-OUT_radioButton_2-isChecked() IO_radio = O; io_ok = true; else QMessageBox:warning(this,No choice,Please select one!); if(io_ok) QSqlQuery sqlquery; sqlquery.prepare(INSERT INTO TYX_DB_Attendance.dbo.ATTENDANCE(ID,PERSON,IN_OUT,IO_TIME) VALUES (:ID ,:PERSON ,:IN_OUT ,:IO_TIME); sqlquery.bindValue(:ID,IDNumber); sqlquery.bindValue(:PERSON,personNumber); sqlquery.bindValue(:IN_OUT,IO_radio); sqlquery.bindValue(:IO_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论