山东农业大学BK002006

课程英文名称(ExperimentsofC++Programming)

课程代码:BK002006学时:32学分:1

适用专业:计算机,网络,物联网,计测试,计开发,空间,信息,数学,遥感

课程性质:必修

撰稿人:朱红梅审定人:张继军

一、实验课的性质与任务

本实验大纲与该课程教学大纲的内容相配合,由浅入深的指导学生了解和掌握如何在VisualC++6.0,VisualC++2008或CodeBlocks8.0以上集成开发环境中利用C++程序设计语言进行简单的程序设计。通过这些实验内容加深学生对课堂讲授内容的理解,使学生得到程序设计方面的基本训练,培养学生程序设计的能力和调试程序的基本技能,并熟练掌握用C++设计结构化程序的基本知识和编程技巧,提高学生利用计算机解决实际问题的能力,使之能把程序设计应用到今后的专业学习中。本课程的实践与操作是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。本实验课程的任务是使学生在实验过程中深化理解和灵活掌握教学内容,并训练问题的综合分析、解决的能力和编程能力,形成良好的编程风格,同时,培养学生的工作规范和科学作风,为后续课程的学习奠定坚实的理论和实践基础。

二、实验目的与要求

实验目的:本实验课注重培养学生的操作能力、实践能力、逻辑思维能力、系统设计与分析能力以及知识转化与应用能力。使学生了解软件开发的系统环境,掌握软件设计开发的基础知识、基本技能和方法。使学生在掌握C++语言的同时,能够对现实世界中较简单的问题及其解决方法用计算机语言进行描述,为软件设计和开发打下基础。

实验要求:熟悉VisualC++2008编程环境,掌握使用VisualC++2008开发应用程序的基本方法和步骤,能够编写、调试和运行一般的应用程序。掌握C++的语法规则,全面了解C++的特点,熟练掌握C++程序设计的基本方法和编程技巧,提高程序设计和程序调试的能力,能够运用结构化程序设计思想设计出易读、易调试、易维护的程序设计能力和技巧,并养成良好的程序设计风格和习惯。独立完成所布置实验题目。在实验前一定要先行了解实验目的、内容、要求以及注意事项,事先设计好程序框架、流程图和基本代码,统一实验时再进行上机调试,最后按照要求提交实验材料。

三、实验项目设置情况

序号

实验项目名称

学时

开出要求

实验项目类型

必做

选做

基础型

综合设计

研究创新

演示

验证

1

类与对象的基本概念和应用

4

2

类与对象的应用程序设计

3

静态成员与友元函数的应用

运算符重载

5

继承与派生的应用

6

虚函数与多态性的应用

7

模板的应用程序设计

8

输入输出流程序设计

9

四、各实验项目教学内容

实验项目一:类与对象的基本概念和应用4学时

(一)实验目的要求

1、掌握类的概念和定义方法;

2、掌握对象的定义方法和对象成员的表示方法;

3、初步掌握面向对象的程序设计方法。

(二)实验材料和仪器设备

硬件:计算机

软件:MicroSoftVisualC++6.0或CodeBlocks8.0以上集成开发环境

(三)实验内容

1、定义一个Book(图书)类,在该类定义中包括以下数据成员和成员函数。

数据成员:bookname(书名)、price(价格)和number(存书数量)。

成员函数:display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。

在main函数中,要求创建某一种图书对象,并对该图书进行简单的显示、借阅和归还管理。

实验项目二:类与对象的应用程序设计4学时

1、加深对类和对象以及面向对象程序设计有关概念的理解,进一步了解面向对象程序设计的特点和方法;

2、初步掌握构造函数和析构函数以及友元函数的概念及用法;

编写程序实现下列的要求:

1、定义一个Box(盒子)类,在该类定义中包括以下数据成员和成员函数。

数据成员:length(长)、width(宽)和height(高)。

成员函数:构造函数Box,设置盒子的长、宽和高3个初始数据;成员函数setBox对数据成员置值;成员函数volume计算盒子的体积。

在main函数中,要求创建Box对象,输入长、宽、高,输出盒子的体积。

2、定义一个名为Integer的整数类,具有数据成员d、成员函数GetD()获取d的值、SetD()设置d的值、IsOdd()判断d是否为一个数、IsPrine()判断d是否为一个素数,并设计主函数用一个对象分别设置d的值为15和31,测试这个类。

实验项目三:静态成员与友元函数的应用4学时

1、掌握类的静态成员的使用方法;

2、理解友元概念,掌握友元函数、友元类的使用方法。

