《C++面向对象程序设计》实验教学大纲

发布者:syzx发布时间:2023-05-24浏览次数:877

 
课程编号:                实验学时:18学时   
实验个数:9个             适用专业:计算机科学与技术
教材及参考书:《C++语言基础教程》(第三版)                    
大纲执笔人:胡成松             大纲审定人:
 
一、实验课的性质与任务
《C++语言程序设计》是计算机科学与技术专业及其他相关专业的一门专业基础课。通过本课程的理论学习与实践,使学生掌握面向对象程序的基本概念、特点、结构、原理及设计方法,重点学习C++程序设计语言的相关内容,能阅读C++程序,掌握编程技巧,自己能够独立进行一些常用类的定义,为后续课程打下良好基础。
二、实验课程目的与要求
1.实验目的
本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解和掌握如何利用C++程序设计语言进行程序设计,通过该课程实验,使学生得到程序设计方面的基本训练,培养学生程序设计的能力和调试程序的基本技能,提高学生利用计算机解决实际问题的能力,使之能把程序设计应用到今后的专业学习中。
2.实验要求
(1)上机实验之前,学生应当为每次上机的内容作好充分准备。对每次上机需要完成的题目进行认真的分析,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。
(2)按照实验目的和实验内容以及思考题的要求进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。
 
 
三、实验项目及学时分配(黑体五号)
   
 
 
四、实验内容安排:(黑体五号)
  
实验一
函数的综合使用
(基本操作型实验 2学时)
1、目的要求:
1)掌握C++中函数的定义及调用;
2)掌握函数调用从参数传递的规则;
3)掌握用数组名作为函数参数。
2、实验内容:
1)写一个函数,将从键盘输入的一个字符串反序存放,要求输入输出操作在主函数中完成;
2)写一个函数,将一个3行4列矩阵转置,在主函数中对该矩阵进行输入输出;
3)由用户输入一个整数(10以内),求出该数的阶乘,并将结果输出;
4)输入10个整数,求出该10个数中最小的数,并将这些数以及最小的那个数输出;
5)在主函数中输入2个整数,在子函数中求出它们的较大值,并在主函数中输出该值;(用多种方法实现)
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
实验二            
类的定义、构造函数和对象的定义方法
(基本操作型实验 2学时)
1、目的要求:
1)加强对类的理解;
2)掌握类的定义格式;
3)掌握对象定义的方法;
2、实验内容:
1)定义一个线段类,并定义几个对象,将这些对象相应的信息(坐标、长度)输出;
2)定义一个学生类,能记录学生的基本信息(姓名、学号、至少三门考试成绩),需要用构造函数对学生信息进行初始化,最后能按照一定的格式输出至少三个同学的基本信息,还包含三门考试的总分和平均分;
3)用面向对象的思想求方程的根;(可暂时只讨论有实根的情况)
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
 
实验三              
静态成员、友元函数的定义和使用
(基本操作型实验 2学时)
1、目的要求:
1)理解静态成员和非静态成员的使用及意义方面的区别;
2)熟练掌握友元函数的定义和调用方法;
2、实验内容:
1)设计一个Car类,它的数据成员要能描述一部汽车的品牌(如Honda),型号(如Civic),出厂年份和价格。类接口所包含的成员函数应提供合适的方法来访问数据成员(包括款式,价格等),此外,该类应该还有一个void compare(car c1)函数对两辆车进行比较,并能输出一份简短的结果比较报告;
2)定义一个学生类,能记录学生的基本信息(姓名、学号、至少三门考试成绩),并定义一变量用来存储班级的班费,并定义相应的函数用于班费的支出操作,要求对学生的信息进行初始化时,具体的数据由用户动态输入,并定义函数将学生的具体信息输出,已经将班费信息输出;
3)用面向对象的思想求方程的根;(要求:需要求出所有可能情况的根的结果)。
(以上程序要运用到适当的构造函数和析构函数)
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
实验四              常类型、子对象及堆对象的使用
(基本操作型实验 2学时)
1、目的要求:
1)理解常数据成员、常成员函数的意义;
2)能熟练使用子对象、堆对象。
2、实验内容:
1)完成下列队列类的定义;
class Queue
{
public:
    Queue()
    {
        pc=0;
    }
    Queue(Queue & q);
    int add(int n);//向队列添加值为n的元素(注意添加的位置);
    void del();//删除队列中的一个元素(注意删除元素的位置);
    void print();//将队列中的元素从队头开始全部输出;
    void getcount(int n);//查询队列中某个位置的元素的值;
    int Isempty();//判断队列是否为空;
private:
    int line[20];//储存实际元素;
    int pc;//队列中元素的个数;
};
2)创建一个链表,可以向该链表中插入节点,删除节点,将节点中的信息输出,插入节点的位置为当前链表的尾部,删除的则为该链表的第一个节点。(节点中有效数据的内容就为一个int 型数据)
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
 
