实验五模板与异常处理_第1页
实验五模板与异常处理_第2页
实验五模板与异常处理_第3页
实验五模板与异常处理_第4页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、皖西学院信息工程学院School of Information and Engineering, West Anhui University面向对象方法与C+程序设计 实验报告专业计算机科学与技术专业班级计科 1202 班姓名柯冬生学号2012013854任课教师何富贵实验五模板与异常处理(2 学时)学号: 2012013854姓名:柯冬生班级:计科1202 班成绩:实验名称 :模板与异常处理实验地点 :综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:( 1)正确理解模板的概念。( 2)掌握函数模板和类模板的声明和使用方法。( 3)学习简单的异常

2、处理方法。二、实验内容:1.分析并调试下列程序,写出运行结果并分析原因。( 1)/test6_1_1.cpp#include <iostream>using namespace std;template<typenameT>T max (T x,T y) return x>y? x:y;int max(int a,int b)return a>b? a:b;double max (doublea,doubleb)return a>b? a:b;intmain() cout<< ”max(3,7)is “<<max( 3,7)&l

3、t;<endl; return 0;(2)/test6_1_2.cpp#include <iostream>using namespace std;int max(int a,int b)return a>b? a:b;double max (doublea,doubleb)return a>b? a:b;intmain() cout<< ”max(3,7) is “<<max( 3,7)<<endl; return 0;代码:(1)#include<iostream>using namespace std;temp

4、late <typename T>T max(T x,T y) return x>y?x:y; int max(int a,int b) return a>b?a:b;double max(double a,double b) return a>b?a:b;int main()cout<<"max('3','7') is "<<max('3','7')<<endl;return 0;( 2)#include<iostream>usin

5、g namespace std;int max(int a,int b) return a>b?a:b;double max(double a,double b) return a>b?a:b; int main()cout<<"max('3','7') is "<<max('3','7')<<endl; return 0;实验结果:(1)定义了一个求最大值的函数模板,定义了一个求整型最大值的函数以及一个求双精度型最大值的函数 ,这两个同名非模板函数与函数模板重载

6、 . 3和 7均是字符型 ,找不到与之匹配的函数 ,所以调用了函数模板 ,使其实例化 ,由 T 型转变为 char型。(2)定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.3和 7均是字符型,找不到与之匹配的函数,所以得不出正确结果。2.编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。代码:#include <iostream>using namespace std;template<typenameT>T max (T * x,int n)T max=x0; for(int i=1;i&

7、lt;n;i+)max=max>xi? max:xi;return max;template<typenameT>T min (T * x,int n) T min=x0; for(int i=1;i<n;i+)min=min<xi? min:xi; return min;intmain() int a5= 1,4,2,3,5 ;double b5=1.1,4.4,2.2,3.3,5.5;cout<<" 数组 a5= 1,4,2,3,5 的最大值is: "<<max(a,5)<<endl;cout<&l

8、t;" 数组 a5= 1,4,2,3,5 的最小值is: "<<min(a,5)<<endl;cout<<" 数组 b5=1.1,4.4,2.2,3.3,5.5 的最大值is: "<<max(b,5)<<endl;cout<<" 数组 b5=1.1,4.4,2.2,3.3,5.5 的最小值 is: "<<min(b,5)<<endl; return 0;实验结果:3.编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。【提示】设计

9、一个类模板template <class Type>class Array.;具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int 型和 double 型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。代码:#include<iostream>using namespace std;template <class Type>class Array1public:Array1 (Type *a,int length) len=length;for(int i=0;i<len;i+)Arrayi=ai;/template &

10、lt;class Type>voidsort()/ 排序Type a10,temp;for(int n=0;n<len;n+)an=Arrayn;for(int j=0;j<len;j+)for (int i=0;i<len-1-j;i+)if (ai>ai+1)temp=ai;ai=ai+1;ai+1=temp;cout<<" 数组排序 "<<endl;for(int m=0;m<len;m+)cout<<am<<" "cout<<endl;/templat

11、e <class Type>voidinvert()/ 倒置Type invert10;for(int j=0;j<len;j+)invertj=Arraylen-1-j;cout<<" 数组倒置 "<<endl;for(int m=0;m<len;m+)cout<<invertm<<" " cout<<endl;voidseek(Type y)/ 查找int i=0;for(int j=0;j<len;j+)if(Arrayj=y)cout<<&quo

