首页 > 编程语言 >【精品毕设】基于JavaEE的智能公交考勤系统管理软件设计(包含论文和源码)

【精品毕设】基于JavaEE的智能公交考勤系统管理软件设计(包含论文和源码)

时间:2024-05-28 16:01:33浏览次数:23  
标签:控件 毕设 报表 数据库 考勤 源码 窗体 菜单

智能公交考勤系统管理软件设计

摘要:随着现代科学技术的发展,越来越多的企业对职工的考勤管理都实行了信息化管理,使用计算机系统代替繁琐冗余的手工方式来管理考勤事务。针对公交考勤的系统管理、人事管理、运营管理,提出了智能公交考勤管理系统。

智能公交考勤系统是典型的信息管理系统(MIS),其管理软件用 Visual Basic 作为前台开发工具,Microsoft Access 作为后台数据库,主要完成对智能公交考勤管理系统的需求分析、功能模块划分、数据库设计分析,并由此设计了数据库结构和应用程序。实现了公交站务室对于考勤数据的查询、统计、报表输出等功能,具有签到快速、统计方便、查询及时、报表准确等优点。从而达到了高效率、低成本的现代化管理,为人力资源开发和职工的绩效考核提供了重要的参考依据。

关键词:信息管理;Visual Basic;数据库

The managing software design of an intelligent checking management for pubic traffic

Abstract: With the development of modern scientific technology, more and more enterprise implement information management for attendance checking management of workers and staff members, by using computer system instead of the manual method which is fussy. In view of the system management, personnel management and working management that are for the attendance checking for public traffic, an intelligent checking management for public traffic is proposed.

An intelligent checking management for public traffic is a typical information management system (MIS), and the managing software design uses Visual Basic as the development kit at the proscenium and uses Microsoft Access databases as the backstage development kit. It mainly accomplishes the analysis of requirement, the partitions among functional modules and the analysis of designing database, so that the software design the structure of database and application. For public site, it realizes the function of inquire, statistics and outputting report-form, which have the virtues of fast sign in, convenient statistics, requirement in time and accurate report forms. Thereby the software of intelligent checking management for public traffic reaches modernization management that is efficient and low cost, and it provides an important reference basis for development of human resources personal resource and the achievement’s check of workers and staff members.

Key words:  Information management,  Visual Basic,  Database

目    录

第1章  绪论 ···························································· 1

1.1  课题设计背景···················································· 1

    1.2  系统设计现状···················································· 1

1.3  课题目的和意义················································· 1

1.4  方法概要·························································· 2

第2章  总体设计分析 ·············································· 3

2.1  开发工具介绍···················································· 3

        2.1.1  Visual Basic信息系统开发简介······················ 3

        2.1.2  数据库理论基础········································· 4

2.2  需求分析及可行性分析········································ 7

    2.3  系统目标·························································· 8

    2.4  业务流程·························································· 8

    2.5  功能分析·························································· 9

第3章 系统功能设计 ·············································· 10

3.1  系统总体设计·················································· 10

    3.1.1  应用平台配置·········································· 10

        3.1.2  系统功能模块划分与设计··························· 10

    3.2  数据库设计····················································· 10

        3.2.1  创建数据库············································· 11

        3.2.2  数据库表设计·········································· 12

    3.3  主界面设计····················································· 14

        3.3.1  创建MDI窗体·········································· 15

        3.3.2  设计菜单················································ 15

        3.3.3  设计状态栏············································· 17

        3.3.4  程序代码设计·········································· 19

        3.3.5  运行结果················································ 20

    3.4  公共模块设计·················································· 20

3.5  系统登录设计·················································· 21

3.6  主要功能模块详细设计······································ 22

    3.6.1  IP设置··················································· 22

        3.6.2  密码修改················································ 23

        3.6.3  人事管理················································ 23

        3.6.4  查询历史记录·········································· 28

        3.6.5  运营时刻表············································· 30

        3.6.6  查询路线里程·········································· 31

        3.6.7  报表的生成············································· 32

        3.6.8  版本信息················································ 35

        3.6.9  数据库管理············································· 36

第4章  系统调试与分析 ········································· 38

4.1  程序调试与错误分析········································· 38

    4.1.1  如何处理程序中“变量未定义”的错误········· 38

    4.1.2  如何处理程序中“路径不正确”的错误········· 39

4.2  应用程序的编译··············································· 40

结论·········································································· 41

致谢·········································································· 42

参考文献··································································· 43

附录1······································································· 44

附录2······································································· 45

附录3······································································· 47

附录4······································································· 49

1章  绪  论

1.1  课题设计背景

无论是企业还是机关、事业单位,都会涉及到对职工的考勤管理。考勤管理在生产管理过程中充当着一个十分重要角色,考勤管理的效率对生产的效果起着举足轻重的作用。随着现代科学技术的发展,越来越多的公司和企业对职工的考勤管理都实行了信息化管理,使用计算机系统代替繁琐冗余的手工方式来管理考勤事务。传统的手工方式不仅效率低下,而且很容易出错,采用计算机技术进行考勤管理,就可以克服手工管理的很多缺点,将人们从烦杂的劳动中解放出来[1]。

1.2  系统开发现状

   手工填制考勤表,在机关事业单位存在了已经有好几十年了,而且至今仍在延续着。每到月末或次月初,便由各部门的考勤员在印制好的考勤表上的小格子里划上一道道的斜杠,打上一个个的叉叉等考勤符号,以明示部门成员的出勤、休息、缺勤情况,以此为依据来进行工资、奖金、岗位津贴等的发放[1]。

当今,我国中小企业信息化水平一直处在比较初级的阶段。有关统计表明,真正具备计算机信息化应用水平比较高的企业,在全国1000多万中小企业中所占的比例还不足10%。随着计算机的普及,目前在一些机关、事业单位的办公室里,虽然基本上都已配备上了计算机,但限于这方面人才的缺乏,各部门办公室计算机的利用效率都不高,有的甚至只是当做一台打字机而已,这不仅是一种资源的浪费,也反映了体制上的某种缺陷和传统观念的根深蒂固。

然而,随着我国市场经济的不断成熟,企业的竞争也在不断的加剧。企业组织管理观念的变革以及业务流程标准化的不断完善,中小企业信息化建设的热情近几年也有了显著的提高。各个企业都在寻求开发一个高质量的考勤管理系统进行企业管理,以提高工作效率和增加社会经济效益,实现考勤的自动化,给档案的保存多一份数字化材料。

1.课题目的和意义

智能考勤系统的出现,使得考勤管理进入一个新的信息化管理的时代,它具有签到快速、统计方便、查询及时、报表准确等优点,将人们从烦琐的事务性工作中解放出来。这不仅能准确反映出某天或者某月的个人、部门或者整个单位的考勤状况,避免以往手工统计的烦琐工作,从而为管理人员提供准确的考勤数据,大大节约管理成本;而且这对企业实现人事管理现代化、规范化具有重要的意义,为人力资源开发,职工的绩效考核提供重要的参考依据[2]。

1.4  方法概要

本考勤系统在开发过程中以 Microsoft Access 作为后台数据库,用 Visual Basic 作为前台开发工具,采用面向对象的程序设计思想进行编制的[3],整个系统由若干个窗口、类、表、报表以及一个主菜单组成,由工程管理器统一管理全部程序的编写和调试,用户可以通过主菜单调用系统的各项功能。此外,采用模块化程序设计方法,这不仅有利于提高编程效率,提高系统运行的稳定性,也易于系统的扩充及维护。

    1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建对象,利用控件和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。

2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”[4]。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。

    3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据[5]。

2章  总体设计分析

2.1  开发工具介绍

2.1.1  Visual Basic信息系统开发简介

