《实验五模板与异常处理23460.pdf》由会员分享,可在线阅读,更多相关《实验五模板与异常处理23460.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 面向对象方法与 C+程序设计 实验报告 专 业 计算机科学与技术专业 班 级 计科 1202 班 姓 名 柯冬生 学 号 54 任课教师 何富贵 皖西学院信息工程学院 School of Information and Engineering,West Anhui University 实验五 模板与异常处理(2 学时)学号:54 姓名:柯冬生 班级:计科 1202 班 成绩:实验名称:模板与异常处理 实验地点:综合楼 207 所使用的工具软件及环境:Microsoft Visual C+一、实验目的:(1)正确理解模板的概念。(2)掌握函数模板和类模板的声明和使用方法。(3)学习简单的异常
2、处理方法。二、实验内容:1.分析并调试下列程序,写出运行结果并分析原因。(1)3 和7均是字符型,找不到与之匹配的函数,所以调用了函数模板,使其实例化,由T型转变为char型。(2)定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.3和7均是字符型,找不到与之匹配的函数,所以得不出正确结果。2.编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。代码:#include using namespace std;template T max(T*x,int n)T max=x0;for(int i=1;ixi max:xi
3、;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=,;cout数组 a5=1,4,2,3,5的最大值 is:max(a,5)endl;cout数组 a5=1,4,2,3,5的最小值 is:min(a,5)endl;cout数组 b5=,的最大值 is:max(b,5)endl;cout数组 b5=,的最小值 is:min(b,5)endl;return 0;实验结果:3.编写一个程序,使用
4、类模板对数组元素进行排序、倒置、查找和求和。【提示】设计一个类模板 template class Array .;具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为 int 型和 double 型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。代码:#include using namespace std;template class Array1 public:Array1(Type*a,int length)len=length;for(int i=0;ilen;i+)Arrayi=ai;写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。代码
5、:#include#include using namespace std;void main()double number;double result;cout number;try if(number 0)throw exception(输入的数是负数!);result=sqrt(number);cout 平方根是:result endl;catch(exception e)cout ()endl;实验结果:三、实验总结:1.在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。2.对异常处理有了一些理解,但不知道异常处理(如第 4 题)
6、可以循环吗 3.对用类模板实现线性表不是很懂。任课教师签名:实验六 C+的流类库与输入输出(2 学时)学号:54 姓名:柯冬生 班级:计科 1202 班 成绩:实验名称:C+的流类库与输入输出 实验地点:综合楼 207 所使用的工具软件及环境:Microsoft Visual C+一、实验目的:(1)掌握 C+格式化的输入输出方法。(2)掌握重载运算符“”的方法。(3)掌握磁盘文件的输入输出方法。二、实验内容:1.下面给出的程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。*1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6
7、9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 面的程序用于统计文件中的字符个数,请填空完成程序。载 运 算 符“”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息由编号、商品名和价格。假如商品类 Merchandise 的框架如下:class merchandise public:Merchandiss();Merchandiss();friend istream&operator(
8、istream&in,Merchandiss&s);friend ostream&operatormer;coutmer;return 0;代码:#include class Merchandise public:Merchandise();Merchandise();friend istream&operator(istream&in,Merchandise&s);friend ostream&operator(istream&in,Merchandise&s)coutinput the Merchandises:endl;cout;cout;cout;return in;ostream&o
9、perator(ostream&out,Merchandise&s)outMerchandise:endl;outno:endl;outname:endl;outprice:mer;coutmer;return 0;实验结果:4.编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。代码:#include#include using namespace std;int main()char ch;ifstream file1;ifstream file2;ofstream file3;(,ios:in);(,ios:in);(,ios:out);if
10、(!file1|!file2)cout 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;实验结果:三、实验总结:通过这次试验,我学习掌握了 C+格式化的输入输出方法,掌握了重载运算符“”的方法,掌握了磁盘文件的输入输出方法,能够更加熟悉地运用 Visual C+的系统。任课教师签名:实验七 Windows 程序框架及 MFC 编程(2 学时)学号:54 姓名:柯冬生 班
11、级:计科 1202 班 成绩:实验名称:Windows 程序框架及 MFC 编程 实验地点:综合楼 207 所使用的工具软件及环境:Microsoft Visual C+一、实验目的:1学习 windows 基于消息事件驱动方式的程序设计 2学习一个完整的窗口编制的四个操作步骤 3了解 Windows 提供的窗口类 4了解回调函数 5学习 MFC 对话框和单文档编程的一般方法 5学习使用 MSDN 帮助解决问题 二、实验内容:1写一个 Win32 Application 应用程序,要求当点击关闭时,弹出对话框确定关闭,否则不关闭。运行初始时,在文档窗口显示“Hello”。代码:.menu it
12、em to system menu.ASSERT(IDM_ABOUTBOX&0 xFFF0)=IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);The framework does this automatically 击 File 菜单中的 New 选项,显示 New(新建)对话框。在 Project(项目)选项卡中,选择“Win32 Application”。在 Location(位置)文本框中指定一个路径,在
13、 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(项目名称)文本框中为项目输入一个名字,
14、单击 OK(确定)。III.在出现的对话框中选择 Single Document 或者 dialog based,单击 Next(下一步)按钮。以后每步接受缺省,单击 Finish(完成)按钮,AppWizard)显示一个摘要表,其中列出了所选的项目特征。单击 OK(确定)创建项目。IV.编译、运行。查看各个生成的 cpp 文件,分析生成的,了解代码的执行过程。代码:/-确定按钮 void CTestDlg:OnButton1()/TODO:Add your control notification handler code here CString str=您选择的商品有:n;if(CBut
15、ton*)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*)Get
16、DlgItem(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;else MessageBox(订购成功,订餐系统,0);CDialog:OnOK();/-关闭按钮 void CTestDlg:OnOK()/TODO:Add extra validation here int fl
17、ag;flag=AfxMessageBox(是否确认关闭,100,10);if(flag!=6)return;CDialog:OnOK();实验结果:三、实验总结:通过这次试验,我学习了 windows 基于消息事件驱动方式的程序设计,一个完整的窗口编制的四个操作步骤,了解了 Windows 提供的窗口类,了解回调函数,学习到 MFC 对话框和单文档编程的一般方法,学习使用 MSDN 帮助解决问题。任课教师签名:实验八 数据库编程(2 学时)学号:54 姓名:柯冬生 班级:计科 1202 班 成绩:实验名称:数据库编程 实验地点:综合楼 207 所使用的工具软件及环境:Microsoft Vi
18、sual C+一、实验目的:1创建数据库;2在视图类“DAO 数据库”文件前面的文件中导入另一个类 CStudentInfoDlg,通过#include”StudentInfoDlg”;3控件变量的设置;4数据记录的显示。二、实验内容:(1)打开 Microsoft Access 2003,创建数据库(该数据库包含一个表 unicom,表的结构和表的内容如表所示)。(2)由于 DAO 要求与 Microsoft Access 97 数据库进行操作,因此必须将换成 Microsoft Access 97文件格式,转换后的数据库文件名为 unicomn,并存放在“桌面”上。转换步骤:打开用 Mic
19、rosoft Access 2003 创建的数据库并选中 unicom 表,选择“工具”“数据库使用工具”“转换数据库”“转为 Access97 文件格式”命令,在出现的对话框中的“文件名(N)”处重起文件名,如 unicomn。保存并单击“确定”按钮,至此该数据库就转换成 Microsoft Access 97文件格式了。注意:当打开转换好的 unicomn 数据库时,在出现的对话框中,选中“打开数据库”单击“确定”再单击“打开”确定双击数据表的名字,该数据库就打开了。(3)创建一个单文档应用程序,名为:DAO 数据库。在“MFC Appwizard-step 2 of 6”对话框中选择 D
20、atabase view without file support(查看数据库不使用文件支持)选项,单击 Data Source 按钮,出现图所示的对话框。选择 DAO 单选按钮,单击按钮出现如图所示的对话框,选择 unicomn,单击“打开”按钮,发现处已有 C:Documents and Settings Administrator桌面,如图所示。单击 OK 按钮,出现如图所示的对话框,从中选中 unicom 数据表,单击 OK 按钮回到“MFC Appwizard-step 2 of 6”对话框,单击 Finish 按钮完成操作。(4)打开对话框资源编辑器 IDD_DAO_FORM,在对
21、话框上添加如图布局,如表所示的控件。(5)按 Ctrl+W 组合键,在出现的 MFC ClassWizard 对话框中打开 Member Variables 选项卡,为 5个编辑框分别添加 5 个成员变量,如图所示。图 选择数据源 图 选择转换后的 unicomn 数据库 图 选择了 unicomn 数据库 图 选择 unicom 数据表 图 对话框上添加的控件 图 添加成员变量 表 添加控件列表 控 件 ID 标 题 Group Box IDC_STATIC 学生信息 Static Text IDC_STATIC 学号 Edit Box IDC_EDIT_ID-Static Text IDC
22、_STATIC 姓名 Edit Box IDC_EDIT_NAME-Static Text IDC_STATIC 性别 Edit Box IDC_EDIT_SEX-Static Text IDC_STATIC 年龄 Edit Box IDC_EDIT_AGE-Static Text IDC_STATIC 家庭住址 Edit Box IDC_EDIT_ADDRESS-Button IDC_BUTTON_ADD 添加记录(&A)Button IDC_BUTTON_EDIT 修改记录(&U)Button IDC_BUTTON_DELETE 删除记录(&D)(6)向项目中添加一个对话框资源,将 IDD
23、_DAO_FORM对话框上的“学生信息”组框以及“学生信息”组框内的各个控件复制到此对话框(IDD_DIALOG1)上,如图所示。复制方法是:选中 IDD_DAO_FORM 对话框上的组框及组框内的各个控件,鼠标对准选中处右键单击,在弹出的快捷菜单中选择 copy 命令,然后双击项目 工 作区中的 IDD_DIALOG1 选项,出现 IDD_DIALOG1 对话框,鼠标对准对话框 右 键单击并选择 Paste 命令,就把 IDD_DAO_FORM 对话框上的控件复制到IDD_DIALOG1 对话框上了。说明:复制到IDD_DIALOG1 对话框上的控件ID 与原对话框 IDD_DAO_FORM
24、 上的控件ID 完全相同。(7)为添加的 IDD_DIALOG1 对话框资源建类,类名为:CStudentInfoDlg,并用 ClassWizard 为 图复制到 IDD_DIALOG1 对话框上的控件 CStudentInfoDlg 类添加 5 个如表所示的编辑框的成员变量。表 添加成员变量列表 类 名 ID 成员变量名 成员变量类型 CStudentInfoDlg IDC_EDIT_ID m_id short CStudentInfoDlg IDC_EDIT_NAME m_name CString CStudentInfoDlg IDC_EDIT_SEX m_sex CString CS
25、tudentInfoDlg IDC_EDIT_AGE m_age short CStudentInfoDlg IDC_EDIT_ADDRESS m_address CString(8)在视图类“DAO 数据库”文件前面的文件包含处写:#include 在视图类“DAO 数据库 View”为图中的“添加记录”(IDC_BUTTON_ADD)、“修改记录”(IDC_BUTTON_EDIT)、“删除记录”(IDC_BUTTON_DELETE)按钮添加 BN_CLICKED 消息处理函数,并添加代码:void CDAOView:OnButtonAdd()CStudentInfoDlg m_StudIn
26、foDlg;if()=IDOK)m_pSet-AddNew();m_pSet-m_address=;m_pSet-m_age=;m_pSet-m_id=;m_pSet-m_name=;m_pSet-m_sex=;m_pSet-Update();m_pSet-Requery();m_pSet-MoveLast();UpdateData(false);void CDAOView:OnButtonEdit()CStudentInfoDlg m_StudInfoDlg;=m_pSet-m_address;=m_pSet-m_age;=m_pSet-m_id;=m_pSet-m_name;=m_pSet
27、-m_sex;if()=IDOK)m_pSet-Edit();m_pSet-m_address=;m_pSet-m_age=;m_pSet-m_id=;m_pSet-m_name=;m_pSet-m_sex=;m_pSet-Update();UpdateData(false);void CDAOView:OnButtonDelete()int m_Choice=MessageBox(确实要删除该学生的信息吗,警告!,MB_YESNO);if(m_Choice=IDYES)m_pSet-Delete();m_pSet-Requery();m_pSet-MoveLast();UpdateData(false);(9)编译运行,结果如图所示,单击“添加记录”、“修改记录”按钮时出现旁边的小对话框,将添加、修改的内容输入小对话框的编辑框内即可。而“删除记录”时则出现“警告”小对话框,上面显示“确实要删除该学生的信息吗”,回答“是”或“否”即可。图 运行结果,点击“添加”按钮 三、实验总结:通过这次试验,我学会了创建数据库,学会了在视图类“DAO 数据库”文件前面的文件中导入另一个类 CStudentInfoDlg,通过#include”StudentInfoDlg”,学会如何控件变量的设置,并能够操作数据记录的显示。任课教师签名: