亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        無第三方軟件支持的數(shù)據(jù)庫應用程序開發(fā)

        2014-02-27 01:33:21蔡洪濤田中軒
        武漢工程大學學報 2014年6期
        關(guān)鍵詞:按鈕數(shù)據(jù)庫用戶

        蔡洪濤,田中軒

        武漢工程大學機電工程學院,湖北 武漢 430205

        0 引 言

        材料是壓力容器與設(shè)備設(shè)計過程最重要的參數(shù),它影響到壓力容器與設(shè)備的設(shè)計、制造、安裝與運行.GB150中提供了眾多材料可供設(shè)計選擇[1].這些材料能滿足一般設(shè)計要求;但是隨著材料技術(shù)的進步,新材料不斷出現(xiàn);國際貿(mào)易使得國外材料的選用也日益頻繁.這些都要求能讓用戶方便地在設(shè)備強度計算軟件包中增加新材料、刪除淘汰的老材料.為此軟件包必須提供“用戶材料數(shù)據(jù)庫管理”模塊.其運行界面如圖1所示.

        圖1 用戶材料數(shù)據(jù)庫管理系統(tǒng)界面Fig.1 The interface of user material database management system

        啟動時左邊列表中最后的材料處于選中狀態(tài),右邊則表明該材料的名稱、標準號及材料類型、力學性能等.用戶點擊左邊不同的材料,右邊各項相應做出改變.當點擊“增加”按鈕,則右邊上部各控件清空,下方的表格也消失;當選中“強度數(shù)據(jù)類型”下的任一選項時,又會彈出表格,讓用戶輸入材料力學性能,且表格上方的紅色文字與選項相匹配.當點擊“更新、保存”按鈕,將該材料的各項參數(shù)寫入文件中,并在列表最后增加一行.當點擊“刪除”按鈕時,首先從列表中刪除被選中的一行,然后從文件中刪除這種材料的各項參數(shù),最后將光標移到列表最后一行,右邊顯示該材料的各項參數(shù).

        1 用戶材料數(shù)據(jù)庫管理模塊技術(shù)分析及編程思路

        從圖1中可以看出,運行界面是一個有兩個屬性頁的屬性對話框,屬性頁名分別為“用戶材料數(shù)據(jù)操作(1)”和“用戶材料數(shù)據(jù)操作(2)”.第一頁主要由名為“請選擇材料:”的列表控件和4個成組框控件組成,這4個成組框的名稱分別是“材料類型”、“材料類別”、“應力類別”和“強度數(shù)據(jù)類型”;右下角的是兩個CMSFlexGrid型網(wǎng)格控件,都是10行、2列,用于材料在20個不同溫度下的強度值的輸入.第二頁主要由兩個成組框組成,名稱分別是“基于彈性模量的材料分類”和“基于線膨脹系數(shù)的材料分類”.

        CMSFlexGrid網(wǎng)格控件是Visual C++提供的已注冊的ActiveX控件,以表格的形式顯示和操作數(shù)據(jù).該控件在MSDN中有用于VB的詳細的文檔;但是用于VC的說明卻沒有.該控件不具備對網(wǎng)格的編輯功能.給CMSFlexGrid控件添加編輯功能的思路是[2]:設(shè)置一個編輯框控件,該控件可以在網(wǎng)格控件移動,并與某個單元格重合,在該編輯框控件中輸入數(shù)據(jù),并將該數(shù)據(jù)寫入單元格中.

        在VC環(huán)境下開發(fā)數(shù)據(jù)庫應用程序一般都要采用第三方軟件如Microsoft Office Access、Microsoft Office Excel、Microsoft Visual FoxPro等形成數(shù)據(jù)文件,然后注冊形成數(shù)據(jù)源[3-4],再通過ODBC、DAO或ADO技術(shù)操縱數(shù)據(jù)源以實現(xiàn)對數(shù)據(jù)的管理.本文利用MFC的文件讀寫功能在模塊中形成數(shù)據(jù)文件,不需要第三方軟件的支持.MFC的鏈表類包括CPtrList、CStringList、CobList[5],本文利用CptrList類創(chuàng)建鏈表對象.

        2 用戶材料數(shù)據(jù)庫管理模塊框架的編程實現(xiàn)

        首先啟動VC++6.0,創(chuàng)建一個名為yhmaterial的單文檔工程,該工程視類的基類是CFormView,其余保持默認選項不變.添加兩個對話框資源,其ID分別為IDD_PROPPAGE1和IDD_PROPPAGE2.參照圖1在兩個對話框中添加各控件.對話框IDD_PROPPAGE1中添加各控件后,還要添加一個多余的編輯框控件“Edit”,用于網(wǎng)格控件的編輯化.右下角網(wǎng)格控件的添加方法是點擊工程添加到工程Components and Controls,在彈出的對話框中選擇Registered and ActiveX Controls文件夾,雙擊之,再選擇Microsoft FlexGrid Control,version 6.0,點擊insert按鈕,彈出Confirm Class對話框.選中前面三項,點擊OK.此時在控件工具箱中出現(xiàn)Microsoft FlexGrid Control的圖標.并且在工程的ClassView區(qū)出現(xiàn)剛才選中的三個類:CMSflexGrid、CRowCursor和ColeFont,在工程的FileView區(qū)出現(xiàn)類的頭文件msflexgrid.h、font.h和rowcursor.h及源文件msflexgrid.cpp、font.cpp和rowcursor.cpp.兩次添加Microsoft FlexGrid Control到IDD_PROPPAGE1上.修改其ID分別為IDC_MSFLEXGRID1和IDC_MSFLEXGRID2.參照圖1設(shè)置其屬性,并適當調(diào)節(jié)網(wǎng)格控件所占范圍的大小,使得后面設(shè)置的網(wǎng)格的高度與寬度既能完全顯示出來,又無黑邊.注意設(shè)置四個成組框控件下面第一個控件的“Group”屬性.將列表控件設(shè)置為“Report”屬性.為各控件綁定變量,為這兩個對話框資源添加響應的類Cpage1和Cpage2,并創(chuàng)建屬性對話框.

        此時編譯運行,發(fā)現(xiàn)屬性對話框要么完全顯示出來,但是只占整個視區(qū)的一部分,要么占住整個視區(qū),但是只顯示了一部分,多了兩個滾動條,需要滾動才能看到屬性對話框的各個部位.要想將屬性對話框完全嵌入視區(qū),不出現(xiàn)滾動條,可以添加函數(shù)void CYhmaterialView::OnSize(UINT nType,int cx,int cy).

        void CYhmaterialView::OnSize(UINT nType,int cx,int cy)

        {

        CFormView::OnSize(nType,cx,cy);

        propSheet.SetWindowPos(NULL,0,0,cx,cy,SWP_NOACTIVATE);

        CTabCtrl* m_tabctrl=propSheet.GetTabControl( );//

        m_tabctrl->SetWindowPos(NULL,0,0,cx,cy,SWP_NOACTIVATE);//

        CRect rect;CSize size;

        GetClientRect(&rect);//獲取當前客戶區(qū)view大小

        size.cx=rect.right-rect.left;

        size.cy=rect.bottom-rect.top;

        SetScrollSizes(MM_TEXT,size);//將CScrollView的大小設(shè)置為當前客戶區(qū)大小

        }

        再次編譯運行,發(fā)現(xiàn)無滾動條,調(diào)節(jié)視區(qū)大小(用鼠標拖動),對話框的尺寸也跟著變化,視區(qū)與對話框大小同步.效果如圖1所示.

        3 用戶材料數(shù)據(jù)庫管理各功能的編程實現(xiàn)

        3.1 網(wǎng)格控件的可編輯化

        編輯網(wǎng)格就是在單擊單元格時能接受用戶的輸入.為此按第二節(jié)的思路進行.首先要響應FlexGrid控件的Click事件.利用類向?qū)г陬怌page1中添加響應函數(shù)void Cpage1::OnClickMsflexgrid1()和void Cpage1::OnClickMsflexgrid2().

        當編輯完成釋放焦點之后,將數(shù)據(jù)寫回單元格.此時應該響應CEdit控件的EN_KILLFOCUS事件.利用類向?qū)砑雍瘮?shù)void Cpage1::OnKillfocusEdit().

        3.2 建立材料參數(shù)結(jié)構(gòu)體

        材料參數(shù)眾多,其中最主要的是材料的力學性能指標.由于各種材料適用的溫度范圍不同,故力學性能的個數(shù)也不同.本章給出的溫度等級數(shù)為20(參考GB150),當材料力學性能溫度等級不夠20時,以0補齊溫度與力學性能.構(gòu)建如下的結(jié)構(gòu)體:

        struct CAILIAOCANSHU

        {

        CString name;//材料名稱

        CString biaozhun;//材料標準

        double houdumax,houdumin,wendumin,wendumax,cailiaomidu,sigma,qufu;//最小、最大尺寸,最高、最低適用溫度,材料重度,常溫抗拉強度及屈服極限

        int banfou,gangfou,gaoyinglifou,qiangdulei;//材料形式、材質(zhì)類別、應力高低、應力類別

        double yingli[20];//應力等級值

        double wendu[20];//溫度等級值

        };

        材料形式即板材、鍛件等之分;材質(zhì)類別有碳鋼、不銹鋼、銅、鋁及鈦材之分;應力高低即高應力與低應力.GB150對某些材料在同一個溫度下給出了兩種許用應力,應力較高者僅適用于允許產(chǎn)生微量永久變形的元件;對于法蘭或其他有微量永久變形就引起泄漏或故障的場合則采用較低應力以增加元件的尺寸,增加安全可靠性.

        3.3 用戶材料數(shù)據(jù)庫管理模塊啟動功能的實現(xiàn)

        圖1是啟動界面.可以看出啟動時將文件中的各個材料名稱讀入屬性頁的列表控件中,光標處于最后一個材料,并將這個材料的參數(shù)顯示在屬性頁的各個控件中.用戶點擊任意一個材料名稱,則右邊各控件數(shù)據(jù)跟著變化.如果文件為空,或不存在,則顯示空白的界面,即各個控件為空.

        實現(xiàn)思路是:先將網(wǎng)格控件和列表控件初始化;打開文件,將數(shù)據(jù)讀入材料參數(shù)結(jié)構(gòu)體,形成一個鏈結(jié)點添加到鏈尾,直到文件讀完.再遍歷鏈表,將每一個結(jié)點中對應的材料名稱數(shù)據(jù)及應力類別寫到列表框,并將最后一個材料的參數(shù)寫入各個編輯框中.這些工作可由函數(shù)BOOL Cpage1::OnInitDialog()完成.

        3.4 用戶材料數(shù)據(jù)庫管理模塊各按鈕功能的實現(xiàn)

        “增加”按鈕的功能實現(xiàn).用戶單擊該按鈕時,首先將網(wǎng)格控件隱藏,各控件數(shù)據(jù)清空,將此按鈕變灰,等待用戶輸入數(shù)據(jù),當選擇材料力學性能單選按鈕時,再彈出網(wǎng)格控件,并將網(wǎng)格控件上方的靜態(tài)文本控件的標題做出相應的修改.在Cpage1類中添加“增加”按鈕IDC_BUTTONADD單擊消息響應函數(shù)OnButtonadd().

        在Cpage1類中添加單選按鈕“溫度下許用應力”、“溫度下屈服極限”和“溫度下持久極限”的單擊消息響應函數(shù),以修改網(wǎng)格控件上方的靜態(tài)文本控件的標題.添加WM_CTLCOLOR消息響應函數(shù)HBRUSH Cpage1::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor) ,將靜態(tài)文本標題顏色修改為紅色.

        “更新、保存”按鈕的功能實現(xiàn).首先將用戶輸入的數(shù)據(jù)形成一個結(jié)構(gòu)體,并得到新的鏈節(jié)點添加到鏈尾.此鏈是在函數(shù)OnInitDialog()中形成的.再將新增加的材料名稱及應力類別數(shù)據(jù)寫入列表框的最后面.最后將該材料的數(shù)據(jù)寫入文件末尾;并將本按鈕變灰,恢復“增加”按鈕.

        “刪除”按鈕的功能實現(xiàn).首先在列表框中捕獲用戶要刪除的材料表項,將此表項刪除,然后從鏈表中刪除該材料對應的結(jié)點,并從文件中刪除該材料的數(shù)據(jù)(實際上重寫整個文件),并將最后一個結(jié)點的材料顯示在各個控件中.

        最后還要添加列表框選中表項改變時的消息響應函數(shù)OnItemchangedList1(),并將對應的材料參數(shù)顯示在各個控件中以便用戶查看瀏覽.

        “更新、保存”按鈕單擊響應函數(shù)程序框圖如圖2所示.

        圖2 “更新、保存”按鈕單擊消息響應函數(shù)框圖Fig.2 The block diagram of message response function clicking update and save button

        4 運行結(jié)果及結(jié)論

        本模塊的運行界面如圖1所示,在模塊目錄下生成一個文本文件.實踐表明不需第三方軟件的支持也可以進行數(shù)據(jù)庫應用程序的開發(fā).該方法不需要考慮數(shù)據(jù)源,也不需要考慮安裝目錄問題;只有一個運行文件.在數(shù)據(jù)量不太大的情況下,相比需要第三方軟件的數(shù)據(jù)庫開發(fā)方法,該方法簡單、靈活.

        致 謝

        本人在學習MFC編程的過程中得到武漢工程大學計算機科學與工程學院盧濤博士的指點,在此表示衷心的感謝!

        [1] GB150-2011.《壓力容器》[S].北京:中國標準出版社,2003.

        GB150-2011.Pressure Vessels [S].Beijing:Standards Press of China,2003.(in Chinese)

        [2] 王勇,申延平.在Visual C++中實現(xiàn)MSFlexGrid控件的網(wǎng)格編輯功能[J].電腦編程技巧與維護,2001(10):45-47.

        WANG Yong,SHEN Yan-ping.To achieve Mesh editing functionsof MSFlexGrid control in Visual C++ in[J].Computer Programming Skills & Maintenance,2001(10):45-47.(in Chinese)

        [3] 范冠雄.基于Visual C++的數(shù)據(jù)庫訪問技術(shù)比較研究[J].計算機與數(shù)字工程,2010,38(1):64-66.

        FAN Guan-xiong.Visual C++ based database access technology comparison[J].Computer & Digital Eng ineering,2010,38(1):64-66.(in Chinese)

        [4] 陳偉亞,劉芳芳.地理信息系統(tǒng)在水污染控制規(guī)劃中的應用[J].武漢工程大學學報,2013,35(1):21-26.

        CHEN Wei-ya,LIU Fang-fang.Application of geographic information system technology in planning of water pollution control[J].Journal of Wuhan Institute of Technology,2010,32(7):9-14.(in Chinese)

        [5] Microsoft Developer Network Library Visual Studio 6.0[EB/OL].http://download.csdn.net/download/medium_ck/3973780.[2012-06-12]

        猜你喜歡
        按鈕數(shù)據(jù)庫用戶
        哪個是門鈴真正的按鈕
        當你面前有個按鈕
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        內(nèi)心不能碰的按鈕
        无码人妻精品一区二区三区66| 日本人妻伦理在线播放| 深夜爽爽动态图无遮无挡| 亚洲aⅴ在线无码播放毛片一线天 中国国语毛片免费观看视频 | 大学生粉嫩无套流白浆| 性欧美暴力猛交69hd| 国产成人免费高清激情明星| 亚洲一区二区三区视频免费| 亚洲乱码av中文一区二区| 国产乱国产乱老熟300部视频| 另类免费视频在线视频二区 | 伦伦影院午夜理论片| a级国产乱理伦片在线播放| 色综合久久中文综合久久激情| 肉丝高跟国产精品啪啪| 人妻久久一区二区三区蜜桃| 亚洲国产精品无码专区影院| 538在线啪在线观看| 亚洲综合色自拍一区| 又污又黄又无遮挡的网站| 99国产精品无码专区| 视频区一区二在线观看| 国内少妇毛片视频| 日韩成人无码| 99视频全部免费精品全部四虎| 精品女同一区二区三区在线播放器 | 日韩一本之道一区中文字幕| 欧美人与动性xxxxx杂性| 国模无码人体一区二区| 亚洲图片第二页| 免费观看人妻av网站| 最新系列国产专区|亚洲国产| 久久国产偷| 一区二区三区在线观看视频| 美女脱掉内裤扒开下面让人插| 国产精品久久久久免费观看| 免费无码成人av在线播| chinese国产在线视频| 国产在线视频一区二区三| 亚洲av永久无码精品古装片 | 亚洲AV无码成人网站久久精品|