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

《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。
有如下测试程序和测试程序的输出结果,要求设计类Welcome 。
void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。
要求从主函数输入a 、b 、c 的值并输出结果。
使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。
请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。
面向对象程序设计实验报告1

实验一
实验名称:实验一Visual C++环境
实验目的:
⒈熟悉VC++的集成开发环境,学习运行一个C++程序的步骤。
y=fun(x);
if(y==0)
cout<<"they input num is sushu"<<endl;
else
cout<<"they input num is not sushu"<iostream.h>
#include<math.h>
float fun(float a,float b,float c,float d)
return 0;
3. #include<iostream.h>
void main()
{inta,b,c,d,e;
double score;
a=b=c=d=0;
cin>>score;
while(score>=0)
{
if(score>=90)
a++;
else
if(score>=80)
b++;
else
if(score>=70)
do{
*p=*(--p);
}while( p>s+n);
(*p)=c;
}
return s;
}
int main()
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个正整数中的最大数。
面向对象程序设计课程实验总结报告

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

《面向对象程序设计实验》实验一、Java实验环境的建立(2学时)1、目的要求(1)掌握Java编程环境的搭建过程;(2)掌握Jcreator pro软件的使用方法;(3)能使用Java doc文档。
2、实验内容(1)下载并安装JDK1.6,配置JDK环境变量;(2)下载Javadoc压缩包并解压在JDK安装路径下;(3)下载Jcreator pro 4.0并安装和配置使用环境;(4)使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。
①Java application程序代码如下:public class HelloJava{public static void main(String args[]){ System.out.println("Hello Java!"); }}②Java applet程序代码如下:import java.awt.*;public class Hello extends java.applet.Applet{public void paint(Graphics g){ g.drawString("Hello!",30,30); }}3、仪器与材料:计算机实验二、Java语言程序设计训练(2学时)1、目的要求(1)输入、输出操作实现原理和方法;(2)掌握程序流程控制的实现方法;(3)掌握数组的定义和操作方法。
2、实验内容(1)计算Result=1!+2!+3!+...+10!。
public class Test3 {public static void main(String[] args) {int sum = 0, fact, n, i;for (n = 1; n <= 10; n++) {fact = 1;for (i = 1; i <= n; i++)fact *= i;sum += fact;}System.out.println("sum=" + sum);}}(2)计算1---50之间所有素数的和。
实验二 面向对象编程实验报告

