自定义指标学习

2024-04-30

自定义指标学习(精选4篇)

篇1:自定义指标学习

直接上代码 自定义控件的主体内容

package com.x2l.onlineedu.mid.object;import android.annotation.SuppressLint;import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.x2l.onlineedu.mid.R;public class TopLayout extends LinearLayout { private Context mContext; private ImageView v_left; private View v_main; private ImageView v_right; private TextView tv; TopLayOutClickListener topLayOutClickListener; public TopLayout(Context context) { super(context); mContext = context; } public TopLayout(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; init(attrs); } /** * 功 能:载入在Xml中设置的内容 * 时 间:2015年6月17日 下午2:21:07 * 注 意: * * @param attrs */ private void init(AttributeSet attrs) { TypedArray a = mContext.obtainStyledAttributes(attrs, R.styleable.TopLayout); int left_Src = a.getResourceId(R.styleable.TopLayout_leftImage_src, R.drawable.ic_app); int right_Src = a.getResourceId(R.styleable.TopLayout_rightImage_Visiable, R.drawable.ic_app); int left_Visiable = a.getInt(R.styleable.TopLayout_leftImage_Visiable, View.VISIBLE); int top_background = a.getResourceId(R.styleable.TopLayout_layout_background, R.drawable.top_main); String str = a.getString(R.styleable.TopLayout_text); int right_Visiable = a.getInt(R.styleable.TopLayout_rightImage_Visiable, View.VISIBLE); int text_Visiable = a.getInt(R.styleable.TopLayout_text_Visiable, View.VISIBLE); v_main = LayoutInflater.from(mContext).inflate(R.layout.toplayout, this, true); v_left = (ImageView) v_main.findViewById(R.id.top_layout_leftbtn); v_right = (ImageView) v_main.findViewById(R.id.top_layout_rightbtn); tv = (TextView) v_main.findViewById(R.id.top_layout_text); v_left.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (topLayOutClickListener != null) { topLayOutClickListener.LeftBtnClick(); } } }); v_right.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (topLayOutClickListener != null) { topLayOutClickListener.RightBtnClick(); } } }); v_main.setBackgroundResource(top_background); v_left.setImageResource(left_Src); v_left.setVisibility(left_Visiable); v_right.setImageResource(right_Src); v_right.setVisibility(right_Visiable); tv.setText(str); tv.setVisibility(text_Visiable); } @SuppressLint(“NewApi”) public TopLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mContext = context; } public interface TopLayOutClickListener { void LeftBtnClick(); void RightBtnClick(); } public void setTopLayoutClickListener(TopLayOutClickListener clickListener) { this.topLayOutClickListener = clickListener; }}

自定义控件相应的View toplayout.xml

可以在XMl自定义属性中定义的项目 必须在 attr中定义

使用上自定义控件的地方 testlayout.xml

注意:在使用自定义的控件有时候会报 No resource identifier found for attribute ‘XXX’ in package 等错误

解决方法:命名空间后面的包名应该是AndroidManifest.xml文件中定义的package包名,而不是使用的这个自定义控件所处的包的包名,

通用顶部自定义控件 可在XML自定义属性

★ 菜鸟学习Dedecms自定义标签

★ DEDECMS教程:留言薄模块的使用

★ PS自定义形状工具使用教程

★ 失落-自定义成长日记

★ 创建虚拟目录的常用属性

★ 自定义滤镜和置换滤镜的原理

★ dedecms任意地址跳转漏洞预警

★ 使用帮助 范文

★ 如何自定义IE临时文件夹的储存容量

★ QQ空间自定义模块无法显示怎么办

篇2:自定义报表的设计与实现

在信息系统开发过程中, 报表作为一般信息系统的通用需求, 具有非常重要的作用, 一个自定义的通用报表工具既可以提高系统开发和维护的效率, 又可以增加系统的灵活性。

报表基本上分为两类:一类是静态格式报表, 如票据、账单, 它格式复杂但固定;另一类是动态格式报表, 如统计报表, 它的表体会随着记录数的多寡而变化。当前的很多报表工具虽然具有一定的通用性, 但绝大部分都只能适应上述的某一类报表, 而且其通用性只相对于开发人员而言, 只有开发人员才能修改报表, 用户无法或者只能少量地定义和修改, 所以形成了一段程序对应一种报表的局面。当系统的报表种类很多时, 就会使系统变得很复杂, 不便于开发和维护。

