《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 一種基于Web的層次編碼處理模塊設計
一種基于Web的層次編碼處理模塊設計
來源:微型機與應用2011年第7期
楊振東,何 宏,劉光霆
(后勤工程學院 基礎部,重慶 401311)
摘要: 針對目前大多數Web應用系統對層次編碼處理相對簡單導致用戶操作不便的問題,開發了一個基于Web的層次編碼處理模塊,詳細介紹了其設計與實現思想。其操作簡便,易實現,對開發B/S結構的管理信息系統在處理層次編碼時,提供了一個很好的解決方案。
Abstract:
Key words :

摘  要: 針對目前大多數Web應用系統層次編碼處理相對簡單導致用戶操作不便的問題,開發了一個基于Web的層次編碼處理模塊,詳細介紹了其設計與實現思想。其操作簡便,易實現,對開發B/S結構的管理信息系統在處理層次編碼時,提供了一個很好的解決方案。
關鍵詞: 層次編碼;Web;應用系統;Ajax

 在管理信息系統(MIS)中,經常涉及到對一些基本信息的管理。為了有效地組織、管理這些信息,開發者往往通過數據編碼來確保信息的檢索、分類、統計和便于控制,以提高信息的處理效率和利用價值[1]。編碼設計及其管理是信息系統中不可缺少的重要組成部分。在實際工作中,經常遇到一些數據之間具有從屬或上下級關系的情況,例如機構編制、物資分類信息等都具有明顯的上下級和從屬關系。這類數據的編碼就是一種層次編碼。相比較傳統的基于C/S的應用系統,基于B/S的Web應用系統靈活、易維護、成本低、使用方便、容易被用戶接受,已成為企業應用的首選[2]。本文以一種典型的層次編碼為例,設計并實現了一個基于Web的簡潔美觀、功能強大的單位編碼幫助模塊。該模塊界面如圖1所示。
1 單位編碼幫助模塊功能
 如圖1所示界面,左邊顯示上級單位的編碼和名稱,并用分隔符分開,右邊顯示左邊單位的直供單位或下級單位的編碼和名稱。下部是“返回上級”、“下級單位”、“確定”、“取消”按鈕。選中左邊某單位,然后單擊“下級單位”按鈕,界面顯示如圖2所示。

 

 

 左邊自動顯示所選單位的下級單位,右邊則是左邊默認選中單位的下級單位,這樣逐層展示每層的單位編碼和名稱,層次結構清晰,便于用戶查找。
2 模塊實現的主要技術
 用戶在操作某張頁面時,可能多個地方需調用幫助模塊,如果每次都提交后臺處理,則在服務器上的程序處理頁面并返回數據期間,用戶只能等待。這樣的Web應用程序因用戶得不到立即的反應,操作習慣和思路都會在每一次提交-等待中被打斷,交互性比較差,達不到桌面應用程序的效果。因而設計時主要考慮兩個問題:是利用Ajax技術異步調用數據,還是直接把數據下載到客戶端進行處理;如何按層次展示數據。Ajax使用XMLHttpRequest對象與Web服務器進行異步數據交換[3]。但當數據量比較大時,異步獲取數據需較長的等待時間,因此可以把數據一次性下載到客戶端再進行分層處理。
2.1 服務器端代碼
 首先,在數據庫中建一個Dwxx表,用dwbm和dwmc兩個字段對應存儲單位編碼與單位名稱,以Java平臺為例,首先可以新建一個POJO類Dwxx:
public class Dwxx implements java.io.Serializable {
    private String dwbm;
    private String dwmc;
        public void setDwbm(String dwbm){
        this.dwbm = dwbm;
        }
        public String getDwbm() {
        return dwbm;
   }
   ……
}
然后,定義一個DwxxService類來組裝數據,以ArrayList的形式返回客戶端進行處理:
public class DwxxService {//獲取所有單位信息
public ArrayList getDwxx () throws SQLException {
     ……
     ArrayList list = new ArrayList();
     String sql ="select dwbm,dwmc from sys_dwxx order            by dwbm";
     rs=mydb.executeQuery(sql);         
     while (rs.next()) {
         Dwxx dwxx = new Dwxx ();dwxx.setDwxxDwbm
            (rs.getString(“dwbm”));
        dwxx.setDwxxDwmc(rs.getString(“dwmc”));list.add
            (dwxx);
     }
……
     return list;
}
}
2.2 客戶端代碼
 客戶端處理代碼封裝成模塊且置入主界面(如index.htm)中。用戶登錄系統進入主界面后自動下載單位編碼并生成幫助系統隱藏在客戶端,載入其他需調用單位編碼幫助功能的頁面時就不必重復去后臺下載單位編碼,而是把已生成的模塊由隱藏變為可見,這樣大大提高層次編碼的處理速度。代碼以通用的JavaScirpt代碼為主,再輔以少量服務器端腳本。核心代碼如下:
 <SCRIPT LANGUAGE="JavaScript">
 /** 單位信息以三個層次為例,用三個數組分別存儲各層數據,提高了處理效率,更多層次情況做類似處理。**/