实验五             
定义单继承下的基类和派生类
(基本操作型实验 2学时)
1、目的要求:
1)理解继承的意义;
2)掌握继承机制中,派生类的定义方法;
2、实验内容:(宋体五号)
1)定义一个基类animal,有公有整型成员变量age,weight,公有方式构造其派生类   dog,有新增数据成员color,在其成员函数SetAge(int n)中给age赋值,在其成员函数SetWeight中给weight赋值,在Setcolor函数中为color赋值,查看运行结果,并改进使age和weight为私有成员再试。
2)定义一个student 学生类,具有数据成员姓名,计算机分数,语文分数,并具有print函数将相应的内容输出。从该类派生一个Dstudent大学生类,该类有新增的数据成员学号,在该类中,要用合适的方法输出学号和其他数据成员信息。两个类中都要有合适的构造函数对对象进行初始化。
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
 
实验六              多继承结构的定义和多继承下构造函数的调用
(基本操作型实验 2学时)
1、目的要求:
1)理解多继承在类定义中的意义;
2)掌握多继承中派生类的定义方法;
3)掌握派生类中构造函数的调用机制;
2、实验内容:
1)定义一个基类animal,有公有整型成员变量age,weight,公有方式构造其派生类   dog,有新增数据成员color,在其成员函数SetAge(int n)中给age赋值,在其成员函数SetWeight中给weight赋值,在Setcolor函数中为color赋值,查看运行结果,并改进使age和weight为私有成员再试。
2)定义一个基类person类,数据成员包含age,name,从该类派生一个employee(雇主)类,新增数据成员number(职工号);再从employee类派生一个executive(执行官)类,新增数据成员level(头衔),每个类中都定义相应的函数为其赋值,并定义函数显示相关的信息,如( “Smith is 28 years old,is an employee”)或( “Smith is 30 years old,is an executive,level is the 2”),编写一个main函数,生成两个数组,一个包含三个executive对象,一个包含三个employee对象,然后显示他们的相关信息;
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
实验七             
函数重载,完成string 类的定义
(基本操作型实验 2学时)
1、目的要求:
1)进一步理解函数重载的规则;
2)在常用类string 类中对函数进行重载;
2、实验内容:
1)创建一个String类,实现一般字符串的简单功能,如字符串的赋值、求串的长度、两个串的连接、字符串的插入、字符串的拷贝、输出等功能。
#include <iostream.h>
#include <string.h>
class String
{
public:
    String();
    String (const char *);
    String (const String &s);
    int Strlen()const;
    void copy(const String &s);
    void copy(const char *p);
    void insert(int p0,const char*p); //向尾部添加一个字符串;
    void append(const char *p); //向尾部添加一个字符串;
    void print();
private:
    char *rep;
};
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
实验八              
完成date 类中相关操作符的重载
(基本操作型实验 2学时)
1、目的要求:
1)理解运算符重载的意义;
2)掌握常用运算符的重载;
2、实验内容:
1)定义一Date类:私有成员为year、month、day。公有成员有:默认构造函数(初始化日期为2007.5.28),有参构造函数设置年月日。编程要求:重载单目运算符++(前自增、后自增),使用该运算符能对日期对象做增加1天的计算(注意,在2月28日时,增加一天需要考虑当前年份是否为闰年)
2)创建一个时间类,包含数据成员hour,minute,second,定义合适的构造函数完成初始化操作 ,并对++(前加和后加)运算符,<<(输出),<<(输入)运算符进行重载;
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
 
 
实验九           
面向对象编程总结
(基本操作型实验 2学时)
1、目的要求:
1)熟悉C++中文件的处理规则;
2)进一步理解C++中面向对象编程的优点。
2、实验内容:(宋体五号)
1)创建一个类,对银行的一般业务进行处理。
包括:开通帐户、存钱、取钱、销户、查询等功能!
3、主要仪器设备及用品
电脑一台、Visual C++6.0 开发环境
 
五、考核方式、方法及实验成绩评定方法(黑体五号)
根据学生每次实验的完成情况,当场检查计分,成绩考核采用百分制记分,采用优秀、良好、中等、及格、不及格五级评级。
 
六、主要教材及参考书(黑体五号)
教 材:吕凤?,2005.11,C++语言基础教程,清华大学出版社
参考书:
徐孝凯,《C++语言程序设计》 北京,清华大学出版社, 2003. 1
黄迪明,《C++语言程序设计基础》 北京,电子工业出版社 2003.6