1、定义一个Student类,在该类定义中包括:一个数据成员(分数score)及两个静态数据成员(总分total和学生人数count);成员函数scoretotalcount(doubles)用于设置分数、求总分和累计学生人数;静态成员函数sum()用于返回总分;静态成员函数average()用于求平均值。在main函数中,输入某班同学的成绩,并调用上述函数求全班学生的总分和平均分。

2、定义一个表示点的结构类型Point和一个由直线方程y=ax+b确定的直线类Line。结构类型Point有两个成员x和y,分别表示点的横坐标和纵坐标。Line类有两个数据成员a和b,分别表示直线方程中的系数。Line类有一个成员函数print用于显示直线方程。友元函数setPoint(Line&l1,Line&l2)用于求两条直线的交点。在main函数中,建立两个直线对象,分别调用print函数显示两条直线的方程,并调用函数setPoint求这两条直线的交点。

实验项目四:运算符重载4学时

1、掌握通过运算符重载实现多态性的方法;

2、学会运算符重载的成员函数法和友元函数法;

3、能区分单目运算符的前置与后置。

1、分别使用成员函数和友元函数编写程序重载运算符“+”,使该运算符能实现两个字符串的连接。

2、假设有向量X=(x1,x2,…,xn)和Y=(y1,y2,…,yn),它们之间的加、减和乘法分别定义为:

X+Y=(x1+y1,x2+y2,…,xn+yn)

X-Y=(x1-y1,x2-y2,…,xn-yn)

X*Y=x1*y1+x2*y2+,…,+xn*yn

编写程序定义向量类Vector,重载运算符“+”、“-”、“*”和“=”,实现向量之间的加、减、乘、赋值运算;重载运算符“>>”、“<<”实现向量的输入、输出功能。注意检测运算的合法性。

3、定义一个类nauticalmile_kilometer,它包含两个数据成员kilometer(千米)和meter(米);还包含一个构造函数对数据成员进行初始化;成员函数print,用于输出数据成员kilometer和meter的值;类型转换函数operatordouble,实现把千米和米转换为海里(1海里=1.852千米)的功能。编写main函数,测试类nauticalmile_kilometer。

4、定义一个集合类setColour,要求元素为枚举类型值。例如,

enumcolour{red,yellow,blue,white,black};

集合类实现交、并、差、属于、蕴含、输入、输出等各种基本运算。设计main函数测试setColour类的功能。

实验项目五:继承与派生的应用4学时

1、加深对继承与派生的理解,初步掌握定义和使用类的继承关系以及定义派生类;

2、熟悉不同继承访式下对基类成员的访问。

1、定义一个Rectangle类,它包含两个数据成员length和width,以及用于求长方形面积的成员函数。再定义Rectangle的派生类Rectangular,它包含一个新数据成员height和用来求长方体体积的成员函数。在main函数中,使用两个类,求某个长方形的面积和某个长方体的体积。

2、假设某销售公司有一般员工、销售员工和销售经理。月工资的计算办法是:

一般员工月薪=基本工资;

销售员工月薪=基本工资+销售额*提成率;

销售经理月薪=基本工资+职务工资+销售额*提成率。

编写程序,定义一个表示一般员工的基类Employee,它包含3个表示员工基本信息的数据成员:编号number、姓名name和基本工资basicSalary;

由Employee类派生销售员工Salesman类,Salesman类包含2个新数据成员:销售额sales和静态数据成员提成比例commrate;

再由Salesman类派生表示销售经理的Salesmanager类。Salesmanager类包含新数据成员:岗位工资jobSalary。

为这些类定义初始化数据的构造函数,以及输入数据input、计算工资pay和输出工资条print的成员函数。

设公司员工的基本工资是2000元,销售经理的岗位工资是3000元,提成率=5/1000。在main函数中,输入若干个不同类型的员工信息测试你的类结构。

3、试写出你所能想到的所有形状(包括二维的和三维的),生成一个形状层次类体系。生成的类体系以Shape作为基类,并由此派生出TwoDimShape类和ThreeDimShape类。它们的派生类是不同的形状类。定义类体系中的每一个类,并用main函数进行测试。

实验项目六:虚函数与多态性的应用4学时

1、了解虚函数的概念和作用;

2、学习虚函数的用法。

3、理解多态性的概念;

编写程序,由给定的基类进行虚函数的设计。

1、使用虚函数编写程序,求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看做由圆继承而来,因此,可以把圆类Circle作为基类。在Circle类中定义一个数据成员radius及两个虚函数area和volume。由Circle类派生Sphere类和Column类。在派生类中对虚函数area和volume重新定义,分别求球体和圆柱体的体积及表面积。

2、某学校教职工的工资计算方法为:

所有教职工都有基本工资;

教师月工资为固定工资+课时补贴。课时补贴根据职称和课时计算。例如,每课时教授补贴50元,副补贴30元,讲师补贴20元。