1、Visual Basic及特点[5]

1991年Microsoft公司推出了Visual Basic。Visual Basic利用面向对象的程序设计概念将Windows编程的复杂性“封装”起来,综合运用了Basic语言和可视化设计工具,既提供了一套简单、易学的编程方法,又对窗口、按钮、菜单、信息框、对话框等构件的设计提供了一整套工具,编程人员很容易在短时间内设计出复杂的图形界面。

Visual Basic极大地简化了界面的设计,编程人员不必编写大量的程序代码,只需要按照设计要求在窗口中的适当位置添加所需的各种部件,由Visual Basic自动产生界面设计代码。Visual Basic的整个界面设计过程是直观、可视的,设计界面与程序运行时实际显示的界面一致,由此大大提高了程序设计的效率。

采用事件驱动方式是Visual Basic的最显著的特点之一,通过事件驱动,用户在界面上的任何操作都再动映射到响应的处理代码上。例如,用鼠标单击一个按钮对象时,将产生一个“单击”(Click)事件,该事件将驱动执行一段程序,以完成指定的操作。在编写大型应用软件时,只需编写出若干小程序段,每个小程序段面向不同的对象,由用户的操作来引发事件驱动,执行相应的小程序段,完成指定的操作。

另外,Visual Basic还提供了对象的链接与嵌入(OLE)和访问数据库等功能。OLE技术把每个应用程序视为一个对象,把不同的对象链接起来,再嵌入到其他应用程序中,把多个应用程序综合为一个大型应用软件[5]。

最后,Visual Basic具有很强的数据库管理功能,提供了数据管理器(Data Manager)、数据控件(Data Control)以及ADO(ActiveX数据对象)等功能强大的工具来管理、维护、和使用诸如dBase、FoxPro、Access等数据库,能访问、创建和处理多种格式的数据库。同时,VB提供了一套完整的数据库操作语言,通过编程可以更方便地管理、维护和使用这些数据库。

2、Visual Basic信息系统开发

Visual Basic是在Basic语言的基础上发展起来的,是第一个可进行可视化开发的集成开发工具,它所具有的“编辑后继续进行(edit and continue)”的特性,超越了旧的编辑—编辑—测试模式。Visual Basic引入了面向对象的程序设计思想和“控件”的概念,使得大量已经编好的Visual Basic程序可以直接拿有使用。同时,Visual Basic又是最容易学习与应用的程序语言之一。虽然最容易学习与使用,但它的功能却非常强大,它已成为一种专业化的开发语言和环境。使用Visual Basic不仅可以快速创建Windows程序,还可以编写企业水平的客户/服务器程序及强大的数据库应用程序。现在,从个人使用的小型工具软件到大型企业的系统软件,甚至通过网络普及全球的分布式应用软件,都可以使用Visual Basic开发[2]。

2.1.2  数据库理论基础

  1. 数据库

数据库是有结构的数据集合,它与一般的传统的数据文件不同,数据库中的数据可以是文字、图象、声音等。

Microsoft Access数据库管理系统是Microsoft Office 套件的重要组成部分,适用于小型商务活动,用以存贮和管理商务活动所需要的数据。它是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。其中的表与表之间可以建立关系(或称关联,连接),以便查询相关联的信息。Access数据库以文件形式保存,文件的扩展名是.MDB。

Access 数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块[5]。

(1)表(Table):表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成。表用来存贮数据库的数据,故又称数据表。

(2)查询(Query):查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

(3)窗体(Form):窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。

(4)报表(Report):报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。

(5)宏(Macro):宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。

(6)模块(Module):模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编程。

  1. SQL语言简介

SQL(Structured Query Language,结构查询语言)是一种面向数据库的通用数据处理语言规范,是一个功能强大的数据库语言。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言[6]。SQL语句通常使用于数据库的通讯,它能完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。

SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQL server这些大型的数据库管理系统,还是像Visual Foxporo、PowerBuilder这些微机上常用的数据库开发系统,几乎所有主要的关系数据库管理系统,都支持SQL语言作为查询语言。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们各自的专有扩展功能以用于它们的系统。但是,标准的SQL命令,比如“Select” 、“Insert” 、“Update” 、“Delete” 、“Create”和 “Drop”常常被用于完成绝大多数数据库的操作。

SQL广泛地被采用正说明了它有着非常突出的优点。它使全部用户,包括应用程序员、数据库管理员和终端用户受益非浅。

  (1)非过程化语言

  SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,但是它可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。所有SQL语句使用查询优化器,它是RDBMS(Relational DataBase Management System关系数据库管理系统)的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。

(2)统一的语言

SQL可用于所有用户的数据库活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL为许多任务提供了命令,包括:

①查询数据;

  ②在表中插入、修改和删除记录;

  ③建立、修改和删除数据对象;

  ④控制对数据和数据对象的存取;

⑤保证数据库一致性和完整性。

  (3)是所有关系数据库的公共语言

由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。

SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:

    ①DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;

    ②DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如创建、修改或者删除数据库对象;

    ③DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。

  1. OLE DB与ADO

(1)ADO简介

OLE DB(对象链接嵌入数据库)是微软的战略性的通向不同的数据源的低级应用程序接口。作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。OLE DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序会用到如下的请求序列:初始化OLE→连接到数据源→发出命令→处理结果→释放数据源对象→停止初始化OLE[7]。

在VB中,可用的数据访问接口有多种:ADO(ActiveX Data ObjectsActiveX数据对象)、RDO(远程数据对象)和DAO(数据访问对象)。其中,ADO是Microsoft的一个最新数据访问技术,作为以前的DAO、尤其是RDO数据访问接口的一个替代,它提供了前两者都不具备的附加功能, ADO是Microsoft提出的应用程序接口(API),能够编写应用程序,并通过OLE DB提供者访问和操作关系或非关系数据库中的数据中的数据。因此本文采用ADO作为数据访问接口。

ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)[8]。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个“Connection”对象,但是可以有多个,独立的“Recordset”对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。

(2)ADO 对象编程模型

最重要的三个ADO对象是Connection,Recordset和Command。每个Connection的属性定义了与数据源的连接,而Recordset对象用来接收来自数据源的数据。Recordset可以与Connection一起使用,先建立一个连接,然后获取数据[5]。尽管如此,Recordset也可以被单独创建,其Connection参数可以在Open属性定义。

在ADO编程模型中,以连接、命令、参数、记录集、字段、错误、属性、集合、事件等元素为关键部分。其核心是Command、Recordset和Connection对象[8]。Connection对象与Command和Recordset对象的关系如图2-1所示。

                             2-1 对象关系

   (1)Connection对象:Connection对象用于建立与数据源的连接。连接是交换数据所必需的环境,通过连接应用程序可以直接或者间接访问数据源;

   (2)Command对象:在建立Connection后,Command对象以在数据源中添加、删除或更新数据,或者在表中查询数据等方式来操作数据源。使用Command对象可使ADO优化命令的执行。

(3)Recordset对象:Recordset对象表示的是来自基本表或命令执行结果的记录全集,在ADO对象模型中,记录集是在行中检查和修改数据最主要的方法。Recordset对象用于指定可以检查的行、移动行、指定移动行的顺序、添加、更改或删除行、通过更改更新数据源及管理全部Recordset状态[5]。

2.2  需求分析及可行性分析

传统的人工考勤方式,存在着许多管理弊端。例如:人工考勤反应速度慢,考勤结果需相当长时间才能统计出来,使主管部门不能及时地监督员工的出勤情况;其次因主管部门不可能直接参与对员工的考勤监督,很难防止考勤中的弄虚作假现象;再次,因考勤统计工作复杂繁重,通过人工统计难以保证结果的正确性、及时性和多样性;统计报表不够规范,使管理监督部门无法对员工实现全面、有效的管理监督[9]。

