• 5.28 MB
  • 2022-04-22 13:33:26 发布

人事档案管理系统毕业论文.doc

  • 37页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'人事档案管理系统毕业论文第一章为什么要开发一个人事管理系统?计算机已经成为我们学习和工作的得力助手:人力资源系统选型时提出了以下要求:   1).具有先进的人力资源管理理念;  2).可以满足多行业、多公司不同的人力资源管理要求;  3).实现集团化管理,实时监控各个专业、省市子公司的人力资源情况;  4).进行多层次数据汇总,为各层次管理者的决策分析提供数据;  5).具有完整的系统接口,满足灵活的数据导入与导出。。第二章人事管理系统编程环境现状及设计目标简介2.1Delphi和ADOActive Data Objects结合了OLE DB的普遍性质—那就是在诸如RDO和DAO模型中可以找到的易于使用的特性.ADO包含了所有可以被OLE DB标准接口描述的数据类型.换而言之,ADO是可扩充的,不需要对你的部件做任何工作.数据的访问和操纵是任何实际的应用程序的一个固有部分.对于数据来说,无论它是否是关系型的,无论它是否存在一个DBMS,也无论它的存储平台是什么,数据就是数据—一个文件没有必要一定是给定的二进制格式. 开发者群体需要具有简单接口的现代的开发工具以快速访问数据.微软对此问题的回答是Universal Data Access(UDA通用数据访问)体系结构,对此,Stephen Rauch的文章 “Manage Data from MyriadSources with the Universal Data Access Interfaces”中有详细的阐述(MSJ,1997年9月).简单的说,UDA是一种将OLE DB应用于实际的理论.所有的都被指向一个数据源—一个电子表格,一条电子邮件消息,或一份AS/400文档—由OLE DB接口过滤并以一种通用的格式表示,这样应用程序能总是以同样的方式对数据进行访问.位于OLE DB上的并处理来自应用程序的调用的中间层被称作Active Data Objects(ADO).它是编写针对带有OLE DB提供者的任何类型的数据源的推荐标准.在ADO之前的RDO是一种增加DAO的客户/服务器能力,以提高其性能和可扩充性的当然的方法.根本上说来,RDO是一种位于ODBC API的上层的简便的封装.它揭示了了DAO数据对象模型中的许多东西,但它缺乏进行数据访问的Jet引擎.虽然这将予ADO更快的速度,但它没法利用该引擎的许多特性,而且它只能访问关系型的数据库.ADO 2.0的思想就在于:为不同的应用程序访问相同的数据源创建一个更高层的公用层.尽管存在数据结构和组织间的物理位置的不同,编程的接口应该是一样的.为了找出RDO和ADO之间的更多的不同,“ExploringActiveX Data Objects from an RDO Point of View,"你能在MSDN的技术性文章部分中找到它.ADO的出现并不意味着RDO的结束.实际上,微软承诺在可以预见的将来继续支持RDOADO 2.0有什么新特点?对于ADO1.5以前包括1.5的版本来说,从功能的角度来看RDO和ADO不是完全相等的.等同就意味着你可以通过这两种方法解决同样的问题;它不是指存在重命名的或者优化的功能相同的对象.因此,移植到ADO不是一个简单的事情.从另一方面来说,一旦你熟练掌握了RDO或DAO技术的话,学习ADO是件相当容易的事情ADO 2.0的新特性包括事件处理,记录集的延续,分层目录结构指针和数据成形,分布式事务处理,多维数据,远程数据服务(RDS),以及对C++和Java的支持的增强.在钻研一些Visual Basic代码的时候将会见到所有的这些特性. ADO对象模型是由相对数量较少的对象组成.不象RDO对象模型,每个主要的ADO对象都能被个别的被创建.这就意味着,举例说吧,你不需要在创建有效的记录集对象前创建一个连接.Dim cn As New ADODB.ConnectionDim rs As New ADODB.Recordsetcn.Open "Biblio"rs.Open "select * from titles where title like "%h"", cnADO 2.0对象是Connection,Command,Parameter,Recordset,Field,Error和Property.ADO对象模型也包括四个类集:它们分别是一套相关的Error,Parameter,Property和Field对象.让我们来看看每个对象的主要特性.Connection对象提供连接,该连接连接的程序中存有它正在访问的数据源.属性允许你定义:连接串,命令执行以及连接启动的间隔时间,数据提供者,(无论临时表位置是应该在客户端还是在服务器端),和对于数据的访问权限.方法有关于如下功能的:执行命令,打开和关闭一个连接和管理事务.在许多地方你可以指定你想使用的提供者:通过Provider属性,在连接字符串中,或者甚至通过Open方法.选择你最喜欢的实现方式,但要保证你没有为同样的连接指定多个的提供者.缺省的提供者(当你没有指定你自己的提供者的情况下)是MSDASQL,针对ODBC的Microsoft OLE DB提供者.Command对象定义了一个SQL声明,一个存储过程,或任何其他的你可能想让提供者执行的关于数据的操作.Command的属性有:当前连接,最大允许执行时间和参数集.一个参数就是你将它作为参数传递给命令的值.在这些属性中用以区分一个参数的属性有:方向(输入,输出,或者两者都有),类型当然还有它们的值. 记录集对象也许是最典型的ADO对象,然而它是最复杂的当中的一个.它表示命令执行的结果,并且它大多是以数据库的记录集的形式给出.一个记录集是由以行和域的形式表示的信息组成.它不一定非要映射成关系型数据库的记录.实际上,如同我早些时候解释的那样,ADO是基于OLE DB并且能被用来可视化地访问任何数据源中的数据,这数据源包括非关系型的数据库.记录集提供了缓冲能力,它接受数据的变化,并且将这些变化以批处理的方式传给服务器.你可以浏览并对记录集的内容分类,如同列举和提取行.你也能通过如:删除,添加和刷新操作等任何方式修改数据.记录集存在跟连接的严格的关系,但是这不意味着你总是需要一个打开的连接来获得一个记录集.你也可以按如下方式进行:Dim RS As New ADODB.Recordsetsql = "select * from authors"RS.Open sql, "Pubs"既然Connection实际上是数据和命令传送的通道,所以该对象仍然被创建了,除了一个名字叫做Recordset.ActiveConnection的属性外,它是不可见的并工作在后台.Field对象是一列同类的数据.它提供了一种这样的编程接口,即能让你可以对单个单元的值以及基本的特征如:类型和大小进行读和写.所有给定记录集的Field对象形成了一个Field集.如我将在后面向你说明的, Fields集隐藏着一个引人注目的特性,它将再次证明Recordset对象的灵活性.最后是Property对象.每个对象都有属性.提供的使用了ADO的对象可能是各种各样的.但不存在这样一套属性即包含了所有可能的OLE DB提供者的静态的属性.因此,任何一个ADO对象都有静态和动态的属性.第一套属性集:包括Name,Type,Value和Attributes,都可以通过如下的语法来访问:obj.PropertyName最开始的三个属性都是自我说明性的.Attributes是一种数字式的描述符,它是以按位的跟提供者的能力有关的一些预定义的属性组合.(它类似于COM服务器的组件分类).动态属性是跟潜在的提供者类型相应的.它们被归进Properties集合,并可以通过名字查询.obj.Properties("propName")The New Recordset Object    2.2sql介绍通过SQL命令,程序设计师或数据库管理员(DBA)可以:   (一)建立数据库的表格。(包括设置表格所可以使用之空间)  (二)改变数据库系统环境设置。  (三)针对某个数据库或表格,授予用户存取权限。  (四)对数据库表格建立索引值。  (五)修改数据库表格结构。(新建、删除或是修改表格字段)  (六)对数据库进行数据的新建。  (七)对数据库进行数据的删除。  (八)对数据库进行数据的修改。  (九)对数据库进行数据的查询。  这几项便是通过SQL命令可以完成的事情,看起来是不是比起“查询”两个字所代表的功能要多的多了呢?  SQL语法的分类  其实SQL命令并不是非常多,可是要把SQL用到出神入化,却也只需要短短几个命令便够,因为SQL命令是针对关系型数据库所建立出来的语法叙述,所以SQL在这类数据库中所发挥的功能非常的强,以下将针对在VB中常用的SQL语法基本命令加以分类介绍。在说明SQL的命令以及使用语法之前,以下将SQL做了的分类,在致上SQL语法所使用到的类型,可以说都已包含在这些类别当中。  第一类、属性词(Predicates)  在SQL命令中用来指明所要选择的记录的方式。如ALL、TOP与DISTINCT等等。  第二类、声明(Declaration)  针对SQLParameter或ParameterQuery的名称与数据类型做声明,如PARAMETERS的声明等等。  第三类、条件子句(Clause)  在SQL的查询中,利用一些表达式定义出查询的条件,以缩小寻找的范围,如WHERE。  第四类、运算符(Operator)与操作数(Operation)  在SQL的查询中,与Operation共同组成表达式(Expression),如BETWEEN....AND运算符与INNERJOIN操作数。  第五类、函数(Function)   一些SQL常见的函数,像是AVG()是求算数平均数的函数。  第六类、SQL语句(Statement)  SQL的语句,可以说是SQL语法的主体,用来对某一个特定的数据库发出指示,并返回相关的数据,而SQL的语法结构,基本上可以利用下面  的式子来表示:命令+条件子句  例如:  SELECT*FROMTABWHERETAB.NAME="A"  其中的“FROM....WHERE”便是一个条件子句,其实SQL的语法并不难,您只需记住这样的一个规则,相信可以很快的了解SQL用法。  SQL语法与命令SELECT语句SELECT[predicate]{*|table.*|[table.]field[,[table.]field2[,...]]}[ASalias1[,alias2[,...]]]FROMtableexpression[,...][INexternaldatabase][WHERE...][GROUPBY...][HAVING...][ORDERBY...][WITHOWNERACCESSOPTION]SELECT语句包括下面几个部分predicate如前面所述,包括了ALL,DISTINCT,DISTINCTROW,与TOP我们可以利用这样的语句去限制查询后所得的结果。  *  从指定表格中指定所有的字段。  table   针对被选择出的记录的字段,所指定表格的名称。 field1,field2  想要读取数据的字段名称,如果包含了一个以上的字段,会依照列出的顺序来读取数据。  alias1,alias2  用来替代在表格实际字段名称的化名。  tableexpression  表格名称或包含我们所想要的数据的表格。  externaldatabase  若使用到不是目前的数据库则将其名字定义在externaldatabase当中。   ALL,DISTINCT,DISTINCTROW,TOP属性词用法  SELECT[ALL|DISTINCT|DISTINCTROW|[TOPn[PERCENT]]]FROMtable  ALL  若是不指定任何的字段数据,则MicrosoftJet数据库引擎(databaseengine)将会选择所有的字段,并依据所定的条件查询出需求数据集。例如下面这两个例子将会具有相同的效果,都会从职员表格中返回所有字段的数据。  例如:  若是我们要查询出职员表格中的所有记录,可以通过下面的语句来完成。SELECTALL*FROM职员表格;DISTINCT  对某个表格所选择的字段数据,略过重复的情况,也就是说,针对某个字段查询出来的记录结果是唯一的。例如有许多存放在职员表格的职员  数据,也许会具有相同的姓名,所以若是我们用SQL语句中的SELECTDISTINCT,则查询出来的结果将会针对不一样的姓名加以筛选。若是您把  DISTINCT加以省略,则这样的查询会显示所有的记录。  DISTINCTROW   将整条记录重复的记录忽略掉,而不是只有针对某一个字段的数据。  table  指定查询记录所需要的表格。  例如:  SELECTDISTINCTROW公司名称  FROM顾客表格INNERJOIN订单表格  ON顾客表格.顾客ID=订单表格.顾客ID  ORDERBY公司名称;  如果您忽略DISTINCTROW则会对每个公司产生一行以下的订单数据。此外,若是DISTINCTROW只有用在一个表格当中,则会被省略掉。  TOP  从第一条或最后一条开始(利用ORDERBY条件子句),返回特定条数的数据。  例如:  当您想要知道在2000年,班上前25名的学生姓名数据时,您可以输入这样的语句:  SELECTTOP25学生姓名  FORM学生表格  WHERE毕业年份=1994  ORDERBY毕业成绩平均分数DESC;  如果您没有加上ORDERBY这行条件的话,您所得到的数据,将会随机的数据。此外,在TOP语句之后,除了可以加上数字以外,还可以利用保留  字PERCENT来查询。  例如:  SELECTTOP10PERCENT学生姓名  FROM学生表格  WHERE毕业年份=1994  ORDERBY毕业成绩平均DESC;   PARAMETERS(参数)声明的用法  对于参数型的查询语法中,对参数的名称以及数据类型作声明的操作。  PARAMETERSnamedatatype[,namedatatype[,...]]  name  PARAMETERS的名称。您可以把参数名称当作字符串来使用,若是名称中包含了空字符串,可以利用中括号来处理,例如:“VBeden”。  datatype  输入参数的数据类型。  例如:  若是您在查询时,需要机动的输入姓名,可以利用下列的方式完成:  PARAMETERS“输入姓名”Text;  SELECT*  FROM职员表格  WHERE姓名=“输入姓名:”;ORDERBY条件语句  此条件子句,通常与SELECT语句合并使用目的是将查询的结果,依照指定字段加以排序。  SELECTfieldlist  FROMtable  WHEREselectcriteria  ORDERBYfield[ASC|DESC][,field2[ASC|DESC][,...]]  fieldlist  欲查询的字段名称。其中可以与ALL,DISTINCT,DISINCTROW,或TOP一起来使用。  table  欲查询的表格名称。  selectcriteria  查询的标准设置。  field1  指定要依照那个字段作为排序的依据,若是你没有加上ORDERBY查询出的数据集将不会作排序的操作。   ASC  递增顺序类别。(默认值)  DESC  递减顺序类别。  例如:  或是我们要将输出数据依据出生的先后次序排列,可以利用下面的命令。  SELECT姓名,生日  FROM职员表格  ORDERBY生日  SELECTLastName,FirstName  FROMEmployees  ORDERBYLastNameASC;  IN条件子句  指定要速胜哪一个外部数据库的表格。(必须是MicrosoftJet数据库引擎所可以连接的数据库,如dBase,Paradox等等)  SELECT|INSERT]INTOdestinationIN{path|["path""type"]|[""[type;DATABASE=path]]}FROMtableexpressionIN{path|["path""type"]|[""[type;DATABASE=path]]}destination  欲插入数据的外部表格名称。  tableexpression  表格名称或是被读取数据的表格名称。这个参数可以是一个单一的表格名称,或是一段已经被存储的SQL查询等。  path   包含该表格的完整路径名称。  type  数据库的类型名称,通常是当数据库部属于Jetdatabase时才会使用。(例如:dBASEIII,dBASEIV,Paradox3.x,Paradox4.x,或Btrieve)  例如:下面这两段的意义相同PartA....FROMTableIN""[dBASEIV;DATABASE=C:DBASEDATASALES;];PartB....FROMTableIN"C:DBASEDATASALES""dBASEIV;"  例如:MicrosoftJetdatabaseSELECT顾客编号FROM顾客表格INCUSTOMER.MDBWHERE顾客编号Like"A*";其中CUSTOMER.MDBO为Jetdatabase的数据库名称,其中包含了顾客表格。例如:dBASEIIIorIVSELECT顾客编号FROM顾客表格IN"C:DBASEDATASALES""dBASEIV;"WHERE顾客编号Like"A*";所以当我们使用不同于ACCESS的数据库时,必须指明该数据库的类型名称。HAVING条件子句  指定一特定的分组记录,并满足HAVING 所指定的条件或状态,但条件是针对分组的条件设置。SELECTfieldlistFROMtableWHEREselectcriteriaGROUPBYgroupfieldlistHAVINGgroupcriteriafieldlist显示被查询的字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)table欲查询数据的表格名称。selectcriteria选取标准。groupfieldlist分组记录的字段名称,到多10个字段。而这些字段的顺序决定最高到最低的分组阶层。groupcriteria决定什么样的分组记录要被显示。HAVING跟WHERE的用法相当类似,不同之处在于HAVING必须用于GROUP之后的分组数据上。例如:SELECT分类编,Sum(库存数量)FROM产品表格GROUPBY分类编号HAVINGSum(库存数量)>100AND产品名称LIKE"*纸";  GROUPBY条件子句  依据指定的字段,将具有相同数值的记录合并成一条。SELECTfieldlistFROMtable WHEREcriteriaGROUPBYgroupfieldlistfieldlist欲读取的字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP合并使用)table被查询的表格名称。groupfieldlist分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次。例如:SELECT姓名,Count(姓名)AS职员姓名FROM职员表格WHERE部门名称="业务部"GROUPBY姓名   FROM条件子句  指定表格名称或是查询,其中包含列在SELECT语句的字段数据。SELECTfieldlistFROMtableexpression[INexternaldatabase]fieldlist表格中的字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)tableexpression表格名称,或多个表格的算式。externaldatabase若该表格参考到外部的数据库时,将其完整的路径名称记下。例如:从职员表格下,查询出所有姓名字段的数据(只有姓名字段被查询,其他则不显示)。SELECT姓名FROM职员表格;    WHERE条件子句  指定查询的条件与限制。SELECTfieldlistFROMtableexpressionWHEREcriteriafieldlist字段名称。(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)tableexpression表格名称,或多个表格的算式。criteria查询的结果,必须依照这一限制标准。例如:要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句。SELECT姓名FROM职员表格WHERE姓氏="李";BETWEEN...AND运算符  决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中。expr[Not]BETWEENvalue1ANDvalue2expr指定要加以计算的字段与表达式的组合。value1,value2所指明的数值范围。例如: 若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做。SELECT姓名,年龄BETWEEN25AND30FROM职员表格;   LIKE操作数  用来将一字符串与另一特定字符串样式(pattern)比较,并将符合该字符串样式的记录过滤出来。expressionLIKE"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语句来完成。  SELECTAvg(身高)  AS平均身高  FROM职员表格WHERE身高>165;  2、COUNT:计算记录条数  COUNT(expr)  expr  字段名称或表达式。  例如:   若是要统计出业务部门的职员人数,并查询出职员的姓名,可以利用下面的程序。  SELECTCount(姓名)AS职员姓名  FROM职员表格  WHERE部门名称="业务部";  3、FIRST与LAST:返回某字段的第一条数据与最后一条数据。  FIRST(expr)  LAST(expr)  expr  字段名称或表达式。  例如:  若是要找出货品数量字段的第一条数据与货品价格字段的最后一条数据时,可以利用下面的查询方式。  SELECTFIRST(货品数量),LAST(货品价格)  FROM订单表格  4、MAX,与MIN:返回某字段的最大值与最小值。  用法同FIRST与LAST。  5、SUM:返回某特定字段或是运算的总和数值。  SUM(expr)  expr  字段名称或表达式。  例如:  要计算出货品总价,可使用下面的程序。  SELECT  Sum(单位价格*货品数量)  AS货品总价FROM订单表格  多层SQL查询  顾名思义,多层的SQL查询的便在于:“在一个SQL语句中可以包含另一个SQL查询语句,形成内部嵌套的查询类型。”comparison[ANY|ALL|SOME](sqlstatement) expression[NOT]IN(sqlstatement)[NOT]EXISTS(sqlstatement)comparison将表达式与内层查询的结果比较的操作。expression对内层查询的结果作搜索的表达式。sqlstatement为SELECT语句构成的SQL查询,必须用()将该语句括起来。  例如:  我们先从订单表格当中,查询出所有的单位,再将产品表格中的单位与的一一对比,查询出所有高于订单表格的单位价格的记录。  SELECT*FROM产品表格  WHERE单位价格>ANY(SELECT单位价格FROM订单表格WHERE折扣>=.25);5)表中的每一个列值必须是不可分割的基本数据项。注意:当用户需要新的数据结构或表存放数据时,首先要生成一个表。语法:CREATETABLE表名[表约束](列名1数据类型[缺省值1,列约束1](列名2数据类型[缺省值2,列约束2]…列名n数据类型[缺省值n,列约束n] [TABLESPACE表空间名称][STORAGE(存贮的子句)][ENABLE约束名][DISABLE约束名] ·插入数据 当一个表新建成时,它里面没有数据,通过向表中扦入数据,建成表的实例。语句句法:INSERTINTO表名[(列名1,…)]VALUES(值1,值2,…,值n)[子查询];假设有一张表Student如下所示:NONAMEAGE1001A121002B14将新学生E增加到上表中,并按照表的结构将信息添加完整,需要如下语句:INSERTINTOSTUDENTVALUSE(1003,"E",12); ·修改数据对表中已有数据进行修改,语句句法:UPDATE表名SET列名1=表达式1,列名2=表达式2,…WHERE条件;例如:对下表Student NONAMEAGE1001A121002B14将B的年纪改为18;应该执行以下语句:UPDATESTUDENTSETAGE=18WHERENAME="B"; ·删除数据删除表中已有数据,不能删除不存在的数据。语句句法:DELETEFROM表名WHERE条件;例如:对下面Student表进行删除,要删除其中年纪为12的学生;NONAMEAGE1001A121002B14DELETEFROMSTUDENTWHEREAGE=12;·表结构的修改在已存在的表中增加新列,语句句法:ALTERTABLE表名ADD(新列名数据类型(长度));   例如:   ALTERTABLESTUDENTADD(DEPARTMENTCHAR(8));b.增加已有列的数据类型。   例如:   ALTERTABLESTUDENTMODIFY(NAMEVARCHAR2(25));  ·表的删除将已经存在的表删除,语句句法:   DROPTABLE表名;   例如:   DROPTABLEEMP; ·查询语句SELECT命令的语法为:SELECT[DISTINCT|ALL]{*|模式名.]{表名|视图名|快照名].*…|{表达式[列别名]…}}[,[模式名.]{表名|视图名|}.*…|表达式[列别名]]…FROM[模式名.]{表名|视图名|快照名}[@数据库链名][表别名][,[模式名.]{表名|视图名|快照名}[@数据库链名][表别名]]…[WHERE条件][STARTWITH条件CONNECTBY条件][GROUPBY表达式[,表达式]…[HAVING条件][UNION|UNIONALL|INTERSECT|MINUS]SELECT命令[ORDERBY{表达式|位置}[ASC|DESC][,{表达式|位置[ASC|DESC]}]…]例如:对于STUDENT表:NONAMEAGE1001AE121002BT14(1)查询年纪为12的学生姓名; SELECTSTUDENT.NAMEFROMSTUDENTWHEREAGE=12;(2)查询年纪在12至16岁之间的学生姓名;SELECTSTUDENT.NAMEFROMSTUDENTWHEREAGEBETWEEN12AND16;(3)查询年纪不在12至16岁之间的学生姓名;SELECTSTUDENT.NAMEFROMSTUDENTWHEREAGENOTBETWEEN12AND16;(4)查询所有姓名以A开头的学生的姓名;SELECTSTUDENT.NAMEFROMSTUDENTWHERENAMELIKE"A%";(5)列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;SELECTAVG(AGE),SUM(AGE),MAX(AGE),MIN(AGE),MAX(AGE)-MIN(AGE);(6)将所有学生按学号顺序升序排列;SELECT*FROMSTUDENTORDERBYNODESC;(7)将所有学生按学号顺序升序排列;SELECT*FROMSTUDENTORDERBYNOASC; 第三章关键问题:使用关系型数据库使用DELPHI7.0实现关系型数据库数据库的概念使用中文Access2000可以从单一的数据库文件中组织用户信息。在此文件中,可将数据分开放在名为“表”,也就是前面所说的“数据表”的容器中,然后可使用联机窗体让网络用户查看、添加并更新表中的数据、“查询”查找并检索数据、使用“报表”按特定的布局分析或打印的数据。此外,通过创建数据访问页还能从Internet上查看与更新或分析数据。与前面所介绍的两个软件一样,为了存储与使用数据,可对每一类信息创建一张表,此后就能在窗体、报表、或数据访问页中将多个表中的数据组织到一起,以及定义表之间的关系,以便于查找和检索仅满足指定条件的数据。初学者应注意,这里的“窗体”是前两个软件中没有的对象。  在使用中文Access2000建立用于构成数据库的表、窗体和其他对象之前,设计数据库是很重要的。因为无论是使用中文Access2000的数据库或是项目,都需要一个能够有效而且准确、及时地完成所需功能的数据库。来打开一个ACCESS数据库。  首先,数据源名是mydb,也就是和系统共同认可的一个数据源名,下面,就使用这个数据源名,与系统进行对话。  第一步,建立ADO对象连接。进行这一步的目的是告诉系统我将要使用数据库了,请为我建立一个到数据库的连接。这一步的语法是:set变量名=server.createobject("adodb.connection").例: setobjconn=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是userID,即用户名,而pwd则是这个用户的访问密码,这只有在我们为这个数据库加入了密码之后才有用,我们暂且不讨论它。第一步和第二步出现了两个objconn,的确,第一步的语句是将一个到数据库的连接赋予objconn这个变量,也就是说,经过第一步,objconn实际上就是代表了这个连接。这样自然可以用这个连接的open方法来打开一个数据库了。  打开了这个数据库了,setobjconn=server.createobject("adodb.connection")objconn.open"dsn=mydb;database=db2;uid=;pwd=;" 第四章系统总体规划系统总体规划系统功能1、登陆界面:2、.功能选择模块:,进入主界面后可以进行功能的选择。3、员工信息模块:按员工信息进行档案登记。4、合同管理模块:对购销合同进行管理。5、工资管理模块:对人事工资进行管理。6、退出系统模块:退出系统返回WIDNOWS界面。 第五章系统具体实现和以前的版本相比,DELPHIP在多数地方已不需要写代码,表单和对象的属性提供了控制许多对象的方法,但是总有些事情是要用程序去实现的。5.1.1系统具体实现登陆界面在登陆界面的文本输入密码,方可进入系统。使用了IFTHEN语句主界面 主界面包含1、员工档案输入:按员工信息进行档案登记。2、员工档案修改:以表格的方式对员工档案进行修改。 3、,工资管理模块:对人事工资进行管理。4、考勤模块。5、统计模块:对部门,职位,职级人数进行统计。 5.1.3各个模块的实现1、员工信息模块:按员工信息进行档案登记。unitUnit2;interfaceusesWindows,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;procedureButton1Click(Sender:TObject);procedureButton2Click(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varForm2:TForm2;implementation{$R*.dfm}procedureTForm2.Button1Click(Sender:TObject);beginADOTable1.Appendend;procedureTForm2.Button2Click(Sender:TObject);beginADOTable1.UpdateRecordend; end.2、员工工资管理模块。unitUnit3;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,DB,ADODB,ExtCtrls,DBCtrls,Grids,DBGrids,StdCtrls;typeTForm3=class(TForm)ADOTable1:TADOTable;DataSource1:TDataSource;DBGrid1:TDBGrid;DBNavigator1:TDBNavigator;Label1:TLabel;private{Privatedeclarations}public{Publicdeclarations}end;varForm3:TForm3; implementation{$R*.dfm}end.3、,员工档案修改模块。unitUnit4;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,DBCtrls,Grids,DBGrids,DB,ADODB,StdCtrls;typeTForm4=class(TForm)ADOTable1:TADOTable;DataSource1:TDataSource;DBGrid1:TDBGrid;DBNavigator1:TDBNavigator;Label1:TLabel;private{Privatedeclarations}public{Publicdeclarations}end;varForm4:TForm4; implementation{$R*.dfm}end.4、考勤模块:。unitUnit5;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,Grids,DBGrids,DB,ADODB,StdCtrls,ExtCtrls,DBCtrls;typeTForm5=class(TForm)ADOTable1:TADOTable;DataSource1:TDataSource;Label1:TLabel;DBGrid1:TDBGrid;DBNavigator1:TDBNavigator;private{Privatedeclarations}public{Publicdeclarations}end; varForm5:TForm5;implementation{$R*.dfm}end.5.统计界面unitUnit7;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,DB,ADODB,Grids,DBGrids,StdCtrls;typeTForm7=class(TForm)ADOTable1:TADOTable;DataSource1:TDataSource;DataSource2:TDataSource;DataSource3:TDataSource;DataSource4:TDataSource;ADOTable2:TADOTable;ADOTable3:TADOTable;ADOTable4:TADOTable;DBGrid1:TDBGrid; Label1:TLabel;DBGrid2:TDBGrid;Label2:TLabel;DBGrid3:TDBGrid;Label3:TLabel;DBGrid4:TDBGrid;Label4:TLabel;Label5:TLabel;private{Privatedeclarations}public{Publicdeclarations}end;varForm7:TForm7;implementation{$R*.dfm}end.5.2数据库的实现员工信息登记表该表主要完成员工信息的录入、删除、更新等功能收银表: 档案号姓名年龄性别身高体重职位职称部门进公司时间家庭住址电话手机身份证号11133男经理高级经济师5222女部门经理经济师5334女职员技工5ddddddd女部门经理工程师5fff女职员技工504-1-6tsc男职员技工504-1-6ssss男技术员技术员504-1-6ee男技术员技术员104-1-622男技术员技术员004-1-18sssss男技术员技术员04-3-1考勤管理:'