首页 毕业设计-酒店人事工资管理系统—论文

毕业设计-酒店人事工资管理系统—论文

举报
开通vip

毕业设计-酒店人事工资管理系统—论文毕业设计-酒店人事工资管理系统—论文 1 酒店人事工资管理系统 大学毕业设计论文 课题 酒店人事工资管理系统 姓 名 学 科 专 业 ….. 指 导 教 师 第1页 2 酒店人事工资管理系统 前言 酒店人事工资管理系统是一个酒店不可缺少的部分,它的内容对于酒店的 决策者和管理者来说都至关重要,所以酒店人事工资管理系统应该能够为用户提 供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件 信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产 生大量的文件和数...

毕业设计-酒店人事工资管理系统—论文
毕业设计-酒店人事工资管理系统—论文 1 酒店人事工资管理系统 大学毕业设计论文 课题 酒店人事工资管理系统 姓 名 学 科 专 业 ….. 指 导 教 师 第1页 2 酒店人事工资管理系统 前言 酒店人事工资管理系统是一个酒店不可缺少的部分,它的内容对于酒店的 决策者和管理者来说都至关重要,所以酒店人事工资管理系统应该能够为用户提 供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件 信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产 生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认 识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管 例如:检索迅速、查找方便、可靠性高、存储量大、保密性理所无法比拟的优点. 好、寿命长、成本低等。这些优点能够极大地提高人事管理的效率,也是酒店的 科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开 发一套酒店人事工资管理系统为例,谈谈其开发过程和所涉及到的问题及解决方 法。 摘要 酒店人事工资管理系统是典型的信息管理系统(MIS),其开发主要包括后 台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起 数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完 备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其 提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库 的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需 求迭代,不断修正和改进,直到形成用户满意的可行系统。 整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发。 论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说 明了系统设计的重点、设计思想、难点技术和解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 关键字 Visual Basic 6.0 Access2000 控件 窗体 域 Abstract The system of managing census register file is a typical application of managing information system (know as MIS),which mainly includes building up data-base of back-end and developing the application interface of front-end. The former required consistency and integrality and security of data. The later should make the application powerful and easily used. By looking up lots of datum, we selected Visual Basic presented by Microsoft because of its objective tools in Win32. VB offered a series of ActiveX 第2页 3 酒店人事工资管理系统 operating a data-base. It can give you a short-cut to build up a prototype of system application. The prototype could be modified and developed till users are satisfied with it. Key Word Visual Basic 6.0、Access2000、ActiveX、Form、Field 第3页 4 酒店人事工资管理系统 目 录 前言 ........................................................................................................................................... 2 摘要 ........................................................................................................................................... 2 第一章 导论 ........................................................................................................................ 5 第二章 系统需求分析 ............................................................................................................ 6 2.1、系统设计背景介绍 ....................................................................................................... 6 2.2、系统功能分析 ............................................................................................................... 7 第三章 系统总体设计 ............................................................................................................ 8 3.1 系统设计 ....................................................................................................................... 9 3.2、数据库设计 ................................................................................................................. 12 第四章 详细设计工作 .......................................................................................................... 14 4.1 数据模块的创建 ........................................................................................................... 14 4.2 用户登录模块设计 ....................................................................................................... 14 4.3系统主界面设计 ........................................................................................................... 15 4.4部门信息管理 ............................................................................................................... 17 4.5职工信息管理 ............................................................................................................... 24 4.6考勤信息管理 ............................................................................................................... 25 4.7职工工资管理 ............................................................................................................... 26 4.8 系统维护 ...................................................................................................................... 27 第五章 系统功能测试 ............................................................................................................ 29 第六章 结束语 ........................................................................................................................ 30 第 4 页 5 酒店人事工资管理系统 第一章 导论 随着信息技术的飞速发展,特别是数据库技术的发展,计算机已经成为当今信息时代的关键工具。数据库技术是计算机应用技术中的一个重要组成部分,对于大量的数据,使用数据库来存储管理将比通过文件来存储管理更高效。数据库技术在经过几代变革以后,出现了以关系数据库产品为主流的数据库时代。Access 2000是微软公司推出的关系数据库产品。作为Microsoft的office套件产品之一,Access已经卖出了近700万份,成为世界上最流行的桌面数据库系统。Access与许多优秀的关系数据库一样,可以让你很容易地连接相关的信息而且还对其他的数据库系统有所补充。Visual Basic作为应用程序的开发“利器”也 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得简单多了。Visual Basic提供了强有力的数据库存取能力,将Windows的各种先进特性与强大的数据库管理功能有机地结合在一起。 本次毕业设计——酒店人事工资管理系统是运用ADO技术设计开发的,使用大量地SQL语句进行添加、查询、删除等操作。本系统使用Access 2000作为后台数据库,利用Visual Basic 6.0提供的数据库开发平台开发前台部分。 第5页 6 酒店人事工资管理系统 第二章 系统需求分析 2.1、系统设计背景介绍 管理信息系统就是我们常说的MIS (Management Information System),在强调管理,强调信息的现代社会中它变的越来越普及。而将信息管理系统与酒店自动化设备想结合,则是当今社会现代酒店的发展趋势。通过这样的管理方式,酒店的管理人员、技术人员、统计人员等各部门职工就能从大量烦琐的资料和数据中解脱出来,只需对自己需要的数据和内容进行必须的处理,而不用对每个环节都了如指掌。这在一定程度上能够节省人力物力,同时也大大加强了对数据处理的及时性和准确性。 本次的开发内容——酒店人事工资管理系统就是信息管理与现代化办公设备相结合的例子。开发本系统希望使人事管理人员可以从年复一年的输入、计算、统计等工作中解脱出来,由于人事方面的数据众多,输入、统计极为不便,输入量大,计算量大。这些工作都以人力来完成将费时费力,而且容易出现错误和疏漏。本系统一次录入信息后,就可以反复多次在不同的信息库中使用。所有输入的信息都将按所属部门、专业、考勤日期、工资日期等详细分类,使客户可以根据需要进行管理操作。 因此,该管理系统的目的就是利用计算机对复杂烦琐的数据进行存储和处理,并利用计算机与现代化办公设备的连接实时刷新数据,从而提高酒店的工作效率。 第6页 7 酒店人事工资管理系统 2.2、系统功能分析 热网管理系统主要有以下几项功能要求: *按不同权限登录系统。 *对其提供的部门资料情况进行添加、查询、修改和删除操作。 *对其提供的人员资料情况进行添加、查询、修改和删除操作。 *对其提供的人员考勤资料情况进行添加、查询、修改和删除操作,并可按考勤月份进行分类。 *对其提供的职工资资料情况进行添加、计算、查询、修改和删除操作,并可按工资月份进行分类。 *可添加新的用户,修改用户原有的用户名、密码,删除原有用户。 第7页 8 酒店人事工资管理系统 第三章 系统总体设计 管理信息系统就是我们常说的MIS (Management Information System),在强调管理,强调信息的现代社会中它变的越来越普及。而将信息管理系统与酒店自动化设备想结合,则是当今社会现代酒店的发展趋势。通过这样的管理方式,酒店的管理人员、技术人员、统计人员等各部门职工就能从大量烦琐的资料和数据中解脱出来,只需对自己需要的数据和内容进行必须的处理,而不用对每个环节都了如指掌。这在一定程度上能够节省人力物力,同时也大大加强了对数据处理的及时性和准确性。 本次的开发内容——酒店人事工资管理系统就是信息管理与现代化办公设备相结合的例子。开发本系统希望使人事管理人员可以从年复一年的输入、计算、统计等工作中解脱出来,由于人事方面的数据众多,输入、统计极为不便,输入量大,计算量大。这些工作都以人力来完成将费时费力,而且容易出现错误和疏漏。本系统一次录入信息后,就可以反复多次在不同的信息库中使用。所有输入的信息都将按所属部门、专业、考勤日期、工资日期等详细分类,使客户可以根据需要进行管理操作。 因此,该管理系统的目的就是利用计算机对复杂烦琐的数据进行存储和处理,并利用计算机与现代化办公设备的连接实时刷新数据,从而提高酒店的工作效率。 第8页 9 酒店人事工资管理系统 3.1 系统设计 3.1.1系统功能分析 *按不同权限登录系统。 *对其提供的部门资料情况进行添加、查询、修改和删除操作。 *对其提供的人员资料情况进行添加、查询、修改和删除操作。 *对其提供的人员考勤资料情况进行添加、查询、修改和删除操作,并可按考勤月份进行分类。 *对其提供的人职工资资料情况进行添加、计算、查询、修改和删除操作,并可按工资月份进行分类。 *可添加新的用户,修改用户原有的用户名、密码,删除原有用户。 第9页 10 酒店人事工资管理系统 3.1.2 用户功能模块设计 添 加 记 录 查 询 记 录 部门信息管理 修 改 记 录 删 除 记 录 添 加 记 录 查 询 记 录 员工信息管理 修 改 记 录 删 除 记 录 添 加 记 录 用 查 询 记 录 户 考勤信息管理 登 修 改 记 录 陆 删 除 记 录 添 加 记 录 查 询 记 录 员工工资管理 修 改 记 录 删 除 记 录 修 改 密 码 添 加 用 户 系 统 维 护 删 除 用 户 数 据 备 份 数 据 恢 复 退 出 系 统 图 3.1 第10页 11 酒店人事工资管理系统 3.1.3 数据流程图 用户登陆 是 是否管理员 是否录入数据 是否修改数据 是 是 修改数据 录入数据 是否进行查询 是 输入查询条件 是 是否删除数据 是 删除数据 退出系统 3.1.4 说明 本次设计主要利ADO技术,界面友好。能自动生产编号,根据 用户输入的数据检查其合法性,确保数据正确输入。登陆系统时对用 户的请求进行身份验证,经验证合法后允许用户登陆系统,进行相应 权限对数据的处理,本系统能对用户进行管理,能进行数据库备份和 恢复,确保数据的安全。本次设计选择了Access 2000作为后台数据 库,利用Visual Basic 6提供的数据库开发平台开发前台部分。 第11页 12 酒店人事工资管理系统 3.2、数据库设计 3.2.1在Access 2000数据库中创建表: 根据设计要求,需要5个数据表:部门基本情况表、职工基本信 息表、职工考勤信息表、职工工资信息表、口令信息表。这5个数据 表的结构如下各表: (1)部门基本情况表 字段名称 数据类型 长度 主键 允许空 部门编号 文本 6 True 否 部门名称 文本 30 是 备注 文本 255 是 (2)职工基本信息表 字段名称 数据类型 长度 主键 允许空 职工编号 文本 6 否 职工姓名 文本 10 否 性别 文本 2 是 出生日期 日期/时间 短日期 否 民族 文本 10 是 政治面貌 文本 10 是 最后学历 文本 10 是 所学专业 文本 20 是 联系电话 文本 20 是 毕业学校 文本 30 是 籍贯 文本 50 是 家庭住址 文本 50 是 进入公司时间 日期/时间 短日期 否 部门名称 文本 30 是 职务名称 文本 30 是 备注 文本 255 是 (3)职工考勤信息表 字段名称 数据类型 长度 主键 允许空 职工编号 文本 6 是 职工姓名 文本 10 是 考勤日期 文本 6 否 部门名称 文本 50 是 数字 是 出勤天数 整型 假日加班 数字 整型 是 其它加班 数字 整型 是 第12页 13 酒店人事工资管理系统 出差天数 数字 整型 是 补休天数 数字 整型 是 请假次数 数字 整型 是 旷工天数 数字 整型 是 迟到次数 数字 整型 是 早退次数 数字 整型 是 备注 文本 255 是 (4)职工工资信息表 字段名称 数据类型 长度 主键 允许空 职工编号 文本 6 是 职工姓名 文本 10 是 计发日期 文本 6 否 部门名称 文本 50 是 数字 是 底薪 单精度型 奖金 数字 单精度型 是 补贴 数字 单精度型 是 加班费 数字 单精度型 是 房帖费 数字 单精度型 是 扣考核 数字 单精度型 是 养老金 数字 单精度型 是 医疗保险 数字 单精度型 是 住房公积金 数字 单精度型 是 税前小计 数字 单精度型 是 所得税 数字 单精度型 是 实发工资 数字 单精度型 是 (5)口令信息表 字段名称 数据类型 长度 主键 允许空 用户名 文本 20 是 密码 文本 10 是 权限 文本 6 是 第13页 14 酒店人事工资管理系统 第四章 详细设计工作 4.1 数据模块的创建 将数据库连接、数据表和数据源等运行期不可见的组件都放在窗体设计界面上,虽然在调用时比较直观,但却为界面布局设计带来的麻烦,而且也不利于数据的统一管理。因此,在设计时,我选择使用ADO来控制管理数据库。 在程序模块中定义记录集,并在各个窗体中定义记录集变量,使输入数据能与数据库连接,并都用程序进行控制,这样不用数据控件都用代码控制大大提高了程序运行效率。 部分有关代码如下: Dim rc As New ADODB.Recordset '定义记录集变量 Cnndb.Open "provider=microsoft.jet.oledb.4.0;data source = " & App.Path & "\酒店人事工资管理系统.mdb" '确定数据库位置 Dim rc As New ADODB.Recordset '定义记录集变量 If rc.State = 1 Then rc.Close ‘判断当前表的状态是否打开,是则关闭 rc.Open SQL, Cnndb, 3, 2 ‘打开当前表 4.2 用户登录模块设计 设计思路 每个用户登录系统都须经过身份验证。只有用户名和密码相对应才能进入系统。因为在系统设置中已经对系统使用权限进行了规定,所以,在用户登录的同时也决定了用户对系统使用的权限。当登录者是管理员身份时,他可以使用系统提供的所有功能,并能对所有用户 第14页 15 酒店人事工资管理系统 进行管理。登录者是操作员可以使用所有对数据的编辑功能,而如果登录者是一般用户时只能利用系统进行资料查询功能。 4.3系统主界面设计 根据系统模块结构,建立系统主界面。用户登录到系统后进入的就是该界面,所有功能一目了然。当不同权限的用户登录到该界面时功能有所不同,其控制由“用户登录”界面控制。 在此界面中对用户的权限进行了设置,若是以一般用户登录时只能修改自己的密码且只能浏览所有的人事管理信息,以管理员身份进入时可以对所有一般用户的密码进行设置,还可删除一般用户~能对人事信息进行编辑删除,修改等操作 具体精彩代码如下: 第15页 16 酒店人事工资管理系统 Private Sub Command4_Click() Cmdsize = 4 PBm1.Visible = False PBm2.Visible = False LabBm1.Visible = False LabBm2.Visible = False PYg1.Visible = False PYg2.Visible = False LabYg1.Visible = False LabYg2.Visible = False PKq1.Visible = False PKq2.Visible = False LabKq1.Visible = False LabKq2.Visible = False If QuanXian = " (一般用户)" Then Pgz1.Visible = True Pgz1.Enabled = False Pgz2.Visible = True Labgz1.Visible = True Labgz1.Enabled = False Labgz2.Visible = True Else 第16页 17 酒店人事工资管理系统 Pgz1.Visible = True Pgz2.Visible = True Labgz1.Visible = True Labgz2.Visible = True End If Command1.Top = 0 Command2.Top = 47.958 Command3.Top = 47.958 * 2 Command4.Top = 47.958 * 3 End Sub 4.4部门信息管理 <1>编辑部门信息 作为编辑部门信息这一项,所实现的功能是对公司各部门资料信息的存储与编辑,部门信息包括:部门编号(两位)、部门名称、备注。部门编号与部门名称都具有唯一性,不能重复。作为部门信息与职工信息有着密切的关系,每一名职工都从属一个部门。 第17页 18 酒店人事工资管理系统 (1)数据添加 当操作员进入系统,根据设计要求,需要添加新的部门信息时,在编辑部门信息窗体上按添加按钮,便进入添加状态,文本框自动清空,添加按钮变为确定按钮,光标会停留在部门编号文本框上,此时系统已自动生成一个新的部门编号,只需输入部门名称和备注信息即可完成部门信息编辑操作,在按窗体上的确定按钮即可检查该部门信息是否合法并存入数据库,否则按取消按钮。再点击添加按钮,用户可再次添部门信息记录。 添加代码设置如下: Private Sub DataFresh(SQL As String) '进行数据表格控件的更新 Dim i As Integer Dim j As Integer Dim FBmbh As String Dim FBmmc As String Dim FBz As String FBmbh = Trim(Txtbmbh.Text) '保存当前各个输入框的值 FBmmc = Trim(Txtbmmc.Text) FBz = Trim(Txtbz.Text) MSFlexGrid1.Row = 0 '写入表头标题 MSFlexGrid1.Col = 1: MSFlexGrid1.Text = "部门编号" MSFlexGrid1.Col = 2: MSFlexGrid1.Text = " 部 门 名 称" MSFlexGrid1.Col = 3: MSFlexGrid1.Text = " 备 注" SQL = SQL & " order by 部门编号 asc" '向表格控件输入数据 PrintSQL = SQL If rc.State = 1 Then rc.Close 第18页 19 酒店人事工资管理系统 rc.Open SQL, Cnndb, 3, 2 If rc.RecordCount > 0 Then MSFlexGrid1.Rows = rc.RecordCount + 1 i = 1 rc.MoveFirst Do Until rc.EOF MSFlexGrid1.Row = i For j = 1 To 3 MSFlexGrid1.Col = j MSFlexGrid1.Text = "" & rc(j - 1) MSFlexGrid1.CellAlignment = 1 Next j rc.MoveNext i = i + 1 Loop Else MSFlexGrid1.Rows = 1 End If Dim n As Integer '清除表格控件最左边的选定当前行标志"?" For n = 0 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = "" Next n ChangeCheck = False Txtbmbh.Text = FBmbh '恢复当前各个输入框的值 Txtbmmc.Text = FBmmc Txtbz.Text = FBz 第19页 20 酒店人事工资管理系统 (2)数据查询 当操作员需要对某个部门进行查询时,可以在编辑部门信息窗体下部中找到查询按钮。先在对应的文本框中输入要进行数据查询的条件,输入完查询条件后,点击查询按钮进行确定,系统便会查询出满足条件的部门记录,并列到数据表格中,无满足条件的部门记录时,则弹出对话框提示“查无此记录~”。 查询代码: Private Sub DataFind() '数据查找 Dim M As Integer Dim SQL As String SQL = "" If Txtbmbh.Text <> "" Then SQL = SQL & "and 部门编号 ='" & Trim(Txtbmbh.Text) & "'" If Txtbmmc.Text <> "" Then SQL = SQL & "and 部门名称 ='" & Trim(Txtbmmc.Text) & "'" If Txtbz.Text <> "" Then SQL = SQL & "and 备注 ='" & Trim(Txtbz.Text) & "'" If SQL <> "" Then SQL = " select * from 部门基本情况 where 部门编号<>''" & SQL If rc.State = 1 Then rc.Close rc.Open SQL, Cnndb, 3, 2 If rc.EOF Then M = MsgBox("查无此记录", vbInformation) Exit Sub End If Call DataFresh(SQL) End If End Sub (3)数据修改 当操作员需要对某个部门进行修改时,可以在编辑部门信息窗体下部中找到修改按钮。由于修改记录不可能在大量的数据中盲目的寻找,因此数据修改应该与数据添加按钮结合使用,先用查询功能进行对要修改记录的搜索,再在数据表格中选中要修改的部门记录,便把 第20页 21 酒店人事工资管理系统 此部门记录读入文本框中,只需在文本框中直接进行数据修改便可,修改完后按修改按钮进行确定,系统并对修改后的数据进行合法性检测,合法则修改成功。 修改信息代码: Private Sub DataFresh(SQL As String) '进行数据表格控件的修改 Dim i As Integer Dim j As Integer Dim FBmbh As String Dim FBmmc As String Dim FBz As String FBmbh = Trim(Txtbmbh.Text) '保存当前各个输入框的值 FBmmc = Trim(Txtbmmc.Text) FBz = Trim(Txtbz.Text) MSFlexGrid1.Row = 0 '写入表头标题 MSFlexGrid1.Col = 1: MSFlexGrid1.Text = "部门编号" MSFlexGrid1.Col = 2: MSFlexGrid1.Text = " 部 门 名 称" MSFlexGrid1.Col = 3: MSFlexGrid1.Text = " 备 注" SQL = SQL & " order by 部门编号 asc" '向表格控件输入数据 PrintSQL = SQL If rc.State = 1 Then rc.Close rc.Open SQL, Cnndb, 3, 2 If rc.RecordCount > 0 Then MSFlexGrid1.Rows = rc.RecordCount + 1 i = 1 rc.MoveFirst Do Until rc.EOF MSFlexGrid1.Row = i For j = 1 To 3 第21页 22 酒店人事工资管理系统 MSFlexGrid1.Col = j MSFlexGrid1.Text = "" & rc(j - 1) MSFlexGrid1.CellAlignment = 1 Next j rc.MoveNext i = i + 1 Loop Else MSFlexGrid1.Rows = 1 End If Dim n As Integer '清除表格控件最左边的选定当前行标志"?" For n = 0 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = "" Next n ChangeCheck = False Txtbmbh.Text = FBmbh '恢复当前各个输入框的值 Txtbmmc.Text = FBmmc Txtbz.Text = FBz End Sub (4)数据删除 当操作员需要对某个或多个部门进行删除时,可以在编辑部门信息窗体下部中找到删除按钮。由于删除记录不可能在大量的数据中盲目的寻找,因此数据删除也有数据查找功能,先在对应的文本框中输入要进行数据删除的条件,再按删除按钮,系统便会列出满足删除条件的部门记录,并提示是否删除满足条件的全部部门记录,也可以一条一条删除部门记录,只要在数据表格中选中要删除的部门记录,在按一下删除按钮即可删除数据。 第22页 23 酒店人事工资管理系统 删除数据代码: Private Sub DataDel() '数据删除 Dim DelSQL As String Dim YesNo As Integer Dim SQL As String SQL = " select * from 部门基本情况 " If rc.State = 1 Then rc.Close rc.Open SQL, Cnndb, 3, 2 If rc.RecordCount > 0 Then YesNo = MsgBox("真的要删除表格里满足条件的所有记录吗,", vbYesNo + vbQuestion) If YesNo = vbYes Then DelSQL = "" If Txtbmbh.Text <> "" Then DelSQL = DelSQL & "and 部门编号 ='" & Trim(Txtbmbh.Text) & "'" If Txtbmmc.Text <> "" Then DelSQL = DelSQL & "and 部门名称 ='" & Trim(Txtbmmc.Text) & "'" If Txtbz.Text <> "" Then DelSQL = DelSQL & "and 备注 ='" & Trim(Txtbz.Text) & "'" If DelSQL <> "" Then DelSQL = " delete from 部门基本情况 where 部门编号<>''" & DelSQL Cnndb.Execute (DelSQL) Call DataFresh(" select * from 部门基本情况 ") Call TxtKong End If Else Call DataFresh(" select * from 部门基本情况 ") End If End If 第23页 24 酒店人事工资管理系统 End Sub (5)清空 清空按钮的作用可使所有文本框清空,方便用户进行其它操作。 在下面各界面设置操作与上相同不再重复说明。 清空输入信息代码: Private Sub CmdClear_Click() ChangeCheck = False Call TxtKong Dim n As Integer For n = 0 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = "" End Sub <2>浏览部门信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能从此窗体中了解各部门现有人数,这是在编辑部门信息中无法获得的信息。 4.5职工信息管理 <1>编辑职工信息 作为编辑职工信息这一项,所实现的功能是对公司职工资料信息的存储与编辑,方便对职工的分类与管理。职工编号具有唯一性,不能重复。在此窗体中输入的信息都进过合法性检测,判断职工编号是否出现重复,位数是否为6位(前两位为部门编号,后四位为职工自 第24页 25 酒店人事工资管理系统 身编号)等。 <2>浏览职工信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能根据部门名称、出生日期、来到公司工作的时间进行职工信息查询。 4.6考勤信息管理 <1>编辑考勤信息 作为编辑考勤信息这一项,所实现的功能是对公司职工考勤资 料信息的存储与编辑,方便对职工工作的考察。对职工进行按月 考勤,考核职工出勤、加班、迟到和早退等一些信息。 第25页 26 酒店人事工资管理系统 <2>浏览考勤信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能根据部门名称、考勤日期进行职工考勤信息查询。 4.7职工工资管理 <1>编辑工资信息 作为编辑工资信息这一项,所实现的功能是对公司职工工资信息的存储、计算与编辑,方便对职工工资的管理。对职工工资进行按月分组,计算职工各种工资项目和个人所得税款等一些信息。 第26页 27 酒店人事工资管理系统 <2>浏览工资信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能根据部门名称、工资计发日期进行职工工资信息查询。 4.8 系统维护 系统维护选项里包括密码设置、用户管理、数据备份和数据恢复四个选项。用户管理功能只对管理员开放,管理员能在用户管理窗体中添加新的用户,对已有的用户进行用户名和密码修改,或者将原有用户删除。当一般用户和操作员进入时,菜单栏中无该项。 <1> 密码设置 该界面比较简单,能让登陆的用户修改自己的密码,但不能更改用户名,此项对所有权限的用户都适用。一进入此窗体便会显示此用户名,在旧密码框中输入原始密码,在新密码框中输入想更改的新密码,再在密码确定中进行新密码确认,按更改按钮便可修改用户密码。 <2> 用户管理 第27页 28 酒店人事工资管理系统 该功能只针对管理员有效,用于对所有权限用户口令的管理。能对所有用户进行用户名、密码、权限修改,不但能更改而且还能进行用户添加和删除。 <3> 数据备份 数据备份就是复制数据库的数据文件到其他地方,一面在数据库遇到意外破坏的时候能够恢复数据库,从而减少破坏造成的损失。在此系统中只把数据库备份到软盘中。 图4.13 <4> 数据恢复 数据恢复就是将数据库备份文件复制到当前数据库上,一面在数据库遇到意外破坏的时候能够恢复数据库,从而减少破坏造成的损失。在此系统中只从软盘中恢复数据库文件。 图4.13 第28页 29 酒店人事工资管理系统 第五章 系统功能测试 一、 系统测试环境 40G硬盘 1( 硬件环境:PIII 800 128MB内存 2( 软件环境: 操作系统:WINDOWS 98 数据库:Access 2000 程序开发工具: Visual Basic 6.0 二、 测试内容 测试了部门信息管理----添加、查询、修改、删除 测试了职工信息管理----添加、查询、修改、删除 测试了考勤信息管理----添加、查询、修改、删除 测试了职工工资管理----添加、查询、修改、删除 测试了系统维护—密码设置、用户管理、数据备份、数据恢复 三、 测试结果 测试结果软件运行一切正常 第29页 30 酒店人事工资管理系统 第六章 结束语 本次的酒店人事工资管理系统是基于Visual Basic 的ADO技术设计的。选择了Access 2000作为后端开发工具,开发数据库功能,并选择了Visual Basic 6.0作为界面前台开发工具。在该系统开发中我通过建立数据库,以及对各种信息库的开发(如:添加、查询、修改、删除资料)及设计系统维护安全部分,完成了此次对酒店人事工资管理系统的设计。 在本次的开发过程中,我意识到最重要的环节在于对系统的流程、功能模块、框架结构等方面的把握和设计。在需求分析结束以后,我们对一个系统需要具有哪些功能已经有了一定的认识,而如何以一个简洁、合理的系统结构去实现用户要求的功能就成为系统开发的关键环节。在这方面我可以说是深有体会。由于有些急于求成,在对ADO技术不是很了解的情况下就开始着手程序开发,所以当有时间静下来仔细理一下思路的时候发现走了很大的弯路,可以说是整个思路和设计要求有着非常大的差异。值得庆幸的是,发现的比较及时,还有足够的时间让我转变思路,从头开始。因此,通过这次酒店人事工资管理系统的开发,我深刻认识到系统分析,以及对整个系统的总体设计的重要性。只有走好了这一步,整个系统的开发才能事半功倍,否则就会是“棋差一着,满盘皆输”。 同时,在这次的系统开发中我也看到了自己在新知识的学习,新工具的应用方面的不足。开始时,我对Visual Basic和Access可以说 第30页 31 酒店人事工资管理系统 只是停留在书面上的了解,还不够深入透彻。系统的开发过程也就成为我对这两种开发工具的深入透彻学习的过程。正因为这样,所以在设计过程中往往会被一些问题卡住。在原地徘徊了一段时间后,我通过查找参考资料,和同学交流,利用互联网向有经验的编程人员请教等各种方式试着克服在设计过程中遇到的困难。随着开发设计的深入,我也逐渐掌握了一部分编程技巧,了解了一些关于编程方面的规律,一些困难也就迎刃而解了。 总之,这次的酒店人事工资管理系统开发过程对我来说不仅仅是一次毕业设计,这也是我一次有意义的学习、提高的过程。通过这次系统开发,我不但初步掌握了两种数据库系统开发工具,也让我看到了自己知识结构、知识储备、学习和应用能力上的不足。我想,在今后的学习和工作中,我将针对这些发现的问题,不断努力和提高自身各方面的素质,为社会作出自己应有的贡献 本酒店人事工资管理系统的顺利完成,还要感谢王忠军老师的大力帮助与细心指导~ 第31页 32 酒店人事工资管理系统 参考文献 [1] 袭沛曾,陆慰民 ,杨志强. Visual Basic 程序设计教程(6.0版). 高等教育出版社. 2000年 [2] 肖建 ,薛凤武 , 吴静. Visual Basic 6.0 基础教程. 中国电力出版社. 2002年 [3] 张大年, 廖智勇 ,刘检锋. Visual Basic数据库应用开发与实例 . 清华大学出版社. 2002年 [4] 杨宗志. Visual Basic数据库程序设计. 清华大学出版社. 2001年 [5] 陈豫龙, 何旭洪. Visual Basic 6.0数据库开发实例导航 人民邮电出版社. 2002年 [6] Visual Basic 6.0 时尚编程百例 机械工业出版社. 2001年 [7] 飞思科技产品研发中心. Access 2000 数据处理技术 电子工业出版社 2001年 第32页 33 酒店人事工资管理系统 大学毕业设计论文 课题 酒店人事工资管理系统 姓 名 学 科 专 业 ….. 指 导 教 师 第33页 34 酒店人事工资管理系统 前言 酒店人事工资管理系统是一个酒店不可缺少的部分,它的内容对于酒店的决策者和管理者来说都至关重要,所以酒店人事工资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事管理的效率,也是酒店的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套酒店人事工资管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。 摘要 酒店人事工资管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。 整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发。 论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说 明了系统设计的重点、设计思想、难点技术和解决方案。 关键字 Visual Basic 6.0 Access2000 控件 窗体 域 Abstract The system of managing census register file is a typical application of managing information system (know as MIS),which mainly includes building up data-base of back-end and developing the application interface of front-end. 第34页 35 酒店人事工资管理系统 The former required consistency and integrality and security of data. The later should make the application powerful and easily used. By looking up lots of datum, we selected Visual Basic presented by Microsoft because of its objective tools in Win32. VB offered a series of ActiveX operating a data-base. It can give you a short-cut to build up a prototype of system application. The prototype could be modified and developed till users are satisfied with it. Key Word Visual Basic 6.0、Access2000、ActiveX、Form、Field 第35页 36 酒店人事工资管理系统 目 录 前言 ........................................................................................................................................... 2 摘要 ........................................................................................................................................... 2 第一章 导论 ........................................................................................................................ 5 第二章 系统需求分析 ............................................................................................................ 6 2.1、系统设计背景介绍 ....................................................................................................... 6 2.2、系统功能分析 ............................................................................................................... 7 第三章 系统总体设计 ............................................................................................................ 8 3.1 系统设计 ....................................................................................................................... 9 3.2、数据库设计 ................................................................................................................. 12 第四章 详细设计工作 .......................................................................................................... 14 4.1 数据模块的创建 ........................................................................................................... 14 4.2 用户登录模块设计 ....................................................................................................... 14 4.3系统主界面设计 ........................................................................................................... 15 4.4部门信息管理 ............................................................................................................... 17 4.5职工信息管理 ............................................................................................................... 24 4.6考勤信息管理 ............................................................................................................... 25 4.7职工工资管理 ............................................................................................................... 26 4.8 系统维护 ...................................................................................................................... 27 第五章 系统功能测试 ............................................................................................................ 29 第六章 结束语 ........................................................................................................................ 30 第 36 页 37 酒店人事工资管理系统 第一章 导论 随着信息技术的飞速发展,特别是数据库技术的发展,计算机已经成为当今信息时代的关键工具。数据库技术是计算机应用技术中的一个重要组成部分,对于大量的数据,使用数据库来存储管理将比通过文件来存储管理更高效。数据库技术在经过几代变革以后,出现了以关系数据库产品为主流的数据库时代。Access 2000是微软公司推出的关系数据库产品。作为Microsoft的office套件产品之一,Access已经卖出了近700万份,成为世界上最流行的桌面数据库系统。Access与许多优秀的关系数据库一样,可以让你很容易地连接相关的信息而且还对其他的数据库系统有所补充。Visual Basic作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得简单多了。Visual Basic提供了强有力的数据库存取能力,将Windows的各种先进特性与强大的数据库管理功能有机地结合在一起。 本次毕业设计——酒店人事工资管理系统是运用ADO技术设计开发的,使用大量地SQL语句进行添加、查询、删除等操作。本系统使用Access 2000作为后台数据库,利用Visual Basic 6.0提供的数据库开发平台开发前台部分。 第 37 页 38 酒店人事工资管理系统 第三章 系统需求分析 2.1、系统设计背景介绍 管理信息系统就是我们常说的MIS (Management Information System),在强调管理,强调信息的现代社会中它变的越来越普及。而将信息管理系统与酒店自动化设备想结合,则是当今社会现代酒店的发展趋势。通过这样的管理方式,酒店的管理人员、技术人员、统计人员等各部门职工就能从大量烦琐的资料和数据中解脱出来,只需对自己需要的数据和内容进行必须的处理,而不用对每个环节都了如指掌。这在一定程度上能够节省人力物力,同时也大大加强了对数据处理的及时性和准确性。 本次的开发内容——酒店人事工资管理系统就是信息管理与现代化办公设备相结合的例子。开发本系统希望使人事管理人员可以从年复一年的输入、计算、统计等工作中解脱出来,由于人事方面的数据众多,输入、统计极为不便,输入量大,计算量大。这些工作都以人力来完成将费时费力,而且容易出现错误和疏漏。本系统一次录入信息后,就可以反复多次在不同的信息库中使用。所有输入的信息都将按所属部门、专业、考勤日期、工资日期等详细分类,使客户可以根据需要进行管理操作。 因此,该管理系统的目的就是利用计算机对复杂烦琐的数据进行存储和处理,并利用计算机与现代化办公设备的连接实时刷新数据,从而提高酒店的工作效率。 第 38 页 39 酒店人事工资管理系统 2.2、系统功能分析 热网管理系统主要有以下几项功能要求: *按不同权限登录系统。 *对其提供的部门资料情况进行添加、查询、修改和删除操作。 *对其提供的人员资料情况进行添加、查询、修改和删除操作。 *对其提供的人员考勤资料情况进行添加、查询、修改和删除操作,并可按考勤月份进行分类。 *对其提供的职工资资料情况进行添加、计算、查询、修改和删除操作,并可按工资月份进行分类。 *可添加新的用户,修改用户原有的用户名、密码,删除原有用户。 第 39 页 40 酒店人事工资管理系统 第三章 系统总体设计 管理信息系统就是我们常说的MIS (Management Information System),在强调管理,强调信息的现代社会中它变的越来越普及。而将信息管理系统与酒店自动化设备想结合,则是当今社会现代酒店的发展趋势。通过这样的管理方式,酒店的管理人员、技术人员、统计人员等各部门职工就能从大量烦琐的资料和数据中解脱出来,只需对自己需要的数据和内容进行必须的处理,而不用对每个环节都了如指掌。这在一定程度上能够节省人力物力,同时也大大加强了对数据处理的及时性和准确性。 本次的开发内容——酒店人事工资管理系统就是信息管理与现代化办公设备相结合的例子。开发本系统希望使人事管理人员可以从年复一年的输入、计算、统计等工作中解脱出来,由于人事方面的数据众多,输入、统计极为不便,输入量大,计算量大。这些工作都以人力来完成将费时费力,而且容易出现错误和疏漏。本系统一次录入信息后,就可以反复多次在不同的信息库中使用。所有输入的信息都将按所属部门、专业、考勤日期、工资日期等详细分类,使客户可以根据需要进行管理操作。 因此,该管理系统的目的就是利用计算机对复杂烦琐的数据进行存储和处理,并利用计算机与现代化办公设备的连接实时刷新数据,从而提高酒店的工作效率。 第 40 页 41 酒店人事工资管理系统 3.1 系统设计 3.1.1系统功能分析 *按不同权限登录系统。 *对其提供的部门资料情况进行添加、查询、修改和删除操作。 *对其提供的人员资料情况进行添加、查询、修改和删除操作。 *对其提供的人员考勤资料情况进行添加、查询、修改和删除操作,并可按考勤月份进行分类。 *对其提供的人职工资资料情况进行添加、计算、查询、修改和删除操作,并可按工资月份进行分类。 *可添加新的用户,修改用户原有的用户名、密码,删除原有用户。 第 41 页 42 酒店人事工资管理系统 3.1.2 用户功能模块设计 添 加 记 录 查 询 记 录 部门信息管理 修 改 记 录 删 除 记 录 添 加 记 录 查 询 记 录 员工信息管理 修 改 记 录 删 除 记 录 添 加 记 录 用 查 询 记 录 户 考勤信息管理 登 修 改 记 录 陆 删 除 记 录 添 加 记 录 查 询 记 录 员工工资管理 修 改 记 录 删 除 记 录 修 改 密 码 添 加 用 户 系 统 维 护 删 除 用 户 数 据 备 份 数 据 恢 复 退 出 系 统 图 3.1 第 42 页 43 酒店人事工资管理系统 3.1.3 数据流程图 用户登陆 是 是否管理员 是否录入数据 是否修改数据 是 是 修改数据 录入数据 是否进行查询 是 输入查询条件 是 是否删除数据 是 删除数据 退出系统 3.1.4 说明 本次设计主要利ADO技术,界面友好。能自动生产编号,根据 用户输入的数据检查其合法性,确保数据正确输入。登陆系统时对用 户的请求进行身份验证,经验证合法后允许用户登陆系统,进行相应 权限对数据的处理,本系统能对用户进行管理,能进行数据库备份和 恢复,确保数据的安全。本次设计选择了Access 2000作为后台数据 库,利用Visual Basic 6提供的数据库开发平台开发前台部分。 第 43 页 44 酒店人事工资管理系统 3.2、数据库设计 3.2.1在Access 2000数据库中创建表: 根据设计要求,需要5个数据表:部门基本情况表、职工基本信 息表、职工考勤信息表、职工工资信息表、口令信息表。这5个数据 表的结构如下各表: (1)部门基本情况表 字段名称 数据类型 长度 主键 允许空 部门编号 文本 6 True 否 部门名称 文本 30 是 备注 文本 255 是 (2)职工基本信息表 字段名称 数据类型 长度 主键 允许空 职工编号 文本 6 否 职工姓名 文本 10 否 性别 文本 2 是 出生日期 日期/时间 短日期 否 民族 文本 10 是 政治面貌 文本 10 是 最后学历 文本 10 是 所学专业 文本 20 是 联系电话 文本 20 是 毕业学校 文本 30 是 籍贯 文本 50 是 家庭住址 文本 50 是 进入公司时间 日期/时间 短日期 否 部门名称 文本 30 是 职务名称 文本 30 是 备注 文本 255 是 (3)职工考勤信息表 字段名称 数据类型 长度 主键 允许空 职工编号 文本 6 是 职工姓名 文本 10 是 考勤日期 文本 6 否 部门名称 文本 50 是 数字 是 出勤天数 整型 假日加班 数字 整型 是 其它加班 数字 整型 是 第 44 页 45 酒店人事工资管理系统 出差天数 数字 整型 是 补休天数 数字 整型 是 请假次数 数字 整型 是 旷工天数 数字 整型 是 迟到次数 数字 整型 是 早退次数 数字 整型 是 备注 文本 255 是 (4)职工工资信息表 字段名称 数据类型 长度 主键 允许空 职工编号 文本 6 是 职工姓名 文本 10 是 计发日期 文本 6 否 部门名称 文本 50 是 数字 是 底薪 单精度型 奖金 数字 单精度型 是 补贴 数字 单精度型 是 加班费 数字 单精度型 是 房帖费 数字 单精度型 是 扣考核 数字 单精度型 是 养老金 数字 单精度型 是 医疗保险 数字 单精度型 是 住房公积金 数字 单精度型 是 税前小计 数字 单精度型 是 所得税 数字 单精度型 是 实发工资 数字 单精度型 是 (5)口令信息表 字段名称 数据类型 长度 主键 允许空 用户名 文本 20 是 密码 文本 10 是 权限 文本 6 是 第 45 页 46 酒店人事工资管理系统 第四章 详细设计工作 4.1 数据模块的创建 将数据库连接、数据表和数据源等运行期不可见的组件都放在窗体设计界面上,虽然在调用时比较直观,但却为界面布局设计带来的麻烦,而且也不利于数据的统一管理。因此,在设计时,我选择使用ADO来控制管理数据库。 在程序模块中定义记录集,并在各个窗体中定义记录集变量,使输入数据能与数据库连接,并都用程序进行控制,这样不用数据控件都用代码控制大大提高了程序运行效率。 部分有关代码如下: Dim rc As New ADODB.Recordset '定义记录集变量 Cnndb.Open "provider=microsoft.jet.oledb.4.0;data source = " & App.Path & "\酒店人事工资管理系统.mdb" '确定数据库位置 Dim rc As New ADODB.Recordset '定义记录集变量 If rc.State = 1 Then rc.Close ‘判断当前表的状态是否打开,是则关闭 rc.Open SQL, Cnndb, 3, 2 ‘打开当前表 4.2 用户登录模块设计 设计思路 每个用户登录系统都须经过身份验证。只有用户名和密码相对应才能进入系统。因为在系统设置中已经对系统使用权限进行了规定,所以,在用户登录的同时也决定了用户对系统使用的权限。当登录者是管理员身份时,他可以使用系统提供的所有功能,并能对所有用户 第 46 页 47 酒店人事工资管理系统 进行管理。登录者是操作员可以使用所有对数据的编辑功能,而如果登录者是一般用户时只能利用系统进行资料查询功能。 4.3系统主界面设计 根据系统模块结构,建立系统主界面。用户登录到系统后进入的就是该界面,所有功能一目了然。当不同权限的用户登录到该界面时功能有所不同,其控制由“用户登录”界面控制。 在此界面中对用户的权限进行了设置,若是以一般用户登录时只能修改自己的密码且只能浏览所有的人事管理信息,以管理员身份进入时可以对所有一般用户的密码进行设置,还可删除一般用户~能对人事信息进行编辑删除,修改等操作 具体精彩代码如下: 第 47 页 48 酒店人事工资管理系统 Private Sub Command4_Click() Cmdsize = 4 PBm1.Visible = False PBm2.Visible = False LabBm1.Visible = False LabBm2.Visible = False PYg1.Visible = False PYg2.Visible = False LabYg1.Visible = False LabYg2.Visible = False PKq1.Visible = False PKq2.Visible = False LabKq1.Visible = False LabKq2.Visible = False If QuanXian = " (一般用户)" Then Pgz1.Visible = True Pgz1.Enabled = False Pgz2.Visible = True Labgz1.Visible = True Labgz1.Enabled = False Labgz2.Visible = True Else 第 48 页 49 酒店人事工资管理系统 Pgz1.Visible = True Pgz2.Visible = True Labgz1.Visible = True Labgz2.Visible = True End If Command1.Top = 0 Command2.Top = 47.958 Command3.Top = 47.958 * 2 Command4.Top = 47.958 * 3 End Sub 4.4部门信息管理 <1>编辑部门信息 作为编辑部门信息这一项,所实现的功能是对公司各部门资料信息的存储与编辑,部门信息包括:部门编号(两位)、部门名称、备注。部门编号与部门名称都具有唯一性,不能重复。作为部门信息与职工信息有着密切的关系,每一名职工都从属一个部门。 第 49 页 50 酒店人事工资管理系统 (1)数据添加 当操作员进入系统,根据设计要求,需要添加新的部门信息时,在编辑部门信息窗体上按添加按钮,便进入添加状态,文本框自动清空,添加按钮变为确定按钮,光标会停留在部门编号文本框上,此时系统已自动生成一个新的部门编号,只需输入部门名称和备注信息即可完成部门信息编辑操作,在按窗体上的确定按钮即可检查该部门信息是否合法并存入数据库,否则按取消按钮。再点击添加按钮,用户可再次添部门信息记录。 添加代码设置如下: Private Sub DataFresh(SQL As String) '进行数据表格控件的更新 Dim i As Integer Dim j As Integer Dim FBmbh As String Dim FBmmc As String Dim FBz As String FBmbh = Trim(Txtbmbh.Text) '保存当前各个输入框的值 FBmmc = Trim(Txtbmmc.Text) FBz = Trim(Txtbz.Text) MSFlexGrid1.Row = 0 '写入表头标题 MSFlexGrid1.Col = 1: MSFlexGrid1.Text = "部门编号" MSFlexGrid1.Col = 2: MSFlexGrid1.Text = " 部 门 名 称" MSFlexGrid1.Col = 3: MSFlexGrid1.Text = " 备 注" SQL = SQL & " order by 部门编号 asc" '向表格控件输入数据 PrintSQL = SQL If rc.State = 1 Then rc.Close 第 50 页 51 酒店人事工资管理系统 rc.Open SQL, Cnndb, 3, 2 If rc.RecordCount > 0 Then MSFlexGrid1.Rows = rc.RecordCount + 1 i = 1 rc.MoveFirst Do Until rc.EOF MSFlexGrid1.Row = i For j = 1 To 3 MSFlexGrid1.Col = j MSFlexGrid1.Text = "" & rc(j - 1) MSFlexGrid1.CellAlignment = 1 Next j rc.MoveNext i = i + 1 Loop Else MSFlexGrid1.Rows = 1 End If Dim n As Integer '清除表格控件最左边的选定当前行标志"?" For n = 0 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = "" Next n ChangeCheck = False Txtbmbh.Text = FBmbh '恢复当前各个输入框的值 Txtbmmc.Text = FBmmc Txtbz.Text = FBz 第 51 页 52 酒店人事工资管理系统 (2)数据查询 当操作员需要对某个部门进行查询时,可以在编辑部门信息窗体下部中找到查询按钮。先在对应的文本框中输入要进行数据查询的条件,输入完查询条件后,点击查询按钮进行确定,系统便会查询出满足条件的部门记录,并列到数据表格中,无满足条件的部门记录时,则弹出对话框提示“查无此记录~”。 查询代码: Private Sub DataFind() '数据查找 Dim M As Integer Dim SQL As String SQL = "" If Txtbmbh.Text <> "" Then SQL = SQL & "and 部门编号 ='" & Trim(Txtbmbh.Text) & "'" If Txtbmmc.Text <> "" Then SQL = SQL & "and 部门名称 ='" & Trim(Txtbmmc.Text) & "'" If Txtbz.Text <> "" Then SQL = SQL & "and 备注 ='" & Trim(Txtbz.Text) & "'" If SQL <> "" Then SQL = " select * from 部门基本情况 where 部门编号<>''" & SQL If rc.State = 1 Then rc.Close rc.Open SQL, Cnndb, 3, 2 If rc.EOF Then M = MsgBox("查无此记录", vbInformation) Exit Sub End If Call DataFresh(SQL) End If End Sub (3)数据修改 当操作员需要对某个部门进行修改时,可以在编辑部门信息窗体下部中找到修改按钮。由于修改记录不可能在大量的数据中盲目的寻找,因此数据修改应该与数据添加按钮结合使用,先用查询功能进行对要修改记录的搜索,再在数据表格中选中要修改的部门记录,便把 第 52 页 53 酒店人事工资管理系统 此部门记录读入文本框中,只需在文本框中直接进行数据修改便可, 修改完后按修改按钮进行确定,系统并对修改后的数据进行合法性检 测,合法则修改成功。 修改信息代码: Private Sub DataFresh(SQL As String) '进行数据表格控件的修改 Dim i As Integer Dim j As Integer Dim FBmbh As String Dim FBmmc As String Dim FBz As String FBmbh = Trim(Txtbmbh.Text) '保存当前各个输入框的值 FBmmc = Trim(Txtbmmc.Text) FBz = Trim(Txtbz.Text) MSFlexGrid1.Row = 0 '写入表头标题 MSFlexGrid1.Col = 1: MSFlexGrid1.Text = "部门编号" MSFlexGrid1.Col = 2: MSFlexGrid1.Text = " 部 门 名 称" MSFlexGrid1.Col = 3: MSFlexGrid1.Text = " 备 注" SQL = SQL & " order by 部门编号 asc" '向表格控件输入数据 PrintSQL = SQL If rc.State = 1 Then rc.Close rc.Open SQL, Cnndb, 3, 2 If rc.RecordCount > 0 Then MSFlexGrid1.Rows = rc.RecordCount + 1 i = 1 rc.MoveFirst Do Until rc.EOF MSFlexGrid1.Row = i For j = 1 To 3 第 53 页 54 酒店人事工资管理系统 MSFlexGrid1.Col = j MSFlexGrid1.Text = "" & rc(j - 1) MSFlexGrid1.CellAlignment = 1 Next j rc.MoveNext i = i + 1 Loop Else MSFlexGrid1.Rows = 1 End If Dim n As Integer '清除表格控件最左边的选定当前行标志"?" For n = 0 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = "" Next n ChangeCheck = False Txtbmbh.Text = FBmbh '恢复当前各个输入框的值 Txtbmmc.Text = FBmmc Txtbz.Text = FBz End Sub (4)数据删除 当操作员需要对某个或多个部门进行删除时,可以在编辑部门信息窗体下部中找到删除按钮。由于删除记录不可能在大量的数据中盲目的寻找,因此数据删除也有数据查找功能,先在对应的文本框中输入要进行数据删除的条件,再按删除按钮,系统便会列出满足删除条件的部门记录,并提示是否删除满足条件的全部部门记录,也可以一条一条删除部门记录,只要在数据表格中选中要删除的部门记录,在按一下删除按钮即可删除数据。 第 54 页 55 酒店人事工资管理系统 删除数据代码: Private Sub DataDel() '数据删除 Dim DelSQL As String Dim YesNo As Integer Dim SQL As String SQL = " select * from 部门基本情况 " If rc.State = 1 Then rc.Close rc.Open SQL, Cnndb, 3, 2 If rc.RecordCount > 0 Then YesNo = MsgBox("真的要删除表格里满足条件的所有记录吗,", vbYesNo + vbQuestion) If YesNo = vbYes Then DelSQL = "" If Txtbmbh.Text <> "" Then DelSQL = DelSQL & "and 部门编号 ='" & Trim(Txtbmbh.Text) & "'" If Txtbmmc.Text <> "" Then DelSQL = DelSQL & "and 部门名称 ='" & Trim(Txtbmmc.Text) & "'" If Txtbz.Text <> "" Then DelSQL = DelSQL & "and 备注 ='" & Trim(Txtbz.Text) & "'" If DelSQL <> "" Then DelSQL = " delete from 部门基本情况 where 部门编号<>''" & DelSQL Cnndb.Execute (DelSQL) Call DataFresh(" select * from 部门基本情况 ") Call TxtKong End If Else Call DataFresh(" select * from 部门基本情况 ") End If End If 第 55 页 56 酒店人事工资管理系统 End Sub (5)清空 清空按钮的作用可使所有文本框清空,方便用户进行其它操作。 在下面各界面设置操作与上相同不再重复说明。 清空输入信息代码: Private Sub CmdClear_Click() ChangeCheck = False Call TxtKong Dim n As Integer For n = 0 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = "" End Sub <2>浏览部门信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能从此窗体中了解各部门现有人数,这是在编辑部门信息中无法获得的信息。 4.5职工信息管理 <1>编辑职工信息 作为编辑职工信息这一项,所实现的功能是对公司职工资料信息的存储与编辑,方便对职工的分类与管理。职工编号具有唯一性,不能重复。在此窗体中输入的信息都进过合法性检测,判断职工编号是否出现重复,位数是否为6位(前两位为部门编号,后四位为职工自 第 56 页 57 酒店人事工资管理系统 身编号)等。 <2>浏览职工信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能根据部门名称、出生日期、来到公司工作的时间进行职工信息查询。 4.6考勤信息管理 <1>编辑考勤信息 作为编辑考勤信息这一项,所实现的功能是对公司职工考勤资 料信息的存储与编辑,方便对职工工作的考察。对职工进行按月 考勤,考核职工出勤、加班、迟到和早退等一些信息。 第 57 页 58 酒店人事工资管理系统 <2>浏览考勤信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能根据部门名称、考勤日期进行职工考勤信息查询。 4.7职工工资管理 <1>编辑工资信息 作为编辑工资信息这一项,所实现的功能是对公司职工工资信息的存储、计算与编辑,方便对职工工资的管理。对职工工资进行按月分组,计算职工各种工资项目和个人所得税款等一些信息。 第 58 页 59 酒店人事工资管理系统 <2>浏览工资信息 此窗体主要针对一般用户,只有浏览功能,因为一般用户只有浏览的权限。并能根据部门名称、工资计发日期进行职工工资信息查询。 4.8 系统维护 系统维护选项里包括密码设置、用户管理、数据备份和数据恢复四个选项。用户管理功能只对管理员开放,管理员能在用户管理窗体中添加新的用户,对已有的用户进行用户名和密码修改,或者将原有用户删除。当一般用户和操作员进入时,菜单栏中无该项。 <1> 密码设置 该界面比较简单,能让登陆的用户修改自己的密码,但不能更改用户名,此项对所有权限的用户都适用。一进入此窗体便会显示此用户名,在旧密码框中输入原始密码,在新密码框中输入想更改的新密码,再在密码确定中进行新密码确认,按更改按钮便可修改用户密码。 <2> 用户管理 第 59 页 60 酒店人事工资管理系统 该功能只针对管理员有效,用于对所有权限用户口令的管理。能对所有用户进行用户名、密码、权限修改,不但能更改而且还能进行用户添加和删除。 <3> 数据备份 数据备份就是复制数据库的数据文件到其他地方,一面在数据库遇到意外破坏的时候能够恢复数据库,从而减少破坏造成的损失。在此系统中只把数据库备份到软盘中。 图4.13 <4> 数据恢复 数据恢复就是将数据库备份文件复制到当前数据库上,一面在数据库遇到意外破坏的时候能够恢复数据库,从而减少破坏造成的损失。在此系统中只从软盘中恢复数据库文件。 图4.13 第 60 页 61 酒店人事工资管理系统 第五章 系统功能测试 四、 系统测试环境 40G硬盘 3( 硬件环境:PIII 800 128MB内存 4( 软件环境: 操作系统:WINDOWS 98 数据库:Access 2000 程序开发工具: Visual Basic 6.0 五、 测试内容 测试了部门信息管理----添加、查询、修改、删除 测试了职工信息管理----添加、查询、修改、删除 测试了考勤信息管理----添加、查询、修改、删除 测试了职工工资管理----添加、查询、修改、删除 测试了系统维护—密码设置、用户管理、数据备份、数据恢复 六、 测试结果 测试结果软件运行一切正常 第 61 页 62 酒店人事工资管理系统 第六章 结束语 本次的酒店人事工资管理系统是基于Visual Basic 的ADO技术设计的。选择了Access 2000作为后端开发工具,开发数据库功能,并选择了Visual Basic 6.0作为界面前台开发工具。在该系统开发中我通过建立数据库,以及对各种信息库的开发(如:添加、查询、修改、删除资料)及设计系统维护安全部分,完成了此次对酒店人事工资管理系统的设计。 在本次的开发过程中,我意识到最重要的环节在于对系统的流程、功能模块、框架结构等方面的把握和设计。在需求分析结束以后,我们对一个系统需要具有哪些功能已经有了一定的认识,而如何以一个简洁、合理的系统结构去实现用户要求的功能就成为系统开发的关键环节。在这方面我可以说是深有体会。由于有些急于求成,在对ADO技术不是很了解的情况下就开始着手程序开发,所以当有时间静下来仔细理一下思路的时候发现走了很大的弯路,可以说是整个思路和设计要求有着非常大的差异。值得庆幸的是,发现的比较及时,还有足够的时间让我转变思路,从头开始。因此,通过这次酒店人事工资管理系统的开发,我深刻认识到系统分析,以及对整个系统的总体设计的重要性。只有走好了这一步,整个系统的开发才能事半功倍,否则就会是“棋差一着,满盘皆输”。 同时,在这次的系统开发中我也看到了自己在新知识的学习,新工具的应用方面的不足。开始时,我对Visual Basic和Access可以说 第 62 页 63 酒店人事工资管理系统 只是停留在书面上的了解,还不够深入透彻。系统的开发过程也就成为我对这两种开发工具的深入透彻学习的过程。正因为这样,所以在设计过程中往往会被一些问题卡住。在原地徘徊了一段时间后,我通过查找参考资料,和同学交流,利用互联网向有经验的编程人员请教等各种方式试着克服在设计过程中遇到的困难。随着开发设计的深入,我也逐渐掌握了一部分编程技巧,了解了一些关于编程方面的规律,一些困难也就迎刃而解了。 总之,这次的酒店人事工资管理系统开发过程对我来说不仅仅是一次毕业设计,这也是我一次有意义的学习、提高的过程。通过这次系统开发,我不但初步掌握了两种数据库系统开发工具,也让我看到了自己知识结构、知识储备、学习和应用能力上的不足。我想,在今后的学习和工作中,我将针对这些发现的问题,不断努力和提高自身各方面的素质,为社会作出自己应有的贡献 本酒店人事工资管理系统的顺利完成,还要感谢王忠军老师的大力帮助与细心指导~ 第 63 页 64 酒店人事工资管理系统 参考文献 [1] 袭沛曾,陆慰民 ,杨志强. Visual Basic 程序设计教程(6.0版). 高等教育出版社. 2000年 [2] 肖建 ,薛凤武 , 吴静. Visual Basic 6.0 基础教程. 中国电力出版社. 2002年 [3] 张大年, 廖智勇 ,刘检锋. Visual Basic数据库应用开发与实例 . 清华大学出版社. 2002年 [4] 杨宗志. Visual Basic数据库程序设计. 清华大学出版社. 2001年 [5] 陈豫龙, 何旭洪. Visual Basic 6.0数据库开发实例导航 人民邮电出版社. 2002年 [6] Visual Basic 6.0 时尚编程百例 机械工业出版社. 2001年 [7] 飞思科技产品研发中心. Access 2000 数据处理技术 电子工业出版社 2001年 第 64 页 65 酒店人事工资管理系统 Anyway, I was here in Amber some years ago. Not doing much of anything. Just visiting and being a nuisance. Dad was still around, and when I noticed that he was getting into one of his grumpy moods, I decided it was time to take a walk. A long one. I had often noticed that his fondness for me tended to increase as an inverse function of my proximity. He gave me a fancy riding crop for a going-away present-to hasten the process of affection, I suppose. Still, it was a very nice crop-silver-chased, beautifully tooled-and I made good use of it. I had decided to go looking for an assemblage of all my simple pleasures in one small nook of Shadow. It was a long ride-I will not bore you with the details-and it was pretty far from Amber, as such things go. This time, I was not looking for a place where I would be especially important. That can get either boring or difficult fairly quickly, depending on how responsible you want to be. I wanted to be an irresponsible nonentity and just enjoy myself. Texorami was a wide open port city, with sultry days and long nights, lots of good music, gambling around the clock, duels every morning and in-between mayhem for those who couldn't wait. And the air currents were fabulous. I had a little red sail plane I used to go sky surfing in, every couple of days. It was the good life. I played drums till all hours in a basement spot up the river where the walls sweated almost as much as the customers and the smoke used to wash around the lights like streams of milk. When I was done playing I'd go find some action, women, or cards, usually. And that was it for the rest of the night. Damn Eric, anywayl That reminds me again . . . He once accused me of cheating at cards, did you know that? And that's about the only thing I wouldn't cheat at. I take my card playing seriously. I'm good and I'm also lucky. Eric was neither. The trouble with him was that he was good at so many things he wouldn't admit even to himself that there were some things other people could do better. If you kept beating him at anything you had to be cheating. He started a nasty argument over it one night-could have gotten serious-but Gerard and Caine broke it up. Give Caine that. He took my part that time. Poor guy . . . Hell of a way to go, you know? His throat . . . Well, anyhow, there I was in Texorami, making music and women, winning at cards and jockeying around the sky. Palm trees and night-blooming wallflowers. Lots of good port smells-spices, coffee, tar, salt-you know. Gentlefolk, merchants, and peons-the same straights as in most other places. Sailors and assorted travelers passing in and out. Guys like me living around the edges of things. I spent a little over two years in Texorami, happy. Really. Not much contact with the others. Sort of postcard like hellos via the Trumps every now and then, and that was about it. Amber was pretty much off my mind. All this changed one night when I was sitting there with a full house and the guy across from me was trying to make up his mind whether or not I was bluffing. The Jack of Diamonds began talking to me. Yes, that is how it started. I was in a weird frame of mind anyway. I had just finished a couple very hot sets and was still kind of high. Also, I was physically strung out from a long day's gliding and not much sleep the night before. I decided later that it must be our mental quirk associated with the Trumps that made me see it that way when someone was trying to reach me and I had cards in my hand-any cards. Ordinarily, of course, we get the message empty-handed, unless we are doing the calling. It could have been that my subconscious-which was kind of footloose at the time-just seized on the available props out of habit Later, though, I had cause to wonder. Really, I just don't know. The Jack said, "Random." Then its face blurred and it said, "Help me." I began getting a feel of the personality by then, but it was weak. The whole thing was very weak. Then the face rearranged itself and I saw that I was right. It was Brand. He looked like hell, and he seemed to be chained or tied to something. "Help me," he said again. "I'm here," I said. "What's the matter?" ". . . prisoner," he said, and something else that I couldn't make out. "Where?" I asked. He shook his head at that. "Can't bring you through," he said. "No Trumps, and I am too weak. You will have to come the long way around...." I did not ask him how he was managing it without my Trump. Finding out where he was seemed of first importance. I asked him how I could locate him. "Look very closely," he said. "Remember every feature. I may only be able to show you once. Come armed, too. . . ." Then I saw the landscape-over his shoulder, out a window, over a battlement, I can't be sure. It was far from Amber, somewhere where the shadows go mad. Farther than I like to go. Stark, with shifting colors. Fiery. Day without a sun in the sky. Rocks that glided like sailboats across the land. Brand there in some sort of tower-a small point of stability in that flowing scene. I remembered it, all right. And I remembered the presence coiled about the base of that tower. Brilliant. Prismatic. Some sort of watch-thing, it seemed-too bright for me to make out its outline, to guess its proper size. Then it all just went away. Instant off. And there I was, staring at the Jack of Diamonds again, with the guy across from me not knowing whether to be mad at my long distraction or concerned that I might be having some sort of sick spell. I closed up shop with that hand and went home. I lay stretched out on my bed, smoking and thinking. Brand had still been in Amber when I had departed. Later, though, when I had asked after him, no one had any idea as to his whereabouts. He had been having one of his melancholy spells, had snapped out of it one day and ridden off. And that was that. No messages either-either way. He wasn't answering, he wasn't talking. I tried to figure every angle. He was smart, damn smart. Possibly the best mind in the family. He was in trouble and he had called me. Eric and Gerard were more the heroic types and would probably have welcomed the adventure. Caine would have gone out of curiosity, I think. Julian, to look better than the rest of us and to score points with Dad. Or, easiest of all, Brand could have called Dad himself. Dad would have done something about it. But he had called me. Why? It occurred to me then that maybe one or more of the others had been responsible for his circumstances. If, say, Dad was beginning to favor him . . . Well. You know. Eliminate the positive. And if he did call Dad, he would look like a weakling. So I suppressed my impulse to yell for reinforcements. He had called me, and it was quite possible that I would be cutting his throat by letting anyone back in Amber in on the fact that he had gotten the message out. Okay. What was in it for me? 第 65 页 66 酒店人事工资管理系统 If it involved the succession and he had truly become fair-haired, I figured that I could do a lot worse than give him this to remember me by. And if it did not . . . There were all sorts of other possibilities. Perhaps he had stumbled onto something going on back home, something it would be useful to know about. I was even curious as to the means he had employed for bypassing the Trumps. So it was curiosity, I'd say, that made me decide to go it alone and try to rescue him. I dusted off my own Trumps and tried reaching him again. As you might expect, there was no response. I got a good night's sleep then and tried one more time in the morning. Again, nothing. Okay, no sense waiting any longer. I cleaned up my blade, ate a big meal, and got into some rugged clothes. I also picked up a pair of dark, polaroid goggles. Didn't know how they would work there, but that warden-thing had been awfully bright-and it never hurts to try anything extra you can think of. For that matter, I also took a gun. I had a feeling it would be worthless, and I was right. But, like I said, you never know till you try. The only person I said good-bye to was another drummer, because I stopped to give him my set before I left. I knew he'd take good care of them. Then I went on down to the hangar, got the sail plane ready, went aloft, and caught a proper current. It seemed a neat way to do it. I don't know whether you've ever glided through Shadow, but-No? Well, I headed out over the sea till the land was only a dim line to the north. Then I had the waters go cobalt beneath me, rear up and shake sparkly beards. The wind shifted. I turned. I raced the waves shoreward beneath a darkening sky. Texorami was gone when I returned to the rivermouth, replaced by miles of swamp. I rode the currents inward, crossing and recrossing the river at new twists and kinks it had acquired. Gone were the piers, the trails, the traffic. The trees were high. Clouds massed in the west, pink and pearl and yellow. The sun phased from orange through red to yellow. You shake your head? The sun was the price of the cities, you see. In a hurry, I depopulate-or, rather, go the elemental route. At that altitude artifacts would have been distracting. Shading and texture becomes everything for me. That's what I meant about gliding it being a bit different. So, I bore to the west till the woods gave way to surface green, which quickly faded, dispersed, broke to brown, tan, yellow. Light and crumbly then, splotched. The price of that was a storm. I rode it out as much as I could, till the lightnings forked nearby and I feared that the gusts were getting to be too much for the little glider. I toned it down fast then, but got more green below as a result. Still, I pulled it out of the storm with a yellow sun firm and bright at my back. After a time, I got it to go desert beneath me again, stark and rolling. Then the sun shrank and strands of cloud whipped past its face, erasing it bit by bit. That was the shortcut that took me farther from Amber than I had been in a long while. No sun then, but the light remained, just as bright but eerie now, directionless. It tricked my eyes, it screwed up perspective. I dropped lower, limiting my range of vision. Soon large rocks came into view, and I fought for the shapes I remembered. Gradually, these occurred. The buckling, flowing effect was easier to achieve under these conditions, but its production was physically disconcerting. It made it even more difficult to judge my effectiveness in guiding the glider. I got lower than I thought I was and almost collided with one of the rocks. Finally, though, the smokes rose and flames danced about as I remembered them-conforming to no particular pattern, just emerging here and there from crevasses, holes, cave mouths. Colors began to misbehave as I recalled from my brief view. Then came the actual motion of the rocks-drifting, sailing, like rudderless boats in a place where they wring out rainbows. By then, the air currents had gone crazy. One updraft after another, like fountains, I fought them as best I could, but knew I could not hold things together much longer at that altitude. I rose a considerable distance, forgetting everything for a time while trying to stabilize the craft. When I looked down again, it was like viewing a free-form regatta of black icebergs. The rocks were racing around, clashing together, backing off, colliding again, spinning, arcing across the open spaces, passing among one another. Then I was slammed about, forced down, forced up-and I saw a strut give way. I gave the shadows their final nudge, then looked again. The tower had appeared in the distance, something brighter than ice or aluminum stationed at its base. That final push had done it. I realized that just as I felt the winds start a particularly nasty piece of business. Then several cables snapped and I was on my way down-like riding a waterfall. I got the nose up, brought it in low and wild, saw where we were headed, and jumped at the last moment. The poor glider was pulverized by one of those peripatetic monoliths. I felt worse about that than I did about the scrapes, rips, and lumps I collected. Then I had to move quickly, because a hill was racing toward me. We both veered, fortunately in different directions. I hadn't the faintest notion as to their motive force, and at first I could see no pattern to their movements. The ground varied from warm to extremely hot underfoot, and along with the smoke and occasional jets of flame, nasty-smelling gases were escaping from numerous openings in the ground. I hurried toward the tower, following a necessarily irregular course. It took a long while to cover the distance. Just how long, I was uncertain, as I had no way of keeping track of the time. By then, though, I was beginning to notice some interesting regularities. First, the larger stones moved at a greater velocity than the smaller ones. Second, they seemed to be orbiting one another-cycles within cycles within cycles, larger about smaller, none of them ever still. Perhaps the prime mover was a dust mote or a single molecule-somewhere. I had neither time nor desire to indulge in any attempt to determine the center of the affair. Keeping this in mind, I did manage to observe as I went, though, enough so that I was able to anticipate a number of their collisions well in advance. So Childe Random to the dark tower came, yeah, gun in one hand, blade in the other. The goggles hung about my neck. With all the smoke and confused lighting, I wasn't about to don them until it became absolutely necessary. Now, whatever the reason, the rocks avoided the tower. While it seemed to stand on a hill, I realized as I approached that it would be more correct to say that the rocks had scooped out an enormous basin just short of it. I could not tell from my side, however, whether the effect was that of an island or a peninsula. I dashed through the smoke and rubble, avoiding the jets of flame that leaped from the cracks and holes. Finally I scrambled up the slope, removing myself from the courseway. Then for several moments I clung at a spot just below any line of sight from the tower. I checked my weapons, controlled my breathing, and put on the goggles. Everything set, I went over the top and came up into a crouch. Yes, the shades worked. And yes, the beast was waiting. 第 66 页 67 酒店人事工资管理系统 It was a fright all right, because in some ways it was kind of beautiful. It had a snake body as big around as a barrel, with a head sort of like a massive claw hammer, but kind of tapered to the snout end. Eyes of a very pale green. And it was clear as glass, with very faint, fine lines seeming to indicate scales. Whatever flowed in its veins was reasonably clear, also. You could look right into it and see its organs-opaque or cloudy as the case might be. You could almost be distracted by watching the thing function. And it had a dense mane, like bristles of glass, about the head and collaring its gullet. Its movement when it saw me, raised that head and slivered forward, was like flowing water-living water, it seemed, a bedless river without banks. What almost froze me, though, was that I could see into its stomach. There was a partly digested man in it I raised the gun, aimed at the nearest eye, and squeezed the trigger. I already told you it didn't work. So I threw the gun, leaped to my left, and sprang in on its right side, going for its eye with my blade. You know how hard it can be to kill things built along reptilian lines. I decided immediately to try to blind the thing and hack off its tongue as the first order of business. Then, being more than a little fast on my feet, I might have any number of chances to lay in some good ones about the head until I decapitated it. Then let it tie itself in knots till it stopped. I was hoping, too, that it might be sluggish because it was still digesting someone. If it was sluggish then, I was glad that I hadn't stopped by earlier. It drew its head out of the path of my blade and snapped down over it while I was still off balance. That snout glanced across my chest, and it did feel as if I had been hit by a massive hammer. It knocked me sprawling. I kept on rolling to get out of range, coming up short near the edge of the embankment. I recovered my footing there while it unwound itself, dragged a lot of weight in my direction, and then reared up and cocked its head again, about fifteen feet above me. I know damn well that Gerard would have chosen that moment to attack. The big bastard would have strode forward with that monster blade of his and cut the thing in half. Then it probably would have fallen on him and writhed all over him, and he'd have come away with a few bruises. Maybe a bloody nose. Benedict would not have missed the eve. He would have had one in each pocket by then and be playing football with the head while composing a footnote to Clausewitz. But they are genuine hero types. Me, I just stood there holding the blade point upward, both hands on the hilt, my elbows on my hips, my head as far back out of the way as possible. I would much rather have run and called it a day. Only I knew that if I tried it, that head would drop down and smear me. Cries from within the tower indicated that I had been spotted, but I was not about to look away to see what was going on. Then I began cursing the thing. I wanted it to strike and get it over with, one way or the other. When it finally did, I shuffled my feet, twisted my body, and swung the point into line with my target. My left side was partly numbed by the blow, and I felt as if I had been driven a foot into the ground. Somehow I managed to remain upright. Yes, I had done everything perfectly. The maneuver had gone exactly as I had hoped and planned. Except for the beast's part. It wasn't cooperating by producing the appropriate death throes. In fact, it was beginning to rise. It took my blade with it, too. The hilt protruded from its left eye socket, the point emerged like another bristle amid the mane on the back of its head. I had a feeling that the offensive team had had it. At that moment, figures began to emerge-slowly, cautiously-from an opening at the base of the tower. They were armed and ugly-looking, and I had a feeling that they were not on my side of the disagreement. Okay. I know when it is time to fold and hope for a better hand another day. "Brand!" I shouted. "It's Random! I can't get through! Sorry!" Then I turned, ran, and leaped back over the edge, down into the place where the rocks did their unsettling things. I wondered whether I had chosen the best time to descend. Like so many things, the answer was yes and no. It was not the sort of jump I would make for many reasons other than those which prevailed. I came down alive, but that seemed the most that could be said for it. I was stunned, and for a long while I thought I had broken my ankle. The thing that got me moving again was a rustling sound from above and the rattle of gravel about me. When I readjusted the goggles and looked up, I saw that the beast had decided to come down and finish the job. It was winding its phantom way down the slope, the area about its head having darkened and opaqued since I had skewered it upstairs. I sat up. I got to my knees. I tried my ankle, couldn't use it. Nothing around to serve as a crutch, either. Okay. I crawled then. Away. What else was there to do? Gain as much ground as I could and think hard while I was about it. Salvation was a rock-one of the smaller, slower ones, only about the size of a moving van. When I saw it approaching, it occurred to me that here was transportation if I could make it aboard. Maybe some safety, too. The faster, really massive ones appeared to get the most abuse. This in mind, I watched the big ones that accompanied my own, estimated their paths and velocities, tried to gauge the movement of the entire system, readied myself for the moment, the effort. I also listened to the approach of the beast, heard the cries of the troops from the edge of the bluff, wondered whether anyone up there was giving odds on me and what they might be if they were. When the time came, I went. I got past the first big one without any trouble, but had to wait for the next one to go by. I took a chance in crossing the path of the final one. Had to, to make it in time. I made it to the right spot at the right moment caught on to the holds I had been eyeing, and was dragged maybe twenty feet before I could pull myself up off the ground. Then I hauled my way to its uncomfortable top, sprawled there, and looked back. It had been close. Still was, for that matter, as the beast was pacing me, its one good eye following the spinning big ones. From overhead I heard a disappointed wail. Then the guys started down the slope, shouting what I took to be encouragement to the creature. I commenced massaging my ankle. I tried to relax. The brute 第 67 页 68 酒店人事工资管理系统 crossed over, passing behind the first big rock as it completed another orbit. How far could I shift through Shadow before it reached me? I wondered. True, there was constant movement, a changing of textures.. . The thing waited for the second rock, slithered by behind it, paced me again, drew nearer. Shadow, Shadow, on the wing- The men were almost to the base of the slope by then. The beast was waiting for its opening-the next time around-past the inner satellite. I knew that it was capable of rearing high enough to snatch me from my perch. -Come alive and smear that thing? As I spun and glided I caught hold of the stuff of Shadow, sank into the feel of it, worked with the textures, possible to probable to actual, felt it coming with the finest twist, gave it that necessary flip at the appropriate moment... It came following me! They had even gained some. Naturally, I got angry. To hell with flight! They were asking for it, and it was time they got it one came up and joined them. They were not all that good, but it was getting crowded and there were a lot of points and sharp edges straying about me. I kept parrying and moving, trying to get them to block one another, get in each other's way. I was partly successful, and when I had the best lineup I thought I was going to get, I rushed them, taking a couple of cuts-I had to lay myself open a bit to do it-but splitting one skull for my pains. He went over the edge and took the second one with him in a tangle of limbs and gear. Unfortunately, the inconsiderate lout had carried off my blade, snagged in some bony cleft or other he had chosen to interpose when I swung. It was obviously my day for losing blades, and I wondered if my horoscope would have mentioned it if I had thought to look before I'd set out. Anyhow, I moved quickly to avoid the final guy's swing. In doing so, I slipped on some blood and went skidding toward the front of the rock. If I went down that way, it would plow right over me, leaving a very flat Random there, like an exotic rug, to puzzle and delight future wayfarers. I clawed for handholds as I slid, and the guy took a couple of quick steps toward me, raising his blade to do unto me as I had his buddy. I caught hold of his ankle, though, and it did the trick of braking me very nicely-and damned if someone shouldn't choose that moment to try to get hold of me via the Trumps. "I'm busyl" I shouted. "Call back later!" and my own motion was arrested as the guy toppled, clattered, and went sliding by. I tried to reach him before he fell to rugdom, but I was not quite quick enough. I had wanted to save him for questioning. Still, my ? unegged beer was more than satisfactory. I headed back top and center to observe and muse. The survivors were still following me, but I had a sufficient lead. I did not at the moment have to worry about another boarding party. Good enough. I was headed toward the mountains once again. The sun I had conjured was beginning to bake me. I was soaked with sweat and blood. My wounds were giving me trouble. I was thirsty. Soon, soon, I decided, it would have to rain. Take care of that before anything else. So I began the preliminaries to a shift in that direction: clouds massing, building, darkening. . . . I drifted off somewhere along the line, had a disjointed dream of someone trying to reach me again but not making it. Sweet darkness.. . . . . . . . . 第 68 页
本文档为【毕业设计-酒店人事工资管理系统—论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_833902
暂无简介~
格式:doc
大小:467KB
软件:Word
页数:80
分类:工学
上传时间:2017-10-21
浏览量:27