版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 面向对象方法与C+程序设计 实验五 模板与异常处理(2学时)学号:2012013854 姓名:柯冬生 班级:计科1202班 成绩:实验名称:模板与异常处理实验地点:综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:(1)正确理解模板的概念。(2)掌握函数模板和类模板的声明和使用方法。(3)学习简单的异常处理方法。二、实验内容:1.分析并调试下列程序,写出运行结果并分析原因。 (1) /test6_1_1.cpp #include using namespace std; template T max (T x,T y) return xy? x:
2、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)en
3、dl; 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
4、(double a,double b) return ab?a:b; int main() coutmax(3,7) is max(3,7)endl; return 0; 实验结果:(1) 定义了一个求最大值的函数模板,定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名非模板函数与函数模板重载.3和7均是字符型,找不到与之匹配的函数,所以调用了函数模板,使其实例化,由T型转变为char型。(2)定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.3和7均是字符型,找不到与之匹配的函数,所以得不出正确结果。2.编写一个求任意类型数组中最大元素和最小
5、元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。代码:#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数组a5=
6、1,4,2,3,5的最大值is: max(a,5)endl; cout数组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. 编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。【提示】设计一个类模板template class Array .;具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double
7、型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。代码:#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+
8、1=temp; cout数组排序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数组倒置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;
9、if(i=0) cout查找不成功!endl; /template void sum()/求和 Type sum=Array0; for(int j=1;jlen;j+) sum=sum+Arrayj; cout数组之和: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型数组*endl; cout原函数为:endl; for(int i=0;i5;i+) coutci ;
10、coutendl; a.sort(); a.invert(); a.seek(3); a.sum(); cout*double型数组*endl; cout原函数为:endl; for(int j=0;j4;j+) coutdj ; coutendl; b.sort(); b.invert(); b.seek(8.9); b.sum(); return 0; 实验结果:4.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。代码:#include #include using namespace std; void main() double number; double r
11、esult; cout number; try if (number 0) throw exception(输入的数是负数! ); result = sqrt(number); cout 平方根是: result endl; catch (exception e) cout e.what() endl; 实验结果:3、 实验总结:1.在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。2.对异常处理有了一些理解,但不知道异常处理(如第4题)可以循环吗?3.对用类模板实现线性表不是很懂。 任课教师签名: 实验六 C+的流类库与输入输出(2学时
12、)学号:2012013854 姓名:柯冬生 班级:计科1202班 成绩:实验名称:C+的流类库与输入输出实验地点:综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:(1)掌握C+格式化的输入输出方法。(2)掌握重载运算符“”的方法。(3)掌握磁盘文件的输入输出方法。二、实验内容:1. 下面给出的test7_1_1.cpp程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。* 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
13、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;in
14、t 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;实验结果:2.下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。 /test7_2_1.cpp #include #inc
15、lude using namespace std; int main() char ch;int i=0;ifstream file;(“xyz.txt”,ios:in);if( ) cout”xyz.txt cannot open”endl; abort();While (!() i+; cout”文件字符个数:”iendl; return 0;代码:#include#includeusing namespace std;int main()char ch;int i=0;ifstream file;(xyz.txt,ios:in);if(!file) coutxyz.txt cannot
16、openendl;abort();while (!()(ch);if(ch=97)|(ch=65)i+;cout文件字符个数:iendl; ();return 0;实验结果: 3.重载运算符“”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。假如商品类Merchandise的框架如下:class merchandisepublic: Merchandiss(); Merchandiss(); friend istream& operator(istream& in,Merchandiss& s); friend ostream&operatormer; cou
17、tmer; 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)
18、outMerchandise:endl;outno:s.noendl;outname:endl;outprice:s.pricemer;coutmer;return 0;实验结果:4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。代码:#include#includeusing namespace std;int main()char ch;ifstream file1;ifstream file2;ofstream file3;(xyz.txt,ios:in);(qwe.txt,ios:in);(asd.txt,ios:out)
19、;if(!file1 | !file2) coutxyz.txt cannot openendl;abort();(0);(0);while(!()(ch);if(ch=97)ch = ch-32;(ch);coutch;while(!()(ch);if(ch=97)ch = ch-32;(ch);coutch;();();();return 0;实验结果: 3、 实验总结:通过这次试验,我学习掌握了C+格式化的输入输出方法,掌握了重载运算符“”的方法,掌握了磁盘文件的输入输出方法,能够更加熟悉地运用Visual C+ 6.0的系统。 任课教师签名: 实验七 Windows程序框架及MFC编程
20、(2学时)学号:2012013854 姓名:柯冬生 班级:计科1202班 成绩:实验名称:Windows程序框架及MFC编程实验地点:综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:1学习windows基于消息事件驱动方式的程序设计2学习一个完整的窗口编制的四个操作步骤3了解Windows提供的窗口类4了解回调函数5学习MFC对话框和单文档编程的一般方法5学习使用MSDN帮助解决问题二、实验内容:1写一个Win32 Application应用程序,要求当点击关闭时,弹出对话框确定关闭,否则不关闭。运行初始时,在文档窗口显示“Hello”。代码:/
21、-初始化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
22、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 s
23、et the focus to a control/-提示对话框确定是否关闭void CTestDlg: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(项目)选项卡中,选择“Win32 Applicati
24、on”。在Location(位置)文本框中指定一个路径,在Preject Name(项目名称)文本框中为项目输入一个名字,单击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(项目名称)文
25、本框中为项目输入一个名字,单击OK(确定)。III.在出现的对话框中选择Single Document或者dialog based,单击Next(下一步)按钮。以后每步接受缺省,单击Finish(完成)按钮,AppWizard)显示一个摘要表,其中列出了所选的项目特征。单击OK(确定)创建项目。IV.编译、运行。查看各个生成的cpp文件,分析生成的,了解代码的执行过程。代码:/-确定按钮void CTestDlg:OnButton1() / TODO: Add your control notification handler code hereCString str = 您选择的商品有:n;
26、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 =
27、 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(订购成功,订餐系统,0);CDialog:OnOK();/-关闭按钮void CTestDlg:O
28、nOK() / TODO: Add extra validation hereint flag;flag = AfxMessageBox(是否确认关闭?,100,10);if(flag!=6)return;CDialog:OnOK();实验结果:3、 实验总结: 通过这次试验,我学习了windows基于消息事件驱动方式的程序设计,一个完整的窗口编制的四个操作步骤,了解了Windows提供的窗口类,了解回调函数,学习到MFC对话框和单文档编程的一般方法,学习使用MSDN帮助解决问题。 任课教师签名: 实验八 数据库编程(2学时)学号:2012013854 姓名:柯冬生 班级:计科1202班 成绩
29、:实验名称:数据库编程实验地点:综合楼207所使用的工具软件及环境:Microsoft Visual C+ 6.0一、实验目的:1创建数据库unicom.mdb;2在视图类“DAO数据库View.cpp”文件前面的文件中导入另一个类CStudentInfoDlg,通过#include” StudentInfoDlg”;3控件变量的设置;4数据记录的显示。二、实验内容:(1)打开Microsoft Access 2003,创建数据库unicom.mdb(该数据库包含一个表unicom,表的结构和表的内容如表6.20所示)。(2)由于DAO要求与Microsoft Access 97数据库进行操作
30、,因此必须将unicom.mdb换成Microsoft Access 97文件格式,转换后的数据库文件名为unicomn,并存放在“桌面”上。转换步骤:打开用Microsoft Access 2003创建的数据库unicom.mdb并选中unicom表,选择“工具”“数据库使用工具”“转换数据库”“转为Access97文件格式”命令,在出现的对话框中的“文件名(N)”处重起文件名,如unicomn。保存并单击“确定”按钮,至此该数据库就转换成Microsoft Access 97文件格式了。注意:当打开转换好的unicomn数据库时,在出现的对话框中,选中“打开数据库”单击“确定”再单击“打开
31、”确定双击数据表的名字,该数据库就打开了。(3)创建一个单文档应用程序,名为:DAO数据库。在“MFC Appwizard-step 2 of 6”对话框中选择Database view without (查看数据库不使用文件支持)选项,单击Data Source按钮,出现图6.55所示的对话框。选择DAO单选按钮,单击按钮出现如图6.56所示的对话框,选择unicomn,单击“打开”按钮,发现处已有C:Documents and Settings Administrator桌面unicomn.mdb,如图6.57所示。单击OK按钮,出现如图6.58所示的对话框,从中选中unicom数据表,单
32、击OK按钮回到“MFC Appwizard-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
33、添加控件列表控 件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
34、_BUTTON_EDIT修改记录(&U)ButtonIDC_BUTTON_DELETE删除记录(&D)图6.61复制到IDD_DIALOG1 对话框上的控件(6)向项目中添加一个对话框资源,将IDD_DAO_FORM对话框上的“学生信息”组框以及“学生信息”组框内的各个控件复制到此对话框(IDD_DIALOG1)上,如图6.61所示。复制方法是:选中IDD_DAO_FORM对话框上的组框及组框内的各个控件,鼠标对准选中处右键单击,在弹出的快捷菜单中选择copy命令,然后双击项目工作区中的IDD_DIALOG1选项,出现IDD_DIALOG1对话框,鼠标对准对话框右键单击并选择Paste命令,就
35、把IDD_DAO_FORM对话框上的控件复制到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_nameCStringC
36、StudentInfoDlgIDC_EDIT_SEXm_sexCStringCStudentInfoDlgIDC_EDIT_AGEm_ageshortCStudentInfoDlgIDC_EDIT_ADDRESSm_addressCString(8)在视图类“DAO数据库View.cpp”文件前面的文件包含处写:#include StudentInfoDlg.h在视图类“DAO数据库View”为图6.59中的“添加记录”(IDC_BUTTON_ADD)、“修改记录”(IDC_BUTTON_EDIT)、“删除记录”(IDC_BUTTON_DELETE)按钮添加BN_CLICKED消息处理函数,并添加代码:void CDAOView:OnButtonAdd() CStudentInfoDlg m_StudInfoDlg;if(m_StudInfoDlg.DoModal()=IDOK)m_pSet-AddNew();m_pSet-m_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程施工合同补充协议模板
- 2024保险合同解除的原因
- 2024年度某玩具公司向某国外买家出口玩具产品的合同
- 五方土地买卖合同
- 2024装修装饰合同范本
- 摄影设备购买合同样本
- 产品众筹合作意向书
- 2024花生买卖合同范文
- 2024【温室大棚建造】温室大棚建造合同范本2
- 2024展会布置合同
- 2024-2025学年九年级上学期期中考试英语试题
- 电子发票管理系统开发与维护合同
- 四川新农村建设农房设计方案图集川西部分
- 浙江省杭州市2024年中考英语真题(含答案)
- 安全工程导论课件:事故致因理论
- 山东省青岛实验中学2024-2025学年七年级上学期期中考试数学试题(无答案)
- 2024年安能物流合作加盟协议版
- 质量管理体系过程方法和风险思维专业解读与应用之7:5 领导作用-5.3组织的岗位、职责和权限(雷泽佳编制-2024B1)
- 地面找平专项施工方案
- 初三化学-水的净化省公开课获奖课件说课比赛一等奖课件
- 2024-2030年中国财税服务行业市场深度调研及发展前景与投资研究报告
评论
0/150
提交评论