http://www.ngnc.net/NGNcalc2x/development_design.htm
《NGNcalc2x开发手册附件》系统设计说明书正文
目录:
1、项目描述
一:项目描述:
概述:
该计算器是函数型科学计算器,以函数编辑和管理为主要特点。除具备传统计算器的 基本功能 + - * /和一些高级的函数快捷键外,用户可以通过使用系统默认提供的自定义函数或自己编辑或下载的自定义函数集来扩充计算器的功能;以下将重点说明自定义函数有关的操作和设计;
计算:
一个计算过程是通过输入数字和函数然后获得计算结果,数字可以是任意整数或小数, 函数可以是系统提供的和可扩充的自定义函数;
数字和函数的输入顺序不是唯一的。比如:1,+,1,=和Fn,+,1,1的结果都是2。这个例子中,函数标识Fn和后面的+的输入表示要计算“加”这个函数,后面输入的2个数字是“加”这个函数的两个参数;任何内嵌的或自定义的函数都可以替代“加”。
一个计算过程只能有一个,必须有一个函数参与其中。函数的参数个数决定了计算输入的长度;
寄存器:
因为上述计算过程,计算器必须有能力记录数字以用于下一个函数的计算;
用户可以按"next number"键,可以使用“,”或"return"键表示一个数字的输入结束,进入下个数字的输入。这有些象计算机程序的表示方法n0=? n1=? n2=? ...
在另一个计算过程中计算: 有用的控制 "()"
1,*,(2,+,3,),=; 这是个好的例子显示了特殊的计算过程。
计算过程如下:
> n1=1,
> 函数“*”准备就绪,等待下个参数的输入,
> 启动另一个计算过程,
> n2=2,
> func=sum,
> n3=3,
> 结束计算,
> “*”的另一个参数 n2 = sum(n2,n3)
> 结束第1个计算“*”,n1 = mul(n1,n2)
> 将结果n1显示在计算器窗口。
函数编辑:
一个函数的编辑和一个计算过程基本一致,不同的是参数数字被变量替换,计算结果则变成保存为函数的操作;
在普通的计算输入过程中,当用户当在需要输入参数数字时改为按"varable"键,之后按索引数字或不按数字由系统自动添加,就向:x1, x2, x3, ...。然后用户按 '='结束计算/函数输入。如果之前的输入序列中有变量,计算器就会寻求用户给函数取名字,并保存起来下次使用。下面是一组例子:
x1,+,x1,=; it's power2 function.
5,*,(,x1,+,3,),= a formula used to get some result.
x1,/,12,= convert inch to feet.
x1,*,12,= convert feet to inch.
函数管理:
太多的函数需要用标签进行管理,也可以以名称排序。用户可以方便地通过FN键启动函数搜索菜单定位你想要的函数。
用户还可以定义函数热键Fn1,Fn2等快速定位到你最常用的函数;
二、系统设计与开发计划:
线程分析:
1, 输入事件等待线程:用户输入部分,也是触发整个系统运行的基础;
2, 屏幕显示线程:用户输入部分,通过对Calc状态的查询,对变化部分外观更新,或全部刷新。
3, 计算模块,根据用户输入,理解为计算行为,调用对应函数算之。无并行计算需求,所以用1个线程担当;
结论:计算器是个输入响应和显示的循环,在一个进程中执行即可;
模块分析:
I/O分析,目前平台众多,输入方式分控制台方式和窗口按钮模式;显示方式一样,
因此,需要对输入和输出进行抽象出一个统一接口,剥离I/O部分的控制;
使用NGNc的Plugin能力,分别对不同的平台编制不同的插件,以提供统一的I/O接口
2,计算器数据描述,和控制逻辑可以独立存在,与I/O界限分明
使用NGNc的脚本能力,描述计算器核心和外观数据,以及控制流程,便于改进计算器的核心能力,与能力扩充的自由度
3,计算器数据,和通用操作逻辑是一个核心,包括函数操作
4,函数的管理独立出来,定义函数库的格式,编制工具单独管理;
作为最常用的Window桌面系统,管理自定义函数,负责与其他终端的交换,以及多用户间的互通有无等非常方便。甚至可以利用Web方式实现自动的函数交换,查询等。
此部分可以只用一个桌面程序完成,也可以通过建立Web服务器的方式,可大可小;
开发步骤:
1,在Dos控制台下,实现基本型计算器的功能,并搭建系统平台
2,开发Dos控制台的模拟器,在窗口系统下运行上面的Demo
3,在Demo的基础上扩充计算器核心数据结构,完成函数型科学计算器的全部逻辑;
4,在Dos控制台的模拟器的基础上,对多平台I/O进行抽象,简化为多平台I/O所需要的Plugin开发量;将尽量多的I/O逻辑以NGNc脚本和数据的形式完成;
5,开发Windows桌面函数管理,或Web函数管理系统;
注释:以上除Demo外其他部分都可以平行进行;
NGNc脚本编制规则:
Num
name
1st Char
Comments
Examples
0
Resv Data Type
int, float ...
1
Struct Declare
T,Name
Upper 1st Name
TPushBtn, ...
2
Function Name
Name
Upper 1st Name
DebugLoop, ...
3
global varable
g_,name
lower name
g_reg1, ...
4
local varable
l_,name
lower name
l_tmp, l_i, ...
5
Str Attr Name
m_,name
lower name
m_attr1, ...
...
三、商务运做和市场定位
目标市场锁定于移动终端市场,传统桌面市场由于其便利性无法同移动市场相比,而采用移动捆绑和传统桌面市场Free的方式;
开发第一阶段,基本功能实现,测试应用推广期,不做过多额外开发,在明确了准确的商务计划后,需要额外开发与之配套的系统,Web系统是必不可少的;