高等程序设计实验指导书2015版

更新时间:2024-05-15 23:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信科院(2015级)高等程序设计实验指导书

《高等程序设计》

实验指导书

信息科学与工程学院

2015年10月

1

信科院(2015级)高等程序设计实验指导书

目录

第一章 实验要求 ........................................................................................................................... 3

1.1 实验的意义和目的 .......................................................................................................... 3 1.2 实验过程总体要求 .......................................................................................................... 3

1.2.1 实验内容总体安排 ............................................................................................... 3 1.2.2 实验前的准备工作 ............................................................................................... 4 1.2.3 上机实验步骤 ....................................................................................................... 4 1.2.4 上机代码编写要求 ............................................................................................... 4 1.3 实验考核 .......................................................................................................................... 4 第二章 实验内容与指导 ............................................................................................................... 5

实验一 类和对象 ................................................................................................................... 5

实验类型:设计型实验 4学时 .................................................................................... 5 实验目的 ........................................................................................................................... 5 知识点介绍 ....................................................................................................................... 5 实验内容 ........................................................................................................................... 7 实验二 继承与派生 ............................................................................................................. 11

实验类型:设计型实验 2学时 .................................................................................. 11 实验目的 ......................................................................................................................... 11 知识点介绍 ..................................................................................................................... 11 实验内容 ......................................................................................................................... 12 实验三 运算符重载 ............................................................................................................. 15

实验类型:设计型实验 2学时 .................................................................................... 15 实验目的 ......................................................................................................................... 15 知识点介绍 ..................................................................................................................... 15 实验内容 ......................................................................................................................... 16 实验四 多态与虚函数 ......................................................................................................... 18

实验类型:设计型实验 2学时 .................................................................................. 18 实验目的 ......................................................................................................................... 18 知识点介绍 ..................................................................................................................... 18 实验内容 ......................................................................................................................... 20 实验五 文件操作 ................................................................................................................. 21

实验类型:设计型实验 2学时 .................................................................................. 21 实验目的 ......................................................................................................................... 21 知识点介绍 ..................................................................................................................... 21 实验内容 ......................................................................................................................... 22 实验六 面向对象程序设计实践 ......................................................................................... 25

实验类型:综合型实验 4课时 .................................................................................. 25 实验目的 ......................................................................................................................... 25 实验内容 ......................................................................................................................... 25

附录一 实验卡和实验报告 ....................................................................................................... 28

2

信科院(2015级)高等程序设计实验指导书

第一章 实验要求

1.1 实验的意义和目的

程序设计是计算机专业的本,计算机专业大量的理论和实践学习,比如,从《数据结构》、《面向对象的系统分析与设计》、《操作系统》到毕业设计,都会用到程序设计,而C++程序设计语言则是进行程序设计的基础工具。

正如我们在学习语言时,不能仅仅停留在“听得懂”,而要学会能说会道,才能有效地和别人进行交流。类似的,学习C++程序设计不能仅满足于“懂得了”,满足于了解语法和能看懂书上的程序,而应当掌握程序设计的全过程,即能独立编写源程序,独立调试运行程序,独立分析运行结果,学会利用C++程序设计语言和计算机进行交流。

程序设计是一门实践性很强的课程,必须以实践为重,许多实践知识不是靠听课和看书学到的,而是通过长时间的实践积累起来的,切忌只看书,不上机实践。不仅要纸上谈兵,更要沙场比试。正是如此,高等程序设计实验给同学提供了一个实践的机会。

高等程序设计实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编写的程序正确与否。其目的更在于:

1、加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,不足于掌握理解。通过多次上机,就能自然地、熟悉地掌握,所谓熟能生巧。

2、熟练掌握并使用C++程序开发的环境。

3、学会独立调试和运行程序。任何程序都不是一蹴而就的,需要多次的更改调试,对初学者来说更是如此。因此,要在调试过程中积累经验,再利用经验高效、快速地调试程序。调试程序的能力是每个程序设计人员应当掌握的一项基本功。

4、养成良好的编程习惯,编写良好风格的代码。编写程序应遵循良好的编程规范,使程序具有良好的可读性、可维护性。正如写文章一样,不仅要写得一手好字,更要格式规范,段落分明,思路清晰。

5、培养独立编写程序的能力。程序设计最终的目的是使用计算机解决实际问题,问题是什么,如何解决,解决方法是什么,如何编写程序解决问题才是核心。因此,在做实验的时候应多问为什么,多观察,多分析,多动手。

1.2 实验过程总体要求

1.2.1 实验内容总体安排

序号 1 2 3 4 5 6 实验名称 类和对象 继承与派生 运算符重载 多态与虚函数 文件操作 面向对象的程序设计 实验类型 设计型 设计型 设计型 设计型 设计型 综合型 实验学时 4 2 2 2 2 4 题目数 三选二 三选二 三选二 两题 三选二 四选一 教学周次 七、八周 九周 十周 十二 十四 十五、十六 3

信科院(2015级)高等程序设计实验指导书

1.2.2 实验前的准备工作

1、预习、思考实验内容;

2、复习和掌握与本实验有关的知识内容;

3、准备好上机所需的部分程序代码。实验课内时间主要是完整程序、调试程序、运行程序、测试程序和分析结果的时间。切忌不编写程序或抄袭别人程序去上机;

4、对程序中自己有不懂或疑问的地方,应做出记录,以便在实验课上集中解决; 5、准备好调试和运行所需的数据。

1.2.3 上机实验步骤

