《C++程序设计》实验教学大纲
发布时间: 2023-05-24 浏览次数: 10

南 京 中 医 药 大 学


C++程序设计》实验教学大纲

 (适用于计算机类及相关专业)


课程名称:C++程序设计           英文名称:C++ Programming    

课程类别:专业基础必修课           课程编码:081000           

课程学分:3            课程学时:72             

开课单位: 人工智能与信息技术学院      实验室:人工智能与信息技术学院实验室

实验(实训)项目数:12        课程负责人:李新霞

  1. 课程简介

 本课程是计算机科学与技术软件工程专业本科学生的一门专业基础必修课。课程主要讲授了C++程序设计语言的基本语法及运用C++语言进行面向对象程序设计的方法,详细描述了面向对象程序设计的抽象性、封装性、继承性和多态性,为后续的专业课程奠定程序设计基础。

二、教学目标与基本要求

 本课程的主要任务是使学生掌握面向对象程序设计的方法、继承和多态的体现以及把握标准C++程序设计的灵魂。目的是使学生掌握一门高级程序设计语言,学会利用C++语言解决一般应用问题,同时培养学生运用相关知识解决实际问题的能力,是实践性较强的课程。在学习中通过编程实现各种趣味性问题以提高专业学习的自信、兴趣和自觉性,并感悟程序设计者的严谨的态度。结合研究型教学、自主性学习,了解程序设计的最新发展动态,以树立科学精神和创新思维。

 (一)实践技能目标

 培养基本的、良好的程序设计技能,编制高效可靠的程序。

 (二)素质教育目标

1、注重培养学生独立思考能力,学会科学地分析和解决问题。

2、培养学生的团结协作能力。

3、培养学生求真务实、讲求时效和一丝不苟的学习态度。

4、为学生形成良好的职业道德打下基础。

 (三)创新能力培养目标

 以培养学生软件开发创新能力、逻辑思维能力为基本目标,运用新的教学理念和教学方法,注重培养学生的自主能力、应变能力、分解能力、探究能力、动手能力和合作能力,通过实例教学、任务驱动教学和多媒体教学等教学模式,弥补传统教学法的不足,从而达到培养学生创新能力的目的。

  1. 基本要求

 安装Visual Studio编译环境,提前完成实验任务的代码编写,课堂上主要完成调试,解决问题,不会的不理解的当堂提问寻求帮助。

三、实验(实训)项目、内容与学时分配

序号

实验项目名称

学时

内容提要

实验类型

基础性

综合设计性

创新性

1

VS集成编程环境使用、函数定义与调用

3

[实验目的]

1、熟悉VS开发平台和程序开发步骤

2、了解程序与算法

3、掌握过程化程序设计的方法

4、掌握程序项目的生成和多文件程序的调试方法

[实验内容]

1、使用VS集成开发环境。

2、求2个或3个正整数中的最大数,用带有默认参数的函数实现。

3、对3个变量按由小到大顺序排列,要求使用变量的引用。

4、编写一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。用重载函数实现。

[实验方法及原理]

编写代码,上机调试。

 

 

2

定义一个简单的类

3

[实验目的]

1、    熟悉面向对象程序设计的方法

2、    掌握类和对象的概念、定义和使用方法

3、    掌握成员函数的实现与调用方法

[实验内容]

1、      定义一个日期类,数据成员包括:年、月、日,成员函数包括:输入日期、输出日期,写一个主函数对类进行测试。

2、      需要求3个长方柱的体积,请编写一个基于对象的程序,数据成员包括:长、宽、高,要求用成员函数实现以下功能:(1)由键盘分别输入3个长方柱的长、宽、高;(2)计算长方柱的体积;(3)输出3个长方柱的体积。请编写程序,上机调试并运行。

[实验方法及原理]

编写代码,上机调试。

 

 

3

构造函数和析构函数的定义及使用

3

[实验目的]

1、掌握构造函数和析构函数的定义与使用

2、熟悉对象数组的定义

[实验内容]

1、      在实验一的基础上,增加构造函数和析构函数。

2、      建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第135个学生的数据。设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

[实验方法及原理]

编写代码,上机调试。

 

 

4

静态成员的使用

3

[实验目的]

1、熟悉对象的动态建立和释放

2、了解静态成员和友元的使用

3、了解类模板的定义

[实验内容]

1、      将实验一中的输出日期函数声明为友元函数,在主函数中调用测试。

2、      商品销售某一商品,商店每天公布统一的折扣,同时允许销售人员在销售时灵活掌握售价,在此基础上,对一次购10件以上者,还可以享受9.8折优惠。编写程序,计算出当日此商品的总销售款sum,以及每件商品的平均售价。要求用静态数据成员和静态成员函数。

[实验方法及原理]

编写代码,上机调试。

 

 

5

单目、二目运算符重载

3

[实验目的]

1、掌握运算符重载的规则

2、掌握双目运算符、单目运算符重载的方法

3、了解用成员函数和友元函数重载运算符的区别

[实验内容]

1、  定义一个复数类Complex,重载运算符“+”、“-”、“*”、“/”,使之能用于复数的加、减、乘、除,重载为成员函数和友元函数,编程实现。

2、  有两个矩阵ab,均为23列,求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。

[实验方法及原理]

