《面向对象程序设计》实验册

上传人:gbs****77 文档编号:9956841 上传时间:2020-04-09 格式:DOCX 页数:64 大小:298.70KB
返回 下载 相关 举报
《面向对象程序设计》实验册_第1页
第1页 / 共64页
《面向对象程序设计》实验册_第2页
第2页 / 共64页
《面向对象程序设计》实验册_第3页
第3页 / 共64页
点击查看更多>>
资源描述
金陵科技学院实验报告 学 生 实 验 报 告 册 理工类 课程名称 面向对象程序设计 专业班级 13 计统 2 班 学生学号 1305103038 学生姓名 曹亚孟 金陵科技学院实验报告 所属院部 计算机工程学院 指导教师 吴刚 20 15 20 16 学年 第 一 学期 金陵科技学院教务处制 实验报告书写要求 实验报告原则上要求学生手写 要求书写工整 若因课程特点 需打印的 要遵照以下字体 字号 间距等的具体要求 纸张一律 采用 A4 的纸张 实验报告书写说明 实验报告中一至四项内容为必填项 包括实验目的和要求 实 验仪器和设备 实验内容与过程 实验结果与分析 各院部可根据 学科特点和实验具体要求增加项目 填写注意事项 1 细致观察 及时 准确 如实记录 2 准确说明 层次清晰 3 尽量采用专用术语来说明事物 4 外文 符号 公式要准确 应使用统一规定的名词和符号 金陵科技学院实验报告 5 应独立完成实验报告的书写 严禁抄袭 复印 一经发现 以零分论处 实验报告批改说明 实验报告的批改要及时 认真 仔细 一律用红色笔批改 实 验报告的批改成绩采用百分制 具体评分标准由各院部自行制定 实验报告装订要求 实验批改完毕后 任课老师将每门课程的每个实验项目的实验 报告以自然班为单位 按学号升序排列 装订成册 并附上一份该 门课程的实验大纲 金陵科技学院实验报告 实验项目名称 C 基础程序设计 实验学时 3 同组学生姓名 无 实验地点 A107 实验日期 9 18 实验成绩 批改教师 吴刚 批改时间 金陵科技学院实验报告 一 实验目的和要求 1 了解 Visual C 6 0 或者 Visual C 2005 以上版本的特点 2 学会 Visual C 6 0 或者 Visual C 2005 以上版本的开发环境 来创建和调 试标准的 C 控制后台应用程序 3 学会使用 Visual C 6 0 或者 Visual C 2005 以上版本的开发环境中的程序 调试功能 例如单步执行 设置断点 观察变量值等 4 掌握 string 类型的用法 5 掌握 C 语言编程时输入和输出格式控制 6 掌握多文件结构的使用 7 掌握重载函数的使用 二 实验设备和环境 1 计算机每人一台 2 安装 WindowsXP 或者以上版本操作系统 3 安装 Visual C 6 0 或者 Visual C 2005 以上版本 三 实验内容及步骤 1 给出 Visual C 调试一个简单应用程序的步骤 要求程序输出字符串 Hello Welcome to C 程序 include using namespace std int main cout Hello endl 金陵科技学院实验报告 cout Welcome to C endl return 0 运行结果 2 调试以下程序 观察运行结果 include using namespace std void main int a b 10 int a 20 cout a endl cout ra endl cout cout ra b cout a endl cout ra endl cout b endl 金陵科技学院实验报告 cout cout cout 运行结果及结果分析 3 编写一程序 实现九九乘法表的 2 中格式输出 格式如下 1 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 4 4 8 5 5 10 6 6 12 7 7 14 8 8 16 金陵科技学院实验报告 9 9 18 2 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 注 要求每种输出格式均写成函数形式 程序 include using namespace std int main int i j cout 显示 1 endl for i 1 i 10 i for j 1 j 10 j 金陵科技学院实验报告 cout i j t cout endl cout endl 显示 2 endl for i 1 i 10 i for j 1 j i j cout j i t cout endl return 0 运行结果 金陵科技学院实验报告 4 将第 3 题改成多文件结构实现 要求该工程中有 3 个 cpp 文件和 1 个 h 文 件 程序 h include using namespace std int cfb1 int x int y int cfb2 int x int y cpp 1 include 3head h void main int i j cout cfb1 i j endl 金陵科技学院实验报告 cout cfb2 i j endl 2 include 3head h int cfb1 int i int j cout 显示 1 endl for i 1 i 10 i for j 1 j 10 j cout i j t cout endl return 0 3 include 3head h int cfb2 int i int j cout 显示 2 endl for i 1 i 10 i 金陵科技学院实验报告 for j 1 j i j cout j i t cout endl return 0 5 编程实现比较两个数的大小 求较大值 要求使用重载函数实现 程序 include using namespace std int max int a int b return a b a b int main int m n cout m n cout The bigger is max m n endl return 0 金陵科技学院实验报告 运行结果 6 编写一个程序 判断一 个字符串是否为另一个字符串的子串 若是 返回字串在主串中的位置 要求 不适用 strstr 函数 自己编写一个子函数实现 建议使用 string 类型 而非 字符数组 程序 include include string h using namespace std void main char a how are you char b are int i 0 j na nb flag na strlen a nb strlen b flag 1 for i 0 i 0 i if a i b j j 金陵科技学院实验报告 运行结果 四 实验体会 熟悉了 C 开发环境的使用 对 C 编程有了初步的了解 能够编写一些简 单的和 C 类似的程序 实验项目名称 类与对象 实验学时 3 同组学生姓名 无 实验地点 A107 实验日期 9 25 实验成绩 批改教师 吴刚 批改时间 金陵科技学院实验报告 一 实验目的和要求 1 掌握类和对象的概念 定义方法以及类与对象的简单用法 2 掌握成员函数的实现与调用方法 3 深刻领会类与对象的区别 4 理解类实现数据隐藏和封装的原理 5 掌握构造函数 拷贝构造函数 分析构造函数的定义和使用 尤其注意组合 类中它们的调用顺序 二 实验设备和环境 1 计算机每人一台 2 安装 WindowsXP 或者以上版本操作系统 3 安装 Visual C 6 0 或者 Visual C 2005 以上版本 三 实验内容及步骤 1 用面向对象的程序设计方法实现栈的操作 栈又叫堆栈 是一个常用的数据 结构 它是一种运算受限的线性表 仅允许在表的一端进行插入和删除运算 是一种后进先出表 提示 栈用一维整型数组来表示 栈的大小定义为 10 栈定义为一个类 stack 实现栈的创建 进栈和出栈 栈的消亡 进栈函数 void push int n 出栈函数 int pop void 程序 include using namespace std const int maxsize 10 class stack 金陵科技学院实验报告 public void init top 1 void push int n int pop void dead private int top int data maxsize void stack push int n if top maxsize cout 栈已满 endl else top data top n int stack pop 金陵科技学院实验报告 if top 0 cout 栈下溢 endl return 0 else top return data top 1 void stack dead if top 0 cout 栈下溢 endl else top cout 栈中还剩 top 1 个元素 endl int main 金陵科技学院实验报告 stack seqstack int i x m seqstack init cout 请输入 10 个数字 for i 0 i x seqstack push x cout 请输入你所需要的操作 endl cout 1 元素出栈 endl cout 2 栈的消亡 m switch m case 1 for i 0 i maxsize i cout seqstack pop break case 2 for i 0 i maxsize i 金陵科技学院实验报告 seqstack dead break return 0 运行结果 2 将第 1 题中的实验内容改为多文件结构实现 程序 include using namespace std define N 10 class stack static int top int a N public void push int n void pop void die 金陵科技学院实验报告 include int stack top 0 void stack push int n if top N a top n cout 进栈数据 n endl else cout 堆栈已经满了 不能再加数进去了 endl void stack pop if top 0 cout 堆栈已经空了 没有数据了 endl else cout 出栈数据 cout a top endl void stack die 金陵科技学院实验报告 int i for i 0 i N i a i 0 cout 消亡堆栈 endl include head h void main int n m cout n m stack s s push n s push m s pop s pop s pop s die 3 设计一个用于人事管理的 People 人员 类 考虑到通用性 这里只抽象出 所有类型人员都具有的属性 number 编号 sex 性别 birthday 出生日 期 id 身份证号 等 其中 出生日期 声明为一个 日期 类内嵌子对象 用成员函数实现对人员信息的录入和显示 要求包括 构造函数和折构函数 拷贝构造函数 内联成员函数 组合类等 金陵科技学院实验报告 程序 include include using namespace std class Date private int year int month int day public Date Date int y int m int d year y month m day d void set cin year month day void display cout year 年 month 月 day 日 金陵科技学院实验报告 class Person private int num char sex Date birthday char ID 18 public Person Person int n int y int m int d char id 18 char s m birthday y m d num n sex s strcpy ID id Person Person sex p sex birthday p birthday strcpy ID p ID void input cout 录入数据 endl cout num 金陵科技学院实验报告 cout sex cout 生日 birthday set cout ID ID 18 0 cout endl void output cout 编号 num endl cout 性别 sex endl cout 生日 birthday display cout endl cout 身份证号 ID endl Person cout num 号人员已经录入 endl int main Person p1 金陵科技学院实验报告 p1 input p1 output return 0 运行结果 4 设计一个计算薪水的类 Payroll 它的数据成员包括 单位小时的工资 已 经工作的小时数 本周应付工资数 在主函数定义一个具有 10 个元素的对象数 组 代表 10 个雇员 可以定义普通对象数组 也可以定义堆对象数组 程序 询问每个雇员本周已经工作的小时数 然后显示应得的工资 要求 输入有效 性检验 每个雇员每周工作的小时数不能大于 60 同时也不能为负数 程序 include include class Payroll 金陵科技学院实验报告 private double money double total public int time int GetTime do printf input time scanf d while time60 money 100 return 0 int GetTotalMoney return total time money void Print printf total lf n total 金陵科技学院实验报告 main Payroll p 10 p 0 GetTime p 0 GetTotalMoney p 0 Print 运行结果 四 实验体会 对多文件有了更深了解 能够熟练的掌握多文件的使用方法 学习了 C 的构造函数 以及拷贝构造函数 接触友元组合类等新知识 需要课后多加练 习 金陵科技学院实验报告 实验项目名称 静态成员与友元 实验学时 3 同组学生姓名 无 实验地点 A107 实验日期 10 09 实验成绩 批改教师 吴刚 批改时间 金陵科技学院实验报告 一 实验目的和要求 1 掌握类中静态成员的定义的方法 2 掌握静态数据成员初始化的方法 3 掌握静态数据成员和数据函数成员的访问和使用方法 4 掌握友元函数的定义和使用方法 5 了解友元类的使用方法 二 实验设备和环境 1 计算机每人一台 2 安装 WindowsXP 或者以上版本操作系统 3 安装 Visual C 6 0 或者 Visual C 2005 以上版本 三 实验内容及步骤 1 任意输入 10 个数 计算器总和及平均值 设计程序测试该功能 要求用类 静态友员实现 程序 include include using namespace std class number int No int figure static double sum static int sumpeople 金陵科技学院实验报告 public number int n int ifigure No n figure ifigure sum figure sumpeople static int Sum return sum static double Average return sum sumpeople int number sumpeople 0 double number sum 0 void main int i j cout The ten number is endl for i 1 i j number i j cout The sum is number Sum endl cout The average is number Average endl 运行结果 2 求两点之间的距离 要求定义点 Point 类 并用友员函数实现 程序 include include using namespace std class Point double x y public Point double m double n x m y n friend double Distance Point double Distance Point d sqrt px x py x px x py x px y py y px y py y return d void main Point p1 p2 int a1 b1 a2 b2 cin a1 b1 a2 b2 p1 Point a1 b1 p2 Point a2 b2 cout the distance is Distance p1 p2 endl 运行结果 3 定义一个经理类 Manager 其成员数据包括编号 id 姓名 name 和年龄 age 均声明为 private 访问属性 再定义一个员工类 Employee 其成员数据及访问 属性与经理类相同 将 Manager 类声明为 Employee 类的友员函数 并在 Manager 类中定义一个函数访问 Employee 类的私有数据成员并进行输出 程序 include include 金陵科技学院实验报告 using namespace std class Employee friend class Manager private int id char n int age public Employee id 1 n abc age 20 class Manager private int id char name 10 int age public Manager 金陵科技学院实验报告 Employee e void Print Employee cout e n endl cout e age endl void main Employee e Manager m m Print e system pause 运行结果 四 实验体会 懂得了静态成员的使用 静态成员的作用域和使用方法 理解并掌握友元 金陵科技学院实验报告 的使用 金陵科技学院实验报告 实验项目名称 继承与派生 实验学时 3 同组学生姓名 无 实验地点 A107 实验日期 10 16 实验成绩 批改教师 吴刚 批改时间 金陵科技学院实验报告 一 实验目的和要求 1 掌握利用单继承和多重继承的方式定义派生类的方法 2 理解在各种继承方式下构造函数和析构函数的执行顺序 3 理解和掌握 public protected private 对基类成员的访问机制 4 理解虚基类的概念 引入虚基类的目的和作用 5 理解在虚基类时的构造函数和析构函数的执行顺序 二 实验设备和环境 1 计算机每人一台 2 安装 WindowsXP 或者以上版本操作系统 3 安装 Visual C 6 0 或者 Visual C 2005 以上版本 三 实验内容及步骤 1 分析以下程序 写出运行结果 include using namespace std class Base public Base cout 执行基类构造函数 endl Base cout 执行基类折构函数 endl class Derive public Base public 金陵科技学院实验报告 Derive cout 执行派生类构造函数 endl Derive cout 执行派生类折构函数 endl void main Derive d 运行结果 2 分析以下程序 写出运行结果 include calss Base public Base cout 基类构造函数 endl Base cout 基类析构函数 endl class Derive public Base public 金陵科技学院实验报告 Derive cout 派生类构造函数 endl Derive cout 派生类析构函数 endl void main Derive p new Derive Delete p 运行结果 3 求一个三角形物体的面积 同时求一个圆形物体的面积 要求使用继承 include include using namespace std class Object public void getData cout x y z 金陵科技学院实验报告 protected int x y z class Triangle public Object public void getData cout triangle Object getData double Area double d x y z 2 double s sqrt d d x d y d z return s class Circle public Object public void getData cout circle only radius x endl Object getData 金陵科技学院实验报告 double Area double s x x 3 1415 return s void main Triangle t t getData cout The results t Area endl Circle c c getData cout The results c Area endl 运行结果 4 一个三口之家 大家知道父亲会开车 母亲会唱歌 但其父亲还会修电视机 只有家里人知道 小孩既会开车又会唱歌 甚至也会修电视机 母亲瞒着任何 人在外面做小工以补贴家用 此外小孩还会打乒乓球 编写程序输出者三口之家一天从事的活动 先是父亲出去开车 然后母亲出去 工作 唱歌 母亲下班后去做两个小时的小工 小孩在俱乐部打球 在父亲回 金陵科技学院实验报告 家后 开车玩 后又高兴地唱歌 晚上 小孩和父亲一起修电视机 程序 include using namespace std class father protected void repairTV cout Repairing TV endl public void drive cout Father is driving endl friend main class mother void dootherJob cout Mother is doing other job public virtual void sing cout Mother is singing songs endl friend main class child public father public mother public void drive cout Child is driving endl void sing cout Child is singing endl void repair cout Child is repairing tv endl 金陵科技学院实验报告 void playingPingPang cout Child is playing pingpang int main cout main endl father f mother m child c f drive m sing m dootherJob c playingPingPang c drive c sing f repairTV c repair return 0 运行结果 金陵科技学院实验报告 5 设计定义一个哺乳动物类 Mammal 再由此派生出狗类 Dog 和猪类 Pig 从狗 类 Dog 和猪类 Pig 又派生出 PigDog 类 定义一个 PigDog 类的对象 观察基类 与各派生类的构造函数和析构函数的调用顺序 程序 include using namespace std class Mammal public Mammal cout 调用 mammal 构造函数 endl Mammal cout 调用 mammal 析构函数 endl class Dog public Mammal public Dog cout 调用 dog 构造函数 endl Dog cout 调用 dog 析构函数 endl class Pig public Mammal public Pig cout 调用 pig 构造函数 endl Pig cout 调用 pig 析构函数 endl class PigDog public Dog public Pig 金陵科技学院实验报告 public PigDog cout 调用 pigdog 构造函数 endl PigDog cout 调用 pigdog 析构函数 endl void main Mammal m Dog d Pig p PigDog pd 运行结果 金陵科技学院实验报告 四 实验体会 本次实验学习了继承和派生 对于其使用以及理解有点困难 金陵科技学院实验报告 实验项目名称 多态性 实验学时 3 同组学生姓名 无 实验地点 A107 实验日期 10 23 实验成绩 批改教师 吴刚 批改时间 金陵科技学院实验报告 一 实验目的和要求 1 加深理解继承和多继承的概念 应用等 2 掌握虚函数的定义方法 以及在实现多态性中的作用 理解掌握实现动态多 态性的前提条件 理解静态多态性和动态多态性的区别 3 理解运算符重载的概念和实质 掌握预案算重载函数的定义方法 掌握运算 符重载为类的成员函数和友元函数的方法 掌握几种常用运算符的重载 用来 解决函数 二 实验设备和环境 1 计算机每人一台 2 安装 WindowsXP 或者以上版本操作系统 3 安装 Visual C 6 0 或者 Visual C 2005 以上版本 三 实验内容及步骤 1 利用虚函数实现的多态性来求四种几何图形的面积 这四种几何图形是 三 角形 矩形 正方形和圆 程序 include define PI 3 1415926 using namespace std class Area double x y public Area double x double y int z x x y y if z 0 金陵科技学院实验报告 cout 三角形的面积为 x y 2 endl else if z 1 cout 矩形面积为 x y endl Area double x int z x x if z 0 cout 正方形的面积为 x x endl else if z 1 cout 圆的面积为 PI x x endl void main Area a 3 4 0 Area b 3 4 1 Area c 5 0 Area d 5 1 运行结果 2 声明 Point 类 有坐标 x y 两个成员变量 对 Point 类重载 自增 自减 运算符 实现对坐标值的改变 金陵科技学院实验报告 程序 include using namespace std class Point double x y public Point Point y point y Point double x double y x x y y void operator cout 原来的值为 x endl x x 2 cout 改过后的值为 x endl double getx return x double gety return y void main double x y 金陵科技学院实验报告 Point p 1 2 p operator 运行结果 3 定义一个复数类 通过重载运算符 直接实现两个复数之间的乘除运 算 编写一个完整的程序 测试重载运算符的正确性 要求乘法 用友元函 数实现重载 除法 用成员函数实现重载 程序 include using namespace std class Complex double r v public Complex Complex v c v Complex double r 0 double v 0 r r v v void operator Complex c void show 金陵科技学院实验报告 cout r 0 v i endl friend Complex operator Complex a Complex b friend Complex operator Complex a double r Complex operator Complex a double getr return r double fetv return v void Complex operator Complex c r c r v c v Complex operator Complex double av a fetv double br b getr double bv b fetv Complex c ar br av bv av bv return c Complex operator Complex a double r double ar a getr 金陵科技学院实验报告 double av a fetv Complex c ar r av cout 的结果为 return c Complex Complex operator Complex a Complex c a r r a v v a r a r a v a v a v a r a r a v a v cout 的结果为 return c void main Complex a 2 2 b 3 4 test test a b test show test a b test show 运行结果 4 在第 3 题基础上 增加重载函数的加法和减法运算符的功能 实现两个复数 的加法 一个复数和一个实数的加法 两个复数的减法 一个复数与一个实数 金陵科技学院实验报告 的减法 用成员函数实现加法运算符的重载 用友元函数实现减法运算符的重 载 要求 自己设计主函数 完成程序的调试工作 程序 include using namespace std class Complex double r v public Complex Complex v c v Complex double r 0 double v 0 r r v v void operator Complex c void show cout r 0 v i endl friend Complex operator Complex a Complex b friend Complex operator Complex a Complex b friend Complex operator Complex a double r Complex operator Complex a 金陵科技学院实验报告 Complex operator Complex a Complex operator double a double getr return r double fetv return v void Complex operator Complex c r c r v c v Complex operator Complex a Complex b double ar a getr double av a fetv double br b getr double bv b fetv Complex c ar br av bv av bv cout 友元函数实现与复数的乘法 return c Complex Complex operator Complex a Complex c a r r a v v a r a r a v a v a v v a r a r a v a v cout 成员函数实现与复数的除法 金陵科技学院实验报告 return c Complex Complex operator Complex a Complex c a r r a v v cout 成员函数实现与复数的加法 return c Complex Complex operator double a Complex c r a v cout 成员函数实现与实数的加法 return c Complex operator Complex a Complex b Complex c a r b r a v b v cout 友元函数实现与复数的减法 return c Complex operator Complex a double r Complex c a r r a v cout 友元函数实现与实数的减法 return c 金陵科技学院实验报告 void main Complex a 2 2 b 3 4 test test a b test show test a b test show test a b test show test a 5 test show test a b test show test a 5 test show 运行结果 四 实验体会 本次学习了多态性 增加了函数的复用性 很大程度的减少了代码的重复 金陵科技学院实验报告 性 金陵科技学院实验报告 实验项目名称 异常处理 实验学时 3 同组学生姓名 无 实验地点 A107 实验日期 11 20 实验成绩 批改教师 吴刚 批改时间 金陵科技学院实验报告 一 实验目的和要求 1 正确理解 C 的异常处理机制 2 学习异常处理的声明和执行过程 二 实验设备和环境 1 计算机每人一台 2 安装 WindowsXP 或者以上版本操作系统 3 安装 Visual C 6 0 或者 Visual C 2005 以上版本 三 实验内容及步骤 1 声明一个异常类 Cexception 有成员函数 Reason 用来显示异常的类型 在子函数中触发异常 在主程序中处理异常 观察程序的执行流程 程序 include using namespace std int Div int x int y void main Try cout 5 2 Div 5 2 endl cout 8 0 Div 8 0 endl cout 7 1 Div 7 1 endl catch int 金陵科技学院实验报告 cout except of deviding zero n cout this is ok n int Div int x int y if y 0 throw y return x y 运行结果 2 设计一个异常抽象类 Exception 在此基础上派生一个 OutOfMemory 类响应 内存不足 一个 RangeError 类响应输入的数不在指定范围内 实现并测试这几 个类 程序 include using namespace std void MyFunc void class Expt public 金陵科技学院实验报告 Expt Expt const char ShowReason const return Expt 类异常 class Demo public Demo Demo Demo Demo cout 析构 Demo endl Demo Demo cout 构造 Demo endl void MyFunc Demo d cout 在 MyFunc 中抛掷 Expt 类异常 endl 金陵科技学院实验报告 throw Expt int main cout 在 main 函数中 endl try cout 在 try 块中 调用 MyFunc endl MyFunc catch Expt e cout 在 catch 中 异常处理程序中 endl cout 捕获到 Expt 类异常 cout e ShowReason endl catch char str cout 捕获到其他异常 str endl cout 回到 main 函数 从这里恢复执行 endl return 0 运行结果 金陵科技学院实验报告 四 实验体会 本次的异常学习熟悉了 C 的异常处理 是对知识的拓宽
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!