实验二面向对象编程实验报告一、实验目的本次实验旨在深入理解和掌握面向对象编程的基本概念和方法,通过实际编程操作,提高运用面向对象思想解决问题的能力,熟悉面向对象编程的开发流程和技巧,培养良好的编程习惯和代码规范。
二、实验环境本次实验使用的编程环境为具体编程环境名称及版本,操作系统为操作系统名称及版本。
三、实验内容(一)问题描述设计一个简单的学生管理系统,能够实现对学生信息(包括姓名、学号、年龄、成绩等)的录入、查询、修改和删除操作。
(二)类的设计1、设计一个`Student` 类,用于表示学生对象。
该类包含以下属性:`name`(姓名)、`student_id`(学号)、`age`(年龄)、`score`(成绩)。
2、为`Student` 类添加构造函数,用于初始化学生对象的属性。
3、为`Student` 类添加`get` 和`set` 方法,用于获取和设置学生对象的属性值。
(三)功能实现1、录入功能:实现用户输入学生信息,并创建`Student` 对象进行存储。
2、查询功能:根据学号或姓名查询学生信息,并输出查询结果。
3、修改功能:根据学号或姓名找到对应的学生对象,修改其属性值。
4、删除功能:根据学号或姓名删除对应的学生对象。
四、实验步骤(一)类的实现```javapublic class Student {private String name;private String studentId;private int age;private double score;public Student(String name, String studentId, int age, double score) {thisname = name;thisstudentId = studentId;thisage = age;thisscore = score;}public String getName(){return name;}public void setName(String name) {thisname = name;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public double getScore(){return score;}public void setScore(double score) {thisscore = score;}}```(二)主函数实现```javaimport javautilArrayList;import javautilScanner;public class StudentManagementSystem {private ArrayList<Student> students;public StudentManagementSystem(){students = new ArrayList<>();}public static void main(String args) {StudentManagementSystem system = new StudentManagementSystem();Scanner scanner = new Scanner(Systemin);while (true) {Systemoutprintln("1、录入学生信息");Systemoutprintln("2、查询学生信息");Systemoutprintln("3、修改学生信息");Systemoutprintln("4、删除学生信息");Systemoutprintln("5、退出系统");int choice = scannernextInt();switch (choice) {case 1:systemaddStudent(scanner);break;case 2:systemqueryStudent(scanner);break;case 3:systemmodifyStudent(scanner);break;case 4:systemdeleteStudent(scanner);break;case 5:Systemoutprintln("感谢使用,再见!");Systemexit(0);default:Systemoutprintln("输入有误,请重新输入!");}}}//录入学生信息public void addStudent(Scanner scanner) {Systemoutprintln("请输入学生姓名:");String name = scannernext();Systemoutprintln("请输入学生学号:");String studentId = scannernext();Systemoutprintln("请输入学生年龄:");int age = scannernextInt();Systemoutprintln("请输入学生成绩:");double score = scannernextDouble();Student student = new Student(name, studentId, age, score);studentsadd(student);Systemoutprintln("学生信息录入成功!");}//查询学生信息public void queryStudent(Scanner scanner) {Systemoutprintln("请输入查询方式(1、按学号查询 2、按姓名查询):");int queryType = scannernextInt();if (queryType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (queryType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//修改学生信息public void modifyStudent(Scanner scanner) {Systemoutprintln("请输入修改方式(1、按学号修改 2、按姓名修改):");int modifyType = scannernextInt();if (modifyType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("请输入新姓名:");String newName = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetName(newName);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (modifyType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("请输入新学号:");String newStudentId = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetStudentId(newStudentId);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//删除学生信息public void deleteStudent(Scanner scanner) {Systemoutprintln("请输入删除方式(1、按学号删除 2、按姓名删除):");int deleteType = scannernextInt();if (deleteType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (deleteType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}}```五、实验结果通过对程序的运行和测试,能够成功实现学生信息的录入、查询、修改和删除功能。
面向对象程序设计实验报告

面向对象程序设计实验报告实验报告(1)2015.6【实验作者】学号:姓名:班级:教学站:【实验名称】实验一:熟悉C++程序的风格和C++程序的上机全过程【实验目的】1.熟悉C++程序的风格,熟悉实验环境。
2.练习C++程序的输入、修改、编译、连接与运行的全过程。
3.本实验有4个程序【实验内容】1. 习题2.2下面是一个C程序,改写它,使它采用C++风格的I/O语句。
(1)该程序做什么工作?输入两个整数,求两个整数的大于1 的最小公约数[(另外请教下毛老师:如果最小公约数与最小数相等时,我觉得也有可能这个数是两个数的大于1 的最小公约数)即7与14的公约数为1,7按题意的话,要大于1,那么7也是这两个数的最小公约数,但程序不认为它们具有公约数]。
(2)该程序中那几个数是由键盘输入的?那几个数是输出的?那几个数是临时变量?a与b 由键盘输入;d 是输出的;a,b,d,min 都是临时变量。
(3)用C++风格的I/O语句是什么?#include <iostream.h> cout<<与cin>>(4)写出该程序的算法(用流程图表示)框图1:(5)该程序你有否上机编译、连接、运行通过。
有上机编译连接并运行通过,但有些疑问!2. 习题 2.20分析下面程序的输出结果:(1)该程序做什么工作?利用引用函数改变一个变量的值。
(2)该程序有几个函数?其中f函数是什么函数?其功能是什么?一个函数,F函数是一个引用返回值的函数,并且该函数参数也为一个引用,函数功能是送入一个对变量引用,将变量+10后送回。
成为对返回值的引用。
(3)写出该程序的算法(用流程图表示)框图2:(4)该程序你有否上机编译、连接、运行通过。
该程序有上机编译并连接运行通过。
3. 习题2.23 建立一个被称为sroot( )的函数,返回其参数的二次根。
重载sroot( )三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ))。
面向对象程序设计实验报告

