毕业设计(论文)-DELPHI人事档案管理系统.doc_第1页
毕业设计(论文)-DELPHI人事档案管理系统.doc_第2页
毕业设计(论文)-DELPHI人事档案管理系统.doc_第3页
毕业设计(论文)-DELPHI人事档案管理系统.doc_第4页
毕业设计(论文)-DELPHI人事档案管理系统.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学毕业设计(论文)人事档案管理系统学院(系): 专业班级: 学生姓名: 指导教师: -摘要- 人事档案管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。delphi是面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,不断修正和改进,直到形成用户满意的可行系统。关键字:控件、窗体、表。-前言-对于大多数国企而言,他们有一套比较系统的人力资源管理理念,并建立了一整套比较规范的人力资源管理方法。在积极建立企业现代企业管理机制的今天,仅仅靠原始的手工管理或简单的单机管理,人力资源部门面对大量的信息,无法有效率地将其中的重要部分提取出来,并做出相应的判断和处理。集团管理者的决策只能依据报表数据,在浪费大量人力、物力的同时无法做到实时监控,难以保证数据的准确性和及时性。因此,先进的管理思想在企业中实现就成为了一个可望而不可及的目标。 作为计算机应用的一部分,使用计算机对人事进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高商场人事管理的效率,也是科学化、正规化管理的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套人事管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。第一章为什么要开发一个人事管理系统?计算机已经成为我们学习和工作的得力助手:人力资源系统选型时提出了以下要求: 1)具有先进的人力资源管理理念; 2)可以满足多行业、多公司不同的人力资源管理要求; 3)实现集团化管理,实时监控各个专业、省市子公司的人力资源情况; 4)进行多层次数据汇总,为各层次管理者的决策分析提供数据; 5)具有完整的系统接口,满足灵活的数据导入与导出。 第二章 人事管理系统编程环境现状及设计目标简介 2.1 delphi和adoactivedataobjects结合了oledb的普遍性质那就是在诸如rdo和dao模型中可以找到的易于使用的特性.ado包含了所有可以被oledb标准接口描述的数据类型.换而言之,ado是可扩充的,不需要对你的部件做任何工作.数据的访问和操纵是任何实际的应用程序的一个固有部分.对于数据来说,无论它是否是关系型的,无论它是否存在一个dbms,也无论它的存储平台是什么,数据就是数据一个文件没有必要一定是给定的二进制格式. 开发者群体需要具有简单接口的现代的开发工具以快速访问数据.微软对此问题的回答是universaldataaccess(uda通用数据访问)体系结构,对此,stephenrauch的文章“managedatafrommyriadsourceswiththeuniversaldataaccessinterfaces”中有详细的阐述(msj,1997年9月).简单的说,uda是一种将oledb应用于实际的理论.所有的都被指向一个数据源一个电子表格,一条电子邮件消息,或一份as/400文档由oledb接口过滤并以一种通用的格式表示,这样应用程序能总是以同样的方式对数据进行访问.位于oledb上的并处理来自应用程序的调用的中间层被称作activedataobjects (ado).它是编写针对带有oledb提供者的任何类型的数据源的推荐标准.在ado之前的rdo是一种增加dao的客户/服务器能力,以提高其性能和可扩充性的当然的方法.根本上说来, rdo是一种位于odbcapi的上层的简便的封装.它揭示了了dao数据对象模型中的许多东西,但它缺乏进行数据访问的jet引擎.虽然这将予ado更快的速度,但它没法利用该引擎的许多特性,而且它只能访问关系型的数据库. ado2.0的思想就在于:为不同的应用程序访问相同的数据源创建一个更高层的公用层.尽管存在数据结构和组织间的物理位置的不同,编程的接口应该是一样的.为了找出rdo和ado之间的更多的不同, “exploringactivexdataobjectsfromanrdopointofview,你能在msdn的技术性文章部分中找到它.ado的出现并不意味着rdo的结束.实际上,微软承诺在可以预见的将来继续支持rdoado2.0有什么新特点? 对于ado1.5以前包括1.5的版本来说,从功能的角度来看rdo和ado不是完全相等的.等同就意味着你可以通过这两种方法解决同样的问题;它不是指存在重命名的或者优化的功能相同的对象.因此,移植到ado不是一个简单的事情.从另一方面来说,一旦你熟练掌握了rdo或dao技术的话,学习ado是件相当容易的事情ado2.0的新特性包括事件处理,记录集的延续,分层目录结构指针和数据成形,分布式事务处理,多维数据,远程数据服务(rds),以及对c+和java的支持的增强.在钻研一些visualbasic代码的时候将会见到所有的这些特性.ado对象模型是由相对数量较少的对象组成.不象rdo对象模型,每个主要的ado对象都能被个别的被创建.这就意味着,举例说吧,你不需要在创建有效的记录集对象前创建一个连接.dimcnasnewadodb.connectiondimrsasnewadodb.recordsetcn.openbibliors.openselect*fromtitleswheretitlelike%h,cnado2.0对象是connection,command,parameter,recordset,field,error和property.ado对象模型也包括四个类集:它们分别是一套相关的error,parameter,property和field对象.让我们来看看每个对象的主要特性.connection对象提供连接,该连接连接的程序中存有它正在访问的数据源.属性允许你定义:连接串,命令执行以及连接启动的间隔时间,数据提供者,(无论临时表位置是应该在客户端还是在服务器端),和对于数据的访问权限.方法有关于如下功能的:执行命令,打开和关闭一个连接和管理事务.在许多地方你可以指定你想使用的提供者:通过provider属性,在连接字符串中,或者甚至通过open方法.选择你最喜欢的实现方式,但要保证你没有为同样的连接指定多个的提供者.缺省的提供者(当你没有指定你自己的提供者的情况下)是msdasql,针对odbc的microsoftoledb提供者. command对象定义了一个sql声明,一个存储过程,或任何其他的你可能想让提供者执行的关于数据的操作.command的属性有:当前连接,最大允许执行时间和参数集.一个参数就是你将它作为参数传递给命令的值.在这些属性中用以区分一个参数的属性有:方向(输入,输出,或者两者都有),类型当然还有它们的值. 记录集对象也许是最典型的ado对象,然而它是最复杂的当中的一个.它表示命令执行的结果,并且它大多是以数据库的记录集的形式给出.一个记录集是由以行和域的形式表示的信息组成.它不一定非要映射成关系型数据库的记录.实际上,如同我早些时候解释的那样,ado是基于oledb并且能被用来可视化地访问任何数据源中的数据,这数据源包括非关系型的数据库.记录集提供了缓冲能力,它接受数据的变化,并且将这些变化以批处理的方式传给服务器.你可以浏览并对记录集的内容分类,如同列举和提取行.你也能通过如:删除,添加和刷新操作等任何方式修改数据.记录集存在跟连接的严格的关系,但是这不意味着你总是需要一个打开的连接来获得一个记录集.你也可以按如下方式进行:dimrsasnewadodb.recordsetsql=select*fromauthorsrs.opensql,pubs既然connection实际上是数据和命令传送的通道,所以该对象仍然被创建了,除了一个名字叫做recordset.activeconnection的属性外,它是不可见的并工作在后台. field对象是一列同类的数据.它提供了一种这样的编程接口,即能让你可以对单个单元的值以及基本的特征如:类型和大小进行读和写.所有给定记录集的field对象形成了一个field集.如我将在后面向你说明的,fields集隐藏着一个引人注目的特性,它将再次证明recordset对象的灵活性.最后是property对象.每个对象都有属性.提供的使用了ado的对象可能是各种各样的.但不存在这样一套属性即包含了所有可能的oledb提供者的静态的属性.因此,任何一个ado对象都有静态和动态的属性.第一套属性集:包括name,type,value和attributes,都可以通过如下的语法来访问:obj.propertyname最开始的三个属性都是自我说明性的.attributes是一种数字式的描述符,它是以按位的跟提供者的能力有关的一些预定义的属性组合.(它类似于com服务器的组件分类).动态属性是跟潜在的提供者类型相应的.它们被归进properties集合,并可以通过名字查询.obj.properties(propname)thenewrecordsetobject2.2 sql介绍通过sql命令,程序设计师或数据库管理员(dba)可以:(一)建立数据库的表格。(包括设置表格所可以使用之空间)(二)改变数据库系统环境设置。(三)针对某个数据库或表格,授予用户存取权限。(四)对数据库表格建立索引值。(五)修改数据库表格结构。(新建、删除或是修改表格字段)(六)对数据库进行数据的新建。(七)对数据库进行数据的删除。(八)对数据库进行数据的修改。(九)对数据库进行数据的查询。这几项便是通过sql命令可以完成的事情,看起来是不是比起“查询”两个字所代表的功能要多的多了呢? sql语法的分类其实sql命令并不是非常多,可是要把sql用到出神入化,却也只需要短短几个命令便够,因为sql命令是针对关系型数据库所建立出来的语法叙述,所以sql在这类数据库中所发挥的功能非常的强,以下将针对在vb中常用的sql语法基本命令加以分类介绍。在说明sql的命令以及使用语法之前,以下将sql做了的分类,在致上sql语法所使用到的类型,可以说都已包含在这些类别当中。 第一类、属性词(predicates)在sql命令中用来指明所要选择的记录的方式。如all、top与distinct等等。第二类、声明(declaration)针对sql parameter或parameter query 的名称与数据类型做声明,如parameters的声明等等。第三类、条件子句(clause)在sql的查询中,利用一些表达式定义出查询的条件,以缩小寻找的范围,如where。第四类、运算符(operator)与操作数(operation)在sql的查询中,与operation共同组成表达式(expression),如between.and 运算符与inner join操作数。第五类、函数(function)一些sql常见的函数,像是avg()是求算数平均数的函数。第六类、sql语句(statement)sql的语句,可以说是sql语法的主体,用来对某一个特定的数据库发出指示,并返回相关的数据,而sql的语法结构,基本上可以利用下面的式子来表示:命令条件子句例如:select*from tab where tab.name=a其中的“from.where”便是一个条件子句,其实sql的语法并不难,您只需记住这样的一个规则,相信可以很快的了解sql用法。 sql语法与命令select 语句selectpredicate*|table.*|table.field ,table.field2,. as alias1 ,alias2,.from tableexpression ,.in externaldatabasewhere.group by.having.order by.with owneraccess option select 语句包括下面几个部分predicate如前面所述,包括了all,distinct,distinctrow,与top 我们可以利用这样的语句去限制查询后所得的结果。 *从指定表格中指定所有的字段。 table针对被选择出的记录的字段,所指定表格的名称。 field1,field2想要读取数据的字段名称,如果包含了一个以上的字段,会依照列出的顺序来读取数据。 alias1,alias2用来替代在表格实际字段名称的化名。 tableexpression表格名称或包含我们所想要的数据的表格。 externaldatabase若使用到不是目前的数据库则将其名字定义在externaldatabase当中。 all,distinct,distinctrow,top属性词用法select all|distinct|distinctrow|top npercent from table all若是不指定任何的字段数据,则microsoft jet数据库引擎(database engine)将会选择所有的字段,并依据所定的条件查询出需求数据集。例如下面这两个例子将会具有相同的效果,都会从职员表格中返回所有字段的数据。例如:若是我们要查询出职员表格中的所有记录,可以通过下面的语句来完成。select all* from 职员表格; distinct对某个表格所选择的字段数据,略过重复的情况,也就是说,针对某个字段查询出来的记录结果是唯一的。例如有许多存放在职员表格的职员数据,也许会具有相同的姓名,所以若是我们用sql语句中的select distinct,则查询出来的结果将会针对不一样的姓名加以筛选。若是您把distinct 加以省略,则这样的查询会显示所有的记录。 distinctrow将整条记录重复的记录忽略掉,而不是只有针对某一个字段的数据。 table指定查询记录所需要的表格。例如:select distinctrow 公司名称from 顾客表格 inner join 订单表格on 顾客表格.顾客id订单表格.顾客idorder by 公司名称;如果您忽略 distinctrow 则会对每个公司产生一行以下的订单数据。此外,若是distinctrow只有用在一个表格当中,则会被省略掉。 top从第一条或最后一条开始(利用order by条件子句),返回特定条数的数据。例如:当您想要知道在2000年,班上前25名的学生姓名数据时,您可以输入这样的语句:select top 25 学生姓名form 学生表格where 毕业年份=1994order by 毕业成绩平均分数 desc;如果您没有加上order by 这行条件的话,您所得到的数据,将会随机的数据。此外,在top语句之后,除了可以加上数字以外,还可以利用保留字percent来查询。例如:select top 10 percent学生姓名from学生表格where毕业年份=1994order by毕业成绩平均desc; parameters(参数)声明的用法对于参数型的查询语法中,对参数的名称以及数据类型作 声明的操作。parameters name datatype,name datatype,. nameparameters的名称。您可以把参数名称当作字符串来使用,若是名称中包含了空字符串,可以利用中括号来处理,例如:“vbeden”。 datatype输入参数的数据类型。例如:若是您在查询时,需要机动的输入姓名 ,可以利用下列的方式完成:parameters “输入姓名” text;select*from 职员表格where姓名=“输入姓名:”;order by条件语句此条件子句,通常与select语句合并使用目的是将查询的结果,依照指定字段加以排序。select fieldlistfrom tablewhere selectcriteriaorder by fieldasc|desc,field2asc|desc,. fieldlist欲查询的字段名称。其中可以与all,distinct,disinctrow,或top一起来使用。 table欲查询的表格名称。 selectcriteria查询的标准设置。 field1指定要依照那个字段作为排序的依据,若是你没有加上order by查询出的数据集将不会作排序的操作。 asc递增顺序类别。(默认值) desc递减顺序类别。例如:或是我们要将输出数据依据出生的先后次序排列,可以利用下面的命令。select 姓名,生日from 职员表格order by 生日select lastname,firstnamefrom employeesorder by lastname asc; in 条件子句指定要速胜哪一个外部数据库的表格。(必须是microsoft jet数据库引擎所可以连接的数据库,如dbase,paradox等等)select|insertinto destination inpath|path type|type;database=pathfrom tableexpression inpath|path type|type;database=path destination欲插入数据的外部表格名称。 tableexpression表格名称或是被读取数据的表格名称。这个参数可以是一个单一的表格名称,或是一段已经被存储的sql查询等。 path包含该表格的完整路径名称。 type数据库的类型名称, 通常是当数据库部属于jet database时才会使用。(例如:dbase iii,dbase iv,paradox 3.x,paradox 4.x,或 btrieve) 例如:下面这两段的意义相同parta.from tablein dbase iv;database=c:dbasedatasales;partb.from tablein c:dbasedatasales dbase iv;例如:microsoft jet databaseselect 顾客编号from 顾客表格in customer.mdbwhere 顾客编号 like a*;其中customer.mdbo 为jet database 的数据库名称,其中包含了顾客表格。例如:dbase iii or ivselect 顾客编号from 顾客表格in c:dbasedatasales dbase iv;where 顾客编号 like a*;所以当我们使用不同于access 的数据库时,必须指明该数据库的类型名称。having 条件子句指定一特定的分组记录,并满足having 所指定的条件或状态,但条件是针对分组的条件设置。select fieldlistfrom tablewhere selectcriteriagroup by groupfieldlisthaving groupcriteria fieldlist显示被查询的字段名称。(可与all,distinct,distinctrow,或top相结合) table欲查询数据的表格名称。 selectcriteria选取标准。 groupfieldlist分组记录的字段名称,到多10个字段。而这些字段的顺序决定最高到最低的分组阶层。 groupcriteria决定什么样的分组记录要被显示。 having跟where 的用法相当类似,不同之处在于having必须用于group之后的分组数据上。例如:select 分类编,sum(库存数量)from 产品表格group by 分类编号having sum(库存数量)100 and 产品名称 like *纸; group by 条件子句依据指定的字段,将具有相同数值的记录合并成一条。select fieldlistfrom tablewhere criteriagroup by groupfieldlist fieldlist欲读取的字段名称。(可与all,distinct,distinctrow,或top合并使用) table被查询的表格名称。 groupfieldlist分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次。例如:select 姓名,count(姓名)as 职员姓名from 职员表格where 部门名称=业务部group by 姓名 from 条件子句指定表格名称或是查询,其中包含列在select语句的字段数据。select fieldlistfrom tableexpressionin externaldatabase fieldlist表格中的字段名称。(可与all,distinct,distinctrow,或top相结合) tableexpression表格名称,或多个表格的算式。 externaldatabase若该表格参考到外部的数据库时,将其完整的路径名称记下。例如:从职员表格下,查询出所有姓名字段的数据(只有姓名字段被查询,其他则不显示)。select 姓名 from 职员表格; where 条件子句指定查询的条件与限制。select fieldlistfrom tableexpressionwhere criteria fieldlist字段名称。(可与all,distinct,distinctrow,或top相结合) tableexpression表格名称,或多个表格的算式。 criteria查询的结果,必须依照这一限制标准。例如:要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句。select 姓名from 职员表格where 姓氏=李; between.and 运算符决定某一人数值是否介于特定的范围之内,此运算符只可以用在sql的语句中。exprnotbetween value1 and value2 expr指定要加以计算的字段与表达式的组合。 value1,value2所指明的数值范围。例如:若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做。select 姓名,年龄 between 25 and 30from 职员表格; like 操作数用来将一字符串与另一特定字符串样式(pattern)比较,并将符合该字符串样式的记录过滤出来。expression like pattern expression使用在where条件子句,sql表达式。 pattern用以比较的字符串样式。例如:若是你要查询出所有以“李”为首的姓氏,可以利用下面的式子。like 李* like操作数的多种范例: 1、多个字符: (1)a*a可筛选:aa,aba,abbba,不能筛选:abc(2)*ab*可筛选:abc,aabb,xab,不能筛选:azb,bac 2、特殊字符:a“*”a可筛选:a*a,不能筛选:aaa 3、单一字符:a?a可筛选:aaa,a3a,aba,不能筛选:abbba 4、单一数字:a#a可筛选:a0a,a1a,a2a,不能筛选:aaa,a10a 5、字符范围:“a-z”可筛选:f,p,j,不能筛选:2,& 6、指定字符以外部范围:“!a-z” 7、指定非数字:“!0-9”可筛选:a,a,&,,不能筛选:0,1,9 8、组合式结构:a“!b-m”#可筛选:an9,az0,a99,不能筛选:abc,aj0 sql数字函数1、avg:算数平均数avg(expr) expr字段名称或表达式。例如:若要计算职员身高超过165厘米的职员平均身高,可以利用下面的sql语句来完成。select avg(身高)as 平均身高from 职员表格 where 身高165; 2、count:计算记录条数count(expr) expr字段名称或表达式。例如:若是要统计出业务部门的职员人数,并查询出职员的姓名,可以利用下面的程序。select count(姓名) as 职员姓名from 职员表格where 部门名称=业务部; 3、first与last:返回某字段的第一条数据与最后一条数据。first(expr)last(expr) expr字段名称或表达式。例如:若是要找出货品数量字段的第一条数据与货品价格字段的最后一条数据时,可以利用下面的查询方式。select first(货品数量),last(货品价格)from 订单表格 4、max,与min:返回某字段的最大值与最小值。用法同first与last。 5、sum:返回某特定字段或是运算的总和数值。sum(expr) expr字段名称或表达式。例如:要计算出货品总价,可使用下面的程序。selectsum(单位价格*货品数量)as 货品总价 from 订单表格 多层sql查询顾名思义,多层的sql查询的便在于:“在一个sql语句中可以包含另一个sql查询语句,形成内部嵌套的查询类型。”comparisonany|all|some(sqlstatement)expressionnotin (sqlstatement)notexists(sqlstatement) comparison将表达式与内层查询的结果比较的操作。 expression对内层查询的结果作搜索的表达式。 sqlstatement为select语句构成的sql查询,必须用()将该语句括起来。例如:我们先从订单表格当中,查询出所有的单位,再将产品表格中的单位与的一一对比,查询出所有高于订单表格的单位价格的记录。select * from 产品表格where 单位价格any (select 单位价格 from 订单表格 where 折扣=.25);5)表中的每一个列值必须是不可分割的基本数据项。注意:当用户需要新的数据结构或表存放数据时,首先要生成一个表。语法:create table 表名 表约束(列名1 数据类型 缺省值1,列约束1(列名2 数据类型 缺省值2,列约束2列名n 数据类型 缺省值n,列约束ntablespace 表空间名称storage (存贮的子句)enable 约束名disable 约束名 插入数据 当一个表新建成时,它里面没有数据,通过向表中扦入数据,建成表的实例。语句句法:insert into 表名(列名1,)values(值1,值2,,值n)子查询;假设有一张表student如下所示:nonameage1001a121002b14将新学生e增加到上表中,并按照表的结构将信息添加完整,需要如下语句:insert into student valuse(1003, e,12); 修改数据 对表中已有数据进行修改,语句句法:update 表名set 列名1表达式1,列名2表达式2,where 条件;例如:对下表studentnonameage1001a121002b14将b的年纪改为18;应该执行以下语句:update student set age=18 where name=b; 删除数据 删除表中已有数据,不能删除不存在的数据。语句句法: delete from 表名 where 条件;例如:对下面student表进行删除,要删除其中年纪为12的学生;nonameage1001a121002b14delete from student where age12; 表结构的修改 在已存在的表中增加新列,语句句法:alter table 表名 add(新列名 数据类型(长度); 例如: alter table student add (department char(8);b.增加已有列的数据类型。 例如: alter table student modify(name varchar2(25); 表的删除 将已经存在的表删除,语句句法: drop table表名; 例如: drop table emp; 查询语句 select命令的语法为:select distinct|all *|模式名. 表名|视图名|快照名 .*| 表达式列别名 , 模式名. 表名|视图名| .*| 表达式列别名 from 模式名. 表名|视图名|快照名 数据库链名 表别名, 模式名. 表名|视图名|快照名 数据库链名表别名 where条件start with条件 connect by 条件group by表达式,表达式 having条件union|union all |intersect|minusselect命令order by表达式|位置 asc|desc , 表达式|位置asc|desc例如:对于student表:nonameage1001ae121002bt14(1) 查询年纪为12的学生姓名;select student.name from student where age=12;(2) 查询年纪在12至16岁之间的学生姓名;select student.name from student where age between 12 and 16;(3) 查询年纪不在12至16岁之间的学生姓名;select student.name from student where age not between 12 and 16;(4) 查询所有姓名以a开头的学生的姓名;select student.name from student where name like a%;(5) 列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;select avg(age), sum(age), max(age), min(age), max(age)-min(age);(6) 将所有学生按学号顺序升序排列;select * from student order by no desc;(7) 将所有学生按学号顺序升序排列;select * from student order by no asc;第三章 关键问题:使用关系型数据库使用delphi 7.0 实现关系型数据库 数据库的概念 使用中文access 2000可以从单一的数据库文件中组织用户信息。在此文件中,可将数据分开放在名为“表”,也就是前面所说的“数据表”的容器中,然后可使用联机窗体让网络用户查看、添加并更新表中的数据、“查询”查找并检索数据、使用“报表”按特定的布局分析或打印的数据。此外,通过创建数据访问页还能从internet上查看与更新或分析数据。与前面所介绍的两个软件一样,为了存储与使用数据,可对每一类信息创建一张表,此后就能在窗体、报表、或数据访问页中将多个表中的数据组织到一起,以及定义表之间的关系,以便于查找和检索仅满足指定条件的数据。初学者应注意,这里的“窗体”是前两个软件中没有的对象。 在使用中文access 2000建立用于构成数据库的表、窗体和其他对象之前,设计数据库是很重要的。因为无论是使用中文access 2000的数据库或是项目,都需要一个能够有效而且准确、及时地完成所需功能的数据库。来打开一个access数据库。首先,数据源名是mydb,也就是和系统共同认可的一个数据源名,下面,就使用这个数据源名,与系统进行对话。第一步,建立ado对象连接。进行这一步的目的是告诉系统我将要使用数据库了,请为我建立一个到数据库的连接。这一步的语法是:set 变量名=server.createobject(adodb.connection).例:set objconn=server.createobject(adodb.connection)下面来分析这个语句。首先,objconn这个变量是我们自已定的,它代表一个数据库连接。至于server.createobject(adodb.connection)这个语句,一看就可以大致猜出它们的意义,不就是建立一个ado对象吗?对了,什么是ado对象呢?进行每一个数据库的编程时,都要进行这一步。至于道理,我们慢慢会明白的。第二步,利用建立的这个连接,来告诉系统要打开的数源,这个数据源就是设置的数据源名。它就是mydb。利用它,可以很方便地打开一个数据库。以我们上一课的设置为例,打开我们的db2.mdb,可以使用以下语法:objconn.open dsn=mydb;database=db2;uid=;pwd=;其中dsn就是所定的数源名。database就是数据库名。uid是user id,即用户名,而pwd则是这个用户的访问密码,这只有在我们为这个数据库加入了密码之后才有用,我们暂且不讨论它。第一步和第二步出现了两个objconn,的确,第一步的语句是将一个到数据库的连接赋予objconn这个变量,也就是说,经过第一步,objconn实际上就是代表了这个连接。这样自然可以用这个连接的open方法来打开一个数据库了。打开了这个数据库了, set objconn=server.createobject(adodb.connection)objconn.open dsn=mydb;database=db2;uid=;pwd=;第四章 系统总体规划系统总体规划系统功能 1、 登陆界面:2、. 功能选择模块:,进入主界面后可以进行功能的选择。 3、 员工信息模块:按员工信息进行档案登记。 4、 合同管理模块:对购销合同进行管理。5、工资管理模块:对人事工资进行管理。6、退出系统模块:退出系统返回widnows界面。 第五章 系统具体实现和以前的版本相比,delphip在多数地方已不需要写代码,表单和对象的属性提供了控制许多对象的方法,但是总有些事情是要用程序去实现的。511系统具体实现 登陆界面在登陆界面的文本输入密码,方可进入系统。使用了if then 语句主界面主界面包含 1、员工档案输入:按员工信息进行档案登记。 2、员工档案修改:以表格的方式对员工档案进行修改。3、,工资管理模块:对人事工资进行管理。 4、考勤模块。 5、统计模块:对部门,职位,职级人数进行统计。513 各个模块的实现1、员工信息模块:按员工信息进行档案登记。 unit unit2;interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, dbcgrids, db, adodb, grids, dbgrids, extctrls, dbctrls, stdctrls, mask;type tform2 = class(tform) adotable1: tadotable; datasource1: tdatasource; dbnavigator1: tdbnavigator; label1: tlabel; dbedit1: tdbedit; button1: tbutton; dbedit2: tdbedit; dbedit3: tdbedit; dbedit4: tdbedit; dbedit5: tdbedit; dbedit6: tdbedit; dbedit7: tdbedit; label2: tlabel; label3: tlabel; label4: tlabel; label5: tlabel; label6: tlabel; label7: tlabel; label8: tlabel; dbedit8: tdbedit; label9: tlabel; dbedit9: tdbedit; label10: tlabel; label11: tlabel; dbedit10: tdbedit; dbedit11: tdbedit; label12: tlabel; label13: tlabel; dbedit12: tdbedit; label14: tlabel; dbedit13: tdbedit; label15: tlabel; dbedit14: tdbedit; procedure button1click(sender: tobject); procedure button2click(sender: tobject); private private declarations public public declarations end;var form2: tform2;implementation$r *.dfmprocedure tform2.button1click(sender: tobject);beginadotable1.appendend;procedure tform2.

温馨提示

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

评论

0/150

提交评论