精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

使用LABwindows/CVI軟件搭建學生管理器界面(二)

CHANBAEK ? 來源:小陳是個工程師 ? 作者:xiaoxiaodawei ? 2023-01-16 14:17 ? 次閱讀

上期使用LABwindows/CVI這個軟件搭建了學生管理器的UI界面,這期就是將UI界面中各個控件編程,使其能夠實現一定的功能。

關鍵詞:控件編程;

01控件編程

1.1、生成控件的頭文件內容

生成框架代碼之后,我們應該可以在uir同名的h文件中看到CVI為我們生成了如下代碼,包含了CVI框架運行、CVI用戶界面運行所需要的基本函數的聲明與定義。 show.h是界面文件show.uir的頭文件庫,包含了界面中的控件的定義與聲明:

頭文件內柔如下所示:

/**************************************************************************/
/* LabWindows/CVI User Interface Resource (UIR) Include File              */
/*                                                                        */
/* WARNING: Do not add to, delete from, or otherwise modify the contents  */
/*          of this include file.                                         */
/**************************************************************************/
#include 
#ifdef __cplusplus
    extern "C" {
#endif
     /* Panels and Controls: */
#define  PANEL                1       /* callback function: MainCallBack */
#define  PANEL_STRING_Name  2       /* control type: string, callback function: (none) */
#define  PANEL_BTN_Change    3       /* control type: command, callback function: MainPanelBtnCallback */
#define  PANEL_BTN_Show      4       /* control type: command, callback function: MainPanelBtnCallback */
#define  PANEL_BTN_insert      5       /* control type: command, callback function: MainPanelBtnCallback */
#define  PANEL_BTN_Delete     6       /* control type: command, callback function: MainPanelBtnCallback */
#define  PANEL_BTN_Add       7       /* control type: command, callback function: MainPanelBtnCallback */
#define  PANEL_NUM_Student_Insert  8       /* control type: numeric, callback function: (none) */
#define  PANEL_NUM_Student        9       /* control type: numeric, callback function: (none) */
     /* Control Arrays: */
     /* (no control arrays in the resource file) */
     /* Menu Bars, Menus, and Menu Items: */
     /* (no menu bars in the resource file) */
     /* Callback Prototypes: */
int  CVICALLBACK MainCallBack(int panel, int event, void *callbackData, int eventData1, int eventData2);
int  CVICALLBACK MainPanelBtnCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
#ifdef __cplusplus
    }
#endif

1.2、添加的文件

程序如下:

#include 
#include   //CVI運行時庫(CVI Run-Time Engine)  
#include //CVI用戶界面庫(CVI User Interface)  
#include  //包含了C、C++語言的最常用的系統函數
#include "show.h"

1.3、添加結構體

結構體程序如下:

static int panelHandle;
//為面板的全局句柄,當對面板或者面板上的控件進行操作時經常用到
#define LEN sizeof(struct Student) //宏定義節點長度得命名
#define TYPE struct Student      //宏定義結構體變量命名
struct Student                   //定義一個學生類型結構體,包括學號,分數
{
  char Name[20];
  int Number;
  TYPE *Next;             //next是指針變量,指向結構體變量
};
TYPE *Head = NULL;         //定義頭指針地址,全局變量
TYPE *PTmp = NULL;        //定義新開辟結點變量,全局變量

以下就是五個按鍵對應的功能函數

1.4、動態鏈表函數

代入如下:

TYPE* Creat(void)                //定義函數,此函數返回一個指向鏈表頭的指針
{
  char Name[20] = {0};          //定義保存姓名的數組
  int Number = 0;        //定義保存姓名的整形
  GetCtrlAttribute(panelHandle, PANEL_STRING_Name, ATTR_CTRL_VAL, Name);   
//得到PANEL_STRING_Name字符框中字符串給Name
  GetCtrlAttribute(panelHandle, PANEL_NUM_Student, ATTR_CTRL_VAL, &Number); 
//得到PANEL_SPANEL_NUM_Student整形框中字符串給Number 
  if((strlen(Name) < 1) || (Number < 1))    
//根據輸入的數據長度來判斷學生數據是否輸入有誤
  {
    MessagePopup("提示", "請重新輸入...");  //顯示對話消息對話框
  }
  else
  {
    PTmp = (struct Student *)malloc(sizeof(struct Student));//開辟新的結點空間
    memset(PTmp, 0, sizeof(struct Student));        // 將空間清零
    PTmp->Number = Number;              //結點中保存學號,姓名
    strcat(PTmp->Name, Name);
    struct Student *PMov = Head;                  //每次都返回頭指針
    if(Head == NULL)
    {
      Head = PTmp;                  //把第一個結點給頭指針
    }
    else
    {
      while(PMov->Next)              //循環從頭到尾找指針域
       {
         PMov = PMov->Next;
      }
      PMov->Next = PTmp;              //找到指針域后更新
    }
    printf("新添加了1個學生:%s 學號:%d號\\n", PTmp->Name, PTmp->Number);  
//顯示添加信息
  }
  return (Head);                                       //返回首地址
}

1.5、刪除結點函數

代碼如下:

void delet(TYPE* head)                   //定義結點刪除函數
{
  TYPE* p = head, * in;                  //定義兩邊指針
  int i = 0;                          //定義記錄值
  char Name[20] = {0};             //定義姓名數組
  GetCtrlAttribute(panelHandle, PANEL_STRING_Name, ATTR_CTRL_VAL, Name);
//得到PANEL_STRING_Name字符框中字符串給Name  
  while ((strcmp(p->Name, Name) !=0)  && p != NULL)                     
//找到對應姓名并且不為空的結點
  {
    in = p;                            //找到左邊的
    p = p->Next;                       //找到右邊的
    i++;
  }
  if (p != NULL) 
  {
    printf("刪除的學生為:%s 學號:%d號\\n", p->Name, p->Number); //顯示刪除信息
    in->Next = p->Next;                                      //將左右鏈接
    free(p);                                                 //釋放中間結點
  }
  else {
    MessagePopup("提示", "學生節點不存在...");             //顯示對話消息對話框  
  }
}

1.6、鏈表顯示函數

代碼如下:

void print(TYPE * head)                    //定義將鏈表輸出函數
{
  TYPE * p;                           //定義指針
  p = head;                            //使p指向第一個結點
  int count = 0;                         //記錄多少哥結點數
  if(Head == NULL)                  //判斷是否為空
  {
    MessagePopup("提示", "表中不包含任何學生...");  //顯示對話消息對話框 
  }
  else
  if(head!=NULL)                                  //輸出第一個結點后的信息
    do {
      printf("第%d個學生:%s 學號:%d號\\n", ++count, p->Name, p->Number);
//顯示結點信息 
      p = p->Next;                              //指向下個結點
    } while (p != NULL);
}

1.7、鏈表的插入

代碼如下:

void insert(TYPE* head) {             //定義鏈表的插入函數
  TYPE* p = head, * in;             //定義首尾指針
  int i = 0;               //記錄值
  int n;               //定義插入的地方
  char Name[20] = {0};         //定義姓名數組 ,學號
  int Number = 0;
  GetCtrlAttribute(panelHandle, PANEL_NUM_Student_Insert, ATTR_CTRL_VAL, &n); 
//得到PANEL_NUM_Student_Insert整形中數據給n
  while (i < (n-1) && p != NULL) {
    p = p->Next;
    i++;                       //找到相應結點
  }
  if (p != NULL) {
    in = (TYPE*)malloc(sizeof(TYPE));  //開辟新的空間
    memset(in, 0, sizeof(struct Student));  //清零
    GetCtrlAttribute(panelHandle, PANEL_STRING_Name, ATTR_CTRL_VAL, Name);   //得到PANEL_STRING_Name字符中數據給Name 
      GetCtrlAttribute(panelHandle, PANEL_NUM_Student, ATTR_CTRL_VAL, &Number);//得到PANEL_NUM_Student整形中數據給Number 
    in->Number = Number;     
    strcat(in->Name, Name);            //復制信息給in->Name   
    printf("插入學生:%s 學號:%d號\\n",  in->Name, in->Number); //顯示插入的信息
    in->Next = p->Next; 
//填充in節點的指針域,也就是說把in的指針域指向p的下一個節點
    p->Next = in;       //填充p節點的指針域,把p的指針域重新指向in
  }
  else {
    MessagePopup("提示", "表中不包含任何學生...");//顯示對話消息對話框 
  }
}

1.8、鏈表的修改

代碼如下:

void change(TYPE* head)       //修改指定位置的結點的信息函數
{
  TYPE* p = head;          //傳入首地址
  int i = 0;            //記錄值 
  char Name[20] = {0};      //定義姓名數組 ,學號 
  int Number = 0;   
  GetCtrlAttribute(panelHandle, PANEL_STRING_Name, ATTR_CTRL_VAL, Name); 
//得到PANEL_STRING_Name字符中數據給Name  
  while ((strcmp(p->Name, Name) !=0) && p != NULL) {            
 //找到對應姓名并且不為空的結點  
    p = p->Next;
    i++;
  }                         //找到相應的位置結點
  if (p != NULL) {
    GetCtrlAttribute(panelHandle, PANEL_STRING_Name, ATTR_CTRL_VAL, Name);   //得到PANEL_STRING_Name字符中數據給Name  
      GetCtrlAttribute(panelHandle, PANEL_NUM_Student, ATTR_CTRL_VAL, &Number);//得到PANEL_NUM_Student整形中數據給Number
p->Number = Number;      //保存學號
    printf("修改的學生:%s 學號:%d號\\n",  p->Name, p->Number); //顯示修改的信息
  }
  else 
    MessagePopup("提示", "表中不包含該學生"); //顯示對話消息對話框
  }

下期就是講解控件怎么回調!!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LabWindows
    +關注

    關注

    15

    文章

    62

    瀏覽量

    47928
  • 管理器
    +關注

    關注

    0

    文章

    242

    瀏覽量

    18493
  • CVI
    CVI
    +關注

    關注

    9

    文章

    41

    瀏覽量

    22181
  • 控件編程
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5098
  • ui界面
    +關注

    關注

    0

    文章

    11

    瀏覽量

    1569
