在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

模塊化程序設計案例DCIM-3

汽車電子技術 ? 來源:玉工講技術 ? 作者: 玉素甫·買買提 ? 2023-02-21 16:23 ? 次閱讀

說到模型、模式等概念,我們大概知道什么意思。雖然說不出具體定義,但日常生活或成長過程中肯定接觸過。比如,我們從小學開始接觸的紙質的考勤表(矩陣,也算是人工智能的根),表格中打勾代表1,空格代表0...。也就是我們幾乎都具備了設計模型的能力,但怎么能讓現實問題或需求分解成多個模型并將他們用代碼標識出來,最終讓計算機能夠進行處理或計算這個過程離不開編程思想及編寫程序(函數)。本文以數據中心基礎設施管理系統DCIM(Data Center Infrastructure management)為例,簡要討論模塊化編程案例。

1、DCIM系統需求及架構設想

在設計較復雜的程序時,一般采用自頂向下的方法,將問題劃分為幾個部分,各個部分再進行細化,直到分解為較好解決問題為止。利用函數,不僅可以實現程序的模塊化,使得程序設計更加簡單和直觀,而且還可以把程序中經常用到的一些計算或操作編寫成通用函數,以供隨時調用。

DCIM(數據中心基礎設施管理系統)接入數據中心電力運行、配電監控系統、環境監控系統和安裝的設備等數據,提供電力容量管理、溫濕度監控管理、UPS電池監控管理、動環告警管理、設備管理、數字運維、能耗分析、智能化巡檢、智能運營等業務功能。使整個數據中心的管理更加智能化,提升整體運維效率及運營水平。

DCIM(數據中心基礎設施管理系統)應采用可靠穩定的操作系統及編程語言(例如本例企圖底層用C語言構建一樣),以保證系統的通用性和安全性。DCIM應采用分層模塊化設計架構,對整個數據中心進行集中管理,并具有良好的擴容性,可在滿足現有需求的同時,可根據后繼不斷擴容的需求,快速靈活地接入新設備、新系統。其架構示意圖1如下所示:

圖片

圖1 DCIM模塊化架構圖

2、將模塊化架構改為功能(函數)

根據需求構建了圖1所示的架構之后,接下來我們通過編程思想嘗試用函數來描述(編程)圖1的各模塊。我們首先用主程序、子程序、子過程等框架把軟件的主要結構和流程描述出來,并定義和調試好各個框架之間的輸入、輸出鏈接關系。模塊化的目的是為了降低程序復雜度,使程序設計、調試和維護等操作簡單化,將上面模塊改為函數后的示意圖如下圖2所示:

圖片

圖2 DCIM的函數示意圖

3、用C語言“實現”各功能(函數)

用C語言開發軟件系統時,為了方便用戶大都采用菜單(menu)方式。軟件運行時,首先在屏幕上顯示出各種功能,用戶只要按一些簡單的鍵,便可以進入相應的功能,就像在飯店點菜一樣。圖3為上述DCIM模擬程序運行后菜單的示意。

圖片

圖3 DCIM模擬程序主菜單

它共有6個功能,用戶只要按一個數字(如“6”),便可進入下一層相應的功能——南向接口。該層又是一個菜單,用戶繼續選擇。

圖片

圖4 DCIM模擬程序子菜單

上圖3和4所對應的部分代碼截圖如下,完整代碼詳見本文附件1:

圖片

圖5 DCIM菜單部分代碼

通常程序實現時,主菜單由主函數提供,下面的各級子菜單由各級子函數提供。最末一級的菜單,才提供一些具體的功能。菜單程序是一種常見的程序。它主要由兩部分內容構成:

(1)顯示菜單——由一些顯示操作提供。

(2)根據用戶的選擇轉向相應的函數——由選擇結構實現。

從這個過程可以看出,編程過程中理解需求并將其改變為合理的結構(或架構)看起來不需要懂代碼而更需要理解業務本身,也是非常關鍵的環(當然編寫程序也很重要)。現實生活中,雖然我們不寫程序,但不知不覺中采用編程思維,比如將一個復雜項目分解多個子項目并制定里程碑事件(整體計劃),之后按階段計劃逐步進入子項目的實施推進。以上菜單的具體實現代碼詳見本文附件1所示的dcim.h頭文件和main.c源文件,具體代碼函的意思不再贅述,感興趣者可以自行測試。在我看來,看此段代碼好比到施工現場看施工過程一樣,只是在這個現場中一個碼農剛剛開始了“搬磚”任務。

4、結束語

也許以上程序給我們產生回到“文本時代”的感覺。雖然這樣文本菜單看起來很過時(或很low),但計算機專業人員反而更喜歡這樣簡單直接或直白的方式跟計算機進行“交流”,不喜歡中間接入“中介”--圖形化界面。大多數非專業用戶喜歡圖形化界面,也是日常生活中計算機常用的形式。