面向对象程序设计实验报告【实验报告】面向对象程序设计一、引言面向对象程序设计是一种以对象为基础的软件开发方法,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现程序的功能。
本次实验旨在通过实践,加深对面向对象程序设计的理解,并掌握面向对象程序设计的基本原理和技巧。
二、实验目的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. 检查输出结果,确保图书管理系统的功能正常运行。
五、实验结果与分析经过实验,成功设计并实现了一个简单的图书管理系统。
该系统具备图书的增删改查功能,用户可以通过借书和还书操作实现对图书的借阅和归还。
经过多次测试,系统运行稳定,功能正常。
java面向对象编程实验报告

java面向对象编程实验报告篇一:java面向对象编程实验报告信息工程学院Java程序设计实验/实习报告学院:信息工程学院班级:信息112 姓名:吴连梅学号:XX013305 成绩:A实验二面向对象编程1.实验目的(1)掌握类与对象基本知识;(2)Java中的继承机制及包(package)、接口(interface)等的设计方法;(3)掌握static、this、super等关键字的使用;(4)掌握Java中两种比较器的用法。
2.实验内容实验题 1 定义一个类Book,包含两个属性:一个是private的String类型的属性title、一个是private的float类型的属性listPrice,封装这两个属性的四个方法setTitle()和getTitle()、setListPrice( )和geListPrice ()。
基本要求:(1)设计类Book及类BookManagement,在类BookManagement中输出Book类的对象的两个private属性;(2)重写父类的toString()方法,实现Book类实例的两个属性的输出。
实验过程:新建工程后,在工程下面建立一个包Book,在包下再建立一个Book类,类中包含两个属性,一个是private的String类型的属性title、一个是private的float类型的属性listPrice,之后是封装这两个属性的四个方法,用快捷键Alt+Shift+S选择gennerate Getters and Setters,再实验报告的内容与格式按任课教师的要求书写。
然后就是重写父类的toString()方法,用快捷键Alt+Shift+S选择gennerate toString,快捷重写。
这段程序写完是这样的:接下来便是BookManagement类,在包book下新建一个类BookManagement,写完的程序是这样的:BookManagement类中创建了书的对象,在主方法中调用output函数,赋值,输出。
面向对象程序设计实验报告

面向对象程序设计实验报告题目1:1.问题描述:建立一个二维坐标系的类TwoCoor,用x、y表示坐标值,实现两坐标点的加、减运算,计算两坐标点间的距离,并重载输入/输出坐标点的坐标值。
2.实现代码:#include<iostream>#include<math.h>using std::ostream;using std::istream;using namespace std;class TwoCoor{private:double x,y; //x,y分别为横纵坐标 public:TwoCoor(double x1=0,double y1=0):x(x1),y(y1){}TwoCoor sum(TwoCoor &a1,TwoCoor &a2)//实现两坐标的加运算 {TwoCoor c;c.x=a1.x+a2.x;c.y=a1.y+a2.y;return c;}TwoCoor subtract(TwoCoor &a1,TwoCoor &a2)//实现两坐标的减运算 {TwoCoor c;c.x=a1.x-a2.x;c.y=a1.y-a2.y;return c;}double distance(TwoCoor &a1,TwoCoor &a2)//计算两坐标的距离 {double d; //距离为dd=sqrt((a1.x-a2.x)*(a1.x-a2.x)+(a1.y-a2.y)*(a1.y-a2.y));return d;}friend ostream &operator<<(ostream &os,TwoCoor &a);friend istream &operator>>(istream &is,TwoCoor &a);};ostream &operator<<(ostream &os,TwoCoor &a){os<<"("<<a.x<<","<<a.y<<")"<<endl;return os;}istream &operator>>(istream &is,TwoCoor &a){is>>a.x>>a.y;return is;}int main(){TwoCoor a,b; //定义TwoCoor类的对象a,b cout<<"-------下面请输入数据-------"<<endl<<endl;cout<<"请分别输入TwoCoor类对象a的坐标值x,y"<<endl; cin>>a;cout<<"请分别输入TwoCoor类对象b的坐标值x,y"<<endl; cin>>b;cout<<endl<<"-------下面输出数据-------"<<endl<<endl; cout<<"a的坐标为:";cout<<a;cout<<"b的坐标为:";cout<<b;cout<<"a+b为:";TwoCoor c=a.sum(a,b);cout<<c;cout<<"a-b为:";TwoCoor d=a.subtract(a,b);cout<<d;cout<<"a点与b点的距离为:";cout<<a.distance(a,b)<<endl;return 0;}。
面向对象程序设计报告-基本图形处理软件课程设计报告