在当前激烈的社会竞争中,各个企业都迫切的需要一个管理有效、高效率的考勤管理系统。正是基于这样的考虑,本文提出了智能公交考勤系统管理软件的设计。软件可以实现对射频读卡器读取的信息数据进行多项的操作,并充分实现企业的信息化管理。

2.3  系统目标

通过智能公交考勤系统管理软件的设计,使得管理者可以通过主机对考勤信息统一处理,并能及时全面、准确地获取各种考勤资料;其次,管理部分可以通过计算机实现员工人事资料的信息化管理,能方便快捷的添加、修改和浏览各种人事信息;再次考勤资料只有管理员才能查阅(或更改),杜绝考勤中弄虚作假现象。主管部门能随时查阅考勤资料,也使得职员感到有无形力量监督;最后,智能公交考勤管理系统软件对考勤原始资料(如出、入站时间,乘务员信息,运营情况等)收集后,通过计算机处理可以充分反应在报表中。

2.4  业务流程

要分析出软件设计需要提供和实现的功能,先对软件的适用者即智能公交考勤系统的业务流程进行分析。

通过分析,得出智能公交考勤系统的主要流程如下:

    1、公交车进站,通过射频刷卡机,一次性读取考勤信息,并存入到数据库表中;

2、系统管理员可通过系统设置更改密码,设置IP地址以及选择退出系统;

3、也可通过人事管理调用数据库表中已有的信息,实现添加员工信息、查询信息等操作;

4、经过考勤后可容易实现对运营情况的管理,其中包括对每路公车的线路里程管理、运营时刻表、查询运营历史记录(卡号、车号、姓名、N路)、生成报表;

5、管理员还可以通过数据库管理实现数据库的备份、清库和保存记录;

6、还可以设置帮助信息,帮助使用者熟悉系统软件的使用说明和版本信息。

智能公交考勤系统的业务流程如图2-2所示:

                     2-2 智能公交考勤系统业务流程图

2.5  功能分析

本文设计的智能公交考勤系统管理软件,主要是应用于公交站台的站务室。它可以实现的主要功能有:

1、能够修改登录密码并设置主机IP号;

2、实现对售票员和驾驶员的考勤信息的记录;

3、能够对员工的信息进行添加、删除和修改;

4、能够按卡号、姓名、车号、日期等查询历史数据;

5、实现对每路公交车的路线、里程使用的查询;

6、实现数据的统计和报表输出;

7、实现对运营情况的查询。

3章  系统功能设计

3.1  系统总体设计

3.1.1  应用平台配置

  1. 硬件平台

硬件平台由一部PC机(个人计算机)组成。

  1. 软件平台
  1. PC机操作系统:Windows 2000 /XP。
  2. 数据库系统:Access。
  3. 软件开发语言:Visual Basic 6.0。

3.1.2  系统功能模块划分与设计

根据上述的功能分析,可以将智能公交考勤系统管理软件的设计划分为6大功能模块,即系统管理、人事管理、运营管理、数据库管理和帮助信息[10],以及退出系统。

智能公交考勤系统的功能机构如图3-1所示。

3-1 智能公交考勤系统管理软件的功能结构图

3.2  数据库设计

数据库是数据库应用程序的重要组成部分,设计结构合理、功能齐全的数据库对于提高数据库应用程序的开发效率和程序的性能都是非常重要的[6]。数据库的设计过程大致如下:

(1)根据用户需求,确定数据库中要保存的数据信息。对用户需求进行分析是数据库设计的第一阶段。不断地调查与研究用户需求,了解企业运作流程和系统需求,是设计数据概念模型的基础。

(2)设计数据的概念模型。概念模型是按用户的观点来对数据建模,概念模型室用于进行信息时间建模的工具,它对整个数据库的设计具有深刻的影响。

(3)逻辑结构的设计。逻辑结构是把概念结构转化为与所采用的数据库管理系统所支持的数据模型相符合的过程。

(4)数据库的实施和维护。

3.2.1  创建数据库

数据库设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有Access、SQL Server、Oracle等。而Access是一种桌面数据库,适合于数据量较少的应用系统,在处理少量数据和单机访问的数据库时有很好的效果,效率也很高。基于此,本系统采用了Access数据库管理系统。

可以在数据库管理系统(Access)中之间创建新的数据库,也可以在VB开发环境下直接新建数据库,甚至可以在VB程序中根据需要通过程序来建立数据库表和数据库。

本文使用的是在VB开发环境下,利用其提供的可视化数据管理器来新建数据库,下面就是本文创建数据库的过程:

1、启动数据管理器

从VB主窗口中选择“外接程序”菜单的“可视化数据管理器”,启动数据管理器(“VisData”窗口),进入设计界面。如图3-2所示。

2、创建数据库

选择数据管理器的“文件”菜单中的“新建”命令,在级联菜单中选择“Microsoft Access…”,在选择“Version 7.0 MDB”命令,出现“选择要创建的Microsoft Access数据库”对话框。输入文件名为record.mdb后,并保存record.mdb,即新建了数据库record.mdb。

如图3-2就是新建后显示的数据管理器。

3-2 数据管理器

3.2.2  数据库表设计

在“数据库窗口”区域内单击鼠标右键,再单击“新表”命令,则出现“表结构”对话框,其中:

  1. 表名称:新建数据表的名称;

2、大小:指字段长度;

3、类型:字段数据类型,即存入字段的类型。

添加字段就按【添加字段】按钮,如需删除字段则单击【删除字段】按钮。

根据功能在Access数据库中创建如下数据库表:登录信息表(user_Info)、线路里程表(roadline)、运营时刻表(DataTemp)、历史数据表(recordData)、人事信息表(personnel)、查询信息表(SearchTemp)。依次如表3-1至表3-6所示。

     3-1 user_Info表                                          表3-2 roadline

字段名

数据类型

说明

user_ID

文本

用户登录名称

user_PWD

文本

登录密码

字段名

数据类型

说明

N路

文本

公车路别

里程

文本

行驶里程

    

                                                                                                           

  3-3 DataTemp

字段名

字段类型

说明

N路

文本

公车路别

车号

文本

公车牌照

卡号

文本

考勤卡

驾驶员

文本

驾驶员

售票员1

文本

售票员

售票员2

文本

售票员

发车时间

日期/时间

出站时间

进站时间

日期/时间

收车时间

运营时间

文本

进站与发车时间的差距

日期

日期/时间

运营时间

是否上传

是/否

上传给服务器端

3-4 recordData

字段名

字段类型

说明

N路

文本

公车路别

车号

文本

公车牌照

卡号

文本

考勤卡

驾驶员

文本

驾驶员

售票员1

文本

售票员

售票员2

文本

售票员

发车时间

日期/时间

出站时间

进站时间

日期/时间

收车时间

运营时间

文本

进站与发车时间的差距

日期

日期/时间

运营时间

是否上传

是/否

上传给服务器端

3-5 personnel

字段名

数据类型

说明

N路

文本

公车路别

车号

文本

公车牌照

卡号

文本

考勤卡

驾驶员

文本

驾驶员

售票员1

文本

售票员

售票员2

文本

售票员

 3-6 SearchTemp

字段名

字段类型

说明

N路

文本

公车路别

车号

文本

公车牌照

卡号

文本

考勤卡

驾驶员

文本

驾驶员

售票员1

文本

售票员

售票员2

文本

售票员

发车时间

日期/时间

出站时间

进站时间

日期/时间

收车时间

运营时间

文本

进站与发车时间的差距

日期

日期/时间

运营时间

是否上传

是/否

