| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

秋葵软件OA-ERP高级设计

静***雅

贡献于2021-08-19

字数:42136

秋葵软件OAERP高级设计
CC++语言开发指南
目录

§1 新版CC++语言变更说明…………………………………………………………………………
§2 OAERP户程序交互……………………………………………………………………………
例审核事件………………………………………………………………………………………
例二:保存事件……………………………………………………………………………………
例三:保存事件……………………………………………………………………………………
例四:拉列表控制记录事件Event_DropDown…………………………………………………
清单数转移设置选项:库存参考动数量………………………………………………
例五:记录选择事件Event_Selection……………………………………………………
例六:建立选择记录事件Event_DropDownSetItems…………………………………………
例七:表单颜色事件Event_GridColor……………………………………………………………
例八:数查询处理事件Event_Retrive…………………………………………………………
例九:综合例禁售产品业务规划…………………………………………………………
§3 OAERP虚拟机数集工作模式……………………………………………………………………
数集工作模式………………………………………………………………………………………
SQL语句返回数集完整例…………………………………………………………………
取树形节点数集………………………………………………………………………………
§4 C C++语言代码解决特殊业务例…………………………………………………………………
例:外贸费计算……………………………………………………………………………
例二:局部清单行计算…………………………………………………………………………
例二:采购付款金额控制………………………………………………………………………
结果……………………………………………………………………………………………………
字段值控制…………………………………………………………………………………………
练……………………………………………………………………………………………………
复杂报价计算…………………………………………………………………………………
§5 代码逻辑障分析……………………………………………………………………………………
§6 表单动转换事件……………………………………………………………………………………
例:………………………………………………………………………………………………
§7 查询结果转换清单事件……………………………………………………………………………

附录1 OAERP虚拟机CC++数工作模式
附录2 OAERP支持数类型
附录3 OAERP事件类型览表
附录4 CC++根底
附录5 更例
§8 函数指针动态链接库……………………………………………………………………
§9 产生提成表程序…………………………………………………………………………




2
3
4
4
7
9
10
11
13
15
16
17
18
18
20
22
23
23
27
31
32
33
34
35
36
38
39
40

42
43
50
54

57
58
引言
满足量未知特殊需求系统置虚拟机C++虚拟机理应该满足功扩充文件仅仅技术做概览性介绍
OAERP允许户全面开发定义需求功
(1) 定义表单增加字段.
(2) 系统原带表单增加新字段
(3) 完全定义报表
(4) 全面控制业务处理程

谓全面控制业务处理程新增单审核单处理完毕单户录入数程中控制
字段增加C/C++代码处理录入数程中控制〞
  文讲述C/C++程序编写功强业务处理功

初学者理解容序
(1) CC++根工作方式
(2) 数集概念
(3) 事件概念
(4) 附录
 
§1新版CC++语言变更说明〔〕
〔学请勿跳里观念转变C语言进入C++〕
面函数
(1)BeginRepeat
EndRepeat
函数目窗口录入状态(模式II)切换清单计算清单行数
新版中数集概念需切换例子原C语言程序(老版)
int rGetRow()
int jBeginRepeat(Items)
float Sum0
while(j>0 && j{ double x1Calculate2(Amount*CoPrice)
double x2newGetTax(x10)
SumSum+x2
jNextRow()
}
EndRepeat()
newSet2(NULLSum)
〔旧版注释〕
GetRow() 获前行
BeginRepeat(Items) 准备Items清单进行统计返回首行行次
NextRow() 跳跃行
EndRepeat() 结束清单统计
新版清单数集 ds1代码变换面
double Sum00
gDataSet ds1(this3Items)
int r1ds1GetRow()
while(r1>0)
{ double x1ds1Calculate2(Amount*CoPrice)
double x2ds1newGetTax(x10)
SumSum+x2
r1 ds1NextRow()
}
newSet2(NULLSum)
新版中需切换操作代表清单数集合ds1例子说明C语言程序度C++程序
请查系统带例程序

(2)newGetX3
函数目返回字段字符串值
新版中newGetX4直接获目
例原代码
char buff[128]
newGetX3(xExtraFields_C01128buff)
if(buff[0]'R' && buff[0]'M' && buff[0]'B')
{
ntr)
newSet2(PriceX2)
}
新版代码
string s1newGetX4(xExtraFields_C01)
if(s1RMB)
{
double X2newGet2(ProductLTimetblPurchcontr)
newSet2(PriceX2)
}
处理复杂问题时C++代码较C语言更容易接思维直观性

§2 CC++事件
OAERP目前开放允许户控制方
(1) 新增单
(2) 审核单
(3) 处理完毕单
(4) 户录入数程
(5) 拉框事件
户处理数象OAERP系统分三类
(1) 记录
(2) 窗口编辑框
(3) 清单
记录指存数库中条记录条记录 窗口编辑框户交互输入位置清单指窗口中清单
系统处"记录"处理状态系统状态1"窗口编辑框"状态2清单状态3.CurrentMode()获前状态值.

   例审核事件
   "裁床明细"窗口中段代码:
******************
* 5563 Amount *
******************
int MCurrentMode()
if(M2)
{ Sum2AndSet(NULLItemsAmount)
}
段代码加载单"Amoun"字段仅仅模式II中工作合计Itesm清单Amount字段

  例二保存事件
户定义全新窗口调整结算价结算价户定义贯穿全部清单字段uPrice – 标识特价格
窗口中户设计录入信息方式库存中选择剩余库存录入新结算价uPrice然希单审核时修改库存中结算价uPrice
  代码应该加载审核函数设置方式:

代码清单
1  int i0i1ic1j1
2  double price1
3  string s1
4  gDataSet ds1(this1Items)
5  for(i0++i)
6  { i1ds1MoveTo(i)
7   if(i1<0)
8   { return 0
9   }
10   price1ds1newGet2(uPrice)
11   ic1(int)ds1newGet2(JInstockItemsCode)
12   if(ic10)
13   { gStringArray SA1(this)
14   s1显示信息:Lines Contain No leagal Information line
15   s1+(i+1)
16  (s1)
17   SA1Append(钮1)
18   SA1Append(钮2)
19   SA1Append()
20   j1SA1ShowMessage()
21   if(j11)
22   { return 1
23   }
34   }
25   else
26   { s1Update tblInstockItems set uPrice
27   s1+price1
28   s1+ Where Code
29   s1+ic1
30   SQL(s1)
31   }
32  }
33 return 0
  说明
希获清单行然行JInstockItemsCode字段值取出数库存清单序号然获uPrice字段值值更新数库中
审核单时系统传操作象单身获清单行?操作清单行呢?Line 4完成工作整清单封装gDataSet数结构中构造数集合传3参数第参数前工作象〔记录窗口清单〕第二参数1希模式I集合第三参数清单字段名称Items〞
Line 1011ds1前缀表示操作清单
Line 532循环处理Line 6定位第i条记录果末尾者根没清单函数会返回12等负数
Line 2629构造SQL语句假设Code20005uPrice10语句
Update tblInstockItems set uPrice10 Where Code2005
Line 30SQL函数执行语句
Line 12检查获取库存清单序号合法性果获取非法结果Line 1220构造提示窗口

窗口Line 20执行结果显示窗口系统需字符串数组象gStringArrayLine 13中构造象字符串数组元素字符串
窗口需3字符串〔1〕编辑框中提示信息〔2〕钮Continue〞〔3〕钮Cancel〞外附加空白字符串便系统知道谁钮牛户第钮时函数返回0第二返回1次类推果超时返回1
段代码般正常情况反复操作清单处理完毕返回0审核成功
注意返回1表示审核失败
  例二问题
里赖字段JInstockItemsCode库存明细序号果没字段者原字段值法取道办呢?
面代码说明批号代然增加更检查防止错误
int i0i1ic1j1
double price1
string s1
gDataSet ds1(this1Items)
for(i0++i)
{ i1ds1MoveTo(i)
if(i1<0)
{ return 0
}
price1ds1newGet2(uPrice)
ic1(int)ds1newGet2(LotsCode)
if(ic10)
{ gStringArray SA1(this)
s1Lines Contain No leagal Information line
s1+(i+1)
SA1Append(s1)
SA1Append(Continue)
SA1Append(Cancel)
SA1Append()
j1SA1ShowMessage()
if(j11)
{ return 1
}
}
else
{ s1Update tblInstockItems set uPrice
s1+price1
s1+ Where LotsCode
s1+ic1
SQL(s1)
}
}
return 0


  例三保存事件