上机实验时应该是一人一组,独立上机。上机过程中出现的问题,尽量先独立思考和解决,尤其是语法错误问题,应善于独立分析判断,这是提高程序调试能力最主要的途径;对于难以解决的问题可以和同学交流或问老师。具体的上机步骤是:

1、在磁盘上建立自己的工作目录,比如D:\\张三\\高等程序设计实验\\实验一 2、进入C++工作环境,如Dev CPP或者Visual Studio2012集成开发环境; 3、输入自己编好的程序; 4、检查输入是否有错;

5、编译和连接。如果出现错误,首先记录错误信息,然后根据提示的出错信息查找出错位置和原因,加以改正。再进行编译??,如此反复直到正确编译和连接为止通过为止。

6、运行程序,输入测试数据,记录程序运行结果; 7、分析结果是否正确,并改进程序; 8、撰写实验报告(见附录一);

9、提交实验成果,包含源码与实验报告(电子版)——每两次实验提交一次,每个同学将实验成果压缩成”姓名+实验序号”.rar文件,如”张三实验1.rar”。

1.2.4 上机代码编写要求

1、实验代码书写规范清晰,如缩进、空行、程序块对齐等; 2、书写的代码有必要的注释;

注意:代码的规范性将作为实验考核的一个重要部分

1.3 实验考核

实验考核主要是三个方面:

1、上机实验考勤。每次上机应主动在助教处签到,冒签等不诚信行为一旦发现,取消本次实验成绩。累计缺席实验课5次及5次以上者(共16课),取消期末机考试资格。实验课请假,请出据学工办老师签字的正规请假条。

2、实验数据提交。应根据助教要求按时提交每次实验的数据(见2.2.6 实验数据提交)。抄袭代码或实验报告等不诚信行为一旦发现,取消本次实验成绩。实验数据未交5次及5次以上者(共13个实验),取消期末机考试资格。

3、助教每次实验课根据实验过程情况,随机抽查3~5名同学。

4

信科院(2015级)高等程序设计实验指导书

第二章 实验内容与指导

实验一 类和对象

实验类型:设计型实验 4学时 实验目的

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

2、掌握类的构造函数和析构函数的概念和使用方法; 3、掌握对象数组、对象指针的定义和使用方法; 4、学习友元的概念和定义使用方法; 5、学习简单面向对象程序的编写;

知识点介绍

1、类的定义方法:

class 类名称 {

public:

公有成员(外部接口) private:

私有成员 protected:

保护型成员 };

2、访问对象中的成员可以有3种方法: 通过对象名和成员运算符访问对象中的成员; 通过指向对象的指针访问对象中的成员; 通过对象的引用变量访问对象中的成员;

3、构造函数(constructor)来处理对象的初始化。

构造函数是一种特殊的成员函数,不需要用户来调用它,而是在建立对象时自动执行。 构造函数的名字必须与类名同名,编译系统能识别它并把它作为构造函数处理。

它不具有任何类型,不返回任何值。构造函数的功能是由用户定义的,用户根据初始化的要求设计函数体和函数参数。

如果用户自己没有定义构造函数,则C++系统会自动生成一个构造函数,只是这个构造函数的函数体是空的,也没有参数,不执行初始化操作。

用户可以自定义带参数的构造函数 构造函数首部的一般格式为

构造函数名(类型 1 形参1,类型2 形参2,?) 实参是在定义对象时给出的。 4、构造函数的重载:

5

信科院(2015级)高等程序设计实验指导书

在一个类中可以定义多个构造函数,以便对类对象提供不同的初始化的方法,供用户选用。

这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。 尽管在一个类中可以包含多个构造函数,但是对于每一个对象来说,建立对象时只执行其中一个构造函数,并非每个构造函数都被执行。

5析构函数(destructor) 是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个“~”符号。

当对象的生命期结束时,会自动执行析构函数:

①如果在一个函数中定义了一个对象(它是自动局部对象),当这个函数被调用结束时,对象应该释放,在对象释放前自动执行析构函数。

②static局部对象在main函数结束或调用exit函数结束程序时,才调用static局部对象的析构函数。

③如果定义了一个全局对象,则在程序的流程离开其作用域时(如main函数结束或调用exit函数) 时,调用该全局对象的析构函数。

④如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数。

析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。

程序设计者事先设计好析构函数,以完成所需的功能,只要对象的生命期结束,程序就自动执行析构函数来完成这些工作。

析构函数不返回任何值,没有函数类型,也没有函数参数。因此它不能被重载。一个类可以有多个构造函数,但只能有一个析构函数

析构函数的作用并不仅限于释放资源方面,它还可以被用来执行“用户希望在最后

一次使用对象之后所执行的任何操作”,

如果用户没有定义析构函数,C++编译系统会自动生成一个析构函数,但它只是徒

有析构函数的名称和形式,实际上什么操作都不进行。

6、对象数组:

不仅可以由简单变量组成(例如整型数组的每一个元素都是整型变量),也可以由对象组成(对象数组的每一个元素都是同类的对象)。

7、定义指向类对象的指针变量的一般形式为:

类名 *对象指针名; 8、This指针:

在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this。 它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。 this指针是隐式使用的,它是作为参数被传递给成员函数的。 9、友元可以访问与其有好友关系的类中的私有成员。 友元包括友元函数和友元类。

在类体中用friend对类以外函数进行声明,此函数就称为本类的友元函数。 友元函数可以访问这个类中的私有成员。 友元成员函数