为了解决这一问题, 我们以Delphi为工具开发了一个用户可自定义的通用报表工具的DLL。它适用于上述两类报表, 对于相似的报表可共用同一段程序实现, 具有很强的通用性;而且在一定程度上用户还可以自定义报表的格式, 进行排版, 具有很强的自定义性。

1 通用报表设计

1.1 报表组成分析

通过对各种不同的报表实例的分析, 总结出报表都是由许多个“表格项”组成的, 一个“表格项”包括:一个标题单元格和多个“表格值”单元格 (可缺省) , 为了便于管理, 可再定义由多个“表格项”共同组成的“表格项组”。所以, 报表都可以被认为是由许多个“表格项组”组成的。报表组成结构如图1所示。

在拆分报表成员之后, 下面定义各个成员的部分属性:

(1) 报表:代号、名称、页面设置、备注等;

(2) 表格项组:代号、所属报表代号、左上角坐标、高度等;

(3) 表格项:代号、所属报表代号、所属表格项组代号、标题、宽度、线宽、布局、靠左优先级、与表格值尺寸比;

(4) 表格值:代号、所属报表代号、所属表格项代号、标识、值、文字对齐方式、字体。

部分属性说明:

布局:表示“表格值”与标题的相对位置关系, 包括左右布局和上下布局;

靠左优先级:它越小表示该“表格项”在所属的“表格项组”里的位置越靠左;

与表格值尺寸比:当“上下布局”时, 该属性表示标题高度和表格值单元格高度的比值;当“左右布局”时, 该属性表示标题宽度和表格值单元格宽度的比值

标识、值:程序根据标识给相应的值赋值, 也可以设置默认值。

各个单元格的位置和大小尺寸可以由高度、宽度、布局、靠左优先级、与表格值尺寸比等属性值来计算所得。

1.2 基于面向对象方法的通用报表模型的建立

在分解完报表组成之后, 针对各报表元素建立相应的软件类:报表类、表格项组类、表格项类、表格值类及单元格基类TCellBase等。使用统一建模语言 (UML) 设计如图1所示的报表模型类图。类图清楚地展示了各个类之间的继承和聚合关系。

1.3 设计实例

下面举个报表的例子, 对于如图2所示的零件质量卡片报表, 可以将其划分为Group_Title、Group_Code、Group_Body和Group_Foot四个表格项组。

2 通用报表的实现

2.1 软件实现

根据上述设计思想设计系统结构, 将打印程序系统划分为4个层次:报表界面层、业务逻辑层、格式定义层和数据库连接访问层, 另外还包括一个DLL及接口模块。总体结构如图3所示。

考虑到和其他主程序兼容性的需要, 系统采用DLL技术。为了达到同一程序可以打印不同报表的目的, 要求为每一种报表设计一个模板存到Microsoft Access数据库中, 以后要打印时就调用相应的报表模板。用户既可以通过先启动报表预览界面, 再由界面层调用业务层中的函数打印报表, 也可以不启动报表界面, 直接由外部主程序调用业务层中的函数打印报表。

对于尺寸度量单位的确定, 由于目前的打印机和显示器的分辨率有很多种, 即单位长度上的像素个数不相同, 因此相同像素大小的单元格在不同的设备上输出的实际大小会不一样。所以为了使预览和打印的大小一致, 让报表在不同的设备上输出的大小一致, 应该采用与设备无关的毫米作为报表尺寸的度量单位。但Delphi只能以像素为单位来做图, 因此在作图前必须将毫米转换成像素, 保存报表到数据库时再将像素转换成毫米。以毫米为度量单位, 保证了预览和打印的效果一致, 设计者在绘制报表时, 真正做到了“所见即所得”。

2.2 功能实现

保存报表时, 可在Microsoft Access数据库中创建4张表分别用来保存报表、表格项组、表格项和表格值等信息, 表之间的相应记录由代号和所属代号建立起父子关系。

在解决了报表的保存问题之后, 设计时就可以给不同的报表创建不同的模板, 有了模板, 此报表工具的通用性要求就可以达到了。

另外借助界面层的报表编辑界面, 能可视化绘制报表模板, 设计者不用编写任何代码就可以轻松绘制出如图3所示的报表, 用户可以修改报表各单元的标题、字体、布局和尺寸大小等信息, 在一定程度上还可以增加和删除各个报表单元, 这样此报表工具的可自定义性要求也就可以达到了。

报表的格式由模板确定下来之后, 接下来就是要往单元格里填写数据了。为了让以后的操作不影响模板, 可创建一个模板副本, 以后就都对这个副本操作。对于静态格式报表, 只需调用赋值函数, 根据“表格值”中的“标识”给相应的“值”赋值;对于动态格式报表, 动态变化的是表体的记录部分, 所以先根据记录条数动态地增加Access数据库中的“表格值”的数量, 之后再给相应的表格值赋值。填好数据之后就可以预览打印输出报表。整个操作流程如图4所示。如果将“标识”设置为用户看得见的表格标题或者是控件名称等等, 用户就可以非常灵活得自定义报表格式, 自由添加或删除各个表格项。

3 实际应用

目前我们已经以Delphi为开发工具成功开发了该报表设计打印系统, 并应用到航天某院的PTM2系统 (产品技术集成系统) 中。PTM2系统中的报表种类繁多, 如:工序卡片、月生产计划、工装任务书和产品工时台帐等等, 格式不一, 有的甚至很不规范, 原本该系统的报表打印基本上都是导出到Excel或者Word中再排版打印, 该报表工具的开发和应用给PTM2系统的报表打印带来了很大的方便。该报表工具的操作界面主要包括以下几个部分:菜单工具栏、绘表预览区域、属性面板、报表列表。在绘表预览区域, 用户可以完成绘制报表、选择和拉伸报表元素 (包括表格项组、表格项、表格值) 、移动表格项组等操作;在报表列表里列出了所有的报表模板和已经导入数据的报表副本。

结束语

该报表工具基于通用报表模型, 通过表格值的“标识”导入报表数据, 借助报表编辑界面能绘制并预览打印绝大多数的报表, 类似的报表只采用同一段代码就可完成, 用户还可以修改报表格式, 在一定程度上还可以增加和删除各个报表单元。具有可自定义性和通用性的特点, 并已在实际中得到应用。

另外该系统还可以在以下方面进一步完善。首先, 分解报表的各元素的属性可以根据需要进一步完善, 如再增加“斜线表头”等属性;其次, 界面层的报表绘制功能还可以进一步完善, 让用户在绘制时更方便;最后, 还可以根据需要再增加Excel中的求平均值、最大最小值等函数功能 (目前已经拥有求和功能) 。由于在设计系统之初已经考虑到这些方面, 都留有余地, 所以修改起来改动量不会太大。

参考文献

[1]李臻峰, 黄志球.通用静态格式报表打印设计[J].计算机工程, 2001, 27 (4) :191-193.

[2]熊小平, 宁爱兵.面向用户的Delphi高级图文报表的实现[J].上海第二工业大学学报, 2004, (2) :16-21.

[3]蓝方, 徐少平.用Delphi开发报表打印工具的设计与实现[J].计算机与现代化, 2004, (12) :39-41.

[4]刘艺.Delphi面向对象编程思想[M].北京:机械工业出版社, 2003:294-302.

篇3:成功自定义

翻开成功学的书籍,我们常常能读到类似的故事。它们或许面貌多变,千姿百态,但同样都是以生动简单的外衣,包裹一个据说睿智又深刻的真理躯体。走进书店,成功学的书籍总是摆在最显赫的位置,并登上畅销书排行榜。身处这个时代成功变成一门“显学”,一种主导价值观,有着普适的社会学意义,宣称能够给人生带来幸福和快乐。

成功是一门“显学”