實際上現在DCIM已經跨越了面向過程和面向對象的編程思想,開始應用面向模式的編程思想(即,我們的注意力轉向教授智能機器而不是直接編程,現在討論這些為時過早)。圖像化界面程序開發多數采用面向對象的編程思想,接下來的文章中進一步討論。

附件1:DCIM模擬系統完整代碼

//main.c  源文件
#include 
#include 
#include 
#include "dcim.h"


char printMainMenu();
char printSubMain();


int main() {
  int menuID;
  //init();    //初始化函數,相當于建筑工程中的準備材料并運到現場
  while (1) {
    menuID = printMainMenu();
    switch (menuID) {
    case '1': resourMgmt(); break;
    case '2': performanceMgmt(); break;
    case '3': troubleMgmt(); break;
    case '4': CustomerMgmt(); break;
    case '5': pueMgmt(); break;
    case '6':
      while (1) {
        menuID = printSubMain();
        switch (menuID) {
        case '1': DEMSapi(); break;
        case '2': BAapi(); break;
        case '3': PUEapi(); break;
        case '4': DNCCapi(); break;
        case '5': Pwoer(); break;
        }
        if (menuID == '0') break;
      }
      break;
    case '0': exit(EXIT_SUCCESS);
    }
  }
  //fclose(fp);  --關閉初始化init()函數中打開的文件
  return 0;
}


//打印主菜單
char printMainMenu() {
  char menuID;
  system("cls");
  printf("***********數據中心基礎設施管理系統(DCIM )**********************\\n"); 
  printf("*                                                                *\\n");
  printf("*             ------------------------------------------         *\\n");
  printf("*            |  Data Center Infrastructure management  |         *\\n");
  printf("*             ------------------------------------------         *\\n");
  printf("*                                                                *\\n");
  printf("*                1)資源管理                                      *\\n");
  printf("*                2)性能管理                                      *\\n");
  printf("*                3)故障管理                                      *\\n");
  printf("*                4)客戶管理                                      *\\n");
  printf("*                5)能效管理                                      *\\n");
  printf("*                6)南向接口                                      *\\n");
  printf("*                0)退出軟件                                      *\\n");
  printf("*                                                                *\\n");
  printf("*            -----------------------------------------           *\\n");
  printf("*                  請在上述功能中選擇(1——6)                    *\\n");
  printf("*                                                                *\\n");
  printf("******************************************************************\\n");
  fflush(stdin);
  menuID = getch();
  return menuID;
}


//打印子菜單
char printSubMain() {
  char menuID;
  system("cls");
  printf("*****************南向接口信息*************************************\\n");
  printf("*                                                                *\\n");
  printf("*                1)動力環監控系統                                *\\n");
  printf("*                2)BA樓宇智能化系統                              *\\n");
  printf("*                3)能耗系統                                      *\\n");
  printf("*                4)冷機群控系統                                  *\\n");
  printf("*                5)電力系統                                      *\\n");
  printf("*                0)返回主菜單                                    *\\n");
  printf("*                                                                *\\n");
  printf("******************************************************************\\n");
  fflush(stdin);
  menuID = getch();
  return menuID;
}


//dcim.h  頭文件需要獨立放到另一個文件