friend函数不仅可以是一般函数(非成员函数),而且可以是另一个类中的成员函数。 一个函数(包括普通函数和成员函数)可以被多个类声明为“朋友”,这样就可以引用多个类中的私有数据

在A类的定义体中用以下语句声明B类为其友元类: friend B;

这时B类就是A类的友元类。友元类B中的所有函数都是A类的友元函数,可以访问A类中的所有成员。

关于友元,有两点需要说明:

(1) 友元的关系是单向的而不是双向的。 (2) 友元的关系不能传递。

6

信科院(2015级)高等程序设计实验指导书

实验内容

题目1 图形(必做)

Description

设计三个图形类:Circle(圆)、Rectangle(矩形)、Triangle(三角形); 1、Cirlce类基本信息:圆心坐标、半径; Rectangle类基本信息:长、宽;

Triangle类基本信息:三个顶点坐标;

其中:成员变量为private属性,成员函数为public属性;

2、每个图形类有计算图形的面积GetArea(),显示图形的基本信息函数Show();

Input

输入有两行:

第一行是图形的名称(不能是汉字)

第二行输入图形的基本属性.每次只需要输入该图形的基本属性即可.

对于圆(需要输入三个数据):第一个数据是圆心的x坐标,第二个数据是圆心的y坐标,第三个数据是圆的半径;

对于矩形(需要输入两个数据):第一个表示矩形的长,第二个数据表示矩形的宽;

对于三角形(需要输入6个数据):他们分别是三角形的三个顶点的坐标,即x1,y1,x2,y2,x3,y3.

Output

输出共有三行:

第一行是图形的名称

第二行输出图形的基本属性,每个数据之间由一个空格隔开; 第三行输出图形的面积.(结果保留2位有效数字) 具体的请见Sample Output.

7

信科院(2015级)高等程序设计实验指导书

开始输输入入图图形形名名称称NOSample Input

Rectangle 20 50

Circle 20 30 5

Sample OutputRectangle 20 50 Area:1000

Circle 20 30 5

输入合法YES输入相应图形参数计算图形面积输出图形信息结束 图1 流程图示

8

信科院(2015级)高等程序设计实验指导书

Area:78.54

Hint

必须用类来设计完成.

1、注意多个构造函数的声明方式与定义实现;

2、当输入数据为不合理数据时(例如:输入的三角形的顶点是否能组成一个三角形),提示用户输入错误;

题目2 学生类(二选一)

设计一个Studnet(学生)类

1、基本信息:学号、姓名、性别、出生日期、年级、班级、院系、专业; 其中:基本信息为private属性,成员函数为public属性;

2、Student类有多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数

3、基本功能:

1)使用对象数组保存学生对象;

2)可以从键盘输入学生的基本信息,学号自动增加;

3)SetInfo(形参表)函数可以修改学生的基本信息函数,例如:班级、专业等; 4)Show()函数显示学生信息; [实验提示]

1、注意带参数的构造函数和带默认参数的构造函数的声明与定义; 2、从键盘输入基本信息,调用带参数的构造函数生成学生对象; 3、当输入数据为不合理数据时,提示用户输入错误; 4、通过静态成员来实现学号的自动增加 [测试数据]

1、学号:2015001 班级:jy01 2、学号:2015002 3、学号:2015003 班级:jy01 4、学号:2015004 班级:jy02 5、学号:2015005

姓名:zhangesan 院系:computer 姓名:lihuan 姓名:wang 院系:computer 姓名:zhan

姓名:song

出生日期:98年11月 专业:application

出生日期:97年11月 出生日期:98年7月 专业:software

出生日期:98年11月 出生日期:98年11月

年级:15级

年级:15级 年级:15级

题目3 人员管理(二选一)

Description

9

信科院(2015级)高等程序设计实验指导书

设计某小型公司的employee(人员)类 1、类

1)employee类:

基本信息:编号、姓名、性别、出生日期、职位等; 出生日期使用自定义的Date(日期)类;

其中:基本信息为private属性,成员函数为public属性; 可以从外部访问类成员的友元函数; 2)Date类:

成员变量:年、月、日

成员函数:SetYear(int year)、SetMonth(int month)、SetDay(int day) GetYear()、GetMonth()、GetDay() 2、功能:

输入姓名实现查找功能,如果存在这位员工,输出他的基本信息,如果不存在,则输出“NO THIS PERSON!”

Input

第一行输入这个公司员工的人数N(N < 50);

接下来的N+1行输入个这N个员工的基本信息;在输入员工信息时第一个数据表示员工的ID,第二个数据表示员工的名字(小于20各个字符),接下来的三个数据表示员工出生的年、月、日;最后一个数据表示的是员工的职位(不超过20个字符)

最后一行输入你要查找的员工的姓名。

具体的请见Sample Input。

Output

如果存在这位员工,输出他的基本信息,如果不存在,则输出“NO THIS PERSON!”员工的每一个信息占一行,具体的请见Sample Output。

Sample Input

10001 jack 80 11 1 normal 10002 andy 75 1 9 manager 10003 alex 81 4 3 secretary 10005 lili 82 10 1 technical jack

Sample Output

ID:10001

10

信科院(2015级)高等程序设计实验指导书

name:jack

birthday:80/11/1 postion:normal

Hint

注意不要在输入或者输出的时候出现汉字。本系统不支持汉字。

1、注意带参数的构造函数和带默认参数的构造函数的声明与定义; 2、定义employee类的成员变量时,应注意变量类型的声明;

3、在查询时,通过申明成employee类的友元函数来访问类的成员变量;

实验二 继承与派生

实验类型:设计型实验 2学时 实验目的