上传给服务器端

3.3  主界面设计

认识MDI窗体

多文档的界面(MDI,multiple document interface)是Windows应用程序的典型结构。利用MDI,可以在一个包容式窗体中包含多个窗体,并且可以同时显示多个文件(文档),每个文件都在自己的窗口内显示。文档窗口包含在父窗体内,父窗体为应用程序中的所有文档窗口提供操作空间。MDI窗体可以拥有子窗体,而标准窗体不能拥有子窗体。这对于同时选择不同的操作,并且可以看到选择菜单的考勤管理系统来说,无疑是非常有用的。

当最小化一个子窗体时,它的图标将显示在MDI主窗体中而不是Windows的任务栏上;当最大化一个子窗体时,它的标题会与MDI主窗体的标题组合在一起,并显示在MDI主窗体的标题栏上。当最大化MDI主窗体,主窗体及其所有子窗体将按主窗体被最小化之前的状态显示出来。

基于以上原因,在本文中采用了MDI主界面,MDI主界面由MDI窗体、菜单栏、工具栏和状态栏组成,下面分别介绍各部分的详细设计过程。

3.3.1  创建MDI窗体

在“工程”菜单中选取“添加MDI窗体”命令,就可以为应用程序添加一个MDI主窗体,将该窗体name属性设置为“MDIForm1”,Caption设置为“智能公交考勤系统”。

因为一个应用程序只能有一个MDI窗体,所以如果工程已经有一个MDI窗体,则“工程”菜单上的“添加MDI窗体”命令就是无效的了。

如果将其他窗体作为MDI窗体的子窗体,那么需要设置窗体的MDIChild属性为“True”。

本文后面设计的窗体大部分都是这个窗体的子窗体。

3.3.2  设计菜单

菜单是主界面设计的基础,通过菜单可以调用相应的子窗体。当然,通过其他控件也可以调用子窗体,但是从界面设计的角度来说,菜单设计的方法比较简单、快捷。

菜单的设计主要通过VB中的菜单编辑器完成,下面的步骤就是如何通过菜单编辑器设计菜单的。

(1)打开菜单编辑器。打开菜单编辑器窗口有几种方法:

① 在VB系统的“工具”菜单下选择“菜单编辑器”命令;

② 单击工具栏中的“菜单编辑器”快捷按钮;

③ 选择窗体窗口作为当前活动窗口,单击鼠标右键,出现一个弹出式菜单,选择“菜单编辑器”。

(2)在菜单编辑器窗口中,“标题”文本框用于设置菜单项的标题,它对应着菜单的Caption属性。

(3)“名称”文本框用于设置菜单项的名称,它对应着菜单项的Name属性。

(4)菜单的“索引”文本框用来确定菜单标题或菜单选项在菜单控件数组中的位置或者次序。该位置与菜单的屏幕位置无关,如果菜单项的名称不重复,索引值可以为空,否则必须有一个索引值。

(5)如果所涉及的菜单项需要快捷键,则单击“快捷键”列表框右边的下拉箭头,在弹出的下拉列表中为菜单项选定快捷键。其中“None”选项表示没有快捷键,并且最顶层的菜单不允许用快捷键。

(6)“帮助上下文ID”文本框用于返回或设置一个相关联的帮助上下文的编号。它被用来为应用程序提供上下文有关的帮助。

(7)单击“协调位置”右侧的下拉箭头,可以选择是否显示菜单和如何显示菜单。“协调位置”下拉列表中共有4个选项。并且只有顶层菜单才能够取非零值,该属性不可以在程序中设置。

(8)“复选”、“有效”和“可见”选项分别对应菜单的Checken、Enabled和Visible属性,用于设置菜单复选、是否有效和是否可见。

(9)在编辑菜单的过程中,有时需要移动菜单,这就要用到下面的4个按钮。

 单击此按钮将选定的菜单向左移一个等级;

 单击此按钮将选定的菜单向右移一个等级,最多可以创建五个等级的子菜单;

     单击此按钮将选定的菜单项在同级菜单内向上移动一个位置;

 单击此按钮将选定的菜单项在同级菜单内向下移动一个位置;

(10)单击【下一个】按钮,移动并显示菜单项,供用户新增或者修改菜单项;如果需要在某一个位置插入一个新的菜单项,则单击【插入】按钮;如果要删除已经存在的菜单项,则单击【删除】按钮。

根据以上的原则和步骤,设计考勤系统菜单。

① 打开菜单编辑器;

② 设计主菜单。在“菜单编辑器”对话框中的“标题”文本框中输入菜单项,例如“系统”;在“名称”文本框中输入名称,例如“sysMenu”,然后按图3-3中所示依次完成“运营管理”、“人事管理”、“数据管理”等主菜单项;

③ 设计子菜单。选中需要添加子菜单的下一个主菜单项(例如,为“系统”添加子菜单则需要选中“运营管理”),单击【插入】,再单击按钮,然后在“标题”文本框中输入子菜单项,如“IP设置” ;在“名称”文本框中输入名称,如“setIPmenu”。

3-3 菜单设计结果

④ 依次完成如图3-4所示的菜单项,然后单击【确定】按钮,运行结果如图3-4所示。

3-4 菜单栏的运行结果

3.3.3  设计状态栏

状态栏是应用软件的设计中必不可少的。在VB中设计状态栏用的是StatusBar控件,StatusBar控件能够提供一个长方条,通常显示在窗体的底部。使用状态栏提示系统信息和用户的提示,本系统软件利用状态栏显示的是系统日期、软件版本和当前的时间。下面是状态栏的设计步骤:

1、添加状态栏控件。StatusBar控件需要从“部件”添加到工具箱当中,然后再使用。添加的具体方法是:在“工程”菜单下选择“部件”菜单项,打开“部件”对话框,然后在其中选择“Microsoft Windows Common 6.0”,单击【确定】按钮,StatusBar控件就将添加在控件工具箱中。

2、设计状态栏。在MDIForm1窗体上添加一个StatusBar控件,并用鼠标右键单击StatusBar1控件,在弹出的菜单中选择“属性”,打开“属性页”对话框。

3、单击“窗格”选项卡,然后单击【插入窗格】按钮,为StatusBar1控件添加2个窗格。将第一个窗格的“文本”属性设置为“智能公交考勤系统管理软件”,使程序运行时显示软件名;将第二个窗格的“样式”属性设置为“6-sbrData”,使程序运行时在该面板中显示当前系统日期;将第三个窗格的“样式”属性设置为“5-sbrTime”,使程序运行时在该面板中显示当前系统时间。

4、“索引”文本框的数值对应于一个窗格的索引值,可以在其中输入一个数或者单击其后的左右箭头来改变索引值,以选择要修改属性的窗格。

在“属性页”对话框中除了上述所介绍的属性外,还有设置字体、图片及样式等属性,在设计中对于对话框中的这些属性,均取默认值。

按照上述步骤设置后,状态栏设计结果如图3-5所示。

3-5 状态栏运行结果

完成以上步骤之后,图3-6即为设计完成的系统主界面。

3-6 智能公交考勤系统管理软件主界面

3.3.4  程序代码设计

Private Sub editPasswordMenu_Click()

editPassword.Show                       '加载修改密码窗口

End Sub

Private Sub infoMenu_Click()

aboutForm.Show                         '加载版本信息说明窗口

End Sub

Private Sub monthReportMenu_Click()

reportfrm.Show                          '加载报表预览窗口

End Sub

Private Sub personnelManageMenu_Click()

personnelFrm.Show                       '加载人事管理窗口

End Sub

Private Sub roadLineTableMenu_Click()

roadLineFrm.Show                       '加载路线里程窗口

End Sub

Private Sub runtimeTableMenu_Click()