西方成功学的滥觞,我们不妨追溯到社会达尔文主义。社会达尔文主义是由达尔文的进化论演绎而来的。达尔文的进化论认为,地球上的生物,随着环境的变迁,有一个由低级生命形态向高级生命形态逐渐进化的必然趋势。在达尔文的进化论问世之后,斯宾塞提出了“社会达尔文主义”,认为社会可以和生物有机体相比拟,社会与其成员的关系有如生物个体与其细胞的关系。社会达尔文主义本身并不是一种政治倾向而是一种社会基模,根据自然界“食物链”现象提出“弱肉强食、物竞天择,适者生存”的观点,并以此解释社会现象。在这种观念指导下人类社会你死我活的残酷竞争(包括战争)被认为是正常合理的。优胜者理所当然,是上帝眷顾的结果;失败者天经地义,是应该被淘汰的。这种观点在一个世纪以前,受到残酷剥削劳动者的美国资本家的热烈欢迎,直到“大萧条”以后上台的罗斯福总统,才开始着手改变这一野蛮的人类社会法则。而在此之前,美国社会对于大批生存竞争的失败者,几乎没有任何同情和社会救助。

关于成功的秘诀,历来不乏探究者。连奥地利著名作家斯蒂芬·茨威格都曾写过一篇散文《成功的秘诀》在和大画家罗丹的近距离接触中,他深有所感:“我悟到遗忘一切其他事物,集中意志以求工作完美的这种热忱,就是我过去所缺乏的。除了工作,好像自己都不存在,这是成功的秘诀。我现在知道,舍此以外便无神妙的方法了。”但成功真正成为一门“显学”,成为大众趋之若骛的人生价值准则,和美国人戴尔·卡内基(1888-1955)不无关系。成功学自卡内基之后,成为现代成人教育的一个重要内容。从社会学理论的发展和演化来看,连美国的资本家都觉得原先的社会达尔文主义过于赤裸裸,他们变换了方式,用现代成功学理论把一切失败的原因都归结为失败者自己。而从积极的方面来看,现代成功学实际上是把失败的根源归因成个人性格所致,至少还给了人们通过改造性格而改变命运的可能。这也解释了“美国梦”为何如此备受推崇:一个穷小子,毫无家世背景,却经过自身的努力,从“草根”变身晋级为“富豪”。有谁不希望有一天,这样的奇迹也发生在自己身上?

成功的标准演化

关于成功的定义和标准,众说纷纭,但往往由社会历史大背景和所处时代的主流价值观来主宰。中国古代有立德、立功、立言的说法。孔夫子为万世师表,身后桃李满天下,《论语》开创儒家学说,历数其丰业,自然是“大成功”。伯夷、叔齐于商亡后不食周粟而死,其忠诚坚定的品德,同样是后代统治者和寻常百姓推崇的“成功”。

到了近现代,“成功”的标准,随着西方的先进技术以及强势价值观,飘洋过海而来。在中国,尤其是改革开放之后,原先“一穷二白”的国人,在社会转型的大动荡中,把拥有物质财富看作成功的“硬指标”。尤其是“物质财富的成功”,成为社会普遍的主流价值观时,成功学便衍生出强大的资本市场和庞大的拥护人群。而获得成功的途径和方法,可以在“成功学大师”的演讲中学习,也能够在堆积如山的成功学书籍中去寻找。比如,一个成功的人被现代成功学定义为:目标、行动、时间管理、情绪管理、人际管理、自身修养、特长、创新能力和自学能力都相当高的人。又比如,戴尔·卡耐基提出了良好人际能力的基本思路,他认为:“成功15%靠专业技术,85%靠人类工程即人格和领导别人的能力”。问题是,成功的途径和方法可以总结和学习,但大多数人追寻的“成功”,依然是被“物质财富”标准所挟持的狭隘的、单向度的价值观。这种狭隘和单向度,可能把社会的发展引向错误的方向。“伪成功学”也由此泛滥成灾。正如国内著名财经作家吴晓波在《激荡三十年》中所写,“这是一个多么世俗的年代,人人以物质追求为目标,道德底线被轻易穿越,心灵焦虑无处不在,身份认同时时被颠覆。”“成功学”的流行,正反映了现代人对财富、地位的强烈渴求和无度追索。

篇4:自定义编码自动成图方法探讨

关键词:自定义编码成图,CASS软件,代码