管理人员月薪为基本工资+职务工资;

实验室人员月薪为基本工资+工作日补贴。工作日补贴等于日补贴×月工作日数。

定义教职工抽象类,派生教师、管理人员和实验室类,编写程序测试这个类体系。

实验项目七:模板的应用程序设计4学时

1、理解类模板的概念;

2、掌握类模板的使用方法;

3、能用类模板方式编写简单”通用”类程序。

编写程序,实现以下功能:

1、使用函数模板实现对不同类型数组求平均值的功能,并在main函数中分别求一个整型数组和一个浮点型数组的平均值。

2、建立结点,包括一个任意类型数据域和一个指针域的单向链表类模板。在main函数中使用该类模板建立数据域为整型的单向链表,并把链表中的数据显示出来。

3.定义类模板T_Counter,实现基本类型数据的+、-、*、=、>>、<<运算;类模板T_Vector,实现向量运算;类模板T_Matrix,实现矩阵运算。请分析使用类模板建立T_Counter、T_Vector、T_Matrix对象和使用类继承体系建立IntReal、Vector、Matrix对象(见第8章习题8.4第4、5、7小题)的语法区别和运算功能区别。

实验项目八:输入输出流的应用4学时

1、C++的输入输出含义及其实现方法;

2、掌握标准输入输出流的应用;

3、掌握文件的应用方法。

1、以表格形式输出当x=1°,2°,…,10°时sinx、cosx和tanx的值。要求:输出时,数据的宽度为10,左对齐,保留小数点后5位。

2、建立一个文本文件,从键盘输入一篇短文存放在文件中。短文由若干行构成,每行不超过80个字符。读出建立的文本文件,显示在屏幕上并统计该文件的行数。

3、读出一个作业cpp文件,删除全部注释内容,即以“/*……*/”相括的文本和以“//”开始到行末的文本,生成一个新的cpp文件。

5、设有两个按升序排列的二进制数据文件f和g,将它们合并生成一个新的升序二进制数据文件h。

五、实验报告要求

1.需求和规格说明(问题描述)

描述问题,简述题目要解决的问题是什么,规定软件做什么,原题条件不足时要补全。

2.设计

设计思想:存储结构,主要算法的基本思想。不要画框图。

设计表示:每个函数或过程的头和规格说明;列出每个函数或过程所调用和被调用的过程和函数。

详细设计表示:主要算法的框架。

3.用户手册:即使用说明,如输入怎样的数据、输入多少、何时输入、如何结束等。

4.调试报告:测试用例,测试结果,调试过程中遇到的主要问题是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等。

5.附录:源程序清单和结果。程序要加注释,还可手工添加一些注释。测试数据及输出结果。

六、课程考核方式及成绩评定

(一)考核方式

平时成绩:e课堂提问//学习态度//e课外资料收集整理//e预习报告//实验报告//其他;

结课后考试:e笔试//操作。

(二)课程成绩评定办法

成绩构成:考勤10%//平时20%//考试70%

七、实验应配套的主要仪器设备及台(套)数(以一个实验教学班为标准)

软件:Windows系列操作系统,MicroSoftVisualC++6.0或CodeBlocks8.0以上集成开发环境

30套/实验教学班

附:教学参考资料

1、选用的教材:

周霭如,林伟健.C++程序设计基础(上).电子工业出版社,2012.7,第4版。

2、主要参考书:

[1]林伟健,周霭如.C++程序设计基础实验指导与习题解答.电子工业出版社,2004。

[2]郑莉等编著,C++语言程序设计,清华大学出版社,2003,第3版。

[3]黄维通编著,VisualC++面向对象与可视化程序设计习题解析与编程实例,清华大学出版社,2003,第2版。