12、t; 查找成功! "<<" 在第 "<<j<<" 位置 "<<endl;i=j;/ break;if(i=0)cout<<" 查找不成功! "<<endl;/template <class Type>voidsum()/ 求和Type sum=Array0;for(int j=1;j<len;j+)sum=sum+Arrayj;cout<<" 数组之和: "<<sum<<endl;

13、private:int len;Type Array10;int main()int c5=1,8,2,7,9;double d4=3.1,8.9,56.9,2.9;Array1<int>a(c,5);Array1<double>b(d,4);cout<<"*int型数组 *"<<endl;cout<<" 原函数为: "<<endl;for(int i=0;i<5;i+)cout<<ci<<" "cout<<endl;a.

14、sort();a.invert();a.seek(3);a.sum();cout<<"*double型数组 *"<<endl;cout<<" 原函数为: "<<endl;for(int j=0;j<4;j+)cout<<dj<<" "cout<<endl;b.sort();b.invert();b.seek(8.9);b.sum();return 0;实验结果:4.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。代码:#i

15、nclude <iostream>#include <cmath>using namespace std;void main()double number;double result;cout << " 请输入一个数: "cin >> number;tryif (number < 0)throw exception(" 输入的数是负数! ");result = sqrt(number);cout << " 平方根是: " << result <<

16、 endl;catch (exception e)cout << e.what() << endl;实验结果:三、实验总结:1.在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。2.对异常处理有了一些理解,但不知道异常处理(如第4 题)可以循环吗?3.对用类模板实现线性表不是很懂。任课教师签名:实验六C+ 的流类库与输入输出(2 学时)学号: 2012013854姓名:柯冬生班级:计科1202 班成绩:实验名称 : C+ 的流类库与输入输出实验地点 :综合楼207所使用的工具软件及环境:Microsoft Visu

17、al C+ 6.0一、实验目的:( 1)掌握 C+ 格式化的输入输出方法。( 2)掌握重载运算符“ <<”和“ >> ”的方法。( 3)掌握磁盘文件的输入输出方法。二、实验内容:1. 下面给出的 test7_1_1.cpp 程序用于打印九九乘法表, 但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。*1234567891 12 2 43 3 6 94 4812165 5101520256612182430367714212835424988162432404856649#include <iostream> #include &l

18、t;iomanip> using namespace std; int main()int i,j;cout<< ” * ”;for(i=1;i<=9;i+)cout<<i<< ” ” ;cout<<endl;for(i=1;i<=9;i+) cout<<i; for(j=1;j<=i;j+) Cout<<i*j;return 0;代码:#include <iostream>#include <iomanip>using namespace std;int main()int

19、 i,j;cout<<setiosflags(ios:right)<<setw(4)<<"*"for(i=1;i<=9;i+)cout<<setiosflags(ios:right)<<setw(4)<<i;cout<<endl;for(i=1;i<=9;i+)cout<<setiosflags(ios:right)<<setw(4)<<i;for(j=1;j<=i;j+)cout<<setiosflags(ios:right

20、)<<setw(4)<<i*j;cout<<endl;return 0;实验结果:2. 下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。/test7_2_1.cpp#include<iostream>#include<fstream>using namespace std;int main() char ch; int i=0; ifstream file;file.open( “ xyz.txt ” ,ios:in);if()cout<<” xyz.txt cannot open”<<end