1、理解继承在面向对象程序设计中的重要作用; 2、理解继承和派生的概念;

3、掌握通过继承派生出一个新类的方法; 4、进一步学习简单面向对象程序的编写;

知识点介绍

1、保持已有类的特性而构造新类的过程称为继承。

2、在已有类的基础上新增自己的特性而产生新类的过程称为派生。 3、被继承的已有类称为基类(或父类)。 4、派生出的新类称为派生类。

5、一个派生类从一个基类派生称为单继承

class 派生类名:继承方式 基类名 {

成员声明; }

6、三种继承方式

公有继承 public 私有继承 private 保护继承 protected

(1) 公用继承(public inheritance)

基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。

(2) 私有继承(private inheritance)

基类的public和protected成员都以private身份出现在派生类中,但基类的private

11

信科院(2015级)高等程序设计实验指导书

成员不可直接访问。

(3) 受保护的继承(protected inheritance)

基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问

7、在设计派生类的构造函数时,不仅要考虑派生类所增加的数据成员的初始化,还应当考虑基类的数据成员初始化。

派生类构造函数一般形式为:

派生类构造函数名(总参数表列): 基类构造函数名(参数表列):子对象构造函数

名(参数列表)

{

派生类中新增数据成员初始化语句 }

8、派生类构造函数的任务应该包括3个部分: (1) 对基类数据成员初始化; (2) 对子对象数据成员初始化; (3) 对派生类数据成员初始化。

9、在建立一个对象时,执行构造函数的顺序是: 执行派生类构造函数的顺序是:

① 调用基类构造函数,对基类数据成员初始化; ② 调用子对象构造函数,对子对象数据成员初始化; ③ 再执行派生类构造函数本身,对派生类数据成员初始化 派生类构造函数的总参数表列中的参数,应当包括基类构造函数和子对象的参数表列中的参数。

基类构造函数和子对象的次序可以是任意的。 10、派生类是不能继承基类的析构函数的,也需要通过派生类的析构函数去调用基类的析构函数。

在派生类中可以根据需要定义自己的析构函数,用来对派生类中所增加的成员进行清理工作。基类的清理工作仍然由基类的析构函数负责。

在执行派生类的析构函数时,系统会自动调用基类的析构函数和子对象的析构函数,对基类和子对象进行清理。

调用的顺序与构造函数正好相反: 先执行派生类自己的析构函数,对派生类新增加的成员进行清理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的析构函数,对基类进行清理。

11、基类的同名成员在派生类中被屏蔽,成为“不可见”的,或者说,派生类新增加的同名成员覆盖了基类中的同名成员。因此如果在定义派生类对象的模块中通过对象名访问同名的成员,则访问的是派生类的成员。

不同的成员函数,只有在函数名和参数个数相同、类型相匹配的情况下才发生同名覆盖,如果只有函数名相同而参数不同,不会发生同名覆盖,而属于函数重载。

实验内容

题目1 图形类(必做)

设计一个图形基类:Shape,在此基础上派生Rectangle、Circle、Triangle类。 1、Cirlce类基本信息:圆心坐标、半径;

Rectangle类基本信息:长、宽;

Triangle类基本信息:三个顶点坐标;

其中:成员变量为private属性,成员函数为public属性;

2、每个图形类有多个构造函数:缺省构造函数、带参数的构造函数;

12

信科院(2015级)高等程序设计实验指导书

3、每个图形类有计算图形的面积GetArea(),显示图形的基本信息函数Show(),修改基本信息的函数Set(形参)。 [实验提示]

1、在派生类的构造函数中,应注意对基类数据成员的初始化;

2、各类图形面积的计算方法不同, 因此不能在基类Shape中统一确定计算的方法。在基类Shape中实现计算面积功能的函数体GetArea()应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能 [测试数据]

Circle:

圆心(30,45) 半径:35 圆心(50,89) 半径:23 Rectangle:

长:30 宽:53 长:28 宽:24 Triangle:

顶点:(34,45)、(89,45)、(54,67) 顶点:(22,34)、(67,43)、(86,64)

题目2 Document类-Book类(二选一)

设计基类:文档类(Document类)及其派生类书(Book类) 1、 基类包括文档名的属性,:姓名、年龄、性别、地址、电话等; Document //文档类 static int docCount //文档计数:类的静态成员 char* docName; //文档名:私有属性 Document(); //默认构造函数 Document(char* name); //有参构造函数 ~Document(); //析构函数 void print (); //输出文档信息:公有方法 2、派生类Book增加一个私有属性:页数page; 3、派生类Book的成员函数print()中调用基类Document中的print()函数,输出书名和页数;

4、使用对象数组保存输入的8本书;

5、按页数从多到少对这8本书的相关信息进行输出。 [测试数据] 1 2 3 4 5 6 读大学,究竟读什么 求职,从大一开始 上大学为了什么 老板要你在大学里学的10件事 不要等到毕业以后 围城 350页 334页 201页 227页 222页 359页 13

信科院(2015级)高等程序设计实验指导书

7 8

记住你是谁--15位哈佛教授震撼心灵的灵的人生故事 成功特质:造就顶尖人士的51种品质 158页 232页 题目3 小型公司人员管理(二选一)

某小型公司有四类人员:总经理、技术人员、销售经理、推销员。设计一个基类employee,派生出manager(总经理)、technician(技术人员)、salesmanager(销售经理)、saleman(推销员)。

1、类定义

1)employee类:

基本信息:编号、姓名、性别、出生日期、职位、薪水等; 出生日期使用自定义的Date(日期)类;

其中:基本信息为private属性,成员函数为public属性;

多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数; 可以从外部访问类成员的友元函数; 2)Date类:

成员变量:年、月、日

成员函数:SetYear(int year)、SetMonth(int month)、SetDay(int day) GetYear()、GetMonth()、GetDay() 3)派生类technician:新增属性:工作时间

派生类saleman: 新增属性:销售额、所属部门

2、实现人员信息的录入与显示; 3、计算并显示个人月薪:

月薪计算办法:总经理拿固定月薪8000元,技术人员按每小时25元领取月薪;推销员的月薪按当月销售额的4%提成。 [实验提示]

1、在基类中,除了定义构造函数和析构函数,还应统一定义对各类人员信息应有的操作,规范类族中各派生类的基本行为,但是各类人员的月薪计算方法不同,不能在基类employee中统一确定计算方法。各类人员信息的显示内容不同,同样不能在基类employee中统一确定显示方法。在基类中实现上述功能的函数体应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。

2、将基类employee分成两个独立文档:employee.h(类声明头文件) 和 employy.cpp(类实现文件)

3、“职位”的类型设定为int; [测试数据]

1、编号:10001 姓名:张可 性别:男 出生日期:85-6-10 职位:总经理 2、编号:10002 姓名:李兵 性别:男 出生日期:89-10-10 职位:技术员 3、编号:10003 姓名:王刚 性别:男 出生日期:90-12-10 职位:销售员

工作时间:180小时 所属部门:中南地区

14

信科院(2015级)高等程序设计实验指导书

4、编号:10004 姓名:陈浩月 性别:女 出生日期:92-1-10 职位:销售员 5、编号:10005 姓名:宋书 性别:男 出生日期:89-1-19 职位:技术人员 6、编号:10006 姓名:付强 性别:男 出生日期:92-4-12 职位:销售员

所属部门:华北地区 工作时间:120小时 所属部门:华东地区

实验三 运算符重载

实验类型:设计型实验 2学时 实验目的

1、理解运算符重载的概念和使用方法; 2、掌握几种常用运算符的重载;

知识点介绍

1、运算符重载,就是给运算符号重新赋予新的含义。 运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。

运算符重载是通过定义函数实现的。 运算符重载实质上是函数的重载。 2、重载运算符的函数一般格式如下:

函数类型 operator 运算符名称 (形参表列) { }

3、C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。 C++不允许重载的运算符有5个:

. (成员访问运算符)

-> (成员指针访问运算符) ∷ (域运算符) sizeof (长度运算符) ? : (条件运算符)

4、重载不能改变运算符运算对象(即操作数)的个数。 重载不能改变运算符的优先级别。 重载不能改变运算符的结合性。

重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。也就是说,参数不能全部是C++的标准类型,以防止用户修改用于标准类型数据的运算符的性质。

15

信科院(2015级)高等程序设计实验指导书

实验内容

题目1 重载加减法(必做)

设计CTime类

1、成员变量:hour、minute、second; 2、多个构造函数;

显示函数:Display();

设置函数:SetHour(int hour)、SetMinute(int min)、 SetSecond(int sec);

3、重载++运算符,模拟钟表走动,每次走一秒,每60秒进一分钟,秒又从0开始计算;每60分进一小时,分钟从0开始计算。 [实验提示]

1、++运算符为单目运算符,运算符重载函数只有一个参数,如果运算符重载函数作为成员函数,还可省略此参数;

2、++有两种使用方式:前置自增运算符和后置自增运算符,为了区别二者,在自增运算符重载函数中,增加一个int型形参,即为后置运算符函数; [测试数据]

1、时间:13:45:39 2、时间:23:58:5

题目2 重载<,>, ==(二选一)

设计字符串类String,用来存放不定长的字符串,重载运算符“= =”,“>”,“<”,用于两个字符串的大于、小于和等于的比较运算。 [实验提示]

1、= = 、> 、< 属于双目运算符,在重载双目运算符时,函数中应该有两个参数。 2、String类成员变量应为字符型指针; 3、多个构造函数的定义;

[测试数据]

1、 China china 2、 National Computer 3、 Examination Rank 4、 swust swust

16

信科院(2015级)高等程序设计实验指导书

[思考与扩展]

在String类中如何重载<<、>>运算符?

题目3 重载乘法、加法、减法(二选一)

设计N阶方阵类

1、重载运算符+、一、*,计算两个方阵的加、减、乘三种运算;2、运算前,用户先输入方阵的阶数,再输入方阵的数据; [实验提示]

N阶方阵的数据存放使用二维数组; [测试数据]

N阶方阵的数据存放使用二维数组;

[测试数据] 1、N = 3

方阵1: 方阵2:

3 4 5 5 -5 -9 6 7 8 15 8 0 9 1 2 9 84 -7 2、N = 2

方阵1: 方阵2: -24 84 4 8 12 -60 7 0 [思考与扩展]

如何重载运算符!,使得!表示求3阶矩阵的逆矩阵?

17

信科院(2015级)高等程序设计实验指导书

实验四 多态与虚函数

实验类型:设计型实验 2学时 实验目的

1、理解多态的概念; 2、理解虚函数的作用;

3、掌握虚函数的定义和使用方法; 4、学习实现多态;

5、了解纯虚函数和抽象类的概念和使用方法;

知识点介绍

1、赋值兼容规则

一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。具体表现在: 派生类的对象可以被赋值给基类对象。 派生类的对象可以初始化基类的引用。 指向基类的指针也可以指向派生类。

