武漢理工大學(xué)c課程設(shè)計報告書
《武漢理工大學(xué)c課程設(shè)計報告書》由會員分享,可在線閱讀,更多相關(guān)《武漢理工大學(xué)c課程設(shè)計報告書(28頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、武漢理工大學(xué)《測控系統(tǒng)應(yīng)用軟件實訓(xùn)》課程設(shè)計說明書 課程設(shè)計任務(wù)書 學(xué)生姓名: 李文瑤 專業(yè)班級: 測控1103班 指導(dǎo)教師: 胡劍 韓雪 工作單位: 機電學(xué)院測控系 題 目: 測控系統(tǒng)應(yīng)用軟件實訓(xùn)——產(chǎn)品質(zhì)量監(jiān)測系統(tǒng)設(shè)計 初始條件: 日光燈試驗臺是用來檢測點亮日光燈的整流器或逆變器是否合格的裝置,通過多次測量燈管兩端的電壓和電流,再通過分析,來驗證整流器或逆變器工作是否正常。單個整流器或逆變器有不同功率之分,也有可以同時點亮日光燈個數(shù)多少之分。檢測一個
2、整流器或逆變器,下位機大概會產(chǎn)生30組左右的電壓和電流數(shù)據(jù)。 本實訓(xùn)的目標(biāo)是設(shè)計一個產(chǎn)品質(zhì)量監(jiān)測系統(tǒng),保存日光燈試驗臺下位機產(chǎn)生的數(shù)據(jù)信息,并時行產(chǎn)品合格檢查、產(chǎn)品質(zhì)量查詢、分類統(tǒng)計和報表打印操作,以期使產(chǎn)品的質(zhì)量管理工作系統(tǒng)化、規(guī)范化、自動化,從而提高生產(chǎn)效率。 設(shè)計功能要求: 1、儀器檢測結(jié)果的輸入,包括記錄號、檢修日期、儀器編號、儀器類型、儀器功率、儀器點亮日光燈個數(shù)、檢測人員、檢測記錄。除檢測人員和檢測記錄由工作人員在計算機上直接輸入外,其他項都通過串口讀入。 2、儀器檢測數(shù)據(jù)的輸入,包括記錄號、儀器編號、檢測電壓、檢測電流。一條儀器檢測結(jié)果對應(yīng)多條檢測數(shù)據(jù)。 3、儀器檢測數(shù)
3、據(jù)以圖形方式顯示變化趨勢。 4、儀器檢測信息的查詢、修改和刪除。 5、儀器類型和功率代碼管理。 6、儀器檢測信息的報表和打印處理。(選做) 7、密碼和權(quán)限管理,不同權(quán)限用戶具有不同的操作權(quán)力。(選做) 系統(tǒng)功能模塊設(shè)計: 對上述各項功能進行集中分塊,按結(jié)構(gòu)化程序設(shè)計的要求,得到如圖1所示的系統(tǒng)功能模塊圖。 要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求) 1.合理進行數(shù)據(jù)庫設(shè)計,數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)包括以下部分: 1)儀器檢測結(jié)果信息表,保存檢測結(jié)果記錄,包括:記錄號、檢測日期、儀器編號、儀器類型、儀器功率、儀器額定點亮日光燈個數(shù)、儀器溫升
4、、檢測時間間隔、檢測人員、檢測記錄。 2)儀器檢測數(shù)據(jù)信息表,保存檢測數(shù)據(jù)記錄,包括:記錄號、儀器編號、檢測電壓、檢測電流。 3)儀器類型信息表:記錄號、儀器類型。 4)儀器功率信息表:記錄號、儀器功率。 5)記錄號計數(shù)數(shù)據(jù)表,用于保存其他表格所需的記錄號,包括:記錄號名稱、記錄號計數(shù)值。 6) 用戶信息表:工號、用戶名、密碼、權(quán)限。(選用) 圖1 系統(tǒng)功能模塊圖 2.進行相應(yīng)的功能模塊設(shè)計,包括: 1)串口通信設(shè)計;(學(xué)習(xí)) 2)數(shù)據(jù)模塊設(shè)計; 3)系統(tǒng)主窗體設(shè)計; 4)檢測數(shù)據(jù)分析設(shè)計; 5)檢測結(jié)果查詢設(shè)計; 6)
5、報表打印設(shè)計;(選做) 7) 安全管理設(shè)計。(選做) 3.設(shè)計并繪制各個模塊與函數(shù)的軟件流程圖,流程圖要模塊化并具有可讀性(根據(jù)流程圖知道程序功能實現(xiàn)過程);編制模塊化源程序; 4.編寫并調(diào)試完整的程序代碼 (所有自定義的單元文件名、控件名、函數(shù)名、變量名不能與示例程序同名); 5. 按學(xué)校課程設(shè)計說明書撰寫規(guī)范提交一份課程設(shè)計說明書(6000字左右),設(shè)計說明書應(yīng)詳細(xì)說明設(shè)計思路、工作流程和軟件設(shè)計與實現(xiàn)界面。 時間安排: 序 號 內(nèi) 容 所 用 時 間 1 布置課程設(shè)計任務(wù),查閱資料,總體方案設(shè)計 1天 2 設(shè)計軟件
6、流程圖 1天 3 數(shù)據(jù)庫設(shè)計 1天 4 軟件編寫 4天 5 撰寫設(shè)計說明書 2天 6 答辯 1天 合 計 10天 指導(dǎo)教師簽名: 年 月 日 系主任(或責(zé)任教師)簽名: 年 月 日 目錄 1. 緒論 4 2. 整體模塊設(shè)計 4 3. 代碼管理模塊
7、 5 3.1類型代碼管理 5 3.2功率代碼管理 5 4. 檢測模塊 6 5. 4.1開始檢測 6 4.2停止檢測 8 5.
8、查詢模塊 9 5.1結(jié)果查詢 9 5.2工位查詢 19 6.數(shù)據(jù)表瀏覽模塊 20 7.數(shù)據(jù)修改模塊 22 8.打印報表模塊
9、24 9.幫助模塊 25 10.總結(jié)與體會 27 11.參考文獻 28 1.緒論 自工業(yè)革命以來,人類已經(jīng)越來越意識到機器性工作的可代替性是多么的重要。也正是由于這一點,自動化制造業(yè)得到了飛速的發(fā)展,到如今已經(jīng)達到一個非常成熟的形態(tài)。而作為當(dāng)代一名當(dāng)代的中國大學(xué)生,尤其是像我們這樣的與制造業(yè)有關(guān)的工科專業(yè)學(xué)生,在這樣的時代大潮中自然不能落于人后。在
10、自身專業(yè)知識學(xué)習(xí)過程中要全力以赴,抓住任何機會充實自己。 而恰好學(xué)校安排了測控系統(tǒng)軟件設(shè)計這一課程讓我們學(xué)習(xí)和鍛煉,更要珍惜這樣的機會。主題是制作一個質(zhì)量檢測軟件,利用日光燈試驗臺來檢測點亮日光燈的整流器或逆變器是否合格,并且通過多次測量燈管兩端的電壓和電流,再通過分析,來驗證整流器或逆變器工作是否正常。單個整流器或逆變器有不同功率之分,也有可以同時點亮日光燈個數(shù)多少之分。檢測一個整流器或逆變器,下位機大概會產(chǎn)生30組左右的電壓和電流數(shù)據(jù)。 總結(jié)之,本實訓(xùn)的目標(biāo)是設(shè)計一個產(chǎn)品質(zhì)量監(jiān)測系統(tǒng),保存日光燈試驗臺下位機產(chǎn)生的數(shù)據(jù)信息,并時行產(chǎn)品合格檢查、產(chǎn)品質(zhì)量查詢、分類統(tǒng)計和報表打印操作,以期使
11、產(chǎn)品的質(zhì)量管理工作系統(tǒng)化、規(guī)范化、自動化,從而體現(xiàn)自動化制造業(yè)帶來的高效率和收益。 產(chǎn)品質(zhì)量監(jiān)測系統(tǒng) 安全管理模塊 代碼管理模塊 檢測模塊 查詢模塊 打印預(yù)覽模塊 密碼與權(quán)限管理 退出系統(tǒng) 類型代碼 功率代碼 開始檢測 停止檢測 結(jié)果查詢 工位查詢 數(shù)據(jù)表瀏覽模塊 數(shù)據(jù)修改模塊 2.整體模塊設(shè)計 圖1 程序總體設(shè)計結(jié)構(gòu)圖 3. 代碼管理模塊 3.1類型代碼管理 (1)程序代碼 void __fastcall TF_Main::M_TypeClick(TObject *Sender) {
12、//類型代碼編輯 F_Assist->ADOT_Count->First();//設(shè)定記錄號計數(shù)數(shù)據(jù)表當(dāng)前活動記錄是第一條記錄 F_Assist->ADOT_Count->MoveBy(2);//下移兩條記錄至計數(shù)表中的儀器類型 F_Assist->DBLookupListBox1->ListField="";//先賦空值以免系統(tǒng)拋出異常 F_Assist->DBLookupListBox1->KeyField="";//先賦空值以免系統(tǒng)拋出異常 F_Assist->DB
13、LookupListBox1->ListSource=DataModule1->DS_Type;//賦儀器類型表 F_Assist->DBLookupListBox1->KeyField="Type_ID";//賦類型記錄號字段 F_Assist->DBLookupListBox1->ListField="Type_Name";//賦類型名稱字段 F_Assist->Label2->Caption="儀器類型代碼表"; F_Assist->ShowModal
14、(); //打開輔助資料窗體 } (2)運行結(jié)果 圖2 儀器類型代碼界面 3.2功率代碼管理 (1)程序代碼 void __fastcall Ttcw::M_PowerClick(TObject *Sender) { x=2; F_Assist->ADOT_Count->TableName="Industry_Power";//功率代碼編輯 F_Assist->ADOT_Count->Open(); F_Assist->ADOT_Count->Edit(); DataModule1-&g
15、t;AT_Power->Open(); DataModule1->AT_Power->Edit(); F_Assist->ADOT_Count->First();//設(shè)定記錄號計數(shù)數(shù)據(jù)表當(dāng)前活動記錄是第一條記錄 F_Assist->ADOT_Count->MoveBy(2);//下移兩條記錄至計數(shù)表中的儀器功率 F_Assist->DBLookupListBox1->ListField="";//先賦空值以免系統(tǒng)拋出異常 F_Assist->DBLookupListBox1->K
16、eyField="";//先賦空值以免系統(tǒng)拋出異常 F_Assist->DBLookupListBox1->ListSource=DataModule1->DS_Power;//賦儀器功率代碼表 F_Assist->DBLookupListBox1->KeyField="Power_ID";//賦功率記錄號字段 F_Assist->DBLookupListBox1->ListField="Power_Name";//賦功率名稱字段 F_Assist->Label2
17、->Caption="儀器功率代碼表"; F_Assist->Show(); //打開輔助資料窗體 } (2)運行結(jié)果 圖3 儀器功率代碼界面 4.檢測模塊 4.1開始檢測 (1)流程圖 圖4 流程圖 (2)程序代碼 void __fastcall Ttcw:M_StartClick(TObject *Sender) { //打開串口,開啟JudgeTimer定時器定時測控串口 MainMenu->Items->Items[2]->Enabled=false;//使開始檢測菜單項非能 MainMen
18、u->Items->Items[3]->Enabled=True;//停止檢測菜單項使能 if(Com1->PortOpen==True)//如果串口已打開,則關(guān)閉之 Com1->PortOpen=false; Com1->PortOpen=True; //打開串口 Com1->InBufferCount=0;//消除輸入緩沖區(qū)的內(nèi)容 Com1->OutBufferCount=0;//消除輸出緩沖區(qū)的內(nèi)容 if(!Com1->PortOpen) //判斷串口初始化是否失敗并顯示 ShowMessa
19、ge("串口初始化失敗"); JudgeTimer->Enabled=true; //開啟串口監(jiān)聽定時器 RE_Mess->Lines->Add("串口初始化成功,正在監(jiān)聽");//在RichEdit控件顯示串口狀態(tài) RE_Mess->Lines->Add("用戶可以開始檢測數(shù)據(jù)"); } (3)運行結(jié)果 圖5 開始檢測后界面 4.2停止檢測 (1)程序代碼 void __fastcall Ttcw::M_PauseClick(TObject *Sender) { //關(guān)閉
20、串口,關(guān)閉JudgeTimer定時器定時測控串口 MainMenu->Items->Items[2]->Enabled=True;//開始檢測菜單項使能 MainMenu->Items->Items[3]->Enabled=false;//停止檢測菜單項非能 JudgeTimer->Enabled=false; //關(guān)閉串口監(jiān)聽定時器 Com1->PortOpen=false; //關(guān)閉串口 RE_Mess->Lines->Add("串口已關(guān)閉,與下位機通信中斷");//在RichEdit控件顯
21、示串口狀態(tài) } (2)運行結(jié)果 圖6 停止檢測后界面 5.查詢模塊 5.1結(jié)果查詢 (1)程序代碼以及對應(yīng)程序結(jié)果 #include <vcl.h> #pragma hdrstop #include "Query.h" #include "DM.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*
22、.dfm" TF_Query *F_Query; //--------------------------------------------------------------------------- __fastcall TF_Query::TF_Query(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TF_Query::CB
23、_TimeClick(TObject *Sender) { //判斷時間查詢復(fù)選框是否選中,以決定各單選按鈕是否能使用 if(CB_Time->Checked) { //若時間框選中,則各單選按鈕被激活 RadioButton1->Enabled= true ; // RadioButton2->Enabled= true ; // RadioButton3->Enabled= true ; // } else {//否則,各單選按鈕處于失效狀態(tài) RadioButton1->Enabled= false
24、 ; // RadioButton2->Enabled= false ; // RadioButton3->Enabled= false; // } } //--------------------------------------------------------------------------- void __fastcall TF_Query::CB_CodeClick(TObject *Sender) {//判斷編號查詢復(fù)選框是否被選中 if(CB_Code->Checked) { M_Code->En
25、abled=true ;//memo控件被激活 Label2->Enabled=true;//標(biāo)簽控件被激活 } else { //memo與標(biāo)簽控件失效 M_Code->Enabled=false; Label2->Enabled=false; } } //--------------------------------------------------------------------------- 圖7 時間設(shè)定查詢界面 圖8時間設(shè)定查詢結(jié)果 //------------------------------
26、--------------------------------------------- void __fastcall TF_Query::CB_TypeClick(TObject *Sender) { //判斷類型查詢是否選中 if(CB_Type->Checked) E_Type->Enabled=true; else E_Type->Enabled=false; } 圖9按類型查詢界面 圖10類型查詢結(jié)果 void __fastcall TF_Query::CB_PowerClick(TObject *Sender)
27、 { //判斷功率查詢是否選中 if(CB_Power->Checked) E_Power->Enabled=true; else E_Power->Enabled=false; }//--------------------------------------------------------------------------- 圖11按功率查詢界面 圖12功率查詢結(jié)果 void __fastcall TF_Query::CB_NumClick(TObject *Sender) { //判斷管數(shù)查詢是否選中 if(C
28、B_Num->Checked) { E_Num->Enabled=true; UpDown->Enabled=true; } else { E_Num->Enabled=false; UpDown->Enabled=false; }} 圖13 按管數(shù)查詢界面 圖14 按管數(shù)查詢結(jié)果 void __fastcall TF_Query::B_CancelClick(TObject *Sender) { DataModule1->AQ_Record->Close();//關(guān)閉檢測記錄數(shù)據(jù)源
29、 DataModule1->AQ_Record->SQL->Clear();//清除SQL語句 DataModule1->AQ_Record->SQL->Add("SELECT * FROM Industry_Record"); DataModule1->AQ_Data->Close();//關(guān)閉檢測數(shù)據(jù)數(shù)據(jù)源 DataModule1->AQ_Data->SQL->Clear();//清除SQL語句 DataModule1->AQ_Data->SQL->Add("S
30、ELECT * FROM Industry_Record,Industry_Data"); DataModule1->AQ_Record->Open();//執(zhí)行SQL語句,打開檢測記錄表 DataModule1->AQ_Data->Open();//執(zhí)行SQL語句,打開檢測數(shù)據(jù)表 F_Query->Close();//關(guān)閉檢測數(shù)據(jù)查看窗口 } //--------------------------------------------------------------------------- void __fas
31、tcall TF_Query::B_QueryClick(TObject *Sender) {//查詢按鈕單擊事件 if(!CB_Time->Checked&&!CB_Type->Checked&&!CB_Power->Checked &&!CB_Num->Checked&&!CB_Code->Checked) //若沒有查詢條件 { Application->MessageBoxA("沒有查詢條件,請選擇或輸入","查詢出錯",MB_
32、OKCANCEL); return; } String str1="Industry_Record.Record_Type='" + E_Type->Text + "'", str2="Record_Type='" + E_Type->Text + "'", str3="Industry_Record.Record_Power='" + E_Power->Text + &quo
33、t;'", str4="Record_Power='" + E_Power->Text + "'"; DataModule1->AQ_Record->Close();//關(guān)閉檢測記錄數(shù)據(jù)源 DataModule1->AQ_Record->SQL->Clear();//清除SQL語句 DataModule1->AQ_Record->SQL->Add("SELECT * FROM Industry_Record WHERE &q
34、uot;); //增加一條SQL語句,從檢測記錄表中提取數(shù)據(jù)記錄 DataModule1->AQ_Data->Close();//關(guān)閉檢測數(shù)據(jù)數(shù)據(jù)源 DataModule1->AQ_Data->SQL->Clear();//清除SQL語句 DataModule1->AQ_Data->SQL->Add("SELECT * FROM Industry_Record,Industry_Data WHERE Industry_Record.Record_SNumber=Industry_Data.Data_SNumber
35、 AND "); //增加一條SQL語句,從檢測記錄表、檢測數(shù)據(jù)表中提取數(shù)據(jù)記錄 //時間查詢 if(CB_Time->Checked) { DataModule1->AQ_Record->SQL->Add(" Record_Date BETWEEN :timel1 AND :timel2"); DataModule1->AQ_Data->SQL->Add(" Record_Date BETWEEN :timer1 AND :timer2"); //ti
36、mel1、2,timer1、2是在SQL語句中自定義的變量 if(RadioButton1->Checked) //當(dāng)天查詢 { DataModule1->AQ_Record->Parameters->ParamByName("timel1")->Value= StrToDateTime(DateToStr(Now())+" 00:00:00"); DataModule1->AQ_Record->Parameters->ParamByName(&q
37、uot;timel2")->Value= StrToDateTime(DateToStr(Now())+" 23:59:59"); DataModule1->AQ_Data->Parameters->ParamByName("timer1")->Value= StrToDateTime(DateToStr(Now())+" 00:00:00"); DataModule1->AQ_Data->Parameters->Pa
38、ramByName("timer2")->Value= StrToDateTime(DateToStr(Now())+" 23:59:59"); } if(RadioButton2->Checked) //本周查詢 { TDateTime *DT=new TDateTime(); *DT=Now(); int convert[]={0,6,0,1,2,3,4,5};//國內(nèi)外一周的起止不一樣 TDateTime Monday=DT->operato
39、r-(convert[DT->DayOfWeek()]); //DayofWeek()取得今天是一周內(nèi)的第幾天,再進行當(dāng)前星期一的日期推算 DataModule1->AQ_Record->Parameters->ParamByName("timel1")->Value= StrToDateTime(DateToStr(Monday)+" 00:00:00"); DataModule1->AQ_Record->Parameters->ParamByName(
40、"timel2")->Value= StrToDateTime(DateToStr(Now())+" 23:59:59"); DataModule1->AQ_Data->Parameters->ParamByName("timer1")->Value= StrToDateTime(DateToStr(Monday)+" 00:00:00"); DataModule1->AQ_Data->Parameters->
41、;ParamByName("timer2")->Value= StrToDateTime(DateToStr(Now())+" 23:59:59"); } if(RadioButton3->Checked) //本月查詢 { unsigned short i,j,k; Now().DecodeDate(&i,&j,&k);//提取當(dāng)前的年月日,分別存入變量i,j,k DataModule1->AQ_Record->Paramet
42、ers->ParamByName("timel1")->Value= StrToDateTime(IntToStr(i)+'-'+IntToStr(j)+"-01 00:00:00"); DataModule1->AQ_Record->Parameters->ParamByName("timel2")->Value= StrToDateTime(DateToStr(Now())+" 23:59:59");
43、 DataModule1->AQ_Data->Parameters->ParamByName("timer1")->Value= StrToDateTime(IntToStr(i)+'-'+IntToStr(j)+"-01 00:00:00"); DataModule1->AQ_Data->Parameters->ParamByName("timer2")->Value= StrToDateTime(DateToStr(N
44、ow())+" 23:59:59"); } } //類型查詢 if(CB_Type->Checked) { if(CB_Time->Checked) {//如果前面已經(jīng)添加了時間查詢,則需要加AND條件同時成立運算符 DataModule1->AQ_Record->SQL->Add(" AND "); DataModule1->AQ_Data->SQL->Add(" AND "); } DataModule1->
45、;AQ_Record->SQL->Add(str1); DataModule1->AQ_Data->SQL->Add(str2); } //功率查詢 if(CB_Power->Checked) { if(CB_Time->Checked||CB_Type->Checked) {//如果前面已經(jīng)添加了時間查詢或類型查詢,則需要加AND條件同時成立運算符 DataModule1->AQ_Record->SQL->Add(" AND "); DataModul
46、e1->AQ_Data->SQL->Add(" AND "); } DataModule1->AQ_Record->SQL->Add(str3); DataModule1->AQ_Data->SQL->Add(str4); } //編號查詢 if(CB_Code->Checked) { if(M_Code->Text.IsEmpty()) { //如果無編號 Application->MessageBoxA("請輸入編號&q
47、uot;,"查詢出錯",MB_OK); M_Code->SetFocus();//焦點至編號輸入框 return; } if(CB_Time->Checked||CB_Type->Checked||CB_Power->Checked) { //如果前面已經(jīng)添加了其他查詢,則需要加AND條件同時成立運算符 DataModule1->AQ_Record->SQL->Add(" AND "); DataModule1->AQ_Data->
48、;SQL->Add(" AND "); } DataModule1->AQ_Record->SQL->Add("("); DataModule1->AQ_Data->SQL->Add("("); //可能包含多個編號,需用括號括起來 for(int i=0;i<M_Code->Lines->Count;i++) { if(M_Code->Lines->Strings[i].IsEmpty())contin
49、ue; DataModule1->AQ_Record->SQL->Add(Format("Record_SNumber='%s%s%s'", ARRAYOFCONST(("",M_Code->Lines->Strings[i],"")))); //利用format函數(shù)進行參數(shù)賦值 DataModule1->AQ_Data->SQL->Add(Format("Data_SNumber='%s%s%s
50、9;", ARRAYOFCONST(("",M_Code->Lines->Strings[i],"")))); //利用format函數(shù)進行參數(shù)賦值 if(i!=M_Code->Lines->Count-1) { DataModule1->AQ_Record->SQL->Add(" OR "); DataModule1->AQ_Data->SQL->Add(" OR "
51、;); } else { DataModule1->AQ_Record->SQL->Add(" )"); DataModule1->AQ_Data->SQL->Add(" ) "); } } } 圖15多編號查詢界面 圖16 多編號查詢結(jié)果 //管數(shù)查詢 if(CB_Num->Checked) { if(CB_Time->Checked||CB_Type->Checked||CB_P
52、ower->Checked||CB_Code->Checked) { //如果前面已經(jīng)添加了其他查詢,則需要加AND條件同時成立運算符 DataModule1->AQ_Record->SQL->Add(" AND "); DataModule1->AQ_Data->SQL->Add(" AND "); } DataModule1->AQ_Record->SQL->Add(" Record_LNumber=:lightl1&quo
53、t;); DataModule1->AQ_Record->Parameters->ParamByName("lightl1")->Value=E_Num->Text; DataModule1->AQ_Data->SQL->Add(" Record_LNumber=:lightr1"); DataModule1->AQ_Data->Parameters->ParamByName("lightr1")->Value=E_Num->Text
54、; } DataModule1->AQ_Record->Open();//執(zhí)行SQL語句,打開檢測記錄表 DataModule1->AQ_Data->Open();//執(zhí)行SQL語句,打開檢測數(shù)據(jù)表 Close();//關(guān)閉查詢窗口 DataModule1->AQ_RecordRecord_Date->DisplayFormat="yyyy-mm-dd"; //定義檢測記錄表中檢測日期顯示格式 ((TDateTimeField *)(DataModule1->AQ_Data->FieldByN
55、ame("Record_Date")))->DisplayFormat="yyyy-mm-dd"; //定義檢測數(shù)據(jù)表中檢測日期顯示格式 } (2) 運行結(jié)果分析:經(jīng)過實際操作發(fā)現(xiàn)各個功能均正常,并且各函數(shù)對應(yīng)的功能劃分比較清晰。 5.2工位查詢 (1)程序代碼 void __fastcall TF_Main::M_LabNumberClick(TObject *Sender) { //對指定工位的檢測裝置進行數(shù)據(jù)獲取 F_LabNo->ShowModal();//打開工位號輸入窗口? if(F_LabNo-&
56、gt;ModalResult==mrOk) { //如果窗體操作結(jié)果是用戶確定按鈕 //通過串口發(fā)送用戶所要獲取的指定工位的請求數(shù)據(jù) char buff[4]; buff[0]=0x02; buff[1]=0x70+F_LabNo->E_Num->Text.ToInt(); buff[2]=0x03; buff[3]=0x31; SendData(StrPas(buff)); //在狀態(tài)欄顯示 RE_Mess->Lines->Add(F_LabNo->E_Num->
57、;Text+"號工位查詢請求已發(fā)送"); } } (2)運行結(jié)果 圖17 程序工位查詢界面 圖18 工位號查詢結(jié)果 6.數(shù)據(jù)表瀏覽模塊 (1)程序代碼 #include <vcl.h> #pragma hdrstop #include "Data.h" #include "DM.h" #include "Print.h" //-------------------------------------------------------------------
58、-------- #pragma package(smart_init) #pragma resource "*.dfm" TF_Data *F_Data; //--------------------------------------------------------------------------- __fastcall TF_Data::TF_Data(TComponent* Owner) : TForm(Owner) { } //------------------------------------------------
59、--------------------------- void __fastcall TF_Data::FormCreate(TObject *Sender) { //窗體創(chuàng)建事件 DataModule1->DS_Data->Enabled=true; //檢測數(shù)據(jù)表使能 DataModule1->DS_Record->Enabled=true;//? //檢測記錄表使能 } //--------------------------------------------------------------------------- vo
60、id __fastcall TF_Data::BB_ConfirmClick(TObject *Sender) { DataModule1->AQ_Record->Post();//遞交檢測記錄表數(shù)據(jù) ? } //--------------------------------------------------------------------------- void __fastcall TF_Data::BB_CancelClick(TObject *Sender) { DataModule1->AQ_Record->Cancel();/
61、/取消檢測記錄表數(shù)據(jù)更新? } //--------------------------------------------------------------------------- void __fastcall TF_Data::BB_PrintClick(TObject *Sender) { F_Print->QuickRep1->Preview() ;//顯示報表預(yù)覽? } void __fastcall TF_Data::BB_QuitClick(TObject *Sender) { F_Data->Close();//關(guān)閉檢測數(shù)據(jù)
62、查看窗體 ? } void __fastcall TF_Data::BitBtn1Click(TObject *Sender) { DataModule1->AT_Data->Post() ;//遞交檢測數(shù)據(jù)表的數(shù)據(jù)更新? } void __fastcall TF_Data::BitBtn2Click(TObject *Sender) { DataModule1->AT_Data->Cancel();//取消檢測數(shù)據(jù)表的數(shù)據(jù)更新? } void __fastcall TF_Data::BitBtn3Click(TObject *Sender)
63、 { DataModule1->AT_Data->Append() ;//追加檢測數(shù)據(jù)表的數(shù)據(jù)? } void __fastcall TF_Data::BitBtn4Click(TObject *Sender) { DataModule1->AT_Data-> Delete();//刪除檢測數(shù)據(jù)表中的一條記錄 } (2)運行結(jié)果 圖19 檢測數(shù)據(jù)查看界面 7.數(shù)據(jù)修改模塊 (1)程序代碼 void __fastcall Ttcw::BitBtn3Click(TObject *Sender) { //增加檢測記錄表中的一條記錄,數(shù)據(jù)
64、輸入完后,點”提交“增加,點”取消“則不增加 DataModule1->AQ_Record->Append();//使檢測記錄表進入追加記錄狀態(tài) } void __fastcall Ttcw::BitBtn4Click(TObject *Sender) { //刪除檢測記錄表中的一條記錄,需同時刪除檢測數(shù)據(jù)表中的對應(yīng)的記錄 int Record_No; DataModule1->AT_Data->Open(); Record_No=DataModule1->AQ_Data->RecordCount;//取得當(dāng)前檢測記錄表中的總記錄數(shù)
65、 DataModule1->AT_Data->Last();//設(shè)定當(dāng)前記錄為最后一條記錄 for(int i=0; i<Record_No ; i++) { //刪除檢測數(shù)據(jù)表中指定編號的所有記錄 DataModule1->AT_Data->Delete(); } DataModule1->AQ_Record->Delete() ; //刪除檢測記錄表中的一條記錄 } void __fastcall Ttcw::BitBtn1Click(TObject *Sender) { DataModule1->
66、;AQ_Record->Post();//提交數(shù)據(jù) } void __fastcall Ttcw::BitBtn2Click(TObject *Sender) { DataModule1->AQ_Record->Cancel(); //取消數(shù)據(jù)提交 } (2)運行結(jié)果 圖20 數(shù)據(jù)的更改 圖21數(shù)據(jù)的刪除 8.打印報表模塊 (1)程序代碼 #include <vcl.h> #pragma hdrstop #include "Print.h" #include "DM.h"
67、 //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TF_Print *F_Print; //--------------------------------------------------------------------------- __fastcall TF_Print::TF_Print(TComponent* Owner)
68、 : TForm(Owner) { } //--------------------------------------------------------------------------- (2)運行結(jié)果: 圖22打印報表運行結(jié)果 9.幫助模塊 (1)程序代碼 #include <vcl.h> #pragma hdrstop #include "help.h" #include "main.h" //----------------------------------------------
69、----------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TF_help *F_help; //--------------------------------------------------------------------------- __fastcall TF_help::TF_help(TComponent* Owner) : TForm(Owner) { } //----------------------------
70、----------------------------------------------- void __fastcall TF_help::Button1Click(TObject *Sender) { Label2->Caption="版本1.0" ; } (2)運行結(jié)果 圖23程序幫助界面1 圖24程序幫助界面 10.總結(jié)與體會 這次測控系統(tǒng)軟件設(shè)計課程讓我花費了非常多的時間:一方面是查閱各種相關(guān)的書籍資料,以此補充自己略顯單薄的理論知識;另外一方面也是最重要的部分,就是理論結(jié)合實際,動手編制軟件,這個過程尤其艱難。同時,
71、我也體會到了將理論知識運用到實際是非常困難的,它需要考慮到多方面的因素,同時也會有對很多方面知識有一定把握的要求。所以,鑒于難度非常大,老師也降低了難度,將一部分代碼發(fā)給了我們,但是畢竟是第一次做這樣規(guī)模的軟件設(shè)計,頓時感覺到很大的挑戰(zhàn)性。盡管如此,總部能因此而放棄,所以不論怎樣也會堅持做完。在這個艱難制作的過程中認(rèn)識到了自己有很多的不足,在以后的學(xué)習(xí)生活中我要努力的學(xué)習(xí)新的知識并且盡量找機會去練習(xí),只有理論結(jié)合實踐的學(xué)習(xí)我們才能夠在以后的工作中得心應(yīng)手。另外,還有一點非常重要,這次的設(shè)計任務(wù)完成過程中碰到了許多疑惑,老師們非常耐心詳細(xì)的給我做了解答,在此我非常敬佩老師的敬業(yè)態(tài)度和細(xì)心的教導(dǎo)! 11.參考文獻 1. 鄭莉 董淵 何江舟.C++語言程序設(shè)計(第四版) . 清華大學(xué)出版社,2010年 2. 譚浩強.C++程序設(shè)計.北京:清華大學(xué)出版社,2004年 3. 陸衛(wèi)忠 劉文亮.C++Builder6程序設(shè)計教程(第二版).科學(xué)出版社,2009年 4. 楊愛民.數(shù)據(jù)庫技術(shù)實踐教程.浙江大學(xué)出版社,2008年 5. ??藸枺ㄗ髡撸?劉忠田 袁兆山(譯者).C編程思想(兩卷合訂本)機械工業(yè)出版社,2005年 28
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- C語言課件第十三章
- 三年級數(shù)學(xué)上冊-3-測量第4課時-千米的認(rèn)識(2)課件-新人教版
- 三年級下冊課件用估算解決問題人教版
- 細(xì)胞的能量轉(zhuǎn)換──線粒體和葉綠體課件
- 施耐德培訓(xùn)ModiconM340串行通訊課件
- 《余角和補角》課件-(高效課堂)獲獎-人教數(shù)學(xué)2022--
- 余光中《鄉(xiāng)愁》課件
- 一元二次方程 (2)(教育精品)
- 八年級語文下冊-第2單元-情鑄詩魂-5《大堰河——我的保姆》作業(yè)課件-(新版)語文版
- 小學(xué)英語五年級上冊-(牛津譯林版)--Unit-6-My-e-friend-Story-time公開課ppt課件
- 譯林牛津一年級下Unit5-What's-this第三課時課件
- 第十八章第3節(jié) 測量小燈泡的電功率
- 第十五講 山地的形成 課件34
- 人教部編版語文一年級上冊《識字2-金木水火土》教學(xué)課件小學(xué)優(yōu)秀公開課
- 八年級語文上冊現(xiàn)代文閱讀教學(xué)課件:說明文閱讀-考點十三---辨別說明方法及其作用-答題模板及模板示例(共44