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

合集下载

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

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

面向对象设计原则实验报告1.1实验目的1. 通过实例深入理解和掌握所学的面向对象设计原则。

2.熟练使用面向对象设计原则对系统进行重构。

3.熟练绘制重构后的结构图(类图)。

1.2实验内容1.在某绘图软件中提供了多种大小不同的画笔(Pen),并且可以给画笔指定不同颜色,某设计人员针对画笔的结构设计了如图1-1所示的初始类图。

通过仔细分析,设计人员发现该类图存在非常严重的问题,即如果需要增加一种新的大小或颜色的笔,就需要增加很多子类,例如增加一种绿色的笔,则对应每一种大小的笔都需要增加一支绿色笔,系统中类的个数急剧增加。

试根据依赖倒转原则和合成复用原则对该设计方案进行重构,使得增加新的大小或颜色的笔都较为方便,请绘制重构之后的结构图(类图)。

2.在某公司财务系统的初始设计方案中存在如图1-2所示的Employee类, 该类包含员工编号(ID),姓名(name),年龄(age).性别(gender)、薪水(salary)、每月工作时数( workHoursPerMonth),每月请假天数(leaveDaysPerMonth)等属性。

该公司的员工包括全职和兼职两类,其中每月工作时数用于存储兼职员工每个月工作的小时数,每月请假天数用于存储全职员工每个月请假的天数。

系统中两类员工计算工资的万法也不一样,全职员工按照工作日数计算工资﹐兼职员工按照工.作时数计算上资﹐内此在 Employee 类中提供了两个方法calculateSalaryByDays()和calculateSalaryByHours(),分别用于按照大数和时数计算工资,此外,还提供了方法displaySalary()用于显示工资。

试采用所学面向对象设计原则分析图1-2中Employee类存在的问题并对其进行重构绘制重构之后的类图。

3.在某图形界面中存在如下代码片段,组件类之间有较为复杂的相互引用关系:如果在上述系统中增加一个新的组件类,则必须修改与之交互的其他组件类的源代码,将导致多个类的源代码需要修改。

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

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

《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 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.编写一个函数,将整数得各位数字反序输出,编写另一个函数实现正序输出。

例如整数352867,反序输出7、6、8、2、5、3,正序输出3、5、2、8、6、7、2.定义一组重载函数,分别计算2个、3个、4个参数中得最大值3.求出1~100之间得质数,并存放在vector容器中。

ﻬ实验结果题目一:#include<iostream〉usingnamespace std;voiddiamond(intn,charc1,char c2) {int i,j;ﻩfor(i=1;i〈=n;i++){ﻩﻩcout<<"\n\t”;ﻩfor(j=1;j<=n-i;j++)cout<〈c1;ﻩfor (j=1;j<=2*i-1;j++)ﻩcout〈〈c2;ﻩfor (j=1;j〈=n—i;j++)cout<<c1;ﻩﻩ}ﻩfor(i=n-1;i〉0;i-—){ﻩcout<〈"\n\t";ﻩfor(j=1;j<=n-i;j++)ﻩﻩﻩcout<<c1;ﻩfor (j=1;j<=2*i—1;j++)ﻩﻩﻩcout<<c2;ﻩﻩfor(j=1;j<=n—i;j++)ﻩﻩcout<<c1; ﻩ}ﻩcout〈<endl; }int main(){diamond(9,'','*’);ﻩdiamond(20,'#',’ ');cin、get(); }题目二:#include〈iostream〉#include<vector>using namespacestd;voidscan(vector<int〉&a,int);int search(vector<int>&a,vector<int> &b,int);void print(constvector〈int> &b,int);int main(){ﻩint n,m;ﻩcout〈〈"How much numbers will youenter:”;cin>>n;vector <int〉 a(n),b(n);scan(a,n);m=search(a,b,n);ﻩprint(b,m+1);cin、get();cin、get();return 0;}void scan(vector<int>&a,int n){ﻩcout〈<”Enter the numbers:\n";ﻩfor(int i=0;i〈n;i++)cin>〉a[i];}int search(vector<int〉&a,vector<int>&b,int i){intn,m;ﻩbool flag=0;ﻩb[0]=a[0];for(n=1;n<i;n++){for(m=0,flag=0;b[m];m++){ﻩﻩif(b[m]==a[n])flag=1;}if(!flag)b[m]=a[n];}ﻩreturn m;}void print(const vector<int>&b,int n){ cout<〈"Print the number:";ﻩfor(inti=0;i〈n;i++) cout<<b[i]〈<”\t”;}题目三:#include<iostream〉#include〈vector〉usingnamespace std;template〈class T>voidscan(vector〈T〉 &,int);template<classT>void Max(vector〈T〉 &,int);template<class T>void Min(vector<T>&,int);int main(){ﻩintn,m;ﻩcout〈<”How much numbers will you enter a:”;cin>>n;ﻩvector 〈int> a(n);scan(a,n);ﻩMax(a,n);ﻩMin(a,n);ﻩstd::cout<<"Pleaseenter the name:";ﻩﻩgetline(std::cin,name);std::cout〈〈”Please enter the sex:";ﻩstd::cin、get(sex);ﻩstd::cout〈<"Please enter the classand height:";ﻩﻩstd::cin>〉cla>>hei;std::cin、get();student[a]、sca(name,sex,cla,hei);}float sum=0;for(int a=0;a<n;a++){ﻩsum=student[a]、sum(sum);}for(int a=0;a〈n;a++)ﻩstudent[a]、show();std::cout〈<"The average height is "<〈sum/n<<std::endl; ﻩstd::cin、get();ﻩreturn 0;}附加题1:。

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

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

课程编号:面向对象程序设计实验报告实验1一.实验目的:加强我自己使用继承来实现Java类的能力二.实验内容:1.首先根据要求实现超类Product类。

以利于以后商品Coffee类,CoffeeBrewer类,Orderitem类的继承。

2.根据要求实现Coffee类,CoffeeBrewer类,Orderitem类。

3.实现如下类图:4.三.实验步骤:1.首先根据要求设计出一下的类图。

5.不同的类的具体要求如下(都要继承超类Product类)。

(1)C lass Producta.含有的变量:code;description;price;b.含有的方法:.public Product(String code,Stringdescription,double price)public String getCode().返回实例变量的code.∙public String getDescription().返回实例变量的variable description.∙public double getPrice().返回实例变量的 price.∙boolean equals(Object object). 重写方法 equals i在类Object里,如果他们的code是相等的,则产品对象是相等的。

∙String toString(). 重写方法toString 在类Object里.返回的格式如下:∙code_description_pricec.写完具体如下:publicclass Product {private String code;private String description;privatedouble price;public Product(String code,String description,double price) {this.code=code;this.description=description;this.price=price;}public String getCode() {return code;}public String getDescription() {return description;}publicdouble getPrice() {return price;}@Overridepublicboolean equals(Object a) {if (a instanceof Product) {if (((Product) a).code==this.getCode()) {returntrue;}else {returnfalse;}}returnfalse;}@Overridepublic String toString() {return (this.getCode()+"_"+this.getDescription()+"_"+this.getPrice());}}(2)c lass Coffeea.含有的变量:∙origin.∙roast.∙flavor.∙aroma.∙acidity.∙body.b.含有的方法:public Coffee(String code,String description,Doubleprice,String origin,String roast,String flavor,String aroma,String acidity,String body);∙public String getOrigin().返回实例变量的origin.∙public String getRoast().返回实例变量的roast.∙public String getFlavor().返回实例变量的flavor.∙public String getAroma().返回实例变量的aroma.∙public String getAcidity().返回实例变量的acidity.∙public String getBody().返回实例变量的body.∙String toString(). 重写方法 toString 在类Object里. 返回如下格式::code_description_price_origin_roast_flavor_aroma_acidi ty_bodyc.写完具体如下:publicclass Coffee extends Product {private String origin;private String roast;private String flavor;private String aroma;private String acidity;private String body;public Coffee(String code,String description,Double price,Stringorigin,String roast,String flavor,String aroma,String acidity,String body){ super(code, description, price);this.origin=origin;this.roast=roast;this.flavor=flavor;this.aroma=aroma;this.acidity=acidity;this.body=body;}public String getOrigin() {return origin;}public String getRoast() {return roast;}public String getFlavor() {return flavor;}public String getAroma() {return aroma;}public String getAcidity() {return acidity;}public String getBody() {return body;}@Overridepublic String toString() {returnthis.getCode()+"_"+this.getDescription()+"_"+this.getPrice()+"_"+thi s.getOrigin()+"_"+this.getRoast()+"_"+this.getFlavor()+"_"+this.getAroma()+"_"+ this.getAcidity()+"_"+this.getBody();}}(3)c lass CoffeeBrewera.含有的变量:model.∙waterSupply.∙numberOfCups.b.含有的方法:∙public CoffeeBrewer(String initialCode,∙ String initialDescription,∙ double initialPrice,∙ String initialModel,∙ String initialWaterSupply,∙ int initialNumberOfCups)∙public String getModel()。

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

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

《面向对象程序设计》实习报告班级:禹口子肓:姓名:指导教师:实习时间:一•实习目的1. 学习怎样启动和退出VB,熟悉VB的工作环境2. 掌握基本控件的重要属性、事件;3 .熟练掌握在窗体上建立上述控件的操作方法;4 .熟练掌握事件过程代码的编写;5. 掌握建立基于图形界面的应用程序的过程6. 学习用属性窗口设置对象属性及用代码设置对象属性的方法。

7. 学习如何用对象(窗体和控件)建立界面及在代码编辑器中输入程序代码的基本操作。

8 .基本掌握用VB开发应用程序的一般步骤。

二.程序设计实验1基本算法练习1 •编写程序求“自己学号后3位到500 ”以内的所有素数及自然数对M 卜弭■网的自胳軌吋2.编写程序“计算最大公约数和最小公倍数”实验:计算3个数的最大公约数和最小公倍数,并以最小公倍数作为总金额,计算人民币各种票额的张数3 plLredH’」血1L ・・■—- LJTJ -u^- «L 371583726 112225J3 1^49 17 3 7-993 4 82604 8 3 11213334 9 4-J7J7JI7 3 3 1 3 1 J T 59571504S 112JJ14 <-4-yr25ft- w 1】■毎 HI ”曲it 之沪-ui 砒・b 4材”榔裝丈4- >J» M*乌 1 H, *■- IT* L 时鸟 酣*,柿豪也卜-Mb kltK 3□"贰it 孔尹- LU^ 1H, t +*= J1< lU* tJ7F A«4— 14, l Jlij 卄畀衬邕i ■•- ili ili 乌 W 2■与 1*1,钳丸” >-JR I 艸勺 221, +— 1^1i«At 14打林辕也卜-m i«M 呱更|t*妾-KU l«i 阿•"曲 4(4 ISTtr 117h >- 5?t04^ l”.・筆鼻JH 讣“粤?(J hAH < •- Ml 1^0 t in p *m<+— 314 r. >- <<l ■ 4»4 柿気丸報乏丰-利& iM^ »i讣■由2H”声做屯4-忙0 lil^r43 -百我* +»-冊、 订・匕II 』,■**<>- 41* -2 - - ----- - ....... - - - ....... .#x*tAFJfJF £41上鼻 £>/x 倉览1 <屯<屯<也i.i <<也足走也xi.<w 也<也足*也屯也也M*.£lttt«tvvK 修毂K«*t*«*tfrttft 戡最v«t.*stft 鸭・fl ・n "MK<Rfl*MAA ft A A A A 两A ZM C希优[? 4 1 L 9 6-f 7 s 1456-6 1-4-7379777995 9 ?6 I 5 UT 37 2 7 J 3 3 4 45*5=2 56*6=36 25*25-625 7^*76=57764 .编写程序“百钱百鸡问题”实验:编写程序解决百钱买百鸡问题:公鸡5元/只,母鸡3元/只,小鸡一元3. 编写程序“歌德巴赫猜想及守形数”luJ 屯—I 虹邑:i^o 绿邑:120-200间为偶数命解买3只,用100元买100只鸡,问有哪些购买方案?实验2常用统计练习1. 成绩统计实验:利用文本框作为数据的输入和输出,产生数学、语文、英语、计算机等4门课程的成绩2 .字符统计实验:随机产生200个“32到自己学号后3位”且小于128的随机数,将其转换成相应字符,形成一段统计字符。

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个正整数中的最大数。

面向对象程序设计实验一及实验报告样式

面向对象程序设计实验一及实验报告样式

《面向对象程序设计》实验一实验报告1 实验目的:(1)了解在VC++、C-free中如何编辑、编译、连接和运行一个C++程序;(2)掌握声明类的方法,类和类的成员的概念以及定义对象的方法(3)了解多文件的C++程序结构2 实验任务(1)输入两个整数,将它们按由大到小的顺序输出。

要求使用变量的引用;(2)编写一个程序,将两个字符串连接起来,结果取代第一个字符串;(3)声明Animal 类,数据成员有age,成员函数有SetAge()等。

首先把数据成员声明为公有的,在main()函数中访问,再把它改为私有的,指出在main()函数中访问会出现怎样的情况,如何避免?该程序需要在同一个文件中分别给出类的声明、类的实现、类的演示每部分的代码。

(4)声明日期类,数据成员有year、month、day,成员函数有输出日期、加一天等。

练习使用多文件结构来组织程序。

3 程序清单实验一:#include"iostream"using namespace std;int main(){int i,j;cout<<"input two number"<<endl;cin>>i>>j;swap(i,j);cout<<i<<","<<j<<endl;return 0;}void swap(int &a,int &b){int temp;temp=a;a=b;b=temp;}实验二:#include"iostream"#include"string"using namespace std;int main(){string string1,string2;cout<<"please input two string:";cin>>string1>>string2;string1=string1+string2;cout<<string1<<endl;return 0;}实验三:4 运行结果图1.1 任务一运行结果图2.1任务二运行结果5 总结或感悟(对运行结果所作的分析以及本次调试程序所取得的经验。

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

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

面向对象程序设计(C++)实验报告姓名:刘九州学院:数学与计算机学院班级:10级计算机大类三班学号:100511314实验5 单继承一、实验目的1.掌握派生的类别与方式;2.了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制;3. 掌握继承中构造函数和析构函数的调用过程。

二、实验内容及步骤1.给出一个Document类,从Document派生出Book类,增加PageCount变量。

在主函数中进行测试,创建Book类对象并进行初始化,输出书名和页数。

2.设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的值,其它成员函数根据需要添加,在主函数中进行测试。

3.设计一个人员类person和一个日期类date,由人员类派生出学生类student和教师类professor,学生类和教师类的数据成员birthday为日期类。

在主函数中进行测试。

三、实验源程序和运行结果实验(一)源程序:#include<iostream>#include<string>using namespace std;class Document{public:Document(){};~Document();Document(char*name);char *Name;void PrintNameOf();};Document::Document(char*name){Name=new char[strlen(name+1)];strcpy(Name,name);}Document::~Document(){delete []Name;}void Document::PrintNameOf(){cout<<Name<<endl;}class Book:public Document{public:int PageCount;Book(char *a,int b):Document(a){PageCount=b;}};void main(){char BookName[20];int n;cout<<"请输入书名:"<<endl;cin>>BookName;cout<<"请输入书的页数:"<<endl;cin>>n;Book b(BookName,n);cout<<"书名为:"<<<<endl;cout<<"页数为:"<<b.PageCount<<endl;}运行结果:实验(二)源程序:#include<iostream>#include<string>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class student:public person{public:student(){xh=0;}student(int d){xh=d;}student(string c,int a,int d):person(c,a){xh=d;}~student(){}void setxh(int d){xh=d;}int getxh(){return xh;}private:int xh;};void main(){string c;cout<<"请输入学生的姓名:\n";cin>>c;cout<<"请输入学生的年龄:\n";int a;cin>>a;cout<<"请输入学生的学号:\n";int d;cin>>d;student n(c,a,d);cout<<"请输入学生的姓名为:"<<n.getname()<<endl;cout<<"请输入学生的年龄为:"<<n.getage()<<endl;cout<<"请输入学生的学号为:"<<n.getxh()<<endl; }运行结果:实验(三)源程序:#include<iostream>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class date{public:date(){year=2011;month=12;day=17;}~date(){}date(int y,int m,int d){year=y;month=m;day=d;}int getyear(){return year;}int getmonth(){return month;}int getday(){return day;}private:int year;int month;int day;};class student:public person{public:student(){// birthday.date();}student(int y,int m,int d):birthday(y,m,d){}~student(){}void getbirthday(){cout<<"学生的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};class teacher:public person{public:teacher(){// birthday.date();}teacher(int y,int m,int d):birthday(y,m,d){//birthday.date(y,m,d);}~teacher(){}void getbirthday(){cout<<"老师的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};void main(){cout<<"请输入学生的生日:"<<endl;int y,m,d;cin>>y>>m>>d;student s(y,m,d);cout<<"请输入老师的生日:"<<endl;cin>>y>>m>>d;teacher t(y,m,d);s.getbirthday();t.getbirthday();}运行结果:实验6 多继承一、实验目的1.掌握多基继承的使用,访问方法;2.理解类层次中访问规则;3.掌握虚基类的定义及使用。

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

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

《面向对象程序设计实验》实验一、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

面向对象程序设计实验报告1
/*结果都是什么字符?,也就是说字符可以自由的表示成几种形式?*/
printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);
/*看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符*/
/*字符型数据参与算术运算*/
c=c1+32; /*字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数
if(a[j] < a[j + 1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
int result = 0;
int cou = 100;
for(i = 0;i < 3;i++)
{
result += a[i] * cou;
cou /= 10;
}
cout<<"the result is :"<<result<<endl;
main()
{
int x=010,y=10,z=0x10; /*整型数据表示*/
char c1='M',c2='\x4d',c3='\115',c4=77,c; /*字符型数据表示*/
/*整型数据的输出*/
printf("x=%o,y=%d,z=%x\n",x,y,z);
/*数据以原进制输出,注意是否有前导0或0x */
c++;
else
if(score>=60)
d++;
else e++;

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

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

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

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

二、实验目的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. 检查输出结果,确保图书管理系统的功能正常运行。

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

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

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

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

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

2022面向对象程序设计实验报告范文面向对象(C++)程序设计实验1实验名称:类和对象的定义实验学时:2学时实验目的:熟练掌握C++中类和对象的基本概念。

熟练掌握类和对象的定义方法。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:1.编写程序,定义一个Peron类,数据成员有:name[]、age、e某、core;成员函数有diplay(),并定义两个Peron类的对象,要求将两个对象的name[]、age、e某、core值通过diplay()函数显示出来。

写出实验报告,并分析结果。

注意事项:实验中注意数组的赋值问题。

面向对象(C++)程序设计实验2实验名称:构造函数和析构函数实验学时:2学时实验目的:熟练掌握C++中构造函数和析构函数的基本概念。

熟练掌握构造函数和析构函数在程序中的使用方法。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:1.编写程序,定义一个Peron类,数据成员有:name[]、age、e某、core;成员函数有diplay(),并定义两个Peron类的对象,将两个对象的name[]、age、e某、core值通过diplay()函数显示出来。

要求用构造函数对数据成员初始化,并用析构函数表示两个对象的消失。

写出实验报告,并分析结果。

注意事项:实验中注意构造函数与析构函数的特点。

面向对象(C++)程序设计实验3实验名称:引用和复制构造函数实验学时:2学时实验目的:熟练掌握C++中引用的基本概念和用法。

熟练掌握复制构造函数在程序中的运用。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:1.编写程序:使用两个参数(一个引用参数,一个传值参数),在函数调用中使两个形参值各扩大10倍,输出各形参和实参值,并分析输出结果。

2.完善下列程序:#includeclaTP{public:TP(int某,inty){某=某;Y=y;}TP(TP&p);~TP(){cout<intdip某(){return某;}intdipY(){returnY;}private:};voidmain(){TPP1(5,7);TPP2(P1);cout<在复制构造函数中要输出两个私有成员的值及“复制构造函数被调用!”字样,并分析输出结果。

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

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

面向对象程序设计》C实验报告《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习院(系):课程名称:面向对象程序设计教师签名:实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。

2.理解C++程序结构的特点。

3.熟悉C++程序基本的输入和输出操作。

4.掌握C++数据类型常量和变量以及修饰符的使用方法。

5.掌握函数定义、函数调用和函数说明的方法。

6.熟悉作用域运算符的功能和基本使用方法。

7.掌握C++内存的动态分配与释放方法。

8.理解引用的概念,掌握引用的使用方法。

实验内容和步骤1. 调试如下的代码并回答问题。

#include <iostream.h>void main(){//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;}(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。

(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。

C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。

Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。

在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。

2. 单步调试如下的代码并回答问题。

#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;}(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。

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

《面向对象程序设计》课程综合性实验报告
(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)的方法来访问和修改属性。

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

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

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

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

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

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

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

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

实验报告-数据库编程

实验报告-数据库编程

《面向对象程序设计》实验报告合肥院学院计算机科学与技术系实验名称____Java与数据库连接_________日期______12.14________姓名/学号张慧 / 1304091018 专业/班级软件工程(1)班指导老师吴晓琴成绩_______________________________一、实验目的:(详见指导书,宋体小四)熟悉SQL命令集。

学会编写加载数据库驱动和连接数据库的Java程序。

应用Java.sql包中的类和接口编写操作数据库的应用程序二、实验要求:(详见指导书,宋体小四)1. 通过实验掌握SQL命令的使用;2. 使用J2SDK中提供的JDBC-ODBC桥连接数据库;3. 使用的数据库系统不受限制。

4.调试运行程序,观察输出结果。

5.写出实验报告。

三、实验内容及过程:(宋体小四)实验内容:完成学生信息管理系统:编程实现如下功能:在数据库中建立一个表,表名为学生,其结构为:编号、姓名、性别、年龄、JAVA语言、数据结构、微机原理、总分。

在表中输入多条记录。

将表每条记录按照总分大到小的顺序显示在屏幕上。

要求有增加、删除、查找等功能(要求图形界面)实验步骤:1、首先设计一个图形界面2、首先建立一个数据库,在此基础上通过编程实现一下功能:在数据库中建立一个表,表名为职工,其结构为:编号、姓名、性别、年龄、JAVA语言、数据结构、微机原理、总分。

1)在表中输入多条记录。

2)将每条记录按照总分大到小的顺序显示在屏幕上。