面向对象程序设计报告一.设计要求设计圆(包含椭圆)、矩形(包含正方形)、三角形、直线等基本图形类,基于这些基本图形类构造、编辑复杂图形,基本功能包括:①图形的创建:以圆(包含椭圆)、矩形(包含正方形)、三角形、直线等基本图形为元素构建复杂图形。
②图形的编辑:增加图形元素(基本图形)、删除图形元素(基本图形)③图形放大、缩小④图形保存二.概述本次程序设计为基于C++的面向对象的程序设计。
用C++各种基本图形(例如,圆、矩形、三角形、直线、点等)的类原型,通过继承图形这一个公共基类来实现图形的增删改以及保存等操作。
通过此次实习,我对类的相关操作以及类的作用有了更深一步的认识。
对面向对象程序设计有了进一步的理解。
特别是进一步熟悉并使用面向对象的继承、多态等机制。
该系统中,定义了一个鼠标类和窗口类,窗口类又继承了鼠标类,使得所有的操作变得简单明了,代码可移植性也很强。
整体操作方式与windows中画图的操作方式相似,而且可以随时更改以前画过的图形,该系统实现了各类基本图形的产生,放大,缩小,删除、移动、改变颜色、改变线型与保存等功能。
采用汉字库,实现了中文显示,为该系统的使用者提供了便利。
而且界面上操作很方便,可以使用快捷键,可以直接点击鼠标来轻松绘制图片。
使用了Turboc++编译器,编译器下载地址:。
三.主要类说明1.各基本图形类的基类:FIGURE该类归纳了各种图形类的共同数据以及共同操作,声明了几个纯虚函数:virtual void show()=0;virtual void hide()=0;virtual void expand(int delta)=0;virtual void save()=0;实现了同一函数在各个不同的图形类中有不同的实现。
增大了程序的灵活性。
其中show()函数的作用是显示图形,hide()函数是用来隐藏图形,expand()函数是用来放大选中的图形。
save()函数将对应图形的相关数据以文件的形式保存。
《面向对象程序设计_C++》实验报告

《⾯向对象程序设计_C++》实验报告C++实验报告实验⼀ Visual C++6.0开发环境应⽤⼊门(验证性实验2学时)1.⽬的要求:了解Visual C++6.0的特点,熟悉了解Visual C++6.0的开发环境,学习使⽤Visual C++6.0编写标准的C++控制台应⽤程序。
2.实验内容:使⽤Visual C++来建⽴⼀个⾮图形化的标准C++程序,编译、运⾏教材中的例3-3,⽤公式法求解PI的数值,并尝试利⽤其他⽅法求解并获得相同的结果。
π=16arctan(1/5)-4arctan(1/239)arctan(x)=x-x3/3+x5/5-x7/7+…求π=?(1)源代码和说明:#includeusing namespace std;double arctan(double x){double sqr=x*x;double e=x;double r=0;int i;while(e/i>1e-15){double f=e/i;r=(i%4==1)?r+f:r-f;e=e*sqr;i+=2;}return r;}int main(){double a=16.0*arctan(1/5.0);double b=4.0*arctan(1/239.0);cout<<"PI="<return 0;}2)运⾏结果:1实验⼆ C++简单程序设计实验(验证性实验4学时)1.⽬的要求:会编写简单的C++程序;复习基本数据类型变量和常量的应⽤;复习运算符与表达式的应⽤;复习结构化程序设计基本控制结构的应⽤;复习⾃定义数据类型的应⽤;练习使⽤简单的输⼊输出;观察头⽂件的作⽤;学会使⽤VC6.0开发环境中的debug调试功能;熟练程序设计中的技巧;2.实验内容:1)给定⼀个字符变量输出其⼆进制形式。
例如char a=’a’;其⼆进制为00100001。
1)源代码和说明#includeusing namespace std;int main(){char ch;int j,k[8]={0};cout<<"请输⼊⼀个字符:"<cin>>ch;for(j=0;j<=7;j++){if(ch){if(ch%2==0)k[j]=0;elsek[j]=1;ch=(ch-(ch%2))/2;}}for(j=7;j>=0;j--){cout<}cout<}2)运⾏结果:2)给定⼀个字符变量输出其⼆进制反转形式。
面向对象程序设计实训报告总结

