<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 可重用MIS用戶接口模塊的設(shè)計(jì)

          可重用MIS用戶接口模塊的設(shè)計(jì)

          作者: 時(shí)間:2006-08-25 來(lái)源:網(wǎng)絡(luò) 收藏

           :通過(guò)對(duì)通用功能的分析,采用面向?qū)ο蟮睦^承機(jī)制構(gòu)造窗口和菜單的整體框架,其中,對(duì)數(shù)據(jù)提交時(shí)校驗(yàn)結(jié)果的中文提示方法、打印預(yù)覽、用戶定制查詢等進(jìn)行了比較詳細(xì)的研究。有效地解決了界面設(shè)計(jì)中統(tǒng)一性和特殊需要之間的矛盾。
          關(guān)鍵詞:用戶界面;管理信息系統(tǒng);面向?qū)ο?;可重?!--關(guān)鍵CH(結(jié)束)←-->

            界面是系統(tǒng)提供給用戶的第一感覺(jué),不同開(kāi)發(fā)者制作的界面風(fēng)格有很大的差異,同一人在不同時(shí)間也具有隨意性。因此,無(wú)論個(gè)人獨(dú)自開(kāi)發(fā)系統(tǒng)還是團(tuán)隊(duì)作業(yè),都要對(duì)界面進(jìn)行整體的規(guī)劃。

            制作統(tǒng)一界面的一般方法是具體而強(qiáng)行的規(guī)定,本文依據(jù)PB開(kāi)發(fā)的經(jīng)驗(yàn),實(shí)現(xiàn)了系統(tǒng)中窗口和菜單的整體繼承框架,并對(duì)其中數(shù)據(jù)校驗(yàn)結(jié)果的中文提示方法、打印預(yù)覽、用戶定制查詢和數(shù)據(jù)窗口的重復(fù)使用技術(shù)等進(jìn)行了比較詳細(xì)的研究,有效地解決了界面設(shè)計(jì)中統(tǒng)一性和特殊需要之間的矛盾。

            此框架定義的祖先窗口獨(dú)立于特定系統(tǒng),可以為不同系統(tǒng)所使用而不用做任何修改,極大地提高了系統(tǒng)的開(kāi)發(fā)效率和健壯性。

          1 統(tǒng)一功能的提取
            系統(tǒng)需要實(shí)現(xiàn)大量的基本功能,如插入、提交、翻頁(yè)等,從權(quán)限控制的角度,有讀權(quán)限、寫(xiě)權(quán)限和部分寫(xiě)權(quán)限之分,體現(xiàn)在MIS系統(tǒng)設(shè)計(jì)中,就是查詢權(quán)限和錄入權(quán)限的區(qū)別。常用的操縱數(shù)據(jù)的命令如表1所示。

            從中不難看出,有些命令適用于查詢,而另一些則適用于錄入。為此,可將窗口分為2個(gè)類(lèi)型:一種具有數(shù)據(jù)錄入的功能,而另外一種只是查詢而已。用于錄入的窗口中可以設(shè)置與錄入所需功能命令相對(duì)應(yīng)的菜單項(xiàng)和工具條,用于查詢的窗口可攜帶適合查詢操作的菜單項(xiàng)和工具條。

            工具條顯示在屏幕的上方,依據(jù)以上分析,完成編輯錄入功能的窗口所帶的菜單中可含15個(gè)工具按鈕,如圖1所示。

          其功能從左到右依次為:
            排序、通用查詢、打印、打印預(yù)覽、導(dǎo)入、導(dǎo)出、檢索、新增、刪除、首記錄、前移、后移、末記錄、提交、關(guān)閉。
            查詢所對(duì)應(yīng)的功能為:通用查詢、打印、打印預(yù)覽、導(dǎo)出、首記錄、前移、后移、末記錄、日期段輸入、日期輸入、關(guān)閉;其圖形外觀與上面的編輯工具條類(lèi)似,此處略去。

          2 實(shí)現(xiàn)

            在窗口上定義一個(gè)DataWindows控件dw_1,在窗口原有事件的基礎(chǔ)上定義表1所示的用戶自定義事件來(lái)操縱dw_1中的數(shù)據(jù)對(duì)象。具體的數(shù)據(jù)對(duì)象在窗口打開(kāi)時(shí)指定。

            在窗口所掛的菜單中設(shè)置觸發(fā)窗口自定義事件所需的子菜單和腳本,并給這些子菜單設(shè)置相應(yīng)的工具條圖標(biāo)。

            下面的程序段是窗口所掛排序菜單的對(duì)應(yīng)腳本,當(dāng)圖1所示最左邊的排序按鈕被觸發(fā)時(shí)運(yùn)行。
           

            工具條上的其他按鈕不需要設(shè)置彈起和按下?tīng)顟B(tài),只需要一條觸發(fā)語(yǔ)句就夠了。系統(tǒng)運(yùn)行時(shí),用戶通過(guò)點(diǎn)擊工具條上的按鈕完成對(duì)應(yīng)菜單項(xiàng)腳本的執(zhí)行,菜單項(xiàng)中的腳本進(jìn)一步觸發(fā)承載此菜單的窗口中的用戶子定義事件的執(zhí)行。

            對(duì)一些簡(jiǎn)單的輸入、查詢操作,以上事件的定義和工具條的設(shè)置基本上滿足了應(yīng)用要求。大多數(shù)窗口中的數(shù)據(jù)操作圍繞一個(gè)DataWindows進(jìn)行,增加的DataWindows僅用于限制和過(guò)濾該中心DataWindows,因此,雖涉及多個(gè)DataWindows或其他相關(guān)控件,除操作更復(fù)雜些外,此基本功能設(shè)置也足于解決問(wèn)題。當(dāng)窗口上有多個(gè)DataWindows的數(shù)據(jù)需要維護(hù)時(shí),可覆蓋祖先事件的腳本,并擴(kuò)展祖先腳本使其符合新的功能要求。


          3 利用繼承機(jī)制實(shí)現(xiàn)通用功能的一致性
            由于以上窗口實(shí)現(xiàn)的基本功能在系統(tǒng)中普遍存在,為了減少編程量,提高窗口界面的一致性,可用上面介紹的窗口為祖先,讓其他負(fù)責(zé)具體事務(wù)的窗口來(lái)繼承。這樣,所有通過(guò)繼承產(chǎn)生的子窗口將不再書(shū)寫(xiě)類(lèi)似的代碼。系統(tǒng)在初始階段集中精力編制這些通用功能,可以保證功能實(shí)現(xiàn)得更加完善。

            dw_1控件中數(shù)據(jù)對(duì)象的設(shè)置在每個(gè)子孫窗口的Open事件中完成,這樣就保重了各窗口所操作的數(shù)據(jù)是不同的,dw_1控件的大小可視具體的要求進(jìn)行調(diào)整。

            按PB中多文檔窗口的操作要求,每一個(gè)窗口都有自己的菜單和工具條,為了使菜單保持整體的穩(wěn)定,即窗口切換時(shí)基本菜單功能保持外觀不變,將完成基本功能的模塊結(jié)構(gòu)定義為祖先菜單,通過(guò)繼承生成查詢和編輯2個(gè)子孫菜單,子孫菜單中分別附加了觸發(fā)相關(guān)窗口事件所需的菜單項(xiàng)、工具條和腳本。

            根據(jù)窗口功能的不同,通過(guò)繼承產(chǎn)生的窗口可選擇掛2個(gè)子孫菜單之一,這樣,特定窗口需要做的只是添加工具條中沒(méi)有的功能和控件。只要統(tǒng)一定義了窗口和數(shù)據(jù)窗口的背景色以及字體的風(fēng)格、大小和顏色,即使各窗口由不同的人開(kāi)發(fā)、窗口的復(fù)雜程度不同,窗口的風(fēng)格也基本一致。為保證祖先窗口的事件腳本能操縱每一個(gè)子孫窗口的數(shù)據(jù),只需在程序中將要應(yīng)用的窗口名改為代詞this即可。工具條的使用,不但簡(jiǎn)化了窗口上控件的數(shù)目、為數(shù)據(jù)區(qū)留下了更大的顯示空間,而且保證了界面風(fēng)格的一致。

            在實(shí)際操作的過(guò)程中,當(dāng)工具條預(yù)定義的功能不適合一個(gè)特定的窗口應(yīng)用時(shí),系統(tǒng)可視具體情況對(duì)祖先腳本進(jìn)行不同的覆蓋處理,例如,有些人只有修改權(quán)限而沒(méi)有插入權(quán),系統(tǒng)會(huì)給予必要的提示;有些窗口比較復(fù)雜,涉及多個(gè)DataWindows的提交,則系統(tǒng)首先覆蓋繼承來(lái)的祖先的提交事件腳本,再對(duì)提交事件進(jìn)行必要的、比祖先事件更復(fù)雜的處理。如果不允許工具條中的某個(gè)功能使用,只需在Open事件中設(shè)置他的屬性為Disable即可。

            為了使用戶對(duì)當(dāng)前DataWindows中的記錄總數(shù)有個(gè)總體的把握,系統(tǒng)在祖先窗口中特定義一個(gè)單行編輯器sle_1,用于提示總記錄數(shù)和當(dāng)前記錄數(shù)。此功能的設(shè)置對(duì)FREE界面格式的DataWindows用戶尤其有用。實(shí)現(xiàn)方法是,在DataWindows的
           

          4 錯(cuò)誤俘獲及例外處理
            對(duì)于錯(cuò)誤的命令和輸入要提供反饋信息,給出正確用法。這一功能雖然不體現(xiàn)在工具條中,但具有通用性,必須由祖先窗口來(lái)實(shí)現(xiàn)??梢苑@的例外很多,但MIS涉及的主要是數(shù)據(jù)庫(kù)錯(cuò)誤,窗口上的其他控件的錯(cuò)誤可在程序調(diào)試時(shí)糾正。

            在數(shù)據(jù)提交時(shí),DBMS要進(jìn)行數(shù)據(jù)完整性的檢驗(yàn),常出現(xiàn)的錯(cuò)誤有:非空字段沒(méi)有輸入值,這時(shí),PB將提示一段出錯(cuò)信息。遺憾的是,該信息以英文方式顯示,用戶出錯(cuò)是難免的,怎么用中文實(shí)現(xiàn)出錯(cuò)提示呢?

            假如我們?cè)贒ataWindows中需錄入xqrq(需求日期),該字段由非null約束,若DataWindows控件的Dberror事件中無(wú)腳本,而用戶又忘記了錄入此項(xiàng)數(shù)據(jù),則提交數(shù)據(jù)時(shí)系統(tǒng)將以英文顯示出錯(cuò)信息:
           


            第一句指出出錯(cuò)的位置,最后一句為一般性說(shuō)明。

            當(dāng)然,數(shù)據(jù)提交前可以用程序?qū)λ袃?nèi)容進(jìn)行驗(yàn)證,但這種解決辦法看似簡(jiǎn)單,實(shí)現(xiàn)是很麻煩的,需要逐行對(duì)各字段可能的錯(cuò)誤進(jìn)行分析。實(shí)際上,當(dāng)提交失敗時(shí),DataWindows控件的Dberror事件首先被觸發(fā),并傳遞5個(gè)參數(shù),分別為:

            sqldbcode(錯(cuò)誤代碼),sqlerrtext(錯(cuò)誤提示),sqlsyntax(出錯(cuò)的語(yǔ)句),buffer(),row(出錯(cuò)行號(hào))。

            因此,可采用以下解決途徑:
            在DataWindows控件的Dberror事件中寫(xiě)腳本:
            gf_dbms_error(dw_1,sqldbcode,sqlerrtext,sqlsyntax,row)

            其中g(shù)f_dbms_error為自定義的專(zhuān)門(mén)處理數(shù)據(jù)庫(kù)出錯(cuò)信息的全局函數(shù),其基本思路是:根據(jù)sqldbcode確定錯(cuò)誤類(lèi)型,然后從sqlerrtext提示信息中分解出字段名等信息段,根據(jù)不同的錯(cuò)誤類(lèi)型,重新組合并顯示在顯示器上。當(dāng)然,若字段名為英文字母,還需將字段名轉(zhuǎn)換為注釋?zhuān)ㄒ话銥橹形模?BR>
            例如:針對(duì)以上提交所碰到的問(wèn)題,系統(tǒng)提示如圖2所示。

          5 打印預(yù)覽的實(shí)現(xiàn)技術(shù)
            打印預(yù)覽是Windows應(yīng)用提供給用戶自主進(jìn)行打印界面設(shè)置的一個(gè)接口,實(shí)現(xiàn)的基本原理是系統(tǒng)根據(jù)用戶需求對(duì)需預(yù)覽的DataWindows的各項(xiàng)默認(rèn)參數(shù)進(jìn)行修改,由于打印預(yù)覽結(jié)束后系統(tǒng)還需返回到原狀態(tài),為此,系統(tǒng)不能對(duì)原DataWindows進(jìn)行直接操作,又由于此功能的普遍使用性,在實(shí)現(xiàn)上系統(tǒng)將此功能安排在祖先窗口上,由各菜單來(lái)觸發(fā)該功能的執(zhí)行,由工具條來(lái)具體實(shí)施。

            實(shí)現(xiàn)的關(guān)鍵是怎么將要打印預(yù)覽的數(shù)據(jù)傳遞給用于打印預(yù)覽的子程序,解決此問(wèn)題的方法一般有兩種:

           ?。?)將需打印的DataWindows中的數(shù)據(jù)對(duì)象賦予打印預(yù)覽窗口中的DataWindows控件的數(shù)據(jù)對(duì)象,將需打印的DataWindows控件中的數(shù)據(jù)復(fù)制到Windows的剪貼板,再?gòu)募糍N板上將數(shù)據(jù)復(fù)制到打印預(yù)覽窗口中的DataWindows控件中,最后完成對(duì)窗口中各項(xiàng)參數(shù)的設(shè)定。

            許多論文中提供了這種方法的實(shí)現(xiàn),PB自帶的一個(gè)示例也是這個(gè)原理。但應(yīng)用中存在以下2個(gè)主要的缺陷:

            首先,若需預(yù)覽的DataWindows中帶有下拉子DataWindows,則下拉子DataWindows無(wú)法實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換,即顯示出來(lái)的是內(nèi)部存儲(chǔ)值而不是用戶應(yīng)該看到的顯示值,因?yàn)榭截愡^(guò)去的是內(nèi)部存儲(chǔ)值,從而讓用戶感到莫名其妙。為解決此問(wèn)題,需重新構(gòu)造各帶下拉子DataWindows的DataWindows的表的關(guān)聯(lián)關(guān)系,涉及到DataWindows中的所有子DataWindows,實(shí)現(xiàn)起來(lái)工作量和難度均較大,也失去了這一下拉子46DataWindows工具帶來(lái)的設(shè)計(jì)便利;第二個(gè)問(wèn)題是復(fù)合報(bào)表無(wú)法實(shí)現(xiàn)預(yù)覽,復(fù)合報(bào)表是一個(gè)將多個(gè)DataWindows合成為一個(gè)DataWindows的技術(shù)。因此,此方法并不是一個(gè)實(shí)用的實(shí)現(xiàn),只能用于最簡(jiǎn)單的場(chǎng)合。

           ?。?)設(shè)置一個(gè)全局的DataWindows控件變量,讓該DataWindows變量共享要進(jìn)行打印預(yù)覽的DataWindows控件,然后對(duì)該全局的DataWindows控件變量進(jìn)行用戶定制設(shè)置,則以上問(wèn)題全部解決。圖3是此思路的具體實(shí)現(xiàn),數(shù)據(jù)窗口上面一行的控制命令分別為:大小縮放、頁(yè)碼、上邊距、左邊距、下邊距、右邊距的直接輸入和點(diǎn)擊按鈕式輸入,最右邊提供的是標(biāo)尺的選擇。該窗口自帶菜單和工具條,不受繼承機(jī)制的限制,工具條中提供了打印等按鈕。

          6 通用查詢技術(shù)
            對(duì)常用的查詢,我們可逐一定制,但定制的查詢?nèi)狈`活性,考慮到定制的查詢并不能完全滿足用戶的實(shí)際需要,為此系統(tǒng)可定義通用查詢,并將他列入工具條中,以便隨時(shí)訪問(wèn),以適應(yīng)特殊的需求。

            實(shí)現(xiàn)技術(shù):從數(shù)據(jù)庫(kù)的系統(tǒng)表中提取表名、顯示所需的字段名,以及用于構(gòu)造邏輯關(guān)系的字段名;構(gòu)造查詢所需的邏輯表達(dá)式,并按此邏輯關(guān)系檢索數(shù)據(jù),確認(rèn)后可調(diào)用打印預(yù)覽來(lái)顯示。由于有些數(shù)據(jù)庫(kù)不支持漢字表名和字段名,使得表名和字段名需用英文字符書(shū)寫(xiě),為此真正使用的應(yīng)該是表和字段的注釋。實(shí)現(xiàn)的另一個(gè)關(guān)鍵問(wèn)題是動(dòng)態(tài)SQL的構(gòu)造,比較復(fù)雜,在此不一一敘述,具體結(jié)果如圖4所示,圖3中顯示的預(yù)覽結(jié)果就是由此方法構(gòu)造。

            通用查詢雖然提高了系統(tǒng)的靈活性,但操作起來(lái)比較復(fù)雜,尤其是構(gòu)造復(fù)雜邏輯表達(dá)式需要專(zhuān)門(mén)知識(shí),且用戶必須非常熟悉數(shù)據(jù)庫(kù)的結(jié)構(gòu)。以上實(shí)現(xiàn)只能進(jìn)行單表查詢,因此,僅做輔助性使用。

          7 結(jié) 語(yǔ)

            本文提供的窗口和菜單繼承機(jī)制保證了用戶界面的整體風(fēng)格,通過(guò)仔細(xì)地設(shè)計(jì)工具條和用戶自定義事件,使窗口功能進(jìn)一步完善,所需控件數(shù)目進(jìn)一步變少。當(dāng)然,要實(shí)現(xiàn)一致的用戶界面,開(kāi)發(fā)者還必須進(jìn)行相應(yīng)的統(tǒng)一規(guī)定,如字體風(fēng)格和顏色的統(tǒng)一設(shè)定、顯示分辨率設(shè)定等等。在項(xiàng)目開(kāi)發(fā)的早期還需定義編輯格式以規(guī)范共用的數(shù)據(jù)字典、定義顯示格式以控制用戶數(shù)據(jù)的顯示方式,從每一個(gè)細(xì)節(jié)上來(lái)保證系統(tǒng)風(fēng)格的一致。

            另外,以上實(shí)現(xiàn)的通用界面的祖先窗口可以被所有MIS所使用。

          參考文獻(xiàn)
          [1]http://www.sybase.com/products/power builder/index.html
          [2]http://lin2000.myrice.com/
          [3]曉通網(wǎng)絡(luò)數(shù)據(jù)庫(kù)研究所.PowerBuilder 6.0/6.5開(kāi)發(fā)與參考手冊(cè)[M].呼和浩特:內(nèi)蒙古人民出版社,1999.



          關(guān)鍵詞: MIS 接口模塊

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();