21、l;abort();While (!file.eof()i+;cout<< ”文件字符个数:”<<i<<endl;return 0;代码:#include<iostream>#include<fstream>using namespace std;int main()char ch;int i=0;ifstream file;file.open("xyz.txt",ios:in);if(!file)cout<<"xyz.txt cannot open"<<endl;abo

22、rt();while (!file.eof()file.get(ch);if(ch<=122&&ch>=97)|(ch<=90&&ch>=65)i+;cout<<" 文件字符个数:"<<i<<endl;file.close();return 0;实验结果:3.重载运算符“ <<”和“ >> ”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。假如商品类Merchandise 的框架如下:class merchandisepubl

23、ic:Merchandiss();Merchandiss();friend istream& operator>>(istream& in,Merchandiss& s);friend ostream&operator<<(ostream& out,Merchandiss& s);private:int no;char *name;double price;要求实现该类,并编写以下的main 函数对该类进行操作。int main() Merchandise mer;cin>>mer;cout<<me

24、r;return 0;代码:#include<iostream.h>class Merchandisepublic:Merchandise();Merchandise();friend istream&operator>>(istream& in,Merchandise& s);friend ostream&operator<<(ostream& out,Merchandise& s);private:int no;char *name;double price;Merchandise:Merchandise(

25、)no=0;name = new char20;price = 0;Merchandise:Merchandise()delete name;istream&operator>>(istream& in,Merchandise& s)cout<<"input the Merchandises:"<<endl;cout<<"no:"in>>s.no;cout<<"name:"in>>;cout<<"

26、;price:"in>>s.price;return in;ostream&operator<<(ostream& out,Merchandise& s)out<<"Merchandise:"<<endl;out<<"no:"<<s.no<<endl;out<<"name:"<<<<endl;out<<"price:"<<s.p

27、rice<<endl;return out;int main()Merchandise mer;cin>>mer;cout<<mer;return 0;实验结果:4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。代码:#include<iostream>#include<fstream>using namespace std;int main()char ch;ifstream file1;ifstream file2;ofstream file3;file1.open("

28、xyz.txt",ios:in);file2.open("qwe.txt",ios:in);file3.open("asd.txt",ios:out);if(!file1 | !file2)cout<<"xyz.txt cannot open"<<endl;abort();file1.seekg(0);file2.seekg(0);while(!file1.eof()file1.get(ch);if(ch<=122&&ch>=97)ch = ch-32;file3.put(

29、ch);cout<<ch;while(!file2.eof()file2.get(ch);if(ch<=122&&ch>=97)ch = ch-32;file3.put(ch);cout<<ch;file1.close();file2.close();file3.close();return 0;实验结果:三、实验总结:通过这次试验,我学习掌握了C+ 格式化的输入输出方法,掌握了重载运算符“<<”和“ >>”的方法,掌握了磁盘文件的输入输出方法,能够更加熟悉地运用Visual C+ 6.0 的系统。学号: 201201

30、3854实验七Windows姓名:柯冬生程序框架及MFC班级:计科任课教师签名:编程( 2 学时)1202 班成绩:实验名称 : Windows程序框架及MFC编程实验地点 :综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:1 学习 windows基于消息事件驱动方式的程序设计2 学习一个完整的窗口编制的四个操作步骤3 了解 Windows 提供的窗口类4 了解回调函数5 学习 MFC 对话框和单文档编程的一般方法5 学习使用MSDN 帮助解决问题二、实验内容:1 写一个 Win32 Application 运行初始时,在文档窗口显示“应用程序,

31、要求当点击关闭时,弹出对话框确定关闭,否则不关闭。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 < 0xF000);CMenu* pSysMenu = GetS

32、ystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog.The framework does this automatically/ when

33、 the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization hereSetDlgItemT ext(IDC_EDIT1, "hello");return TRUE;/ return TRUEunless you set the focus to a control/- 提示对话框确定是否关闭void CT estDlg

34、:OnOK()/ TODO: Add extra validation hereint flag;flag = AfxMessageBox("是否确认关闭?",100,10);if(flag!=6)return;CDialog:OnOK();实验结果:2 练习使用VC+ 的 AppWizard (应用程序向导)生成一个最简单的基于MFC 单文档或者基于对话框的应用程序。提示:I.单击 File 菜单中的New 选项,显示 New(新建) 对话框。在 Project (项目)选项卡中, 选择“Win32Application ”。在 Location (位置)文本框中指定一个

35、路径,在PrejectName (项目名称)文本框中为项目输入一个名字,单击OK (确定)。选择菜单命令Project | Add to Project | New,弹出 New 对话框。在 new 对话框的Files 选项卡中选择C+ Source File,并填入文件名称,单击OK 按钮,完成新建C+ 源程序文件。II.创建一个项目,单击File 菜单中的New选项,显示New (新建)对话框。在Project(项目)选项卡中,选择“MFC AppWizard(exe)” 。在 Location (位置)文本框中指定一个路径,在 Preject Name(项目名称)文本框中为项目输入一个名

36、字,单击III.在出现的对话框中选择Single Document或者OK (确定)。dialog based ,单击Next (下一步)按钮。以后每步接受缺省,单击Finish (完成)按钮,AppWizard )显示一个摘要表,其中列出了所选的项目特征。单击OK (确定)创建项目。IV.编译、运行。查看各个生成的cpp 文件,分析生成的,了解代码的执行过程。代码:/- 确定按钮void CT estDlg:OnButton1()/ TODO: Add your control notification handler code hereCString str = " 您选择的商品

37、有: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 + &

38、quot; 圆葱大肠 " + "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()=B

