專利名稱:自動計算數值的方法和裝置的制作方法
技術領域:
本發明涉及一種自動計算數值的方法和裝置。
技術背景
在軟件系統中,當最終用戶需要數學運算的時候,一般有如下一些方式可以選 擇
1、使用操作系統中自帶的計算器程序或類似的控件;
2、單獨使用Excel或類似軟件運算;
3、通過應用系統中支持的自定義公式功能進行表達式的定義,而后實現自動運算。
以上三種方案中,操作方式各不相同,但使用時都不夠方便和快捷,具體問題在 于
首先,計算器程序或類似控件中有三個不方便第一、無法方便的輸入復雜的表達 式,如1+2*3+4*5,在計算器軟件中,類似操作必須通過多次計算,并要手工保存一下中間計 算的結果,最后才能算出用戶所需的結果值;第二、看到結果的同時不能看到表達式本身, 我們常常看到,許多人在使用計算器的時候都需要多次輸入,這是因為用戶擔心自己輸入 有誤,所以要計算多次以便保障自己的輸入無誤;第三、無法方便的修改表達式,例如,如果 用戶輸入的是10個數字的和,但輸入到第九個數字的時候,發現第八個數字輸入錯誤了, 用戶就不得不重新開始運算一次,而不能把中間輸錯的數字改對。
其次,選擇Excel或類似軟件來進行數值計算的話,則用戶需要額外的啟動Excel 等軟件,而且Excel軟件本身無法方便地與數據進行交互。
最后,應用系統中的自定義公式功能能夠解決一部分計算問題,但是,自定義功能 和自動運算功能往往是分離的,即用戶想實現自動運算,必須事先定義,而不能隨需應變的 隨時輸入隨時運算,這不僅帶來一些操作上的不便,而且也不能適應用戶變化的需求。
因此,需要一種新的自動計算數值的方式,能夠隨時根據用戶輸入的表達式進行 計算,使用戶可以即時地了解表達式的計算結果,且使用戶可以隨時查看已輸入的表達式, 以對其進行編輯修改。發明內容
本發明所要解決的技術問題在于,提供一種新的自動計算數值的方式,能夠隨時 根據用戶輸入的表達式進行計算,使用戶可以即時地了解表達式的計算結果,且使用戶可 以隨時查看已輸入的表達式,以對其進行編輯修改。
有鑒于此,本發明一種自動計算數值的方法,可以包括步驟102,接收用戶輸入 的公式,并發送給預設的控制器;步驟104,由控制器判斷用戶是否處于編輯狀態;步驟 106,在用戶處于非編輯狀態時,將公式的計算結果返回給用戶;步驟108,在用戶處于編輯 狀態時,將公式返回給用戶。通過該技術方案,用戶可以即時地查看公式的計算結果,并可以即時地查看并修改輸入的公式。
在上述技術方案中,優選地,公式中可以包括關鍵字;在步驟106中,從用戶的應 用程序中,獲取關鍵字對應的數值,并根據數值取得公式的計算結果。
在上述技術方案中,優選地,應用程序的類型包括B/S結構程序、C/S結構程序和 數據庫應用程序;在步驟106中,當應用程序為B/S結構程序時,通過JavMcript的eval 方法取得公式的計算結果,當應用程序為C/S結構程序時,通過用戶操作系統中msscript 引擎中的eval方法取得公式的計算結果,當應用程序為數據庫應用程序時,通過sql語句 進行數據庫查詢以取得公式的計算結果。
在上述技術方案中,優選地,在步驟102中,用戶將公式輸入到文本框中;在步驟 106中,將公式的計算結果記錄在文本框中以返回給用戶,并將公式保存在文本框的備注屬 性中;在步驟108中,從文本框的備注屬性中取得公式,并將公式記錄在文本框中以返回給 用戶。
在上述技術方案中,優選地,在步驟104中,控制器通過監測鍵盤輸入事件、鼠標 輸入事件來判斷用戶是否處于編輯狀態。例如監測到用戶輸入回車、鼠標點擊其他編輯框 時,確定用戶離開編輯狀態。
本發明還提供一種自動計算數值的裝置,可以包括公式輸入模塊,接收用戶輸入 的公式;響應控制模塊,判斷用戶是否處于編輯狀態,并在用戶處于非編輯狀態時,將公式 的計算結果返回給用戶,在用戶處于編輯狀態時,將公式返回給用戶。通過該技術方案,用 戶可以即時地查看公式的計算結果,并可以即時地查看并修改輸入的公式。
在上述技術方案中,優選地,公式中可以包括關鍵字;響應控制模塊還包括應用 解析模塊,從用戶的應用程序中,獲取關鍵字對應的數值;公式計算模塊,并根據數值取得 公式的計算結果。應用解析模塊、公式計算模塊也可以不包括在響應控制模塊中,僅由其進 行調用。
在上述技術方案中,優選地,應用程序的類型包括B/S結構程序、C/S結構程序和 數據庫應用程序;當應用程序為B/S結構程序時,公式計算模塊通過JavMcript的eval方 法取得公式的計算結果,當應用程序為C/S結構程序時,公式計算模塊通過用戶操作系統 中msscript引擎中的eval方法取得公式的計算結果,當應用程序為數據庫應用程序時,公 式計算模塊通過sql語句進行數據庫查詢以取得公式的計算結果。
在上述技術方案中,優選地,公式輸入模塊包括文本框,用戶將公式輸入到文本框 中;在用戶處于非編輯狀態時,響應控制模塊將公式的計算結果記錄在文本框中以返回給 用戶,并將公式保存在文本框的備注屬性中,在用戶處于編輯狀態時,響應控制模塊從文本 框的備注屬性取得公式,并將公式記錄在文本框中以返回給用戶。
在上述技術方案中,優選地,響應控制模塊通過監測鍵盤輸入事件、鼠標輸入事件 來判斷用戶是否處于編輯狀態。例如監測到用戶輸入回車、鼠標點擊其他編輯框時,確定用 戶離開編輯狀態。
根據上述技術方案,可以實現一種自動計算數值的方法和裝置,能夠隨時根據用 戶輸入的表達式進行計算,使用戶可以即時地了解表達式的計算結果,且使用戶可以隨時 查看已輸入的表達式,以對其進行編輯修改。
圖1是根據本發明的一個實施例的自動計算數值的方法的流程圖2是根據本發明的一個實施例的自動計算數值的裝置的框圖3是根據本發明的一個實施例的自動計算數值的裝置的框圖4是根據本發明的一個實施例的自動計算數值的裝置的原理示意圖。
具體實施方式
為了能夠更清楚地理解本發明的上述目的、特征和優點,下面結合附圖和具體實 施方式對本發明進行進一步的詳細描述。
在下面的描述中闡述了很多具體細節以便于充分理解本發明,但是,本發明還可 以采用其他不同于在此描述的其他方式來實施,因此,本發明并不限于下面公開的具體實 施例的限制。
圖1是根據本發明的一個實施例的自動計算數值的方法的流程圖。
如圖1所示,本發明一種自動計算數值的方法,可以包括步驟102,接收用戶輸 入的公式,并發送給預設的控制器;步驟104,由控制器判斷用戶是否處于編輯狀態;步驟 106,在用戶處于非編輯狀態時,將公式的計算結果返回給用戶;步驟108,在用戶處于編輯 狀態時,將公式返回給用戶。通過該技術方案,用戶可以即時地查看公式的計算結果,并可 以即時地查看并修改輸入的公式。
在上述技術方案中,公式中可以包括關鍵字;在步驟106中,從用戶的應用程序 中,獲取關鍵字對應的數值,并根據數值取得公式的計算結果。
在上述技術方案中,應用程序的類型包括B/S結構程序、C/S結構程序和數據庫應 用程序;在步驟106中,當應用程序為B/S結構程序時,通過JavMcript的eval方法取得 公式的計算結果,當應用程序為C/S結構程序時,通過用戶操作系統中msscript引擎中的 eval方法取得公式的計算結果,當應用程序為數據庫應用程序時,通過sql語句進行數據 庫查詢以取得公式的計算結果。
在上述技術方案中,在步驟102中,用戶將公式輸入到文本框中;在步驟106中,將 公式的計算結果記錄在文本框中以返回給用戶,并將公式保存在文本框的備注屬性中;在 步驟108中,從文本框的備注屬性中取得公式,并將公式記錄在文本框中以返回給用戶。
在上述技術方案中,在步驟104中,控制器通過監測鍵盤輸入事件、鼠標輸入事件 來判斷用戶是否處于編輯狀態。例如監測到用戶輸入回車、鼠標點擊其他編輯框時,確定用 戶離開編輯狀態。
圖2是根據本發明的一個實施例的自動計算數值的裝置的框圖。
如圖2所示,本發明還提供一種自動計算數值的裝置200,可以包括公式輸入模 塊202,接收用戶輸入的公式;響應控制模塊204,判斷用戶是否處于編輯狀態,并在用戶處 于非編輯狀態時,將公式的計算結果返回給用戶,在用戶處于編輯狀態時,將公式返回給用 戶。通過該技術方案,用戶可以即時地查看公式的計算結果,并可以即時地查看并修改輸入 的公式。
在上述技術方案中,公式中可以包括關鍵字;響應控制模塊204還包括應用解析 模塊2042,從用戶的應用程序中,獲取關鍵字對應的數值;公式計算模塊2044,并根據數值取得公式的計算結果。應用解析模塊2042、公式計算模塊2044也可以不包括在響應控制模 塊204中,僅由其進行調用。
在上述技術方案中,應用程序的類型包括B/S結構程序、C/S結構程序和數據庫應 用程序;當應用程序為B/S結構程序時,公式計算模塊2044通過JavMcript的eval方法 取得公式的計算結果,當應用程序為C/S結構程序時,公式計算模塊2044通過用戶操作系 統中msscript引擎中的eval方法取得公式的計算結果,當應用程序為數據庫應用程序時, 公式計算模塊2044通過sql語句進行數據庫查詢以取得公式的計算結果。
在上述技術方案中,公式輸入模塊202包括文本框,用戶將公式輸入到文本框中; 在用戶處于非編輯狀態時,響應控制模塊204將公式的計算結果記錄在文本框中以返回給 用戶,并將公式保存在文本框的備注屬性中,在用戶處于編輯狀態時,響應控制模塊204從 文本框的備注屬性取得公式,并將公式記錄在文本框中以返回給用戶。
在上述技術方案中,響應控制模塊204通過監測鍵盤輸入事件、鼠標輸入事件來 判斷用戶是否處于編輯狀態。例如監測到用戶輸入回車、鼠標點擊其他編輯框時,確定用戶 離開編輯狀態。
圖3是根據本發明的一個實施例的自動計算數值的裝置的框圖。
如圖3所示,本實施例中的自動計算數值的裝置包括應用解析模塊302、響應控 制模塊304、公式計算模塊306。
用戶在文本框中輸入公式,為了實現文本框中公式的自動運算,首先要把文本框 傳遞給響應控制模塊304,響應控制模塊304自動對文本框的焦點進入和離開事件以及回 車事件進行響應,響應方式包括
一、當鍵盤輸入焦點離開文本框時,響應控制模塊304把文本框中的表達式傳遞 給公式計算模塊306,由其負責計算公式的結果,并把公式本身緩存到文本框的備注(tag) 屬性中,公式計算模塊306計算出結果后,響應控制模塊304自動運算的結果顯示到文本 框。
二、當鍵盤輸入焦點進入文本框的時候,響應控制模塊304把文本框中的內容恢 復表達式的顯示。
三、當用戶輸入的數據中含有用例如“”包含的關鍵字的時候,應用解析模塊 302會查找當前用戶系統界面中所有文本框的標題,標題與公式中“”中的文字符合的, 將會用查找到的文本框中的數值替換用戶輸入的“”及中間標題文本,這樣,本裝置就實 現了數字的簡化輸入。例如用戶輸入的是總價*0. 98,那么,應用解析模塊302首先要 把用戶當前的操作界面中的控件按照其標題遍歷一遍,用控件中的實際數字去替代表達式 中的關鍵字,假設在控件中查詢到總價是100,則替換后,表達式變成了 100*0. 98,進行了 關鍵字替換后就可以由公式計算模塊對其進行計算了。
其中,公式計算模塊306自動運算可以有不同的運算機制,通過這些不同的運算 機制可以覆蓋全部用于自動運算的場景,分別適用于不同的場合。
1、如果所需的應用場景是bs (瀏覽器/服務器)系統中的html頁面,則公式計算 模塊306可以利用瀏覽器對javascript的支持來實現自動計算,如可以調用javascript 的eval方法,把表達式當作字符串傳遞過去,從而取得表達式的運算結果;
2、如果所需應用場景是基于數據庫開發的應用系統,則公式計算模塊306可以利用sql語句的運算功能來實現自動計算,如對100*0. 98進行運算,可以將表達式拼寫為sql 語句“select 100*0.98〃,調用數據庫查詢引擎計算取得結果;
3、如果所需應用場景是普通cs (客戶端/服務器)程序,則公式計算模塊306可 以利用操作系統默認的腳本引擎或自定義的公式解析器來完成,如可以調用操作系統自帶 的msscript引擎,通過引擎的eval方法取得運算結果。
通過上述的自動計算數值的裝置,實現了表達式的輸入、解析、編輯、存儲和計算。
圖4是根據本發明的一個實施例的自動計算數值的裝置的原理示意圖。
在本實施例中的自動計算數值的裝置中,首先由響應控制模塊402自動為文本框 404的焦點離開和獲取增加處理機制,使用戶在文本框404中輸入表達式時,響應控制模塊 402自動根據處理機制調用公式計算模塊406對文本框404中公式進行自動計算,并將文本 框404中的文本置為表達式的運算結果。
其中,在文本框404中的表達式含有關鍵字時,由應用解析模塊408循環用戶的當 前界面中的所有控件,在控件中取得關鍵字的數值,然后再由公式計算模塊406計算出表 達式的數值。
例如,假設用戶的當前界面中有單價、數量文本框,用戶在其中輸入單價為50,數 量為2,用戶又在文本框404中輸入“單價*數量*0. 95”后,回車;響應控制模塊402響 應鍵盤事件,判斷按鍵為回車,自動保存文本框中的表達式到文本框404的tag屬性中,而 后調用公式計算模塊406、應用解析模塊408,由應用解析模塊408計算過程遍歷界面所有 控件,取得文本框404中的表達式字符串,替換[“單價"]為50,替換“數量”為2,表達 式變為“50*2*0. 95”,由公式計算模塊406調用腳本引擎的計算方法解析〃 50*2*0. 95", 得到結果95。響應控制模塊95顯示到文本框404中。用戶將鼠標點擊文本框404,文本框 404獲得焦點事件觸發,響應控制模塊402控制器將文本框中tag屬性中保存的“單價*數量*0. 95”顯示到文本框中。用戶用鼠標選擇0.95,重新輸入為0.98,后回車。響應控 制模塊402重新執行計算過程,得到結果98。
通過本發明的技術方案,可以實現一種自動計算數值的方法和裝置,可以使用戶 在任何時候的任何一個數字輸入框中進行運算。使用效果可以為假設用戶在文本框中直 接手工輸入“ 1+2”,當用戶敲擊回車按鍵或當文本框失去焦點的時候,該表達式會自動計算 出結果3,并顯示在文本框中,當用戶點擊鼠標把焦點返回這個文本框時,它又可以恢復原 有表達式的顯示“1+2”。如果用戶需要修改表達式,則可以直接移動鼠標或者鍵盤選擇所需 要更改的表達式文字,像修改普通文本一樣直接修改即可,修改完成后,離開焦點時,文本 框又可按最新的表達式自動計算。同時本發明的技術方案支持復雜表達式的運算順序,且 可以支持通過“ 0 ”來嵌套的多層運算,如“(1+3)/2*(9-6) ”。
如果用戶需要計算的內容和當前界面中的元素相關,比如,從單價文本框中取得 具體的單價,從數量文本框中取得具體的數量,則用戶可以直接輸入[單價]* [數量],回車 后仍然可以計算出所需結果。
通過以上三點,本發明的技術方案實現了表達式的可查看,可編輯,可支持嵌套, 可以動態從應用系統中取數,其便捷的應用方式完全可以替代原有的計算器程序或類似控 件。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修 改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種自動計算數值的方法,其特征在于,包括步驟102,接收用戶輸入的公式,并發送給預設的控制器; 步驟104,由所述控制器判斷所述用戶是否處于編輯狀態;步驟106,在所述用戶處于所述非編輯狀態時,將所述公式的計算結果返回給所述用戶;步驟108,在所述用戶處于所述編輯狀態時,將所述公式返回給所述用戶。
2.根據權利要求1所述的自動計算數值的方法,其特征在于,所述公式中包括關鍵字; 在所述步驟106中,從所述用戶的應用程序中,獲取所述關鍵字對應的數值,并根據所述數值取得所述公式的計算結果。
3.根據權利要求2所述的自動計算數值的方法,其特征在于,所述應用程序的類型包 括B/S結構程序、C/S結構程序和數據庫應用程序;在所述步驟106中,當所述應用程序為所述B/S結構程序時,通過JavMcript的eval 方法取得所述公式的計算結果,當所述應用程序為所述C/S結構程序時,通過用戶操作系 統中msscript引擎中的eval方法取得所述公式的計算結果,當所述應用程序為所述數據 庫應用程序時,通過sql語句進行數據庫查詢以取得所述公式的計算結果。
4.根據權利要求1所述的自動計算數值的方法,其特征在于,在所述步驟102中,所述 用戶將所述公式輸入到文本框中;在所述步驟106中,將所述公式的計算結果記錄在所述文本框中以返回給所述用戶, 并將所述公式保存在所述文本框的備注屬性中;在所述步驟108中,從所述文本框的備注屬性中取得所述公式,并將所述公式記錄在 所述文本框中以返回給所述用戶。
5.根據權利要求1至4中任一項所述的自動計算數值的方法,其特征在于,在所述步驟 104中,所述控制器通過監測鍵盤輸入事件、鼠標輸入事件來判斷所述用戶是否處于所述編 輯狀態。
6.一種自動計算數值的裝置,其特征在于,包括 公式輸入模塊,接收用戶輸入的公式;響應控制模塊,判斷所述用戶是否處于編輯狀態,并在所述用戶處于非編輯狀態時,將 所述公式的計算結果返回給所述用戶,在所述用戶處于所述編輯狀態時,將所述公式返回 給所述用戶。
7.根據權利要求6所述的自動計算數值的裝置,其特征在于,所述公式中包括關鍵字; 所述響應控制模塊還包括應用解析模塊,從所述用戶的應用程序中,獲取所述關鍵字對應的數值; 公式計算模塊,并根據所述數值取得所述公式的計算結果。
8.根據權利要求7所述的自動計算數值的裝置,其特征在于,所述應用程序的類型包 括B/S結構程序、C/S結構程序和數據庫應用程序;當所述應用程序為所述B/S結構程序時,所述公式計算模塊通過JavMcript的eval 方法取得所述公式的計算結果,當所述應用程序為所述C/S結構程序時,所述公式計算模 塊通過用戶操作系統中msscript引擎中的eval方法取得所述公式的計算結果,當所述應 用程序為所述數據庫應用程序時,所述公式計算模塊通過sql語句進行數據庫查詢以取得所述公式的計算結果。
9.根據權利要求6所述的自動計算數值的裝置,其特征在于,所述公式輸入模塊包括 文本框,所述用戶將所述公式輸入到所述文本框中;在所述用戶處于所述非編輯狀態時,所述響應控制模塊將所述公式的計算結果記錄在 所述文本框中以返回給所述用戶,并將所述公式保存在所述文本框的備注屬性中,在所述 用戶處于所述編輯狀態時,所述響應控制模塊從所述文本框的備注屬性取得所述公式,并 將所述公式記錄在所述文本框中以返回給所述用戶。
10.根據權利要求6至9中任一項所述的自動計算數值的裝置,其特征在于,所述響應 控制模塊通過監測鍵盤輸入事件、鼠標輸入事件來判斷所述用戶是否處于所述編輯狀態。
全文摘要
本發明一種自動計算數值的方法,可以包括步驟102,接收用戶輸入的公式,并發送給預設的控制器;步驟104,由控制器判斷用戶是否處于編輯狀態;步驟106,在用戶處于非編輯狀態時,將公式的計算結果返回給用戶;步驟108,在用戶處于編輯狀態時,將公式本身返回給用戶。本發明還提供一種自動計算數值的裝置,通過本發明,用戶可以即時地查看公式的計算結果,并可以即時地查看并修改輸入的公式。
文檔編號G06F9/44GK102033752SQ20101060794
公開日2011年4月27日 申請日期2010年12月27日 優先權日2010年12月27日
發明者孫亮朝 申請人:暢捷通軟件有限公司