通过基类对象名、指针只能使用从基类继承的成员。 2、多态性是指:

具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。

从系统实现的角度看,多态性分为两类:

静态多态性:是通过函数的重载实现的(运算符重载实质上也是函数重载)。

动态多态性:是在程序运行过程中才动态地确定操作所针对的对象。它又称运行时的多态性。动态多态性是通过虚函数(virtual function)实现的。

3、虚函数的使用方法是:

在基类用virtual声明成员函数为虚函数。这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用。

在类外定义虚函数时,不必再加virtual。

在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。

C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此在派生类重新声明该虚函数时,可以加virtual,也可以不加,但习惯上一般在每一层声明该函数时都加virtual,使程序更加清晰。

如果在派生类中没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数。

定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。 通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。 使用虚函数时,有两点要注意:

(1)只能用virtual声明类的成员函数,使它成为虚函数,而不能将类外的普通函数声明为虚函数。

(2) 一个成员函数被声明为虚函数后,在同一类族中的类就不能再定义一个非virtual的但与该虚函数具有相同的参数(包括个数和类型)和函数返回值类型的同名函数。

18

信科院(2015级)高等程序设计实验指导书

4、根据什么考虑是否把一个成员函数声明为虚函数呢?主要考虑以下几点:

(1) 首先看成员函数所在的类是否会作为基类。然后看成员函数在类的继承后有无可能被更改功能,如果希望更改其功能的,一般应该将它声明为虚函数。

(2) 如果成员函数在类被继承后功能不需修改,或派生类用不到该函数,则不要把它声明为虚函数。不要仅仅考虑到要作为基类而把类中的所有成员函数都声明为虚函数。

(3) 应考虑对成员函数的调用是通过对象名还是通过基类指针或引用去访问,如果是通过基类指针或引用去访问的,则应当声明为虚函数。

(4) 有时,在定义虚函数时,并不定义其函数体,即函数体是空的。它的作用只是定义了一个虚函数名,具体功能留给派生类去添加。

(5)构造函数不能声明为虚函数。这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的绑定。

5、带有纯虚函数的类称为抽象类:

class 类名 {

virtual 类型 函数名(参数表)=0; //纯虚函数 ... } 纯虚函数

纯虚函数没有函数体;

最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”;

这是一个声明语句,最后应有分号。

纯虚函数只有函数的名字而不具备函数的功能,不能被调用。它只是通知编译系统: “在这里声明一个虚函数,留待派生类中定义”。在派生类中对此函数提供定义后,它才能具备函数的功能,可被调用。

5、抽象类

凡是包含纯虚函数的类都是抽象类。

因为纯虚函数是不能被调用的,包含纯虚函数的类是无法建立对象的。 抽象类作用

抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为。

对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现。

抽象类的作用是作为一个类族的共同基类,或者说,为一个类族提供一个公共接口。 注意:

抽象类只能作为基类来使用。 不能声明抽象类的对象。

构造函数不能是虚函数,析构函数可以是虚函数。

(1) 一个基类如果包含一个或一个以上纯虚函数,就是抽象基类。抽象基类不能也不必要定义对象。

(2) 抽象基类与普通基类不同,它一般并不是现实存在的对象的抽象(例如圆形(Circle)就是千千万万个实际的圆的抽象),它可以没有任何物理上的或其他实际意义方面的含义。

(3) 在类的层次结构中,顶层或最上面的几层可以是抽象基类。抽象基类体现了本类族中各类的共性,把各类中共有的成员函数集中在抽象基类中声明。

(4) 抽象基类是本类族的公共接口。或者说,从同一基类派生出的多个类有同一接口。 (5) 如果在基类声明了虚函数,则在派生类中凡是与该函数有相同的函数名、函数类型、参数个数和类型的函数,均为虚函数(不论在派生类中是否用virtual声明)。

(6) 使用虚函数提高了程序的可扩充性。

19

信科院(2015级)高等程序设计实验指导书

实验内容

题目1 图形类(必做)

用虚函数实现第九次实验中实验一的不同图形面积的计算。 要求:

使用基类指针,通过基类指针调用确定的派生类对象中的面积计算函数,实现面积的计算。 [实验提示]

如果在抽象类中定义了带参数的构造函数,而且没有定义默认构造函数,则应在其派生类中通过构造函数的初始化表对抽象类进行初始化;

基类与派生类的转换:

1、派生类对象可以向基类对象赋值;

2、派生类对象可以替代基类对象向基类对象的引用进行赋值或初始化;

3、如果函数的参数是基类对象或基类对象的引用,相应的实参可以用子类对象 [测试数据]

1、Circle:

①圆心(30,45) 半径:35 ②圆心(50,89) 半径:23 2、Rectangle: ①长:14 宽:45 ②长:93 宽:74 3、Triangle: ①顶点:(34,45)、(89,45)、(54,67) ②顶点:(22,34)、(67,43)、(86,64)

题目2 员工管理(必做)

1、将第九次实验中实验三中不同员工的工资计算函数pay(),改用虚函数实现; 2、将每个类中的信息显示函数:display()改用虚函数实现; 3、对每个类增加一个升职函数:promote(); [实验提示]

1、employee()类中的pay()和display()设计为纯虚函数;在主函数中便可以依据赋值兼容规则用基类类型的指针数组来处理不同派生类的对象;

2、由于不同类的对象调用升级函数promote()需要赋于不同的实参,难以对各类对象统一处理,因此,employee()中promote()定义为虚函数,各派生类再定义同名函数;

20

信科院(2015级)高等程序设计实验指导书

[测试数据]

自己设计测试数据,并详细记录测试数据;

实验五 文件操作

实验类型:设计型实验 2学时 实验目的

1、理解文本文件和二进制文件格式区别; 2、掌握对文本文件I/O操作; 3、掌握对文本文件I/O操作;

知识点介绍

1、ASCII文件和二进制文件区别

1)对于字符信息,在内存中是以ASCII代码形式存放的,因此,无论用ASCII文件输出还是用二进制文件输出,其数据形式是一样的。