displayFrm.Show                         '加载运营时刻窗口

End Sub

Private Sub seeHistoryMenu_Click()

seeHistoryFrm.Show                      '加载查询历史记录窗口

End Sub

Private Sub setIPmenu_Click()

setIPfrm.Show                           '加载IP设置窗口

End Sub

Private Sub DataManageMenu_Click()

  database.Show                           '加载数据库管理窗口

End Sub

Private Sub quitMenu_Click()

End                                    '退出系统

End Sub

3.3.5  运行结果

智能公交考勤系统管理软件的主界面运行结果如图3-6所示。

3.4  公共模块设计

   为了节省系统资源,也为了使整个程序简单易懂,在系统中新建一个Modulel模块,该模块主要用于连接数据库和表,从而避免了程序中重复地定义数据连接和数据集对象[12]。Modulel模块中的主要代码如下:

Public Function①ExecuteSQL②(ByVal SQL③As String, MsgString As String) As ADODB.Recordset④                     

Dim conn As ADODB.Connection         

Dim rs As ADODB.Recordset           

Dim sTokens() As String                  

On Error GoTo ExecuteSQL_Error         

sTokens = Split(SQL)                   

Set conn = New ADODB.Connection       

conn.Open connectstring

If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then

conn.Execute SQL                  

    MsgString = sTokens(0) & "查询成功!"

Else

Set rs = New ADODB.Recordset        

    rs.Open Trim$(SQL), conn, adOpenKeyset, adLockOptimistic

Set ExecuteSQL = rs                  

    MsgString = "查询到" & rs.RecordCount & "条记录"

End If

ExecuteSQL_Exit:                        

    Set conn = Nothing

    Set rs = Nothing

    Exit Function

ExecuteSQL_Error:

    MsgString = "查询错误:" & Err.Description

    Resume ExecuteSQL_Exit

End Function

Public Function connectstring()               

connectstring="Provider=Microsoft.jet.OLeDB.4.0;DataSource="&App.Path&"\record.mdb;"

End Function

Sub Main()

login_f.Show

End Sub

Public Function Testtxt(txt As String) As Boolean

    If Trim(txt) = "" Then

        Testtxt = False

    Else

        Testtxt = True

    End If

End Function

Public Function compute(ByVal x1 As Integer, ByVal x2 As Integer, ByVal x3 As Integer) As Double

Dim z As Double

z = (x1 * 65536) + (x2 * 128) + (128 * x2) + x3

compute = z

End Function

3.5  系统登录设计

系统登录主要用于对进入管理软件的用户进行安全性检查,以防止非法用户进入该管理系统。只有用户在输入了正确的管理员名称和口令后,才可以进入系统[7]。

根据以上分析,用户登录系统的验证过程,如图3-7所示。

系统登录窗体的具体设计过程如下:

1、界面设计

(1)新建一个窗体,将窗体的名称设置为“login_f”,Caption属性设置为“登录”;

(2)在窗体上添加Frame控件,用来对其他控件进行分组,以便于用户识别。

(3)在窗体添加Label、TextBox控件和CommandButton控件,并分别设置其Caption属性,以及对应的Name属性。

2、程序代码

系统登录的代码设计如附录1。

      

     3-8 系统登录窗体运行结果

3.6  主要功能模块详细设计

3.6.1  IP设置

系统提供管理员设置主机IP地址的权限,设置IP地址的作用是便于以后在完善通信代码的情况下,设置主机IP地址。其设计的运行结果如图3-9所示。程序代码略。

 3-9 IP设置窗体的运行结果

3.6.2  密码修改

对于一个管理软件来说,经常更改系统密码,可以有效的防止密码外泄、保证系统安全性和信息的完整性。其界面及程序代码都相对比较简单,如图3-10为其界面,代码略。

3-10 修改密码窗体运行结果

3.6.3  人事管理

作为考勤系统管理软件,人事管理是非常重要的一部分,它主要实现了员工信息的录入、修改、删除和浏览等功能。本文所设计的人事管理,通过一个主窗体,再连接到各个功能窗体。

1、人事管理主窗体的设计

通过该窗体中【对当前记录进行操作】、【添加记录】、【查询记录】三个按钮,分别调用人事信息--删除或修改记录、人事信息――添加记录和记录查询窗体,从而实现对人事信息的删除、修改、添加和查询功能。按【浏览全部记录】按钮则会直接执行浏览全部记录的功能[10]。

本文涉及到的人事信息包括:N路、车号、卡号、驾驶员、售票员1、售票员2。

窗体界面设计:

(1)在工程中添加一个窗体,将窗体名称设置为“personnelFrm”,Caption属性值设置为“人事管理”。

(2)在该窗体中添加MSFlexGrid控件,作为录入表格,名称属性设置为“flgGrid”。

Microsoft FlexGrid (MSFlexGrid) 控件可以显示网格数据,也可以对其进行操作。它提供了高度灵活的网格排序、合并和格式设置功能,网格中可以包含字符串和图片。如果将它绑定到一个 Data 控件上,那么 MSFlexGrid 显示的将是只读的数据。

可以将文本、图片,或者文本和图片,放在MSHFlexGrid 的任意单元中。可以用 Cols 和 Rows 属性来决定MSHFlexGrid 控件中的列数和行数,Row 和 Col 属性指定了MSHFlexGrid 中的当前单元,可以在代码中指定当前单元。

Text 属性引用当前单元的内容。如果单元的文本过长而不能在该单元中显示,而且 WordWrap 属性被设置为 True,那么文本就会换行到同一单元内的下一行。为了显示换行的文本,就需要增加单元的列宽度(ColWidth 属性)或者行高度(RowHeight 属性)。

由于该控件属于ActiveX控件,在应用程序中使用 MSFlexGrid 之前,首先必须将 MSFlxGrd.ocx 文件添加到工程中。具体方法如下:

单击“工具” /“部件”菜单项,在弹出的“部件”对话框中选择“Microsoft FlexGrid Control 6.0(SP3)”列表项,单击【确定】按钮,这时该控件就被添加到工具箱中。

(3)在窗体上添加5个CommandButton控件和1个Label控件。将其名称分别设置为:“cmdDeleteRecord”、“cmdAddRecord”、“cmdSearch”、“cmdViewRecords”和“cmdQuit”;Caption属性分别设置为:“对当前记录进行操作”、“添加记录”、“查询记录”、“浏览全部记录”和“退出”。

程序代码设计[13]:

前面的按钮都会调用响应的功能窗体,而为了使窗体尽量简化,把“浏览全部记录”的功能直接放在主窗体当中。在【浏览全部记录】按钮的Click事件下添加如下代码[11]:

Dim mrc As ADODB.Recordset

Dim txtSQL As String

Dim MsgText As String

txtSQL = "select * from personnel "          '指定查询表

Set mrc = ExecuteSQL(txtSQL, MsgText)     '一定执行SQL语句

    With flgGrid

        .Clear                           '=flgGird.Clear

        .Cols = 6                         '列数

        .FixedCols = 0

        .FixedRows = 1     '设定固定列、行的总数,设定第0列,第一行为固定的

        .TextMatrix(0, 0) = "N路"          '设置一个任意单元的文本内容

        .TextMatrix(0, 1) = "车号"

        .TextMatrix(0, 2) = "卡号"

        .TextMatrix(0, 3) = "驾驶员"

        .TextMatrix(0, 4) = "售票员1"

        .TextMatrix(0, 5) = "售票员2"

        .Rows = 2

    If mrc.RecordCount <> 0 Then             '判断记录集的记录总数

    mrc.MoveLast      

        Do While Not mrc.BOF    

                .TextMatrix(.Rows - 1, 0) = mrc.Fields(0).Value   

                .TextMatrix(.Rows - 1, 1) = mrc.Fields(1).Value   

                .TextMatrix(.Rows - 1, 2) = mrc.Fields(2).Value   

                .TextMatrix(.Rows - 1, 3) = mrc.Fields(3).Value   

                .TextMatrix(.Rows - 1, 4) = mrc.Fields(4).Value  

                .TextMatrix(.Rows - 1, 5) = mrc.Fields(5).Value   

                .Rows = .Rows + 1

            mrc.MovePrevious 'Remember to move to the next record.

        Loop

    End If

    End With

    Label1.Caption = "共" & mrc.RecordCount & "条记录"

    mrc.Close