int resourMgmt() {


};
  int performanceMgmt() {
    return 0;
  };
  int troubleMgmt() {
    return 0;
  };
  int CustomerMgmt() {
    return 0;
  };
  int pueMgmt() {
    return 0;
  };
  int DEMSapi() {
    return 0;
  };
  int BAapi() {
    return 0;
  };
  int PUEapi() {
    return 0;
  };
  int DNCCapi() {
    return 0;
  };
  int Pwoer() {
    return 0;
  };
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作
    +關注

    關注

    0

    文章

    43

    瀏覽量

    19049
  • 程序
    +關注

    關注

    117

    文章

    3824

    瀏覽量

    82427
  • 函數
    +關注

    關注

    3

    文章

    4371

    瀏覽量

    64209
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    模塊化程序

    現在大家寫程序都是模塊化嗎,就是不同的模塊放在不同的文件夾里。比如所有的h文件放一起,所有的h文件聲明一起,主程序只有一小段就行,很好的,就是剛開始學習
    發表于 11-12 15:15

    VerilogHDL模塊化程序設計

    VerilogHDL模塊化程序設計中文期刊文章作  者:向兵作者機構:[1]綿陽職業技術學院,四川綿陽621000出 版 物:《科技資訊》 (科技資訊)年 卷 期:2017年 第27期摘  要
    發表于 05-04 12:06

    《通過uart協議理解何為接口設計何為模塊化設計(封裝)》含程序和視頻

    該視頻以uart為例,通過簡單的協議來闡述何為接口協議,如何進行模塊化設計(封裝),并完成UART的數據發送和數據接收模塊設計三個部分。一、何為接口協議二、何為模塊化設計三、模塊化
    發表于 07-16 12:37

    嵌入式模塊化程序設計的相關資料分享

    模塊化程序設計是指在進行程序設計時將一個大程序按照功能劃分為若干小程序模塊,每個小程序模塊完成一
    發表于 11-09 08:20

    C語言模塊化程序設計理解

    程序設計語言,在模塊的劃分上主要依據功能(依功能進行劃分在面向對象設計中成為一個錯誤,牛頓定律遇到了相對論),C語言模塊化程序設計需理解如下概念:  (1)
    發表于 12-15 06:34

    C語言模塊化程序設計需理解哪些呢

    (依功能進行劃分在面向對象設計中成為一個錯誤,牛頓定律遇到了>相對論), C語言模塊化程序設計需理解如下概念:(1) 模塊即是一個.c文件和一個.h文件的結合,頭文件(.h)中是對于該模塊
    發表于 12-15 06:04

    嵌入式系統的微模塊化程序設計有何作用

    什么是嵌入式系統的微模塊化程序設計?嵌入式系統的微模塊化程序設計有何作用?
    發表于 12-24 06:35

    模塊化程序設計簡單解釋

    模塊化程序設計模塊化程序設計是指在進行程序設計時將一個大程序按照功能劃分為若干小
    發表于 02-23 06:05

    模塊化程序設計

    模塊化程序設計思想,單片機c語言的模塊化設計,方便移植,將程序封裝備用。
    發表于 03-22 15:29 ?9次下載

    模塊化程序設計

    模塊化程序設計,利用c語言的移植性好特點,更好的利用c語言。
    發表于 03-23 09:25 ?0次下載

    C語言指針用作函數參數模塊化程序設計以及增量測試方法的程序

    本文檔的主要內容詳細介紹的是C語言指針用作函數參數模塊化程序設計以及增量測試方法的程序
    發表于 12-25 08:00 ?1次下載
    C語言指針用作函數參數<b class='flag-5'>模塊化</b><b class='flag-5'>程序設計</b>以及增量測試方法的<b class='flag-5'>程序</b>

    電賽模塊化程序案例下載

    電賽模塊化程序案例下載
    發表于 05-26 09:41 ?12次下載

    嵌入式軟件開發之模塊化程序設計(三)

    模塊化程序設計是指在進行程序設計時將一個大程序按照功能劃分為若干小程序模塊,每個小程序模塊完成一
    發表于 11-03 21:06 ?10次下載
    嵌入式軟件開發之<b class='flag-5'>模塊化</b><b class='flag-5'>程序設計</b>(三)

    c++程序設計_基于proteus的51單片機開發實例30-模塊化程序設計

    1. 基于proteus的51單片機開發實例30-模塊化程序設計1.1. 實驗目的模塊化程序設計不知不覺我們的51單片機開發實例已經進行到第三十篇了,是時候進行一個總結和反思了,總結什
    發表于 11-21 15:36 ?13次下載
    c++<b class='flag-5'>程序設計</b>_基于proteus的51單片機開發實例30-<b class='flag-5'>模塊化</b><b class='flag-5'>程序設計</b>

    嵌入式軟件架構設計之模塊化

    模塊化程序設計是指在進行程序設計時將一個大程序按照功能劃分為若干小程序模塊,每個小程序模塊完成一
    的頭像 發表于 02-15 14:42 ?1281次閱讀
    嵌入式軟件架構設計之<b class='flag-5'>模塊化</b>
    主站蜘蛛池模板: 岛国三级在线看 | 欧美色图亚洲自拍 | 亚洲a区视频 | 毛片视频免费网站 | 欧美性野久久久久久久久 | 免费成人黄色 | 欧美黄免在线播放 | 黄色w站 | 国产handjob手交在线播放 | 91综合在线视频 | 久久久夜 | 麒麟色欧美影院在线播放 | 天天色综合天天 | 国产乱子伦一区二区三区 | 高清国产美女在线观看 | 久久国产精品亚洲综合 | 欧美zooz人禽交免费 | 嫩草影院入口一二三免费 | 韩国三级床戏合集 | 99午夜高清在线视频在观看 | 激情婷婷色 | 永久免费看www色视频 | 在线免费色 | 美女一级a毛片免费观看 | 国产精品毛片天天看片 | 狼人射综合| 一级毛片真人免费播放视频 | 午夜免费r级伦理片 | 色天使亚洲综合在线观看 | 国色天香精品亚洲精品 | 午夜在线播放视频 | 日本污视频 | 一区二区不卡在线观看 | 香港三级理论在线观看网站 | 国产性大片黄在线观看在线放 | 高清视频黄色录像免费 | 天堂bt资源新版在线 | 九九99久久精品影视 | 国产伦精品一区二区免费 | 二级黄绝大片中国免费视频0 | 婷婷久操 |