2)但是对于数值数据,二者是不同的。例如有一个长整数100000,在内存中占4个字节,如果按内部格式直接输出,在磁盘文件中占4个字节,如果将它转换为ASCII码形式输出,则要占6个字节。

2、文件流:是以外存文件为输入输出对象的数据流。 1)输出文件流是从内存流向外存文件的数据, 2)输入文件流是从外存文件流向内存的数据。 每一个文件流都有一个内存缓冲区与之对应。 3、区分文件流与文件:

文件流本身不是文件,而只是以文件为输入输出对象的流。若要对磁盘文件输入输出,就必须通过文件流来实现。

4、用于文件操作的文件类:

(1) ifstream类,它是从istream类派生的。 用来支持从磁盘文件的输入。 (2) ofstream类,它是从ostream类派生的。 用来支持向磁盘文件的输出。 (3) fstream类,它是从iostream类派生的。 用来支持对磁盘文件的输入输出。 要以磁盘文件为对象进行输入输出,必须定义一个文件流类的对象,通过文件流对象将数据从内存输出到磁盘文件,或者通过文件流对象从磁盘文件将数据输入到内存。

5、ASCII文件:

如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件)。

对ASCII文件的读写操作两种方法:

(1) 用流插入运算符“<<”和流提取运算符“>>”输入输出标准类型的数据。 (2) 文件流的put,get,geiline等成员函数进行字符的输入输出。 6、二进制文件:

1)将内存中数据存储形式不加转换地传送到磁盘文件,因此它又称为内存数据的映像

21

信科院(2015级)高等程序设计实验指导书

文件。

2)因为文件中的信息不是字符数据,而是字节中的二进制形式的信息,因此它又称为字节文件。

7、二进制文件的操作

1)打开文件,在打开时要用ios::binary指定为以二进制形式传送和存储。用完后要关闭文件

2)二进制文件除了可以作为输入文件或输出文件外,还可以是既能输入又能输出的文件。这是和ASCII文件不同的地方。

8、字符串流

1) 以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据读入。

2)字符串流也称为内存流。

在字符数组中可以存放字符,也可以存放整数、浮点数以及其他类型的数据。 3) 流缓冲区中的数据格式与字符数组相同。

4)在向字符数组存入数据之前,要先将数据从二进制形式转换为ASCII代码,然后存放在缓冲区,再从缓冲区送到字符数组。从字符数组读数据时,先将字符数组中的数据送到缓冲区,在赋给变量前要先将ASCII代码转换为二进制形式。

实验内容

题目1 二进制文件操作(必做)

从键盘输入字符串并保存成文件。 要求:

1、输入字符串中包括:大小写字母、空格、数字等字符,以“#”作为字符串输入的结束条件;

2、对输入的字符进行加密并保存,以二进制文件方式保存,用户可以输入保存路径,如:C:\\file.txt ;

3、打开文件时,对加密文件进行解密并显示在屏幕上。 [实验提示]

1、使用cin获取输入字符时,遇到空格时终止读取字符,为了避免这种情况,不能简单使用cin来获取输入字符;

2、加密方式:

将字母A变成E,a变成e,即将字母变成其后的第4个字母,W变A,X变成B,Y变成C,Z变成D,w变a,x变成b,y变成c,z变成d。

解密方式:即加密方式的逆过程。 [测试数据]

自己设计测试数据,进行测试;

在实验报告中,列出自己设计的测试数据。

22

信科院(2015级)高等程序设计实验指导书

题目2 人员信息保存(二选一)

为前一次实验的实验二“人员管理”添加文件读取保存功能 1、将输入人员信息保存成文件;

3、读取已保存的人员信息文件,并显示文件中保存的人员信息; [实验提示] [测试数据]

自己设计测试数据,并详细测试过程中出现的问题及解决方案;

题目3 文件合并(二选一)

合并两个文件成为一个文件 要求:

执行可执行程序,将两个文件合并成一个文件;

例如:combine.exe file1.txt file2.txt file3.txt

Combine.exe为源程序生成的可执行程序,将file1.txt 和 file2.txt 中的内容合并,存放到file3.txt这个文件中; [实验提示]

1、main函数的参数

main函数可以带参数,这个参数可以认为是 main函数的形式参数。C/ C++语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。main函数的函数头可写为: main (argc,argv) ,规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:

main (int argc,char *argv[])

从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件,这是可以在操作系统下直接运行的文件,是由系统来启动运行的。

由于main函数不能被其它函数调用, 因此不能由其它函数调用和传递参数。对main()函数既然不能由其它函数调用和传递参数,就只能由系统在启动运行时传递参数了。

在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:

命令 参数1参数2....参数n 此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。

命令行与main()函数的参数存在如下的关系:

设命令行为:program str1 str2 str3 str4 str5

其中program为文件名,也就是一个由program.c经编译、链接后生成的可执行文件program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数argc的值决定,即为char*argv[6],指针数组的取值情况如图所示。

23

