面向对象程序设计实验报告06

合集下载

python掌握面向对象的程序设计实验报告

python掌握面向对象的程序设计实验报告

python掌握面向对象的程序设计实验报告Python掌握面向对象的程序设计实验报告摘要:本实验报告旨在介绍Python编程语言中面向对象的程序设计。

首先,我们将讨论什么是面向对象编程以及它的优点。

然后,我们将介绍类和对象的概念,并展示如何创建和使用它们。

接下来,我们将讨论继承、多态和封装等面向对象编程的重要概念,并提供相关示例。

最后,我们将总结本次实验的主要内容。

一、介绍面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的方法封装到一个独立的实体中,这个实体称为对象。

对象可以通过定义特定类型的类来创建。

Python是一种支持面向对象编程的高级编程语言,它提供了丰富的面向对象编程机制,使得程序的开发和维护更加高效和可靠。

面向对象编程的优点:1. 代码复用:面向对象编程允许我们创建可重用的代码模块,从而提高了代码的复用性和可维护性。

我们可以通过创建类和对象来定义通用的行为和属性,然后在不同的项目中使用它们。

2. 模块化设计:通过将大型程序分解为小型的、独立的对象,我们可以更好地组织和管理代码。

这种模块化的设计使得程序可以被分割为更小的部分进行开发,并且每个部分可以独立测试和调试。

3. 可扩展性:面向对象编程提供了一种灵活的方式来扩展和修改代码。

我们可以通过继承和多态等机制来添加新的功能或修改现有的功能,而不需要修改原始代码。

4. 可理解性:面向对象编程使得代码更易于理解和阅读。

由于对象的行为和属性都被封装在类中,我们可以通过查看类的定义来理解对象的行为和属性。

二、类和对象在Python中,类是一种用于定义对象的模板。

类定义了对象的属性和行为。

对象是类的实例,它具有类所定义的属性和行为。

1. 类的定义在Python中,我们使用class关键字来定义类。

类的定义可以包含属性和方法。

属性是对象的状态,方法是对象的行为。

示例代码:pythonclass Person:def __init__(self, name, age): # 初始化方法 = nameself.age = agedef say_hello(self): # 方法print("Hello, my name is {} and I am {} yearsold.".format(, self.age))在上面的示例中,我们定义了一个名为Person的类。

面向对象实习报告(共5篇)

面向对象实习报告(共5篇)

面向对象实习报告(共5篇)第1篇:面向对象实习报告实习题目一1.三个自定义类本题有三个自定义的类:点类VecPosition,圆类circle,矩形类Rect,运用类的继承思想从这三个类中抽象出公共基类base。

其中base中有一个纯虚函数virtual void draw()=0; VecPosition类主要实现各个运算符的点的构造,运算符的重载,求两点距离,判断一个点是否在给定其他几个点的范围内,以及与向量有关的几何运算。

Circle类主要实现圆对象的构造,圆的相关参数设置,求取圆的周长函数(doubleCircle::getCircumference())、面积函数(double Circle::getArea()),判断一个点是否在圆内bool Circle::isInside(VecPosition pos),求两个圆交点函数int Circle::getIntersectionPoints(Circle c,VecPosition *p1,VecPosition *p2)返回加点个数。

求两个圆的相交面积double Circle::getIntersectionArea(Circle c)。

矩形由左上点坐标和右下点坐标确定。

包括矩形的构造,参数的设置修改,求矩形的面积,周长,以及判断一个点是否在矩形内。

2.可视化界面建立单文档工程,添加画图菜单,如下图:三个菜单项分别画点,画线,画矩形。

在view.h中添加如下变量:CPoint类的 m_oldpt,m_pt用于记录画图的起点坐标和终点坐标。

Circle m_circle,Rect m_rect,用于构造圆和矩形。

afx_msg voidOnLButtonDown(UINT nFlags, CPoint point)是响应鼠标按下的消息,并将当前坐标传给m_oldPoint。

用switch分支控制画图种类,在view类中加入变量i,添加三个菜单消息响应函数,对i进行赋值;当点击菜单项“点”时,i=0;当点击菜单项“圆” 时,i=1;当点击菜单项“矩形”时,i=2;在view中添加void C实º习一View::OnLButtonUp(UINT nFlags, CPoint point)用来响应鼠标左键弹起消息。

C++面向对象程序设计》实验报告

C++面向对象程序设计》实验报告

《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。

(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。

(3)掌握简单C++程序的编写和调试方法。

(4)掌握重载函数的定义方法。

(5)能正确使用引用型变量。

2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。

②在自己指定的子目录中建立一个名为test.cpp的新文件。

③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。

观察和分析编译信息。

⑤根据编译信息指出的错误, 修改程序。

再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。

⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。

⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。

观察屏幕的变化。

在输出窗口应显示程序运行结果。

⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。

改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。

《面向对象程序设计》实习报告

《面向对象程序设计》实习报告

《面向对象程序设计》实习报告班级:电子商务0801学号:姓名:XX指导老师:刘光苏建恭龙延秀娟实习时间:2010.1.4-2010.1.10一·实习目的经过一周的实习,让我再次复习了SQL和VB的相关知识,特别是亲自操作,更加熟悉和掌握其具体应用的方法,遇到难题时,经过查阅资料和同学间的探讨,也把许多以前不懂和不会的知识有所掌握。

在整个实习过程中,我清楚并掌握了SQL Server的集成环境、系统的菜单、工具栏、企业管理器、查询分析器的具体使用方法;同时在操作中掌握了创建数据库、数据表的方法;熟悉了数据表的操作命令以及T-SQL命令的使用。

在编写代码是,我熟悉了基本命令的使用方法,以及常用函数、表达式的使用方法,掌握了程序控制结构的使用和程序设计,同时清楚了变量的作用范围和自定义函数的使用。

特别在于VB连接的过程中,我熟悉了VB与数据库管理系统的连接方法,较熟练地掌握了利用向导、数据环境、数据控件等工具开发应用程序的基本操作界面。

同时还熟悉了常用的算法程序、常用统计程序、数据排序方法、简单数据加密和解密程序、矩阵基本操作程序的编写、调试和使用。

在整个实习过程中,受益匪浅。

此次实习,达到了很好的效果。

通过实践让我把书本上的知识更好的应用于实际操作,可以独立的做一些简单小程序,也感觉到SQL和VB的实际操作的重要性,在以后的学习过程中,更应该把这种方法融合,这样才可以真正的掌握所学的知识。

二·程序设计实验一 Sql Server基本操作1·在Stu177数据库中创建下列数据表:学生情况表117:课程情况表117:选课情况表117:实验二 SQLServer 与程序设计语言连接1·利用VB数据窗体向导生成学生情况表117的录入界面如下: 单记录:网格:2·利用VB数据窗体向导生成课程情况表117的录入界面如下:单记录:网格:3·利用VB数据窗体向导生成选课情况表117的录入界面如下:单记录:网格:4·利用VB数据窗体向导生成学生情况表117(主从)的录入界面如下:5·利用VB数据窗体向导生成课程情况表117(主从)的录入界面如下:实验三基本算法练习1·求素数2.对任意偶数进行素数分解(哥德巴赫猜想)3·百钱百鸡问题实验四常用统计练习1·成绩统计2·字符统计实验五常用排序方法1·选择排序法2·冒泡排序法实验六综合设计1·程序封面设计2·系统集成界面设计三·实习总结经过一周的实习,我对SQL和VB的综合运用能力有所提高,特别是经过实际操作,能够很好的将书本知识转化为实践能力。

面向对象c 实验报告

面向对象c 实验报告

面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。

二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。

- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。

- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。

2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。

3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。

4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。

5. 运行程序:编译并运行C程序,观察程序的输出结果。

三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。

通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。

四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。

尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。

C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。

通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。

此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。

当然,C语言中实现面向对象编程也存在一些限制和不足。

相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。

此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。

面向对象程序设计实习报告

面向对象程序设计实习报告

《面向对象程序设计》实习报告班级:电子商务学号:xx姓名xx指导教师:实习时间:2011.12.26-2012.1.6一、实习目的经过两个周的面向对象程序设计的实习,让我再次复习了SQL和VB 的相关知识,因为自己这这学期的课程中对VB和SQL都有学习。

虽然我们的上机课是有限的,但是在这次的实习中让我更加的对自己多掌握的知识做了个很详细的补充。

由于两个周基本上都是自己在电脑上亲自操作完成任务,所以我就更加熟悉和掌握其具体应用的方法。

当然在这个任务完成的工程中会遇到很多的难题,所以就要靠自己努力不懈的看书弄懂,还有问老师和四周的同学,把不懂的地方尽量通过这几种渠道把它弄懂。

在整个实习过程中,我清楚并掌握了SQL Server的集成环境、系统的菜单、工具栏、企业管理器、查询分析器的具体使用方法还有掌握了创建数据库、数据表等的方法,了解并知道数据表的操作命令以及T-SQL命令的使用。

在编写代码的时候,我大概了解VB基本命令的使用方法;掌握常用函数、表达式的使用方法,掌握程序控制结构的使用和程序设计,掌握变量的作用范围和自定义函数的使用。

以及熟悉了VB与数据库管理系统的连接方法等。

这些都是要通过自己的实际操作中慢慢的的熟悉和了解的。

我觉得这样的实习不仅让我在这两门重要的编程课中加深自己的知识,同时在以后的工作中能够有更大的用途。

这次的实习,在我自己来看,虽然还存在很多的问题,但是总体的效果还是很好的。

老师的逐渐提醒和同学们之间的共同商量,都能够让我受益匪浅。

还有还渐渐的掌握了一些小的程序的编程,这让我在vb和sql上有更加深刻的掌握,对我的以后工作还是学习上都是百利无一害的。

二、实验内容在这次的实习中我完成了SQL SERVER的基本操作,如创建学生情况表等三个表以及录入记录;SQL Server 与程序设计语言连接,从中对之前的三个表的录入信息等;程序设计语言基本算法中的求素数和自然数对、最大公约数和公倍数问题、百钱百鸡问题等;常用统计算法中的成绩统计和字符统计问题;常用排序方法中的选择排序法和二维数组排序问题;以及加密解密、数值转换问题;矩阵的综合运算;学生管理信息系统、集成界面已经程序封面的设计等问题。

面向对象程序设计实验报告

面向对象程序设计实验报告

面向对象程序设计实验报告【实验报告】面向对象程序设计一、引言面向对象程序设计是一种以对象为基础的软件开发方法,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现程序的功能。

本次实验旨在通过实践,加深对面向对象程序设计的理解,并掌握面向对象程序设计的基本原理和技巧。

二、实验目的1. 熟悉面向对象程序设计的基本概念和术语;2. 掌握面向对象程序设计的基本原理和技巧;3. 能够运用面向对象程序设计的思想解决实际问题。

三、实验内容1. 设计一个简单的图书管理系统;2. 实现图书的增删改查功能;3. 设计并实现图书管理系统的类结构;4. 编写测试代码,验证图书管理系统的功能。

四、实验步骤1. 设计图书管理系统的类结构:a. 创建一个Book类,包含图书的属性(书名、作者、出版社等)和方法(借阅、归还等);b. 创建一个Library类,用于管理图书馆的图书,包含添加图书、删除图书、查找图书等方法;c. 创建一个User类,用于表示图书馆的用户,包含借书、还书等方法;d. 创建一个Main类,作为程序的入口,用于测试图书管理系统的功能。

2. 实现图书的增删改查功能:a. 在Book类中实现图书的增删改查方法;b. 在Library类中调用Book类的方法,实现图书的增删改查功能。

3. 设计并实现图书管理系统的类结构:a. 根据实验要求,设计图书管理系统的类结构,包括Book、Library和User 类;b. 在每个类中定义相应的属性和方法,实现图书管理系统的功能。

4. 编写测试代码,验证图书管理系统的功能:a. 在Main类中创建图书馆和用户对象;b. 调用相应的方法,测试图书管理系统的功能;c. 检查输出结果,确保图书管理系统的功能正常运行。

五、实验结果与分析经过实验,成功设计并实现了一个简单的图书管理系统。

该系统具备图书的增删改查功能,用户可以通过借书和还书操作实现对图书的借阅和归还。

经过多次测试,系统运行稳定,功能正常。

面向对象程序设计实验(完整版)

面向对象程序设计实验(完整版)
(4)将try-catch-finally语句去掉,直接进行编译,能够编译通过吗?观察程序的运行结果。
2.编写一个类,在其中定义一个方法f1(),抛出一个RuntimeException异常,然后再定义另一个方法f2(),在其中调用f1,但是却没有给它们使用throws语句声明异常。程序能够运行吗?试解释程序的运行结果,理解‘RuntimeException是隐式地加以声明的。
try{
int a=3 fb=0;
System.out.println(a=a/b);
} ‘
catch(ArithmeticException e){
System.out.println(”捕捉到一个算术异常”);
}
catch(Exception e){
System.out.println(”捕捉到一个系统一般的异常”);
3.编写3个自己定义的异常类,第一个异常类继承自Exception,第二个异常类继承自第一个,第三个异常类继承自第二个。然后通过try抛出第三个异常类,通过catch捕捉第三个异常类。如果的catch子句中捕捉的是第二个异常类或者是第一个异常类,程序能够运行吗?如果想实现这3个异常的捕捉,catch子旬的顺序按捕捉第一个、第二个、第三个这样的顺序写,试解释程序的运行结果。
实验内容:
实验结果:
实验二
实验项目名称:数组及字符串
实验目的:熟悉数组以及字符串的初始化,函数调用等基本操作
实验内容:1.使用3种方式对一个二维数组进行赋值
2.使用3种方式实现两个字符串的连接操作。
实验过程:
实验三
实验项目名称:面向对象程序设计基础实验一
实验目的:熟悉java语言的面向对象基本概念
实验内容:创建类Rectangle,具有属性length和width,缺省值均为1。该类具有计算

面向对象程序设计实训报告总结

面向对象程序设计实训报告总结

面向对象程序设计实训报告总结
面向对象程序设计实训是我在大学期间参与的一门实践课程,通过这门课程的学习和实践,我对面向对象程序设计的理论和实践有了更深入的了解和掌握。

在实践过程中,我首先学习了面向对象程序设计的基本概念和原则,掌握了类、对象、继承、多态等重要概念和特性。

我了解到面向对象程序设计是一种将现实世界的事物抽象为类和对象的编程范式,可以更好地理解和模拟现实世界的复杂系统。

接着,我学习了面向对象程序设计的基本语法和语义,包括类的定义、对象的创建和使用、方法的定义和调用等。

我通过编写简单的程序来实践这些概念和语法,加深了对面向对象程序设计的理解。

在实践过程中,我还学习了面向对象程序设计的设计原则和模式。

我了解到设计原则是指导面向对象程序设计的准则,如开闭原则、单一职责原则、迪米特法则等。

这些原则可以帮助我们设计出高质量、可扩展和易维护的程序。

同时,我也学习了一些常用的设计模式,如工厂模式、单例模式、观察者模式等,这些模式可以帮助我们解决特定的设计问题。

通过实践,我发现面向对象程序设计可以提高代码的可读性、可维护性和可重用性。

通过将复杂系统拆分为多个类和对象,可以更好地组织和管理代码。

面向对象程序设计的设计原则和模式可以帮助我们设计出更好的系统架构和代码结构。

总的来说,面向对象程序设计实训是一门非常有价值的课程,通过这门课程的学习和实践,我对面向对象程序设计有了更深入的了解和掌握。

这门课程不仅提高了我的编程能力,还培养了我的系统设计和分析能力。

我相信这门课程对我未来的职业发展也有很大的帮助。

面向对象程序设计实训报告

面向对象程序设计实训报告

湖南工业职业技术学院课程实训指导书
课程名称:面向对象程序设计
姓名:
学号:
专业班级:
系(院):
设计时间:
设计地点:
实训题目:
菜单设计如下:
操作界面的具体设计自行安排。

帮助窗体如下:
实训报告编写要求:(目录自行设计,以下只供参考)
1、实训目的
2、实训内容
3、实训步骤
3.1数据库设计(详细设计步骤)
3.2界面设计(窗体和控件的相关属性设置参数值,相关程序和实训步骤)
3.3报表设计(方法和步骤)
4、程序的调试和运行
说明,实训报告封页统一采用该封页,标题改成实训报告,第2页为目录,要有2级目录。

实训报告内容自行设计,排版要整齐,图表要居中。

整个实训报告不得少于3000字。

Private Sub Command1_Click()
Data1.Recordset.MoveFirst
Do While Not Data1.Recordset.EOF
If Data1.Recordset.Fields("用户名").Value = Trim(Text1.Text) And Data1.Recordset.Fields("用户密码").Value = Trim(Text2.Text) Then
Form1.Hide
Form2.Show
Exit Do
Else
Data1.Recordset.MoveNext
End If
Loop
If Data1.Recordset.EOF = True Then。

面向对象设计原则实验报告实验06

面向对象设计原则实验报告实验06

设计模式(6)实验报告一、实验目的1.结合实例,熟练绘制设计模式结构图。

2.结合实例,熟练使用 Java 语言实现设计模式。

3.通过本实验,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些设计模式。

二、实验要求1.结合实例,绘制设计模式的结构图。

2.使用 Java 语言实现设计模式实例,代码运行正确。

三、实验内容1.状态模式在某网络管理软件中, TCP 连接(TCP Connection)具有建立(Established)、监听(Listening)、关闭(Closed)等多种状态,在不同的状态下 TCP 连接对象具有不同的行为,连接对象还可以从一个状态转换到另一个状态。

当一个连接对象收到其他对象的请求时,它根据自身的当前状态做出不同的反应。

现采用状态模式对 TCP 连接进行设计,绘制对应的类图并编程模拟实现。

2.享元模式某 OA 系统采用享元模式设计权限控制与管理模块,在该模块中,将与系统功能相对应的业务类设计为享元类并将相应的业务对象存储到享元池中(提示;可使用 Map 实现,key 为业务对象对应的权限编码, value 为业务对象)。

用户身份验证成功后,系统通过存储在数据库中的该用户的权限编码集从享元池获取相应的业务对象并构建权限列表,在界面上显示用户所拥有的权限。

根据以上描述,绘制对应的类图并编程模拟实现。

3.代理模式在某电子商务系统中,为了提高查询性能,需要将一些频繁查询的数据保存到内存的辅助存储对象中(提示:可使用 Map 实现)。

用户在执行查询操作时,先判断辅助存储对象中是否存在待查询的数据,如果不存在,则通过数据操作对象查询并返回数据,然后将效据保存到辅助存储对象中,否则直接返回存储在辅助存储对象中的数据。

现采用代理模式中的缓冲代理实现该功能,要求绘制对应的类图并编程模拟实现。

4.命令模式某灯具厂商要生产一个智能灯具遥控器,该遥控器具有 5 个可编程的插槽,每个插槽都有一个控制灯具的开关,这5个开关可以通过蓝牙技术控制5个不同房间灯光的打开和关闭,用户可以自行设置每一个开关所对应的房间。

面向对象程序设计实验报告

面向对象程序设计实验报告

面向对象程序设计实验报告姓名Name学号Student No.班级Class代码总行数Code Lines 实验名称Item1.实验目的综合应用所学的知识分析问题、解决问题,提高实际编程能力及程序调试能力。

2.实验内容设计并实现一个个人通信录,能记录人员的各种通信信息。

支持通信录条目的添加、查找、删除、修改。

要求:1)通信录需记录的个人信息自行设计。

2)要求采用图形用户界面(GUI),界面效果及事件处理方式自行设计,尽量考虑美观与易用性。

3)系统结构设计应采用面向对象的思想,发现问题域中的事物(常称为实体),抽象成类,建立实体类之间的关系。

同时建立实体类与界面类之间的关系。

要求程序结构设清晰合理。

3.关键代码public class AddressBook extends Frame implements ActionListener{private MenuItem noteAdd=new MenuItem("添加");private MenuItem noteDel=new MenuItem("删除");Private MenuItem noteEdit=new MenuItem("修改");private MenuItem noteSearch=new MenuItem("查找");private MenuItem noteExit=new MenuItem("退出");private List noteList=new List();private String[][]message=new String[1000][4];public Info notes=new Info();public AddressBook(){super("通讯录");Menu note=new Menu("编辑");note.add(noteAdd);note.add(noteDel);note.add(noteEdit);note.add(noteSearch);note.addSeparator();note.add(noteExit);MenuBar bar=new MenuBar();bar.add(note);setMenuBar(bar);add(noteList);noteAdd.addActionListener(this);noteDel.addActionListener(this);noteEdit.addActionListener(this);noteExit.addActionListener(this);noteSearch.addActionListener(this);noteList.addActionListener(this);addWindowListener(new WindowCloser());setSize(400,600);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==noteAdd){notes.mail=null;=null;notes.address=null;notes.telephone=null;int index=noteList.getItemCount();EditDialog dlg=new EditDialog(this,"通讯录",notes,false);if(dlg.isOk){message[index][0]=dlg.textName.getText();message[index][1]=dlg.text Address.getText();message[index][2]=dlg.textEmail.getText();message[index][3]=dlg.textTelephone.getText();if(message[index][0]!=null){String s="姓名:"+message[index][0]+"地址:"+message[index][1]+"E-mail:"+message[index][2]+"电话:"+message[index][3];noteList.add(s);}}dlg.dispose();}else if(e.getSource()==noteEdit||e.getSource()==noteList){int i=noteList.getSelectedIndex();if(i!=-1){=message[i][0];notes.address=message[i][1];notes.mail=message[i][2];notes.telephone=message[i][3];面向对象程序设计实验报告EditDialog dlg=new EditDialog(this,"修改通讯录",notes,false);if(dlg.isOk){message[i][0]=dlg.textName.getText();message[i][1]=dlg.textAddress.getText();message[i][2]=dlg.textEmail.getText();message[i][3]=dlg.textTelephone.getText();String s="姓名:"+message[i][0]+"地址:"+message[i][1]+"E-mail:"+message[i][2]+"电话:"+message[i][3]; noteList.replaceItem(s,i);}dlg.dispose();}}else if(e.getSource()==noteDel){ConfirmDialog cd=new ConfirmDialog(this,"确认删除?","确认要删除这条通讯录信息吗?");if(cd.close){int index=noteList.getSelectedIndex();for(int i=index;i<noteList.getItemCount()-1;i++){for(int j=0;j<4;j++)message[i][j]=message[i+1][j];}noteList.remove(index);}}else if(e.getSource()==noteSearch){EditDialog dlg=new EditDialog(this,"查找通讯录",notes,true);if(dlg.isOk){for(int i=0;i<noteList.getItemCount();i++){String thisname=noteList.getItem(i).toString().split("")[0].split(":")[1];String thistelephone=noteList.getItem(i).toString().split("")[30].split(":")[1];if((.equals(thisname)&&dlg.telephone.equals(thistelephone))||(.equal s(thisname)&&(dlg.telephone.equals("")))||((.equals(""))&&dlg.telephone.equ als(thistelephone))){String show="查找成功!信息为:"+noteList.getItem(i).toString();JOptionPane.showMessageDialog(null,show);return;}}。

《面向对象程序设计》课程综合性实验报告

《面向对象程序设计》课程综合性实验报告
(2)、全选菜单项(SelectAllActionPerformed)实现文本域中所输入文字的选定。
(3)、查找和替换菜单项(FindButtonActionPerformed、ReplaceButtonActionPerformed)实现文字的查找和替换功能。如图:(替换对话框与查找类似,这里不予显示)
(一)实验分析
首先,在设计Java写字板的时候,使用Net Beans集成开发环境,对写字板整体布局进行了布置:在新建窗体(JFrame)上加入了菜单条(jMenuBar1)、文本域(jTextArea1)以及快捷菜单(jPopupMenu1)。
其中,在菜单条上添加菜单和菜单项:
1、文件菜单(FileMenu):新建(New)、打开(Open)、保存(Save)、另存为(SaveAS)、退出(Exit);
其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有剪切、复制、粘贴、查找和查找替换等功能;格式菜单含有对文字字体、字型、字号及颜色等的设置功能。
2.编辑区设计:对文本的编辑处理区。
3.工具栏设计:可根据需要增加该项功能。
4.其他功能设计。
四、实验结果及分析
通过此次Java综合性实验,我对Java有了系统的了解。
如果文件不存在,程序执行时,系统将抛出IOException异常,被catch语句捕捉到,进行相应的处理。并且使用close()方法关闭输出流。
(4)、退出菜单项(ExitActionPerformed),单击该项,显示是否保存已修改对话框,如图:
图5:保存已修改对话框
2、编辑菜单下:
(1)、剪切、复制、粘贴,删除菜单项(CutActionPerformed、CopyActionPerformed、PasteActionPerformed、DeleteActionPerformed)分别实现文本域中选中文字的修改。

面向对象程序设计实验报告

面向对象程序设计实验报告

面向对象程序设计实验报告面向对象程序设计实验报告一、引言面向对象程序设计(Object-Oriented Programming,简称OOP)是一种广泛应用于软件开发的编程范式。

本实验旨在通过实践,加深对面向对象程序设计的理解,并掌握其基本概念和技巧。

二、实验目的1. 理解面向对象程序设计的基本概念和思想;2. 掌握类、对象、继承、封装、多态等面向对象的核心概念;3. 运用面向对象的思想设计和实现一个简单的程序。

三、实验过程1. 设计类和对象在本次实验中,我们选择实现一个简单的学生管理系统。

首先,我们需要设计一个学生类(Student),包括学生的姓名、年龄、学号等属性,并定义相关的方法,如获取学生信息、修改学生信息等。

然后,我们创建多个学生对象,模拟学生管理系统中的多个学生。

2. 继承和多态为了进一步理解继承和多态的概念,我们可以设计一个教师类(Teacher),继承自学生类。

教师类除了继承学生类的属性和方法外,还可以定义自己特有的属性和方法。

通过创建教师对象,我们可以看到继承和多态的效果。

3. 封装和访问控制在面向对象程序设计中,封装是一个重要的概念。

我们可以将学生类的属性设置为私有(private),并通过公有(public)的方法来访问和修改属性。

这样做的好处是可以保护属性的安全性,同时提供统一的接口供外部使用。

四、实验结果通过实验,我们成功地实现了一个简单的学生管理系统。

我们可以创建学生对象,并通过调用相关方法来获取和修改学生的信息。

同时,我们还实现了教师类,通过继承和多态的特性,我们可以灵活地使用学生和教师对象。

五、实验总结通过本次实验,我们深入了解了面向对象程序设计的基本概念和思想。

通过设计和实现一个简单的程序,我们掌握了类、对象、继承、封装、多态等核心概念,并学会了如何运用这些概念来设计和实现面向对象的程序。

面向对象程序设计具有很多优点,如代码的可重用性、可维护性、可扩展性等。

通过合理地设计类和对象,我们可以更好地组织和管理代码,提高开发效率和代码质量。

面向对象程序设计课程实验报告

面向对象程序设计课程实验报告

课程实验报告课程名称:面向对象程序设计院系:专业班级:学号:姓名:指导教师:目录实验一.面向过程的整型栈编程 (1)1.需求分析 (1)1.1题目要求 (1)1.2需求分析 (2)2.系统设计 (2)2.1概要设计 (2)2.2详细设计 (3)4.软件测试 (5)5.特点与不足 (6)5.1技术特点 (6)5.2不足和改进的建议 (6)6.过程和体会 (6)6.1遇到的主要问题和解决方法 (6)6.2课程设计的体会 (7)7.源码和说明 (7)7.1文件清单及其功能说明 (7)7.2用户使用说明书 (7)7.3源代码 (7)实验二.面向对象的整型栈编程 (17)1.1题目要求 (17)1.2需求分析 (18)2.系统设计 (18)2.1概要设计 (18)2.2详细设计 (18)3.软件开发 (20)4.软件测试 (20)5.特点与不足 (20)5.1技术特点 (20)5.2不足和改进的建议 (21)6.过程和体会 (21)6.1遇到的主要问题和解决方法 (21)6.2课程设计的体会 (21)7.源码和说明 (21)7.1文件清单及其功能说明 (21)7.2用户使用说明书 (21)7.3源代码 (21)实验三.基于算符重载的整型栈编程 (27)1.需求分析 (27)1.2需求分析 (28)2.系统设计 (28)2.1概要设计 (28)2.2详细设计 (28)3.软件开发 (29)4.软件测试 (29)5.特点与不足 (29)5.1技术特点 (29)5.2不足和改进的建议 (29)6.过程和体会 (30)6.1遇到的主要问题和解决方法 (30)6.2课程设计的体会 (30)7.源码和说明 (30)7.1文件清单及其功能说明 (30)7.2用户使用说明书 (30)7.3源代码 (30)实验四. 面向对象的整型队列编程 (35)1.需求分析 (35)1.1题目要求 (35)2.系统设计 (36)3.软件开发 (36)4.软件测试 (36)5.特点与不足 (37)5.1技术特点 (37)5.2不足和改进的建议 (37)6.过程和体会 (37)6.1遇到的主要问题和解决方法 (37)6.2课程设计的体会 (37)7.源码和说明 (37)7.1文件清单及其功能说明 (37)7.2用户使用说明书 (38)7.3源代码 (38)实验五. 基于组合的整型队列编程 (43)1.需求分析 (43)1.1题目要求 (43)1.2需求分析 (44)2.系统设计 (44)4.软件测试 (44)5.特点与不足 (45)5.1技术特点 (45)5.2不足和改进的建议 (45)6.过程和体会 (45)6.1遇到的主要问题和解决方法 (45)6.2课程设计的体会 (45)7.源码和说明 (45)7.1文件清单及其功能说明 (45)7.2用户使用说明书 (45)7.3源代码 (46)实验六. 基于继承的整型队列编程 (52)1.需求分析 (52)1.1题目要求 (52)1.2需求分析 (53)2.系统设计 (53)3.软件开发 (53)4.软件测试 (53)5.1技术特点 (54)5.2不足和改进的建议 (54)6.过程和体会 (54)6.1遇到的主要问题和解决方法 (54)6.2课程设计的体会 (54)7.源码和说明 (55)7.1文件清单及其功能说明 (55)7.2用户使用说明书 (55)7.3源代码 (55)实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。

面向对象程序设计学生管理系统实验报告

面向对象程序设计学生管理系统实验报告

(6)测试结果#include<iostream>#include<string>using namespace std;class Student{public:/*基本信息录入函数*/void input(){cout<<"请分别输入学号、学生姓名、性别、出生年月、民族、籍贯、家庭住址、";cout<<"家庭电话、移动电话、入学时间、所在院系、所学专业、政治面貌、加入党时间、";cout<<"加入团时间、宿舍号、宿舍电话、所学课程、英语成绩、数学成绩、健康情况、现任职务、现任职务时间"<<endl;cin>>num>>name>>sex>>birthday>>nation>>native>>address>>telephonenum>>mobilephonenum>>enrollment_time>>d epartment>>major>>politics;cin>>party_time>>group_time>>dormitorynum>>dormitorytele>>lesson>>english>>math>>health>>job>>job_time;}/*简历信息录入函数*/void input_resume(){cout<<"请分别输入时间、学校、职务、证明人"<<endl;cin>>time1>>school>>work>>certifier;}/*奖惩信息录入函数*/void input_repu(){cout<<"请分别输入时间、奖惩、原因"<<endl;cin>>time2>>repu>>reason;}/*授课信息录入函数*/void input_lesson(){cout<<"请分别输入课程名、授课教师、授课学期、成绩"<<endl;cin>>lesson>>teacher>>term>>grade;}/*家庭信息录入函数*/void input_family(){cout<<"请分别输入姓名、性别、出生年月、关系、工作单位、文化程度、党团情况"<<endl;cin>>family_name>>family_sex>>family_birthday>>relation>>workplace>>culture>>family_politics;}/*基本信息输出函数*/void output(){cout<<"该学生的基本信息为:"<<endl;cout<<"学号:"<<num<<endl;cout<<"学生姓名:"<<name<<endl;cout<<"性别:"<<sex<<endl;cout<<"出生年月:"<<birthday<<endl;cout<<"民族:"<<nation<<endl;cout<<"籍贯:"<<native<<endl;cout<<"家庭住址:"<<address<<endl;cout<<"家庭电话:"<<telephonenum<<endl;cout<<"移动电话:"<<mobilephonenum<<endl;cout<<"入学时间:"<<enrollment_time<<endl;cout<<"所在院系:"<<department<<endl;cout<<"所学专业:"<<major<<endl;cout<<"政治面貌:"<<politics<<endl;cout<<"加入党时间:"<<party_time<<endl;cout<<"加入团时间:"<<group_time<<endl;cout<<"宿舍号:"<<dormitorynum<<endl;cout<<"宿舍电话:"<<dormitorytele<<endl;cout<<"所学课程:"<<lesson<<endl;cout<<"英语成绩:"<<english<<endl;cout<<"数学成绩:"<<math<<endl;cout<<"健康情况:"<<health<<endl;cout<<"现任职务:"<<job<<endl;cout<<"现任职务时间:"<<job_time<<endl;cout<<"\n"<<endl;}/*简历信息输出函数*/void output_resume(){cout<<"该学生的简历信息为:"<<endl;cout<<"时间"<<time1<<endl;cout<<"学号:"<<num<<endl;cout<<"学校:"<<school<<endl;cout<<"职务:"<<work<<endl;cout<<"证明人:"<<certifier<<endl;cout<<"\n"<<endl;}/*奖惩信息输出函数*/void output_repu(){cout<<"该学生的奖惩信息为:"<<endl;cout<<"学号:"<<num<<endl;cout<<"时间:"<<time2<<endl;cout<<"奖惩:"<<repu<<endl;cout<<"原因:"<<reason<<endl;cout<<"\n"<<endl;}/*授课信息输出函数*/void output_lesson(){cout<<"该学生的授课信息为:"<<endl;cout<<"学号:"<<num<<endl;cout<<"课程名:"<<lesson<<endl;cout<<"授课教师:"<<teacher<<endl;cout<<"授课学期:"<<term<<endl;cout<<"\n"<<endl;}/*家庭信息输出函数*/void output_family(){cout<<"该学生的家庭信息为:"<<endl;cout<<"学号:"<<num<<endl;cout<<"家庭成员姓名:"<<family_name<<endl;cout<<"性别:"<<family_sex<<endl;cout<<"出生年月:"<<family_birthday<<endl;cout<<"关系:"<<relation<<endl;cout<<"工作单位:"<<workplace<<endl;cout<<"文化程度:"<<culture<<endl;cout<<"党团情况:"<<family_politics<<endl;cout<<"\n"<<endl;}/*专业查找函数*/void search_major(string find_major){flag=0;if(major==find_major){cout<<major<<"被找到"<<endl;flag=1;}}/*籍贯查找函数*/void search_native(string find_native){flag=0;if(native==find_native){cout<<native<<"被找到"<<endl;flag=1;}}/*姓名查找函数*/void search_name(string find_name){flag=0;if(name==find_name){cout<<name<<"被找到"<<endl;flag=1;}}/*学号查询函数*/void search_num(string find_num){flag=0;if(num==find_num){cout<<num<<"被找到"<<endl;flag=1;}}/*英语成绩重新赋值*/void input_english(){cout<<"请重新输入该学生的英语成绩:"<<endl;cin>>english;}/*数学成绩重新赋值*/void input_math(){cout<<"请重新输入该学生的数学成绩:"<<endl;cin>>math;}/*家庭电话重新赋值*/void input_telephonenum(){cout<<"请重新输入该学生的家庭电话:"<<endl;cin>>telephonenum;}/*移动电话重新赋值*/void input_mobilephonenum(){cout<<"请重新输入该学生的移动电话:"<<endl;cin>>mobilephonenum;}/*现任职务重新赋值*/void input_job(){cout<<"请重新输入该学生的现任职务:"<<endl;cin>>job;}void input_job_time(){cout<<"请重新输入该学生的职务时间:"<<endl;cin>>job_time;}/*私有成员引用*/int getflag(){return flag;}/*私有成员引用*/int getflag_delet(){return flag_delet;}/*年份删除函数*/void search_enrollment_time(string delet_enrollment_time){flag_delet=0;if(num==delet_enrollment_time)flag_delet=1;}private:stringnum,name,sex,birthday,nation,native,address,telephonenum,mobilephonenum,enrollment_time,department,major,politics, party_time,group_time,dormitorynum,dormitorytele,health,job,job_time,time1,school,work,certifier,time2,repu,reason, lesson,teacher,term,grade,family_name,family_sex,family_birthday,relation,workplace,culture,family_politics;int english,math,flag,flag_delet;//flag 变量为标志记1 或0};/*主函数*/int main(){int number,i,j,n=0,flag,judge,t=0,k=0;//judge 变量为确认是否继续执行功能,t 变量为计数功能string find_major,find_native,find_name,find_num,modification_num,delet_enrollment_time;Student a[100];Student b[100];cout<<" ┏——————————————————————┓"<<endl;cout<<" ┃学生档案管理系统┃"<<endl;cout<<" ┃ 1.档案录入┃"<<endl; cout<<" ┃ 2.档案删除┃"<<endl; cout<<" ┃ 3.档案修改┃"<<endl; cout<<" ┃ 4.档案查询┃"<<endl; cout<<" ┃ 5.档案报表┃"<<endl; cout<<" ┃ 6.历史记录┃"<<endl; cout<<" ┃┃"<<endl; cout<<" ┃欢迎使用本系统┃"<<endl; cout<<" ┗——————————————————————┛"<<endl; cout<<"\n"<<endl;do{cout<<"请选择你要执行的功能(输入文字前序号即可)"<<endl;cin>>number;judge=0;switch(number){case 1: //选择档案录入{i=0;do{judge=0;a[i].input();a[i].input_resume();a[i].input_repu();a[i].input_lesson();a[i].input_family();i++;n++;cout<<"是否继续录入档案?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);cout<<"共录入"<<n<<"人"<<endl;break;}case 2: //选择档案删除{do{t=0;judge=0;cout<<"请输入您要删除的入学年份"<<endl;cin>>delet_enrollment_time;for(i=0;i<n;i++)a[i].search_enrollment_time(delet_enrollment_time);if(a[i].getflag_delet()==1){b[k]=a[i];k++;for(j=i;j<n;j++){a[j]=a[j+1];}n--;cout<<"正在进行删除……"<<endl;cout<<"删除成功!"<<endl;t++;}}if(t==0)cout<<"您删除的学生学号不存在!"<<endl;cout<<"是否继续删除档案?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 3: //选择档案修改{cout<<" ┏——————————————————————┓"<<endl;cout<<" ┃学生档案管理系统之档案修改┃"<<endl;cout<<" ┣——————————————————————┫"<<endl;cout<<" ┃ 1.英语成绩修改┃"<<endl;cout<<" ┃ 2.数学成绩修改┃"<<endl;cout<<" ┃ 3.家庭电话修改┃"<<endl;cout<<" ┃ 4.移动电话修改┃"<<endl;cout<<" ┃ 5.现任职务修改┃"<<endl;cout<<" ┃ 6.职务时间修改┃"<<endl;cout<<" ┃┃"<<endl;cout<<" ┃欢迎使用本系统┃"<<endl;cout<<" ┗——————————————————————┛"<<endl;cout<<"\n"<<endl;do{cout<<"请选择你要执行的功能(输入文字前序号即可)"<<endl;cin>>number;switch(number){case 1: //英语成绩修改{{t=0;judge=0;cout<<"请输入你要修改英语成绩的学生学号:"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_num(find_num);if(a[i].getflag()==1){a[i].input_english();t++;}}if(t==0)cout<<"您查找的学生不存在!"<<endl;cout<<"是否继续修改英语成绩?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 2: //数学成绩修改{do{t=0;judge=0;cout<<"请输入你要修改数学成绩的学生学号:"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_num(find_num);if(a[i].getflag()==1){a[i].input_math();t++;}}if(t==0)cout<<"您查找的学生不存在!"<<endl;cout<<"是否继续修改数学成绩?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}{do{t=0;judge=0;cout<<"请输入你要修改家庭电话的学生学号:"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_name(find_name);if(a[i].getflag()==1){a[i].input_telephonenum();t++;}}if(t==0)cout<<"您查找的学生不存在!"<<endl;cout<<"是否继续修改家庭电话?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 4: //移动电话修改{do{t=0;judge=0;cout<<"请输入你要修改移动电话的学生学号:"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_num(find_num);if(a[i].getflag()==1){a[i].input_mobilephonenum();t++;}}if(t==0)cout<<"您查找的学生不存在!"<<endl;cout<<"是否继续修改移动电话?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 5: //现任职务修改do{t=0;judge=0;cout<<"请输入你要修改现任职务的学生学号:"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_num(find_num);if(a[i].getflag()==1){a[i].input_job();t++;}}if(t==0)cout<<"您查找的学生不存在!"<<endl;cout<<"是否继续修改现任职务?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 6: //职务时间修改{do{t=0;judge=0;cout<<"请输入你要修改职务时间的学生学号:"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_num(find_num);if(a[i].getflag()==1){a[i].input_job_time();t++;}}if(t==0)cout<<"您查找的学生不存在!"<<endl;cout<<"是否继续修改职务时间?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}}cout<<"是否继续修改学生档案?是(输入1)否(输入0)"<<endl;} while (judge==1);break;}case 4: //档案查询{cout<<" ┏——————————————————————┓"<<endl;cout<<" ┃学生档案管理系统之档案查询┃"<<endl;cout<<" ┣——————————————————————┫"<<endl;cout<<" ┃ 1.专业查询┃"<<endl;cout<<" ┃ 2.籍贯查询┃"<<endl;cout<<" ┃ 3.姓名查询┃"<<endl;cout<<" ┃ 4.学号查询┃"<<endl;cout<<" ┃┃"<<endl;cout<<" ┃欢迎使用本系统┃"<<endl;cout<<" ┗——————————————————————┛"<<endl;cout<<"\n"<<endl;do{cout<<"请选择你要执行的功能(输入文字前序号即可)"<<endl;cin>>number;switch(number){case 1: //专业查询{do{t=0;judge=0;cout<<"请输入你要查找专业"<<endl;cin>>find_major;for(i=0;i<n;i++){a[i].search_major(find_major);if(a[i].getflag()==1){a[i].output();a[i].output_resume();a[i].output_repu();a[i].output_lesson();a[i].output_family();t++;}}if(t==0)cout<<"您查找的专业不存在!"<<endl;cout<<"是否继续根据专业查询档案?是(输入1)否(输入0)"<<endl;} while (judge==1);break;}case 2: //籍贯查询{do{t=0;judge=0;cout<<"请输入你要查找籍贯"<<endl;cin>>find_native;for(i=0;i<n;i++){a[i].search_native(find_native);if(a[i].getflag()==1){a[i].output();a[i].output_resume();a[i].output_repu();a[i].output_lesson();a[i].output_family();t++;}}if(t==0)cout<<"您查找的籍贯不存在!"<<endl;cout<<"是否继续根据籍贯查询档案?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 3: //姓名查询{do{t=0;judge=0;cout<<"请输入你要查找学生的姓名"<<endl;cin>>find_name;for(i=0;i<n;i++){a[i].search_name(find_name);if(a[i].getflag()==1){a[i].output();a[i].output_repu();a[i].output_lesson();a[i].output_family();t++;}}if(t==0)cout<<"您查找的姓名不存在!"<<endl;cout<<"是否继续根据姓名查询档案?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}case 4: //学号查询{do{t=0;judge=0;cout<<"请输入你要查找学生的学号"<<endl;cin>>find_num;for(i=0;i<n;i++){a[i].search_num(find_num);if(a[i].getflag()==1){a[i].output();a[i].output_resume();a[i].output_repu();a[i].output_lesson();a[i].output_family();t++;}}if(t==0)cout<<"您查找的学号不存在!"<<endl;cout<<"是否继续根据学号查询档案?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;}}cout<<"是否继续根据其他方法查询档案?是(输入1)否(输入0)"<<endl;cin>>judge;} while (judge==1);break;case 5: //档案报表{for(i=0;i<n;i++){cout<<"档案报表如下"<<endl;a[i].output();a[i].output_resume();a[i].output_repu();a[i].output_lesson();a[i].output_family();}break;}case 6: //历史记录{cout<<"历史记录中共有"<<k<<"名学生"<<endl;for(i=0;i<k;i++){b[i].output();b[i].output_resume();b[i].output_repu();b[i].output_lesson();b[i].output_family();cout<<"\n"<<endl;}break;}default:cout<<"输入的条件有误!"<<endl;}judge=0;cout<<"是否继续使用系统?是(输入1)否(输入0)"<<endl;cin>>judge;} while(judge==1);return 0;}。

面向对象实验6

面向对象实验6

《面向对象程序设计》实验六实验报告班级学号姓名1实验目的:(1)掌握虚函数的定义和使用方法,理解虚函数在面向对象程序设计中的意义;(2)理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。

2实验任务:1、定义一个表示平面上的点的类Point,实现一个show()函数输出其坐标,由它派生出一个表示平面上的圆的Circle类,添加一个半径成员,实现show()函数输出其坐标和半径。

在主函数中定义一个基类的指针,用这个指针依次指向一个Point类的对象和一个Circle类的对象,分别调用show()函数输出对象的属性,Point类对象输出点的坐标,Circle类对象输出圆点坐标和圆的半径。

2、求几何体:长方体和圆柱体的体积。

具体要求如下:(1) 设计一个立体图形类(CStereoShape类),并满足如下要求:CStereoShape类有一个纯虚函数GetArea,能够获取立方体的表面积。

CStereoShape类有一个纯虚函数GetVolume,能够获取立方体的体积。

(2) 设计一个立方体类(CCube类),该类继承于CStereoShape类,并满足如下要求:●CCube类有一个带参数的构造函数,其参数分别为立方体的长、宽、高,默认值均为0。

●用一个成员函数put来实现对立方体长、宽、高的设置。

●重载CStereoShape类的GetArea和GetVolume,分别完成立方体的表面积和体积的计算。

(3) 设计一个球体类(CSphere),该类继承于CStereoShape类,并满足如下要求:●CSphere类有一个带参数的构造函数,其参数对应于球体的半径,默认值均为0。

●用一个成员函数put来实现对球体半径的设置。

●重载CStereoShape类的GetArea和GetVolume,分别完成球体的表面积和体积的计算。

(4) 在主函数完成测试,完成如下工作:3 程序清单:任务一:/*main.cpp*/#include <iostream>#include "Point.h"#include "Circle.h"using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) {Point t(2,1),*p[3];Circle c(3,4,4);p[0]=&t;p[0]->show();p[1]=&c;p[1]->show();return 0;}/* Point.h*/#ifndef POINT_H#define POINT_Hclass Point{public:Point(int=0,int=0);virtual void show();protected:int x,y;};#endif/* Point.cpp*/#include "Point.h"#include <iostream>using namespace std;Point::Point(int a,int b){x=a;y=b;}void Point::show(){cout<<"("<<x<<","<<y<<")"<<endl;}/* Circle.h*/#ifndef CIRCLE_H#define CIRCLE_H#include "Point.h"class Circle : public Point{public:Circle(int x,int y,int a):Point(x,y){r=a;}void show();protected:int r;};#endif/* Circle.cpp*/#include "Circle.h"#include <iostream>using namespace std;void Circle::show(){Point::show();cout<<"半径为:"<<r<<endl;}任务二:/*main.cpp*/#include <iostream>#include "CStereoShape.h"#include "CSphere.h"#include "CCube.h"using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) {CStereoShape *p[3];CCube b;p[0]=&b;b.put();p[0]->GetArea();p[0]->GetVolume();cout<<endl;CSphere s;p[1]=&s;s.put();p[1]->GetArea();p[1]->GetVolume();return 0;}/* CStereoShape.h*/#ifndef CSTEREOSHAPE_H#define CSTEREOSHAPE_Hclass CStereoShape{public:virtual double GetArea()=0;virtual double GetVolume()=0;protected:};#endif/* CCube.h*/#ifndef CCUBE_H#define CCUBE_H#include "CStereoShape.h"class CCube : public CStereoShape{public:CCube(double=0,double=0,double=0);void put();double GetArea();double GetVolume();protected:double length,width,high;};#endif/*CCube.cpp*/#include "CCube.h"#include <iostream>using namespace std;CCube::CCube(double a,double b,double c)length=a;width=b;high=c;}void CCube::put(){cout<<"请输入长、宽、高:";cin>>length>>width>>high;}double CCube::GetArea(){double s;s=2*(length*width+length*high+width*high);cout<<"长方体的表面积为:"<<s<<endl;}double CCube::GetVolume(){cout<<"长方体的体积为:"<<length*width*high<<endl; }/*CSphere.h*/#ifndef CSPHERE_H#define CSPHERE_H#include "CStereoShape.h"class CSphere : public CStereoShape{public:CSphere(double=0);void put();double GetArea();double GetVolume();protected:double r;};#endif/* CSphere.cpp*/#include "CSphere.h"#include <iostream>using namespace std;CSphere::CSphere(double a)r=a;}void CSphere::put(){cout<<"请输入球的半径:";cin>>r;}double CSphere::GetArea(){cout<<"球体的表面积为:"<<4*3.14*r*r<<endl;}double CSphere::GetVolume(){cout<<"球体的体积为:"<<4/3*3.14*r*r*r<<endl;}4 运行结果:任务一:任务二:5 总结或感悟:任务一中Point类的头文件内设计一个虚函数的输出show函数,Circle类继承Point类里面的点坐标,同时增加了半径的变量。

面向对象程序设计实验6

面向对象程序设计实验6

《实验03:函数》实验报告实验序号:实验项目名称:附件:1.#include<stdafx.h>#include<iostream.h>#include<cmath>double sqrt_zi(double a){ double x1,x2,i,j;x2=a/2;i=1;for(j=0;i>0.0000001;j++){x1=x2;x2=(x1+(a/x1))/2;i=fabs(x2-x1);}return x2;}int main(){double a,b;cout<<"输入被开方整数:"<<endl; cin>>a;if(a>=0){b=sqrt_zi(a);cout<<"平方根结果:"<<b<<endl; }else cout<<"错误:输入数为负数"<<endl; return 0;}3.#include<stdafx.h>#include<iostream.h>int Acm(int a,int b){int x;if(a==0) x=b+1;else if(b==0) x=Acm(a-1,1);else x=Acm(a-1,Acm(a,b-1));return x;}int main(){int m,n,jieguo;cout<<"输入两个正整数m,n:"<<endl;cin>>m>>n;jieguo=Acm(m,n);cout<<"Ackman函数结果为:"<<jieguo<<endl;return 0;}4.#include<stdafx.h>#include<iostream.h>int qiuyu(int a,int b){int jieguo;jieguo=a%b;return jieguo;}int qiuyu(float a,float b){int jieguo,c,d;if (a-static_cast<int>(a)>=0.5) c=static_cast<int>(a)+1; else c=static_cast<int>(a);if (b-static_cast<int>(b)>=0.5) d=static_cast<int>(b)+1; else d=static_cast<int>(b);jieguo=c%d;return jieguo;}int main(){int a,b,jieguo1,jieguo2;float c,d;cout<<"输入两个整数:";cin>>a>>b;cout<<"输入两个实数:";cin>>c>>d;jieguo1=qiuyu(a,b);jieguo2=qiuyu(c,d);cout<<"两次结果分别为:"<<jieguo1<<" "<<jieguo2<<endl; return 0;}5#include<stdafx.h>#include<iostream.h>#include<cmath>double area(double radius=0){double area_circle;area_circle=3.14*radius*radius;return area_circle;}double area(double a, double b){double area_rectangle;area_rectangle=a*b;return area_rectangle;}double area(double a, double b, double h){double area_ladder;。

面向对象程序设计-实习报告

面向对象程序设计-实习报告

、.~①我们‖打〈败〉了敌人。

②我们‖〔把敌人〕打〈败〉了。

面向对象程序设计报告课题:面向对象程序设计专业:通信工程班级:姓名:学号:指导老师:设计时间:2010/2011(2)学期第03-04周目录1.实践课题 (3)2.实践要求 (3)3.设计目的 (3)4.实践内容 (4)4.1必做课题:大学人员类的设计的功能描述以及模块结构 (4)4.1.1 功能模块描述及主要类描述 (4)4.1.2程序代码 (7)4.1.3使用说明和调试结果 (16)4.1.4 必做题小结 (18)4.2选作课题:基于RFID设备的隧道工作人员考勤系统 (18)4.2.1选做题任务分析 (18)4.2.2 液晶屏功能实现 (20)4.2.3 选做题小结 (20)5.心得体会 (21)6.参考文献 (21)一.实践课题:面向对象程序设计二.实践要求:2.1.必做课题大学人员类的设计(3月7-8日)基类,person类,相关的属性自己定义派生类,student类,teacher类,相关的属性自己定义Student类和teacher类的属性不相同,利用多态性编辑show函数,可以输出同类正确的信息。

编辑界面,功能有(1)输入人员(2)删除人员(3)保存人员(4)查询人员2.2选作课题(二者必选一,六人一大组,三人一小组,每个同学必须作不同的功能模块,要求选出组长,分配任务,)(3月9-18日)2.2.1. 基于RFID设备的隧道工作人员考勤系统(1)与必做课题结合,将每个卡与人员姓名,工种绑定,进入即可显示人员的相关信息。

两台RFID读卡器,从1-2表示进入隧道,从2-1表示退出隧道,据此,统计当前隧道里面的人员总数与姓名。

2.2.2 基于RFID设备的隧道工作人员考勤系统(2)(1)自学MFC,设计基于MFC设计隧道工作人员考勤系统,具有增、删、改、查询的功能(2)结合小组1同学做的实时考勤系统,设计基于MFC的隧道工作人员考勤系统三.实践目的:通过本次课程设计,使我们在掌握C++程序设计的基本思想、基本概念和基本方法上,能运用所学的知识对一般问题进行分析和程序设计,把C++程序设计语言作为基本工具使用,为今后在专业课程的学习中,使用计算机解决实际问题打好基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程实验报告
课程名称:面向对象程序设计
实验名称:面向对象的整型队列编程
院系:计算机科学与技术
专业班级:
学号:
姓名:
指导教师:
年月日
一、需求分析
1.题目要求
整型队列是一种先进后出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。

整型队列类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对队列的所有操作函数进行测试。

注意,请用实验三的SATCK继承形成新的类QUEQUE。

分析说明除构造函数以外的函数,加virtual说明与不加virtual说明有无区别。

并说明为什么不将s2也作为基类。

class QUEUE:public STACK{
STACK s2;
public:
QUEUE(int m); //初始化队列:最多m个元素
QUEUE(const QUEUE&s); //用队列s拷贝初始化队列
operator int ( ) const; //返回队列的实际元素个数pos
QUEUE& operator<<(int e); //将e入队列,并返回队列
QUEUE& operator>>(int &e); //出队列到e,并返回队列
QUEUE& operator=(const QUEUE&s); //赋s给队列,并返回被赋值的队列
void print( ) const; //打印队列
~QUEUE( ); //销毁队列
};
2.需求分析
自行对题目要求进行细化、补充。

二、系统设计
1.概要设计
介绍设计思路、原理。

将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。

要有总体结构、总体流程(图)。

2.详细设计
设计每个模块的实现算法(处理流程)、所需的局部数据结构。

具体介绍每个模块/子程序的功能、入口参数、出口参数、流程(图)等。

三、软件开发
简单介绍采用什么开发环境,如何编译、连接生成可执行文件。

使用了什么调试工具。

篇幅不要长。

四、软件测试
对照题目要求,构造测试例,给出程序界面截图,举证题目要求的功能(以及自行补充的功能)已实现。

分析测试效果。

注意:已实现但未在报告中主动举证的功能可能被当作没有实现。

五、特点与不足
1.技术特点
创新和得意之处
2.不足和改进的建议
不足和改进的建议
六、过程和体会
1.遇到的主要问题和解决方法
课程设计中所遇到的主要问题和解决方法
2.课程设计的体会
课程设计的体会
七、源码和说明
1.文件清单及其功能说明
提交程序资料的构成,各文件作用是什么。

哪个是执行文件,哪个是源码……
2.用户使用说明书
简要介绍如何安装、使用你的程序。

3.源代码
打印源码清单。

源码关键位置要有注释。

相关文档
最新文档