End Sub

人事管理窗体运行后,如图3-11所示。

                         3-11 人事管理主窗体

2、人事信息――删除或修改记录窗体的设计

    删除或修改记录窗体主要是实现对浏览后的指定记录进行删除或修改的功能,该窗体是通过人事管理窗体中【对当前记录进行操作】按钮的单击事件启动的。

窗体中主要是标签、按钮和一些文本框控件组(名称属性均设置为“txtMsg”)组成,主要控件的属性设置如图3-12所示。

     3-12 删除或修改记录界面设计

窗体运行结果如图3-13所示。

              3-13 对当前记录进行操作——删除或者修改记录

3、人事信息――添加记录窗体的设计

添加记录窗体主要是实现对新增员工信息的录入。该窗体是通过人事管理窗体中【对当前记录进行操作】按钮的单击事件启动的。

人事信息――添加记录窗体也是由多个标签、按钮和文本框控件所组成的。将三个按钮控件的名称属性分别设置为:“cmdReadID”、“cmdAddRecord”和“cmdCancel”,Caption属性分别设置为:“读取卡号”、“添加记录” 和“取消操作”。

并在各个按钮的Click事件下添加相应代码,其代码见附录2。

完成上述操作后,窗体运行结果如图3-14所示。

                           3-14 添加人事信息子窗体

4、人事管理――记录查询窗体的设计

查询记录窗体可以实现通过四种方式进行查询,四种方式分别是:按卡号、姓名、车号和几路的查询。一旦选中查询方式,就可以查询到与之相匹配的人事信息记录。

查询记录的窗体主要由:OptionButton控件、TextBox控件和CommandButton控件所组成的。窗体运行结果如图3-15,相应代码见附录3。

 3-15 查询记录子窗体

3.6.4  查询历史记录

查询历史记录部分为系统管理员提供查询历史考勤信息的功能。查询方式可以分成5种,分别为按卡号、姓名、车号、N路和未上传记录的查询。通过SQL语句实现历史记录的查询;通过MSFlexGrid控件实现查询结果的汇总和显示。窗体的主要设计过程如下:

1、窗体界面的设计

(1)新建一个窗体,设置该窗体的名称“seeHistoryFrm”;Caption属性“查询历史记录”;BorderStyle属性为“2-Sizable”, 将窗体设置为可调整大小的边框。

(2)需要查看查询情况,必然需要添加MSFlexGrid控件,前面已经具体详细的介绍过,这里就不赘述了。直接在窗体上添加MSFlexGrid控件,用来显示查询历史记录的结果,默认名称为“MSFlexGrid1”。

(3)在窗体中添加两个Frame控件,用来将查询方式的选择和时间选择的隔离。Caption属性分别设置为:“查询方式”和“查询日期”。

(4)窗体上添加若干的OptionButton控件、Lable控件、TextBox控件和CommandButton控件。排列如图3-16。

 2、程序代码设计

 界面设计完成以后,需要给每个命令按钮添加相应的程序代码,在【执行查询】按钮的Click事情件添加代码,其代码与人事信息中查询记录的代码类似。

    3、窗体运行结果

查询历史记录窗体运行结果如图3-17所示。

3-17 查询记录窗体运行结果

3.6.5  运营时刻表

运营时刻表可以反映在某一天,某辆标识的公交车的进站时间、出站时间、运营持续时间和车辆的运营人员等信息,并且可以给管理者查询到记录上传的情况。如果系统配置了硬件方面的射频读卡器部分,添加串口通信的代码就可以实现上传记录或者与总站间实现通信的部分。由于本系统没有设计通信的部分,设计中运营时刻表部分,只是调用了之前已经保存的记录。这部分设计给管理者提供了查询车次运营情况的功能。

运营时刻表部分的设计步骤如下:

1、窗体界面设计

(1)新建一个窗体,设置该窗体的名称为“displayFrm”,Caption属性设置为“运营时刻表”,BorderStyle属性为“2-Sizable”, 将窗体设置为可调整大小的边框。

(2)在窗体上添加一个MSFlexGrid 控件,用于显示查询结果。所有属性使用默认的。

(3)在窗体上添加1个OptionButton控件组和3个Label控件。属性设置略。

 2、程序代码设计[14]。

与人事信息——添加记录窗体的设计的代码类似。

  1. 运营时刻表的运行结果如图3-18所示。

3.6.6  查询路线里程

在站务室,管理员需要知道车辆行驶的路程情况,以便提醒其是否需要增加燃油或者检修车辆,另外也需要经常统计数据以便查询和掌握车辆行驶的情况[15]。本次设计中查询路线里程的功能,可以实现对路线和相应行驶里程的添加、浏览已经存入数据库的路线里程情况和删除选定的路线里程行。

1、窗体界面设计

(1)在窗体上添加一个MSFlexGrid控件,以显示查询路线里程的匹配情况,默认名称为“MSFlexGrid1”。

(2)在窗体上添加两个Label控件,Caption属性分别设置为“几路车”、“公里数”;在两个Label控件后面分别添加一个TextBox控件,名称属性分别设置为“txtNbus”、“txtKnum”。

(3)最后为窗体添加四个CommandButton控件,设置其名称和对应的Caption属性分别为:“cmdAddRecord”和“添加记录”、“cmdDdelete”和“删除当前记录”、“cmdView”和“浏览记录”、“cmdQuit”和“退出”。

  1. 程序代码设计

窗体的作用是查询和添加,其代码与人事管理信息涉及到的查询添加类似。

  1. 窗体运行结果

    在界面完成设计以后,为各个命令按钮添加相应代码。窗体的运行结果如图3-19所示。

   

  

3.6.7  报表的生成

1、关于水晶报表

水晶报表(Crystal Report)的业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口[3]。除了开发新程序外,在工作中常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。

Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。

(1)创建所能想象的任何报表

Crystal Reports几乎可以从任何数据源生成需要的报表。内置报表专家在生成报表和完成一般的报表任务过程中,会一步一步地提示指导操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用图形进行形象的信息交流。

(2)将报表扩展到 Web

Crystal Reports的灵活性并未停留在创建报表这一功能上。它可以用各种各样的格式发布报表,包括用Microsoft的Word和Excel发布、通过电子邮件甚至Web发布。高级的Web报表功能允许工作组中的其他成员在他们自己的Web浏览器中查看或更新共享报表。

(3)将报表并入应用程序

通过将Crystal Reports的报表处理功能整合到自己的数据库应用程序中,应用程序和Web开发人员可以节省开发时间并满足用户的需求。Crystal Reports支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。

2、VB与水晶报表

VB是现在比较流行的数据库开发平台,也是全球范围内运用最广泛的编程语言。用其开发的C/S(客户/服务器)系统在社会上有非常大的保有量,但VB超弱的报表功能往往让程序员面对客户的升级要求一筹莫展。而融入水晶报表无疑是为VB弥补了这一遗憾。

VB中调用水晶报表的过程,简单来说,首先要通过水晶报表的数据库引擎手动连接相应的表结构,制作报表模板,并保存为rpt文件。这与VB自带的报表功能类似。