3)查找并显示姓名为“张三”的记录四、实验总结:(简单、准确的总结本次实验的主要内容,个人收获)通过本次试验,我对于数据库编程的体会更加深刻了。

原来都只是理论上的学习,操作的时候还真无从下手。

实验做完,还是有很多不懂得地方,希望能够尽快把问题解决好。

六、源代码及运行结果1、package java_sqlserver_TextWeb;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Student_select {public static void main(String[] args) throwsClassNotFoundException,ClassCastException, SQLException {// TODO Auto-generated method stub//创建空连接Connection conn=null;//加载数据库驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//建立数据库连接conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;Database Name=Student_Demo", "sa", "123456");//创建数据库语句String str=" select * from Student";//执行语句Statement stmt = (Statement) conn.createStatement();ResultSet rs = ((java.sql.Statement) stmt).executeQuery(str);//遍历结果集while(rs.next()){int id=rs.getInt(1);String name=rs.getString(2);String sex=rs.getString(3);int age=rs.getInt(4);String course=rs.getString(5);int score=rs.getInt(6);System.out.println(id+"\t"+name+"\t"+sex+"\t"+age+"\t"+course+"\t"+score);}//关闭数据库连接if(conn!=null){stmt.close();conn.close();}}}2、package java_sqlserver_TextWeb;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Student_insert {public static void main(String[] args) {// TODO Auto-generated method stubStudent_insert myJdbc=new Student_insert();myJdbc.StatementExecSQLInsertUpdateDB();}void StatementExecSQLInsertUpdateDB(){try{Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=Student_Demo";Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");Connection con=DriverManager.getConnection(url,"sa","123456"); Statement stmt=con.createStatement();System.out.print("InsertDateBase----StateMent.executeUpdate()\n");//int RecordRowNum=stmt.executeUpdate("insert intoStudent(id,name,email) values(1304091006,'李金鸣','lijinming@')");int RecordRowNum=stmt.executeUpdate("insert intoStudent(id,name,sex,age,course,score) values(1304091006,'李金鸣','男',21,'java',67)");System.out.println("The Record Row Num Is "+RecordRowNum);ResultSet rs=stmt.executeQuery("select * from student");while(rs.next()){int id=rs.getInt("id");String name=rs.getString("name");String email=rs.getString(3);System.out.println(id+"\t"+name+"\t"+email);}stmt.close(); //must closecon.close();}catch(SQLException e){System.out.println("SQLState:"+e.getSQLState());System.out.println("Message:"+e.getMessage());System.out.println("Vendor:"+e.getErrorCode());}catch(ClassNotFoundException e){System.out.println(e);} }}3、package java_sqlserver_TextWeb;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Student_update {public static void main(String[] args){// TODO Auto-generated method stubStudent_update myJdbc=new Student_update();myJdbc.StatementExecSQLUpdateDBRecord();}void StatementExecSQLUpdateDBRecord(){try{//加载数据库驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//建立数据库连接Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=Student_Demo";Connection con=DriverManager.getConnection(url,"sa","123456");//执行语句Statement stmt=con.createStatement();// 第29行易出错 executeUpdate 是 int 类型String sql="update Student set name='钱五' where id=1304091001";int RecordRowNum=stmt.executeUpdate(sql);ResultSet rs=stmt.executeQuery("select * from Student");//遍历结果集while(rs.next()){int id=rs.getInt("id");String name=rs.getString("name");String email=rs.getString(3);System.out.println(id+"\t"+name+"\t"+email);/* int id=rs.getInt(1);String name=rs.getString(2);String sex=rs.getString(3);int age=rs.getInt(4);String course=rs.getString(5);int score=rs.getInt(6);System.out.println(id+"\t"+name+"\t"+sex+"\t"+age+"\t"+course+"\t"+score); */}stmt.close(); //must close;con.close();}catch(SQLException e){System.out.println("SQLState:"+e.getSQLState());System.out.println("Message:"+e.getMessage());System.out.println("Vendor:"+e.getErrorCode());}catch(ClassNotFoundException e){System.out.println(e);}}}4.package java_sqlserver_TextWeb;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Student_delete {public static void main(String[] args) {// TODO Auto-generated method stubS tudent_delete myJdbc=new Student_delete();myJdbc.StatementExecSQLInsertUpdateDB();}void StatementExecSQLInsertUpdateDB(){try{String url="jdbc:sqlserver://localhost:1433;DatabaseName=Student_Demo"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");Connection con=DriverManager.getConnection(url,"sa","123456");Statement stmt=con.createStatement();System.out.print("Insert DateBase----StateMent.executeUpdate()\n");int RecordRowNum=stmt.executeUpdate("delete from Student where name='钱五'");System.out.println("The Record Row Num Is "+RecordRowNum);ResultSet rs=stmt.executeQuery("select * from student");while(rs.next()){int id=rs.getInt("id");String name=rs.getString("name");String email=rs.getString(3);System.out.println(id+"\t"+name+"\t"+email);package java_sqlserver_TextWeb;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Student_update {public static void main(String[] args){// TODO Auto-generated method stubStudent_update myJdbc=new Student_update();myJdbc.StatementExecSQLUpdateDBRecord();}void StatementExecSQLUpdateDBRecord(){try{//加载数据库驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//建立数据库连接Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=Student_Demo";Connectioncon=DriverManager.getConnection(url,"sa","123456");//执行语句Statement stmt=con.createStatement();// 第29行易出错 executeUpdate 是 int 类型String sql="update Student set name='钱五' whereid=1304091001";int RecordRowNum=stmt.executeUpdate(sql);ResultSet rs=stmt.executeQuery("select * from Student");//遍历结果集while(rs.next()){int id=rs.getInt("id");String name=rs.getString("name");String email=rs.getString(3);System.out.println(id+"\t"+name+"\t"+email);/* int id=rs.getInt(1);String name=rs.getString(2);String sex=rs.getString(3);int age=rs.getInt(4);String course=rs.getString(5);int score=rs.getInt(6);System.out.println(id+"\t"+name+"\t"+sex+"\t"+age+"\t"+course+"\t"+score); */}stmt.close(); //must close;con.close();}catch(SQLException e){System.out.println("SQLState:"+e.getSQLState());System.out.println("Message:"+e.getMessage());System.out.println("Vendor:"+e.getErrorCode());}catch(ClassNotFoundException e){System.out.println(e);}}}}stmt.close(); //must closecon.close();}catch(SQLException e){System.out.println("SQLState:"+e.getSQLState());System.out.println("Message:"+e.getMessage());System.out.println("Vendor:"+e.getErrorCode());}catch(ClassNotFoundException e){System.out.println(e);}}}注:报告内容不得雷同,否则视为抄袭,无成绩。

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

面向对象程序设计实验报告
using System;
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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成 绩
评阅人
重庆邮电大学
课程设计实验报告
班级:1301415
姓名:全立学号:2014源自13976指导老师: 张化川、宋琦
课程名称:面向对象程序设计
实验时间:2015年4月23日
实验地点:数字图书馆负一楼B131
实验
名称
实验一 类和对象(1)
实验
目的
掌握类的定义和使用以及类对象的声明和使用方法,理解具有不同访问属性的成员的访问方式
MyClass obj1(1,3),obj2(5,8);
Step4.运行程序查看错误列表为0个错误,程序正确运行。
2、定义一个矩形类,内有保护数据成员长和宽(值范围在1~30),另有成员函数:取长,取宽。编制应用程序,创建矩形对象,并打印矩形的形状。
实验步骤:
Step1.首先定义一个Rect类,含有2个私有数据成员length和width。3个成员函数
实验
内容

步骤
1、修改程序,使之正确运行。
实验步骤:
Step1.首先将代码输入然后试运行,查看错误列表
Step2.修改错误,首先将MyClass类中public中的MyClass(inta=0,b=0)改为MyClass(inta,intb),然后在Print()加上void。
Step3.在主函数中删去obj.x=1; obj.y=3;然后将MyClass1obj1,obj2(5,8)改为
Step2.在类定义的外部定义成员函数voidRect::Print()并且使长和宽(值范围在1~30)利用for循环实现矩形形状,定义构造函数Rect::Rect
Step3.在主函数中创建对象Rect obj1(6,15)并且调用成员函数print()
Sept4.运行程序,成功打印矩形的形状
实验
结果
1、正确运行的代码、运行结果截图
2、矩形类及对象的代码、运行结果截图
实验
结论
本次实验,我通过类封装数据和函数和翻阅书籍,询问老师完成了实验内容。实验过程中,遇到了参数传递问题,使用了重载函数知识,解决了参数问题,还有为什么 不能写为 的问题没有解决。通过实验,了解了构造函数知识,掌握了一个文件中实现类定义和其成员函数定义和定义类的知识。
相关文档
最新文档