编写代码,上机调试。

 

 

6

<<>>的重载

3

[实验目的]

1、掌握流插入运算符和流提取运算符重载的方法

2、了解不同类型数据间的转换

[实验内容]

1、      在实验五第2题基础上,重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。

2、      定义一个Teacher类和一个Student类的,二者有一部分数据是相同,编写程序,将一个Student对象转换为Teacher类,只将相同的数据成员移植过去。

[实验方法及原理]

编写代码,上机调试。

 

 

7

单继承

3

[实验目的]

1、掌握派生类的定义和使用

2、了解三种不同派生方式的特点

[实验内容]

1、编写一个学生和教师数据输入和显示程序。设学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求:

(1)将编号、姓名的输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类。

(2)学生数据中的班号、成绩的输入和显示在student类中实现,教师数据中的职称和部门的输入和显示在teacher类中实现。

1.     2、定义直角坐标系上的一个点类(Point)作为基类,派生出描述一条直线的类(Line)(提示:两点坐标确定一直线),再派生出三角形类(Triangle)(提示:三点坐标确定一个三角形)。要求成员函数能求出两点间的距离,三角形的周长和面积等。

[实验方法及原理]

编写代码,上机调试。

 

 

8

多重继承

3

[实验目的]

1、    了解多重继承的特点

2、    了解虚基类的定义方式

[实验内容]

1、      分别定义Teahcr(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类,要求:

在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。

Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。

对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

在类体中声明成员函数,在类外定义成员函数。

在派生类Teachr_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务和工资。

[实验方法及原理]

编写代码,上机调试。

 

 

9

虚函数和抽象类

3

[实验目的]

1、掌握虚函数的定义

2、熟悉多态性在继承体系中的实现

3、了解抽象类的使用

[实验内容]

1、  定义Point(点)类,由Point类派生出Circle(圆)类,再由Circle类派生出Cylinder(圆柱体)类。用工程实现。

2、将Shape基类定义为抽象类,其成员函数GetArea()为虚函数,由Shape类派生出Circle类(圆)和Rectangle类(矩形),并由Rectangle类派生出Square类(正方形),它们都利用GetArea()函数计算图形面积,根据下列调用语句,分别写出各个类的定义,并且成功地调试运行程序。(用工程prog2存放)

1.         Shape *s[5];
    s[0]=new Circle(2);
    s[1]=new Circle(3);
    s[2]=new Rectangle(3,4);
    s[3]=new Rectangle(4,5);
    s[4]=new Square(5);
    for(int i=0; i<5; i++)   cout<<s[i]->GetArea()<<endl;

[实验方法及原理]

编写代码,上机调试。

 

 

10

标准输入输出流

3

[实验目的]

1、    掌握C++标准输入流和标准输出流的使用

2、    了解常用的输入流及输出流成员函数的定义

[实验内容]

1、      从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。

输入三角形的三边a,b,c,构成三角形的条件是:a+b>c,b+c>a,c+a>b,编写程序,输入a,b,c,检查是否满足以上条件,如不满足,用cerr输出有关出错信息。

[实验方法及原理]

编写代码,上机调试。

 

 

11

文件输入输出

3

[实验目的]

1、掌握文件流类和文件流对象的定义

2、掌握ASCII文件的打开、关闭与读写操作

3、了解二进制文件的操作

[实验内容]

1、学生信息包括:姓名、性别、年龄、数学成绩、英语成绩和语文成绩,要求:

(1) 从键盘输入10个学生记录的信息并保存到文件“student.txt”中,每个学生记录占一行,各项数据中间用逗号隔开;

(2) 建立一个学生类Student,依次读取文件中每条记录的值并赋给学生对象的各属性,同时计算出平均成绩显示到屏幕上,在输出字符串时左对齐,输出数值时右对齐。

[实验方法及原理]

编写代码,上机调试。

 

 

12

异常处理

3

[实验目的]

1、了解异常处理的三步骤

2、熟悉命名空间的使用

[实验内容]

1、      求一元二次方程式ax2+bx+c=0的实根,如果方程没有实根,则输出有关警告信息。

2、      学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址),教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩),两个部门分别编写了本部门的学生数据管理程序,其中都用了Student作为类名。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据,分别输出两种内容的学生数据。要求用ANSI C++编程,使用命名空间。

[实验方法及原理]

编写代码,上机调试。

 

 



、教材及主要参考资料

1. 教材    

[1]谭浩强.C++程序设计(第3版)》,清华大学出版社,20158

[2] 谭浩强.C++程序设计题解与上机指导(第3版)》,清华大学出版社,20158

2. 参考资源

1)教学平台

 ①《C++程序设计》 南京中医药大学电子教学平台

网址:http://e.njucm.edu.cn

 ②面向对象C++程序设计,国家精品资源共享课,

 网址:https://www.icourse163.org/learn/NUAA-1001754370?tid=1461746442

       (2)参考书目

 ①Stephen Prata. C++ Primer Plus(6),人民邮电出版社,20127

 ②本贾尼·斯特劳斯特鲁普.C++程序设计语言(第1—3部分)(原书第4版),机械工业出版社,20167

 ③H.M.Deitel P.J. Deitel.C++程序设计教程(第4版)》,清华大学出版社,2004