1 概述

南方CASS软件编码自动成图在实际生产过程中不够人性化,很多图不能按照测量员的意图实现,因此根据作业人员的作业习惯,定义其熟悉的编码规则测图,能够大大提高生产效率。现有的软件使用的代码很长、记忆难度大,需要人工干预因素太多。本文设计了一套替代代码,可以直接在CAD软件绘制出地形图,能提高软件的自动化程度及速度。代码根据中文拼来编写,简单易记,外业按照替代代码记录,内业时间可以大大缩短。由于程序算法不完善且都是数字化编码,不容易记录,作业过程翻看数字代码比较费时费力,所以可用自动编写代码替代原代码。

南方CASS软件本身带有草图成图和简码成图功能,但各有不足。草图成图为纯手工绘制,速度慢、效率低,地物太多时,易出错。CASS简码成图格式较为复杂(只能采用一个字母编码和两位数字组合进行编码,与对应地物间相关性差,很难记忆),不易掌握,对皮尺丈的房宽等测量数据不能进行编码记录。而且,与CASS内部编码必须严格地——对应,缺乏灵活性。

2 南方简码识别

简编码就是在野外作业时输入的地物属性提示码,经过内业的简码识别后,自动转换为程序内部码。不需要绘制草图进行测点编号,在室内用南方CASS成图软件展点绘图。南方CASS测图系统有编码作业模式,是一个有代表性的简码输入方案。CASS系统的简编码可以区分为2类:野外地物码、连接关系码,CASS系统的野外操作码可区分为类别码、关系码和独立符号码3种,每种只由1~3位字符组成。

2.1 简编码测图规则

文件格式为中第一列为野外操作码,第二列为CASS内部识别编码,野外地物码分为点状地物码和线状地物码。点状地物码适用于点状独立地物,上述文件中A00对应水文站,A01对应停泊场。线状地物编码适用于线状面状地物,常见的有坎类(曲)K (U)、线类(曲)X (Q)、垣栅类W、铁路类T、电力线类D、房屋类F、管线类G、拟合植被土质边界B、不拟合植被土质边界H、圆形物Y+数、平行体P、控制点C。例如:K3表示加固斜坡,X1表示直折线型的内部道路,Q1表示曲线型的内部道路,T2表示大比例尺窄轨铁路,Y020表示以该点为圆心、半径为20 m的圆。

2.2 连接关系码

连接关系码有“+”“-”“p”“A$”4种,使用连接关系码来描述测点间的关系。“+”表示本点与上一点相连,连线依测点顺序进行;“-”表示本点与下一点相连,连线依测点顺序相反方向进行;“p”表示本点与上一点所在地物平行;“A$”为断点标识符。

2.3 简编码使用规则

(1)对于地物的起点,操作码即为地物代码。

(2)连续观测某一地物时,操作码为“+”或“-”。

(3)交叉观测不同地物时,操作码为“n+”或“n-”。其中“+”“-”号的意义同上,n表示该点应与以上n个点前面的点相连,还可用“+A$”或“-A$”标识断点,“A$”是任意助记字符,当一对“A$”断点出现后,可重复使用“A$”字符。

(4)观测平行体时,操作码为“p”或“np”。

(5)n=当前点号-连接点号-1,即跳点数。

(6)类似于坎类的齿牙线的画向,齿牙线及其他类似标记总是画向连线方向的左边,因此改变连线方向就可改变其画向。

2.4 简码法模式的简码识别数字化测图

简码识别工作方式也称作带简编码格式的坐标数据文件自动绘图方式,其步骤如下。数据采集时,观测员需要掌握仪器操作和简单的简编码输入。例如,立尺员在测量地面上的通信线时,仪器观测员在仪器通信线起点输入地物码“D3”,如果下—个地物还是通信线,观测员只需在测量下一点时输入连接关系码“+”,如果下一点是阔叶独立树,则观测员输入其地物码“A50”。外业数据采集完成后,将数据传输保存在计算机,检核简编码是否正确。在CASS软件中,选择,“绘图处理”下拉菜单中定显示区—展点—简码识别,当提示区显示“简码识别完毕!”,计算机将根据外业采集的带简编码格式的坐标数据文件自动绘图,完成初步图形绘制。图形初步绘制后,需进一步编辑平面图、文字注记、图幅整饰、绘制等高线等,及时完成图形的清绘工作。

