CN103577533B - 开放式网络计算系统 - Google Patents

开放式网络计算系统 Download PDF

Info

Publication number
CN103577533B
CN103577533B CN201310359081.XA CN201310359081A CN103577533B CN 103577533 B CN103577533 B CN 103577533B CN 201310359081 A CN201310359081 A CN 201310359081A CN 103577533 B CN103577533 B CN 103577533B
Authority
CN
China
Prior art keywords
data
calculating
project
result
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310359081.XA
Other languages
English (en)
Other versions
CN103577533A (zh
Inventor
吴剑青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN103577533A publication Critical patent/CN103577533A/zh
Application granted granted Critical
Publication of CN103577533B publication Critical patent/CN103577533B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明是网络计算系统和计算应用项目数据库的创建方法。每个计算应用项目都作为一条记录输入到数据库表中,记录含有足够用于创建计算数据输入表的数据,和通用计算数据如常数。该计算系统支持大量现有应用程序,每个程序都可以给用户远程计算。计算项目包含步骤:用搜索关键词搜索数据库,或者查看项目分类下面的计算项目,并为满足搜索关键词的计算项目创建链接,用户点击要计算的项目链接,计算系统产生计算数据输入表,用户输入数据并将其表提交给服务器的终计算程序进行计算并获得结果。系统允许注册用户上传新计算项目供他人使用。

Description

开放式网络计算系统
技术领域
用发明涉及网上应用数学计算系统。
背景技术
用计算机程序进行数学计算是计算机科学中人类最早的活动之一。每个大学和科研机构 都至少有一个计算机中心,有些大学甚至配备一个校级计算机中心和多个部门计算机中心。 在互联网出现之前,一般来讲,用计算机程序进行数学计算是不方便的。
尽管计算机中心已经普及,对很多人来说,使用还是会受到限制。企业的计算机中心只 对内部员工开放用做商业用途;学校的计算机中心只对自己的学生和教职员工开放;政府机 关的计算机中心更不是为一般公众开设的。因此那些不隶属于任何学校、研究所或政府机关 的人很难使用计算机中心。
任何人都不时有需要进行数学计算,计算既可以简单到比如单位换算,计算贷款利息或 邮寄、托运费用等;也可能复杂到如优化组织资源及物理模拟等。要进行任何一项计算,个 人必须得了解计算方法,包括计算公式和其它计算所需的计算常数。另外,个人还需要有计 算工具,比如计算器。大多数时候,这样的计算都不太方便。
综上所述,建立一个可在世界各地使用的网络计算中心,需要满足两个要求:一是要有 能够搜索到明确的计算程序的搜索能力,二是在计算机远程用户和运算服务器之间要有一个 可靠的网络连接。
数十年前,人们就可以在网络上搜索到一些网络计算工具,例如网络计算器,但是这些 工具对于那些想知道计算结果却不知道相关的数学公式及所需常数的人仍毫无用处。同样, 另外一些用网页表形式计算分期付款的计算工具也可以在网站上找到。然而,这样的工具并 不是为大众日常使用而设计的,也不够详尽和方便。再者,这些工具零星分布在大量的网络 站点,当用户需要进行计算的时候,他们不知道到哪里去找这些工具。
早期计算的计算程序都是通过本地网络在台式电脑运行。回顾一下历史,大多数程 序都可以满足一个公司或一所大学计算任务。现有的大多数程序都是用Fortran,Pascal,C 和BASIC语言开发的。这些程序大都需要针对程序专门设计的网络使用界面。早期很有名的 SAS系统的统计和计算机、化学计算程序都有用户使用界面。通常人们认为,每个高级网络 计算程序都是通过网络协议实现的,实际上这些程序的设计与执行都是基于程序的特性。要 创建一个特定计算程序的网络使用界面并不困难。每一个计算程序代码都是被一行一行编写 出来的,如果什么地方有改动,程序也要随之修改。目前还没有先例,利用数据库应用软件 检索大量计算程序,并且使用一个通用网络使用界面,将任何计算程序给网络终端用户使用。
创建一个能解决数以亿计的应用计算问题的网络计算系统是可行的。一个详尽完备 的计算系统在人们的学习、教学、日常生活、系统设计、工程计算、个人理财、专业服务、商业应用等方面都有应用价值。虽然潜在计算需求是无限的,一个落实所有计算程序的网络 服务商必然不堪重负,因此,网络计算系统设计成允许远程用户添加计算项目和程序,并保 证程序可用。
鉴于以上论述,有必要寻求一个新的方法,只用一个用户界面,支持大量的计算程序包; 有必要为用户提供从大量现有程序中检索所需计算程序的方法;有必要采用一个高效架构模 式将所有计算程序打包,并编入索引;也有必要寻找一种允许用户添加计算项目,并能随后
发明总结
网络计算系统(“计算系统”)是将大量计算程序安装在一台服务器上一个计算系统, 为网络用户提供一个多功能,易使用,易维护,实用完备的计算系统,在因特网或者局域网 中的计算机都可以访问这个系统。该系统应具备如下特征:
(1)通过正确关键词可以搜索到计算项目。用户输入一个或多个关键词后,服务器会对 所有计算项目进行搜索,确定那些匹配的项目,并生成一个链接列表,每个链接都和一个项 目对应。
(2)系统提示用户从众多链接中选择一个链接。
(3)服务器响应用户的点击,为被选项目生成含有一个或多个数据输入表的页面,该表 至少包含一个变量输入框和一个结果显示框。
(4)用户在表上变量输入框中键入所需数据并提交,服务器返回一个页面,此时,结果 显示框中已填入运算结果。
用户提交一个查询数据后,服务器利用填入的搜索关键词在表中搜索,查找到相关 记录,并为每一个相关项目建立链接。每个链接指向项目的数据库记录。用户点击任何一个 链接,浏览器访问服务器并通知服务器到那里去搜索相同记录。服务器在这个相同的记录中 检索出制表数据,以创建“数据输入表”(“计算表”)并发送给用户。数据输入表的页面有 变量单位和结果单位,可以以下拉菜单供用户选择。每个项目记录都包含一个或多个含有变 量名称和结果名称,但没有存储变量值和结果值。这是因为变量值是由用户输入的,而结果 是由系统计算出来的。用户在表中输入所有需要的数据,并提交给服务器,服务器找到相同 记录,并检索到诸如常数等的所需计算数据,再根据计算数据和用户提交数据,利用程序进 行运算。这个程序是由计算方法数据指定的。
计算步骤可以重复。计算系统允许用户重复计算。如果用户对计算结果不满意,可以重 新填写数据输入表再进行计算。相应地,服务器会返回一个新的结果,连同含有用户提交原 始数据的输入框。系统利用记录号码或者类似信息如组号码,对相同的计算项目进行跟踪。
作为第二个计算系统特征,计算系统利用多个数据库表,存储变量数量不同的计算项目。 把不同的项目放置在不同数据表里,提高硬盘使用效率和搜索速度。所有一个变量的计算项 目都存储在一个小数据库表中。一些大的计算项目存储在大数据库表中。
计算系统的第三特征是用“方法标志”(“Method-flag”),调用多种计算方法,因此, 可以将大量的计算方法编为一个终计算程序。每个字母或整数的值代表计算程序中的一个独 特计算方法。可以以Java程序的参数,Shell或C可执行程序中的一个命令行参数,将方法标 志传入终计算程序。计算数据可以传入终计算程序,计算结果可以返回后由JSP显示。终计 算程序可以是任何可执行程序,例如Java程序、Shell程序、C/C++可执行程序、或者CGI C/C++程序。这种模式允许成百上千种计算方法都含括在一个终计算程序里,这个程序可 以支持极大数量的计算项目。
计算系统的第四个特征是,系统提供了一个允许任意用户添加计算项目的方法。大 量计算方法都可以编入一个程序中。单变量函数如c1*x+c2,c1/x,log(x),ln(x),sin(x), cos(x),x+c1,c1/(xc2),x*x+x+c,sqrt(x)等可以编入一个终计算程序,与相应的方法标 志值相对应。两个或三个变量的函数也可以编入另一个计算程序,与相应的方法标志值对应 用多个变量和常数的计算方法以相应标志编入一个终计算程序。这样的系统构建完成后,还 要创建一张能够反映数学函数和程序名称及可方法标志值之间的关系图。这张图可以帮助 用户确定正确程序名称和方法标志值。因此,如果用户不能开发终计算程序代码,他只需要 将计算项目上传,使用图上标明的程序名和方法标志值。将数学手册中的现有计算方法都添 加到计算系统,以满足几乎所有日常计算需要。
计算系统的第五个特征就是数据输入表被设计成能够接受由空格,分号或其它预定的符号 分隔的数组。这种类型的数据输入表可以用于支持统计和线性代数等计算项目。
计算系统的第五个特征是,每一个数据点,包括向量和矩阵的数据点,都可用一个算数 表达式如12+4*/(log5+sin30)来表达。服务器将整个表达式视作一个数据单元,并传给算数表 达式解码器,解码器会返回一个值备用。这使得用户在不知道变量数值的情况下,可以将整 个表达式当作一个数据单元输入。例如利率可用0.7*x+2.9%。
附图说明
图1显示第一页面,包含搜索框;
图2显示匹配的链接列表;
图3显示一个数据输入表;
图4显示变量框中值和计算的结果;
图5显示长度换算两个相关链接;
图6显示长度互换项目的数据输入表;
图7显示长度换算的两个数据输入表;
图8显示计算项目高级搜索页面;
图9显示有三个变量的数据输入表及运算结果;
图10显示有两组输入数据、三组输出数据的数据输入表和解线性方程的运算;
图11显示有两组输入数据、7组输出数据的数据输入表,两个变量统计分析的结果;
图12显示使用主菜单和子菜单而生成的计算项目一览表;
图13显示一个供用户创建计算项目的网页表;
图14显示搜索测试计算项目的链接列表。
具体实施方式
“计算方法”指最后程序执行计算方法,“计算项目”指的是用一种计算方法完成应用 计算项目。显而易见,单个计算方法可用于大量的应用计算项目。比如说,某个运行的线性 函数程序就可以用于数以千计的单位换算和其它应用。
为减少编程工作,网络计算系统(“计算系统”)本着一个原则构建,即数学方程 式和函数可以在很多实际问题中应用。如y=c1*x+c2函数解法有很多用途,不管这个算法 用什么程序写。建成一个支持大量计算项目的计算系统需要利用数据库应用软件。这个数据库应用软件不光用于索引计算项目,还能大幅度减少编程工作。
A.网络计算系统一个应用实例
图1-4显示计算系统的四个网页。假设创建计算系统的目的是提供一个单位换算网上手 册,用户进入计算系统搜索页面,在搜索框1输入搜索关键词如温度或压强,点击搜索键 2,系统返回如图2所示搜索结果,包含链接3。然后用户点击链接3:“转换温度从C至F”,服务器会生成一个数据输入表(“数据输入表”)。用户在如图3所示输入框6中输入 计算所需数据:温度值,再点击“计算”按钮,将数据提交给服务器。服务器首先在用户填 充表中取出数据,用隐藏的记录号码找到相同记录,再从数据库表中检索到记录所需的项目
这是计算一个变量和两个常数的最简单的计算项目。计算系统支持复杂计算项目,如线 性代数、统计学、微积分计算。对于大多数计算项目,用户能够通过四个页面进行计算:即 搜索页面、链接页面、数据输入表、结果页面。数据输入表和结果页面可以是相同的,如果 计算项目比较复杂,这两个表可能更复杂,但大多数计算项目的用户界面操作步骤都相似。
B.创建计算系统的方法
计算系统所需硬件包括一台联网服务器和至少一台能够通过网络协议访问服务器的 客户机。服务器和客户机都连入网络中,通过TCP或相似的数据传输协议交换数据。在本文, JSP程序包括相关的Java类文件和过滤器。计算系统用数据库软件,管理用户账号,存储计 算项目数据。系统可以照如下步骤构建。
1.创建数据组成表
要构建一个计算系统,数据库需要用独特形式设计,使多个计算项目共用同一种计 算方法。一个计算项目包含标题(用途说明)、计算说明,变量名称、变量单位、结果名称、结果单位、计算方法、和计算数据。基本思想就是每个计算项目都用特定的数据库记录来定义。每个计算项目记录数据包含(1)方法数据,(2)生成表的数据(制表数据),(3) 计算数据,(4)查询数据,(5)数据来源(系统可以利用网络获得外部数据),(6)项目来 源。这些数据的用法如下:
(1)方法数据包括终计算程序名称和方法标志(method-flag),用于指定特定的计算方 法。
(2)生成表的数据是创建数据输入表所需要的所有数据。如图3所示,制表数据包括变 量名称6(温度)、变量单位7(C)、结果名称8(温度)、结果单位9(F),“计算”按钮 10。用途说明4十分有用。制表数据还包括项目贡献者姓名、用户指南、数学方程式图。
(3)计算数据就是进行计算所需要的数据。计算数据包括存储在常数字段中数据。另外, 执行计算有时候还需要用到变量单位和结果单位,因为就某特定计算而言,一个或多个计算 常数的值都取决于变量单位和结果单位。把米换算成厘米的进率是100,而将米化成毫米的进 率为1000。计算数据也包括用户自己输入的变量数据。
(4)查询数据就是存储在每个项目记录的关键词。这些关键词被存储在一个或多个被查 询用的字段中。服务器通过搜索这些数据的字段,来确定某条记录是否作为相应链接显示在 搜寻结果页面上。搜索是对记录号码(record_Id)、组号码(group_id)、变量名称、变量单 位、结果名称、结果单位、用途说明等字段进行的。
(5)数据来源数据是用于获取更新应用数据来源的信息,包括统一资源定位符(URL) 或路径。那些需要最新数据资料的计算项目例如计算当前利率和股票价格,必须使用实时数 据。
(6)项目源数据包括贡献者姓名和项目验证状态。
线性函数解法是数学计算中最简单的计算方法。计算系统的一个实施例是用线性函数 Y=a*X+b计算方法,因此,要创建数据库线性函数数据表(linear-matrix),以存储一个变 量和两个常数。数据库下的线性函数表含有如下字段:
表1.线性函数项目数据库表结构
每条记录都定义一个程序名,一个方法标志,定义一个完整的应用程序和计算方法。创建 这个数据库表的目的,是为解决Y=a*X+b线性函数计算问题,当然,表中可能包含非线性计 算问题。大量日常计算都可以用线性函数来解决。假设线性函数表的第一条记录是下面的:
表2.计算项目的数据记录实例
在这条记录里,搜索键和变量名称刚好相同,但它们可以不一样。
2.建立相关计算项目链接
用户在搜索页面上的搜索关键词框中键入“温度”,并将页面发送至服务器,服务器首先从提交页面得到搜索关键词的值,用这个值去搜索字段search_key1,并找到所有包含搜索关键词的记录。假设数据库中只有二个记录包含“温度”,服务器总共找到两条记录它接下来用用途说明中的值为记录2建立链接,链接显示下列标题:(1)将温度从C换算为F。(2)将温度从F换算为C。假设链接调用的JSP程序是服务器www.occhost.com上的 form_maker.jsp,则记录2在搜索结果页上的链接的相关HTML编码:<a href=″http://www.occhost.com/form_maker.jsp?record_id=2″>将温度从C转化为 F.</a>
3.创建数据输入表
用户点击“将温度从C换算为F”,客户机上的浏览器调用服务器程序form_maker.jsp 和相关的JAVA程序。服务器得到记录号码2字符串值,将其转化为整数,再从记录2中读取 所需制表数据。服务器创建一个数据输入表。相关代码如下:
这是一个可以用POST提交的通用网页表。网页表在行20有一个隐藏记录号码;行30显 示“请输入温度”;行40显示一个输入框;行50和行60分别显示“提交”和“重新设置”。用户在输入框中输入“37”,并点击“提交”按钮,浏览器把“name=temperature&value =37”发送给服务器的标准输入。行45显示输入框存储计算结果(result_value)。开始计算时,结果没有值。因为这个计算结果字段是只读字段,用户也无法输入任何数据。只要计算项目中含有一个变量,常数不多于两个,那么任何计算项目记录都可以创建成一个表。第98条记录,用来创建计算压力的数据输入表。
服务器接受到上传的表后,首先从隐藏字段中得到记录号码值,将其转化成整数,再在 数据库表中找到记录2,并检索到常数1和常数2的值,上述整个步骤的完成参见下列代码:
服务器首先在行100中得到记录2,将其转化为整数,然后在行110中检索到记录2,再在行120,找到记录数据,并保存在结构化变量rs中,接下来在140-170行,从rs 中得到常数1的值和常数2的值。然而,“37”作为用户提交的变量值,被存储在变量值 (variable_value)中。至此,服务器已经获取所有进行最后计算所需数据。
4.调用终计算程序计算并返回结果
用户将填写好的表提交给服务器上的计算程序(可用computing.jsp或result.jsp 或合适的名字命名)。当计算任务交给另一个能够访问数据库专用计算程序时,这个程序就 作为客户机浏览器的用户界面,它首先通过“request.getParameter(name)″得到所有值, 并创建一模一样的数据输入表,由终计算程序将结果填进已创建表的结果框。在终计算程序 进行最后计算之前,终计算程序用到计算数据例如常数1和常数2的值。计算程序通过一个 数据库访问对象,检索到常数1和常数2的值,再调用终计算程序。终计算程序再用这些值 和用户提供数据(“37″)进行最后计算(结果=37*1.8+32=98.60)。值计算返回后,将 用request.setAttribute(″result_value″,result)把计算结果赋予页面的结果值。再用下列 方法将相同的表发送出去:request.getRequestDispatcher(pStr). forward(request,response),where pStr=″form_maker.jsp?record_id=2″。
如果终计算程序是可允许访问数据库的系统计算程序,服务器得到记录号码后,就 调用数据库访问对象,检索该记录的计算数据例如常数1和常数2的值,再由用户提交数据, 最后创建一个命令行,用命令处理器“commandProcessor.java″调用终计算程序。命令处 理器是通用JavaBean命令处理器,其功能是调用终计算程序,返回计算结果或运行错误。 命令参数格式和Linux系统的终端命令格式相似。cp.runCommand(″LinearEquation37 1.832″)。它将整个参数字符串传送给可执行终计算程序“LinearEquation″,终计算程序 在执行这个命令时候,所有的值都必须传入终计算程序:char argv[1]=“37”,charargv[2]=″1.8″,char argv[3]=“32”。这些变量被转化为双精度数字: doubletvariable=atof(argv[1]),double tvariable2=atof(argv[2]),和double tvariable3=atof(argv[3])。最后,终计算程序用下面的数学方法进行计算: result=tvariable1*tvariable2+tvariable3=37*1.8+32=98.60,并返回结果。这 个结果先存储在临时变量,后插入重建的数据输入表的计算结果。这等同于在赋予结果值后 更新这个表。
C.各种实施方案
由于JSP程序包括相关的Java类文件和JSP过滤器,数据库访问程序和终计算程序之间关 联方式有所不同,因此可以有多种执行方案完成计算。不同的实现方法包括:(1)JSP程序 调用一个C可执行程序,访问数据库和进行最后计算;(2)JSP程序调用一个JavaBean程序 访问数据库和进行最后计算;(3)JSP程序调用一个C可执行程序访问数据库,再调用一个 可执行终程序进行最后计算;(4)JSP程序调用一个访问数据库的JavaBean程序,和一个进 行最后计算的JavaBean程序;(5)单一程序完成数据访问,计算,并建立相关链接。
用Apache CGI C程序或Tomcat CGI C程序有更多应用组合方式。此外,Perl脚本也具 有访问数据库和计算这两个功能,因而可以取代数据库访问程序和计算程序。Shell脚本也可 以用于代替终计算程序。
终计算程序中可以附加一个方法标志字段,来转换不同的计算方法。用不同方法标志值, 一个终计算程序可调用成千上万计算方法。程序中还可以附加一个表标志字段(“table_flag”),用于调用不同项目数据库表。程序中还可以附加一个组号码字段(“group_id”),将具有相同组号码的记录,标志成一个项目组,这样用户更容易选择计算项目。
如果可执行终计算程序只用以进行计算并返回结果,那么结果名称、结果单位、变量名 称、变量单位等制表数据就不需要输入终程序。但是,常数和用户提交数据是必要的。在JSP 程序需要用制单数据来产生数据输入表。如果可执行终计算程序用来生成完整结果页面,那 么所有需要的变量名称、变量单位、结果名称、结果单位、用途说明等制表数据都必须传入 可执行终程序。在它创建完整的网页之前,终计算程序还需要用户提交数据和从记录来的计 算数据,用来完成最后计算。
可执行终计算程序可以是Servlet、JavaBean、shell、CGI Perl,或者CGI C程序。这些 计算程序能够接受命令行参数,查询字符串(名称-值对),页面隐藏的名称-值对及会话对 象的变量和数值。
记录号码不总是必要的。网页表可以通过其它字段或字段组合找到记录,这样,字段组 合就相当于唯一记录号码。网页页面中还包含其它能够改进表形式的数据。组号码也可用于 跟踪记录。
还有一种执行方案,就是服务器在生成数据输入表前后,从数据库记录中检索出所 有的项目数据,把所获得数据以隐藏名称一值对嵌入网页表。用户输入变量值,并将计算数 据提交给服务器后,服务器不需访问数据库,但可以从提交表获得所需计算数据。这个实施 方案的优点在于减少对数据库的访问,然而,如果计算项目涉及到选择几个度量衡单位,这 个方案就不是很有效。
另一个实施方法就是把JSP程序作为一个中转程序。当它接收到来自用户数据,获取数据 值,接着将所有数据包括记录号码在内,都传给可执行终计算程序,这个终程序给客户返回 一个完整页面。
如果访问项目数据这一步也由JavaBean程序实现,所有的用户提交的数据如变量单位, 结果单位,和变量值都要传给这个终程序。终程序将用户所选择的变量单位和结果单位,找 到记录并获得计算数据,进行计算。如果访问项目数据这一步是由一个独立程序进行的,则 用户提交数据和记录号码都必须传给这个独立程序,以供其找到计算记录。
D.使用后台多种计算程序
1.调用Linux操作系统下的Shell可执行终计算程序(“终程序”)
如果这个终计算程序在Linux系统下具有可查找路径比如/usr/local/bin,那么计算系统 可以用这个终程序。这样的终程序要用命令行处理器来调用。在调用一个终计算程序时,JSP 程序必须知道这个终程序路径和名称。命令行处理器用下列代码将整个命令及参数传给终程序:
在200行,程序创建一个带程序名的字符串命令行。“Computing_program”是终程序 名,表标志用来找计算记录的数据表。这个终程序有检索常数1和常数2的功能。程序在210 行运行命令处理器,调用终程序。终程序开始运行,它首先根据实际空格对命令参数进行分 析。调用命令参数顺序是:命令行的前6个参数“method_flag table_flag group_iddescription result_unit variable_unit”大致相同,命令行后面紧跟用户提交数据。如果变量 个数更多,变量个数和结果个数就要用在参数中(而不需包括用途说明)。因为命令参数排 列顺序已定,终程序可以用变量个数和结果个数,确定变量单位和变量值的位置。在用户提 交数据后,再从相关记录中获取相关常数值。终程序利用用户提交数据和所有计算所需数据 进行运算。
因为用户可能在输入表中选择不同的变量单位和结果单位,变量单位和结果单位都属于 用户提交数据。如果一个项目支持多个不同的单位,这个项目就会有多个不同的数据记录。 这些记录再由唯一组号码关联成一个组。用户选择一组变量单位和结果单位后,服务器就会 找到唯一相关记录进行计算。用户如果选择不同的组的变量单位和结果单位,服务器又会找 到另一相关记录进行计算。
程序在220行返回结果,在230行返回错误信息。计算完成后,程序会依如下命令发出结果:request.setAttribute(″result_value″,result);request.getRequest-Dispatcher(parameterStr).Forward(request,response),把相应的计算结果显示在 结果数据框中。
这个终程序(“终程序”)可以只返还结果或者完整结果网页。如果程序返回的整个网 页包含计算结果,JSP程序只需要将整个网页转发送给浏览器。相反地,如果这个终程序只是 将浮点值结果返回,JSP程序就必须用这个结果去创建网页。这个JSP程序也可发送给另外一 个lSP程序生成网页。
如果数据是向量或矩阵,而终计算程序接受命令行参数,需要对数据处理。如果多个数 字字符串的值作为命令行参数被传给终计算程序,每个单独的数据组必须打包成不留空格的 格式。例如三个数据点(11,22,33)要被打包成″11%XX22%XX33”,只要填入的%XX是唯 一字符串,并且不作其它用。另外,换行符号可用独特字符串如“%##”。按照这个方式, “11%XX22%##33%XX44”实际上就是一个2*2数据矩阵。终计算程序用相同方式返回多 个数据点,如双精度向量(3.122.3234.5)。
另外,终计算程序可由一个例行程序执行,这个例行程序可以认定换行字符,并确定数据列的个数。由于这两种填充字符串都是唯一的,程序能够通过数这些填充数字符,并找出数据点总数,将其转换成双精度变量值,并将变量值赋予矩阵变量。计算出结果以后,终计算程序将结果单独返回到JSP程序,或者将结果连同制表数据如变量名称,变量单位,使用说明一同返回。换行标志,空格标志都可以在浏览器上显示之前被通用字符替换。结果页面上的文本区域显示向量或矩阵数据。
编译过的可执行程序的一个优点就是能够将多种通用计算算法编入一个程序。方法标志 的不同值会指引程序使用不同代码,就像Linux系统下Shell程序中使用的命令行切换一样。 一个终计算程序可通过使用方法标志,支持很多计算方法。计算系统还可用多种语言(比如 用Shell脚本、编译的可执行程序、Perl、BASIC、Java Servlet、JavaBean)的程序。一些计 算方法会被数以百万计的数据库记录使用。因而,这个计算系统用来解决大量计算应用问题。
计算能力还可以通过使用不同数据源得到扩展,数据源用source_flag标示,这个标示可以添加到线性函数项目表中,它指示程序使用相应的计算所需数据。数据源有多个选 择,用户可以选择其中之一。这在需要实时商业数据如货币兑换率和利率时尤其有用。
可执行程序的一个优点是它能够动态生成所有的网页。实际上,写一个能够执行所有任 务的C程序是很容易的:生成第一个页面包含搜索框;生成搜索查询的相关链接;搜索数据 库记录,从数据库记录中检索项目数据,显示数据输入表;接收用户提交数据,访问数据库 检索项目数据,将结果呈现给用户。如果程序在检索项目数据或在创建数据输入表时,将计 算数据保存在会话对象中或将其嵌入送给客户的页面,那么可以省掉一轮甚至多轮数据库访 问。
2.用Java Servlet程序计算
另一个实例是用Java Servlet“Linear Equation”进行计算。在这个例子中,unit_flag被 用作group_id的值。数据输入表提交后,服务器调用Linear Equation。Linear Equation首先 用request.getParameter()statements获取组号码、用户输入数据、变量单位、结果名称、结 果单位的值,接下来启动数据连接对象(webdb),访问数据库记录,并通过组号码、变量 单位、结果单位匹配并找到记录,再从记录中检索到常数1的值、常数2的值,再由用户提 交变量值、检索到常数1和常数2值进行计算,接着它将结果返还给result.jsp,创建一个网 页。这个实施例并不是最灵活的,因为计算的算法都在servlet里面,而servlet又同时执行访 问数据库的职能。
项目数据可以在任意Java servlet程序、JSP程序、和客户机上页面之间传送。记录号码、用户提交数据、项目数据可通过下述几种方法传递:(1)request.setAttribute 和<%=request.getAttribute(″result_name″)%>;(2)用一个redirect和一个 query_string将名称-值对传给一个JSP程序显示结果页;(3)用会话对象传数值(session.setAttribute(″result_name″,result_name和 session.getAttribute(″result_name″);(4)将JavaBean声明为request的一个参数; (5)将Bean保存在会话对象中;(6)用隐藏的名称-值对(name_value pair)把数据嵌入 表。没有必要将所有的数据都传给客户浏览器,除非显示页面的时候需要用到数据。
3.将JavaBean作为一个独立计算程序
在计算系统的实施例中,数据输入表可以调用一个linearEquation.jsp程序。这JSP程序程序首先获得记录号码和组号码、用户选择的所有变量单位。由于记录是唯一的,就 不需跟踪计算项目输入表中的其它信息,比如使用说明、变量名称、结果名称。JSP程序得到 这些值后,它调用一个JavaBean程序访问数据库表,找到记录并检索所需要的常数。如果 信息不是保存在页面隐藏字段中,JavaBean程序获取数据库记录中的一些附加信息如计算说 明,它接下来将计算结果返回给JSP程序。
4.用CGI程序计算
计算系统可以用一个或多个CGI C/C++程序,结合数据库应用软件来实现。在几乎所有版 本的Tomcat中,都允许使用一个cgi-bin文件夹。一个CGI程序可以通过两种方式创建和编 译。这个程序可以用传统方法编译,用int main(argc,argv[]),它可接受一定数量参数(存放在 argv[]中)。一个复合参数能够被传递给CGI程序。结果可以在它的标准输出中找到。另外, argv[0]用于接受程序名,而argv[1]用于接受名称-值对。所以,多个数据点都可以传给CGI程 序。
另一种方式就是用CGI库编译CGI程序,例如Thomas Boutell发表的cgic库。如果使用 这个库,cgimain()就用来代替main(argc,argv[])。这样的库使用户能够在查询字符串或者标 准输入中轻易获取名称-值对的值。在这种情况下,程序名和参数只能以名称-值对,用查询字 符串形式传递。
由于CGI程序能够在JSP容器例如Tomcat下直接运行,上面所述的可执行程序的方法同 样适用。JSP程序接收用户提交数据,从查询字符串或标准输入中获取记录号码,用记录号码 访问数据库记录,得到计算数据如常数1和常数2,接下来创建一个调用字符串,调用CGI计 算程序。如果CGI程序接受命令行参数,命令行处理器包就可以在Tomcat下使用,这样JSP 程序就能够调用这样的程序,获得计算结果。
CGI程序可以被产生数据输入表的指令直接调用。该程序从提交的数据录入表,获取嵌入 数据如组号码和记录号码,用这些数据找到记录,并从记录中检索到计算数据。结果计算出 来后,结果被分派一个字符串值,接下来,该程序将结果返还给同一个form_maker.jsp程序 显示。如果JSP容器不能运行CGI,CGI可以设计成一个能够生成完整数据输入表,显示最后 结果。
无论要用哪种方法执行,生成这四个页面的代码都是很明确。如果用C页面,它只需用 一系列的打印(printf)命令将用于生成网页的HTML代码打出来,用一些API工具去访问数 据库。具体还取决于数据库应用程序。如果将Perl脚本用作CGI程序,程序用一系列打印命 令将网页表显示出来。
如果计算系统在JSP容器例如Tomcat下直接运行,系统可用以下的java代码调用多种终 计算程序。
计算系统可以把各种现有的计算程序利用起来。如果将关于计算程序名称,所有计算方 法的方法标志提供给用户,用户就可以添加新的计算项目。另外,系统还提供数学方程式的 图,显示所有常数、变量、位置。从这个图,用户就可以清楚知道哪个常数要分派哪个值, 变量在项目记录里位置。项目记录里的变量位置和数据输入表中的变量输入顺序是一样的。
E.C和CGI的计算系统
计算系统的整个程序都可以用CGI C或者Perl来写。因此,大量现有C程序如数值方法 算法都可以直接用于计算。
服务器有四个CGI程序实现如上所述的功能。第一程序被调用后,它会生成一个和图1 相似的搜索框。用户输入一个或多个搜索关键词,并将表提交给服务器上的第二程序,第二 程序接收数字字符串,取出值,再用关键词完成对数据库表的搜索。它找到记录后,用用途 说明字段数据和记录号码创建一个类似图2链接。用户点击链接,浏览器访问第三程序,建 立和图3类似的数据输入表。第三程序通过记录号码找到数据库记录,再从数据库记录中检 索到特定项目记录,将数据输入表显示出来。这时用户输入数据,并将表提交给第四程序。 第四程序接收用户提交数据和隐藏字段中的记录号码,并用这些数据检索出计算数据,如常 数1和常数2,最后将结果计算出来。第四程序创立一个页面,页面中包含用途说明和结果, 它再将与图4类似页面返还给客户计算机的浏览器。同样地,计算数据可以作为隐藏数据, 嵌入数据输入表。
所有这四个CGI程序都可以合成一个程序。这个程序必须跟踪用户的状态或者知道网页 的顺序。用户状态数据可以保存在系统内存中的结构化或向量数据里(像会话对象)。为使 程序功能协调,也可加入一个页码阶段指示,以跟踪计算所处的阶段。页码阶段指示作为运 行特定部分代码的信号。任一系列的表都可以隐藏页码指示。程序生成默认搜索框的时候, 页码指示值为“1”。如果程序接收到一个表并且找到页码显示值“1”,它就会生成一个 带有隐藏页码指示的链接页,并用页码指示“2”;当程序接收到一个提交页面并且得到页码 指示值“2”,程序就会执行显示数据输入表代码,表上的隐藏字段中的页码指示值为 “3”;如果程序接收到页码指示值为“3”的页面,它执行运算并返回最后结果,这时隐 藏字段中的页码指示为“4”。这个程序还必须跟踪每一个用户活动及他们的URL,它必须在同一个用户开始新搜索时,将页码指示重新设置为“1”。这个方法也可以用在Perl程序。
F.处理多个单位换算的方法
数学中的很多数量,例如长度和压强都有好几个度量单位。不同的人用不同压强单位, 比如磅/平方英寸,气压,英寸汞柱,毫米汞柱,英尺水柱等。上述方法可以完成这些单位 的转化,但是使用起来不方便,因为在一个搜索结果页上会生成很多链接。如果一个变量有 四个单位,那它就可能有12对转化,这需要12条项目记录。
一个好的方案是,系统只显示一个链接,直接调用计算项目输入表,让用户自行选择单 位。参见图3,图6,多个单位可以在数据输入表的下拉框菜单7,9。图6中的最大单位是“公里”,最小单位是“毫米”。这个表可供用户选择初始单位和最后单位。如果用户想更 换一个单位,他只要将单位更改即可。以下三个例子,显示单位换算方法.
表3.压力的三个单位换算部分记录
单位换算大多数遵循线性函数Y=a*x+b的解法,x和y都是压力,只是他们的单位不同 (在程序代码中result_value也可以叫做result_label)。很多计算应用程序中都有相近数量 的名称、单位和说明。
表1中的记录数包含所有转化可能的单位换算。3个单位间的转化有6种转化可能:A- >B,A->C,B->A,B->C,C->A,C->B,其余三个单位转换的数据记录可以此类推。而对于4个单 位间的转化,就应该有12种转化方法。
1.搜索数据库并建立链接
使用计算系统,用户首先要用搜索表进行搜索,找到所有的与关键词匹配的记录。而决 定记录是否与关键词匹配的规则有好几个。本系统用的搜索方法中,最重要的就是利用用户 提交的关键词在数据库表所有记录搜索search_key1字段值。假设用户输入的是“温度”,而 有一条记录第一字段也含有“温度”,那么这条记录就与关键词匹配。如果没有记录第一字 段与用户提交的搜索关键词匹配,它就搜索表中所有记录的第二个搜索字段(search_key2) 值,并建立起相关链接。搜索不需要完全匹配。用户也可以用图8所示的高级搜索工具进行 搜索,用户可点击按钮10B“点击查看更多变量”调整搜索工具变量个数。用户在多个搜索 框中输入数量或者计算的变量,以及所有的变量名。服务器搜索这些关键词,并只将那些包 含所有搜索关键词的记录返回。
2.建立搜索相关链接
如果进行搜索的程序找到了关键词“压力”,它用组号码和方法标志值,创建相关链接。 组号码用于定义那些属于某一特定组的记录。如果一个组中的一些记录在用途说明字段中有 一个值,而另外记录在用途说明字段中有个不同的值,那么所创建的链接会将两个用途说明 值联在一起,用“/”分开。在图2显示的第一个链接,这个链接是用下列规则创建的: (a)只有一条记录中含有组号码的唯一值,链接的查询字符串包含用途说明和记录号码; (b)如果多个记录都含有同一个组号码值,并且记录含有不同的用途说明,那么用途说明和 组号码作为查询字符串内容,来创建相关链接;(c)如果多个记录都含有同一个组号码值, 并且这些记录中的一些含有用途说明而另一些记录有不同用途说明,那么要将所有用途说明 值放在一起,用“/”分开,并且不得重复,形成一个查询字符串。
以计算压力为例,程序找到所有记录,其组号码为20,共有6个记录。而这个程序只需 显示出一个匹配的链接,如果还有别的链接,也要将其放入匹配链接中。最后生成的链接只 包含组号码和用途说明值。
3.创建数据输入表
如果用户点击的是带有隐藏组号码的链接,服务器会利用组号码和用途说明检索到所有 的项目记录。表按下列规则创建:
(a)制作数据输入表的方法
如果组号码内的所有记录都含有相同的用途说明(use_description),变量个数(variable_no)和方法标志,那么这个组号码,只生成一个数据输入表;如果这些记录又带有不同单位,就用这些单位放在变量单位和结果单位框的菜单。具体以下列两个例子说明。
第一个例是创建压力单位换算的数据输入表。制表程序创建一个单个的数据输入表,用 户点击相关链接,服务器从所调用的查询字符串(“form_maker.jsp?group_id=20”)中读 出组号码20和用途说明值。服务器进行搜索,找到同一组号码内的所有记录,用变量单位字 段,找出记录21-26的单位值。这样,服务器就得到了A,A,B,B,C,C这6个单位。去 掉重复的,服务器保留下A,B,C三个单位。这些单位值要用作变量和结果两个单位下拉框 的列表。变量名称(“压力”)和结果名称(“压力”)是数据输入表中的变量和结果。
由于变量单位下拉框中的单位可以和任意一个结果值组合在一起,数据库表就必须包括 所有记录的配套单位组合。例如,项目有4个单位,那么总共就可以有12种转化。N个变量 单位中的每一个可以被转化成(N-1)个单位,所以总数就是N*(N-1)=12。
第二个实施例显示如何创建多个数据输入表。计算项目是长度单位间的转化。变量单位 和结果单位都使用下拉框。用途说明用于定义两个子组。记录40至47都属于同一个组,但 是记录40,41,42和43的用途说明是相同的,而与记录44,45,46和47的用途说明不同。 这两个子组拥可以有不同项目记录数。
表4.一个有两个子组的数据组
一个子组.用途说明:把长度从英制单位转换为国际单位
另个子组:用途说明:把长度从国际单位转换为英制单位
如果用组号码、用途说明、变量个数进行搜索,找到N个记录,制表程序 (form_maker)就需要生成N个输入表。但多个数据输入表可以绑在一起。通过用相同组号 码值、不同的用途说明和不同的变量数量,给多个相关的计算数据记录创建一个链接页面、 多个数据输入表。如图7所示,数据输入表有表13和表14构成。
(b)生成可进行连续单位换算的数据输入表
连续单位换算是一种比较特别的计算项目。例如,长度单位有公里,米,厘米,毫米和 微米,其进率分别是C1,C2,C3和C4,任一长度值乘以一个相应的常数Ci后都可以换算成较小单位的长度值。公里乘以全部进率常数直接转化成微米。如果使用普通数据输入表,那么每个单位换算都需要有一条相应的记录,由于N个单位中的任何一个单位,都可以被转化成剩余的(N-1)个单位,服务器就需要大量的项目记录。利用连续换算原则进行计算 (1051方法表)可以减少项目记录。
如果将项目记录按从最大单位到最小单位创建,并且每两个相邻单位间进率不同,那么 整个变量单位数就是总的转化数再加1。因此,数据输入表的单位是所有的变量单位加上最小 的结果单位,或者最大的变量单位加上所有的结果单位。在变量单位框和结果单位框中一共 有5个单位。
表5.一个涉及连续的单元转换项目
为了使用户在这个范围内能够选择任意的变量-结果单位,这5个单位必须从制表程序 中获得。这5个单位间的任意转化方法很清楚。也可以将转化方向倒过来,也可以计算。
如果制表程序(form_maker)找到一个组的方法标志是“1051”,程序获得所有的变量 单位和最小的结果单位,或者它得到所有的结果单位和最大的变量单位,并创建数据输入表。 在另外情况下,制表程序获得所有变量单位放在变量单位下拉框,获得所有结果单位并放在 结果单位下拉框中。图6显示1051单位转化的数据输入表。进行换算时,用户可在变量单位 框7中,结果单位框9中,选不同单位。
实际上创建数据输入表的方法还有很多。如果每个单位计算所需的记录都存在,程 序就按照默认规则只将变量单位和结果单位取出。组号码值是否是唯一值,接影响到服务器 检索项目数据的方式。优化实例中组号码是唯一的,不能用于不属于组的记录。
由于变量名称和结果名称都是计算项目中的通用变量,因此没有必要将其含括在项 目记录中。程序可以使用合适的名称将其体现出来。然而,在创建数据输入表和结果页的时 候,他们还是很有用。几个名称要用特别词如“温度”或“压力”拼写出来。如图6所示,变量名称6和结果名称8在高级搜索中作为搜索字段使用。
在数据输入表上,用户可以在单位框中选择任意变量单位和结果单位,但是他们有时会 将变量单位和结果单位误选为同一单位,这样的转化没有意义。网页脚本检查单位值以确保 用户选择了正确单位,并发出警告以防止用户选择两个一样的单位。
(c)生成特殊的数据输入表
这个数据输入表能够为大多数的计算项目收集数据,但是不能用于收集代数和统计的数 据,也不能将结果呈现出来。因此,计算系统用一个特殊的数据库表存放特殊项目数据。这 个表是针对多个数组而设计的,还支持多个返回的数组。
图10显示解线性方程用数据输入表。创建这个表的项目有两个变量名称15:矩阵数据和向量数据,每个都对应一个网页的文本区。数据输入表有三个结果的文本区17,其中的一个文本区域接受原始矩阵,一个接受行排列式,另外一个显示方程的解。用户在表输入3*3的矩阵数据(1,-1,2;1,-2,-1;3,-1,15/3)和一个向量 (1,2,3),系统回还原始矩阵,行排列方式(5,5,5)和方程解(1.4286,-0.1429, -0.2857)。变量单位16、结果单位18无意义。
这个项目数据表包含一些附加的字段,例如变量个数,和结果个数(result_no)。每个变量数组都被看成是一个数字字符串,并在网页有一个相应的文本区域。如果一个计算 项目有N个变量,所制表中就有N个对应的变量文本区域。如果结果个数是M,所制表有M个结果文本区域。制表程序将大量数据填入一个文本区域时,程序创建一个足以接受数据的 文本区域。这个数据格式使程序知道数据点数,可通过计数空格和回车符,推出行列栏数。
另一个例子就是在统计项目中决定两个变量是否在很大程度上不同。统计中的变量和计 算系统变量是完全不同的。图11所示,计算项目记录指引制表程序创建两个变量文本区域 15。这个系统接受由空格、tab、分号等分隔的数据。因为在进行计算之前,对数据进行分析, 而且删除多余的空格。所有单位都可被定义成无关,在数据输入表中也显示为“NA”。
如果终计算程序是一个能够接受命令行参数的可执行程序,在前面提的数据处理方式用 来输入数据。用户数据输入表填输入数据(包括向量和矩阵),并将数据输入表提交给服务 器,服务器获得数据,将数据处理后调用终计算程序。终计算程序再对数据进行解析,并得 到所有数据点的值,再根据方法标志和所得到的值,用相关联的函数进行运算。终计算程序 获得计算结果,用同样方式对数据进行处理,并以要求的精度把结果17(向量和矩阵)返回 给创建数据输入表的程序。终计算程序用相同方式返回多个数据点。在结果数据被发送给浏 览器之前,那些填入的空格和换行标志都分别被空格和换行符号取代。这个项目数据表和特 殊表可以用于计算正态分布、t-分布、F-分布、统计分析、解线性方程、微积分等计算问题。
4.进行单变量计算
计算系统的实例支持项目分组,终计算程序首先用同一个组号码值获取所有记录,并得 到所有用户提交数据如压力值、变量单位、结果单位。终计算程序再找到唯一的具有相同组 号码、相同变量单位、相同结果单位的记录号码。终计算程序还得到方法标志值,依如下规 则进行:
(a)默认规则是程序将用户选择的变量单位和结果单位,与组号码内每条记录的值进行 比较。一条计算记录必须包含用户选择的变量单位和结果单位。如果与用户选择的单位匹配 记录不存在,计算将无法进行。记录找到后,服务器得到计算数据(常数值)并用计算数据 和变量值进行最后计算。这个方法在包含多个子组记录的组也同样适用,那些子记录都是按 照不同用途说明产生的。
(b)如项目有多个子组,用户可对从一个单位系统转化到另一个单位系统,当然不一定 包括任意单位间的转化。在前面计算长度实例,系统用可进行双向单位换算的特殊数据输入 表。图5,显示相关链接3,图6显示它的数据输入表。计算所需记录总数就是变量单位数和 结果单位数的简单乘积。如果所有记录都存在,用户可以在下拉菜单中找到任意的变量单位 和结果单位。如果表中没有特定一对单位的记录,系统就不能计算,给用户发一条错误信息。
(c)计算系统可用1051计算方法,进行单位连续转化。表6中所举的例子有5个单位: 公里,米,厘米,毫米,微米。用户用一个数据输入表,在任意两个单位间进行换算。这个项目实例共有5X4可能换算。将终程序设计成能够进行所有可能的单位换算。将长度从公里转化成第N个单位,结果可以通过连乘N个常数得到。例如,以千米做单位的长度*C1*C2=以厘米做单位的长度。反过来,要从最小的单位换算成最大的单位,结果就要用原始长度连续除以常数。终计算程序要用方法标志1051调用。
(d)控制计算精度和显示格式可通过添加字段实现。添加一个新的精度“sig_digit”字 段,指导终计算程序用所需的精度进行计算。这在所有的数据库表中都可以实施,每个项目 创造者都可以决定结果将保留小数点后几位。多个精确数字要编成一个字符串如(8,4: 12,2),这个字符串意味着第一个结果数有8个字符,其中小数点后有4位,而第二个结果 数有12个字符,小数点后有两位。这样终计算程序知道每个返回结果的精度和显示格式。精 度也可以用方法标志控制。例如,用方法标志1050计算方法计算线性函数返回小数点后6个 数字,而方法标志为“1049”计算方法返回到小数点后两位。
对于一个简单的单位转化,服务器生成数据输入表时,得到所有常数并将其作为隐藏数 据嵌在表上。用户输入数据并将数据输入表提交,服务器就不需要再访问数据库而可以直接 进行计算。这样,计算系统避免第二次访问数据库。
还有多重使用组号码方法。例如,组可以定为从第一个记录到最后一个记录的记录总数。 这样就可能排除同一个数据库表里重复组号码。因此,“8”指的就是接下去的7条记录都是 属于同一组的。第一条记录的记录号码是40,那么记录40,41,42,43,44,45,46,47 都属于同一组。
如图4所示,所有的数据输入表都允许用户进行重复计算。因此,先前的保留单位,结 果单位和其它用户数据都作为默认值显示在相应的框中,计算结果显示在只读的输入框。这 个表还包含所有其它所需的隐藏变量如记录号码和组号码。用户修改单位或者修改变量值, 就可以再计算。
G.含有两个和多变量的项目计算
将这个方法扩展到多个变量的情况下一点都不复杂。唯一需要改变的就是数据库表字段 的数量。计算函数Y=f(X1,X2),有一系列常数C1,C2,...,Cn。函数有很多不同实际函 数。
一个实施两个变量的数据表结构,有两个变量名称、两个变量单位、四个常数、一个结 果名称、一个结果单位,其他字段和单一变量数据表结构相同。这个数据库表类似实施例中 的线性函数数据表。所生成的数据输入表,以供用户输入X1和X2的值和相应单位。像这种 含有多组常数的计算项目也可以用前面提到的多个单位转换方法实现。用户界面上的计算操 作直观而简单。还是利用数据输入表,把结果显示在一个新的数据输入表上,这样用户就可 以更改数值和单位,输入数据以后再将表重新提交给服务器进行重新计算。这里有两点不同 单变量线性函数算法不够用。因此,计算项目需要能够接受两个变量并含有非线性函数的算 法的终计算程序。另外一个区别是这个数据输入表有两个变量输入框和两个变量单位下拉框。
表6.两变量项目的记录实例
编写常用计算函数的代码在大多数情况下很容易。有些甚至只要修改现有计算程序代码 即可。多个常用计算函数方法可以放入一个程序中。这些计算函数编入同一个程序后,用不 同的方法标志值来调用。每种算法方法都需要检验变量有效取值范围,比如0不能做分母, 而log(X)中X不能为负数。这些限制应该很明显,用户应该知道变量在理论和实际中的限制条 件。
假设系统用通用函数Y=f(X1,X2,...,Xn)有常数C1,C2,...,Cm。计算系统通过步骤来实现:
创建一个数据库表,表中有多个常数C1,C2,...Cm,将常数值添加计算项目记录中, 在第一个第二个搜索字段,添加说明单词或短语,将变量名称添加到变量名称字段,加完为 止,将变量单位添加到变量单位字段,加完为止。
创建可以生成第一个搜索框、搜索链接页、数据输入表、结果页的程序。针对变量X1,X2,...,Xn的数据输入表。输入表和图9显示的类似,只是它包含不同或更多变量输入框11和单位下拉框7,可包含更多结果显示框12和结果单位下拉框9。如果一个或多个变量需要用不同单位,那么就需要用组号码将其标识为一组。系统最好能够包含一个可以选择单 位下拉框。最好用一个单独的JavaBean完成寻找应用程序记录和检索项目数据的功能。
在项目的计算程序字段中添加终计算程序名。如果这个程序中有多个计算方法,那 么要将方法标志值添加到项目的记录中。或者,系统用上述的JavaBean命令行处理器,调 用终程序和其它可执行程序。
重新生成结果页是一个更新过的数据输入表。它在结果框中显示前一个计算结果。所有 的输入框由用户填充数据,在下单位拉框中选择单位,允许用户重复计算。
尽管这四个界面几近相同,计算系统有些不同。首先,计算系统中有大量的变量和常数。 系统创建了多个数据库表,系统需要用变量数量和常数数量,来确定该用的数据库表。只有 在项目数据不适合小项目数据表的情况下,才将项目数据写入一个较大数据库表或这个通用 表。其次,终计算程序必须能够接受更多变量值或参数。再次,多单位换算方法同样适用于 生成多个应用程序记录。存储项目数据所需的记录总数就是所有变量和结果单位组合的数量 这个规则和多单位换算有一点不同,因为相同单位之间不需换算。
H.用不同计算方法
如果一个程序是用来应付多个计算项目,那么方法标志字段是必须的。表中方法标 志值是根据变量数量而定的。对于那些只涉及到一个变量的计算程序,方法标志值定在1000 到1999之间;两个变量方法标志值为2000到2999;三个变量的方法标志值为3000到3999。方法标志值可以用50或其它合适的数作为间隔,以便容许插入更多方法标志值,用于调用特殊计算方法。不同的标志范围分配可以达到相同目的。
表7.显示计算程序和方法标志表
表中的程序是终计算程序名称。有很多计算单变量的方法。单位换算只是数学中线 性函数的一种特殊形式。方法标志1050是用于多个单位换算的实例。而1051需要用特殊数据录入方法和算法,生成特殊的数据输入表,调用特殊多单位转换计算程序。不属于任何线性单位换算的方法标志为1000。如果一个项目记录是单一的,数据输入表上就不必要出现 下拉框,而只要依照算法产生即可。即使这个程序产生下拉框,也没有可选内容。一些不能 用线性函数完成的单位换算可以由另外合适的数学函数完成。
通过使用不同的方法标志值,调用不同的计算方法,成千上万计算方法都可以编译到一 个或多个程序里。终计算程序得到变量和常数,用方法标志来调用相应计算方法。程序用用 户提交的变量值并获得常数。如果被调用的计算方法不需某些常数和变量,它们可以被忽略 掉。
日常计算用的数据都可以存储在一个数据库表中。大量计算方法或算法可以编为一 个或多个程序。计算系统只需要一定数量、可重复使用的数据输入表,供大量计算项目使用 要添加一个新计算项目,要做的就是在数据库表中添加一条记录。
1.不同程序的协作
计算系统的一个优化实例是计算项目列表,用菜单格式显示,以取代搜索页面。所有项目链接都是相似的。可用菜单列表方式显示。这个页面包括主菜单,次菜单,记录号码含有用途说明的链接。为支持生成计算项目列表,每条项目的数据记录包含主分类和子分类 图12中的计算项目列表是用含主分类23和子分类24生成的。用户点击一个主分类,服务器得到分类号和记录号码,搜索并获得分类号下记录的号码。链接是用同样的方式创建。计算项目列表还有一个计算器。用户可以通过搜索“计算器”,或者在查看项目页面上点击初等数学链接来调用这计算器。计算器也可处理文本区域内任意的数学表达式。系统中还具有 针对孩子而设计的初级计算功能,显示简单计算的数字操作图。
计算系统的另一个优化实例是创建线性函数数据表、中级函数数据表 (middle_matrix)、复杂函数数据表(large_matrix)、特别函数数据表 (special_matrix)。他们的变量数量/常数数量/结果个数的比例分别是(1/2/1)、(4/8/1)、 (8/12/1)、(8/8/15)。这四个表的表标志分别为0,1,2,3。特殊数据表用于产生特殊表, 主要用于涉及数组的计算项目。
系统不同组件必须协同运行。用户进行搜索,系统根据用户选择的搜索方法搜索数据库 中的表。如果没有发现项目记录,系统就返回。如果找到项目记录,生成相关链接。用户可 以直接选择相关链接。接下来,服务器确定表标志值是否为3。如果表标志值是3,服务器确 定程序是否要调用初级程序作特别计算。如果要调用是初级程序,服务器就将初等数学的特 殊数据输入表显示出来。如果项目不调用初级程序,系统在下步调用特殊表生成程序,生成 一个特殊数据输入表。如果服务器发现表标志值不是3,用常规表生成程序,生成一个常规数 据输入表。无论用特殊计算数据表或一般的录入表,用户输入数据,并选择变量单位和结果 单位,点击计算按钮进行计算。如果用户输入数据出错,客户机提示用户修改数据,并再次 提交表进行计算。计算项目成功提交后,系统完成计算任务,将结果值写入新创的数据输入 表,再将表返回给用户,并显示计算结果。用户可以重新输入数据进行再计算。如果用户不 需要再计算,可以开始新搜索或停止使用计算系统。
进行最后计算的时候,服务器通常要用到方法标志和终计算程序,方法标志和终计算程 序都是在项目记录中定好的,调用不同计算程序和计算方法。
J.开放计算系统项目上传
参见图13,用户可以给计算系统上传计算项目,只要所需的计算方法在系统中存在, 用户的任务是在相应的数据库表中添加一条计算项目的记录。
要上传项目,用户首先要注册一个用户账户,然后打开项目上传的页面,输入创建项目所需的数据。在这个页面,如果用户需要用一个更多变量的上送表,点击图预的“更多的变量”,打开一个对话页面。用户输入需要变量及常数个数,计算系统打开一个合适的项目上传页面。程序自行决定要输入的数据库表。用户点击按钮29“请选择”查看方法标志和终计算程序表,计算系统弹出页面,显示一个如表7所示的计算方法表,显示数学函数和方法标志及计算方法间的关系,这样用户可获取正确的程序名称和方法标志。计算方法表可用 互选按钮来选择计算方法,那么程序名和方法值是隐藏的。用户选择合适按钮,弹出页面将 与按钮相关的程序名称和方法标志值传给上送页面。用户不需输入方法标志值,看见计算公 式25公式类别26。在图13,用户提供分类号27,计算常数28,和其它所示的数据。
为使数据库管理更简单,记录号码最好由数据库应用软件自动生成。如果一个计算 应用项目只有一条记录,那么它的组号码可是无或0(除非在前面讲过的实例中将第一个记录 号码作为组号码)。如果这个项目包含多条记录,服务器最好先获取第一条记录号码,并将 其写入每个组记录的组号码字段。每个组号码是唯一的,多记录可用相同的组号码,现有的 记录组可添加更多记录。
计算系统不可能包含所有计算方法满足广大用户的需求。因此,这就需要提供一种允许 用户上传终计算程序代码的机制,让用户提供自己的终计算程序。上传计算程序有两种方式: 一种是将用编译语言写成的程序载入一个特殊的文件夹,程序调用语言解释器。
如果用户上传的是C/C++程序,用户在一个指定文件夹中将代码编译成可执行程序。 这就要求有文件上传功能和调用程序编译程序能力。最好在一个临时文件夹中安装一个Make 模块。通过远程上送表修改用户源文件名,根据库名,选择自己需要的库。最后,用户在上 送原代码页面上,用一个命令调用Make编译程序,并安装程序。
用户还可以上传一个关于如何使用计算项目的文件。上传计算项目后,服务器生成4个 链接。第一个链接可供用户上传另一个项目;第二个链接允许用户对刚刚上传的项目进行测 试。如果用户点击测试链接,服务器显示上传项目一个索引页。用户输入关键词“测试”, 搜索关于“测试”的记录并显示刚上传项目。用户点击和刚上传项目的链接3(如图14所 示)。点击刚上传项目链接,服务器显示数据输入表,用户可以输入数据进行测试计算。
在本发明的典范实施中,特定组件、硬件、安排、和进程用于描述本发明。精通艺术的 人可通过明显变异、修改和替换,来达到同一目的。典范实施只是示例,而不是限制发明范 围。本发明包括权利要求所定的和等效的范围。

Claims (10)

1.一个存储多个计算项目的网络计算系统包含:
服务器和至少一个客户机,所述的服务器和所述的至少一个客户机被连接到互联网上,该服务器至少包含:
计算项目存储装置,用于存储计算项目记录于项目数据表,每个项目记录包括搜索数据、生成表的数据、计算数据、调用算法方法的信息,生成表的数据包括至少一个变量名称、至少一个变量单位、至少一个结果名称、可有可无结果单位;
计算项目搜索装置,用来搜索计算项目,并产生搜索结果的页面,搜索结果的页面包括与计算项目有关链接或按钮、或计算数据输入表;
数据输入表产生装置,用于产生项目的计算数据输入表,该表包括用途说明、至少一个变量值名称、至少一个变量值输入框、可有可无结果单位下拉可选框、提交按钮;
计算数据处理装置,用于从项目数据输入表获得变量值,从项目数据表获得计算数据,传递所获得的计算数据;
计算项目计算装置,用调用计算算法进行计算,并获得计算结果;
计算结果呈现装置,重新创建数据输入表,并将计算结果插入重新创建的数据输入表,并呈现含有计算结果的数据输入表。
2.权利要求1所述的网络计算系统,其特征在于,某些计算项目包括一组计算项目记录,它们至少有一个不同变量单位或一个不同结果单位,所述的数据输入表产生装置
把变量的所有变量单位放在所属的变量单位下拉可选框,把结果单位放在所属的结果单位下拉可选框。
3.权利要求1所述的网络计算系统,其特征在于,计算项目搜索装置拥有项目号码搜索、相关词搜索、或高级搜索功能。
4.权利要求1所述的网络计算系统,其特征在于,网络计算系统还包括一个用于生成计算项目的装置,用来上送计算项目记录,计算项目记录包括用途说明、计算常数、至少一个变量的名称、至少一个变量单位、至少一个结果名称、可有可无结果单位。
5.权利要求1所述的网络计算系统,其特征在于,计算系统使用不同的常数进行单位换算。
6.一个网络计算系统包含服务器和至少一个客户机,所述的服务器和所述的至少一个客户机被连接到互联网上,该服务器包含:
计算项目存储装置,把计算项目以项目记录存储在数据库表,每个项目记录包括搜索数据、表生成数据、计算数据、调用算法方法的信息,其生成表的数据包括用途说明、至少一个变量名称、至少一个变量单位、至少一个结果名称、可有可无结果单位;
计算项目搜索装置,用来搜索计算项目,并产生搜索结果的页面,搜索结果页面包括与计算项目有关链接或按钮、或计算数据输入表;
数据输入表产生装置,用于产生数据输入表,该表包括用途说明、至少一个变量值输入框、可有可无结果单位下拉选择框、提交按钮,变量输入框可接受算术表达式、向量数据、矩阵数据;
数据处理装置,用于从系统数据库表读取计算数据,从提交的数据输入表获得变量值,对获得变量值进行编码,并传递所获得的计算数据和已编码的变量值;
计算项目计算装置,包含各种数学计算算法,对用户提交的计算数据解码并获得变量值,用变量值和计算数据进行计算并获得计算结果,把计算结果数据进行编码;
计算结果呈现装置,把计算结果数据进行解码,重新创建数据输入表,并将计算结果插入重新创建的数据输入表,并呈现有计算结果的数据输入表。
7.权利要求6所述的网络计算系统,其特征在于,包括一个产生计算项目分类列表的装置,该装置用来创建按主要类别和次要类别排列的计算项目的链接列表,计算项目包括线性代数和统计问题。
8.一种为网络计算创建计算项目的方法包括以下步骤:
产生一个计算项目数据上送表,该上送表接受用途说明、产生数据输入表用的数据、计算数据;
产生计算方法表,所述的计算方法表显示数学函数或计算方法、调用相关计算方法的信息,所述的上送表显示与数学函数或计算方法对应的数据输入框,用以帮助用户选用终计算程序、或相关的计算方法、或相关计算程序及相关计算方法;
在计算上送表输入数据后,并将其提交给服务器;
从提交的计算项目上送表获得数据;
把获得的数据写入计算项目数据库表,所写的计算项目数据的变量、计算数据与所选用的计算程序的数学公式或计算方法使用的变量、计算数据正确对应。
9.权利要求8所述的创建计算项目的方法,其特征在于,包括用于测试新创建的计算项目的步骤,对刚上送的计算项目进行运行测试。
10.权利要求8所述的创建计算项目的方法,其特征在于,包括改变变量数目,以便为不同变量的计算项目生成上送表。
CN201310359081.XA 2012-08-12 2013-08-08 开放式网络计算系统 Active CN103577533B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261682298P 2012-08-12 2012-08-12
US61/682,298 2012-08-12

Publications (2)

Publication Number Publication Date
CN103577533A CN103577533A (zh) 2014-02-12
CN103577533B true CN103577533B (zh) 2019-01-25

Family

ID=50049309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310359081.XA Active CN103577533B (zh) 2012-08-12 2013-08-08 开放式网络计算系统

Country Status (1)

Country Link
CN (1) CN103577533B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108520068A (zh) * 2018-04-13 2018-09-11 卓易法智(上海)网络科技有限公司 用户报告生成方法、装置、存储介质和终端设备
CN113780992A (zh) * 2021-09-09 2021-12-10 广东电网有限责任公司 配电网运行储备库管理方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1755668A (zh) * 2004-09-30 2006-04-05 微软公司 对数据表格起作用的电子表格函数的设计

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7324968B2 (en) * 2002-03-25 2008-01-29 Paid, Inc. Method and system for improved online auction
US7685230B2 (en) * 2004-04-01 2010-03-23 Vaakya Technologies Private Limited System and method for program execution
US7716156B1 (en) * 2006-07-13 2010-05-11 United Services Automobile Association Systems and methods for sharing data from web accessed calculators
CN100483398C (zh) * 2007-05-25 2009-04-29 金蝶软件(中国)有限公司 一种电子数据表的计算方法和装置
CN102479083A (zh) * 2010-11-26 2012-05-30 英业达股份有限公司 结合单位换算的数值计算系统及其方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1755668A (zh) * 2004-09-30 2006-04-05 微软公司 对数据表格起作用的电子表格函数的设计

Also Published As

Publication number Publication date
CN103577533A (zh) 2014-02-12

Similar Documents

Publication Publication Date Title
Mount et al. Practical data science with R
Porter et al. Harmonization and translation of crop modeling data to ensure interoperability
CN101609460B (zh) 一种支持异构地学数据资源的检索方法及检索系统
CN106663224A (zh) 用于机器学习模型评估的交互式界面
CN106575246A (zh) 机器学习服务
Dai et al. Assessing the extent and impact of online data sharing in eddy covariance flux research
Bose et al. Composing lineage metadata with xml for custom satellite-derived data products
Soylu et al. TheyBuyForYou platform and knowledge graph: Expanding horizons in public procurement with open linked data
Semerikov et al. Automation of the Export Data from Open Journal Systems to the Russian Science Citation Index
US9977669B2 (en) Online computing system
Vermeulen Practical Data Science: A Guide to Building the Technology Stack for Turning Data Lakes into Business Assets
Mohan et al. A BigData approach for classification and prediction of student result using MapReduce
Boettiger et al. T reebase: an R package for discovery, access and manipulation of online phylogenies
Lopez-Rodriguez et al. Modeling scientometric indicators using a statistical data ontology
CN103577533B (zh) 开放式网络计算系统
Smelter et al. A Python library for FAIRer access and deposition to the Metabolomics Workbench Data Repository
Wintjen Practical Data Analysis Using Jupyter Notebook: Learn how to speak the language of data by extracting useful and actionable insights using Python
Correia et al. A workflow-based methodological framework for hybrid human-AI enabled scientometrics
McCarthy et al. Combining web and enterprise data for lightweight data mart construction
Necula et al. Tempo–an R package to access the TEMPO-Online database
Jusevičius Atvirojo kodo algebrinio modeliavimo ir matematinio optimizavimo sistemos kūrimas ir tyrimas
Voinov et al. Community-based software tools to support participatory modelling: a vision
El Mhouti et al. A Web Scraping Framework for Descriptive Analysis of Meteorological Big Data for Decision-Making Purposes
Sugumaran Insights into Advancements in Intelligent Information Technologies: Discoveries: Discoveries
Etuk et al. COPO: a metadata platform for brokering FAIR data in the life sciences

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant