自动生成论文(精选12篇)
自动生成论文 篇1
1 引言
理论考核通常要从题库中按照方案随机抽取题目生成试卷, 下文介绍一种自动生成试卷的实现方法, 主要包括设计思路和实现代码, 设计思路主要介绍随机抽取题目的核心算法, 实现代码包括算法的实现和试卷的生成, 可供读者借鉴使用。
2 设计思路
数据库采用Access, 编程语言采用C#。如图1所示, 按照方案选取填空题、选择题、简答题的数量, 点击“试卷生成”按键, 进入图2界面, 界面显示为随机生成的试卷, 点击“保存”按键, 保存为两个Word文档, 一份是试卷, 一份是试卷答案。
从题库中随机抽取题目的核心算法, 其功能函数为int[]Get Randoms (int max Value, int count) , 函数代码在下文。以填空题为例, 如题库中有N道题目, 需要抽取M个题目 (M<=N) 。
(1) 建立个长度为N的数组int[]int List, 保存0至 (N-1) , 示意如图3所示。
建立个长度为M的数组int[]int Ret, 示意如图4所示。
(2) 针对数组int List, 从[0, N-1) 中随机抽取一个整数m, 那么0≤m≤N-2, 取int List[m]值赋给int Ret[0];并且取int List[N-1]值赋给int List[m]。
(3) 针对数组int List, 从[0, N-2) 中随机抽取一个整数m1, 那么0≤m1≤N-3, 取int List[m1]值赋给int Ret[1];并且取int List[N-2]值赋给int List[m1]。
(4) 同上方法循环M次, 填充数组int Ret[], 其中的值为从int List中随机抽取的值。
(5) 读取题库数据表, 生成数组Data Row[], 例如:
Data Row[]d Rows=data Oper.data Set.Tables["TKT"].Select () ;
(6) 以数组int Ret[]中的值, 依次取数组Data Row[]中的值, 例如:
Data Row dr=d Rows[int Ret[i]];
上述方法, 一方面很好地利用随机函数抽取数值, 另一方面有效地避免了抽取数值有重复项, 是一种非常灵巧的随机抽取算法, 可以应用于其他随机抽取过程中。
3 实现代码
下面主要介绍图2的实现代码, 包括界面生成函数, 随机抽取题库, 随机抽取函数, 以及生成Word试卷和答案:
4 结语
主要介绍从题库中随机抽取题目生成试卷的方法, 并且详细介绍了随机抽取的核心算法, 给出了代码实现。该方法非常灵巧, 可供读者灵活应用于多种随机抽取过程中。
自动生成论文 篇2
1.1 在“格式”菜单中选择“样式和格式”,设定文章的主要大纲级别(一般为三级,即有标题1 、标题2、标题3)。
1.2 几级大纲对应几级目录,如果将大纲级别设定为1级,那么就是1级目录。
1.3 在要插入目录的地方,点击“插入”-->“引用”-->“索引和目录” 设置目录字体及大小,单击“确定”即可。
2、参考文献的自动生成
2.1光标移到要插入参考文献的地方,菜单中“插入”——“脚注和尾注”。
2.2对话框中选择“尾注”,编号方式选“自动编号”,所在位置建议选“节的结尾”。
2.3如“自动编号”后不是阿拉伯数字,选右下角的“选项”,在编号格式中选中阿拉伯数字。
2.4确定后在该处就插入了一个上标“1”,而光标自动跳到文章最后,前面就是一个上标“1”,这就是输入第一个参考文献的地方。
2.5将文章最后的上标“1”的格式改成正常(记住是改格式,而不是将它删掉重新输入,否则参考文献以后就是移动的位置,这个序号也不会变),再在它后面输入所插入的参考文献(格式按杂志要求来慢慢输,好像没有什么办法简化)。
2.6对着参考文献前面的“1”双击,光标就回到了文章内容中插入参考文献的地方,可以继续写文章了。
2.7在下一个要插入参考文献的地方再次按以上方法插入尾注,就会出现一个“2”(Word已经自动为你排序了),继续输入所要插入的参考文献。
2.8所有文献都引用完后,你会发现在第一篇参考文献前面一条短横线(页面视图里才能看到),如果参考文献跨页了,在跨页的地方还有一条长横线,这些线无法选中,也无法删除。
这是尾注的标志,但一般科技论文格式中都不能有这样的线,所以一定要把它们删除。
2.9切换到普通视图,菜单中“视图”——“脚注”,这时最下方出现了尾注的编辑栏。
2.10在尾注右边的下拉菜单中选择“尾注分隔符”,这时那条短横线出现了,选中它,删除。
2.11再在下拉菜单中选择“尾注延续分隔符”,这是那条长横线出现了,选中它,删除。
2.12切换回到页面视图,参考文献插入已经完成了。
这时,无论文章如何改动,参考文献都会自动地排好序了。
自动生成论文 篇3
【关键词】四维;地质层面;自动生成;变形算法
在石油工程进行勘探开发、地下水资源勘探、有色金属矿区资源勘探等涉及到地质工作的领域内,都广泛的应用到了地质建模,同时,随着社会经济的进步,计算机技术不断进步与勘探领域的需要,通过计算机的方式来进行地质模型建立,已经成为了现代社会地质学勘探领域中的一个重要组成部分。本篇文章主要研究了复杂地质结构情况下进行四维地质层面的地质模型建立工作。
1、地质层面生成算法概述
现目前的在进行地质工作过程中,最常使用的方法地质模型建立方式就是地质表面建立模型:将离散数传输到计算机中建立一个地质层面和断层,依据地质的表面模型来建立一个较为完善的地质体模型,但是又由于地质内部的层面在断层的两边出现了断裂现象,导致了不连续现象的出现,这就为地质层面的地质模型建立工作带来了极大的难题。
通过对地质进行勘探后所得到的离散数据,能够对其进行剖析之后使用插值算法来生成一个完整的地质层面网络结构图,同时,由于地质断层的存在,地质层面的两边会出现几何意义上的地质层不连续性,而目前所存在的插值算法就会在处理的过程中出现极大的难度。除此之外,由于地质层面中有逆断层的存在,极易导致一个(x,y)会对应数量较多的z值,这些情况的出现都导致了地质层面模型生成的难度更大。
插值这两者所生成的断层以及地质的连续地质层面,都是通过目前已知的断距与约束条件对于所勘探的地质层面产生的断裂和插值,从而生成断裂的地质层面。而生成地质层面的方法主要有两种,一种是通过断层两侧分别插值,从而生成地质层面力;第二种是通过Delaunay三角化及编辑断层和地质层面相结合部分,通过交互式的编辑相交环线的方式来生成地质层面。通过以上我们可以明显看出,地质层面绝大多数都是通过交互编辑的方式来生成的,其生成的地质层面精确度完全是由地质模型生成操作者自身的经验丰富与否来决定的,如果建立模型所需的时间较长,其更新的速度缓慢,那么地质层面仅仅只能够部分反映出当前的地质实际状况,只是一种静态的模式,并不能够真正的有效的以该地质模型来帮助地质专家了解该区域地质的构造历史详细情况。所以,下文提出了一种适用于复杂地质结构的四维地质建模方式,这种方式能够直接全自动的生成该区域地质任何一个时期的地质模型,同时还能够给出地质层面实际所生成的算法。
定义1:四维地质建模在四维的复杂环境之下,主要是通过当前地质体自身各种不同的数据,在计算机中建立一个能够在不同时刻都能够准确反映出当前地区地质底地貌的几何形态、地质构造要素之间所存在的拓扑关系、地质空间属性分布等等具有地质特征的数字化地质模型。
当需要研究的地质区域内地质有着极为复杂的断层或者逆断层的出现,并且不同断层之间还互相交叉穿过时,这种地质就被称之为复杂的地质结构,而本文的算法则完全能够适用在这种情形的之下的地质模型建立工作。
2、算法思路
地质的构造会因为地层不断的沉积所形成的具有连续性的地层,同时,地质构造在不断运动的过程中会产生大量的断层,在出现了断层之后,地层在不断沉积的过程中,其地层就会因为断层的作用力,而不断向断层滑移。地质中的地层沿着断层的出现,而不断的出现断裂滑移的情况,最终使得地质形成了当前情况下的地质结构。地层所出现的断裂现象,主要是由于不同地层在断层的互相作用下,会逐渐沿着断层的所断裂的顺序分层次开始断裂。
当所有的地层都处于未断裂、连续的状态时,所有断层都不存在,这样的地质模型称为原始形貌。在连续的原始形貌状态,对地层和属性插值时,都不会受断层的影响,结果稳定且易于实现。基于对地质规律的认识,本文四维地质建模方法的思路是:首先将所有离散数据沿断层断裂的逆序,恢复变形到原始形貌状态,建立原始形貌的地质模型,然后根据断裂的顺序断裂变形模拟地层断裂的过程,生成任意时刻的地质模型。
3、算法描述
为了能够更好的对所收集的地质空间数据进行划分与变形,本篇文章直接引入了断层关系中的二叉树FSRBT的概念,FSRBT概念能够主要是断层对于空间所形成的一种划分方式,不仅仅反映了地层断裂处所存在的空间位置关系,还充分的反映出了地质中不同地层的顺序、时代关系,二叉树概念中所存在的一个节点,就直接对应一个地质断层,而叶子节点自身所表示的意思是通过划分之后的地质空间区域。
在构建FSRBT时,按照断层断裂的顺序,断裂时间早的断层是后断裂断层的父节点,如果子节点在父节点的最小二乘面法方向一侧,则此子节点为左子节点,否则为右子节点。
4、建变形场及恢复变形子算法
变形场是按照断层断裂的逆序来建立,每个断层对应一个变形场,根据变形场将断层两侧的离散点恢复变形,地质时代后退一步,该断层就不存在。当所有的断层都恢复变形之后,根据变形后的离散点可以生成原始形貌。
本文依据断层的形态和地层离散点在断层两侧的落差来构建变形场。变形场的作用是叠加的,先恢复变形的变形場影响后恢复变形的变形场。空间中的任意地层离散点空间在恢复变形和断裂变形过程中的变形量可以通过变形场求解出来,首先根据某点在断层面的投影点求出变形值,然后根据某点到断层的距离对变形值进行消减,离断层越近变形值越大。最终得到实际变形子的数据。
5、结语
人脸面部表情自动生成系统 篇4
1 人脸三维建模
采用3DMAX三维建模工具建立人脸模型, 在VC++条件下使用Open GL编程完成了3DMAX模型的读取与重现, 再用Open GL对其进行控制。对于三维建模工具数据量较大的情况, 采用细节层次 (Level Of Details) 算法进行简化, 删除不必要的边、线、面[1]。
1.1 3DMAX数据文件的存储格式与读取
3DMAX默认的数据文件是*.max文件[2]。*.max文件结构复杂, 数据量庞大, 不仅包括模型网格结构的点和面的信息, 还包括模型的颜色等, 读取比较困难。比较简单直观的文件存储格式是*.ASC。
1.2 在Open GL中读取3DMAX模型
在Open GL中建立自己的数据结构存储数据, 从模型中读取数据将其存储到Open GL的程序中, 建立起Open GL的显示列表[3]。
1.3 关于简化网格算法
通过1.2得到的模型数据量是非常大的, 不适合用作标准模型。要将这一模型进行简化, 去除一些多余的点、边、面, 以简化这一模型的网格数量。这里使用层次细节 (Level Of Details, 缩写为LOD) 简化技术[4]。这一技术通过动态地确定阀值来选取不同精度的LOD模型, 降低场景的复杂度, 以求得更合适的图像质量。
1.4 人脸特征的提取
特征可被视为由数据、规则方法和关系三类属性描述的面向几何的物体, 特征参数化的关键是特征及其相关尺寸的变量化描述[5,6,7]。在具体特征分类的基础上, 确定结构特征的特征点, 特征点的相互位置关系形成造型特征中的特征尺寸。修改特征尺寸的同时, 对结构特征的其它点的位置和局部几何形状也进行了改变。根据人体头部的器官组成和外形特点, 从建模的方便出发, 将头特征分类为结构特征和造型特征。结构特征包含眼、鼻、嘴和耳;相应的造型特征有头高、头围、眼宽、眼高、两眼距、鼻宽、鼻高、鼻长、嘴宽、上下嘴唇厚、耳长、耳宽、耳厚等, 头特征分类。我们在正面和侧面图像中定义了45个特征点来表征人脸的形状。手工设置特征点, 然后进行参数化, 得到了标准化的人脸模型。
2 面部表情合成
采用MPEG-4的参数变化进行面部表情的合成, 面部表情的分析与合成的研究主要集中于基本的情感, 包括悲伤、愤怒、喜悦、恐惧、厌恶和惊奇。MPEG-4标准表示了一种关于面部表情建模和表达潜在的情绪的方法。利用在MPEG-4框架里以面部动画为目的的面部动画参数是与运动单元 (AUS) 密切相关的[8,9]。运动单元包括核心的面部动作编码系统 (FACS) [10,11,12]。
2.1 通过特定的FAPs描述基本表情
为了做到这一点, 我们对面部肌肉运动进行翻译——通过肌肉运动来描述表情——FAPs, 并为每个基本表情创建一个FAPs词汇[13]。为描述基本表情所需的FAPs还通过分析基本数据集进行实验验证。为了与真实的表情序列进行比较, 我们定义了特定功能点对应的面部表情形式的FAPs。选定的FAPs可以通过实时图像或视频序列自动检测。派生模型也可以作为表情分析和表情综合学科之间的桥梁。
在一般情况下, 面部表情和情绪通过一套测量和转换加以描述。测量和转换可以考虑基于MPEG-4标准。在这种方式中, 我们可以描述一个人的解剖面, 基本上是通过FAPS以及动画参数, 组独特的标记, 消除指定的需要底层的几何拓扑结构[8]。这些符号则可以被映射到自动检测的测量和对视频序列的运动迹象, 因而通过人工合成近似真实的表情。
基本的面部表情和潜在的情绪, 通过FAPs描述有以下几个目的:
1) 提供合成序列的兼容性, 创建与使用建议的方法, 符合MPEG-4标准;
2) 基本的表情很少发生, 大多数情况下, 情绪通过特别FAPs直接相关的几个离散五官的变化加以表示。此外, 不同的FAPs可以被用在人机交互的多种语言环境中, 即通过面部表情进行交互。
3) FAPs不符合具体型号或拓扑结构, 合成表情可以由不同的动画模型或字符加以描述。
基本表情建模时, 应解决两个基本问题:
1) 估计形成该表情的FAPs;
2) 定义FAP的强度。
面部动作编码系统 (FACS) 很大程度上影响表情分析的研究。利用面部解剖学的知识, FACS是一个试图区分视觉分辨的面部动作的系统。FACS使用运动单元 (AU) 为计量单位。AU能够结合两块肌肉运动或反向的方式工作, 也就是分成几个肌肉的运动。
2.2 所涉及的FAPs在每个模型中表达的估计范围的表情
这是通过分析实时图像和视频序列得以实现的。
情感分析和综合系统中的一个重要问题是关于面部表情形成的FAPs变化范围[8]。从合成的角度来看, 关于FAP的范围定义的研究已经展开。然而, 所提出的变化范围是相当松散的, 不能用于分析。为了给关于FAP的的实时视频序列一个特定的变化范围, 我们分析了2个著名的数据集——埃克曼 (静态) 的以及Media Lab (动态) 的数据集。这两个数据集套设置了用于形成极端情况下的表情, 而不是通常的情况。然而, 它们可用于设置特定表情的FAPs。然而, 为了实现这一目标, 通过面部运动点的FAPs建模是必需的。实时图像和视频序列的FAP变化范围的分析主要用于两个目的:
1) 核实并定义每个基本表情的词汇;
2) 为基本表情定义配置文件。
2.3 中级表情模型
这是通过结合加以实现的, 在一个以规则为基础的系统和一个激活参数与基本表情描述的FAPs框架。
在本节中我们提出一种创建中级表情配置的方法, 用于描述相应情绪的视觉部分。由计算机科学家和工程师进行的处理除了基本情绪外的其他情绪的研究渗透到了其他的学科。心理学家研究了更为广泛的情绪集合, 但对于计算机图形学和机器视觉领域只有非常少结论可供借鉴。其中Whissel的一项研究[8]中提到, 情绪好比是空间中具有一定规模的点, 其中最接近的有两个值:激活和程度。激活是与术语相关的兴奋程度。如平静为中指示的中间点, 惊讶代表高度激活, 害羞代表低度激活。程度是与术语相关的愉悦程度, 例如羞怯的“动机”列代表负向, 而高兴代表正向。从实际的角度来看, 似乎程度要表达的主题和估计得到的情感能够一致是件很棘手的事。另一方面激活与面部肌肉的运动相关, 并可以基于面部特征很容易估计到。
为创建中级情绪配置我们要考虑两种情况:
1) 在自然界中, 情绪与其中一个原型类似, 例如, 他们可能会有不同肌肉强度的动作;
2) 不能被视为与任何原型的情绪。
在这两种情况下, 我们按照以下步骤进行:
1) 利用激活参数或Plutchik的角度测量作为推理有关的几个情绪的面部动作的强度的知识。这方面的知识与基本表情配置相结合, 通过基于规则的系统, 创建中级情绪配置。
2) 动画绘制配置以检测所要求的情绪与视觉的相似性是否合适。
3 程序用户界面
采用MFC技术设计一个包含悲伤、愤怒、喜悦、恐惧、厌恶和惊奇六种表情的按钮以及一个表情显示框的界面。我们采用GUI的设计模式, 把表情变化的代码对应转换成C++形式, 并嵌入在MFC中, 在对应的按钮按下时候能产生相应的消息响应。
3.1 界面设计
首先建立一个MFC应用程序的工程, 利用插件画出基本的界面图形, 包含悲伤、愤怒、喜悦、恐惧、厌恶和惊奇六种表情的按钮以及一个表情显示框并设置相应的属性[14,15]。
3.2 消息及消息映射
Windows应用程序中的消息主要有三种类型。
1) 窗口消息 (Windows Message) 。这类消息主要是指由WM_开头的除WM_COMMAND之外的消息, 例如WM_CREATE (窗口对象创建时产生) 、WM_DESTROY (窗口对象清除前发生) 、WM_PAINT (窗口更新时产生绘制消息) 等, 一般由窗口类和视图类对象来处理。
2) 控件的通知消息 (Control notifications) 。当控件的状态发生改变 (例如, 用户在控件中进行输入) 时, 控件就会向其父窗口发送WM_COMMAND通知消息。应用程序框架处理控件消息的方法和窗口消息相同, 但按钮的BN_CLICKED通知消息除外, 它的处理方法与命令消息相同。
3) 命令消息 (Command message) 。命令消息主要包括由用户交互对象 (菜单、工具条的按钮、快捷键等) 发送的WM_COMMAND通知消息。
命令消息的处理方式与其他两种消息不同, 它能够被多种对象接收和处理, 这些对象包括文档类、文档模板类、应用程序本身以及窗口和视类等;而窗口消息和控件的通知消息是由窗口对象接收并处理的, 这里的窗口对象是指从窗口类CWnd中派生的类的对象, 它包括CFrame Wnd、CMDIFrame Wnd、CMDIChild Wnd、CView、CDialog以及从这些派生类对象等。
4 结束语
自动生成论文 篇5
一篇word文档,内容有大的章,小的节。如何把章节抽出来生成目录?
目录通常是长文档不可缺少的部分,有了目录,用户就能很容易地知道文档中有什么内容,如何查找内容等。Word提供了自动生成目录的功能,使目录的制作变得非常简便,而且在文档发生了改变以后,还可以利用更新目录的功能来适应文档的变化。
一、创建标题目录
Word一般是利用标题或者大纲级别来创建目录的,这对那些用WORD写书,写论文的朋友很有帮助。因此,在创建目录之前,应确保希望出现在目录中的标题应用了内置的标题样式(标题1到标题9)。也可以应用包含大纲级别的样式或者自定义的样式。如果文档的结构性能比较好,创建出合格的目录就会变得非常快速简便。
优点:用WORD根据文章的章节自动生成目录不但快捷,而且阅读查找内容时也很方便,只是按住Ctrl点击目录中的某一章节就会直接跳转到该页,更重要的是便于今后修改,因为写完的文章难免多次修改,增加或删减内容。倘若用手工给目录标页,中间内容一改,后面页码全要改是一件很让人头痛的事情。应该自动生成的目录,你可以任意修改文章内容,最后更新一下目录就会重新把目录对应到相应的页码上去。
步骤:(以下内容在WORD2003中操作,其它版本WORD略有差别,但大同小异。)
1.在[格式]中选[样式与格式]
2.出现右边的一条“样式格式”栏,这里面主要就是用到标题1,标题2,标题3。把标题1,标题2,标题3分别应用到文中各个章节的标题上。例如:文中的“第一章 制冷概论”我们就需要用标题1定义。而“1.1制冷技术的发展历史”就用标题2定义。如果有1.1.1×××那就用标题3来定义。
3.当然标题1,标题2,标题3的属性(如字体大小,居中,加粗,等等)可以自行修改的。修改方法:右键点击“标题1”选“修改”,会弹出修改菜单,您可以根据自己的要求自行修改。
4.用标题1,2,3分别去定义文中的每一章节。定义时很方便,只要把光标点到“第一章 制冷概论”上,然后用鼠标左键点一下右边的标题1,就定义好了;同样方法用标题2,3定义1.1;1.1.1;依此类推,第二章,第三章也这样定义,直到全文节尾。
5.当都定义好后,我们就可以生成目录了。把光标移到文章最开头你要插入目录的空白位置,选[插入]--[引用]--[索引和目录]
6.选第二个选项卡[目录],然后点右下的确定。就OK了。
上图就是自动生成的目录
7.当你重新修改文章内容后,你需要更新一下目录,方法是:在目录区域内,点右键,选[更新域]
8.当选[更新域]后,会出现上图的选框,选第二个“更新整个目录”点确定。就OK了。
二、创建图表目录
图表目录也是一种常用的目录,可以在其中列出图片、图表、图形、幻灯片或其他插图的说明,以及它们出现的页码。在建立图表目录时,用户可以根据图表的题注或者自定义样式的图表标签,并参考页序按照排序级别排列,最后在文档中显示图表目录。
使用题注组织目录的方法如下:
(1)确保文档中要建立图表目录的图片、表格、图形加有题注。
(2)将光标移到要插入图表目录的地方。
(3)单击【插入】菜单中[引用]中的的【索引和目录】菜单项,并在【索引和目录】对话框中选择【图表目录】选项卡。
(4)在【题注标签】下拉列表框中选择要建立目录的题注,如图表、公式、表格等。
(5)在【格式】下拉列表框中选择一种目录格式,其他选项与创建一般目录一样,确定后单击【确定】按钮。
在检查图表目录后,当将鼠标移到目录项目上时,鼠标指针会变为手形,单击鼠标左键接口跳转到相应的位置。
利用题注建立图表目录是很方便的,但有时候,文档中的标签是用户键入的,并不是Word的题注功能加上的。这时,就需要使用自定义样式建立图表目录,方法如下:
(1)打开【索引和目录】对话框,并选中【图表目录】选项卡。
(2)单击【选项】按钮,弹出【图表目录选项】对话框。
(3)选中【样式】复选框,并在其右边的下拉列表框中选择图表标签使用的样式名后单击【确定】按钮。
(4)在【索引和目录】对话框中选择各选项,然后单击【确定】按钮。
三、创建引文目录
引文目录与其他目录类似,可以根据不同的引文类型,创建不同的引文目录。在创建引文目录之前,应该确保在文档中有相应的引文。创建引文目录的操作步骤如下:
(1)将光标移到要插入引文目录的位置。
(2)单击【插入】菜单中的[引用]中的【索引和目录】菜单项,在弹出的【引文和目录】对话框中选择【引文目录】选项卡。
(3)在【类别】中选择相应的引文类别,注意此种类别应该是引文中已经创建有的引文类型。
(4)创建的引文目录也有相应的内置引文目录样式来套用,如果要更改,可以单击【更改】按钮。
(5)如果引文的页码超过五处,可以选中【使用“各处”】复选框,这样可以避免页码过多反而给用户造成不便。
(6)如果引文过长,可以选择【保留原格式】,以保留原有的引文格式。
(7)选好目录的制表前导符和格式后,单击【确定】按钮即可。
如果要标记引文,以创建合适的引文目录,可以按如下方法进行:
(1)选择要标记的引文。
(2)打开[引文目录]对话框,单击【标记引文】按钮,弹出【标记引文】对话框。
(3)在【类别】的下拉列表框中选择合适的类型。
(4)单击【标记】按钮即可对当前所选的文字进行标记,如果单击【标记全部】按钮,将对存在于文档中的所选文字进行标记。
(5)如果还要标记其他引文,不要关闭【标记引文】对话框,直接在文档中选取要标记的引文。
(6)返回【标记引文】对话框,选中的引文将出现在【所选引文】下面,然后单击【标记】即可。
(7)如果要修改一个存在的类别,可以单击【类别】按钮。
(8)选中要修改的类别,在【替换为】下面的文本框中输入要替换的文字,单击【替换】按钮即可。
(9)完成后单击【确定】按钮,回到【标记引文】对话框。单击【关闭】按钮。
四、更新目录
Word所创建的目录是以文档的内容为依据,如果文档的内容发生了变化,如页码或者标题发生了变化,就要更新目录,使它与文档的内容保持一致。最好不要直接修改目录,因为这样容易引起目录与文档的内容不一致。
自动生成论文 篇6
关键词:宗地;宗地四至;人工;自动化
中图分类号 P208 文献标识码 A 文章编号 1007-7731(2016)13-0032-04
宗地是地籍调查单元,为土地权属界址线所封闭的地块,即地籍调查和土地登记的基本土地单元。四至是每宗地四邻的名称,地籍调查规程中规定,宗地四至应填写相邻宗地的土地使用权人、所有权人名称;与道路、河流等线状地物相邻的应填写地物名称;与空地、荒山、荒滩等未确定使用权的国有土地相邻的,应准确描述相应地物、地貌的名称。
目前,国土建库方面的软件都未能提供较好地宗地四至提取方法。在地籍数据入库过程中,宗地四至常常先是通过人工判断,然后手工输入到属性表中,这样不仅工作效率低下,也容易造成手工输入错误。尽管有些 CAD插件提供了生成宗地四至的功能,但是它们生成宗地四至的方法需要手工提前输好CAD的扩展属性信息,如手工提前输入的界址线邻宗地号信息等。另外,CAD作业方法不符合地籍建库的要求。2012年开展的农村集体土地确权登记发证工作工期紧、任务重,为保证项目按时、保质、保量的完成,需要优化传统作业流程,充分利用每个阶段的已有成果,节约人力,提高工作效率。
1 研究现状
1.1 传统获取方法 获得一块宗地的四至就是对一个宗地的邻宗地进行搜索,怎么才能正确地判断出一块宗地的北边、东边、南边、西边,笔者采取宗地左上角和右上角之间的邻宗地判定为北至,宗地右上角和右下角界址点之间的邻宗地判定为东至,宗地右下角和左下角界址点之间的邻宗地判定为南至,宗地左下角和左上角界址点之间的邻宗地判定为西至。人工方法提取需要依靠人进行野外判读,根据具体的判读填写宗地四至信息表,需要人工外出指认,指认以后还要将信息表一个一个输入到Excel表格中,一般一个公司的采集人员和数据录入人员不是同一个人,所以在数据入库的时候需要两个人同时在场,这样无形中耗费了大量的人力,效率极其低下。而借助ArcGIS软件的强大的分析功能,可以很快的解决传统人工获取宗地四至信息的缺点。
1.2 GIS软件获取方法 当前GIS软件众多,在宗地调查工作中得到了广泛应用。一些GIS软件能够提取宗地的四至信息并写入宗地数据的属性表中,但是这些软件都普遍存在着一些问题,主要的问题可以总结为:软件的付费的问题,数据的保密的问题,数据格式兼容性的问题。一般的获取宗地四至信息的GIS软件市场价格为10万左右,小公司不愿意花费10万来购买GIS软件,因为对他们来说10万是一个比较大的支出,而大一点的公司则担心的是GIS软件数据的保密性问题。因为宗地四至信息这些数据都是国家的项目,对数据的安全性要求特别的高,如果数据被别人窃取或者被敌对公司获取到,这对本公司就是一个致命的打击,而现在很多GIS软件在处理数据安全性上还有很大的缺点。最后一个问题也是致命的问题就是数据格式兼容性的问题。现在市场上一些GIS软件例如北京的苍穹软件虽然能很好解决宗地四至信息的问题,但是经过苍穹软件编辑后的图层就不能被其他GIS软件再次的重新编辑,这也是苍穹软件的一个致命的弱点。通过调查发现,ArcInfo这款软件应用广泛,基本上成为一种标准,本研究在ArcInfo基础上进行二次开发。
2 开发获取方法
2.1 中心点-射线提取法
2.1.1 基本思路 中心点-射线提取法的基本思路如下:首先,根据宗地一的边界坐标获取宗地的中心点(图1);然后,从中心点出发,向东、西、南、北四个方向引射线;最后,搜索与四条射线相交的临近宗地,其中与北方向射线相交的是北至宗地,与西方向射线相交的是西至宗地,依此类推。
2.1.2 提取流程及实现 主要实现代码如下:
2.2 最小外接矩形提取法
2.2.1 基本思路 最小外接矩形提取法的基本思路如下:首先,获取宗地一的最小外接矩形(图3)[10-11];然后,从最小外接矩形四个角向两个方向引射线;最后,搜索处在射线内的宗地,其中左上角和右上角射线之间的邻宗地判定为北至,右上角和右下角射线之间的邻宗地判定为东至,右下角和左下角射线之间的邻宗地为南至,左下角和左上角射线之间的邻宗地为西至。
2.2.2 提取流程及实现 最小外接矩形提取法的流程图如图4所示。
主要实现代码如下:
//获取宗地一最小外接矩形
2.3 交界线提取法
2.3.1 基本思路 交界线提取法的基本思路如下:首先,检索所有宗地对象,获取与宗地一相切的宗地;然后,获取宗地一与各宗地的交界线(如图5,宗地一与5块宗地相切);最后,根据交界线的位置坐标判定四至归属。
2.3.2 提取流程及实现 交界线提取法的流程图如图6所示。
2.4 对比分析 选取某地土地经营权确权登记外业调绘数据(图7)对上述三种方法进行测试,结果显示三种方法都可以实现宗地四至信息的自动提取。其中中心点-射线提取法运算方法最快,效率最高,交界线提取法次之,最小外接矩形提取法运算速度最慢。但中心点-射线提取法在一些特殊情况下会出现误判,需要一定程度的人工辅助,最小外接矩形和交界线提取法都可以取得较高的准确度。
3 结论
本文的宗地四至提取方法在青岛各区县市的农村集体土地所有权确权登记发证工作中得到了广泛应用,提取的正确率都在80%以上,其中莱西市提取的正确率约为83%,平度市提取的正确率约为84%,崂山区提取的正确率约为87%。结合提取过程中生成的提取记录表,针对提取为空、漏判和误判的不同情况,分别进行人工检查和修改,提高了工作效率,节省了项目工作时间。针对宗地形状不规则和多样化的特点,为了进一步提高提取的正确率,则需要增加判断条件,优化判定算法,今后应作进一步的研究。
参考文献
[1]郑振,张晓玲,施引之,等.GB/T 19231-2003.土地基本术语[S].北京:中国标准出版社,2003.
[2]王万茂.土地资源管理学[M].北京:高等教育出版社,2003.
[3]章书寿.地籍测量学[M].南京:河海大学出版社,1996.
[4]朱留华,邵凌志,冯文利,等.TD/T 1001-2012.地籍调查规程[S].北京:中国质检出版社,2012.
[5]毕硕本,王桥,徐秀华,等.地理信息系统软件工程的原理与方法[M].北京:科学出版社,2003.
[6]杨大病,王春波,陈建平,等.基于ArcEngine组件技术的宗地图自动生成研究[J].勘察科学技术,2010(2):31-32.
[7]邵睛睛,朱福利.一种宗地四至提取方法探讨[J].测绘地理信息,2014,39(4):150-152.
[8]佟彪.VB语言与测量程序设计[M].北京:中国电力出版社,2007.
[9]孟德欣.VB程序设计[M].北京:清华大学出版社,2014.
[10]邱洪钢,张青莲,陆绍强.ArcGIS Engine开发从入门到精通[M].北京:人民邮电出版社,2010.
自动生成记账凭证文献综述 篇7
随着信息技术的发展,会计电算化软件逐渐替代了手工记账,为会计人员平时工作带来了极大的便利。但是,现有的电算化软件只是对人工记账的简单模仿,仍有许多值得改进的地方。传统的手工记账基本步骤为填写凭证,审核,记账凭证,登记账簿,编制报表。现有的会计电算化软件已经能够可以根据填写原始凭证生成记账凭证,自动登记账簿,编制报表,但是,在信息的输入端仍有许多改进的地方,比如,是否可以自动生成记账凭证。为此,国内许多学者对此进行了许多有益的探讨,现列举如下。
2 国内文献综述
李订芳,刘辉(1999)提出通过建立记账凭证知识库,即凭证生成专家系统,可以将业务部门原始凭据通过人工智能技术自动生成记账凭证的会计记录。
吴胜,苏琴(2003)提出了一种基于MAS自动生成会计凭证的方法,以存货为例通过定义存货agent类,接下来给出了该方法的模型APAVMAS。
李凤艳(2005)分析了国内财务软件在常用会计凭证上仍然是用“键盘代替钢笔”,并没有实质改进,提出设计一种常用会计凭证自动生成系统,可以节省人员成本,可以提高会计人员的工作效率,可以提高会计数据的质量。常用会计凭证可以根据录取的业务信息自动生成常用会计凭证。
代逸生,陆峻梅(2006)提出利用REA会计模型和主动数据库中的ECA规则来构造动态会计平台,动态会计平台由事件接受器,各类会计凭证模板,模板生成器和各类实时会计凭证组成。并利用这种动态会计平台实现记账凭证的自动生成。利用该方法不仅可以提供实时化的会计信息,而且充分发挥了会计的管理和监督职能。作者创新性地提出了动态会计平台的概念。
张涛(2007)提出利用人工智能领域中的专家系统,专家系统有知识获取子系统、知识库、推理机、用户接口组成,业务部门人员在经济业务处理系统录入数据,数据保存在业务数据库文件中,记账凭证制作专家系统从业务数据库提取必要的数据,在知识库中找到该笔经济业务对应的会计分录,自动生成记账凭证。
杨静,王文莲(2008)提出传统手工录入凭证可能造成信息失真,而记账凭证自动化可以提高会计信息质量,提出通过智能判断决策表设计智能判断码,每个码对应一种会计分录,事先做成模型库,程序依据判断码自动选择相应的会计分录,并传递到会计核算处理系统,经过审核后自动记账。
汤四新,庄明来(2010)从业务流程再造的视角提出会计流程是业务流程的重要组成部分,将业务事件转换为会计事件的关键是设计一种记账凭证模板模型,设计了一种基于事件驱动的通用记账凭证自动生成模板模型,并从四个方面定义了该模型特征,并给出了性能评测标准。
王伟国,李金甜(2011.1)提出了事项凭证的概念,事项凭证通过记账凭证模板自动生成记账凭证,但是作者设计的自动生成转账凭证是不完全的,至少借贷分录还是要会计人员手工输入,只是在借贷金额上实现了自动生成。
3 结语
国内学者对自动生成记账凭证的思路基本一致,都是将业务数据通过计算机的智能判断实现自动生成记账凭证,无论是记账模板生成器还是智能判断码或者是专家系统,都是这个思路。随着人工智能技术的发展,引进人工智能技术进入会计领域使自动生成会计凭证更加智能化,将是未来研究的主要方向。
摘要:会计电算化软件在替代手工记账的过程中仍然有许多值得改进的地方,本文从自动生成记账凭证这个视角总结了国内学者对此做出的有益探索,希望为后续研究提供参考。
关键词:自动记账,智能核算,专家系统,知识库
参考文献
[1]李订芳.知识库在帐务处理中的应用[J].计算机工程,1999,25(6):60-61.
[2]吴胜,苏琴.自动生成会计凭证的研究[J].计算机应用,2003(z2):295-296.
[3]汪德宏,谭国律.记账凭证智能化生成研究[J].中国会计电算化,2004(7):34-35.
[4]李凤艳.常用会计凭证自动生成系统的研究[J].辽宁大学学报:自然科学版,2005,32(2):163-165.
[5]代逸生,陆峻梅.财务业务一体化会计信息系统中的记账凭证自动生成[J].中国管理信息化,2006(8):30-32.
[6]杨静,王文莲.会计信息系统中记账凭证的自动生成[J].新西部:理论版,2008(11):78.
[7]汤四新,庄明来.记账凭证自动生成模板模型研究——基于会计流程再造的分析[J].财会通讯:综合(上),2010(1):119-120.
二维矢量图形自动生成方法 篇8
关键词:Surfer,二维矢量图,.NET2008
1 提出问题
在各种工程实践中,常需要大量成图,其中主要是二维图形。以Microsoft Visual Studio 2008为开发平台,编程读取图形数据库,分析运算,生成图形文件,实现二维自动成图,提高了工作效率与成图准确度。
编程任务举例:生成一种直方图,用以描述油田工区各小层的非均质性,根据已有数据,统计分析,小层非均质渗透率直方图。现有数据,一是工区各井的分层数据,二是各井的测井物性解释结果,其中包括渗透率。结果图件要自动生成,并图件格式为矢量格式。
编程任务:统计原始数据,并将统计结果以直方图的形式显示出来。
原始数据表主要字段:井名、小层名、小层顶深、小层底深、变异系数、级差、突进系数、均质系数、均值。目标是以每参数每层成一张图,过程是先将原始数据读入内存数组中,首先根据下列标准进行统计。
结果图形举例如下:某层变异系数的分布直方图。
完成这个编程任务,尝试了以下两种方法,一是GDI+方法,二是Surfer组件调用法。
2 数据文件读取
无论用哪种方法生成图形,首先要解决的是如何把原始数据从硬盘上读出来,这里采用的数据存取策略是:定义数组,如string[,]byxs=new string[3000,9];以存放从硬盘中读来的数据,然后对数组中的数据进行分析,分析结果存在内存变量中,原始数据有可能是不同的格式,建议最好预处理一下,将原始数据转换成一种相对规范的格式,以便后续的编程工作。
若用Dbf格式的数据表存放数据,读取数据的关键代码如下:
3 GDI+方法
GDI+绘图技术中,默认的坐标系统的原点是在左上角,X轴指向右边,Y轴指向下边,因此,GDI+默认的坐标系统与我们数学中的坐标系统并不一样,想要在GDI+中使用新的坐标系统,则需要在默认坐标的基础上进行坐标的变换,例如旋转、平移等。
4 调用Surfer组件
要使用surfer组件,你的机器应当安装好Surfer8.0,然后应当向工程添对Surfer的组件引用,这一操作过程是:单击菜单项Project里的Add Reference,在随后出现的设置窗口里,到com选项卡中寻找surfer的组件列项,并选中添加到本工程里。
(1)运行surfer进程
(2)完成初始化
(4)保存图形到硬盘
值得一提的是surfer的图形充填比较方便,若要给图形充填斜线,用如下一个语句即可:df.DefaultFill.Pattern="斜线",当然如果选用别的充填方案,只需将斜线换成要充填的方案名称即可,充填的方案名称可在Surfer软件运行状态下查到。
如果是批量图形生成频繁调用surfer,担心每次surfer实例不能完全退出,可用以下语句:
这样可以彻底清掉正在运行的每个surfer进程。
上文展示的是一种编程思路,具体实现需要补充代码,主要的编程思想及实现方法已经给出,以此为基础可以编写出各种二维成图程序。
参考文献
[1]王炜.C#对通用组件的编程.电脑编程技巧与维护(2005合订本).
自动生成论文 篇9
藏文是藏族人民的书面交际工具,是中华民族语言文字领域中历史悠久(公认为始创于公元七世纪吐蕃王朝时代)、表达功能完备的古老语言文字之一,承载着藏民族几千年的历史和文明,蕴含着藏民族独特的思维方式;具有完善的文法体系和公认的语法结构。藏文是一种拼读文字,属辅音文字型,分辅音字母、元音符号和标点符号3个部分。
目前藏文在我国少数民族文字中成为了一个具有国际标准、获得了全球信息高速公路通行证的文字。这个拥有千年历史的古老文字正随着时代的发展焕发出了新的生命力;近年来我国在藏文信息处理领域有了许多新的成就,灿烂的藏族文化和古典的民族著作也渐渐地在信息与网络的舞台上展现出了独特的魅力。自古至今用藏文字记载的古典文献、经典论文和译作浩如烟海,许多潜在的理论和科学的言论正有待挖掘和研究。同时在人类创造世界和推动科技发展的历史长河中每天都会有许多新科技名词在诞生,合理恰当地对这些新名词进行命名进而就这些科技名词作为知识传播与科技交流的载体与工具,同样也会促进着科技和文化的发展。目前许多新科技名词命名时出现混用、过长复杂化、解释性名词等现象。因此本人就藏字文法进行研究,建议充分利用已有藏字资源,将不常用藏字充分投入新科技名词命名当中,试图构造自动生成能符合藏文文法的所有藏字的新设想。
1藏文字符
藏文是一种拼读文字,属辅音文字型,分辅音字母、元音符号和标点符号3个部分。其中有30个辅音字母,辅音字母每4个字母为一组,共7组半,每个字母的实际读音古今有别、方言有异,但均附带有一个辅音“a”。所以在藏文文法中单一的辅音字母是成不了藏文字的,至少得有两个辅音字母或者一个辅音字母和一个元音字母组成,但是在实际中为了书写方便等原因现将辅音字母与后置字“a”组成的藏字直接简写为单一的辅音字母;元音字母为4个元音符号。标点符号有“分隔符”和“分界符”;藏文标点符号形体简单、种类少。
2藏字的结构
藏文字形结构均以一个字母为核心, 称之“基础字”,其余字母均以此为基础前加(前置字)、后加(后置字)、最后附(又后置字)、上叠(头置字)、下坠(下加字)和元音字母组合成一个完整的字表结构(如图一所示),四个元音字母中三个是加在头置字上面的有一个是加在下置字下面的。 单个的辅音字母是组不成藏文字形的,通常一个藏文字形结构最少为两个辅音字母组成,即由一个基字和一个后置字构成 ; 最多的由6个辅音字母和一个元音字母构成,元音字母加在辅音结构基础字的正上方或下方。以上字母的称谓均根据加在基础字的部位而得名。
组成最齐全的一个藏字字形是有前置字、头置字、基础字、下加字、元音字母、 后置字、和又后置字七个部分组成,藏文30个字母均可作基字,但是,可作前置字、 头置字、下加字、后置字、又后置字的字母均有限。在三十个字母字中可做前置字有五个,头置字有三个,下加字有四个,后置字有十个,又后置字有两个。
3藏字的结构组合
根据藏字结构的组合形式把藏字的组成可以用以下状态转移图( 图一) 表示.
在以上转移图中可以统计出可以组合成藏字的结构类型如以下状态转移表1所示:
4藏文文法规律
(1)根据藏文文法规律可以作头置字的字只有三个,即可经过q1状态和在q3状态下可以读取的的藏文字符仅有三个, 且结构规律有限:
(2)根据藏文文法规律可以作下加字的字只有四个,即在q4状态下反复读取下加字的藏文字符仅有四个,且结构规律有限 :
(3)藏文文法中可作前置字的只有五个字符,即只有这五个字符时可以进入q2状态,亦有固定搭配:
(4)又后置字只有两个,即可进入q6状态的字只有两个,其固定搭配是:
(5)藏文后置字、元音符号均可与任意藏文字母进行结构搭配。
5结束语
藏语言文字在我国藏区的社会生活各个方面得到了广泛使用,在社会飞速发展的今天新生科技名词日益增多,就此为了使藏文在新的领域赢得立足之席、与时俱进,我们不得不将藏语已有的符合藏文文法的藏字进行充分利用,本文就此进行系统研究,自动生成所有符合藏文法的藏字,以便投入使用,解决燃眉之急。
自定义表单自动生成技术研究 篇10
在传统的工作流管理系统中, 表单往往是以定制的方式并将其硬编码在工作流管理系统中。这种方式的最大局限在于把表单的类型、表单结构看成是静态的, 在完成工作流管理系统构建后, 系统的业务功能和数据模型也就固化了。可是当系统的业务流程及表单结构发生变化时, 研发团队就必须对原有系统的功能和数据结构进行代码层次的改动。
本文重点研究表单数据类型定义、表单实例的解析、存储和生成方面的关键技术, 实现表单实例的定义、生成工具, 并将该工具作为一个独立的功能模块应用于工作流系统当中。
1 表单模型定义
工作流是一类能够完全或者部分自动执行的经营过程, 它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。工作流管理系统中表单的主要功能是为流程的活动节点提供对应的工作界面, 通常采用的方法是在活动节点上绑定对应的已设计好的表单, 流程进行到某个节点时调用对应的表单。
表单模型定义:一个表单Fk (k=1, -, K) 是由一系列的表单单元组成, 每个表单单元由最基本的表单元素组成, 即Fk={Um|m=1, -, M}, U表示表单的基本单元, Um={fl|l=1, -, L}, f表示表单的基本元素。
表单元素定义:表单元素是组成表单的基本元素, 它的组成部分分为控件信息、数据类型信息、用户信息。控件信息表单元素的重要组成部分, 它主要保存控件类型与控件的基本信息, 并决定表单元素获取数据的方式, 是系统数据获取功能的基础;数据类型信息是验证控件数据格式的依据;用户信息由一系列的数据域组成, 表示表单元素呈现的基本信息。
2 技术实现
2.1 表单建模方法
本文研究的表单自动生成技术所采用的建模方法是以关系数据库为中心的表单建模方法, 利用数据表来描述表单页面和表单实例之间的联系, 通过将表单页面唯一标识与表单实例相对应, 来构造一张表单页面。其数据表之间的元组表现形式为:表单页面{表单页面ID, 表单名称, 创建时间, 表单页面描述};表单实例{表单实例ID, 表单实例名称, 控件类型, 数据类型, 表单实例描述};表单页面属性信息{表单页面ID, 表单实例ID, 属性名称, 属性说明}。表单页面与表单实例之间是多对多的关系, 并通过表单属性信息表维护两者之间的关系。
2.2 表单界面生成
表单生成模块实现的功能是对表单元素进行解析, 生成表单界面。表单元素解析是表单自动生成技术的关键部分, 是工作流管理系统与表单集成的基础。它的主要功能是根据解析规则与表单元素之间的映射关系, 对表单元素与对应的控件信息进行解析, 并呈现在表单中。
表单界面生成步骤:
1) 获取表单信息。通过表单名称获取表单信息, 根据表单信息与表单元素之间的对应关系 (即表单字段信息) 获取表单元素信息;
2) 解析表单元素。这一步骤的主要功能是对表单元素信息进行解析, 根据表单元素的控件信息、数据类型信息、用户信息创建相应的表单模型;
3) 生成表单。根据表单模型创建表单界面, 并提供表单数据维护的相关操作。
2.3 表单元素维护
表单元素是表单的基本单位, 所以对表单元素的维护是新建表单模型的基础。模块的基本功能包括:
1) 表单元素列表。该功能实现表单元素列表页, 用于显示已添加的表单元素, 显示信息包括表单元素名称、表单元素类型、数据类型, 点击“查看”可以查看表单元素的详细信息;
2) 文本框表单元素添加。该功能实现文本框类型的表单元素的添加, 添加的信息包括:表单元素名称、文本框类型 (包括单行, 多行, 密码框) 、文本框高宽、数据填写规则 (运用正则表达式实现数据验证) 、是否允许为空、数据输入错误提示、验证的初始值、表单元素描述;
3) 下拉框表单元素添加。该功能实现下拉框类型的表单元素的添加, 添加的信息包括:表单元素名称、下拉框宽度、是否允许为空、添加下拉框值、选择数据类型、表单元素描述;
4) 单选框表单元素添加。该功能实现单选框类型的表单元素的添加, 添加的信息包括:表单元素名称、添加单选框值、布局列数、布局方向、文字位置、数据类型、表单元素描述;
5) 多选框表单元素添加。该功能实现多选框类型的表单元素的添加, 添加的信息包括:表单元素名称、添加多选框值、布局列数、布局方向、文字位置、数据类型、表单元素描述;
6) 文件浏览元素添加。该功能实现文件浏览控件类型的表单元素的添加, 添加的信息包括:表单元素名称、控件宽度、上传文件大小 (单位:K) 、上传文件类型、异常提示信息、表单元素描述。
2.4 数据填写规则
数据填写规则模块的功能是针对文本框类型表单元素进行数据验证, 其原理是利用正则表达式和.NET自带的数据验证控件对用户在文本框表单元素输入的数据进行验证。该模块的主要功能包括:
1) 填写规则列表。显示所有已有的数据填写规则, 并支持关键字查询;
2) 填写规则添加。该功能实现填写规则信息的添加, 信息包括:规则名称、正则表达式、数据类型、错误提示信息;
3) 填写规则修改。实现对已有填写规则信息的修改;
4) 填写规则详细。查看填写规则的所有信息。
3 结论
本文针对工作流管理系统中表单页面结构可变性大, 分析了表单数据的特点。给出了一种以数据库为存贮手段、以ASP.NET的WEB服务器控件为核心的表单建模方法, 并对表单实例的解析、存储和生成方面的关键技术进行了研究。实现了表单页面的动态生成, 为实现工作流管理系统中可定制表单页面提供了技术支撑。
参考文献
[1]殷旭, 廖斌, 王新平.基于Web的工作流表单的柔性建模[J].计算机工程与设计, 2009 (30) .
[2]肖宇, 许炜.基于表单和关系型数据库的工作流管理系统[J].华中科技大学学报:自然科学版, 2004, 32 (11) :4244.
自动生成论文 篇11
摘要:在Web页面上根据用户需求,从后端数据库服务器上提取数据生成动态Excel报表。
关键词:ASP;DLL;权限;EXCEL公式;报表;模板;数据库
前言
在Web页面上根据用户需求,从后端数据库服务器上提取数据生成动态Excel报表,用户可查看及下载、打印,进一步对数据做深层次的加工。综合Asp、DLL(动态链接库)及Excel等技术的特点,可缩短开发人员对报表的理解用时,加快报表的生成。这种技术也是黑客惯用的侵入系统的方法。
一、技术概述
1Asp的重定向及调用动态库技术
Asp(Active Server Page)技术是使用VBScriipt、JScript等简单易懂的脚本语言,结合HTML代码,可在服务器端直接执行,快速地完成网站的应用程序。根据用户需求能够快速、方便进行重定向操作。
它同时可以方便插入组件对象。组件是包含在动态链接库DLL中的可执行代码。组件可以提供一个或多个对象以及对象的方法和属性。组件提供的对象,在实际使用中只要创建对象的实例,并将这个新的实例分配变量名即可调用它的方法和属性。使用ASP的Server,CreateObject方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名。
2Excel报表模板生成技术
报表是从数据库中按照用户需求将数据提取后,进行分类、加工得到的最后的结果,而Excel中的公式、图表对于生成报表是极其方便的。利用Excel生成报表,可使开发人员和用户紧密结合,缩短开发人员对报表理解的时间,并且用Excel开发的报表能够使最终用户有能力快速进一步对数据进行综合分析。
3DLL的生成、数据库及Excel的操纵技术
动态链接库(Dynamlc Link Library,缩写为DLL)在服务器端上是经常使用的技术,它是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。它所调用的函数代码没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息,仅当应用程序被装入内存并开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。这样就节省了服务器的内存。DLL中的例程可以被应用程序访问,而应用程序并不知道这些例程的细节。这样就提高了Web程序的安全性。
在封装好的DLL内,根据用户不同需求可以很容易生成数据库的联接、数据的提取和对已存在服务器上Excel模板文件(报表)的写入等功能。
4Web服务器上的权限设定
NT服务器上的文件安全模式分为两种,即用户权限和文件权限。必须要在Excel模板文件(报表)存在的目录设置其权限为用户System可完全控制,System用户拥有对这个目录完全控制权限。
二、实现方案
Web服务器使用Asp响应用户,根据用户不同的需求来调用DLL中不同的函数线程,该线程首先从数据库服务器上提取相应的数据,然后打开相应的Excel模板文件,将数据存入新的Excel文件。对数据进行加工处理工作重点是用Excel中的公式来定义,简单地用DLL中函数处理。最后Asp将用户需求重定向到已经生成的Excel文件上,用户即可查看、打印或者做进一步的加工厂作。当然,你必须设定NT上的System用户拥有对Excel模板存放的目录有完全控制的权限。
三、编程
1Asp编程
a用户需求选择界面
b响应用户请求的show.asp页面
2用VB编制DLL文件
在VB6.0中用向导生成一个ActiveXDLL工程文件,代码(略)。
3用Excel公式来进行数据的分类汇总工作
4最后用生成的DLL库在服务器端注册
四、结束语
基于XML的代码自动生成工具 篇12
关键词:XML,代码生成器,程序自动化
1 技术背景和优势
1. 1 代码生成器的技术发展
自动代码生成技术[1]作为一种出现在上世纪的软件开发技术,首先出现在编译器的开发和设计之中,并在此领域获得了广泛应用。在编译器模型中,编译器前段将输入的源程序翻译成一种中间表示,后端以源程序的中间表示为输入,并产生等价的目标程序作为输出。在此编译器的后端就是编译器的代码生成部分。
在这里,自动代码生成并不是指作为编译器后端的代码生成,而是指通过生成器,读取相关的代码或文档中的定义,生成如C、C ++ 、Java、Perl、Ruby、Python及HTML等高级语言代码。
自动代码生成技术从上世纪起步发展以来,取得了长足进步。但随着计算机科学与技术的不断发展, 自动代码生成技术也越来越成熟并被广泛应用[2]。
1. 2 采用代码生成器的好处
对于软件工程师而言,代码生成技术有如下优点[3]:
( 1) 保证代码的质量。一个项目周期中大量的手写代码通常会由于软件工程师在编码时不断采用新的或更好的方法而良莠不齐。代码生成技术从编码的初始阶段创建通用模板,而通过修改模板和再次运行代码生成器来对所有已生成的基本代码修正缺陷或优化。
( 2) 保证代码的一致性。由代码生成器生成的代码在API和变量名上的写法完全一致,这就为使用者提供了易懂易用的接口,更利于分层思想的实现。
( 3) 产生代码的高效性。一旦模板等设计好后, 只需简单的运行代码生成器便可高效地生成用户需求的代码。
( 4) 利于维护。接口和变量的一致性有利于后续的维护工作。
2 代码生成工具的框架
一般而言代码生成器有着必不可少的3要素: ( 1) 模板。即生成代码的格式和结构模板。( 2) 元数据。即在代码中需建模的结构相关资源。( 3) 业务规则。用于指定元数据和行为的规则,这一部分通常封装在代码生成器中[4]。
常见的典型代码生成方式有3种: ( 1) CORBA中间件所采用的IDL( 接口定义语言) 的代码生成方式。 ( 2) . NET提供的Code DOM机制。( 3) 基于XML的生成方式。表1列出了3种方式采用的模板、元数据、业务规则[5]。
由表1可看出,这3种代码生成方式各有不同,但就实现的简易程度而言,基于XML的代码生成技术明显更具优势。其以XML技术和XLST文档转换技术作为支持,而XSLT语言则直接定义文档转换规则,与生成代码采用的语言无关,故可更方便快捷地实现代码的自动生成; 而其他两种代码生成方式由于其业务规则与要生成的代码语言相关,而生成某种特定语言, 其映射关系的建立一般不由程序员确立[6]。
另外,从发展前景来看,XML具有良好的可读性, 方便的可扩展性,数据内容与其形式的分离,可轻松地跨平台应用,适合面向对象的程序开发等多方面优势。人们可通过DOM或SAX等技术对XML数据进行访问; 更可通过XPath和XSLT对其进行文档转换,将其转换为其他格式的文档。
基于以上的自动代码生成方式的对比及XML的应用优势,文中选择基于XML的代码生成方式来实现代码生成。
基于XML的代码生成方式是一种常见的典型代码生成方式。其模板语言一般为XSLT; 其元数据一般用XML文件记录; 其业务规则一般通过XSLT转换语言定义,通过XSLT引擎自动产生代码[7]。基于XML的代码生成工具的整体框架,如图1所示。
图1是具体的代码生成工具的框架。其中,数据文件即三要素中的元数据; 模板文件即模板; 而业务规则被封装在代码生成工具中。基于XMl的代码生成工具中的数据文件和模板文件均为XML表,代码生成工具则依赖于XML解析器的实现[8]。
3 代码生成工具的实现
由于在雷达系统建模与仿真中存在众多的代码重复编写的问题,为避免人为编写带来不必要的麻烦和错误,文中使用基于XML的代码生成工具来自动帮助生成底层仿真模型代码。为对XML数据进行访问,设计了一个适合于C /C ++ 的基于DOM解析规则的XML解析器。在现有开源软件CMark Up的基础上,为适应遍历普通树的各个节点的需求,文中对CMark Up进行了二次封装,重新设计了数据结构,其结构如下:
Typedef struct xml Elem_tag
{
/ / 节点操作
struct xml Elem_tag * parent; / / 父节点
struct xml Elem_tag * current; / / 当前节点
struct xml Elem _tag * child Head; / / 子节点的头
结点
struct xml Elem_tag * forward; / / 前向指针
struct xml Elem_tag * next; / / 后向指针数组
/ / 数据操作
char * attrib Head; / / 属性指针头结点
int n Attrib; / / 属性数目
/ / 节点内容
char elem Name[MAXLENGTH + 1 ]; / / 节点名称,MAXLENGTH为一个宏
int n Depth Elem; / / 当前节点的在树形结构中的深度
} xml Elem,* pxml Elem;
重新设计后的XML解析器可更容易的进行递归遍历,方便解析XML数据。
对于代码自动生成工具中重要的模板设计,为适应雷达系统建模与仿真的需求,将模板信息分为5大类: ( 1) 系统信息。代码生成后的存放路径、代码生成后的文件名、生成C ++ 代码的类名、成员函数名等。 ( 2) 参数信息。时宽、采样频率、发射功率、带宽、脉冲重复周期等。( 3) 模型的输入信息。发射信号脉冲重复周期类型、发射信号载频类型、发射信号调制类型、发射信号中心载频等。( 4) 模型的输出信息。输出数据结构体、输出信号类型。( 5) 模型之间的连接信息。两个模型之间的连接关系,两个模型之间的数据传输。
同时为生成C ++ 代码,必须为头文件( . h) 和源文件( . cpp) ,分别设置模板。为方便管理,将其放在同一XML表中以”template_h”和”template_cpp”节点区别,如图2所示。
图 2 XML 模板的设计与实现
图 3 数据文件交互式界面
为更人性化、交互性更好,给该数据文件配备了可视化的界面,如图3所示。在用户填入需要一些数据后就可点击“选项”页面的“生成C ++ 代码”按钮即可生成所需要代码。假设文件名填入“sub Transmitter”其他为默认值,生成代码:
/ / 参数定义模块,主要完成对参数的定义
typedef struct para_sub Transmitter_tag
{
double tau; / / 脉冲宽度
double fs; / / 采样频率
double band; / / 带宽
double pt; / / 发射机瞬时功率
} para_sub Transmitter; / /参数定义部分
/ / 接口定义模块,主要完成对接口的定义
typedef struct io_sub Transmitter_tag
{
/ / 输入接口定义
int in_prt Type; / / 发射信号脉冲重复周期类型
int in_fc Type; / / 发射信号载频类型
int in_mod Type; / / 发射信号调制类型
int in_mod Phase Type; / / 发射相位信号调制类型
/ / 输出接口定义
struct signal out_struct; / / 发射信号结构体
struct pmat Matrix pout_msignal; / / 发射信号
} io_sub Transmitter; / /接口定义部分
typedef struct sub Transmitter_tag
{
para_sub Transmitter para Data; / / 参数结构体
io_sub Transmitter io Data; / / 输入输出结构体
struct sub Transmitter _ tag * pm _ data; / / 指向自己的指针
} sub Transmitter,* psub Transmitter; / /用户模型 定义
4 结束语