面向对象程序设计实训报告总结
面向对象程序设计实训是我在大学期间参与的一门实践课程,通过这门课程的学习和实践,我对面向对象程序设计的理论和实践有了更深入的了解和掌握。
在实践过程中,我首先学习了面向对象程序设计的基本概念和原则,掌握了类、对象、继承、多态等重要概念和特性。
我了解到面向对象程序设计是一种将现实世界的事物抽象为类和对象的编程范式,可以更好地理解和模拟现实世界的复杂系统。
接着,我学习了面向对象程序设计的基本语法和语义,包括类的定义、对象的创建和使用、方法的定义和调用等。
我通过编写简单的程序来实践这些概念和语法,加深了对面向对象程序设计的理解。
在实践过程中,我还学习了面向对象程序设计的设计原则和模式。
我了解到设计原则是指导面向对象程序设计的准则,如开闭原则、单一职责原则、迪米特法则等。
这些原则可以帮助我们设计出高质量、可扩展和易维护的程序。
同时,我也学习了一些常用的设计模式,如工厂模式、单例模式、观察者模式等,这些模式可以帮助我们解决特定的设计问题。
通过实践,我发现面向对象程序设计可以提高代码的可读性、可维护性和可重用性。
通过将复杂系统拆分为多个类和对象,可以更好地组织和管理代码。
面向对象程序设计的设计原则和模式可以帮助我们设计出更好的系统架构和代码结构。
总的来说,面向对象程序设计实训是一门非常有价值的课程,通过这门课程的学习和实践,我对面向对象程序设计有了更深入的了解和掌握。
这门课程不仅提高了我的编程能力,还培养了我的系统设计和分析能力。
我相信这门课程对我未来的职业发展也有很大的帮助。
[面向对象系统分析和设计综合实验报告范文4]面向对象程序设计实验报告范文
![[面向对象系统分析和设计综合实验报告范文4]面向对象程序设计实验报告范文](https://img.taocdn.com/s3/m/93200f5576232f60ddccda38376baf1ffc4fe31f.png)
[面向对象系统分析和设计综合实验报告范文4]面向对象程序设计实验报告范文实验名称:实验4设计模型实验2学期:2022-2022学年第二学期一、实验目的1.熟练使用面向对象设计原则对系统进行重构;2.熟练使用面向对象编程语言(JAVA或C++)实现几种常见的设计模式,包括单例模式、策略模式、装饰模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。
二、实验要求1.选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图;2.结合实例,正确无误地绘制单例模式、策略模式、装饰模式和适配器模式的结构图;3.实现单例模式、策略模式、装饰模式和适配器模式,代码运行正确无误。
三、实验内容1.现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将号码分配给居民,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新号码,现使用单例模式模拟该场景。
类图实现代码:publicclaIdClient{publictaticvoidmain(String[]arg){IdentityCardNo.getIntance();IdentityCardNo.getIntance();}}packageRefactoring1;publicclaIdentityCardNo{ privatetaticIdentityCardNointance;privateStringno;privateIdentityCardNo(){}publictaticIdentityCardNogetIntance(){if(intance==null){Sytem.out.println("第一次办理身份证,分配新号码"); intance=newIdentityCardNo();intance.etNo("No6000654321");Sytem.out.println("身份证号码为:"+intance.getNo()); }ele{Sytem.out.println("重复办理身份证,获取旧号码!");}returnintance;}publicStringgetNo(){returnno;}publicvoidetNo(Stringno){thi.no=no;}}2.每一麻将局都有两个骰子,因此骰子就应当是双例类。
《面向对象程序设计》课程设计报告书(模板)

《面向对象程序设计》课程设计报告书(模板) 《面向对象程序设计》课程设计报告书设计题目:指导老师:学生学号:学生姓名:同组人员:时间:目录第1章选题 ..................................................................... ..................................................... 2 1.1 题目背景 ..................................................................... .................................................... 2 1.2系统实现的具体分工 ..................................................................... . (2)1.2.1 标题 ..................................................................... ..................................................... 2 1.3开发环境 ..................................................................... ..................................................... 2 第2章设计内容 ...................................................................................................................... 3 2.1实现功能 ..................................................................... ..................................................... 3 2.2 概要设计(涉及类的框图)..................................................................... ...................... 3 2.3 界面设计 ..................................................................... .................................................... 4 第3章系统实现 ..................................................................... ................................................. 5 3.1 涉及知识点 ..................................................................... ................................................ 5 3.2 系统运行(主要运行界面抓图) .................................................................... ............... 5 3.3 源程序清单(关键代码) .................................................................... .......................... 6 第4章结束语 ..................................................................... (16)第1章选题1.1 题目背景随着信息时代的到来和全社会信息化、网络化建设的兴起,传统的图书管理模式和操作方法越来越不能满足用户的需要.智能化、网络化、信息化的图书管理系统应用势在必行。
面向对象程序C++设计实验报告

面向对象程序C++设计实验报告计算机与信息工程系C++面向对象程序设计实验报告专业:计算机班级:学号:姓名:指导老师:刘文涛实验1:Visual C++6.0开发环境应用入门一、实验目的1、了解Visual C++6.0的特点。
2、熟悉Visual C++6.0的开发环境。
3、学习用Visual C++6.0编写标准的C++控制台程序。
二、实验任务使用Visual C++来建立一个非图形化的标准C++程序,编译、运行三、实验步骤#include <iostream.h>struct time{int year;int month;int day;int hour;int minue;int second;};void main(){time a;cout<<"please input year:";cin>>a.year;cout<<"please input month:";cin>>a.month;cout<<"please input day:";cin>>a.day;cout<<"please input hour:";cin>>a.hour;cout<<"please input minue:";cin>>a.minue;cout<<"please input second:";cin>>a.second;cout<<a.year<<"年"<<a.month<<"月"<<a.day<<"日"<<a.hour<<"时"<<a.minue<<"分"<<a.second<<"秒";}四:个人小结这是第一次开始学习C++,以前也没有接触过类似的东西。
面向对象程序设计实验报告

面向对象程序设计实验报告面向对象程序设计实验报告一、引言面向对象程序设计(Object-Oriented Programming,简称OOP)是一种广泛应用于软件开发的编程范式。
本实验旨在通过实践,加深对面向对象程序设计的理解,并掌握其基本概念和技巧。
二、实验目的1. 理解面向对象程序设计的基本概念和思想;2. 掌握类、对象、继承、封装、多态等面向对象的核心概念;3. 运用面向对象的思想设计和实现一个简单的程序。
三、实验过程1. 设计类和对象在本次实验中,我们选择实现一个简单的学生管理系统。
首先,我们需要设计一个学生类(Student),包括学生的姓名、年龄、学号等属性,并定义相关的方法,如获取学生信息、修改学生信息等。
然后,我们创建多个学生对象,模拟学生管理系统中的多个学生。
2. 继承和多态为了进一步理解继承和多态的概念,我们可以设计一个教师类(Teacher),继承自学生类。
教师类除了继承学生类的属性和方法外,还可以定义自己特有的属性和方法。
通过创建教师对象,我们可以看到继承和多态的效果。
3. 封装和访问控制在面向对象程序设计中,封装是一个重要的概念。
我们可以将学生类的属性设置为私有(private),并通过公有(public)的方法来访问和修改属性。
这样做的好处是可以保护属性的安全性,同时提供统一的接口供外部使用。
四、实验结果通过实验,我们成功地实现了一个简单的学生管理系统。
我们可以创建学生对象,并通过调用相关方法来获取和修改学生的信息。
同时,我们还实现了教师类,通过继承和多态的特性,我们可以灵活地使用学生和教师对象。
五、实验总结通过本次实验,我们深入了解了面向对象程序设计的基本概念和思想。
通过设计和实现一个简单的程序,我们掌握了类、对象、继承、封装、多态等核心概念,并学会了如何运用这些概念来设计和实现面向对象的程序。
面向对象程序设计具有很多优点,如代码的可重用性、可维护性、可扩展性等。
通过合理地设计类和对象,我们可以更好地组织和管理代码,提高开发效率和代码质量。
面向对象程序设计实验报告

面向对象程序设计实验报告实验一C++基础1.1实验目的1.了解并熟悉开发环境,学会调试程序;2.熟悉C++中简单的标准输入输出函数的使用方法;3.理解const修饰符的作用并学会应用;4.理解内联函数的优缺点并学会其使用场合;5.理解并学会函数重载;6.理解并熟练掌握使用new和delete来分配内存;7.理解并熟练掌握引用的使用方法。
1.2实验内容1.2.1程序阅读1.理解下面的程序并运行,然后回答问题。
#include<iostream.h>int max_def(int x,int y){return(x>y?x:y);}int max_def(int x,int y,int z){int temp=0;return(temp=(x>y?x:y))>z?temp:z;}double max_def(double x,double y){return(x>y?x:y);}int main(){int x1=0;int x2=0;double d1=0.0;double d2=0.0;x1=max_def(5,6);x2=max_def(2,3,4);d1=max_def(2.1,5.6);d2=max_def(12.3,3.4,7.8);-------------------------------------------------------①cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;cout<<"d1="<<d1<<endl;cout<<"d2="<<d2<<endl;--------------------------------------------------------②return 1;}问题一:上述程序的输出结果是什么?答:输出结果为问题二:①处调用的是哪个函数?答:①处调用的是double max_def(double x,double y)函数问题三:②处的输出结果为什么是d2=12,而不是d2=12.3?答:因为调用的int max_def(int x,int y,int z)函数返回值为整型。
面向对象程序设计实验报告

namespace _1
{
class Program
{
static void Main(string[] args)
{
int[][] jagArray=new int[2][]{new int[5],new int[3]};
for (int i = 0; i < jagArray.GetLength(0); i++)
(2)在代码编辑窗口内的Main()方法中添加如下代码:
using System;
namess HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello world!");
}
}
}
(1)选择“调试” “启动调试”命令,或按【F5】键,或单击工具栏上的 按钮,运行程序,查看运行结果。
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j <= i;j++ )
Console.WriteLine("{0}\t", a[i, j]);
Console.WriteLine();
}
Console.Read();
}
}
}
(10)分析程序,写出程序的运行结果,并上机进行验证。
Console.Write("{0,-3}",jagArray[k][m]);
Console.WriteLine();
}
Console.Read();
}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告题 目 文件备份管理系统课 程 名 称 面向对象程序设计课程设计院 部 名 称 计算机工程学院专 业 计算机科学与技术班 级 14计算机科学与技术(单)(1)学 生 姓 名 邵佳楠学 号 ********** 课程设计地点 A101课程设计学时 20学时指 导 教 师 赵金陵科技学院教务处制 成绩一、课程设计的目的和要求该课程设计的目的采用面向对象的程序设计语言,学会综合运用已学的C++知识,用面向对象的技术和文件打开,关闭,保存等实现一个小型的应用程序.开发实现一个应用程序,主要目的是使学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。
通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。
二、系统需求分析(1)设计浏览文件按钮,点击弹出选择文件提示框(2)选取文件后把文件地址保存到静态变量(3)设计备份按钮,点击弹出保存文件提示框(4)选择保存目录后把目录地址保存到静态变量(5)执行文件保存函数传入两个地址达到文件备份的目的(6)成功保存后将文件名,备份时间,备份地址保存到txt文档中(7)读取txt文档内容在列表控件中显示(8)还原功能系统界面如下:1.浏览文件按钮2.源文件地址预览3.备份历史记录列表4.备份文件按钮5.取消按钮6.备份按钮三、总体设计文件备份顾名思义就是将一个文件复制到另一个文件夹中,但要实现复制最起码要知道两个参数:1.源文件 2.目的目录总体流程:四、详细设计(1)此处是窗口初始化函数以及初始化列表信息BOOL CFileCopyDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。
当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码m_listAll.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);m_listAll.InsertColumn(0, "文件名", LVCFMT_CENTER);m_listAll.InsertColumn(1, "备份时间", LVCFMT_CENTER);m_listAll.InsertColumn(2, "备份目录", LVCFMT_CENTER);m_listAll.SetColumnWidth(0, 200);m_listAll.SetColumnWidth(1, 120);m_listAll.SetColumnWidth(2, 250);char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));setlocale(LC_CTYPE, "chs");//设置地区语言为中文CStdioFile file;file.Open("BatInfo.txt",CFile::modeRead);CString s;int n=0;//控制行数,具体你自己定while (TRUE == file.ReadString(s)){if (s.Find(";") == -1 && s.GetLength() <= 4)continue;else{char dst[10][80];char *pBuff = s.GetBuffer(0);split(dst, pBuff, ",");m_listAll.InsertItem(n, dst[0]);m_listAll.SetItemText(n, 1, dst[1]);m_listAll.SetItemText(n, 2, dst[2]);n++;}}setlocale(LC_CTYPE, old_locale);free(old_locale); //还原语言地区设置return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}(2)此处是浏览文件按钮点击事件void CFileCopyDlg::OnBnClickedButton1(){CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "All Files (*.*)|*.*||");if (dlg.DoModal() == IDOK){GetDlgItem(IDC_STATIC)->SetWindowTextA(dlg.GetPathName());SFilePath = dlg.GetPathName();FileName = dlg.GetFileName();}}(3)此处是备份按钮点击事件void CFileCopyDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码CFileDialog FileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);FileDlg.m_ofn.lpstrInitialDir = "c:\\";if (FileDlg.DoModal() == IDOK){CTime t = CTime::GetCurrentTime();string time = "";stringstream ssY;stringstream ssM;stringstream ssD;int year = t.GetYear();int Month = t.GetMonth();int Day = t.GetDay();string strY="";string strM="";string strD="";CString CSFilePath = "";CString COFilePath = "";ssY << year;ssY >> strY;ssM << Month;ssM >> strM;ssD << Day;ssD >> strD;time = strY + "年" + strM + "月";time += strD + "日";OFilePath = FileDlg.GetPathName();CSFilePath = SFilePath.c_str();COFilePath = OFilePath.c_str();Tranfile(CSFilePath.GetBuffer(0), COFilePath.GetBuffer(0));ofstream outfile;outfile.open("BatInfo.txt",ios::app);outfile << FileName + "," + time + "," + OFilePath<< endl;outfile.close();m_listAll.DeleteAllItems();char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));setlocale(LC_CTYPE, "chs");//设置地区语言为中文CStdioFile file; file.Open("BatInfo.txt", CFile::modeRead);CString s;int n = 0;//控制行数,具体你自己定while (TRUE == file.ReadString(s)){if (s.Find(";") == -1 && s.GetLength() <= 4)continue;else{char dst[10][80];char *pBuff = s.GetBuffer(0);split(dst, pBuff, ",");m_listAll.InsertItem(n, dst[0]);m_listAll.SetItemText(n, 1, dst[1]);m_listAll.SetItemText(n, 2, dst[2]);n++;}}setlocale(LC_CTYPE, old_locale);free(old_locale); //还原语言地区设置}//CDialogEx::OnOK();}(4)备份功能void CFileCopyDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码CString SPath;CString OPath;int nId;//首先得到点击的位置POSITION pos=m_listAll.GetFirstSelectedItemPosition();if(pos==NULL){MessageBox("请至少选择一项","提示",MB_ICONEXCLAMATION);return;}//得到行号,通过POSITION转化nId=(int)m_listAll.GetNextSelectedItem(pos);//得到列中的内容(0表示第一列,同理1,2,3...表示第二,三,四...列)SPath=m_listAll.GetItemText(nId,2);OPath=m_listAll.GetItemText(nId,3);Tranfile(SPath.GetBuffer(0), OPath.GetBuffer(0));MessageBox("还原成功");}五、测试、调试过程1.上机过程中出现的问题及其解决方案(1)问题:刚开始不知道选择文件对话框中是怎么出来的后来解决方案:百度找了一下(2)问题:不知道如何给ListControl控件动态绑定数据解决方案:百度了一下2.完成结果:(1)浏览文件按钮功能(2)列表显示详细信息功能(3)备份按钮功能(3)完成保存功能(4)还原功能六、结论与体会这次实验让我对MFC编程加深了了解,让我有了很好我锻炼,在我以后遇到同样问题的时候我就有了更多的经验。