3 自定义编码成图的特点

通过对外业测量数据按统一的规则进行自定义编码,再通过编程转换生成CASS简码文件格式,能实现对量测的房子宽度及直角量测数据、房子类别、测点的地物类等信息进行编码,在测量内业中实现地物的自动高效绘图目标。再通过自动内业成图,把人工编辑或编程自动将采集到的带有编码属性、相互地物的拓扑关系的测量数据生成能被专业绘图软件识别的数字格式文件,然后由软件自动读取该数据文件完成相应的点状地物及线状地物的绘制。

3.1 减少记忆简码

因为是自己定义的编码,所以能够按照自己的作业习惯和记忆习惯定义编码,容易记忆,也不容易混淆。

3.2 地物的隐蔽点能用自编码加特殊符号加数字表示

全站仪测点,受地物、树木阻碍,容易产生隐蔽点,比如房屋拐角,或者一面墙只能测到部分,屋角被遮蔽。

比如,沿直线延伸5米用“=5”表示,从某点左拐5米用“*5”表示,右拐5米用“@5”表示,也可以用组合表示,先延伸在左拐用“=5*8”表示。

3.3 有效利用计算机处理器的高效运行速度

通过编程展绘带自定义编码的外业地形点数据,自动完成地物点和地物线的绘制、属性添加、按类分层等工作。避免内业生产中大量的纯手工操作劳动,提高工作效率,减少出错既率,实现规范化、标准化绘图。

可以完善编码方法,增加编码包含的信息量,便于通过自编软件生成能自动绘制地物线的CASS简码文件,大量减少外业绘制草图的工作量,大幅提高内业成图速度(如图1所示)。

4 外业采集变简单

用自定义编码采集野外数据,相对传统的作业方式,能做到多、快、好、省。

4.1 几乎不用画草图

传统作业方式需要画草图,或者用编码,但地物的其他属性很难同时表示。用用自定义编码野外数据采集,可以在全站仪中输入几乎所有地物的属性,比如房屋层数、结构等信息。

4.2 隐蔽点可以直接在全站仪中用编码输入

使用传统方法,如果有些隐蔽点用已有的控制点无法测到,就需要支点搬站。用自定义编码野外数据采集方式,可以直接输入延伸、拐角、相对边长等信息,减少搬站次数,提高测量速度,减少可能带来误差的因素(如图2所示)。

5 内业处理

通过自定义编码采集的野外数据,采用字母和数字按自己预订的规则进行组合,对野外测量采集到的每个数据进行各种相应地物种类属性、相互地物的拓扑关系等信息的记录。自定义地物编码主要分为点状地物及线状地物两大类。

大量运用了“+、—、=、@、*”等符号进行特殊运算,采用人工编辑或编程自动将采集到的带有编码属性、相互地物的拓扑关系的测量数据生成特殊编码格式,达到CASS能识别的数字格式文件,而自动成图的目的,然后由软件自动读取该数据文件,完成相应的点状地物及线状地物的绘制工作。既节约外业作业的时间,也节省内业绘图时间。

通过C++自编软件,达到快速、准确绘图的目的,自编软件如图3所示。

我们在编程时,编码尽量要与CASS编码接近,表1为CASS编码与自定义编码比较表。表2为部分自定义编码规则表。

6 效益

(1)经济效益:由于地物线的绘制速度的提高,生产效率得到了提高。在水利工程中有大量陡坎、悬崖、道路、水边线及地形地物线需要绘制,在二维地物线转化三维线这个工作上就可以节约大量时间,从而为三维建模节约时间。

(2)社会效益:在提高绘制地物线的速度的同时,减少了人工干预带来的错误,提高了绘制地物线的质量。

参考文献

[1]张正禄.工程测量学[M].北京:武汉大学出版社,2002.

[2]宁津生,陈俊勇,李德仁,等.测绘学概论[M].武汉:武汉大学出版社,2004.

上一篇:江西省技术学校下一篇:教师基本功训练