- 浏览: 288631 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
xisuchi:
咋没人收藏阿
前端开发大众手册(包括工具、网址、经验等) -
past2010yeah:
太好了,解决了我纠结很久的问题!!!非常感谢!
解决Flex跨域"访问URL时遇到安全性错误" -
shlei:
xiao_kai 写道这样会不会牺牲性能啊~~会,但是这是暂时 ...
解决flex4 spark 找不到外观错误 -
xiao_kai:
这样会不会牺牲性能啊~~
解决flex4 spark 找不到外观错误 -
jcl860:
兄台:左边面板是图片,还是用mxml画出来的图形?
仿IBM-BPM Editor实现的WorkFlowEditor
在网上搜了一些例子,找了一大队资料,终于把workFlowEditor做得差不多了,这是一个类似IBM-BPM Editor的工作流编辑器,现还有一些功能没实现,现将部分代码贴在此,有需要的朋友可以交流,拍砖,哈哈。
上图:
节点间的连线重绘:
键盘事件类:
这里有,自己下载吧,http://www.ibm.com/developerworks/cn/downloads/ws/elixir/
你这个是用的ilog组件,需要导入ilog的swc库文件,
二次贝塞尔曲线,查资料吧,
抱歉,这已经是商业产品了,
上图:
节点间的连线重绘:
package com { import flash.geom.Point; public class RefreshLine { /** 和节点相关的线条的数组 **/ public var lineList:Array = []; public var width:Number; public var height:Number; public var lineFlag:LineLag; public var line:Line; public var node:Nodes; private var isFromNode:Boolean=false; private var num1:int=0; //开始节点,箭头右方向,连线数累加 private var num2:int=0; //开始节点,箭头左方向,连线数累加 private var num3:int=0; //开始节点,箭头上方向,连线数累加 private var num4:int=0; //开始节点,箭头下方向,连线数累加 private var numA:int=0; //结束节点,箭头右方向,连线数累加 private var numB:int=0; //结束节点,箭头左方向,连线数累加 private var numC:int=0; //结束节点,箭头上方向,连线数累加 private var numD:int=0; //结束节点,箭头下方向,连线数累加 private var startX:int; private var startY:int; private var endX:int; private var endY:int; public function RefreshLine(node:Nodes) { this.node=node; lineList=node.lineList; } /** * 重绘节点上的连线 * */ public function getAspectArr():void{ for(var j:int = 0; j < lineList.length; j++){ lineFlag = lineList[j]; line = lineFlag.line; switch(line.aspect){ case 1: if(line.fromNode==node) num1++; else numA++; break; case 2: if(line.fromNode==node) num2++; else numB++; break; case 3: if(line.fromNode==node) num3++; else numC++; break; case 4: if(line.fromNode==node) num4++; else numD++; break; } } } public function refreshLine():void{ var isHead:Boolean; var startNO:int=0; //指向开始节点的连线的条数 var endNO:int=0; //指向结束节点的连线的条数 width=node.width; height=node.height; getAspectArr(); for(var i:int = 0; i < lineList.length; i++){ startX = node.x; startY = node.y; endX = node.x; endY = node.y; lineFlag = lineList[i]; line = lineFlag.line; isHead = lineFlag.isHead; if(line.fromNode==node){ isFromNode=true; startNO++; }else{ endNO++; } switch(node.type){ case Nodes.NODE: case Nodes.EMAIL: case Nodes.CLOCK: case Nodes.ENDNODE: circleNodePosition(startNO,endNO); break; case Nodes.RECT: rectNodePosition(startNO,endNO); break; case Nodes.BRECT: rectNodePosition(startNO,endNO); break; case Nodes.DIAMOND: diamondNodePosition(startNO,endNO); break; } /** * 如果是连线箭头所指的,则重设线条开始位置 * 如果不是,则重设连线结束 **/ if(isHead) line.startPoint = new Point(startX,startY); else line.endPoint = new Point(endX,endY); line.drawLine(line.aspect); } num1=0; num2=0; num3=0; num4=0; numA=0; numB=0; numC=0; numD=0; } private function circleNodePosition(startNO:int,endNO:int):void{ switch(line.aspect){ case 1: //箭头向右 switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=Nodes.CIRCLE_RADIUS*2+1; }else{ startY-=1; } startX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(num1+1)*(startNO); break; case line.lineStyleArr[2]: startX+=13; startY+=Nodes.CIRCLE_RADIUS*2/(num1+1)*(startNO); break; default: startX+=width-15; startY+=Nodes.CIRCLE_RADIUS*2/(num1+1)*(startNO); break; } endX+=15; endY+=Nodes.CIRCLE_RADIUS*2/(numA+1)*(endNO); break; case 2: //箭头向左 switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=Nodes.CIRCLE_RADIUS*2+1; }else{ startY-=1; } startX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(num2+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width-15; startY+=Nodes.CIRCLE_RADIUS*2/(num2+1)*(startNO); break; default: startX+=13; startY+=Nodes.CIRCLE_RADIUS*2/(num2+1)*(startNO); break; } endX+=width-13; endY+=Nodes.CIRCLE_RADIUS*2/(numB+1)*(endNO); break; case 3: //箭头向上 switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=width-15; }else{ startX+=13; } startY+=Nodes.CIRCLE_RADIUS*2/(num3+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(num3+1)*(startNO); startY+=Nodes.CIRCLE_RADIUS*2+1; break; default: startX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(num3+1)*(startNO); startY-=1; break; } endX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(numC+1)*(endNO); endY+=Nodes.CIRCLE_RADIUS*2+3; break; case 4: //箭头向下 switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=width-15; }else{ startX+=13; } startY+=Nodes.CIRCLE_RADIUS*2/(num4+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(num4+1)*(startNO); startY-=1; break; default: startX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(num4+1)*(startNO); startY+=Nodes.CIRCLE_RADIUS*2+1; break; } endX+=width/2-Nodes.CIRCLE_RADIUS+Nodes.CIRCLE_RADIUS*2/(numD+1)*(endNO); endY-=2; break; } } private function rectNodePosition(startNO:int,endNO:int):void{ switch(line.aspect){ case 1: switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=height+2; }else{ startY-=0; } startX+=width/(num1+1)*(startNO); break; case line.lineStyleArr[2]: startX-=0; startY+=height/(num1+1)*(startNO); break; default: startX+=width; startY+=height/(num1+1)*(startNO); break; } endX-=2; endY+=height/(numA+1)*(endNO); break; case 2: switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=height+2; }else{ startY-=0; } startX+=width/(num2+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width; startY+=height/(num2+1)*(startNO); break; default: startX-=0; startY+=height/(num2+1)*(startNO); break; } endX+=width+2; endY+=height/(numB+1)*(endNO); break; case 3: switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=width; }else{ startX-=0; } startY+=height/(num3+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width/(num3+1)*(startNO); startY+=height+2; break; default: startX+=width/(num3+1)*(startNO); startY-=0; break; } endX+=width/(numC+1)*(endNO); endY+=height+3; break; case 4: switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=width; }else{ startX-=0; } startY+=height/(num4+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width/(num4+1)*(startNO); startY-=0; break; default: startX+=width/(num4+1)*(startNO); startY+=height+2; break; } endX+=width/(numD+1)*(endNO); endY-=1; break; } } private function diamondNodePosition(startNO:int,endNO:int):void{ switch(line.aspect){ case 1: if((num1<=1 && line.fromNode==node) || (numA<=1 && line.toNode==node)){ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=Nodes.DIAMOND_BORDER; }else{ startY-=0; } startX+=width/2; break; case line.lineStyleArr[2]: startX+=4; startY+=Nodes.DIAMOND_BORDER/(num1+1)*(startNO); break; default: startX+=Nodes.DIAMOND_BORDER+6; startY+=Nodes.DIAMOND_BORDER/2; break; } endX+=3; endY+=Nodes.DIAMOND_BORDER/2; }else{ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=Nodes.DIAMOND_BORDER-13; }else{ startY+=13; } startX+=width/(num1+1)*(startNO); break; case line.lineStyleArr[2]: startX+=(width-Nodes.DIAMOND_BORDER)/2+10; startY+=Nodes.DIAMOND_BORDER/(num1+1)*(startNO); break; default: startX+=Nodes.DIAMOND_BORDER-6; startY+=Nodes.DIAMOND_BORDER/(num1+1)*(startNO); break; } endY+=Nodes.DIAMOND_BORDER/(numA+1)*(endNO); if((num1==3 && startNO==2) || (numA==3 && endNO==2)){ endX+=3; }else{ endX+=15; } } break; case 2: if((num2<=1 && line.fromNode==node) || (numB<=1 && line.toNode==node)){ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=Nodes.DIAMOND_BORDER; }else{ startY-=0; } startX+=width/2; break; case line.lineStyleArr[2]: startX+=Nodes.DIAMOND_BORDER+6; startY+=Nodes.DIAMOND_BORDER/(num2+1)*(startNO); break; default: startX+=4; startY+=Nodes.DIAMOND_BORDER/2; break; } endX+=Nodes.DIAMOND_BORDER+6; endY+=Nodes.DIAMOND_BORDER/2; }else{ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.y<line.toNode.y){ startY+=Nodes.DIAMOND_BORDER-13; }else{ startY+=13; } startX+=width/(num2+1)*(startNO); break; case line.lineStyleArr[2]: startX+=Nodes.DIAMOND_BORDER-6; startY+=Nodes.DIAMOND_BORDER/(num2+1)*(startNO); break; default: startX+=(width-Nodes.DIAMOND_BORDER)/2+13; startY+=Nodes.DIAMOND_BORDER/(num2+1)*(startNO); break; } endY+=Nodes.DIAMOND_BORDER/(numB+1)*(endNO); if((num2==3 && startNO==2) || (numB==3 && endNO==2)){ endX+=Nodes.DIAMOND_BORDER+7; }else{ endX+=Nodes.DIAMOND_BORDER-4; } } break; case 3: if((num3<=1 && line.fromNode==node) || (numC<=1 && line.toNode==node)){ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=Nodes.DIAMOND_BORDER+6; }else{ startX+=4; } startY+=Nodes.DIAMOND_BORDER/2; break; case line.lineStyleArr[2]: startX+=width/(num3+1)*(startNO); startY+=Nodes.DIAMOND_BORDER; break; default: startX+=width/2; startY-=0; break; } endX+=width/2; endY+=Nodes.DIAMOND_BORDER+2; }else{ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=Nodes.DIAMOND_BORDER-13; }else{ startX+=15; } startY+=Nodes.DIAMOND_BORDER/(num3+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width/(num3+1)*(startNO); startY+=Nodes.DIAMOND_BORDER-13; break; default: startX+=width/(num3+1)*(startNO); startY+=13; break; } endX+=width/(numC+1)*(endNO); if((num3==3 && startNO==2) || (numC==3 && endNO==2)){ endY+=Nodes.DIAMOND_BORDER+2; }else{ endY+=Nodes.DIAMOND_BORDER-11; } } break; case 4: if((num4<=1 && line.fromNode==node) || (numD<=1 && line.toNode==node)){ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=Nodes.DIAMOND_BORDER+6; }else{ startX+=4; } startY+=Nodes.DIAMOND_BORDER/2; break; case line.lineStyleArr[2]: startX+=width/(num4+1)*(startNO); startY-=0; break; default: startX+=width/2; startY+=Nodes.DIAMOND_BORDER; break; } endX+=width/2; endY-=1; }else{ switch(line.lineStyle){ case line.lineStyleArr[1]: if(line.fromNode.x<line.toNode.x){ startX+=Nodes.DIAMOND_BORDER-13; }else{ startX+=15; } startY+=Nodes.DIAMOND_BORDER/(num4+1)*(startNO); break; case line.lineStyleArr[2]: startX+=width/(num4+1)*(startNO); startY+=13; break; default: startX+=width/(num4+1)*(startNO); startY+=Nodes.DIAMOND_BORDER-13; break; } endX+=width/(numD+1)*(endNO); if((num4==3 && startNO==2) || (numD==3 && endNO==2)){ endY-=1; }else{ endY+=11; } } break; } } } }
键盘事件类:
package com { import flash.events.KeyboardEvent; import flash.events.MouseEvent; import mx.core.UITextField; import net.L4cd.iTrace; public class WFKeyboard { private var node:Nodes; private var line:Line; private var workFlow:CusWorkFlow; private var o:Object; /** CusWorkFlow对象的放大/缩小参数 **/ private var scaleNO:Number=.2; /** 封装连线的对象 **/ private var lineLag1:LineLag; public var trace:Function = iTrace.init; public function WFKeyboard() { } /** 选择键盘按键ASCII值 **/ public function chooseKey(e:KeyboardEvent,mouseE:MouseEvent):void { o=getObjects(mouseE); node=o.node as Nodes; line=o.line as Line; workFlow=o.workFlow as CusWorkFlow; switch(e.keyCode){ case 8: case 46: deleteNode(node,line,workFlow); break; case 65: if(!e.ctrlKey)return; break; case 107: if(!e.ctrlKey)return; workFlow.scaleX+=scaleNO;//放大CusWorkFlow对象 workFlow.scaleY+=scaleNO; break; case 109: if(!e.ctrlKey)return; workFlow.scaleX-=scaleNO;//缩小CusWorkFlow对象 workFlow.scaleY-=scaleNO; break; } } /** 删除节点或连线 **/ private function deleteNode(node:Nodes,line:Line,workFlow:CusWorkFlow):void { if(!workFlow)return; if(node){ var num:int=node.lineList.length; for(var i:int=0;i<num;i++){ var lineLag:LineLag=node.lineList[i]; workFlow.removeChild(lineLag.line); if(node==lineLag.line.fromNode){ for(var j:int=0;j<lineLag.line.toNode.lineList.length;j++){ lineLag1=lineLag.line.toNode.lineList[j] as LineLag; if(node==lineLag1.line.fromNode){ lineLag.line.toNode.lineList.splice(j,1); } } }else{ for(var k:int=0;k<lineLag.line.fromNode.lineList.length;k++){ lineLag1=lineLag.line.fromNode.lineList[k] as LineLag; if(node==lineLag1.line.toNode){ lineLag.line.fromNode.lineList.splice(k,1); } } } } workFlow.removeChild(node); }else if(line){ for(var m:int=0;m<line.toNode.lineList.length;m++){ lineLag1=line.toNode.lineList[m] as LineLag; if(line==lineLag1.line){ line.toNode.lineList.splice(m,1); break; } } for(var n:int=0;n<line.fromNode.lineList.length;n++){ lineLag1=line.fromNode.lineList[n] as LineLag; if(line==lineLag1.line){ line.fromNode.lineList.splice(n,1); } } workFlow.removeChild(line); } } /** 重画节点边框,表示选中或非选中 **/ public function reDrawNode(map:Nodes):void{ switch(map.type){ case Nodes.NODE: map.drawNode(); break; case Nodes.DOC: map.drawDoc(); break; case Nodes.EMAIL: map.drawEmail(); break; case Nodes.RECT: map.drawRect(); break; case Nodes.BRECT: map.drawBRect(); break; case Nodes.DIAMOND: map.drawDiamond(); break; case Nodes.CLOCK: map.drawClock(); break; case Nodes.ENDNODE: map.drawEndNode(); break; case Nodes.LEFTDASHED: map.drawDashed(); break; case Nodes.RIGHTDASHED: map.drawDashed2(); break; } } /** 返回鼠标选中的对象 **/ private function getObjects(e:MouseEvent):Object{ o=new Object(); if(e.target is UITextField){ o.node=e.target.parent.parent as Nodes; o.workFlow=e.target.parent.parent.parent as CusWorkFlow; }else if(e.target is Nodes){ o.node=e.target as Nodes; o.workFlow=e.target.parent as CusWorkFlow; }else if(e.target is CusWorkFlow){ o.workFlow=e.target as CusWorkFlow; }else if(e.target is Line){ o.line=e.target as Line; o.workFlow=e.target.parent as CusWorkFlow; } return o; } } }
评论
13 楼
jcl860
2012-09-14
兄台:左边面板是图片,还是用mxml画出来的图形?
12 楼
jcl860
2012-09-05
兄弟,能把mxml代码贴上看看不,主要是画不出界面啊。
11 楼
shlei
2012-08-31
jcl860 写道
兄弟,你有联系方式没有,请给发一下。我的邮箱:317902593@qq.com。
这里有,自己下载吧,http://www.ibm.com/developerworks/cn/downloads/ws/elixir/
10 楼
jcl860
2012-08-31
兄弟,你有联系方式没有,请给发一下。我的邮箱:317902593@qq.com。
9 楼
shlei
2012-08-30
jcl860 写道
兄弟, import com.ibm.ilog.elixir.diagram.Graph;缺这些东西啊,这些东西报错了,咋整呢?
你这个是用的ilog组件,需要导入ilog的swc库文件,
8 楼
jcl860
2012-08-30
兄弟, import com.ibm.ilog.elixir.diagram.Graph;缺这些东西啊,这些东西报错了,咋整呢?
7 楼
421081646
2012-08-08
挺好的,学习了
6 楼
shlei
2011-11-11
a0409028 写道
连线是怎么实现的有弧度,据天代码是那块?,感谢 了。
二次贝塞尔曲线,查资料吧,
5 楼
a0409028
2011-11-11
连线是怎么实现的有弧度,据天代码是那块?,感谢 了。
4 楼
shlei
2011-10-19
a0409028 写道
能不能共享一下,页面源码
抱歉,这已经是商业产品了,
3 楼
a0409028
2011-10-19
能不能共享一下,页面源码
2 楼
debbykindom
2011-09-16
,强大,希望有机会再和兄台深入交流。
1 楼
tree_161219
2011-03-29
写的很不错呢!
发表评论
-
Flex4之皮肤定制【Skin类和Skin类】
2013-10-05 19:19 1151第一、关于spark.skin.SparkSkin类的 ... -
基于 Cairngorm MVC 框架的 Flex 程序设计与开发
2013-10-05 18:38 1007翟 峰, 开发工程师, IBM 吴 镝, IBM 实习生, I ... -
在flex中使用model标签读取配置文件的方法
2012-08-16 09:54 9941.使用 Model标签 <mx:Model id=& ... -
flex xml操作
2012-04-25 10:48 1174今天我们来看看AS3中新的XML处理方法:E4X,直到现在,E ... -
Flex 创建过滤特定文件的FileReference
2012-03-01 16:13 1661下面的代码演示了Flex中如何创建一个可以过滤特定后缀文件的F ... -
Flex 根据图片url获取bitmapdata并绑定到多个Image
2012-03-01 14:40 3051private function getImage(url ... -
Flex 开始日期与结束日期DateField组件
2012-03-01 13:45 1831<?xml version="1.0&qu ... -
匹配已选中数据的某字段和下拉框数据
2012-03-01 08:41 1309package YD.Web.Common.Utils ... -
解决flex4 spark 找不到外观错误
2012-02-27 14:01 1912spark组件为了提高性能adobe做了很多努力,同 ... -
Flex垃圾回收和性能优化的一些总结
2012-02-27 11:30 1212本文是Kenshin根据一些对 ... -
【转】关于Flex未来走向的问答
2011-11-22 09:50 1780•转自:http://www.riadev.com/flex- ... -
Flex 关于validateNow方法
2011-11-18 10:42 2303validateNow(); 官方解释:验证并更新此对 ... -
Flex 数值转IP
2011-11-18 10:19 914package common { public cl ... -
Flex 关于遍历
2011-11-18 10:15 1047获取XML属性名、值 var x : XML = < ... -
Flex HttpService重用2
2011-09-28 13:30 1204HttpService工具类: package commo ... -
动态配置AMF与后台接口调用
2011-09-28 11:47 1515以下是一个AMF调用类: package common ... -
Unix时间戳转化AS3日期格式
2011-09-21 16:14 2301Unix时间戳:1254671828 返回:2009-10-1 ... -
Responder使用方法
2011-07-11 18:03 2139Responder 是一个简单的处理远程异步调用的结果/异常的 ... -
AS3.0
2011-03-14 15:40 1489┏━━━━━━━━━━━━━━━━━━┓ ┃ 第三部分:Ac ... -
关于as3的一些总结
2010-11-12 09:23 11021.载入外部xml方法 注意点:如果将flash放在html ...
相关推荐
【标题】:“仿IBM-BPM Monitor实现的demo” 在IT领域,流程管理(Business Process Management,BPM)是企业信息化建设中的重要组成部分,它帮助企业优化业务流程,提高工作效率。IBM BPM是一款强大的流程管理工具...
ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考...
ibm-java-sdk-8.0-5.11-x86_64-archive.bin ibm的jdk 8.0版本
1. **下载与准备**:首先,你需要从IBM官方网站或者其他可信赖的来源下载`ibm-java-ppc64-sdk-7.0-10.50.bin`这个二进制文件。这个文件是安装程序的载体,包含了所有必要的组件。 2. **赋予执行权限**:由于AIX系统...
1) 本工程主要演示在SPRING BOOT工程中怎样使用JMS集成IBM-MQ及TLQ两种消息中间件产品 2) 使用SPRING BOOT Conditional机制实现了两种产品按需加载,工程会根据配置文件开关动态加载 3) 实现了普通队列消息发送与...
linux 64位IBM JDK1.8 linux 64位
IBM-WWPMM方法论 IBM-WWPMM方法论 基本概念 项目计划 项目授权书 组建项目团队 构建项目管理主计划框架 完成工作分解(WBS) 进行风险识别、制定风险管理计划 修订WBS并估算每一项任务的成本(时间) 确定任务间的...
因素与员工离职和绩效有关(数据集)-ibm-hr-analytics-attrition-dataset.zip因素与员工离职和绩效有关(数据集)-ibm-hr-analytics-attrition-dataset.zip因素与员工离职和绩效有关(数据集)-ibm-hr-analytics-...
- 本书可能会介绍如何通过中断服务程序(ISR)或者系统调用来实现对操作系统服务的调用,这对于开发能够在IBM-PC上运行的应用程序来说非常重要。 5. **调试与优化** - 编写高质量的汇编语言程序往往需要经过多次...
【IBM-Full官方Visio形状】是一套专为IBM产品设计的Visio形状库,它包含了大量的图形元素,用于在Microsoft Visio中绘制IBM相关的系统架构、网络拓扑、流程图和其他技术图表。这些形状可以帮助IT专业人员更直观地...
ibm-java-jre-6.0-16.30-linux-i386.binibm-java-jre-6.0-16.30-linux-i386.bin
ibm open j9的虚拟机包(mac os x64)
根据提供的文件信息,本篇将围绕“IBM-PC汇编语言程序设计实验报告1”进行深入探讨,重点解析四个子程序的功能实现以及如何通过主程序完成一个简单的乐曲程序。 ### 一、实验背景 在计算机科学领域,汇编语言是一...
在IBM-PC汇编语言中,这通常通过定义数据段(datarea segment)并存储字符序列来实现。例如,定义两个字符串string1和string2,并使用db指令分配存储空间并赋值。字符的显示则通过调用DOS中断服务,如INT 21H的AH=09...
ibm-java2-x86_64-jre-5.0-13.1.x86_64.rpm
( 清华大学 《IBM-PC 汇编语言程序设计(第二版)》 沈美明 温冬婵 编著)。 PS1:本人还上传了配套的PPT课件。 绝对的物有所值! PS2:本系列资源上传一共有3个: 1\汇编语言教程. 2\配套习题集. 3\PPT...
IBM-PC汇编语言程序设计实验教程与习题集;IBM-PC汇编语言程序设计实验教程与习题集;IBM-PC汇编语言程序设计实验教程与习题集;IBM-PC汇编语言程序设计实验教程与习题集;IBM-PC汇编语言程序设计实验教程与习题集;
IBM-Workstations.vss IBM-UPS-PDU.vss IBM-TotalStorage-Disk.vss IBM-Server.vss IBM-Racks.vss IBM-IO-Cards.vss
IBM-PC 8253/8255音乐演奏器的设计 2、设计目的 熟悉并掌握IBM-PC中定时器8253及并行接口芯片8255驱动扬声器发出声音的方法,熟悉并掌握接口控制程序的一般结构。 3、设计内容与要求 (1)电子琴功能,编写程序,...