VB和水晶报表的接口方式也非常简单。用VB调用水晶报表进行报表开发的简单接口方法就是,在水晶报表中用“仅字段定义”来获得字段分布文件,用虚拟的文件创建表字段,用CRAXDRT对象来强制改变数据源(ADO.recordset),其效果相当于在VB中调用了rpt文件。

3、在VB中使用水晶报表

在本文中,开发测试平台是VB6.0简体中文企业版和Crystal10.0简体中文开发版。而对于水晶报表如何制作的部分已经省略,只着重介绍如何在VB中使用水晶报表。

(1)在VB工程中部件菜单加入“Crystal Report 10”,报表名设置为“CReport1”。这时reportfrm里自动添加了CRviewer1控件(Crystal Rerport自动添加的Form,名称属性设置为“reportfrm”)被自动分配了如下代码:

Option Explicit
Dim Report as New Cystal1

Private Sub Form_Load()

Screen.MousePointer = vbHourglass   '调用水晶报表时置鼠标为沙漏状

CRViewer1.ReportSource = Report    '该语句的赋值将在后面被修改

CRViewer1.ViewReport
Screen.MousePointer = vbDefault     '调用水晶报表完成后置鼠标为默认形状

End Sub

Private Sub Form_Resize()

CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth

End Sub

(2)点击Crystal Report设计器的“数据库字段”,选定“数据库专家……”,然后点“创建新连接”,再点“仅字段定义”,创建“数据库定义”文件,字段名和宽度和原数据库表保持一致。最后,在数据库字段中获得了相应字段,将其置于报表上。

(3)该步骤非常关键,添加一个Modual到工程文件中,定义全局的ADODB变量,实现数据库和水晶报表的动态连接。本文不用单独再建立一个Modual,只需要添加代码到前面已经建立的公共模块就可以了。添加的代码如下:

Public conn As New ADODB.Connection

Public rs As New ADODB.Recordset

(4)创建水晶报表和数据库数据源的连接,需要修改上面reportfrm的代码。修改后的完整代码如下:

Option Explicit

Dim Report As New CReport1

Private Sub Form_Load()

Screen.MousePointer = vbHourglass     '调用水晶报表时置鼠标为沙漏状

CRViewer1.ReportSource = Report     '该语句的赋值将在后面被修改

CRViewer1.ViewReport

Screen.MousePointer = vbDefault       '调用水晶报表完成后置鼠标为默认形状

Dim oApp As New CRAXDRT.Application

Dim oRpt As CRAXDRT.Report

Dim reportName As String           '上面三行是新增加的

Dim conn As ADODB.Connection    '定义连接

Dim rs  As ADODB.Recordset      '定义记录集

Screen.MousePointer = vbHourglass

reportName = "\a.rpt"              '定义要引用的rpt文

Set oRpt = oApp.OpenReport(App.Path & reportName, 1)    '指定报表调用的路径

oRpt.Database.SetDataSource rs         '连接水晶报表和数据源

oRpt.ReadRecords

CRViewer1.ReportSource = oRpt        '该语句的赋值将在后面被修改

CRViewer1.ViewReport

Screen.MousePointer = vbDefault       '调用水晶报表完成后置鼠标为默认形状

End Sub

Private Sub Form_Resize()

CRViewer1.Top = 0

CRViewer1.Left = 0

CRViewer1.Height = ScaleHeight

CRViewer1.Width = ScaleWidth

End Sub

Private Sub Form_Unload(Cancel As Integer)   

Set CReport1 = Nothing

Unload reportfrm

End Sub

  1. 报表的运行结果

水晶报表的运行结果如图3-20所示。

3.6.8  版本信息

版本信息部分主要是针对初次接触本考勤管理系统的人员,给他们基本的帮助信息。版本信息里面给出了本考勤系统的基本信息,包括:系统的功能、开发者和开发日期。版本信息的窗体设计非常简单,只需要添加若干的Label控件,用来显示信息文字。窗体中也可添加了一个Image控件,用来显示图形使界面更具美观。Image 控件可以显示来自位图、图标或元文件的图形,也可以显示增强的元文件、JPEG 或 GIF文件。

3.6.9  数据库管理

   对于一个信息管理系统,数据管理至关重要!数据的收集、存储和管理是其他应用程序得以正常运行和处理的保障和前提。那么,数据库的维护也是必要的,本文的数据管理只涉及到数据库的备份和删除。

1、数据库管理的窗体界面设计

(1)在工程中添加一个窗体,将窗体的名称和Caption属性分别设置为“database”和“数据库管理”。

(2)将SSTab 控件添加到工具箱中。SSTab 控件就象笔记本中的分割线或一组文件夹上的标签一样。用 SSTab 控件,可以在应用程序中为某个窗口或对话框的相同区域定义多个页面。在数据库管理中利用这个控件分页显示数据库备份和数据库删除这2部分内容。

在“工程”中选择“部件”命令,在弹出的“部件”对话框中选择“Microsoft tabbed Dialog Control6.0(SP5)”,单击【确定】,将SSTab 控件添加到工具箱中。

(3)在窗体上添加一个SSTab 控件,设置Tabs属性为“2”,并分别将分页选项卡的Caption属性设置为“数据库备份”和“数据库删除”。

(4)在每个分页上添加一个Label控件,2个CommandButton 控件和1个CommonDialog 控件。CommonDialog 控件可以提供一组标准的操作对话框,进行诸如打开和保存文件,设置打印选项,以及选择颜色和字体等操作。并分别设置其名称和Caption属性。

  1. 程序代码设计

本系统中的数据库备份主要使用了FileCopy语句,而数据库删除使用了Kill语句。

具体的程序代码见附录4。

  1. 运行结果

数据库管理窗体运行结果如图3-21所示。

4章  系统调试与分析

4.1  程序调试与错误处理

程序开发过程中,经常会出现一些错误,从而造成开发工作停滞不前,所以调试程序成为必要的开发步骤。每一个应用程序的编制都要有程序调试和处理错误的过程,并且这是整个程序能否获得成功使用的关键。前面第三章已经将此管理软件的界面以及程序代码设计完成,下面是本管理系统设计调试过程中遇到的一些重要的错误,以及相应的处理方法。

4.1.1  如何处理程序中“变量未定义”的错误

在登录管理系统以后,单击“生成报表”,弹出如图4-1所示的错误信息。单击【确定】按钮之后的VB开发环境如图4-2所示。

                        4-1 错误信息提示

经过分析,得知能引起这种错误的原因有:

(1)所使用的的变量或者模块在Option Explicit 语句中没有申明;

(2)所使用的对象变量已经申明,可是在后面程序代码中不小心拼错了变量名;

(3)所使用的变量或者模块已经申明,可是对象控件还没有被添加到工程当中来。

    对以上原因一一分析后,得出报表输出出错的原因是第3种。在连接水晶报表的时候,没有把“CrystalActiveXReportViewer1”控件添加到报表代码对应的窗体中,并且命名为“CRViewer1”。当窗体运行的时候,“CRViewer1”对应的控件是空的,故出现了没有定义的错误。

解决方法:

    在出错代码的窗体显示情况下,单击工程窗口中“查看对象”按钮,可以发现弹出的是一个空白的窗体,在此窗体上添加一个“CrystalActiveXReportViewer1”控件,并且命名为“CRViewer1”。

4-2 调试之后的VB开发环境窗口

4.1.2  如何处理程序中“路径不正确”的错误

在单击“生成报表”的时候,弹出如图4-3所示的错误。

                           4-3 错误提示

经过分析,得知出错原因是:调用报表的程序代码中没有指定出正确的报表路径。