THE END
1.中南民族大学算法分析与设计实验报告.doc中南民族大学算法分析与设计实验报告.doc 组员 学号 姓名 实验名称 实验I:体验神奇的算法 实验室 S9205 实 验 目 的 或 要 求 本实验要求根据给定的正整数n计算第n个斐波那契数。请选择自己最熟悉的编程语言实现这些算法来体验算法求解问题的神奇,下列基本要求必须完成: https://max.book118.com/html/2024/0205/8053117014006034.shtm
2.实验报告[集锦15篇]实验报告2 学号200912103 姓名 王胜楠 专业电子信息工程成绩 【实验目的】 学习了Photoshop软件的基本工具后,能运用软件结合自己的设计理念,制作一个综合性作品。 【实验内容】 要求:能从不同图片中选取所需要的内容,结合动态画笔工具,修复工具等工具,运用Photoshop软件,制作一个体现自己设计理念的综合性作品。 https://www.ruiwen.com/shiyanbaogao/8221431.html
3.多源数据的概念及其特征分析实验报告怎么写帆软数字化转型知识库多源数据的概念及其特征分析实验报告怎么写 多源数据是指从多个不同来源收集的数据,这些数据可以是结构化的、半结构化的或非结构化的。其主要特征包括多样性、异构性、动态性、复杂性和不确定性。多源数据的多样性指的是数据形式多种多样,包括文本、图像、视频等;异构性意味着数据来源不同,可能使用不同的格式和结构https://www.fanruan.com/blog/article/371055/
4.C/C++算法设计与分析实验报告北忘山C/C++ 算法设计与分析实验报告 算法实验整体框架的构建 实验模块Ⅰ:算法分析基础——Fibonacci序列问题 实验解析 Fibonacci序列问题代码块 实验模块Ⅱ:分治法在数值问题中的应用——矩阵相乘问题 矩阵相乘问题代码块 算法实验整体框架的构建 实验题目 算法实验主菜单的设计。https://www.cnblogs.com/beiwangshan/p/13829251.html
5.算法设计与分析实验报告(完整代码)算法设计与分析实验报告(完整代码) 实验一 分治法求众数问题(或…) 一、实验目的 掌握递归与分治方法的基本设计思想与原则,学会递归技术编程技巧。 二、实验内容 1、问题描述 给定含有n个元素的的集合S,求出集合S中的众数。 (或 在有序序列(r1,r2,…,rn)中求ri=i的元素)https://blog.csdn.net/Z_JY2333/article/details/134673145
6.银行家算法实验报告(精选6篇)篇2:银行家算法实验报告 一、实验名称:银行家算法 二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 三、问题分析与设计: 1、算法思路:先对用户提出的请求进行合法性检查,即检查请求是否大于需https://www.360wenmi.com/f/filekujnadm2.html
7.操作系统实验报告(通用5篇)在生活中,大家逐渐认识到报告的重要性,我们在写报告的时候要注意语言要准确、简洁。其实写报告并没有想象中那么难,以下是小编精心整理的操作系统实验报告,仅供参考,希望能够帮助到大家。 操作系统实验报告 1 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。 https://www.unjs.com/fanwenwang/gzbg/20170727000008_1407349.html
8.从玄学走向科学:AB测试驱动的科学增长在这之后,AB实验渐渐普及开来,逐步成为数据驱动增长的经典手段,助力了大量互联网产品的迭代优化。今天,谷歌微软这些科技公司每年进行着数以万计的实验,覆盖了亿级的用户量,实验的内容涵盖了绝大多数产品特征的迭代优化,从产品命名到交互设计,从改变字体、弹窗效果、界面大小,到推荐算法、广告优化、用户增长等等。 https://www.51cto.com/article/745854.html
9.设备管理实验报告spooling算法设计一个SPOOLING输出进程和两个请求输出的用户进程及一个SPOOLING输出服务程序。 SPOOLING输出进程工作时,根据请求块记录的各进程要输出的信息,将其实际输出到打印机或显示器。这里,SPOOLING进程与请求输出的用户进程可并发运行。 2、设计进程调度算法 进程调度采用随机算法,这与进程输出信息的随机性相一致。两个请求输出https://www.coder100.com/index/index/content/id/1010712
10.聚合方法范文12篇(全文)有实验报告称对计算机专家的判断,再现率50%时能达到80%的精准度。而其余三类专家再现率50%时精准度为60%以下。如果判断专家的精准度提高,可以作为选择垂直统计综合法根据统计调查数据,采用聚合算法得到配电网络的综合负荷模型。现有的电动机聚合方法主要有容量加权法、基于空载和堵转工况下的电动机聚合方法、基于电动https://www.99xueshu.com/w/ikey0beicfyd.html
11.迷宫问题设计实验报告课程设计题目:迷宫问题设计实验 一、问题描述 有一个 n * m 的迷宫,给定入口和出口,求路径。 二、概要设计 1. 算法的设计 采用BFS(Breadth-first search,广度优先搜索)。 伪代码如下 1. 队列初始化 2. 入口点坐标进队并标记来过 3. 当队列不为空时循环执行下述操作: https://www.jianshu.com/p/55c30ca8ae9a
12.页面淘汰算法模拟实现与比较实验报告.zip基于C++贪心算法实现具体NP完全问题的近似解源码+实验报告.zip基于C++贪心算法实现具体NP完全问题的近似解源码+实验报告.zip基于C++贪心算法实现具体NP完全问题的近似解源码+实验报告.zip基于C++贪心算法实现具体NP完全问题的近似解源码+实验报告.zip基于C++贪心算法实现具体NP完全问题的近似解源码+实验报告.zip基于C++贪心https://www.iteye.com/resource/weixin_42267288-12620960