}
14)实现客户机(CLIENT)类。
定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。
在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。
3.主要仪器设备及软件:
Windows2000+VC6.0
实验六数组、指针与字符串实验
(设计性实验4学时)
1.目的要求:
学习使用数组;学习字符串数据的组织和处理;学习标准C++库的使用;掌握指针的使用方法;练习通过debug观察指针的内容及其所指的对象的内容;练习通过动态内存分配实现动态数组,并体会指针在其中的作用;分别使用字符数组和标准C++库练习处理字符串的方法。
2.实验内容:
15)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
16)使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
17)编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
18)使用string类定义字符串对象,重新实现上一小题。
19)(选做)定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。
实现并测试这个类。
20)(选做)定义包含5个元素的对象数组,每个元素都是Employee类型的对象。
21)(选做)修改实验4中的选做实验中的people(人员)类。
具有的属性如下:
姓名charname[11]、编号charnumber[7]、性别charsex[3]、生日birthday、身份证号charid[16]。
其中“出生日期”定义为一个“日期”类内嵌对象。
用成员函数实现对人员信息的录入和显示。
要求包括:
构造函数和析构函数、拷贝构造函数、内嵌构造函数、内联成员函数、类组合。
在测试程序中定义people类的对象数组,录入数据并显示。
3.主要仪器设备及软件:
Windows2000+VC6.0
实验七继承与派生实验
(验证性实验4学时)
1.目的要求:
学习定义和使用类的继承关系,定义派生类;熟悉不同继承方式下对基类成员的访问控制;学习利用虚基类解决二义性问题。
2.实验内容:
22)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?
编程试试看。
23)定义一个基类BasClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
24)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。
自行车(bicycle)类有高度(Height)等属性,汽车(motorcycle)类有座位数(SeatNum)等属性。
从bicycle和Motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。
如果不把vehicle设置为虚基类,会有什么问?
编程试试看。
25)(选做)从实验6中的people(人员)类派生出student(学生)类,添加属性:
职务charprincipalship[11]、部门chardepartment[21]。
从student类中派生出graduate(研究生)类,添加属性:
专业charsubject[21]、导师teacheradviser;从graduate类派生出其TA(助教)类,注意虚基类的使用。
重载相应的成员函数,测试这些类。
图7-1实验任务4的类图
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验八多态性实验
(设计性实验2学时)
1.目的要求:
掌握运算符重载的方法;学习使用虚函数实现动态多态性。
2.实验内容:
26)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现对坐标的改变。
27)定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle到motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。
观察虚函数的作用。
28)(选做)对实验六中的people类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验九群体类和群体数据组织实验(选做)
(设计性实验4学时)
1.目的要求:
29)了解链表类的定义与实现,学习其使用方法;了解栈类定义与实现,学习其使用方法;
30)了解队列类的定义与实现,学习其使用方法;了解C++标准模板库STL的使用方法。
2.实验内容:
31)使用重载函数模板重新实现实验三中2小题中的函数Max1。
32)编写程序link.h,实现教材中例9-6的链表类。
在测试lab9_1.cpp中定义两个整型链表A和B,分别插入5个元素,然后把B中的元素加入A的尾部。
33)编写程序queue.h,用链表实现队列(或栈)类。
在测试程序lab9_1.cpp中定义一个整型队列(或栈)对象,插入5个整数,压入队列(或栈),再依次取出并显示出来。
34)(选做)将直接插入排序、直接选择程序、冒泡排序、顺序查找函数封装到教材中第9章的数组类模板中,作为成员函数。
实现并测试这个类。
35)(选做)定义一个对people类对象数组按编号排序的函数,一个按编号查找people对象的函数。
在测试程序中使用前面实验得到的结果定义教师数组和学生数组,分别对教师数组和学生数组进行排序和查找。
36)(选做)定义course(课程)类,有属性:
课程名charname[21]、成绩shortscore;在实验7中的student类中增加属性:
所修课程courses,为课程类对象。
在测试程序测试这个类。
学生类之间的关系如图9-1所示。
图9-1实验任务4的类图
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验十泛型程序设计与C++标准模板库实验(选做)
(设计性实验2学时)
1.目的要求:
掌握对数组元素排序的方法;掌握对数组元素查找的方法;应用标准C++库(STL)实现查找与排序。
2.实验内容:
37)在C++标准模板库中,队列类(queue)的成员函数queue:
:
push()在队列的一端添加元素,queue:
:
pop()从非空的队列中删除最后一个元素,queue:
:
empty()判断队列是否为空,queue:
:
back()返回非空队列的最后一个元素,queue:
:
front()返回非空队列的第一个元素,queue:
:
size()返回队列中元素的个数,请构造一个int类型的队列,对这个队列应用上述几个函数,体会队列这种数据结构的特点和其成员函数的用法。
38)对于一个包含特定个数整型数据的数组A,对于从键盘输入的任意数,使用C++标准模板库中的find()查找在A中的位置,使用sort()来对数组进行升序或降序排列,排序前和排序后的结果使用copy()输出。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验十一流内库与输入、输出实验
(设计性实验2学时)
1.目的要求:
熟悉流类库中常用的类及其成员函数的用法;学习标准输入输出及格式控制;学习对文件的应用方法(二进制文件、文本文件)。
2.实验内容:
39)观察以下程序的输出,注意对输出格式的控制方法。
40)编写程序,打开指定的一个文件,在每一行前加行号。
41)(选做)使用实验10中的学生类数组,输入数据并显示出来,使用I/O流把此数组的内容写入磁盘文件,再显示出文件内容。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验十二异常处理实验
(设计性实验2学时)
1.目的要求:
正确理解C++的异常处理机制;学习异常处理的定义和执行过程。
2.实验内容:
定义一个异常类CException,有成员函数Reason(),用来显示异常的类型。
在子函数中触发异常,在主程序中处理异常,观察程序的执行过程。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验十三Windows应用程序框架实验(选做)
(基本操作实验2学时)
1.目的要求:
简单了解Windows程序设计
2.实验内容:
练习使用VC++的AppWizard(应用程序向导)生成一个最简单的Windows应用程序。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
五实验报告的格式(本部分要求各学院设计成表格作为教学大纲附件)
实验完毕,应用专门的实验报告本,根据预习和实验中的现象及数据记录等,及时而认真地写出实验报告。
实验报告一般包括以下内容:
实验(序号)实验名称
(一)实验目的
(二)仪器工具及材料列出实验中所使用的主要仪器工具及材料。
(三)内容及程序应简明扼要地写出实验步骤流程。
(四)结果及分析应用文字、表格、图形等形式将数据表示出来。
根据实验要求对数据进行分析和误差处理。
(五)问题讨论结合有关理论对实验中的现象、产生的误差等进行讨论和分析,以提高自己的分析问题、解决问题的能力,并提出应注意的事项,也为以后的科学研究打下一定的基础。
六、考核方式、方法及实验成绩评定方法
1、考核方式、方法:
面向对象程序设计实验课成绩占面向对象程序设计总成绩的20%,即共20分。
考核方法为采用实验课随堂检查学生完成情况及现场提问让学生回答,根据学生完成情况及答辩情况给出分次给出平时成绩,共15分。
学生在完成实验后应将自己的实验过程,结果,经验写入实验报告并提交实验报告,实验报告成绩占5分,根据学生实验报告的书写质量打出。
2、实验成绩评定方法:
评定各级成绩时,可参考以下标准:
(一)优秀(很好)18-20
能正确理解实验的目的要求,能独立、顺利而正确地完成各项实验操作,会分析和处理实验中遇到的问题,能掌握所学的各项实验技能,能较好地完成实验报告及其它各项实验作业,有一定创造精神和能力。
有良好的实验工作作风和习惯。
(二)良好(较好)15-17
能理解实验的目的和要求,能认真而正确地完成各项实验操作,能分析和处理实验中遇到的一些问题。
能掌握所学实验技能的绝大部分,对难点较大的操作完成有困难。
能一般完成实验报告和其它实验作业。
有较好的实验习惯和工作作风。
(三)中等(一般)12-14
能粗浅理解实验目的要求,能认真努力进行各项实验操作,但技巧较差。
能分析和处理实验中一些较容易的问题,掌握实验技能的大部分。
有30%掌握得不好。
能一般完成各项实验作业和报告。
处理问题缺乏条理。
工作作风较好。
能认真遵守各项规章制度。
学习努力。
(四)及格(较差)10-12
只能机械地了解实验内容,能一般性地按实验步骤完成实验操作,能完成60%所学的实验技能,有些虽作但不准确。
遇到问题常常缺乏解决的办法,在别人启发下能作些简单处理,但效果不理想。
能一般完成实验报告,能认真遵守实验室各项规章制度,工作中有小的习惯性毛病(如工作无计划,处理问题缺乏条理)。
(五)不及格(很差)0-9
盲目地操作,只掌握50%的所学实验技能。
有些实验虽能作,但一般效果不好,操作不正确。
工作忙乱无条理。
一般能遵守实验室规章制度,但常有小的错误。
实验报告较多的时候有结果,遇到问题时说不明原因,在教师指导下也较难完成各项实验作业。
或有些小聪明但不努力,不求上进。
七、实验主要应配套仪器设备及台(套)数(以一个实验教学班40人为标准)
序号
仪器设备名称
数量
备注
1
计算机
15台
2
C++开发工具软件
1套
网络版
八、主要教材及参考书
1.《C++语言程序设计习题与实验指导》,郑莉、傅仕星编著,北京:
清华大学出版社,2004
2.《C++语言程序设计(第四版)》,郑莉、董渊编著,北京:
清华大学出版社,2005