课程名称题目名称学生学院课 程 设 计
数据库应用课程设计 工资管理系统 年 月 日
摘 要
本报告介绍了一个使用Visual Basic为前台,SQL Server 2000为后台,用于工资管理的数据库管理系统。该系统能够实现对部门信息、管理员信息、员工信息、工资信息和考勤信息的管理功能,即对这些信息的编辑、查询。
报告首先分析了用户的需求,设计出了系统的功能结构图,然后对系统进行了概念结构设计,设计出了系统的局部ER图和全局ER图,根据全局ER图对系统进行了逻辑结构设计,确定出系统的数据结构即关系模式,根据这些关系模式,在SQL Server 2000中,创建了部门信息、管理员信息、员工信息、工资信息和考勤信息等五张基本表对象;同时,利用这些表对象,创建了满足用户需求的各种查询对象;实现了在SQL Server环境下的工资管理系统功能。最后,使用数据库连接技术,以设计完成的SQL Server 2000数据库文件为后台,VB界面为前台,设计了系统登录窗体和员工基本信息管理窗体,实现了工资管理系统的部分功能。
关键词:数据库,SQL Server 2000,工资管理
小组情况
本系统是通过小组全体成员的共同努力,经过分工合作完成的,具体情况如下: 1.合作的工作
需求分析、概念结构设计、逻辑结构设计和报告的草稿通过小组讨论完成。 2.分工
在数据库系统的总体方案确定之后,小组成员开始分工,独立完成不同的模块及工作。
目 录
1 需求分析 ............................................................. 错误!未定义书签。
系统设计的意义 ..................................................... 错误!未定义书签。 系统功能 ........................................................... 错误!未定义书签。 系统数据 .......................................................... 错误!未定义书签。 2 概念结构设计 ......................................................... 错误!未定义书签。
实体分析及其局部ER图 .............................................. 错误!未定义书签。 实体之间的联系及其ER图 ........................................... 错误!未定义书签。 系统全局ER图 ...................................................... 错误!未定义书签。 3 逻辑结构设计 ......................................................... 错误!未定义书签。 4 数据库设计 ............................................................ 错误!未定义书签。
创建表对象 ......................................................... 错误!未定义书签。 创建表之间的关系 ................................................... 错误!未定义书签。 创建视图 ........................................................... 错误!未定义书签。 创建存储过程 ....................................................... 错误!未定义书签。 创建触发器 ......................................................... 错误!未定义书签。 5前台界面设计 .......................................................... 错误!未定义书签。
系统工程结构设计, ................................................. 错误!未定义书签。 登录模块设计 ....................................................... 错误!未定义书签。
界面设计 ....................................................... 错误!未定义书签。 连接设计 ....................................................... 错误!未定义书签。 登陆窗体代码设计 ............................................... 错误!未定义书签。 主窗体(MDIForm1)模块设计 .......................................... 错误!未定义书签。 总结 .................................................................... 错误!未定义书签。 致谢 .................................................................... 错误!未定义书签。 参考文献 ................................................................ 错误!未定义书签。
1 需求分析
系统设计的意义
随着信息化技术的发展及普及,工资管理模式也发生了巨大的变化,由
原来的手工管理模式逐步转变为信息化管理,通过信息化管理,将管理员、员工及部门等信息集成在一个系统中,使公司能够方便地处理工资发放操作,也使公司及相关人员能够在第一时间掌握工资信息及员工情况,并根据这些信息做出今后的管理决策计划。 系统功能
为了使本小组设计的系统能够尽可能满足工资管理的实际需求,在进行系统设计之前,小组全体成员通过查资料、亲临公司进行调查和小组多次激烈的讨论,最后确定本系统应该具有如下的功能:
部门信息管理:能够对部门的信息进行有效的管理,其中包括部门信息的添加、修改和删除,以及部门信息查询。
员工信息管理:能够对员工的信息进行有效的管理,其中包括员工信息的添加、修改和删除,以及员工信息查询。
工资管理:能够对聘任信息进行有效的管理,其中包括聘任信息的添加、修改和删除,以及聘任信息查询。
考勤管理:能够对考勤信息进行有效的管理,其中包括考勤信息的添加、修改和删除,以及考勤信息查询。
管理员管理:能够对管理员信息进行有效的管理,其中包括管理员信息的添加、修改和删除,以及管理员信息查询。
上述的需求分析可以总结为如图1-1所示的功能结构图。
工资管理系统
部门管理 员工管理 工资管理 考勤管理 管理员 部门信息编辑部门信息查询员工信息编辑员工信息查询工资信息编辑工资信息查询 考勤信息编辑考勤信息查询
系统数据
图1-1 工资管理功能结构图
数据库的核心是数据,相互关联的数据构成数据结构。对于数据库设计来说,
通常使用数据字典对各类数据及其集合进行描述,数据字典是进行数据收集和数据分析所获得的主要成果。下面将根据系统功能对本系统设计的数据项和数据结构分别进行分析。
本系统涉及部门、员工和管理员三个对象,所以系统涉及的数据项由这三个对象本身的属性和它们之间关系的属性确定。下面将分别讨论他们的数据结构和数据项。 (1)员工
名称:公司员工
含义:员工是工资管理系统的主要数据结构,包含了员工的所有信息。既然员工属于系统管理的对象范畴,应具有统一的编号,每一位员工给一个编号,同一部门的员工有多个,故员工编号是员工的一个重要属性。
组成:员工对象分别由员工编号、员工姓名、性别、部门名称、出生日期、籍贯、员工职位、住址、联系电话九个数据项组成。 各数据项的含义如下:
数据项:员工编号
含义:员工编号,能够唯一标识每一位员工。 别名:员工编号 数据类型:字符型 长度:10 数据项:员工姓名 含义:员工所取的名字 别名:姓名 数据类型:字符型 长度:10 数据项:性别 含义:员工的性别 数据类型:字符型 长度:10 数据项:部门名称 含义:员工所属部门 别名:部门名称 数据类型:字符型 长度:20 数据项:出生日期 含义:员工的出生年月日 别名:员工出生日期 数据类型:时间日期型 长度:8 数据项:籍贯 含义:员工的出生地 别名:员工籍贯 数据类型:字符型 长度:10
数据项:员工职位 含义:员工所任职的岗位 别名:职位 数据类型:字符型 长度:10 数据项:住址 含义:员工的住址 别名:员工家庭地址 数据类型:字符型 长度:40 数据项:联系电话 含义:员工的联系电话 别名:员工联系方式 数据类型:字符型 长度:11
(2)部门
名称:部门名称 含义:企业的部门
组成:部门对象分别由部门编号、部门名称、人数组成。 各数据项的含义如下: 数据项:部门编号
含义:部门编号能够唯一确定部门的所有信息。 别名:编号 数据类型:字符型 长度:10 数据项:部门名称 含义:部门的名称 别名:名称 数据类型:字符型
长度:20 数据项:人数 含义:部门的人数 数据类型:int 长度:4 (3) 管理员
名称:管理员
含义:在系统中起非常重要的作用,负责管理系统。
组成:管理员对象分别由管理员编号、管理员姓名和密码组成。 各数据项的含义如下: 数据项:管理员编号
含义:系统为每一位管理员进行统一编号管理,编号能够唯一确定管理员对象。 别名:工号 数据类型:字符型 长度:10
数据项:管理员姓名 含义:管理员的姓名 数据类型:字符型 长度:10 数据项:密码
含义:管理员登录系统的安全编码,最初由系统分配一个登录密码,但管理员一旦登录系统,就可以修改密码了。 数据类型:字符型 长度:6 (4)工资
名称:工资
含义:员工在公司上班,所获得的工资报酬。
组成:日期、基本工资、工龄工资、地区补贴组成。
各数据项的含义如下:
数据项:日期 含义:发工资的日期 数据类型:时间日期型 长度:8
数据项:员工编号
含义:员工编号,能够唯一标识每一位员工。 别名:员工编号 数据类型:字符型 长度:10 数据项:员工姓名 含义:员工所取的名字 别名:姓名 数据类型:字符型 长度:10 数据项:部门名称 含义:员工所属部门 别名:部门名称 数据类型:字符型 长度:20 数据项:基本工资
含义:员工所得的基本工资 数据类型:int 长度:4
数据项:工龄工资
含义:参与该公司工作的时间所额外获得的工资数据类型:int 长度:4
数据项:地区补贴
含义:补贴给员工的地区差额 数据类型:int 长度:4 (5)考勤
名称:员工考勤
含义:员工经过考勤之后才能够进行有效管理,考勤由管理员完成,员工考勤时会产生旷工 、请假 、迟到、 早退等属性。
组成:员工编号、考勤日期、员工姓名、旷工 、请假 、迟到、 早退。
各数据项的含义如下: 数据项:员工编号
含义:员工编号,能够唯一标识每一位员工 数据类型:字符型 长度:10 数据项:考勤日期
含义:对员工每月进行考勤 数据类型:时间日期型 长度:8
数据项:员工姓名 含义:员工所取的名字 别名:姓名 数据类型:字符型 长度:10 数据项:旷工
含义:记录每一个员工的旷工次数 数据类型:int 长度:4 数据项:请假
含义:记录每一个员工的请假次数
数据类型:int 长度:4 数据项:迟到
含义:记录每一个员工的迟到次数
数据类型:int
长度:4 数据项:早退
含义:记录每一个员工的请假次数
数据类型:int 长度:4
2 概念结构设计
概念结构设计就是将需求分析阶段得到的用户需求抽象为数据库的概念结构,是逻辑结构设计的基础。本论文使用ER图来描述系统的概念结构。在实际设计过程中,首先分析系统中以实体为基本单位的局部ER图,然后分析两两实体之间的联系,画出两两实体联系的局部ER图,再将两两实体之间联系的ER图作为基本单位,画出多个实体之间联系的ER图,依次类推,最后将各局部E-R图合并成全局E-R图,下面将针对该系统分别进行分析。 实体分析及其局部ER图
通过需求分析得知工资管理系统的研究对象有部门、员工、公司和管理员四 个对象,也就是四个实体。 (1)部门
对于工资管理系统来说,比较重要的部门信息是部门编号、部门名称、人数。
其中部门的编号能够唯一确定某个部门的所有信息,故在该实体中定义部门编号为实体标识符。部门的ER图如2-1所示。
(2) 管理员
工资管理系统中的所有管理工作由管理员来完成,管理员在系统中发挥着非
图2-1部门ER图
部门编号 部门名称 人数 部门 常重要的作用,故系统必须对管理员进行统一管理,给每个管理员设置管理员编号和密码。本系统中管理员实体的属性为管理员编号、管理员姓名和密码,其中,管理员编号能够唯一标识管理员的各个属性,所以定义管理员编号为管理员实体的标识符。管理员的ER图如2-2所示。
图2-2 管理员ER图
管理员编号 管理员姓名 密码 管理员
(3)员工
在员工实体中,包含员工编号、员工姓名、性别、部门名称、出生日期、籍
贯、员工职位、住址、联系电话九个属性。其中,编号能够唯一标识每一位员工,故定义编号为员工实体的标识符。员工实体的ER图如2-3所示。
图2-3员工ER图
出生日期 员工职位 员工 性别 联系电话 籍贯 员工姓名 员工编号 住址 部门名称 (4)公司
在工资管理系统里,公司信息由名称、地址和负责人。其中公司的名称能够
唯一确定公司的所有信息,故在该实体中定义公司名称为实体标识符。公司的ER图如2-4所示。
图2-4公司ER图
负责人 名称 地址 公司
实体之间的联系及其ER图 (1)员工与部门联系的ER图
企业中的每一位员工均由某个部门管理,一个部门管理多个员工,每一位员工仅能由一个部门管理,故部门和员工之间联系类型是1:N的联系。部门在管理员工的过程中将产生部门编号、部门名称和人数等属性,由于在部门里,部门可能会出现姓名相同的员工,为了方便灵活的管理每个员工,需要为每个员工建立一个员工编号。员工和部门联系的ER图如图2-5所示。
属于 部门编号 部门名称 人数 部门 1
联系电话
N 员工 出生日期 员工编号 员工姓名 籍贯 住址 员工职位 性别 图 2-5 部门与员工的联系
(2)公司和员工联系的ER图
应聘者一旦成为公司员工之后,就可以对员工进行考勤管理了。随后公司与
员工之间通过工资建立联系,两个实体之间是1:N联系。在这过程中,产生了考勤和工资两个联系。ER图如图2-6所示。
名称 地址 早退 旷工 考勤日期 请假 迟到 员工姓名 住址 N 1 员工 员工职位 籍贯
公司 1 考勤 N 负责人 工龄工资 地区补贴 工资 性别 员工编号 出生日期 基本工资 日期 图2-6 公司与员工的联系
系统全局ER图 2.3.1 属性整合
在整合的过程中,各局部ER图的属性发生如下的冲突,所以需要重新进行
定义。
(1)编号:编号属性分别在四处出现,所以要进行重新定义。根据数量所处的位置,分别定义为部门编号、员工编号、考勤编号、管理员编号。 2.3.2 关系整合
全局ER图是创建数据结构的基础,故由局部ER图向全局ER图整合的过程
中,应该根据系统的功能和实际操作需要做取舍。
(1)在公司和员工两实体联系中,产生考勤与工资的联系。。
(2)员工是系统一个非常重要的实体,员工编号又是员工一个非常重要的属性,该属性正好是员工实体的主键,故通过该属性可以建立员工和部门之间的联系。
将图2-5、2-6合并,同时对各个属性和关系进行整合,就得到系统全局
ER图。在本工资管理系统中,管理员不是系统研究的重点内容,为了简化系统,故在全局ER图中,可以不考虑管理关系,在系统中仅将管理员作为独立的对象处理。整合后的全局ER图如图2-7所示。
名称 负责人 早退 地址 旷工 考勤日期 住址 迟到 请假 考勤 1 N 性别 工资 工龄工资 地区补贴 基本工资 日期 属于 1 部门 员工姓名
员工 N 员工职位 籍贯 员工编号 出生日期 公司 人数 管理员姓名 部门名称 部门编号 管理员编号 密码 管理员 图2-7 全局ER图
整合后各实体及其联系的属性如下: 管理员(管理员编号,管理员姓名,密码); 部门(部门编号,部门名称,人数,);
员工(员工编号,员工姓名,性别,出生日期,籍贯,员工职位,住址); 考勤(员工编号,考勤日期,请假,早退,迟到,旷工); 工资(员工编号,日期,地区补贴,工龄工资,基本工资)。 公司(名称,地址,负责人);
说明:由于公司只有一个,而且其所有属性都是确定的,所以不必考虑公司实体。
3 逻辑结构设计
逻辑结构设计的目的是将全局概念模型(ER图)转换成DBMS支持的概念模式或关系模式(或者称为数据结构)。本系统选用SQL Server 2000 作为后台数据库,该数据库属于关系型数据库,即使用表结构表示系统中的所有实体及其联系。
要在SQL Server 2000中实现图2-7所示的全局ER图(系统概念结构),必须将其转换成关系模式。从ER图出发,导出关系模式数据结构遵循如下的两个原则:
第一,对ER图中的每个“实体”,都应该转换成一个关系,该关系内至少要包含对应实体的属性,并根据语义关系确定关系的主键。
第二,对ER图中的“联系”,要根据实际联系的方式及数据处理的需要,或者将其作为独立的关系来处理,或者将关系的属性(如果有)纳入相关联的实体的属性中。
如果实体之间是1:N联系,且联系没有产生对系统来说非常重要的属性,一般将1端的主键纳入N端的实体关系中,但是如果联系中产生对系统比较重要的属性,且需要独立研究该属性,则要将联系转换成一个独立的关系。
如果实体之间的联系是M:N联系,且联系中的属性多或者比较重要,则要将联系作为独立的关系来处理,且在关系中要包含联系的属性和与联系相关联的实体的属性。根据这个原则,将图2-7与2-8转换成图3-1所示的数据结构。 1 考勤(员工编号、考勤日期、员工姓名、请假、旷工、迟到、早退) 考勤 员工 工资 N N 员工(员工编号、员工姓名、部门名称、出生日期、 性别、员工职位、籍贯、住址、联系电话) ) 公司 工资(员工编号、日期、员工姓名、基本工资、地区补贴、工龄工资) 公司(名称、地址、负责人) 管理员 属于 1 部门 部门(部门编号、部门名称、人数)
管理员((管理员编号、管理员姓名、密码) 图3-1 将全局ER图转换成数据结构
整合后各实体及其联系的属性如下: 管理员(管理员编号,管理员姓名,密码); 部门(部门编号,部门名称,人数,);
员工(员工编号,部门名称,员工姓名,性别,出生日期,籍贯,员工职位,
住址,联系电话);
考勤(员工编号,考勤日期,员工姓名,请假,早退,迟到,旷工); 工资(员工编号,日期,员工姓名,地区补贴,工龄工资,基本工资)。 公司(名称,地址,负责人);
说明:由于公司只有一个,而且其所有属性都是确定的,所以不必考虑公司实体。
4 数据库设计
本系统使用SQL Server 2000作为后台数据库,同时也使用Visual Basic设计了一个前台界面,因此,在SQL Server中,除了创建基本表对象之外,还创建了视图。
创建表对象
表对象是数据库最基本的对象,数据库中所有其它的对象都是基于表对象来创建的。表对象要根据逻辑结构设计阶段设计的关系模式来创建。在创建表结构之前,首先应该确定表中各字段的数据类型和约束,然后在设计视图或SQL视图中创建表对象。下面分别使用表格来表示各个表对象的数据类型和约束。 (1) 系统管理员
在管理员对象的三个字段中,管理员编号能够唯一标识一个管理员,所以将
该字段定义为主键,其它两个字段在管理员表中必不可少,所以定义为非空约束。表4-1列出了管理员表结构的数据信息。
列名 管理员编号 姓名 密码 数据类型 char(10) char(10) varchar(6) 约束情况 主键 非空 非空 表4-1 管理员表结构
(2) 部门信息表
部门编号能够唯一标识部门的所有信息,故定义为主键,部门名称和部门人
数字段不能为空,表4-2列出了部门表结构的数据信息。
列名 部门编号 部门名称 人数 数据类型 char(10) char(20) smallint 约束情况 主键 非空 非空 表4-2 部门表结构
(3)员工信息表
员工是收发工资的主要对象,在员工关系中定义员工编号为主键,其余为非
空约束,表4-3列出了员工信息表结构的数据信息。
列名 员工编号 员工姓名 性别 部门名称 出生日期 籍贯 员工职位 联系电话 住址 数据类型 char(10) char(10) char(10) char(20) datetime char(10) char(10) char(11) char(40) 约束情况 主键 非空 非空 非空 非空 允许空 非空 非空 允许空 表4-3 员工信息表结构
(4)考勤信息表
考勤通常作为信息统计和凭证使用,每一个考勤信息作为一个独立的记录,
故定义员工编号与考勤日期为主键。表4-4列出了基本考勤表结构的数据信息。
列名 员工编号 考勤日期 员工姓名 请假 旷工 早退 迟到 数据类型 char(10) datetime char(10) int int int int 约束情况 主键 非空 允许空 允许空 允许空 允许空
表4-4 考勤表结构
(5)工资信息表
工资信息表作为工资统计使用,每一个工资信息作为一个独立的记录,故定义员工编号与日期为主键,其余字段为非空约束。表4-5列出了基本工资信息表结构的数据信息。
列名 员工编号 日期 员工姓名 部门编号 工龄工资 地区补贴 基本工资 数据类型 char(10) datetime char(10) char(20) smallint smallint smallint 约束情况 主键 非空 非空 非空 非空 非空 表4-5 考勤表结构
创建表之间的关系
通过表之间关系的创建,为创建多表之间的连接查询做好准备。本系统创建
的关系图如图4-6所示。
图4-6 系统关系图
创建视图
根据以上可得知,本系统创建的SQL Server 2000数据库文件中共包含5个
表对象。为了方便管理员使用该系统进行数据查询,系统还创建了如下的视图。 1.单表查询视图:
(1)员工信息查询视图 能够对所有员工的信息进行查询; (2)部门信息查询视图 能够对每个部门的所有信息进行查询; (3)考勤信息查询视图 能够对考勤的所有信息进行查询; (4)工资信息查询 能够对工资的所有信息进行查询; 2.多表查询视图
(1)工资信息表和员工信息表联合查询(数据完整) 2.统计各部门月工资总数 3.统计所有部门月工资总额 创建存储过程
1.创建cunchu1,查询员工的所有信息。
create procedure Cunchu1 as
select * from 员工信息表
2. 创建cunchu2,按编号查询查询员工的所有信息。
create procedure Cunchu2 @find员工编号 char(10) as
select 员工编号,员工姓名,部门名称,员工职位 from 员工信息表
where 员工编号=@find员工编号 GO
3.创建cunchu3,向部门信息表中添加一个新的记录。
create procedure Cunchu3
@部门编号 char(10),@部门名称 char (20),@部门人数 char (10) as
insert 部门信息表
VALUES (@部门编号,@部门名称,@部门人数) GO
创建触发器
1)创建员工信息表删除触发器 当用户删除员工信息表中的内容时,引发该触发器检查考勤信息表中是否存在该内容,如果存在就不能删除,否则就可以删除。
create trigger tr_delete_员工 on 员工信息表 for delete as
declare @员工编号 char(10)
select @员工编号=员工编号 from deleted
if exists (select* from 考勤信息表 where 员工编号=@员工编号) begin rollback end
2)创建员工信息表更新触发器,当员工信息表中部门编号发生改变时,引发该触发器更新工资信息表中的部门属性。
create trigger tr_update_员工 on dbo.员工信息表 for update as
if update(部门名称) begin
declare @b部门名称 char(20),@h部门名称 char(20) select @b部门名称=部门名称 from deleted select @h部门名称=部门名称 from inserted
update 工资信息表 set 部门名称=@h部门名称 from 工资信息表 where 部门名称=@b部门名称
print('记录更新成功') end
3)创建考勤信息表添加触发器,当用户向考勤信息表中输入员工的信息时,引发该触发器检查员工信息表中是否有该项内容,如果有就可以成功输入,否则就不能输入。
create trigger tr_insert_考勤 on 考勤信息表 for insert as
declare @员工编号 char(10),@考勤日期 datetime,@员工姓名 char(10),@早退 int,@旷工 int,@迟到 int,@请假 int
select @员工编号=员工编号 from inserted select @员工姓名=员工姓名 from inserted
if not exists (select* from 员工信息表 where 员工姓名=@员工姓名 and 员工编号=@员工编号) begin rollback end
5前台界面设计
本系统使用SQL Server 2000作为后台数据库,使用设计前台界面,因此,在SQL Server 2000中,仅需要创建基本表对象和表之间的关系,为了减少重复,在VB中仅创建了用户登录界面和员工信息查询和编辑界面。 系统工程结构设计,
工资管理系统的工程中包含登录窗体、背景窗体、主窗体和各表对象的编辑
窗体和查询窗体,共可创建五个窗体。其结构见图。
登录模块设计 5.3.1 界面设计
(1)登录窗体的设计界面如图所示。
图登陆窗体界面
(2)主窗体的设计界面如图所示。
图系统工程结构图
图主窗体界面
(3) 员工信息编辑窗体的设计界面如图所示。员工信息查询窗体的设计界面如图所示。
图员工信息查询窗体界面
(4)窗体中各控件的属性设置
登录窗体的两个标签使用默认的Name属性,其Caption属性如图所示。
表 登录窗体控件属性
默认控件名 Form1 Text1 Text2 Command1 Command2
Name属性 Login txtNo txtCode cmdOK cmdCancle 其他属性 Caption=”登录窗体” — PasswordChar=”*” Caption=”确 定(&E)” Caption=”取消(&C)” 5.3.2 连接设计
当管理员输入账号和密码后,系统将根据管理员输入的信息,到后台数据库的管理员表中查找该信息是否存在,如果存在,系统将进入主窗体,供管理员使用,否则,系统将不可以使用。要完成这些任务,就必须在前台的VB系统与后台的数据库之间建立连接,该模块使用ADO对象建立连接,创建的连接对象名称为Conn,数据库提供者(数据库管理系统)为Access2003即,使用的数据库为“工资管理Access+” 连接语句如下: \"provider= data source=工资管理Access+\" 创建连接之后,就要根据用户输入的信息建立查询,查询结果保存在查询对象rs_login中,查询语言保存在sql字符串中,并设置游标类型为键集类型,锁的类型为乐观锁,运行查询的语句如下:
sql, conn, adOpenKeyset, adLockOptimistic
5.3.3 登陆窗体代码设计
Private Sub Form_Load() coun = 0 = \"\" = \"\" End Sub
Private Sub cmdCancle_Click() '取消按钮的单击事件 Unload Me End Sub
Private Sub cmdOK_Click() '确定按钮的单击事件
Static coun As Integer '静态变量,记录登录次数 Dim sql As String '字符串变量,存放查询语句
Dim rs_login As New '定义记录集对象变量,存放查询结果 Dim conn As New '定义连接对象变量,存放链接信息
\"Provider=;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=课程\" '输出连接信息 If = 1 Then
MsgBox \"恭喜您连接成功\" Else
MsgBox \"连接失败,请重新设置连接\" End
End If
If Trim = \"\" Then
MsgBox \"用户名不能为空,请重新输入!\" Else
sql = \"select * from 系统管理员 where 管理员编号='\" & Trim & \"'\"
'使用键集游标,乐观锁方式打开查询的记录
sql, conn, adOpenKeyset, adLockOptimistic If = True Then
MsgBox \"没有这个用户,请重输入!\48, \"\" = \"\" Else
If Trim(2)) = Trim Then Unload Me Else
MsgBox \"密码不正确,请重输入!\48, \"\"
= \"\" End If End If End If
coun = coun + 1 If coun = 3 Then
MsgBox \"对不起,您已经登录3次了,系统将自动退出!\" Unload Me End If End Sub
主窗体(MDIForm1)模块设计
(1)菜单及属性设置
根据工资管理系统的功能,主窗体上设计有“员工管理”、“工资管理”、“部门管理”、“考勤管理”及退出共五个主菜单,主菜单中又包含有菜单项,各级菜单及属性设置如表所示。
表 “工资管理系统”主窗体菜单及其属性 标题 员工管理 …员工信息查询 …员工信息编辑 mnuygManag …mnuygFind …mnuygEdit 名称 部门管理 …部门信息查询 …部门信息编辑 考勤管理 …考勤信息查询 …考勤信息编辑 工资管理 …工资信息查询 …工资信息编辑 退出系统 (2)员工信息编辑窗体代码设计
Private Sub CmdAdd_Click() Sub
mnubmManag …mnubmFind …mnubmEdit mnukqnag …mnukqnd …mnukqit mnugznag …mnugznd …mnugzit mnuExit Private Sub CmdUpdate_Click() '将添加的纪录存入数据库 Dim cnn As New Dim rs As New
Dim str As String, sql As String
str = \" Provider=;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=课程\" str
sql = \"select * from 员工信息表 where 员工编号='\" & Trim(Txtno) & \"'\" sql, cnn, adOpenKeyset, adLockOptimistic If = False Then
MsgBox \"该编号已经存在,请重新输入!\" Txtno = \"\" Else
MsgBox \"修改成功!\" End If End Sub
Private Sub CmdDelete_Click() '删除纪录 Dim i As Integer
i = MsgBox(\"确定要删除该记录吗\ If i = vbYes Then
MsgBox \"该记录已经成功删除\" End If End Sub
Private Sub CmdReturn_Click() Unload Me End Sub
Private Sub CmdFirst_Click() '查第一条纪录 Sub
Private Sub CmdNext_Click() '查下一条纪录
If = True Then
MsgBox \"这已经是最后一条记录了\" End If End Sub
Private Sub CmdPrevious_Click() '查前一条纪录 If = True Then
MsgBox \"这已经是第一条记录了\" End If End Sub
Private Sub CmdLast_Click() '查最后一条纪录 Sub
(3)员工信息查询窗体代码设计
Private Sub CmdFirst_Click() '使游标移动到第一条记录 End Sub
Private Sub CmdNext_Click() '使游标移动到下一条记录 If = True Then
MsgBox \"这已经是最后一条记录了\" End If End Sub
Private Sub CmdPrevious_Click() '使游标移动到上一条记录 If = True Then
MsgBox \"这已经是第一条记录了\" End If End Sub
Private Sub CmdLast_Click() '使游标移动到最后一条记录 End Sub
Private Sub CmdFind_Click() '返回到主窗体
= adCmdText '修改连接对象的命令类型为文本型 If = True Then
= \"select * from 员工信息表 where 员工姓名='\" + Trim + \"'\" = \"\" ElseIf = True Then
= \"select * from 员工信息表 where 员工编号='\" + Trim + \"'\" = \"\" ElseIf = True Then
= \"select * from 员工信息表 \" Else
MsgBox \"请输入查询方式\"
Exit Sub End If If Then
MsgBox \"对不起,没有查询到你需要的结果,请检查原因!\" End If End Sub
Private Sub CmdReturn_Click() Unload Me End Sub
总结
通过本此课程设计,让我们更进一步地掌握了《数据库应用》课程的相关知识,熟悉了创建数据库管理系统的全过程。较好地掌握了运用SQL语言和视图创建单表和多表查询以及存储过程的参数查询,同时也掌握了创建vb前台设计的方法。
在数据库的设计过程中,我们遇到了种种困难,比如各实体的类型及其联系的确定、多表联合创建视图、触发器的创建,但在老师的帮助下,我们把问题一个有一个地解决了。每一个问题的解决都加深了我们对数据库的了解。
不过,由于专业知识的限制,我们所制作的工资管理系统仍然存在一些问题,如系统功能单一、属性比较简单等,今后需要进一步学习,继续完善系统的功能。
致谢
感谢郑玲利老师平时对我们的教导,此次课程设计,老师帮助了我们很多,在此感谢老师对我们的悉心教导。老师对工作的负责深深地影响了我们全组成员,使我们在不知不觉中全心投入了课程设计,尽自己最大的努力把系统做得更好。
参考文献
[1] 郑玲利.数据库原理及应用案例教程[M].北京:清华大学出版社,. [2] 刘宇君.SQL Sever数据库应用设计案例汇编[M].北京:中国铁道出版社,. [3] 刘韬,骆娟. Visual Basic 数据库系统开发实例导航(第2 版)[M].北京:人民邮电出版社,.
因篇幅问题不能全部显示,请点此查看更多更全内容