信科院(2015级)高等程序设计实验指导书

数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后才是参数。 下面用实例来说明带参数的main()函数的正确使用。

DOS提示符下命令行的一般形式为: C:\\>可执行文件名 参数 参数??;

但是应该特别注意的是,main 的两个形参和命令行中的参数在位置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。

例如有命令行为: C:\\> execute BASIC dbase FORTRAN

由于文件名execute本身也算一个参数,所以共有4个参数,因此argc取得的值为4。argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数。数组元素初值由系统自动赋予。

main(int argc,char *argv) {

while(argc-- > 1)

printf(\,*++argv); }

本例是显示命令行中输入的参数如果上例的可执行文件名为execute .exe,存放在C盘的根目录下。

因此输入的命令行为: C:\\> execute BASIC dBASE FORTRAN 则运行结果为:

BASIC dBASE FORTRAN

该行共有4个参数,执行main时,argc的初值即为4。argv的4个元素分为4个字符串的首地址。执行while语句,每循环一次 argv值减1,当argv等于1时停止循环,共循环三次, 因此共可输出三个参数。在printf函数中,由于打印项*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、 三次循环分别打印后二个字符串。而参数execute 是文件名,不必输出。 [测试数据]

任意建立两个文件进行测试; [思考与扩展]

针对不同类型的文件合并,是否需要修改源程序?

24

信科院(2015级)高等程序设计实验指导书

实验六 面向对象程序设计实践

实验类型:综合型实验 4课时 实验目的

1、进一步掌握利用C++进行类的定义和操作方法; 2、进一步掌握类的继承和派生方法; 3、进一步理解虚函数和多态;

4、综合利用上述知识,学习设计并编写面向对象的C++简单应用程序;

实验内容

题目1 堆栈与简单语法检查(四选一)

堆栈(Stack)是一种特殊的顺序存储表,只允许在表的一端(栈顶)进行插入和删除操作,另一端(栈底)则不允许插入和删除操作,堆栈的插入和删除通常称为入栈和出栈。栈顶的当前位置是动态的,用一个指针,即栈顶指针来标示栈顶当前位置。如下图所示:

堆栈可以用数组来表示,假设堆栈可保存的数据类型为ElemType。那么堆栈定义如下:

ElemType stack[MaxSize]; int top; //堆栈指针 堆栈相关的操作如下:

Void InitStack(Stack& S); //初始化堆栈S,即把它置为空;

Void push(ElemType item); //元素item进栈,即插入item到栈顶; ElemType Pop( ); //弹出栈顶元素并返回其值;

ElemType Peek(); //返回栈顶元素的值,但不移动栈顶指针;

Bool IsEmpty(); //判断堆栈是否为空,是返回true;否则返回false; Void ClearStack(); //清除堆栈中所有元素,使之成为一个空栈; 解决问题:

(1)根据上述提示实现一个堆栈;

(2)堆栈在计算机语言中的编译过程中用来进行语法检查,编写一个程序,利用堆栈来检查一个C/C++语言程序中的花括号、方括号和圆括号是否配对,若能够完全配对返回1,否则返回0

题目2 成绩管理系统(四选一)

现有学生成绩信息,内容如下

姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77

25

信科院(2015级)高等程序设计实验指导书

陈东明 05 67 38 47 ?. .. .. .. … 请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面

1、功能要求: (1)信息维护:

要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息

(2)信息查询:

要求:查询时可实现按姓名查询、按学号查询 (3)成绩统计:

要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)

2、其它要求:

(1)源程序要有适当的注释,使程序容易阅读

(2)采用文本菜单界面(如果能采用图形菜单界面更好) (3)可自行增加新功能模块(视情况可另外加分)

题目3 通信录管理系统(四选一)

用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 1、功能要求

(1) 查看功能:选择此功能时,列出下列三类选择。

A 办公类 B 个人类 C 商务类 ,当选中某类时,显示出此类所有数据中的姓

名和电话号码)

(2) 增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如

杨春 13589664454 商务类 chuny@126.com 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。

(3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。

(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改

(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

2、其它要求:

(1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 建议使用结构和链表等数据结构

(4) 学生可自动增加新功能模块(视情况可另外加分)

题目4 学生管理系统(四选一)

使用下面的数据,用C/C++设计一个简单的学籍管理系统,实现出最基本的功能。

26

信科院(2015级)高等程序设计实验指导书

学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成

学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756122 ? …. .. … ……….. 学生成绩基本信息文件(B.TXT)及其内容:

学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66 ? …. ………. .. .. … 1、功能要求及说明:

(1) 数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。

综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% .

(2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询:

A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。 A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。 B:成绩查询:

B1:输入一个学号时,查询出此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx

课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ? … … … ……… … … 共修:xx科,实得总学分为: xxx

(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。

(4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。 2、其它要求:

(1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块(视情况可另外加分)

27

信科院(2015级)高等程序设计实验指导书

附录一 实验卡和实验报告

学号 实验地点 课程名称 实验名称 姓名 高等程序设计 班级 实验日期 实验课时 实验目的 实验环境 PC机、DevCPP 实验内容 和原理 实验步骤 方 法 关键代码 28

信科院(2015级)高等程序设计实验指导书

((接上页) 实验步骤 方 法 关键代码 测试记录 分 析 结 论 小 结 以下由实验教师填写 记 事 评 议 平时成绩_______ 实验报告成绩________ 综合成绩 _________ 成绩评定 指导教师签名:

29

本文来源:https://www.bwwdw.com/article/m9k7.html

Top