收藏 人收藏

    評論

    相關推薦

    關于LabWindows/CVI和Labview

    最近在學習LabWindows/CVI,想找個學習網站,最后就找到了這個Labview的網站,不知道有沒有人用LabWindows/CVI
    發表于 07-04 15:49

    美國國家儀器(NI)軟件Labview,Labwindows cvi,Motion,Vision,DAQ開發與培訓

    `` 本帖最后由 wuxi2010 于 2016-3-7 16:42 編輯 1)Labview(Labwindows cvi)與access/SQL server數據庫程序開發 2
    發表于 02-29 12:21

    采用LabWindows CVI的飛行模擬應用

    載體,以LabWindowsCVI為開發環境,主要面向學生演示飛機的飛行的姿態(縱向、升降、傾向、俯仰、橫滾和航向)以及飛行過程中各種儀器儀表的變化,使學生對飛機的飛行原理以及駕駛技
    發表于 07-12 07:37

    一種LabWindows/CVI與MATLAB混合編程的實現

    Labwindows/CVI 是一套面向測控領域的優秀軟件開發平臺;MATLAB 具有強大的數據處理函數庫和多樣且簡易的繪圖方法。本文提出的修改LabWindows/
    發表于 06-24 09:29 ?52次下載

    LabWindows/CVI基礎教程

    LabWindows/CVI基礎教程:LabWindows/CVI是National Instruments公司推出的一套面向測控領域的軟件
    發表于 07-23 08:22 ?0次下載

    基于多CPU和LabWindows/CVI 的行車記錄儀系統

    介紹基于多CPU 和LabWindows/CVI 的行車記錄儀系統,闡述了主機的硬件和軟件的設計方法和數據分析軟件的實現。
    發表于 08-31 17:40 ?142次下載

    cvi 8.0 下載 (NI LabWindows 電子測量)

    NI LabWindows/CVI 8.0 (電子測量): NI LabWindows CVI 8.0 最新完整版,專業強大的用于測試、測量與控制開發
    發表于 01-26 09:36 ?883次下載
    <b class='flag-5'>cvi</b> 8.0 下載 (NI <b class='flag-5'>LabWindows</b> 電子測量)

    NI宣布推出ANSI C開發環境LabWindows/CVI

    NI 宣布推出ANSI C開發環境LabWindows/CVI 2009  美國國家儀器有限公司(National Instruments,簡稱NI)近日宣布推出LabWindows/CVI
    發表于 01-16 10:27 ?1082次閱讀

    LabWindows_CVI多線程技術在油門測試軟件中的應用_倪

    LabWindows_CVI多線程技術在油門測試軟件中的應用_倪笑宇
    發表于 01-13 21:40 ?3次下載

    LabWindows教程之LabWindows CVI的虛擬儀器設計與應用教材免費下載

    本文檔的主要內容詳細介紹的是LabWindows教程之LabWindows CVI的虛擬儀器設計與應用教材免費下載。 本書詳盡、系統地介紹了NI公司推出的一種虛擬儀器軟件設計平臺——
    發表于 12-03 08:00 ?153次下載

    LabWindows CVI在USB2. 0接口數據采集在開發中的應用

    文章介紹了虛擬儀器軟件LabWindows/CVI在USB2. 0接口數據采集中的應用, 闡述了利用LabWindows/
    發表于 07-02 15:37 ?28次下載
    <b class='flag-5'>LabWindows</b> <b class='flag-5'>CVI</b>在USB2. 0接口數據采集<b class='flag-5'>器</b>在開發中的應用

    Labwindows CVI的簡介說明

    CVI全稱LabWindows/CVI,是一個用于測試和測量的ANSI C開發環境,使用CVI編寫測控軟件,能夠極大地提高工程師和科學家們的
    發表于 03-17 08:00 ?19次下載
    <b class='flag-5'>Labwindows</b> <b class='flag-5'>CVI</b>的簡介說明

    使用LABwindows/CVI軟件搭建學生管理器界面(一)

      學習完鏈表就需要將其加以應用,這期使用LABwindows/CVI創建一個學生管理器,其中用到了鏈表的知識以及LABwindows/
    的頭像 發表于 01-16 14:07 ?4898次閱讀
    使用<b class='flag-5'>LABwindows</b>/<b class='flag-5'>CVI</b><b class='flag-5'>軟件</b><b class='flag-5'>搭建</b><b class='flag-5'>學生</b><b class='flag-5'>管理器</b><b class='flag-5'>界面</b>(一)

    使用LABwindows/CVI軟件搭建學生管理器界面(三)

    上期對LABwindows/CVI建立的學生管理器的UI界面中的控件進行編程,但是沒有做回調處理,這期主要對其中控件進行回調函數的設計!
    的頭像 發表于 01-16 14:21 ?2295次閱讀

    LabWindows CVI基本學習教程

    本書主要介紹了LabWindows/CVI 6.0 下的C語言編程技術教程,主要內容有: LabWindows/CVI 6.0 的集成開發環境,面板、控件和菜單的設計,交互式代碼生成,
    發表于 05-30 14:27 ?15次下載