var dwxxarr1 = new Array(); var dwxxarr2 = new Array();var dwxxarr3 = new Array();
var listl=document.dwform.listl; var listr=document.dwform.listr
// listl,listr分別為左右邊下拉列表
function dwxx(dwbm, dwmc){//構造數據
    this.dwbm=dwbm;this. dwmc=dwmc;
}
function getDwxx(){<% //功能:接收單位編碼和名稱,根據
//編碼長度分別存入到三個數組
    Dwxx service=new DwxxService ();Dwxx dwxx=null;ArrayList list=new ArrayList();
    String dwbm="",dwmc="";list=service.getDwxx ();
    for(int i=0;i<list.size();i++){
        dwxx=(Dwxx)list.get(i);dwbm=dwxx.getDwbm();dwmc=dwxx.getDwmc();
        switch(dwbm.length()){ //假設單位編碼三位為一級
            case 3:
        %>  dwxxarr1[dwxxarr1.length]=new dwxx("<%=dwbm%>","<%=dwmc%>"); <%                break;
        ……case 6與case 9做類似處理
        }%>
    }
}
function nextdw(){//功能:處理下級單位
    var selectedvalue= listl.options[listl.selectedIndex].value
    switch (selectedvalue.length){
        case 3:
            removeOptions(document.dwform.listl);
//調用清除option選項函數
            for(i=0;i<dwxxarr2.length;i++)
            if(dwxxarr2[i].dwbm.substring(0,3)==selectedvalue)
            listl[listl.length]=new Option(dwxxarr2[i].        dwbm+"|"+dwxxarr2[i].dwmc,dwxxarr2[i].dwbm);
         listl.options[0].selected=true;
    addOptions(listl.options[listl.selectedIndex].value);
//調用增加option選項函數
        ……//case 6與case 9做類似處理
    }
}
function priordw(){//功能:處理上級單位
    var selectedvalue= listl.options[listl.selectedIndex].value
    switch (selectedvalue.length){
        case 6:
           removeOptions(listl);
//調用清除option選項函數
            for(i=0;i<dwxxarr1.length;i++){
                listl[listl.length]=new Option(dwxxarr1[i].                    dwbm+"|"+dwxxarr1[i].dwmc,dwxxarr1[i].dwbm);
               if(dwxxarr1[i].dwbm==selectedvalue.substring(0,3))            
              listl.options[listl.length-1].selected=true;
           }
           addOptions(listl.options[listl.selectedIndex].value);            
        ...... //case 9做類似處理
    }
}
</script>
 參照以上設計思路,可以實現如圖3所示的單位編碼維護模塊。由于篇幅所限,就不再給出處理代碼。
編碼處理是構建優秀、完善的管理信息系統的重要功能,其效率的高低直接關系到整個系統的性能。通過以上設計,完成了一個高效的層次編碼處理模塊。該模塊結構簡單,稍做修改就可以在.NET平臺下實現,相對于大部分系統只列出一個層次編碼的下拉框來說,更符合用戶使用習慣,突出特點是對大數據量層次編碼的處理也非常迅速,目前已在多個大型管理信息系統中采用,受到用戶一致好評。此外,本文所提出的開發思路對處理其他各種復雜的層次編碼也起著良好的借鑒作用,完全可以運用于供貨商編碼、地區編碼、油品編碼等處理。

參考文獻
[1] 康業娜,許勇,魏士偉.物流信息系統編碼模型研究[J].微計算機信息,2007,36(2):59-60.
[2] 郭曉峰,姚世軍,尹祖偉.基于.NET的Web應用框架的設計與應用[J].計算機工程與設計,2008,29(2):454-455.
[3] 季強,田薇,陳遠.基于Ajax技術的WebOS系統NixOS的構建[J].計算機工程與設計,2008,29(5):1198-1199.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 中文国产成人精品久久96 | freexxx中国女人 | 国产一区二区三区免费播放 | 天堂资源地址在线 | 在线免费观看色视频 | h在线播放| 亚洲免费视频网 | 最新国产精品自拍 | 免费精品国产日韩热久久 | 国产已拍视频 | 在线不卡日韩 | 中文字幕在线免费播放 | 欧洲精品一区二区三区 | 欧美亚洲性色影视在线 | 天堂在线中文网 | 久久成人综合网 | 国产一区二区三区在线看片 | 欧美色穴 | 国产综合色在线视频区色吧图片 | 涩涩涩在线视频 | 成年视频xxxxx在线网站 | 性网站免费 | 日韩中文字幕久久精品 | 国产精品免费视频能看 | 99视频在线免费 | 欧美日韩色视频在线观看 | 高清一级做a爱过程不卡视频 | 亚洲人成网男女大片在线播放 | 羞羞视频免费网站含羞草 | 国产精品亚洲欧美日韩一区在线 | 国产精品欧美亚洲韩国日本久久 | 欧美成人视 | 亚洲欧洲精品国产区 | 欧美日韩一区二区视频图片 | 亚洲碰碰 | 成人网18入口 | 国产伦精品一区三区视频 | 亚洲免费大全 | 最近高清中文字幕大全1 | 一个人免费看的视频 | www激情|