解决方法:

将报表模板的rpt文件,存到此管理系统的程序代码目录下,并将正确的路径添加到相关程序中,如本文的正确路径程序代码为:

Set oRpt = oApp.OpenReport("F:\艾\新建文件夹\站务1.1版\a.rpt", 1) 

4.2  应用程序的编译

Visual Basic应用程序编辑、调试完成后,一般要对该程序进行编译,编译生成的可执行文件(.EXE)可以脱离Visual Basic环境,在Windows操作系统下运行。

 编译过程是在Visual Basic环境中进行,首先要把源程序装入内存。Visual Basic应用程序可以由多个模块文件组成,但只要装入工程文件,系统就会自动装入工程含有的所有其他模块文件。装入源程序后,执行“文件”菜单的“生成.EXE”命令,就会弹出“生成工程”对话框,在对话框中为即将生成的可执行文件选择保存位置和文件名后,单击【确定】按钮,Visual Basic读取程序中中的每个语句,对这些语句进行解释,并转换成微处理指令,然后把这些指令保存在可执行文件(.EXE)中。下面就是本次设计的编译过程。

在系统的编译之前,需要设置工程项目的属性。选择“工程|zhanwu属性”菜单,进行属性设置。

最后选择“文件|生成zhanwu.EXE”菜单,即生成相应的可执行文件zhanwu.EXE。

参考文献

[1] 陈燎宏.考勤管理系统程序设计[J].嘉兴学院学报,2001,13(3):41-43.

[2] 陈丽春.基于VB/SQL Server的管理系统的实现——智能化考勤系统设计[J].温州师范学院学报(自然科学版),2006,27(2):77-80.

[3] 刘韬,骆娟.Visual Basic数据库通用模块及典型系统开发实例导航[M].北京:人民邮电出版社,2006:100-112.

[4] 李晓黎,张巍.Visual Basic+SQL Server数据库应用系统开发与实例[M].北京:人民邮电出版社,2003:200-235.

[5] 黎明,刘成安.Visual Basic程序设计教程[M].成都:电子科技大学出版社,2004:1-3,267-279.

[6] Heikh Sabah Jaber Ali Al-Sabah, Sami M. Fereig and David J. Hoare. A database management system to document and analyse construction claims[M]. Advances in Engineering Software, Volume 34, Issue 8, August 2003, Pages 477-491.

[7] Jose A. Blakeley. Universal Data Access with OLE DB[A]. San Jose California, 23 February 1997 to 26 February 1997 .

[8] 赛奎春.Visual Basic信息系统开发实例精选[M].北京:机械工业出版社,2005:42-98.

[9] 周红, 刘光蓉, 张红武.智能化考勤管理系统的设计[J].武汉工业学院学报,2004,23(2):21-23.

[10] 赖步英,罗一帆.人事工资考勤系统.中山大学学报论丛[J],2001,5(21) :171-172.

[11] P. Pal, Z. Ahammad and P. Bhattacharyazhen d.A Visual Basic software tool for Intellectualized checking attendance analysis[A].Chemical Engineering Journal, In Press,Corrected Proof, Available online 28 November 2006.

[12] 张磊.VB中用ADO对象动态访问ACCESS[J].长春师范学院学报,2004,23(2):36-39.

[13] 王志东.用VB 访问数据库[J].集宁师专学报,2002,24(4) :29-30.

[14] 茆颖.用VB6.0实现Access数据库表对表关联[J].四川职业技术学院学报,2006,16(3):103.

[15] 祝亚军.城市公共交通系统智能化框架研究[A].城市公共交通,2005:40-43.

标签:控件,毕设,报表,数据库,考勤,源码,窗体,菜单
From: https://blog.csdn.net/qq_52030698/article/details/139266864

相关文章

  • 【精品毕设】基于JavaEE的高校通用排课系统(包含论文和源码)
    摘要“信息手段革命”转向“信息内容革命”,引发了全球性数字校园建设浪潮。在信息时代的今天,计算机参与事业单位日常业务管理以成为事业单位现代化管理的当务之急。随着电脑的普及与使用,现在的管理也提升了一个档次,渐渐实现了无纸化办公,即从原来的人工记录管理模式转变为电脑......
  • 2024最新ChatGPT网站源码+AI绘画系统源码,详细图文搭建教程/支持ChatGPT4.0/GPT-4o文档
    一、文章前言SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整测试下来非常完美,那么如何搭建部署AI创作系统呢?小编这里写一个详细图文教程吧。支持GPT-4o大模型、GPTs应用、GPT语音对话、联......
  • 基于java中的springboot框架实现医药管理系统项目演示【内附项目源码+论文说明】
    基于java中的springboot框架实现医药管理系统项目演示【内附项目源码+LW说明】摘要计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即......
  • 基于java中的springboot框架实现秒杀系统项目演示【内附项目源码+论文说明】
    基于java中的springboot框架实现秒杀系统项目演示【内附项目源码+LW说明】摘要社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。本次开发一套基于SpringBoo......
  • java+Angular+Nginx微服务架构+VUE 基于SaaS云部署、云计算的区域医院云HIS系统源码
    java+Angular+Nginx微服务架构+VUE基于SaaS云部署、云计算的区域医院云HIS系统源码HIS系统:可以根据医院规模、个性流程定制个性化程序;以临床工作为核心,方便医生的临床医疗行为,提高医疗服务质量,能提供临床专科数据分析系统,可用于医疗评估、生物医学研究、教育和医疗保健管理......
  • 婚恋交友系统源码,相亲app源码,相亲交友源码,同城交友,VIP会员,红娘认证,原生源码,免费终身售
    一站式的采购流程,保姆式的技术支持和售后服务售前咨询--专属客服充分了解您的需求、解决疑问、了解产品、明确需求。提供方案--以专业的角度根据您实际情况与需求给予最具性价比、最合适的方案选择。购买产品--一次购买,终身使用,企业化的购买流程,更有保障。安装部署......
  • 基于python的打外星人游戏课程设计项目(免费提供全套源码)
    下载地址如下:基于python的打外星人游戏课程设计项目(免费提供全套源码)资源-CSDN文库项目介绍项目背景近年来,游戏开发作为计算机科学教育的重要组成部分,逐渐受到重视。通过游戏开发课程,不仅可以提高学生的编程技能,还能激发他们的创造力和逻辑思维能力。基于Python的打外星人......
  • 基于Python的量子遗传算法实现(免费提供全部源码)
    下载地址如下:基于Python的量子遗传算法实现(免费提供全部源码)资源-CSDN文库项目介绍项目背景随着量子计算和人工智能技术的迅猛发展,量子遗传算法(QuantumGeneticAlgorithm,QGA)作为一种结合量子计算和经典遗传算法的优化方法,受到了广泛关注。传统遗传算法在处理复杂优化问......
  • 基于SSM和VUE的五子棋手机网络对战游戏的设计与实现(免费提供全套java开源项目源码+论
    下载地址如下:【免费】基于SSM和VUE的五子棋手机网络对战游戏的设计与实现(免费提供全套java开源项目源码+论文)资源-CSDN文库项目介绍项目背景五子棋是一种古老且流行的棋类游戏,简单易学但变化无穷。随着移动互联网和智能手机的普及,手机端网络对战游戏的需求日益增长。为了满......
  • 基于C++的二叉树的创建与遍历(免费提供源码)
    下载地址如下:上传明细-CSDN创作中心项目介绍背景二叉树作为一种常见的数据结构,在计算机科学和编程实践中占有重要地位。它广泛应用于搜索算法、排序算法、表达式解析、符号表以及各种数据库索引结构中。因此,掌握二叉树的创建和遍历是计算机科学领域的一项基本技能。本项目......