實驗五--模板與異常處理_第1頁
實驗五--模板與異常處理_第2頁
實驗五--模板與異常處理_第3頁
實驗五--模板與異常處理_第4頁
實驗五--模板與異常處理_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

皖西學(xué)院信息工程學(xué)院School of Information and Engineering, West Anhui University面向?qū)ο蠓椒ㄅcC+程序設(shè)計實驗報告 專 業(yè)計算機科學(xué)與技術(shù)專業(yè)班 級計科1202班姓 名柯冬生學(xué) 號任課教師何富貴 實驗五 模板與異常處理(2學(xué)時)學(xué)號: 姓名:柯冬生 班級:計科1202班 成績:實驗名稱:模板與異常處理實驗地點:綜合樓207所使用的工具軟件及環(huán)境:Microsoft Visual C+ 6.0一、實驗?zāi)康模海?)正確理解模板的概念。(2)掌握函數(shù)模板和類模板的聲明和使用方法。(3)學(xué)習(xí)簡單的異常處理方法。二、實驗內(nèi)容:1.分析并調(diào)試下列程序,寫出運行結(jié)果并分析原因。 (1) /test6_1_1.cpp #include using namespace std; template T max (T x,T y) return xy? x:y;int max(int a,int b)return ab? a:b;double max (double a,double b)return ab? a:b;int main() cout”max(3,7) is “max(3,7)endl; return 0;(2)/test6_1_2.cpp #include using namespace std;int max(int a,int b)return ab? a:b;double max (double a,double b)return ab? a:b;int main() cout”max(3,7) is “max(3,7)endl; return 0;代碼:(1) #include using namespace std; template T max(T x,T y) return xy?x:y; int max(int a,int b) return ab?a:b; double max(double a,double b) return ab?a:b; int main() coutmax(3,7) is max(3,7)endl; return 0; (2)#include using namespace std; int max(int a,int b) return ab?a:b; double max(double a,double b) return ab?a:b; int main() coutmax(3,7) is max(3,7)endl; return 0; 實驗結(jié)果:(1) 定義了一個求最大值的函數(shù)模板,定義了一個求整型最大值的函數(shù)以及一個求雙精度型最大值的函數(shù),這兩個同名非模板函數(shù)與函數(shù)模板重載.3和7均是字符型,找不到與之匹配的函數(shù),所以調(diào)用了函數(shù)模板,使其實例化,由T型轉(zhuǎn)變?yōu)閏har型。(2)定義了一個求整型最大值的函數(shù)以及一個求雙精度型最大值的函數(shù),這兩個同名函數(shù)重載.3和7均是字符型,找不到與之匹配的函數(shù),所以得不出正確結(jié)果。2.編寫一個求任意類型數(shù)組中最大元素和最小元素的程序,要求將求最大元素和最小元素的函數(shù)設(shè)計成函數(shù)模板。代碼:#include using namespace std; template T max (T * x,int n) T max=x0; for(int i=1;ixi? max:xi; return max; template T min (T * x,int n) T min=x0; for(int i=1;in;i+) min=minxi? min:xi; return min; int main() int a5= 1,4,2,3,5 ; double b5=1.1,4.4,2.2,3.3,5.5; cout數(shù)組a5= 1,4,2,3,5的最大值is: max(a,5)endl; cout數(shù)組a5= 1,4,2,3,5的最小值is: min(a,5)endl; cout數(shù)組b5=1.1,4.4,2.2,3.3,5.5的最大值is: max(b,5)endl; cout數(shù)組b5=1.1,4.4,2.2,3.3,5.5的最小值is: min(b,5)endl; return 0; 實驗結(jié)果:3. 編寫一個程序,使用類模板對數(shù)組元素進行排序、倒置、查找和求和?!咎崾尽吭O(shè)計一個類模板template class Array .;具有對數(shù)組元素進行排序、倒置、查找和求和功能,然后產(chǎn)生類型實參分別為int型和double型的兩個模板類,分別對整型數(shù)組與雙精度數(shù)組完成所要求的操作。代碼:#include using namespace std; template class Array1 public: Array1 (Type *a,int length) len=length; for(int i=0;ilen;i+) Arrayi=ai; /template void sort()/排序 Type a10 ,temp; for(int n=0;nlen;n+) an=Arrayn; for(int j=0;jlen;j+) for (int i=0;iai+1) temp=ai; ai=ai+1; ai+1=temp; cout數(shù)組排序endl; for(int m=0;mlen;m+) coutam coutendl; /template void invert()/倒置 Type invert10; for(int j=0;jlen;j+) invertj=Arraylen-1-j; cout數(shù)組倒置endl; for(int m=0;mlen;m+) coutinvertm coutendl; void seek(Type y)/查找 int i=0; for(int j=0;jlen;j+) if(Arrayj=y) cout查找成功!在第j位置endl; i=j; / break; if(i=0) cout查找不成功!endl; /template void sum()/求和 Type sum=Array0; for(int j=1;jlen;j+) sum=sum+Arrayj; cout數(shù)組之和:sumendl; private: int len; Type Array10; ; int main() int c5=1,8,2,7,9; double d4=3.1,8.9,56.9,2.9; Array1a(c,5); Array1b(d,4); cout*int型數(shù)組*endl; cout原函數(shù)為:endl; for(int i=0;i5;i+) coutci ; coutendl; a.sort(); a.invert(); a.seek(3); a.sum(); cout*double型數(shù)組*endl; cout原函數(shù)為:endl; for(int j=0;j4;j+) coutdj ; coutendl; b.sort(); b.invert(); b.seek(8.9); b.sum(); return 0; 實驗結(jié)果:4.編寫一個程序,求輸入數(shù)的平方根。設(shè)置異常處理,對輸入負數(shù)的情況給出提示。代碼:#include #include using namespace std; void main() double number; double result; cout number; try if (number 0) throw exception(輸入的數(shù)是負數(shù)! ); result = sqrt(number); cout 平方根是: result endl; catch (exception e) cout e.what() endl; 實驗結(jié)果:3、 實驗總結(jié):1.在使用非模板函數(shù)時要注意輸入的語句應(yīng)符合函數(shù)的類型,或者定義一個函數(shù)模板使其實例化,否則無法得出正確結(jié)論。2.對異常處理有了一些理解,但不知道異常處理(如第4題)可以循環(huán)嗎?3.對用類模板實現(xiàn)線性表不是很懂。 任課教師簽名: 實驗六 C+的流類庫與輸入輸出(2學(xué)時)學(xué)號: 姓名:柯冬生 班級:計科1202班 成績:實驗名稱:C+的流類庫與輸入輸出實驗地點:綜合樓207所使用的工具軟件及環(huán)境:Microsoft Visual C+ 6.0一、實驗?zāi)康模海?)掌握C+格式化的輸入輸出方法。(2)掌握重載運算符“”的方法。(3)掌握磁盤文件的輸入輸出方法。二、實驗內(nèi)容:1. 下面給出的test7_1_1.cpp程序用于打印九九乘法表,但程序中存在錯誤。請上機調(diào)試,使得此程序運行后,能夠輸出如下所示的九九乘法表。* 1 2 3 4 5 6 7 8 91 12 2 43 3 6 9 4 4 8 12 165 5 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81/test7_1_1.cpp#include #include using namespace std;int main() int i,j; cout”*”; for(i=1;i=9;i+)couti” ”; coutendl;for(i=1;i=9;i+) couti; for(j=1;j=i;j+) Couti*j;return 0;代碼:#include #include using namespace std;int main()int i,j;coutsetiosflags(ios:right)setw(4)*;for(i=1;i=9;i+)coutsetiosflags(ios:right)setw(4)i;coutendl;for(i=1;i=9;i+) coutsetiosflags(ios:right)setw(4)i;for(j=1;j=i;j+)coutsetiosflags(ios:right)setw(4)i*j;coutendl;return 0;實驗結(jié)果:2.下面的程序用于統(tǒng)計文件xyz.txt中的字符個數(shù),請?zhí)羁胀瓿沙绦颉?/test7_2_1.cpp #include #include using namespace std; int main() char ch;int i=0;ifstream file;file.open(“xyz.txt”,ios:in);if( ) cout”xyz.txt cannot open”endl; abort();While (!file.eof() i+; cout”文件字符個數(shù):”iendl; return 0;代碼:#include#includeusing namespace std;int main()char ch;int i=0;ifstream file;file.open(xyz.txt,ios:in);if(!file) coutxyz.txt cannot openendl;abort();while (!file.eof()file.get(ch);if(ch=97)|(ch=65)i+;cout文件字符個數(shù):iendl; file.close();return 0;實驗結(jié)果: 3.重載運算符“”,使其能夠輸入一件商品的信息和輸出這件商品的信息。商品的信息由編號、商品名和價格。假如商品類Merchandise的框架如下:class merchandisepublic: Merchandiss(); Merchandiss(); friend istream& operator(istream& in,Merchandiss& s); friend ostream&operatormer; coutmer; return 0;代碼:#includeclass Merchandisepublic:Merchandise();Merchandise();friend istream&operator(istream& in,Merchandise& s);friend ostream&operator(istream& in,Merchandise& s)coutinput the Merchandises:endl;couts.no;;couts.price;return in;ostream&operator(ostream& out,Merchandise& s)outMerchandise:endl;outno:s.noendl;outname:endl;outprice:s.pricemer;coutmer;return 0;實驗結(jié)果:4.編寫一個程序,將兩個文本文件連接成一個文件,然后將此文件中所有小寫字母轉(zhuǎn)換成大寫字母,并打印出來。代碼:#include#includeusing namespace std;int main()char ch;ifstream file1;ifstream file2;ofstream file3;file1.open(xyz.txt,ios:in);file2.open(qwe.txt,ios:in);file3.open(asd.txt,ios:out);if(!file1 | !file2) coutxyz.txt cannot openendl;abort();file1.seekg(0);file2.seekg(0);while(!file1.eof()file1.get(ch);if(ch=97)ch = ch-32;file3.put(ch);coutch;while(!file2.eof()file2.get(ch);if(ch=97)ch = ch-32;file3.put(ch);coutch;file1.close();file2.close();file3.close();return 0;實驗結(jié)果: 3、 實驗總結(jié):通過這次試驗,我學(xué)習(xí)掌握了C+格式化的輸入輸出方法,掌握了重載運算符“”的方法,掌握了磁盤文件的輸入輸出方法,能夠更加熟悉地運用Visual C+ 6.0的系統(tǒng)。 任課教師簽名: 實驗七 Windows程序框架及MFC編程(2學(xué)時)學(xué)號: 姓名:柯冬生 班級:計科1202班 成績:實驗名稱:Windows程序框架及MFC編程實驗地點:綜合樓207所使用的工具軟件及環(huán)境:Microsoft Visual C+ 6.0一、實驗?zāi)康模?學(xué)習(xí)windows基于消息事件驅(qū)動方式的程序設(shè)計2學(xué)習(xí)一個完整的窗口編制的四個操作步驟3了解Windows提供的窗口類4了解回調(diào)函數(shù)5學(xué)習(xí)MFC對話框和單文檔編程的一般方法5學(xué)習(xí)使用MSDN幫助解決問題二、實驗內(nèi)容:1寫一個Win32 Application應(yīng)用程序,要求當點擊關(guān)閉時,彈出對話框確定關(guān)閉,否則不關(guān)閉。運行初始時,在文檔窗口顯示“Hello”。代碼:/-初始化BOOL CTestDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization hereSetDlgItemText(IDC_EDIT1, hello);return TRUE; / return TRUE unless you set the focus to a control/-提示對話框確定是否關(guān)閉void CTestDlg:OnOK() / TODO: Add extra validation hereint flag;flag = AfxMessageBox(是否確認關(guān)閉?,100,10);if(flag!=6)return;CDialog:OnOK();實驗結(jié)果:2練習(xí)使用VC+的AppWizard(應(yīng)用程序向?qū)В┥梢粋€最簡單的基于MFC單文檔或者基于對話框的應(yīng)用程序。提示:I.單擊File菜單中的New選項,顯示New(新建)對話框。在Project(項目)選項卡中,選擇“Win32 Application”。在Location(位置)文本框中指定一個路徑,在Preject Name(項目名稱)文本框中為項目輸入一個名字,單擊OK(確定)。選擇菜單命令Project | Add to Project | New,彈出New對話框。在new對話框的Files選項卡中選擇C+ Source File,并填入文件名稱,單擊OK按鈕,完成新建C+源程序文件。II.創(chuàng)建一個項目,單擊File菜單中的New選項,顯示New(新建)對話框。在Project(項目)選項卡中,選擇“MFC AppWizard(exe)”。在Location(位置)文本框中指定一個路徑,在Preject Name(項目名稱)文本框中為項目輸入一個名字,單擊OK(確定)。III.在出現(xiàn)的對話框中選擇Single Document或者dialog based,單擊Next(下一步)按鈕。以后每步接受缺省,單擊Finish(完成)按鈕,AppWizard)顯示一個摘要表,其中列出了所選的項目特征。單擊OK(確定)創(chuàng)建項目。IV.編譯、運行。查看各個生成的cpp文件,分析生成的,了解代碼的執(zhí)行過程。代碼:/-確定按鈕void CTestDlg:OnButton1() / TODO: Add your control notification handler code hereCString str = 您選擇的商品有:n;if(CButton*)GetDlgItem(IDC_CHECK1)-GetCheck()=BST_CHECKED)str = str + 青椒肉絲 + n;if(CButton*)GetDlgItem(IDC_CHECK2)-GetCheck()=BST_CHECKED)str = str + 魚香肉絲 + n;if(CButton*)GetDlgItem(IDC_CHECK3)-GetCheck()=BST_CHECKED)str = str + 圓蔥大腸 + n;if(CButton*)GetDlgItem(IDC_CHECK4)-GetCheck()=BST_CHECKED)str = str + 茂林小炒 + n;if(CButton*)GetDlgItem(IDC_CHECK5)-GetCheck()=BST_CHECKED)str = str + 韭菜雞蛋 + n;if(CButton*)GetDlgItem(IDC_CHECK6)-GetCheck()=BST_CHECKED)str = str + 西紅柿雞蛋湯 + n;int flag;flag = AfxMessageBox(str,100,10);if(flag!=6)return;elseMessageBox(訂購成功,訂餐系統(tǒng),0);CDialog:OnOK();/-關(guān)閉按鈕void CTestDlg:OnOK() / TODO: Add extra validation hereint flag;flag = AfxMessageBox(是否確認關(guān)閉?,100,10);if(flag!=6)return;CDialog:OnOK();實驗結(jié)果:3、 實驗總結(jié): 通過這次試驗,我學(xué)習(xí)了windows基于消息事件驅(qū)動方式的程序設(shè)計,一個完整的窗口編制的四個操作步驟,了解了Windows提供的窗口類,了解回調(diào)函數(shù),學(xué)習(xí)到MFC對話框和單文檔編程的一般方法,學(xué)習(xí)使用MSDN幫助解決問題。 任課教師簽名: 實驗八 數(shù)據(jù)庫編程(2學(xué)時)學(xué)號: 姓名:柯冬生 班級:計科1202班 成績:實驗名稱:數(shù)據(jù)庫編程實驗地點:綜合樓207所使用的工具軟件及環(huán)境:Microsoft Visual C+ 6.0一、實驗?zāi)康模?創(chuàng)建數(shù)據(jù)庫unicom.mdb;2在視圖類“DAO數(shù)據(jù)庫View.cpp”文件前面的文件中導(dǎo)入另一個類CStudentInfoDlg,通過#include” StudentInfoDlg”;3控件變量的設(shè)置;4數(shù)據(jù)記錄的顯示。二、實驗內(nèi)容:(1)打開Microsoft Access 2003,創(chuàng)建數(shù)據(jù)庫unicom.mdb(該數(shù)據(jù)庫包含一個表unicom,表的結(jié)構(gòu)和表的內(nèi)容如表6.20所示)。(2)由于DAO要求與Microsoft Access 97數(shù)據(jù)庫進行操作,因此必須將unicom.mdb換成Microsoft Access 97文件格式,轉(zhuǎn)換后的數(shù)據(jù)庫文件名為unicomn,并存放在“桌面”上。轉(zhuǎn)換步驟:打開用Microsoft Access 2003創(chuàng)建的數(shù)據(jù)庫unicom.mdb并選中unicom表,選擇“工具”“數(shù)據(jù)庫使用工具”“轉(zhuǎn)換數(shù)據(jù)庫”“轉(zhuǎn)為Access97文件格式”命令,在出現(xiàn)的對話框中的“文件名(N)”處重起文件名,如unicomn。保存并單擊“確定”按鈕,至此該數(shù)據(jù)庫就轉(zhuǎn)換成Microsoft Access 97文件格式了。注意:當打開轉(zhuǎn)換好的unicomn數(shù)據(jù)庫時,在出現(xiàn)的對話框中,選中“打開數(shù)據(jù)庫”單擊“確定”再單擊“打開”確定雙擊數(shù)據(jù)表的名字,該數(shù)據(jù)庫就打開了。(3)創(chuàng)建一個單文檔應(yīng)用程序,名為:DAO數(shù)據(jù)庫。在“MFC Appwizard-step 2 of 6”對話框中選擇Database view without file support(查看數(shù)據(jù)庫不使用文件支持)選項,單擊Data Source按鈕,出現(xiàn)圖6.55所示的對話框。選擇DAO單選按鈕,單擊按鈕出現(xiàn)如圖6.56所示的對話框,選擇unicomn,單擊“打開”按鈕,發(fā)現(xiàn)處已有C:Documents and Settings Administrator桌面unicomn.mdb,如圖6.57所示。單擊OK按鈕,出現(xiàn)如圖6.58所示的對話框,從中選中unicom數(shù)據(jù)表,單擊OK按鈕回到“MFC Appwizard-step 2 of 6”對話框,單擊Finish按鈕完成操作。(4)打開對話框資源編輯器IDD_DAO_FORM,在對話框上添加如圖6.59布局,如表6.23所示的控件。(5)按Ctrl+W組合鍵,在出現(xiàn)的MFC ClassWizard對話框中打開Member Variables選項卡,為5個編輯框分別添加5個成員變量,如圖6.60所示。 圖6.55 選擇數(shù)據(jù)源 圖6.56 選擇轉(zhuǎn)換后的unicomn數(shù)據(jù)庫 圖6.57 選擇了unicomn數(shù)據(jù)庫 圖6.58 選擇unicom數(shù)據(jù)表 圖6.59 對話框上添加的控件 圖6.60 添加成員變量表6.23 添加控件列表控 件ID標 題Group BoxIDC_STATIC學(xué)生信息Static TextIDC_STATIC學(xué)號Edit BoxIDC_EDIT_ID-Static TextIDC_STATIC姓名Edit BoxIDC_EDIT_NAME-Static TextIDC_STATIC性別Edit BoxIDC_EDIT_SEX-Static TextIDC_STATIC年齡Edit BoxIDC_EDIT_AGE-Static TextIDC_STATIC家庭住址Edit BoxIDC_EDIT_ADDRESS-ButtonIDC_BUTTON_ADD添加記錄(&A)ButtonIDC_BUTTON_EDIT修改記錄(&U)ButtonIDC_BUTTON_DELETE刪除記錄(&D)圖6.61復(fù)制到IDD_DIALOG1 對話框上的控件(6)向項目中添加一個對話框資源,將IDD_DAO_FORM對話框上的“學(xué)生信息”組框以及“學(xué)生信息”組框內(nèi)的各個控件復(fù)制到此對話框(IDD_DIALOG1)上,如圖6.61所示。復(fù)制方法是:選中IDD_DAO_FORM對話框上的組框及組框內(nèi)的各個控件,鼠標對準選中處右鍵單擊,在彈出的快捷菜單中選擇copy命令,然后雙擊項目工作區(qū)中的IDD_DIALOG1選項,出現(xiàn)IDD_DIALOG1對話框,鼠標對準對話框右鍵單擊并選擇Paste命令,就把IDD_DAO_FORM對話框上的控件復(fù)制到IDD_DIALOG1對話框上了。說明:復(fù)制到IDD_DIALOG1對話框上的控件ID與原對話框IDD_DAO_FORM上的控件ID完全相同。(7)為添加的IDD_DIALOG1對話框資源建類,類名為:CStudentInfoDlg,并用ClassWizard為CStudentInfoDlg 類添加5個如表6.24所示的編輯框的成員變量。表6.24 添加成員變量列表類 名ID成員變量名成員變量類型CStudentInfoDlgIDC_EDIT_IDm_idshortCStudentInfoDlgIDC_EDIT_NAMEm_nameCStringCStudentInfoDlgIDC_EDIT_SEXm_sexCStringCStudentInfoDlgIDC_EDIT_AGEm_ageshortCStudentInfoDlgIDC_EDIT_ADDRESSm_addressCString(8)在視圖類“DAO數(shù)據(jù)庫View.cpp”文件前面的文件包含處寫:#include StudentInfoDlg.h在視圖類“DAO數(shù)據(jù)庫View”為圖6.59中的“添加記錄”(IDC_BUTTON_ADD)、“修改記錄”(IDC_BUTTON_EDIT)、“刪除記錄”(IDC_BUTTON_DELETE)按鈕添加BN_CLICKED消息處理函數(shù),并添加代碼:void CDAOView:OnButtonAdd() CStudentInfoDlg m_StudInfoDlg;if(m_StudInfoDlg.DoModal()=IDO

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論