39、ST_CHECKED)str = str + " 西红柿鸡蛋汤" + "n"int flag;flag = AfxMessageBox(str,100,10);if(flag!=6)return;elseMessageBox("订购成功 ","订餐系统 ",0);CDialog:OnOK();/- 关闭按钮void CT estDlg:OnOK()/ TODO: Add extra validation here int flag;flag = AfxMessageBox(" 是否确认关闭? "

40、,100,10);if(flag!=6)return;CDialog:OnOK();实验结果:三、实验总结:通过这次试验,我学习了windows基于消息事件驱动方式的程序设计,一个完整的窗口编制的四个操作步骤,了解了Windows提供的窗口类,了解回调函数,学习到MFC 对话框和单文档编程的一般方法,学习使用MSDN 帮助解决问题。任课教师签名:实验八数据库编程(2 学时)学号: 2012013854姓名:柯冬生班级:计科1202 班成绩:实验名称 :数据库编程实验地点 :综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:1创建数据库unicom.

41、mdb ;2在视图类 “ DAO 数据库 View.cpp ”文件前面的文件中导入另一个类CStudentInfoDlg, 通过 #include ”StudentInfoDlg ”;3控件变量的设置;4数据记录的显示。二、实验内容:(1)打开 Microsoft Access 2003 ,创建数据库 unicom.mdb (该数据库包含一个表 unicom ,表的结构和表的内容如表 6.20 所示)。( 2)由于DAO要求与MicrosoftAccess 97 数据库进行操作,因此必须将unicom.mdb 换成Microsoft Access 97 文件格式,转换后的数据库文件名为unic

42、omn ,并存放在“桌面”上。转换步骤: 打开用 Microsoft Access 2003 创建的数据库 unicom.mdb 并选中 unicom 表,选择“工具”“数据库使用工具” “转换数据库”“转为 Access97 文件格式”命令,在出现的对话框中的“文件名 (N) ”处重起文件名,如unicomn 。保存并单击“确定”按钮,至此该数据库就转换成Microsoft Access 97 文件格式了。注意:当打开转换好的unicomn 数据库时,在出现的对话框中,选中“打开数据库”单击“确定”再单击“打开”确定双击数据表的名字,该数据库就打开了。(3)创建一个单文档应用程序,名为:DA

43、O 数据库。在“ MFC Appwizard-step 2 of 6”对话框中选择 Database view without file support (查看数据库不使用文件支持)选项,单击 Data Source 按钮,出现图 6.55 所示的对话框。选择DAO 单选按钮,单击按钮出现如图6.56 所示的对话框,选择unicomn ,单击“打开”按钮,发现处已有C:Documents and Settings桌面unicomn.mdb ,如图 6.57 所示。单击 OK 按钮,出现如图 6.58 所示的对话框,从中选中 unicom 数据表,单击 OK 按钮回到“ MFC Appwizar

44、d-step 2 of 6 ”对话框,单击 Finish 按钮完成操作。(4)打开对话框资源编辑器IDD_DAO_FORM,在对话框上添加如图6.59 布局,如表 6.23 所示的控件。(5)按 Ctrl+W 组合键,在出现的MFC ClassWizard 对话框中打开Member Variables 选项卡,为5 个编辑框分别添加5 个成员变量,如图6.60 所示。图 6.55选择数据源图 6.56选择转换后的unicomn 数据库图 6.57选择了 unicomn 数据库图 6.58选择 unicom 数据表图 6.59对话框上添加的控件图 6.60添加成员变量表 6.23 添加控件列表控

45、件ID标题Group BoxIDC_STATIC学生信息Static TextIDC_STATIC学号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_BU

46、TTON_EDIT修改记录( &U )ButtonIDC_BUTTON_DELETE删除记录( &D )(6)向项目中添加一个对话框资源, 将 IDD_DAO_FORM对 话 框上的“学生信息”组框以及“学生信息”组框内的各个控件复 制 到此对话框( IDD_DIALOG1 )上 ,如图 6.61 所示。复制方法是:选中 IDD_DAO_FORM 对话框上的组框及组框内的各个控件,鼠标对准选中处右键单击,在弹出的快捷菜单中选择 copy 命令 ,然后双击项 目 工作区中的 IDD_DIALOG1选项,出现 IDD_DIALOG1对话框,鼠标对准 对 话框右键单击并选择 Past

47、e命令,就把 IDD_DAO_FORM对话框上的控件复 制 到IDD_DIALOG1 对话框上了。图 6.61 复制到 IDD_DIALOG1说明:复制到 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数据库 View.cpp ”文件前面的文件包含处写:#include "StudentInfoDlg.h"在视图类 “ DAO 数据库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论