户希采购订单中动根生产单开工日期填写提前7天供商交货日期
解决问题编写保存事件代码代码
1 string s1
2 int x1newGet2(PracticeTable)
3 if(x1276)
4 { return 0
5 }
6 s1newGetX4(Relateid_XCodeStart1)
7 int x2UDCharToInt(s1c_str())
8 int x3GetDateX(16)
9 if(x27*24*60*6010 { gStringArray SA1(this)
11 string s2时间错误提前时间天前
12 s2+s1
13 SA1Append(s2)
14 SA1Append(放弃)
15 SA1Append(然继续)
16 SA1Append()
17 int j1SA1ShowMessage()
18 if(j10)
19 { return 1
20 }
21 }
22 newSet2(Deliverdatex27*24*60*60)
23 return 0
里解释L2中取前单业务类型窗口序号生产单话直接返回L6漫游查找生产单开工日期结果应该2007阅读格式L7UDCharToInt转换Unix长整数形式L8取天时间L9L21提前七天天值时予提示L17接受户返回钮

果户第钮返回0〔次类推〕时返回1告诉系统处理失败果继续者正确话L22执行设置字段Deliverdate交货日期希值
代码编写户代码窗口保存数库然采购订单增加保存数事事件:

客户程序重新启动代码生效
例三进步问题
户生产单中动产生采购订单时果结果张采购订单张出现提示果求面张生产单产生单显示述话框时样做呢?
解决方法设置静态变量生产单号果次生产单号次相提示容继续处理目前问题:次段程序运行时全新虚拟空间运行谓次结果影踪时候函数
void UserSet(char *Varablechar *Value) 全局变量设置字符串值
string UserGet(char *Varable) 获取全局变量值
程序
1 string s1
2 int x1newGet2(PracticeTable)
3 if(x1276)
4 { return 91
5 }
6 s1newGetX4(Relateid_XCodeStart1)
7 int x2UDCharToInt(s1c_str())
8 int x3GetDateX(16)
9 if(x27*24*60*6010 {
string sb1newGetX4(Relateid_XCode)
string sb2UserGet(MyName011)
if(sb1sb2)
{
UserSet(MyName011sb1c_str())
10 gStringArray SA1(this)
11 string s2时间错误提前时间天前
12 s2+s1
13 SA1Append(s2)
14 SA1Append(放弃)
15 SA1Append(然继续)
16 SA1Append()
17 int j1SA1ShowMessage()
18 if(j10)
19 { return 1
20 }
}
21 }
22 newSet2(Deliverdatex27*24*60*60)
23 return 0
然更复杂例保存次户钮值果相生产单次动返回相值者作出相反响
  
例四拉列表控制记录事件
采购退货单窗口户希拉采购收货单时列出采购收货单时数量控制仅存库存数量防止数量符合库存法出库
操作采购调价单〞窗口样控制系统部函数SelectSaleLoadCargo_PriceAdjust〞调函数
〔1〕首先编写事件代码
int MCurrentMode()
if(M2)
{
CallFunction(SelectSaleLoadCargo_PriceAdjust)
}
〔2〕〞相关单字段〞增加DropDown事件

客户端重启拉字段编辑框会弹出单选择系统会根前库存调整允许退货数量
事件需类似处理字段享
例四进步问题
果希带回清单数量动0果面没填写保存办呢?
解决方法CallFunction(SelectSaleLoadCargo_PriceAdjust)面增加代码清单Amount字段掉否保存系统已表单样处理定义表单字段取正确特征码具特点
方案二清单字段设置面选项〔情况需代码〕


例五记录选择事件
行业业务公司营业执期允许发生业务
时定义营业执期字段面字段VisitTime〞说明需求
〔1〕首先编写事件代码
代码片段:
string s1 getParameters(3)
if(s1149 && s1161)
{ return 1
}
return 0

1〕返回值然遵守标准规1表示失败返回1允许选择返回0表示系统默认方式检查
2〕里循环户选择条记录逐检查
3〕x1(int)newGet2(VisitTime)中newGet2返回float类型int类型接收结果强制类型转换
4) string s1 getParameters(3)获第3参数窗口序号接说果销售订单窗口采购订单窗口允许选择

5)果希更控制类似代码
代码片段二:
int i0i1x1x2
double price1
string s1 getParameters(3)
if(s1149 && s1161)
{ return 1
}
for(i0++i)
{ i1MoveTo(i)
if(i1<0)
{ return 0
}
s1newGetX4(VisitTime)
x1(int)newGet2(VisitTime)
x2GetDateX(16)
if(x1 { gStringArray SA1(this)
string s2记录时间期
s2+s1
SA1Append(s2)
SA1Append(选择)
SA1Append(然选择)
SA1Append()
int j1SA1ShowMessage()
if(j10)
{ return 1
}
}
}
return 0


〔2〕然〞业务公司〞翻开业务处理设置窗口增加Selection事件

〔3〕客户端重启果选择某期业务公司系统会提示

注意1:果仅仅针效期禁等系统默认处理例设置字段效期检查者记录设置禁述原理更广泛目
注意2:果户事件返回1表示禁止选择1表示允许选择0表示系统默认方式检查
注意3:参数说明string s1getParameters(3)返回第三参数事件参数
getParameters(0) Event_Selection 〔事件名称〕
getParameters(1) Ban Check 者Valid Check (辅助参数指做什检测)
getParameters(2) 记录窗口序号
getParameters(3) 正操作窗口序号

例六:建立选择记录事件Event_DropDownSetItems
时候拉框拉开时希完全意愿建立需选择记录例采购订单中业务类型拉开显示工程:

类型系统默认发生采购业务类型果需中业务类型业务选项〞页签设置某类型掉完全指定例设置成入库单出库单〞里显示工程方里显示〔注意:非联系企业出库者入库采购〕
外情况类设置法起作时考虑Event_DropDownSetItems
面代码说明仅仅入库单出库单〞采购订单中显示例
int ret10
int s1(int)newGet2(Code)
string s2getParameters(3)
if(s2149)
{ if(s1158 || s1165)
{ ret11
}
else
{ ret11
}
}
return ret1
注意1:果户事件返回1表示禁止选择1表示允许选择0表示系统默认方式建立工程
注意3:参数说明string s1getParameters(3)返回第三参数事件参数
getParameters(0) Event_DropDownSetItems 〔事件名称〕
getParameters(1) DropDownSetItems (辅助参数指做什检测)
getParameters(2) 记录窗口序号
getParameters(3) 正操作窗口序号

例七:表单底色字体颜色事件
户期显示时候根情况显示颜色时表单颜色事件够解决类问题
里例家医药物流公司希弹出式库存分布窗口根库存效期显示颜色便时处理
〔1〕编写事件代码
1 double Dx1newGet2(LotsCodeDeadline)
2 int Today1GetDateX(10)
3 if(Dx14 { SetResult(255255025500)
5 }
6 else if(Dx17 { SetResult(2551286425500)
8 }
9 else if(Dx110 { SetResult(25516812525500)
11 }
12 else if(Dx113 { SetResult(19219219225500)
14 }
代码入库明细根底L1取该批号效期L2取天日期结果197011开始秒数L3判断效期10天L12判断8月L4设置底色字体颜色颜色RGB三色组成英文逗号分开前面三表单底色面三字体颜色RGB值画图软件查询
〔2〕编写事件赋tblInstockItems_For_Schedule名称弹出表单窗口左角单元格选择功编辑显示数库名称〞获名称提示窗口底部复制选择窗口功选项窗口翻开指定窗口〞窗口选择综合处理高级设置业务处理设置〞做修改修改保存

里事件名称前面户C语言程序〞中编写代码
〔3〕显示效果


例八:查询事件
户期查询结果根情况做处理时表单查询事件 Event_Retrive够解决类问题
里例公司希户100登录时查询202106前数时表单数
〔1〕编写事件代码
1 int t1t2t3t7
2 float t4t5t6
3 char *c1*c2
4 string uc1GetUserInf(Code)
5 if(uc1100)
6 {
7 t3(int)newGet2(Date1)
8 if(t3<1212249600)
9 {
10 t1(int)newGet2(Name)
11 uc1Select * From HDuty_DailyReportX2 Where Name
12 uc1+t1
13 uc1+ And Date1
14 uc1+t3
15 gDataSet ds1(this4uc1c_str())
16 c1gCstr1()
17 t1gSize1()
18 c2ds1gCstr1()
19 t2ds1gSize1()
20 if(c1NULL && c2NULL && t1>0 && t2t1)
21 { memmove(c1c2t1)
22 }
23 printf(t1dt2dc1dc2dt1t2(int)c1(int)c2)
24 printf(sqlsuc1)
25 }
26 else
27 {
28 t1(int)newGet2(Shift30)
29 t2(int)newGet2(Shift31)
30 if(t2t1>15*60*60)
31 {
32 newSet2(Shift31t1+15*60*60+5*60)
33 newSet2(WorkHour_Over15)
34 t4newGet2(WorkHour_Weekend)
35 t5newGet2(WorkHour_Over)
36 t6newGet2(WorkHour)
37 newSet2(TotalWorkHourt5+t4+t6)
38 }
39 }
40 }
41 return 0
〔2〕编写事件赋HDuty_DailyReportXvent_Retrive事件
注意:查询事件单条记录运行果查询100条记录系统条记录单独运行代码程序需处理复杂问题
查询事件例
〔1〕户查询库存综合报表时希局部空白数显示表单tblSaleSynthetic编写〞 查询事件〞需显示数返回1系统会滤掉局部数
注意getParameters〔123…〕函数测试底函数调领件
〔2〕户采购订单窗口显示应收货日期超特定长度单单估计收货采购订单编写〞 查询事件〞需显示数返回1系统会滤掉局部数
数仅仅显示

例九:综合例
医药行业某业务公司禁售某产品
〔1〕时户定义张表单〔窗口〕例UproductProhibit保存禁售信息
〔2〕编写(例销售订单)事件事件放保存事件者审核事件代码
int i0i1j1cidpid
string s1s2
double tt
cid(int)newGet2(ClientID)
gDataSet ds1(this1Items)
for(i0++i)
{ i1ds1MoveTo(i)
if(i1<0)
{ return 0
}
pid(int)ds1newGet2(Product)
s2*Select Count(*) from UProductProhibit
s2+ Where ClientID
s2+cid
s2+ And Product
s2+pid
ttSQL(s2)

if(tt>00001)
{ gStringArray SA1(this)
s1警告该产品前业务公司禁售
s1+(i+1)
SA1Append(s1)
SA1Append(确认)
SA1Append()
j1SA1ShowMessage()
return 1
}
}
return 0
段代码逐检查物品否禁售列表中果话系统禁止继续

事件参数说明
string getParameters(int i) 返回第i参数
第1参数〔i0〕调事件类型名称
保存事件:Event_BeforeCollectData审核事件Event_Audit
第2参数(i1)辅助类型例新增保存时Insert修改保存时Update审核Audit
明确测试结果


§3 OAERP虚拟机数集工作模式
gDataSet类方法Run〔〕空白户代码新版中填充方法中新版中完整C++程序样:
(常头文件局部)
class gDataSet
{
……
int Run()
}
int gDataSet Run()
{
户写代码局部
}
int fun(int ichar *buff)
{
gDataSet _dss
return _dssRun()
}

说户程序运行时总某记录根底gDataSet提供方法处理问题
CurrentMode()获取工作模式函数返回1表示前操作记录称模式I返回2前操作窗体编辑框字段模式II返回3前操作清单模式III模式IVSQL语句返回数集(注意:返回数然工作模式I)

工作成员函数部时需前缀例
int m1 CurrentMode()
int m2ds1CurrentMode()
前者表示取记录集工作模式者获取ds1数集工作模式

启动代码工作模式II操作清单呢
例希统计清单中数量单价总赋值字段Totalcharge 完成务面代码
double Sum00
gDataSet ds1(this3Items)
int r1ds1GetRow()
while(r1>0)
{ double x1ds1Calculate2(Amount*CoPrice)
double x2ds1newGetTax(x10)
SumSum+x2
r1 ds1NextRow()
}
newSet2(TotalchargeSum)
里仅仅说明原理完成功系统提供更强函数Sum2AndSet〔TotalchargeItemsAmount*CoPrice〕

窗体编辑框清单记录应关系字段控制操作完全样gDataSet类型数集然模式IINextRow()没作
1 获取清单记录集合
模式I获取清单记录集合面代码
gDataSet ds1(this1Items)
然ds1gDataSet类类函数
2 获取窗口操作象
仅仅模式III样处理代码
gDataSet ds1(this2NULL)
代码例
if(CurrentMode()2)
{ gDataSet ds1(this2NULL)
double d1ds1newGet2(Discount)
if(d1<0|| d1>1)d11
double s1d1*newGet2(Price)*newGet2(Amount)
newSet2(Summoneys1)
}
警告 里模式检查非常重局部代码清单中运行效模式正确局部客户(例希尔科)代码缺少检查出现错误

仅仅模式IIIII样处理代码
gDataSet ds1(this3 Items)
〔模式II中方式操作外清单〕
4SQL语句返回数集
模式效样处理代码
string SQL1Select * From tblInstockItems Where Amount< OutAmount And MainCode In (Select Code From tblInstock Where Record>524288)
(语句列举入库单中存剩余库存明细MainCode In…保证单已入库前未入库单)
gDataSet ds1(this4SQL1c_str())
(注意:返回数然工作模式I传递4参数)
代码例 面完整SQL语句返回数集作例
1 string SQL1Select * From tblInstockItems Where Amount>OutAmount And MainCode In (Select Code From tblInstock Where Record>524288)
2 gDataSet ds1(this4SQL1c_str())
3 gStringArray SA1(this)
4 string s2库存分布
5 s2addReturn()
6 s2+总行数
7 int count1ds1GetCount()
8 s2+count1
9 printf(count1dcount1)
10 s2addReturn()
11 int ii1
12 for(i0i13 { i1ds1MoveTo(i)
14 if(i1>0)
15 {
16 string s1bds1newGetX4(Product)
17 string s2bds1newGetX4(StoreHouse)
18 double a1ds1newGet2(Amount)
19 double a2a1ds1newGet2(OutAmount)
20 s2+物品名称
21 s2+s1b
22 s2+仓库
23 s2+s2b
24 s2+入库数量
25 s2+a1
26 s2+剩余数量
27 s2+a2
28 s2addReturn()
29 }
30 }
31 SA1Append(s2)
32 SA1Append(确定)
33 SA1Append()
34 SA1ShowMessage()
35 return 0
运行时提示窗口:


5 获取树形节点数集
模式23效
gDataSet ds1(this5NULL)
例:配色表中希取BOM清单中定义字段值显示配色表窗口中供参考代码:
int p0p1s1
string lo1s2
gDataSet ds1(this5NULL)
CreateFields(X001长2)
CreateFields(X002宽2)
CreateFields(X003场2)
if(CurrentMode()3)return 0
p0(int)ds1newGet2(Product)
p1(int)newGet2(Product)
s1(int)newGet2(Specif)
lo1newGetX4(LocationX)
s2Select * From prdBOMItems Where Product
s2+p1
s2+ And Specif
s2+s1
s2+ And LocationX\'
s2+lo1
s2+\'
s2+ And MainCode In ( Select Code From prdBOM Where Product
s2+p0
s2+)
gDataSet ds2(this4s2c_str())
newSet2(X001ds2newGet2(uLength))
newSet2(X002ds2newGet2(uWidth))
newSet2(X003ds2newGet2(uThickness))

6 空白数集
模式效
gDataSet ds1(this6char *cn1)
例: cn1表单名称表单序号


§4 C语言代码解决特殊业务例

根意义
OAERP做通系统非常专需求方面走太远CC++语言扩展程序原解决需求
果CC++语言解决语言未必解决

例:外贸费计算
1) 外贸户销售报价销售订单中存费启费方案费清单

2) 费中局部固定例手续费标签费等
3) 外局部费固定例单物品金额保值费〞根物品清单费总系数关税〞等费总系数
C语言代码设置
1〕先定义费工程

注意里两特殊工程序号分2000320004特处理
2〕销售报价单中定义C语言程序:

里需第三行第四行工程定义C语言程序数量固定1需单价字段定义C语言程序询价单物品金额保值费〞统计物品清单费总代码:
代码片段
Sum2AndSet(PriceItemsSummoney)
里Sum2AndSet作:计算清单Items表达式Summoney总然赋值Price字段
第四行费汇总项关税〞意义计算行总金额系数例05定义C语言程序
代码片段二
float D1Sum2(Items3Summoney)
float D2newGet2(Summoney)
newSet2(Price(D1D2)*05)
里解释第1行意思计算清单Items3表达式Summoney总第2行意思获行Summoney值仅仅计算行Summoney值结果相减(D1D2)第3行意思计算结果赋值字段Price
现问题第三行代码片段第四行代码片段二行计算处理呢?
newGet2(Type1)获取字段Type1序号记第三行询价单物品金额保值费〞序号20003第四行费汇总项关税〞序号20004C语言程序形式
代码
if(newGet2(Type1)20003)
{ Sum2AndSet(PriceItemsSummoney)
}
if(newGet2(Type1)20004)
{
float D1Sum2(Items3Summoney)
float D2newGet2(Summoney)
newSet2(Price(D1D2)*05)
}
3〕点优化面代码中newGet2(Type1)调2次影响效率采面优化形式加速计算
优化代码片段
int type1newGet2(Type1)
if(type120003)
{ Sum2AndSet(PriceItemsSummoney)
}
else if(type120004)
{ float D1Sum2(Items3Summoney)
float D2newGet2(Summoney)
newSet2(Price(D1D2)*05)
}




实际代码片段:
int type1newGet2(Type1)
float D2Sum2(ItemsSummoney)
float D3newGet2(MainCodeExchange)
if(type120003) 国际空运
{ float D1newGet2(MainCodeRelateid_XCodexExtraFields03)
newSet2(PriceD1*15)
}
else if(type120004) 保险
{ newSet2(PriceD2*00029*11)
}
else if(type120014) 代理费
{ newSet2(PriceD2*D3*001100)
}
else if(type120001) 关税
{ float D4newGet2(MainCodeRelateid_XCodexExtraFields02)
newSet2(PriceD2*D3*D4100)
}
else if(type120012) 汇费
{ if(D2*0015<100)
newSet2(Price100)
else
newSet2(PriceD2*0015)
}
注释:
D4取值通销售报价记录单字段〞Relateid_XCode〞漫游采购询价单里取字段〞xExtraFields02值

例二:局部清单行计算
述户系统中设置完整出现述问题:
问题:客户系统销售费方案C语言代码中费方案里明细运C代码算法示
else if(type120017)
{ float D6Sum2(Items3Summoney)
newSet2(PriceD6*017)
}
中〞费VAT〞值第1行第13行017值做销售报价单时填写完相关数选择相应费报价方案瞬间算出值准确计算会导致错误


问题:Windows操作系统设计事件驱动系统事件发生时系统反响OAERP根原设计Sum2(Items3Summoney)代码第二次计算时会第次计算结果考虑进第二次计算结果第次然假设次计算结果段代码原理错误
获正确结果必须重新写代码仅仅统计113行值时考虑函数:
GetRow() 获前行
gDataSet ds1(this3Items) 构造操作Items清单数象
NextRow() 跳跃行
代Sum2(Items3Summoney)代码
int rGetRow()
int j1
float Sum0
gDataSet ds1(this3Items)
while(j>0 && j{
double x1ds1Calculate2(Summoney)
SumSum+x1
j ds1NextRow()
}
newSet2(NULLSum)
里解释段代码第14行生效通系统没14具体数字int rGetRow()返回行次便更行更少行时效while(j>0 && j 终局部完整代码
else if(type120017)仅〞费VAT〞行次生效
{ int rGetRow()
int j1
float D60
gDataSet ds1(this3Items)
while(j>0 && j {
double x1ds1Calculate2(Summoney)
D6D6+x1
jds1NextRow()
}
)
}
面出局部终完整代码供参考:
int type1newGet2(Type1)
float D2Sum2(ItemsSummoney)
float D3newGet2(MainCodeExchange)
if(type120003)
{ float D1newGet2(MainCodexExtraFields01)
if(D1<35)
newSet2(PriceD1*15)
else
newSet2(PriceD1*175)
}
else if(type120004)
{ newSet2(Price(D2D3)*00029*11)
}
else if(type120014)
{ newSet2(PriceD2*001)
}
else if(type120012)
{ if(D2*0015<100)
newSet2(Price100)
else
newSet2(PriceD2*0015D3)
}
else if(type120017)
{ int rGetRow()
int j1
gDataSet ds1(this3Items)
float D60
while(j>0 && j {
double x1ds1Calculate2(Summoney)
D6D6+x1
jds1NextRow()
}
newSet2(PriceD6*017)
}
else if(type120016)
{ float D4newGet2(MainCodeContactMethod)
newSet2(Price(D2D3)*(1+D4)*017)
}
else if(type120001)
{ float D4newGet2(MainCodeContactMethod)
newSet2(PriceD2*D4D3)
}
else if(type120018)
{ float D1newGet2(MainCodexExtraFields01)
if(D1*045<15)
newSet2(Price15)
else
newSet2(PriceD1*045)
}
else if(type120020)
{ float D1newGet2(MainCodexExtraFields01)
if(D1*16<45)
newSet2(Price45)
else
newSet2(PriceD1*16)
}
else if(type120021)
{ if(D2*00032<18)
newSet2(Price18)
else
newSet2(PriceD2*00032)
}

else if(type120022)
{ float D1newGet2(MainCodexExtraFields01)
if(D1*045<40)
newSet2(Price40)
else
newSet2(PriceD1*045)
}
例二:采购付款金额控制
1) 制药企业采购付款时求金额超方100万时次付款70%特殊需求编写采购付款单〞审核检查C语言代码控制

根需求张单应该通审核分析应该编写C语言程序
系统提供Sum2(char *FieldNamechar *Express1)函数获清单中应付款〞次付款〞值
double D1Sum2(ItemsTobepayed)
double D2Sum2(ItemsNowpayed)
if(D1>1000000 && D2>D1*07)
{ return 1
}
return 0
里D1获应付款〞值清单字段Items注意表单清单里求注明清单字段D1获次付款〞值 果D1超100万次付款〞超D170%时返回1表示审核失败情况返回0表示通
2) 编写函数录入户C语言程序〞然

3) 然采购付款〞业务设置窗口面方式设置审核检查函数

注意里Event_Audit〞审核检查函数类型标记种控制函数弄错

结果
设置重新启动系统
现选择张单审核出现提示表示审核失败



修改金额审核通

字段值控制
奥诺制药订单中处理中需操作员录入申请数量审核员审核时根申请数量剩余款填写审核数量

实施员定义字段xExtraFields01设置申请数量时求
〔1〕果申请数量没填写审核数量意填写
〔2〕果申请数量填写审核数量超申请数量
时代码
float X1newGet2(xExtraFields01)
if(X1<001)return 0

float X2newGet2(Amount)
int iGetFieldOrder(xExtraFields011)
int jGetFieldOrder(Amount1)
int kGetFieldOrder(NULL1)
if(ik || (jk && (X2>X1 || X2<001)))
{ newSet2(AmountX1)
}
里k获前输入焦点列i申请数量列j审核数量列X1申请数量没填写时处理直接返回情况:
〔1〕ik指申请数量列前列
〔2〕jk指审核数量列前列
〔3〕X2>X1指审核数量超出申请数量
〔4〕X2指审核数量没填写
〔5〕|| && 分者〞逻辑判断


练题:假设客户求销售发票中允许开发票金额开出金额税017必须客户承设置流程?设置C语言控制?
流程设置:时应收账款发货单发货单金额改变改变变成应收账款设置销售发票〞应收账款时证模板中设置详细请见业务财务体化〞局部
C语言设置:利系统中预留定义字段设置窗体:

单清单中发票金额〞
然字段C语言代码设置:
〔1〕单发票金额
Sum2AndSet(NULLItemsxExtraFields01)
统计清单ItemsxExtraFields01字段值赋字段
〔2〕清单发票金额
float X1newGet2(xExtraFields01)
float X2newGet2(Amount)*newGet2(Price)
if(X1<0001)
{newSet2(NULLX2)
}
没设置发票金额时动填写
〔3〕清单总金额
float X1newGet2(xExtraFields01)
float X2newGet2(Amount)*newGet2(Price)
float X3X2+(X1X2)*017
if(X1newSet2(SummoneyX3)
发票金额超数量*单价时计算出金额税加数量*单价总应收账款
里仅仅课堂教学中学生问题解答实际没样做〔1〕开发票仅违法造成严重税务问题〔2〕开金额非法合法化做法调整计算单价

复杂报价计算

float x1newGet2(ItemsProduct[1Order]DT~prdBOM~ProductTotalchargeX[ItemsSpecif[1Order]Specif])
float x2newGet2(Totalcharge3)
float x3newGet2(xExtraFieldsI01Rate1)
newSet2(NULL(x1+x2)*x3)
注意里X1取值中漫游取值代码
ItemsProduct[1Order]DT~prdBOM~ProductTotalchargeX[ItemsSpecif[1Order]Specif]
ItemsProduct[1Order]表示查询清单第行ItemsSpecif[1Order]表示清单第行规格里嵌套DT~prdBOM~Product表示跳跃BOM单中prdBOM中Product字段值相次取道行[]约束条件限制结果

§5 代码逻辑障分析
CC++博精深业界知名恐惧简单说CC++唯遵守规逻辑面例子
某企业销售报价单费明细销售订单费明细〞

代码:
715tblSalequotItems3询价单费明细
********************
* 7151 Summoney *
********************
Calculate2AndSetValue(SummoneyuExchange*Price*Amount)

*********************
* 7152 uExchange *
*********************
int jGetRow()
while(j>0)
{
int s1(int)newGet2(FnCode)
if(s112||s16)
{
newXSet(MainCodeExchange1)
}
else if(s11)
{ newSet2(uExchange1)
}
jNextRow()
}
里代码问题?
出现障:
〔1〕保存数行外汇率(uExchange)总金额(Summoney)空白重新点击显示
〔2〕总金额(Summoney)出现错误现象取计算值似新汇率应

问题程序员昼夜眠方切简单结正确
里先说明里思路错误处
〔1〕总金额(Summoney)外汇率(uExchange)uExchangeSummoney计算序导致误差
〔2〕外汇率(uExchange)代码需计算记录〔行〕段代码整清单循环次调代码处理行数时整清单重新处理遍效率十分低
鉴GetRow()返回前行次行号计算n*(n1)身说明程序思路匹配混淆
〔3〕里取表单值某状态〔模式I模式II〕失败里没判断系统运行模式

知道问题外汇率(uExchange)定义代码ok
if(CurrentMode()3)
{ int s1(int)newGet2(FnCode)
if(s112||s16)
{
newXSet(MainCodeExchange1)
}
else if(s11)
{ newSet2(uExchange1)
}
Calculate2AndSetValue(SummoneyuExchange*Price*Amount)
}
时总金额(Summoney)需什代码然代码时uExchange位置调整Summoney前面否会出错Summoney默认代码没覆盖时会生效字段默认代码
715tblSalequotItems3询价单费明细
********************
* 7151 Summoney *
********************
int MCurrentMode()
if(M3)
{ CallFunction(SetFor_tblSaleFeeSchemeItems)
}
〔字段空白代码分号〞代防止运行降低系统效率〕
外明白代码时会系统调计算仅仅某固定位置特殊处理方式判断否适合代码
程序员保持清醒头脑系统正确运行关键

§6 表单动转换事件
1 表单动转换事件需求需求:销售订单审核时动产生销售发货单销售发货单审核时动产生出库单等
系统已置根事件
面需求需开放更置机制否满足特殊需求:
〔1〕医药行业户希销售订单审核时动产生销售发货单销售发货单动审核销售发货单产生收款单
〔2〕收款单审核时动审核销售发货单然动产生出库单
处理类需求需启表单动转换事件〞


注意里销售订单定义审核〞〔Audit〕事件 销售发货单定义新增〞〔AfterNewSave〕事件
控制单产生控制单:


2现户提出需求:
〔1〕果订单选择现金销售直接产生收款单
等等
显然没定义程序
系统开放流程事件〞(Event_FlowSave)专门判断否需产生单定义:

代码身:
int j1(int)newGet2(Relateid_XCodeScheduledType)
printf(flowdj1)
if(j1189)
{ return 1
}
return 0

说明:返回负值表示继续


§7 查询结果转换清单事件
现需求:
A库存养护:前库存进行种条件滤筛选出组效记录清单作步业务操作药品养护确认表药品养护档案库存药品质量养护检查记录单审核完成更新批号库中次养护日期
B药品质量复检通知单药品质量复检记录单药品质量处理通知单
C药品停售复售通知单筛选出库存清单进行停售者复售处理
D效期效期药品催销表满足定日期时间段库存进行统计生成相应效期药品清单列表作步处理失效期6月库存商品进行清单列表记录单销售部门进行催销
E根库存限前库存情况筛选滤列出组清单作采购方案引采购订单中
针类需求系统提供查询报表转换清单〞机制
〔1〕设置印报表点
1〕类型选择:*报表清单转换
2〕字段转换规:清单中显示标签定义编号Product〞形式查询结果中编号〞列转换清单中Product〞字段等
3〕然定义显示窗口

〔3〕述例采购订单〞中显示结果:


〔3〕查询结果



〔4〕报表产生结果里原转换清单

附录1 OAERP虚拟机CC++数工作模式
CurrentMode()获取工作模式函数返回1表示前操作记录称模式I返回2前操作窗体编辑框字段模式II返回3前操作清单模式III模式IVSQL语句返回数集(注意:返回数然工作模式I)

int m1 CurrentMode()
int m2ds1CurrentMode()
前者表示取记录集工作模式者获取ds1数集工作模式

数集定义格式
工作模式
说明
1
gDataSet ds1(this1Items)
1
获取清单记录集合
模式I效
2
gDataSet ds1(this2NULL)
2
获取窗口操作象
仅模式III
3
gDataSet ds1(this3 Items)
3
取名称Itesm清单
仅仅模式IIIII效
4
gDataSet ds1(this4SQL1c_str())
1
SQL语句返回数集
5
gDataSet ds1(this5NULL)
1
获取树形节点数集
6
gDataSet ds1(this6char *cn1)
1
空白数集
cn1表单名称表单序号
模式效





附录2 OAERP支持数类型
类型
意义
int
整数
double
数(浮点数)
string
字符串(c++标准)
gStringArray
字符串数组(元素字符串)
gDataSet
数集(数库存表单窗口者清单条条记录)


CC++标准库函数
函数

int printf(char *format)
int scanf(char *format)

int abs(int x)
double atof(char *s)
int atoi(char *s)
double sqrt(double x)
double fabsl(double x)
void abort()
double acos(double x)
double asin(double x)
double atan(double x)
double atan2(double x)
double cos(double x)
double exp(double x)
double log(double x)
double log10(double x)
double floor(double x)
double frexp(double x int *exponent)
double ldexp(double x int exp)
double modf(double x double *ipart)
double pow(double x double y)
double sin(double x)
double sinh(double x)
double strtod(char *s char **endptr)
double tan(double x)
double tanh(double x)
double cosh(double x)
double ceil(double x)
double fabs(double x)

void *memmove(void *dest void *src int n)
int strcmp(const char *s1const char *s2)
int strncmp(const char *s1const char *s2int len1)
char *strcat(char *destchar *src)
char *strchr(char *s int c)
char *strcpy(char *destchar *src)
int sprintf(char *buffer char *format)
FILE *fopen(char *filename char *mode)
FILE *freopen(char *filename char *mode FILE *stream)
FILE *tmpfile(void)
char *asctime(tm *tblock)
char *ctime(time_t *time)
char *fgets(char *s int n FILE *stream)
double difftime(time_t time2 time_t time1)
int atexit(void (* func)(void))
int fclose(FILE *stream)
int feof(FILE *stream)
int ferror(FILE *stream)
int fflush(FILE *stream)
int fgetc(FILE *stream)
int fprintf(FILE *stream char *format)
int fputc(int c FILE *stream)
int fputs(char *s FILE *stream)
int fscanf(FILE *stream char *format)
int fseek(FILE *stream long offset int whence)
int getc(FILE *stream)
int getchar(void)
int putc(int c FILE *stream)
int setvbuf(FILE *stream char *buf int type size_t size)
int ungetc(int c FILE *stream)
long ftell(FILE *stream)
size_t fread(void *ptr size_t size size_t n FILE *stream)
size_t fwrite(void *ptr size_t size size_t n FILE *stream)
void clearerr(FILE *stream)
void rewind(FILE *stream)
void setbuf(FILE *stream char *buf)

long labs(long x)
long atol(char *s)
long strtol(char *s char **endptr int radix)
unsigned long strtoul(char *s char **endptr int radix)

size_t strftime(char *s size_t maxsize char *fmttm *t)
tm *gmtime(time_t *timer)
tm *localtime(time_t *timer)
time_t mktime(tm *t)

int isalnum(int c)
int isalpha(int c)
int iscntrl(int c)
int isdigit(int c)
int isgraph(int c)
int islower(int c)
int isprint(int c)
int ispunct(int c)
int isspace(int c)
int isupper(int c)
int isxdigit(int c)
int mblen(char *s size_t n)

int mbtowc(wchar_t *pwc char *s size_t n)
int memcmp(void *s1 void *s2 size_t n)
int putchar(int c)
int puts(char *s)
int raise(int sig)
int rand(void)
int remove(char *filename)
int rename(char *oldname char *newname)
int sscanf(char *buffer char *format)
int strcoll(char *s1 char *s2)
int system(char *command)
int tolower(int ch)
int toupper(int ch)
int wctomb(char *s wchar_t wc)
size_t mbstowcs(wchar_t *pwcs char *s size_t n)
size_t strcspn(char *s1 char *s2)
size_t strlen(char *s)
size_t strspn(char *s1 char *s2)
size_t strxfrm(char *target char *source size_t n)
size_t wcstombs(char *s wchar_t *pwcs size_t n)
time_t time(time_t *timer)
void *bsearch(void *key void *base size_t nelem size_t width int (*fcmp)(void * void *))
void *calloc(size_t nitems size_t size)
void *malloc(size_t size)
void *memchr(void s int c size_t n)
void *memcpy(void *dest void *src size_t n)
void *memset(void *s int c size_t n)
void *realloc(void *block size_t size)
void exit(int status)
void free(void *block)
void perror(char *s)
void qsort(void *base size_t nelem size_t width int (*fcmp)(void * void *))
void srand(unsigned seed)
char *getenv(char *name)
char *gets(char *s)
char *setlocale(int category char *locale)
char *strerror(int errnum)
char *strncat(char *dest char *src size_t maxlen)
char *strncpy(char *dest char *src size_t maxlen)
char *strpbrk(char *s1 char *s2)
char *strrchr(char *s int c)
char *strstr(char *s1 char *s2)
char *strtok(char *s1 char *s2)
char *tmpnam(char *s)

HINSTANCE LoadLibrary(char*) 加载动态链接库
void FreeLibrary(HINSTANCE) 释放动态链接库
int GetProcAddress(HINSTANCEchar*) 返回动态链接库中函数





全局函数总效
函数格式
说明
void
UserSet(char *Varablechar *Value)
全局变量设置字符串值
void UserSetAsDigit
(char *Varabledouble Value)
全局变量设置数字值
int GetDateX(intint OpCode)
时间转换函数OpCode意义见开发选项中说明
string GetUserInf(char *Varable)
获取前户职员档案中信息
string UserGet(char *Varable)
获取全局变量值

字符串
class string
函数格式
说明
string(char *x)
string(const string &x)
string(double x)
int length()
string& operator(double x)
string& operator(string& s)
string& operator(char *s)
string operator+(const string& x)
string operator+(const char *s)
string operator+(const double s)
string sub(int startint len)
string operator()(int startint len)
int cmp(string& x)
bool operator(string& x)
bool operator(string& x)
bool operator(char *x)
bool operator>(string& x)
bool operator<(string& x)
bool operator>(string& x)
bool operator<(string& x)
void operator+(string& x)
void operator+(char* x)
void operator+(double x)
void del(int startint len)
void insert(int startstring& x)
int find(string& x)
index of first found occurance or 1 if not
int replace(string& whatstring& withbool globalfalse)
returns number of replaces
int toInt()
double toDouble()
int operator(int)()
char& operator[](int idx)
void reconstruct()
char *c_str()
char *c_bstr()
void addReturn()


string ToString(double x1int pr1)






























转换带整数
转换带数数字


返回字符串c语言指针
返回宽字节指针
末尾增加换行符号



字符串数组
class gStringArray
函数格式
说明
void *InnerData1

void Append(const string s1)
末尾增加字符串
void Append(double x1)
末尾增加字符串户传递数字
int GetCount()
获取字符串数
string Index1(int i)
取第i字符串
int ShowMessage()
显示话框第字符串信息接钮标签钮面空白字符串户第钮返回0次类推超时返回1

操作数函数数集
class gDataSet
函数格式
说明
void *InnerData1

double AddLastResult(double Value1)
返回结果累加值
double AssignValue(double Value1)
返回结果赋值
int CurrentMode()
返回前运行模式
string getParameters(int i)
返回第i参数
第0参数调事件类型名称例保存:Event_BeforeCollectData审核Event_Audit第二参数辅助类型例新增保存时Insert修改保存时Update审核Audit
int GetCount()
返回数集记录数
int GetRow()
返回前记录索引号
int GetLastError()
返回错误代码
int GetFieldOrder
(char *FieldNameint Type1)
获取字段序号type11表示获取清单中列位置
int CreateFields(char *ExpressionX)
表达式创立显示字段请见文档更详细局部
double newGetL2(int i)
返回第i字段值
double newGet2(char *FieldName)
返回字段值
string newGetX4(char *FieldsX)
返回字段值字符串形式
double GetExchange
(double TotalChangeint OpCode)
转换金额TotalChange币值OpCode见开发选项
double newGetTax
(double TotalChangeint OpCode)
计算金额TotalChange税额OpCode见开发选项
void newXSet(char *ExpressionXint i)
计算表达式值然赋值第i字段
void newSet2
(char *FieldNamedouble Value1X)
字段赋值
void newSetL2(int L1double Value1X)
第i字段赋值
int newSetX4
(char *FieldNameconst string s1)
字符串赋值字段
double Sum2
(char *FieldNamechar *Express1)
清单集统计表达式值
double Sum2AndSet
(char *FieldName0char *FieldNamechar *Express1)
清单集统计表达式值值赋字段FieldName0
int gSize1()
模式1取前记录尺寸
char *gCstr1()
模式1取前记录指针字符指针形式返回
int GetCol()
取清单前列
int MoveTo(int i)
移动第i条记录超出记录集范围返回负数
int NextRow()
移动条记录超出记录集范围返回负数
double CallFunction(char *FunctionName)
调部函数
double Calculate2(char *Express1)
表达式值
double Calculate2AndSetValue
(char *FieldNamechar *Express1)
表达式值赋值字段FieldName
double TermLeftSum
(char *ItemNameint time1char *timeStringint OpCodeX)
计算余额OpCodeX见开发选项
double CurrentAmount2(char *ItemName)
调TermLeftSum256计算数量
double CPML()
计算预收款余额
double DT(char *TableNamechar *Express1)
数库表单统计表达式值
int Update_1(const gStringArray ds1)
数库更新更新记录值字符串数组中字段值连续位置末尾空白字符串
double SQL(const string s1)
执行sql语句
返回结果双精度double类型实数果需返回查询般*开头例"*Select Count(*) From ……"果返回数集面模式IV获结果
int Run()
户写代码放置该函数
int bpInsert(int OpCode1)
记录输入数库
string SQLC
(char *cn1char *fn1int OpCode1)
获取查询条件cn1表单名fn1查询字段列表空时默认字段 OpCode1参数参见HqueryParameters参数
int InputDate
(int opcode1int *t1int *t2)
户输入时间段
opcode1参数请参数表中测试t1t2时间字段址代码例:
int t1t2
int ret1InputDate(0&t1&t2)
if(ret10)
{ return 0
}




int gPrintRow()
返回前印行
void gSetTextPrint(iB1s2)
第i行 列名B1〞单元格设置字符串s2
void gAdd(gDataSet &ds1int At1)
前数集增加数记录ds1放置位置i注意ds1必须前数集表单数
i1时放末尾
void gDelete(int At1)
删数集中放置起点At1记录


附录3 OAERP事件类型览表


图中符号
事件名称
发生点
A
NameEvent_BeforeCollectData
说明 收集窗口编辑框数前发生
getParameters(1)InsertUpdate
注意返回1指示操作失败
客户端
B
NameEvent_BeforeSave
说明 保存数前发生
getParameters(1)InsertUpdate
注意返回1指示操作失败
客户端
C
NameEvent_Audit
说明 审核前发生
getParameters(1)Audit
注意返回1指示操作失败
客户端
D
NameEvent_Delete
说明 删前发生
getParameters(1) Delete
注意返回1指示操作失败
客户端
X
NameAfterNewSave
说明 新增单发生
getParameters(1)InsertUpdate
注意返回1指示操作失败
效劳器
Y
NameAudit
说明 审核单发生
getParameters(1) Audit
注意返回1指示操作失败
效劳器
Z
NameFinish
说明 单处理完毕发生
getParameters(1)
注意返回1指示操作失败
效劳器
L
NameEvent_FlowSave
说明 动产生前发生
getParameters(1) Flow
效劳器

NameEvent_Retrive
数读取事件
注意返回1指示系统记录返回记录集合中掉
客户端
NameEvent_Delete
删事件
注意返回1指示操作失败
客户端
NameEvent_Click
点击窗口中记录发生事件
注意返回1指示操作失败
客户端
NameEvent_WastRate
损耗率事件 计算物料获取损耗率时发生
getParameters(1) 取料量
BOM清单设置效
Name C++代码(处理数集)
印数集处理事件
注意返回1指示系统记录返回记录集合中掉
印中发生
Name C++代码(处理显示行)
印数集显示信息处理事件
注意返回1指示系统记录返回记录集合中掉
〔印事件说明例见印设置局部〕
印中发生

〔1〕事件参数说明
string getParameters(int i) 返回第i参数
第1参数〔i0〕调事件类型名称
保存事件:Event_BeforeCollectData审核事件Event_Audit
第2参数(i1)辅助类型例新增保存时Insert修改保存时Update审核Audit
明确测试结果

〔2〕事件中返回负数继续标志例L事件返回1Z事件继续
删Event_Delete事件途删前单前相关单标记例户设置某单统计标记单删前恢复原始单标记字段初始状态便次产生单时然会遗漏

损耗率Event_WastRate事件意义计算料时订单数量越损耗越具体数企业验定
1 string s1getParameters(1)
2 double ma1s1toDouble()
3 if(ma1>1000)
4 { SetResult(001)
5 }
6 else if(ma1>500)
7 { SetResult(01)
8 }
代码注释:
L1 取参数1保存料量
L2 字符串转换数字
L47 根量设置结果

灵活运事件呢?
说OAERP新增客户时动建立应收应付账款科目功强实利新增事件者数流程事件解决问题时利删事件做清理工作
印事件

印局部详细说明例请见手册印局部

附录4 CC++根底
行业C语言C++认语言C++包容C合法C程序动合法C++程序
OAERP根变量
类型
意义
Int
整数
double
数(浮点数)
string
字符串(c++标准)
gStringArray
字符串数组(元素字符串)
gDataSet
数集(数库存表单窗口者清单条条记录)
注1系统长整数long32位台long等价int
注2系统重数g开头(gene基)
1 完整CC++程序
int main()
{
int i1
int j2
int xi+j
printf(xdx)
return 0
}
里 条代码花括号中完成功
(1) 定义整数i赋值1
(2) 定义整数j赋值2
(3) 定义整数xij赋值
(4) cc++标准函数显示出x值运行结果
x3
功main标记 CC++语言中完整功代码片断做〞函数〞里main函数 函数CC++语言中占重位做函数独立CC++程序必须函数程序执行函数开始函数末尾结束终止
例计算机程序样执行程序代码
2 函数完整规定
标准委员会AnsiPOSX规定 函数面局部组成
int fun(int ichar *buff)
{
……
}
里Fun称函数名第int表示函数应该返回整型数值园括号中东西表示函数接收参数 里定义两参数整形变量i字符型变量buff
假设规定函数该返回整数值实际代码没返回值函数非法 规定函数接受两参数传参数数者类型非法
然灵活面 例函数希接受整数传数标准委员会AnsiPOSX规定 应该实际执行代码中转换规定类型 果转换代码合法代码
例面种函数代码正确
(1) int xfun(2〞good morning〞)
(2) double xfun(233NULL)

3 C++根底
行业C语言C++认语言C++包容C合法C程序动合法C++程序
OAERP支持CC++ 例数集〔gDataSet〕概念重概念C++实现里说明什数集
OAERP支持数集gDataSet户处理条记录者条记录者窗体代表字段编辑框集合者网格清单中行
系统定义需理解非常重时候交错操作数集
数集定义:
class gDataSet
{ void * InnerData
int CurrentMode()
int GetRow()
double newGetL2(int LX)
void newXSet(char *ExpressionXint LX1)
void newSet2(char *FieldNamedouble Value1X)
string newGetX4(char *FieldsX)
int newSetX4(char *FieldNamechar *s1)
………………
int Run()
}
里蓝色局部数类型数红色局部数类型提供种处理里举类似例子说明:
class 音乐系学生
{ int 学生编号
int 提琴
int 钢琴
int 鼓
int 指定某(int 编号)
int 学生()
void 演出提琴(char* 点int 时间)
void 演出钢琴(char* 点int 时间)
………………
int 演出场音乐会(char* 投资char* 点int 时间)
}

class 美术系学生
{ int 学生编号
int 画板
int 指定某(int 编号)
int 学生()
void 画幅作品(char* 点int 时间)
………………
int 组织场作品展览会(char* 投资char* 点int 时间)
}

class 雄鹰
{ int 雄鹰
int 飞翔(int 编号)
int 学飞翔技巧(char* 点)
int 捕获猎物(char* 点int 时间)
………………
int 表演飞翔(char* 点int 时间)
}
例C++中数抽象成标准类型类型C++中标准数结构类〔class〕
类数功做成员函数仅仅该类效例:
音乐系学生 x1
美术系学生 x2
雄鹰 x3
(体育馆)
x2组织场作品展览会(尔盖茨纽约)
(非洲草原)
里定义3变量x1x2x3分音乐系学生〞美术系学生〞雄鹰〞然分完成件事情方法:
变量函数(参数)
面代码
x3 画幅作品(非洲草原)
雄鹰数类型中没画幅作品功〔函数〕
数类型预先规定方法

OAERP系统带3常数结构
string 标准字符串类
gStringArray 串类数组
gDataSet 记录集合〔条记录提供MoveToNextRow等方法〕
果深入解OAERP编程需熟练3类常方法
StringC++标准字符串类gStringArray字符串数组gDataSetOAERP提供处理记录操作窗体编辑框操作清单类

4 调试C++程序
推荐Borland C++编译器中调试型程序
OAERP调试程序十分方便操作方法
〔1〕翻开户C语言程序〞选中记录者直接编写程序
〔2〕翻开需加载段程序窗口
〔3〕左树选择条记录右键选择调试功〞
〔4〕者清单表头右键选择调试功〞
〔5〕选择代码加载象运行

结果请窗口底部提示框

5CC++程序组织
系统允许户字段增加段CC++程序段CC++代码系统执行时会嵌入main函数 说面终执行局部
int main()
{
户写代码局部
return 0
}
(说户书写完整局部必须头尾系统会动加)
系统开放列函数供户处理业务

§8 函数指针动态链接库
1 加载动态链接库三关键函数
HINSTANCE LoadLibrary(char*)
void FreeLibrary(HINSTANCE)
int GetProcAddress(HINSTANCEchar*)
2 例:
测试dll函数
简单说明SimpleDlldll放入c根目录面测试面代码
typedef void (DllFun)(char*)
string s1C\\SimpleDlldll
HINSTANCE hI1LoadLibrary(s1c_str())
if(hI1NULL)
{ printf(载入SimpleDlldll失败)
return 1
}
DllFun *f1(DllFun *)GetProcAddress(hI1_Say)
if(f1NULL)
{ printf(查找函数Say失败)
FreeLibrary(hI1)
return 2
}
f1(anybady here)
FreeLibrary(hI1)
return 0

3 传递64位整数__int64
眼OAERP支持64位整数__int64DLL库双传递参数呢?
技巧两int32+3264 者double(8B64位)
例DLL中函数原型:__int64 xxx(__int 64)面函数换
double yyy(int x1int x2)
int xa[2]
double ret64yyy(xa1xa2)
int *xb(int*) ret64
里方法笨拙点正常工作暂时效解决问题然尾数机器面调yyy(xa2xa1)
4 函数指针
函数指针处理面Dll例样加载动态链接库直接取函数址面例
函数指针例
typedef double (scFun1)(double t1)
scFun1 *f1
f1cos
double x1f1(1)
double x2cos(1)
printf(x1fx2fx1x2)

§9 产生提成表程序
企业较复杂提成方案根业绩提成工程理根业务员提成提成面企业动产生提成表〔供工资计算动〕代码放桌面〔C++钮〕
段代码函数户输入时间段户输入查询条件SQL语句返回数集空白数集录入数库等代码
暂扣提成补发
int ijk
string SQL1SQL2SQL3TempS
string DSQ0DSQ1DSQ2DSQ3DSQ8
string ts2
接收录入查询象面板
string SinputSQLC(HEmployeeSalaryCode1)

判断否选择正确日期果日期正确提示重新选择否动退出动退出
int t1t2j1
int ret1InputDate(0&t1&t2)
if (ret10) {return 1}
while (t1<0 || t2<0)
{
gStringArray SA1(this)
string s1警告没选择正确起始日期重新选择日期确定退出放弃
SA1Append(s1)
SA1Append(确定)
SA1Append()
SA1Append(放弃)
j1SA1ShowMessage()
if(j11) return 1
ret1InputDate(0&t1&t2)
if (ret10) {return 1}
}

构造通查询SQLDSQ局部
string DSQ From tblSaleProportionScalingItems Where
DSQ+ CommissionType<>20005
string DSQ MainCode In (Select Code From tblSaleProportionScaling Where
DSQ+ OpTime>
DSQ+t1
DSQ+ And OpTime<
DSQ+t2
DSQ+)
构造通查询SQL局部

构造应提销售提成员列表数集DS1
DSQ1Select * From HEmployee Where
DSQ1+Sinput
DSQ1+ And Code In (Select uLitigant From tblSaleProportionScalingItems Where
DSQ1+DSQ
DSQ1+ And Code Not in
DSQ1+ (Select SaleItemsCode From tblSaleProportionScalingItems Where CommissionType20005)
DSQ1+ And CommissionType<>20005
DSQ1+)

gDataSet ds1(this4DSQ1c_str())
printf(DSQ1sDSQ1)
构造应提销售提成员列表数集DS1

判断数集DS1数果数集空值弹出提示框退出程序
int count1ds1GetCount()
printf(count1dcount1)
if(count1<00001 )
{
gStringArray SA1(this)
string s1提示前期间没数没提成明细数者提成已全部完成
SA1Append(s1)
SA1Append(放弃)
SA1Append()
SA1Append()
j1SA1ShowMessage()
if(j10)
{ return 0
}
}
判断数集DS1数果数集空值弹出提示框

应提成销售员进行统计
int i0j0
for(i0i{
ds1MoveTo(i)
构造应提成提成明细数集DS2
DSQ2Select * From tblSaleProportionScalingItems Where
DSQ2+ uLitigant
DSQ2+ds1newGet2(Code)
DSQ2+ And
DSQ2+DSQ
DSQ2+ And Code Not In (Select SaleItemsCode from tblSaleProportionScalingItems Where CommissionType20005
DSQ2+)
DSQ2+ And CommissionType<>20005
printf(DSQ2sDSQ2)
gDataSet ds2(this4DSQ2c_str())
int count2ds2GetCount()
printf(应提成明细数集数dcount2)
构造应提成销售明细数集DS2

判断数集DS2数果数集空值弹出提示框退出程序
if(count2<00001 )
{
gStringArray SA1(this)
string s1提示姓名:
s1+ds1newGetX4(Name)
s1+职员前期间没数没提成明细数者提成已全部完成
SA1Append(s1)
SA1Append(确定)
SA1Append(放弃)
SA1Append()
SA1Append()
j1SA1ShowMessage()
if(j11)
{ return 0
}
}

构造前提成率数集DS2
float x0 y0z0z10
for(k0k { ds2MoveTo(k)
x+ds2newGet2(uTobeSummoneyX)ds2newGet2(SummoneyX)
}

根累计销售率匹配相应销售提成率结束
gDataSet ds3(this6tblSaleProportionScaling)
ds3newSet2(Nameds1newGet2(Code))
ds3newSet2(CommissionType20005)
ds3newSet2(Departmentds1newGet2(Department2))
ds3newSet2(OpTimet1)
ds3newSet2(Finish1t2)
ds3newSet2(PieceAmountx)
ds3bpInsert(2)
for(j0j { ds2MoveTo(j)
gDataSet ds4(this6tblSaleProportionScalingItems)
ds4newSet2(MainCodeds3newGet2(Code))
ds4newSet2(ClientIDds2newGet2(ClientID))
ds4newSet2(Productds2newGet2(Product))
ds4newSet2(Summoneyds2newGet2(uTobeSummoneyX)ds2newGet2(SummoneyX))
ds4newSet2(Amountds2newGet2(Amount))
ds4newSet2(Priceds2newGet2(Price))
ds4newSet2(RateX1(ds2newGet2(SummoneyX)ds2newGet2(uTobeSummoneyX)))
ds4newSet2(uTobeSummoneyXds2newGet2(uTobeSummoneyX)ds2newGet2(SummoneyX))
ds4newSet2(SummoneyXds2newGet2(uTobeSummoneyX)ds2newGet2(SummoneyX))
ds4newSet2(MainCodeXds2newGet2(MainCodeX))
ds4newSet2(SaleItemsCodeds2newGet2(Code))
ds4newSet2(CommissionType20005)
ds4newSet2(uLitigantds1newGet2(Code))
ds4bpInsert(2)
}
string s1Update tblSaleProportionScaling Set uTobeWage
s1+z1
s1+Wage
s1+z
s1+RateX
s1+zx
s1+ Where Code
s1+ds3newGet2(Code)
SQL(s1)
}


文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 24 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

《安装软件》教学设计

一、教材分析本课选自苏教版《小学信息技术(上册)》第23课第二节。安装使用共享软件是学生利用网络资源的一项重要内容,同时也对经后日常管理和维护电脑软件起到了铺垫作用。因此本课的重点、也是本册教材网络基础模块的一大重点。

王***朝 2年前 上传486   0

实施OA-ERP项目计划书

 xxx省xxx集团 实施OA-ERP项目计划书 目 录 第一章 概述 1 1.1 ERP概念 1 1.2 ERP内容 1 1.3 ERP本质 1 1.4 ERP效益 1 1.5 OA-ERP能解决的问题 1 1.5 OA-ERP的投资 2 1.6 OA-ERP性能与发展计划 2 第二章企业概况 1

陈***友 9年前 上传4249   0

高级软件测试工程师的工作职责说明

高级软件测试工程师的工作职责说明职责:1、编写性能测试计划、规划详细的测试方案、编写测试用例;2、根据测试计划搭建和维护测试环境;3、执行性能测试工作,负责功能产品的性能稳定性测试。进行性能基准评估、性能问题定位,参与性能调优并提出改进意见;4、对测试中发现的问题进行详细分析和准确定位,与开发人员讨论缺陷解决方案;5、提出对产品的进一步改进的建议,并评估改进方案是否合理。对测试结果进

x***o 2年前 上传444   0

高级软件测试工程师的基本职责

高级软件测试工程师的基本职责职责:1、负责产品或项目测试需求分析,测试用例设计和测试脚本编写;2、负责大数据测试环境搭建、管理,测试方案的设计,数据测试工具及脚本开发;3、负责相关测试执行,包括但不限于大数据接口测试,性能测试,并负责提交缺陷并跟踪缺陷解决情况;4、负责对版本测试执行情况进行分析总结,编制版本测试分析报告;5、按时按质完成上级领导安排的工作任务。任职要求:1、__

h***0 2年前 上传507   0

高级软件测试工程师的具体职责

高级软件测试工程师的具体职责职责:1、根据产品需求和设计文档,制定测试计划和测试方案,独立完成项目系统的测试,并提升测试效率和产品质量;2、网站(Web端/移动端)核心业务功能测试和接口测试,完成测试报告以及测试结果分析;3、开发自动化、接口测试脚本,执行自动化测试、接口、性能测试等;4、在测试各环节与开发、产品等部门沟通,保证输入和输出的正确性和完备性,保证所参与的项目的品质;5、

n***e 2年前 上传658   0

高级软件工程师职位说明书

高级软件工程师职位说明书  岗位描述:  1、高级专业技术人员职位,独立负责工作小组,给下级成员提供引导或支持并监督他们的日常活动;  2、参与软件产品项目规划工作,制定具体项目实施方案;  3、整合并优化项目开发所需各种资源;  4、负责软件开发技术和规范及标准流程的改进;  5、参与软件系统的设计和分析;  6、根据开发进度和任务分配,完成相应模块软件的设计、开发

l***9 10年前 上传606   0

高级软件测试工程师的职责

高级软件测试工程师的职责职责:1、承担公司软件产品(Web\Android\iOS等)的功能测试、用户体验测试工作,负责自动化测试、性能测试和持续集成实践相关工作2、根据产品规格和测试需求,编写测试方案、设计测试用例;3、执行测试用例,分析测试结果,提交bug和进行回归测试;4、使用缺陷跟踪工具监控和报告Bug状态5、及时更新整理所负责平台/业务的测试用例、使用说明等相关文档。任职

n***e 2年前 上传495   0

软件课程设计心得

软件课程设计心得第一篇:软件课程设计心得软件工程课程设计课程设想心得体味,这也激起了我尔后勤奋进修的乐趣,我想这将对我以后的进修发作主动的影响。其次,此次课程设想让我充实熟悉到团队协作的主要性,只要合作协作才干保证整个项目标有条不絮。别的在课程设想的进程中,当我们碰着不大白的成绩时,指点教员老是耐心的解说,给我们的设想以极大的辅佐,使我们获益匪浅。因此很是感谢感动教员的教育。经过此次设想

h***u 10年前 上传716   0

软件课程设计心得

软件课程设计心得  软件工程课程设计课程设想心得体味,这也激起了我尔后勤奋进修的乐趣,我想这将对我以后的进修发作主动的影响。其次,此次课程设想让我充实熟悉到团队协作的主要性,只要合作协作才干保证整个项目标有条不絮。别的在课程设想的进程中,当我们碰着不大白的成绩时,指点教员老是耐心的解说,给我们的设想以极大的辅佐,使我们获益匪浅。因此很是感谢感动教员的教育。经过此次设想,我懂得了进修的主要性,

m***l 11年前 上传1021   0

国标软件设计文档——软件构架文档

<项目名称>软件构架文档版本 <1.0>[注:以下提供的模板用于 Rational Unified Process。其中包括用方括号括起来并以蓝色斜体(样式=InfoBlue)显示的文本,它们用于向作者提供指导,在发布此文档之前应该将其删除。按此样式输入的段落将被自动设置为普通样式(样式=Body Text)。][要定制 Microsoft Word 中的自动字段(选

t***i 10年前 上传805   0

软件设计过程实验报告

 软件开发过程 实验一 软件需求分析 一、目的和意义 对本书第二和三章的内容做进一步的掌握,写出软件需求规格说明书。为下面的实习奠定基础。 二、实习内容 1、确定软件题目(学生可自己拟定,也可在本书附录2中选择); 2、分析软件需求以及人工模式下的工作流程; 3、编写需求规格说明书(需求规格说明书的编写要求参见本节模板参考); 4、完成形式:以文档的形式完成软件的需求规格说明

y***7 11年前 上传20059   0

软件设计基本原则

软件基本设计原则l 友好、简洁的界面设计l 结构、导向清晰,符合国际标准l 强大的综合查询l 信息数据共享l 方便及时的信息交流板块l 准确、可逆的科技工作流模块支持l 良好的开放性和可扩展性l 方案生命周期长设计原则:设计时考虑的总体原则是:它必须满足设计目标中的要求,并充分考虑本网站的基本约定,建立完善的系统设计方案。信息系统的实施作为信息化规划的实践和实现,必须遵循信

文***品 1年前 上传396   0

电气设计软件立项报告

最初的电气设计对下游的元件采购、装配和生产都将产生巨大的影响。我所技术部门一直使用非专业的绘图软件Microsoft Visio和AutoCAD做电气设计,工程师们不得不把大量的工作时间耗费在如绘图、编号、选型、标注、制表、数据统计和检查等低水平的重复劳动中。压缩了应用专业知识和行业经验去做好产品的方案规划、性能优化和功能完善等核心设计工作的时间。因而设计工程师的价值和创造力没有被充分发挥,不利于产品的持续研发创新。

袁***飞 6年前 上传1441   0

软件工程分析与设计

软件工程分析与设计 选择 1.1 问题解决和决策 在现阶段,介绍杜威在1910年首先阐述的一种解决问题的结构方法是很有益处的。约翰杜威确定的阶段是:问题是什么?可供选择的办法由那些?那种办法是最好的?你现在应该努力识别杜威的三个阶段与软件生命周期的相似之处。 为了弄清第一阶段的问题定义与我们的需求分析阶段之间的相似之处,在前面我们已经对生命周期介绍得足够多了。事实上,许多组织使用词汇

山***1 5年前 上传978   0

高级软件测试工程师工作的岗位职责

高级软件测试工程师工作的岗位职责职责:1.负责CS iOS、Android、Web端自动化2. 根据产品功能描述、交互图、流程图撰写自动化测试用例;3. 协助开发人员重现问题、寻找重现规律和总结可能出现的原因;4. 总结当前测试环节的测试状态并及时反馈优化;5. 可以制定部分测试项目的计划并按计划执行;6. 参与对产品提出优化等建议;7. 负责/参与项目流程按计划完成;任职资格

x***o 2年前 上传475   0

中高级软件测试工程师的职责内容

中高级软件测试工程师的职责内容职责:1. 负责根据产品的需求与设计编写测试计划,设计测试数据和测试用例;2. 负责测试环境的搭建,执行测试;3. 负责产品的集成测试与系统测试,并对产品功能、性能、用户体验及其他方面的测试负责;4. 负责跟踪、分析与报告测试过程中所发现的问题,并及时推动问题的合理解决;5. 通过测试的相关流程、策略、方法及工具等方面的创新,努力提升测试质量与效率;任

s***7 2年前 上传315   0

《高级语言程序设计》实验报告

1.掌握在Visual C++6.0环境下C程序的建立、编辑、编译和执行过程。2.掌握C程序的最基本框架结构,完成简单程序的编制与运行。3.了解基本输入输出函数scanf()、printf ()的格式及使用方法。4.掌握发现语法错误、逻辑错误的方法以及排除简单错误的操作技能。

w***2 2年前 上传457   0

《高级语言程序设计》实验报告

设计一种用单链表存储多项式的结构(每个结点存储一项的系数和指数,类型都为int)并编写一个产生多项式链表的函数和一个实现两个多项式相加和相乘的函数。

留***1 5年前 上传3519   0

软件项目管理之学生管理系统课程设计

 课程设计课程名称:软件项目管理 设计题目:学生管理系统项目工作计划 学 院:信息工程与自动化学院 专 业:计算机科学与技术 年 级:2008级 学生姓名:

文***享 1年前 上传422   0

学生选课系统《软件工程》课程设计

详细版!目 录一、问题定义 51.1问题的定义 51.2 系统要解决的问题 5二、可行性研究 62.1 引言 62.1.1目的 62.1.2背景及功能 62.1.3 参考资料 62.2 可行性研究的前提 62.2.1 要求 62.2.2 目标 72.2.3 条件、假定和限制 72.2.4 进行可行性研究的方法 72.3 所建议的系统 72

文***品 7个月前 上传349   0

软件工程学生选课系统课程设计

网上选课系统课程设计手册团队: 学校: 队长: 时间:2014目 录1. 项目概述 ………………………………………………………………………31.1开发背景 ………………………………………………………………………31.2 开发目的 ……………………………………………………………………31.3 开发运行境 ……………………………………………………………………31.4

文***享 3年前 上传633   0

软件质量保证与测试课程设计

软件质量保证与测试课程设计信息科学与技术学院《软件测试与质量保证》课程设计题目名称:学生信息管理系统测试学生姓名:学 号:专 业:计算机科学与技术班 级:网络指导教师:职 称:副教授完成日期:2015年 X月X日目录1 简介 1 编写目的 1 项目背景 1系统简介 1术语和缩写词 1

文***享 11个月前 上传261   0

软件设计毕业生自我评价

软件设计毕业生自我评价  作为一名软件专业的大学生,从不懂不爱程序,到喜欢并热爱上编程,这是个很大的转变。读文科上来的我曾认为自己的脑子会跟不上那逻辑的转动。但勤能补拙这是真理。更何况我并不拙。一个勤奋好学的我在大学的学习、生活和工作中都能给自己一个满意的鉴定。  四年里,对专业知识我一丝不苟,在学好本专业课程的同时我也特别注重对其他各科知识的学习与涉猎。图书馆、电子阅览室、期刊杂志室是

t***l 10年前 上传536   0

计算机程序设计和软件

软 件总的来说,软件就是指用以指挥计算机运行活动所使用的程序。有两类软件:应用软件和系统软件。程序员设计和编制应用软件来完成面向用户的某些应用,诸如收帐和工资系统等。系统软件更为通用,通常是独立于应用的。它支持基本的计算机功能以及所有的应用领域(而不是特殊的应用)。 系统软件 可以将系统软件从逻辑上分成主要的几类。下面我们对每一类作概括介绍。 1.编译程

q***f 12年前 上传563   0

DOS界面下通用图形编辑软件的设计

DOS界面下通用图形编辑软件的设计摘 要 该文介绍了一种建立在DOS界面下生成图素文件的通用图形编辑程序的设计方法。         目前用作DDC的PC总线工控机(IPC)大部分工作在DOS界面上,而DOS不具有像Windows那样美观方便的图形用户接口(GUI)。        生成工艺流程图等复杂图形若用程序设计语言直接编程需花费大量精力和代码,且不易修改。  

d***r 9年前 上传382   0