面向对象程序设计大作业 2

合集下载

面向对象程序设计作业二

面向对象程序设计作业二

对Win32程序结构的认识:
对消息的处理是我们Win32程序的根本,因而我们就从消息的生命周期来着手讲解, 消息生命周期可以简单的概括成几个过程:
a. 消息产生: Windows 监控所有的具有输入事件硬件设备,当系统收到设备输入事件时,Windows 将对应的事件转成消息,从而消息就产生了;
b. 消息投递: 每个消息都有一个目标窗体接收,而目标窗体应用程序都会有消息队列,当Windows 产生消息后就直接投递到其消息队队中,从而实现了Windows 消息到应用程序的传递;
c. 消息处理: 应用程序自身会不断的从自己的消息队列中获取消息并进行消息转换以及消息分发给Windows,由Windows 回调应用程序的消息处理函数,每一个消息必须被处理,若用户发现自己不关心的消息时并系统去处理,从而实现了用户的行为得到了交互。

吉林大学2020大作业-2面向对象程序设计

吉林大学2020大作业-2面向对象程序设计

吉林大学2020大作业-2面向对象程序设计一、1.类型转换:每个函数都可以强制将一个表达式转换成某种特定数据类型。

自动(隐式)类型转换不会导致数据丢失。

数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。

变量是用来存储值的所在处;它们有名字和数据类型。

变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。

在声明变量时也可指定它的数据类型。

所有变量都具有数据类型,以决定能够存储哪种数据。

2.调用;调用是将程序的执行交给其他的代码段,通常是一个子例程,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。

3.用户界面:用户界面(User Interface)是指对软件的人机交互、操作逻辑、界面美观的整体设计。

好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。

4.预处理:程序设计语言的预处理的概念:在编译之前进行的处理。

C语言的预处理主要有三个方面的内容:1.宏定义;2.文件包含;3.条件编译。

预处理命令以符号“#”开头。

5.语句;一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成。

6.图标:图标是图纸标题栏的简称。

图标的作用是表示本张图纸的类别、图名、项目名称、图纸编号等,以便从图纸目录中能迅速查找到所需要的图纸。

7.派生;指在词根上加上派生词缀以构成新词的方法。

8.警告:警告是一种警戒性的纪律制裁方式,也是最轻微的一种制裁方式9.数组:所谓数组,是有序的元素序列。

若将有限个类型相同的变量的集合命名,那么这个名称为数组名。

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

10.全局变量:全局变量是编程术语中的一种,源自于变量之分。

变量分为局部与全局,局部变量又可称之为内部变量。

面向对象程序设计实验(二)2024

面向对象程序设计实验(二)2024

面向对象程序设计实验(二)引言概述:本文档旨在介绍面向对象程序设计实验(二)的相关内容。

实验(二)主要涉及面向对象程序设计中的基本概念和实践技巧。

通过本次实验,学生可以进一步巩固对于面向对象程序设计的理解和应用能力。

正文内容:1. 类与对象1.1 定义类和对象的基本概念1.2 区分类和对象的特点和属性1.3 类的成员变量与成员函数的关系1.4 类的继承与派生的用法和作用1.5 类型转换和类型检查的重要性和技巧2. 封装和继承2.1 封装的原则和目的2.2 不同类型的访问控制修饰符的应用与实践2.3 继承的基本概念和实现方法2.4 多态性的应用与实例解析2.5 接口与抽象类的定义和使用3. 异常处理3.1 异常处理的基本原则和作用3.2 异常的分类与处理方式3.3 异常处理的语法和使用方法3.4 异常处理的常见问题和解决策略3.5 异常处理的最佳实践和注意事项4. 面向对象设计的思想和原则4.1 面向对象设计的核心概念和思维方式4.2 SOLID设计原则的介绍和实践应用4.3 设计模式的分类和使用场景4.4 常用设计模式的详细介绍和实例应用4.5 面向对象设计的常见问题和解决策略5. 实践与案例分析5.1 针对实验要求的代码设计与实现5.2 对实验结果的分析和评价5.3 面向对象程序设计思想在实验中的运用和效果5.4 实际项目中的面向对象设计相关问题的解决方法5.5 实验总结和下一步改进计划总结:通过本次面向对象程序设计实验(二),学生能够更好地理解和应用面向对象的基本概念和设计原则,并能够灵活运用相关技巧进行程序开发和问题解决。

实验的实践部分更加加深了对面向对象程序设计的理解和实际应用能力的培养。

这些知识和技能对于学生未来的软件开发和项目管理工作具有重要意义。

NET面向对象程序设计第2次作业-继承多态

NET面向对象程序设计第2次作业-继承多态

1、假设你正着手开发两个软件项目,两个程序中分别包含下面的类:程序一: Airplane,jet engines,wings,Airplane body,passenger seats和cockpit 程序二:person,student,employee,undergraduate,graduate,secretary,cleaner和director哪一个更适合于使用继承?为什么?另一个程序更适合于使用哪一个概念?2、假设一个类 Animal 有一个公有方法Move.如果Dog类为Animal 的派生类,能按mydog.move( );的形式对Dog类的某个形式调用Move方法吗?即使没有在Dog类中指定此方法,还能调用吗?可以3、Animal类中的Move方法头如下所示: Public void Move(),可以在Dog类中覆盖这一方法吗?为什么?4、Animal还包含一个私有实例变量name。

你能从Dog类的定义内部访问name吗?这是优点还是缺点?5、Animal类还包含一个私有函数成员。

你能从Dog类的定义内部调用此函数吗?6、Animal包含另一个方法,其方法头如下:Protected virtual void MoveAdistance(int distance)一位编程同事在派生类Dog中编写了如下的头来覆盖Animal地方法:Public override int MoveAdistance(double distance)此方法头有几个错误,请找出并纠正。

7、你能防止某个类作为一个基类吗?如果能,如何做?8、为什么从派生类的一个构造函数中调用积累构造函数常常有用?9、根据前面的几个问题,Animal类已经形成一个带一个int类型参数的构造函数。

一位程序员同事用一个构造函数实现了Dog类,而构造函数中并没有显示定义任何构造函数初始化器。

这样做为什么会导致编译器错误?10、Animal类还配备了一个复杂的方法用于返回基本动物细胞的新陈代谢水平。

C++ 面向对象作业二

C++ 面向对象作业二

声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。

Class Mammal{Public:Mammal(){cout<<”call Mammal”<<endl;}~Mammal(){cout<<delete base class <<endl ;l }}Class Dog:public Mammal{Dog(){};~Dog(){}}定义一个国家基类Country,包含国名、首都、人口等属性,派生出省类Province,增加省会城市、人口数量属性Class Country{Public:Char name[20],Char captal[20],Long int Cperson,Public:Country(){};}Class Provice:public Country{Char city[20];Long int Ppeople;Public:Provice();}定义一个车基类Vehicle,含私有成员speed,weight。

派生出自行车类Bicycle,增加high 成员;汽车类Car,增加seatnum成员。

从Bicycle和Car中派生出摩托车类Motocycle。

Class Vehicle{Int speed;Int weight;}Class Bicycle:public Vehicle{Int high;}Class Car:public Vehicle{Int seatnum;}Class Motocycle:public Bicycle,public Car{}建立一个基类Building ,用来存储一座楼房的层数、房间数以及它的总平方英尺数。

建立派生类Housing,继承Building,并存储下面的内容:卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。

奥鹏吉大21年春季《面向对象程序设计》在线作业二_2.doc

奥鹏吉大21年春季《面向对象程序设计》在线作业二_2.doc

1.设 x、 y为已定义的类名,下列声明x类的对象x1的语句中正确的是( )A.static x x1;B.public x x1=new x(int 123);C.y x1;D.xx1=x();【参考答案】: B2.编译并且执行以下代码,会出现什么情况( )。

?public?class?Q{?public?static?void?main(String?argv[]){?int?anar[]=new?int[]{1,2,3};?System.out.println(anar[1]);?}?}A.1B.有错误,数组anar在初始化以前不能正常输出C.2D.有错误,数组的大小没有定义。

【参考答案】: C3.设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )A.3B.3.5C.4D.5【参考答案】: A4.给出如下代码: class test{ private int m; public static voidfun() { // some code... } } 如何使成员变量m 被函数fun()直接访问( )。

A.将private int m 改为protected int mB.将private int m 改为 public int mC.将private int m 改为 static int mD.将private int m 改为 int m【参考答案】: C5.类Teacher和Student是类Person的子类; Person p; Teacher t; Student s; //p, t and s are all non-null. if(t instanceof Person) { s = (Student)t; } 最后一句语句的结果是( )。

A.将构造一个Student对象;B.表达式是合法的;C.表达式是错误的; D.编译时正确,但运行时错误。

奥鹏2020年6月福师《面向对象的程序设计》在线作业二.doc

奥鹏2020年6月福师《面向对象的程序设计》在线作业二.doc

1.在UML中,包含关系表示为虚线箭头加()字样。

A.includeB.extendC.associationD.generalization【参考答案】: A2.对象约束语言是一种()语言,它主要用于表示UML模型中施加于模型上的约束。

A.面向对象B.过程化C.形式化D.结构性【参考答案】: C3.瀑布模型由B.M.Boehm于()年首先提出。

A.1960B.1971C.1970D.1988【参考答案】: C4.UML的四层模型体系结构中,元元模型层通常称为()层A.M0B.M1C.M2D.M3【参考答案】: D5.对象约束语言,简称(),它是一种用于施加在指定的模型元素上约束的语言。

A.OCLB.ODLC.DAOD.DDL【参考答案】: A6.RUP的核心工作流中,分为()个核心过程工作流和3个核心支持工作流。

A.4B.5C.6D.7【参考答案】: C7.要表示一个构造型,可以将构造型名称用一对()括起来,然后放置在构造型模型元素名字的邻近。

A.圆括号B.方括号C.尖括号D.无需括号【参考答案】: C8.时序图是以()为序的表示方法,主要用来描述对象之间的时间顺序。

A.空间B.时间C.随机D.线性【参考答案】: B9.在UML中,扩展关系表示为虚线箭头加()字样。

A.includeB.extendC.associationD.generalization【参考答案】: B10.类中属性的可见性主要包括()。

A.公有B.私有C.其它D.受保护【参考答案】: ABD11.UML中的事物可分为以下几类()A.结构事物B.动作事物C.分组事物D.注释事物【参考答案】: ABCD12.组件图中通常包含以下几个元素。

A.组件B.接口C.依赖关系D.关联关系【参考答案】: ABC13.UML中的视图大致分为如下几种()A.用例视图B.逻辑视图C.组件视图D.并发视图E.配置视图【参考答案】: ABCDE14.系统建立模型的过程就将任务划分为(),几个阶段连续的迭代的过程。

面向对象程序设计技术-作业2

面向对象程序设计技术-作业2

作业二一、写出下列程序运后的输出结果1. #include<iostream.h>void SB(char ch){switch(ch){case 'A':case 'a':cout<<"well!";break;case 'B':case 'b':cout<<"good!";break;case 'C':case 'c':cout<<"pass!";break;default:cout<<"bad!";break;} }void main(){char a1='b',a2='C',a3='f';SB(a1);SB(a2);SB('A');cout<<endl; }======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxxgood!pass!well!Press any key to continue_===============================2. #include<iostream.h>#include<stdlib.h>double SD(int a,int b,char op){ double x;switch(op){case '+':x=double(a)+b;break;case '-':x=double(a)-b;break; case '*':x=double(a)*b;break; case '/': if (b) x=double(a)/b;else exit(1);break;default:exit(1); }return x; }void main(){int x=20,y=12;cout<<SD(x,y,'-')<<' ';cout<<SD(x,y,'*')<<' ';cout<<SD(x+y,y-2,'/')<<endl; } ======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxx8 240 3.2Press any key to continue_===============================3. #include<iostream.h>void main(){int s=0;for(int i=1;i<6;i++)s+=i*i;cout<<"s="<<s<<endl; }======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxxs=55Press any key to continue_===============================4. #include <iostream.h>void main(){int s=0;for( int i=1;;i++){if(s>50)break;if(i%3==0)s+=i; }cout<<"i,s="<<i<<","<<s<<endl; } ======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxxi,s=19,63Press any key to continue_===============================5. #include <iostream.h>void main(){int s1=0,s2=0;for(int i=0;i<10;i++)if(i%2)s1+=i;else s2+=i;cout<<s1<<' '<<s2<<endl; }======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxx25 20Press any key to continue_===============================6. #include <iostream.h>void main(){int n=10,y=1;while(n--){y++;++y;}cout<<"y*y="<<y*y<<endl; }======== 屏幕输出如下 ========Xuehao: xxxx name: xxxxy*y=441Press any key to continue_===============================二、写出下列每个函数的功能1. #include <iostream.h>int SA(int a,int b){if(a>b)return 1;elseif(a==b) return 0;else return -1; }功能:判断a和b,如果a>b返回1;a=b返回0;a<b返回-12. #include <iostream.h>int SC(int a,int b,int c){if(a>=b && a>=c) return a;if(b>=a && b>=c) return b;if(c>=a && c>=b) return c; }功能:返回a,b,c三个数中的最大数3. int SE(int n){int x;cin>>x;if(n==1) return x; int m=x;while(--n){cin>>x;m+=x; }return m; }功能:计算n个数的累加和4. double SF(double x,int n){double p=1,s=1;for(int i=1;i<=n;i++){p*=x;s+=p/(i+1); }return s; }功能:计算1+X/2+X2/3…+X n/(n+1) 5. #include <math.h>bool SG(int x){int a=int(sqrt(x));int i=2;while(i<=a){if(x%i==0) break;i++; }if (i<=a) return 0;else return 1; }功能:判断X是否为素数,若是素数返回1,不是素数返回06. float FH(){float x,y=0,n=0;cin>>x;while(x!=-100){n++;y+=x;cin>>x; }if(n==0) return y;else return y/n; }功能:输入N个数,返回N个数的平均值,如果N=0,返回0,当输入值为-100时结束输入开始计算。

奥鹏北语14秋《面向对象程序设计》作业2满分答案

奥鹏北语14秋《面向对象程序设计》作业2满分答案
D.
?
正确答案:B
6.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( )个。
A. 1
B. 2
C. 4
D. 5
?
正确答案:B
7.题面见图片
A.
B.
C.
D.
?
正确答案:A
8.在下面循环语句中循环体执行的次数为()。int i=0; do i++; while(i*i<10);
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
?
正确答案:A
14.题面见图片
A.
B.
C.
D.
?
正确答案:B
15.题面见图片
A.
B.
C.
D.
?
正确答案:D
16.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。
A. 2
B. 4
14秋《面向对象程序设计》作业2
一,单选题
1. do语句能够改写为()语句。
A.复合
B. if
C. switch
D. while
?
正确答案:D
2.题面见图片
A.
B.
C.
D.
?
正确答案:A
3.题面见图片
A.
B.
C.
D.
?
正确答案:D
4.题面见图片
A.
B.
C.
D.

B.
C.
A. 3
B. 4
C. 5
D. 6
?
正确答案:B
19.题面见图片

天津大学《面向对象程序设计》在线作业二

天津大学《面向对象程序设计》在线作业二

《面向对象程序设计》在线作业二-00001第1题. switch语句结构中必须有default语句选项A:对选项B:错参考答案:A第2题. 一般的成员函数可以重载选项A:对选项B:错参考答案:A第3题. 一个类的友元函数是本类的一个特殊成员函数选项A:对选项B:错参考答案:B第4题. 只能在循环体内使用continue语句选项A:对选项B:错参考答案:A第5题. if语句结构中必须有else语句选项A:对选项B:错参考答案:B第6题. 下列函数中,用于对文件进行写操作的是()。

选项A:getline()选项B:put()选项C:get()选项D:eof()参考答案:B第7题. 构造函数的函数名必须与类同名选项A:对选项B:错参考答案:A第8题. 成员函数的参数可以设置默认值选项A:对选项B:错参考答案:A第9题. 设有说明:ofstreamoutfile;则执行语句:outfile.open(“data1.txt”);后,文件:data1.txt是一个()。

选项A:用于输入的文本文件选项B:用于输出的文本文件选项C:用于输入的二进制文件选项D:用于输出的二进制文件参考答案:B第10题. 成员函数可以是另一个类的友元函数选项A:对选项B:错参考答案:A第11题. 带有纯虚拟函数的类称为抽象类选项A:对选项B:错参考答案:A第12题. switch语句结构中,每个分支都必须有break语句选项A:对选项B:错参考答案:B第13题. cin和cout是系统预定义的I/O流()。

选项A:类选项B:包含文件选项C:对象选项D:常量参考答案:C第14题. 一个类的友元函数在其函数体中可以直接访问本类的所有成员选项A:对选项B:错参考答案:B第15题. 基类成员在派生类中的访问权限一定与其在基类中的访问权限一样选项A:对选项B:错参考答案:B第16题. 函数必须有返回值选项A:对选项B:错参考答案:B第17题. 函数的定义不能嵌套,但函数的调用可以嵌套选项A:对选项B:错参考答案:A第18题. 类外可以直接引用类的所有静态数据成员和静态成员函数选项A:对选项B:错参考答案:B第19题. 使用setw(int)或setprecision(int)等直接嵌入到cin或cout实现I/O格式控制时,需要使用的头文件是()。

国开电大 系统开发规范与文档编写 大型作业二:面向对象设计方法题目

国开电大 系统开发规范与文档编写 大型作业二:面向对象设计方法题目

案例二:面向对象设计方法本案例以UML方法来设计一个选修课管理系统。

该系统是用计算机对学生选课和课程成绩进行管理。

下面我们给出选修课管理系统的《用例模型》、《静态模型》和《动态行为模型》等。

并将其中一些分析、设计留为作业。

一.系统需求学校计划在校内面向所有学生开设选修课,需要一个选修课教学管理系统用来对学生选课和课程成绩进行管理。

学生选课管理包括如下功能:1.开设课程管理管理员对所开设的课程进行管理,允许对所开设的课程进行增加,修改,删除等。

2.查询可以按课程名,教师名,学号等多种方式查询课程信息。

对于学生的选课信息,学生只能查询本人的。

3.学生选课管理学生根据所查询的课程信息,选择自己所要选修的课程。

对于已经选择了,但不希望选修的课程,可以进行退选。

每个学生最多选修8个学分。

4.用户信息管理能够使用系统的每个学生、教师和管理员每人都有一个ID,管理员可以对用户进行增加,删除,修改等操作。

5.学生成绩管理成绩管理包括如下功能:(1)成绩录入管理员录入学生的成绩信息。

(2)成绩查询学生可以查看自己所选各科课程的成绩。

教师可以查询自己所教课程的学生成绩,并打印报表。

二.用例模型对上述的系统需求进行分析,建立系统的用例模型。

1.确定参与者和用例对以上的系统进行分析,分析可以识别三个参与者:学生,教师和管理员。

学生:查询课表,选课,查询考试成绩教师:查询课表,查询课程成绩管理员:管理所开设的课程,管理用户,录入成绩,执行各种查询功能。

显然,学生、教师、管理员都是学校里的人员,有一些相同的属性,如ID,姓名,部门等,可以将三者的共性提取出来,形成一个抽象的参与者——用户。

作业1:画出系统参与者:用户,管理员、教师和学生的关系图。

图1 参与者关系图2.确定用例前面已经识别出了参与者,根据系统需求中的描述,可以将系统分为两个顶层用例:选课管理和成绩管理,画出系统的顶层用例图如图2所示。

教师图2 顶层用例图通过对以上顶层用例选课管理进行分析,可以得到如下的一些用例:(1)课程信息查询提供按学生查询,按任课教师查询,按课程名查询等多种查询方式。

北京科技大学面向对象设计2大作业

北京科技大学面向对象设计2大作业

面向对象Ⅱ大作业报告姓名: 徐智宽班级: 自1205学号: 41251151C#报告1.概论学生学籍管理系统是一个基于C#语言与数据库系统而编写的方便对学生的专业、班级信息、学生信息、课程信息和成绩信息进行方便管理的一个应用系统。

其中,系统管理分为角色管理和用户管理两部分;专业设置有浏览和添加专业信息两个功能;班级信息管理部分有浏览和添加班级管理信息的功能;学生信息管理有浏览和添加学生信息两个功能;课程信息管理模块分为浏览和添加课程信息两个部分;成绩信息管理部分可以浏览、录入和查询学生成绩。

以上所述的各部分信息均存储在数据库中,可以方便的录入与修改。

2.各模块介绍2.1系统管理模块添加角色信息此部分为添加角色信息,并可以设置该名角色的各项权限,可选权限有:系统管理、专业管理、班级管理、课程管理、成绩管理和学生管理六个部分。

添加用户此部分为添加用户时所用,当一个新用户被添加成功时就可以用此新用户信息登陆系统,登录时会显示如下界面:在用户名一栏中输入admin密码栏输入刚才设置的密码即可登录系统。

2.2专业设置模块使用专业设置模块中的浏览专业信息功能可以查看已输入的专业信息。

如下图所示:在此模块中可以方便的对已有专业的各项信息进行修改。

添加专业模块用于添加一个全新的专业,可添加的信息有专业名称与专业描述。

如下图所示:2.3班级信息管理模块此模块主要用于查询已录入的各个班级的详细信息,有班级名称、年制、班级所属专业、班主任、教室编号、入学时间及备注。

查询界面如下所示:在查询前应该用添加信息功能模块添加正确的班级信息,添加模块如下所示:2.4学生信息管理模块此模块的查询功能可以通过限定专业、入学年份、班级等信息来查看所需查询的学生信息并以表格的形式将学生的学号、姓名、性别、民族、家庭住址、联系电话、政治面貌等信息展示出来。

运行窗体如下所示:添加学生信息时所用的窗体如下所示:其中政治面貌可选党员、团员与其他三类。

面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以下功能:●系统以菜单方式工作●学生信息录入功能(学生信息用文件保存)---输入●学生信息浏览功能——输出●查询、排序功能——算法1、按学号查询2、按姓名查询●学生信息的删除与修改(可选项)(2)功能要求●界面简单明了;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。

(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。

对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。

文件的读写操作大家参照书中的有关文件的章节。

2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。

A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。

提示:学生信息可先输入到数组中,排序后可写到文件中。

(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。

[答案][吉林大学]2020春《面向对象程序设计》在线作业二

[答案][吉林大学]2020春《面向对象程序设计》在线作业二

1.数组的大小在创建以后()。

[答案:B]A.可以改变B.不能改变C.使用new方法可以改变D.有些可以改变2.已知如下代码:boolean m = true; if( m = false)System.out.println(“False”); else System.out.println(“True”);执行结果是()。

[答案:B]A.FalseB.TrueC.NoneD.出错3.下列代码中,将引起一个编译错误的行是()。

(1)1public class Test {(2)int m,n; (3)public Test(){}(4)public Test(int a){m=a;}(5)public static void main(String args[]{(6)Test t1,t2; (7)int j,k;(8)j=0; k=0;(9)t1=new Test; (10)t2=new Test(j,k); (11)}(12)}[答案:D]A.第3行B.第5行C.第6行D.第10行4.如果类中的成员变量可以被同一包访问,则使用如下哪个约束符?()[答案:D]A.privateB.publicC.protectedD.no modifier5.下列哪个类声明是正确的?()[答案:D]A.abstract final class Hl{...}B.abstract private move(){...}C.protected private numberD.public abstract class Car{...}6.下列构造方法的调用方式中,正确的是()。

[答案:C]A.按照一般方法调用B.由用户直接调用C.只能通过 new 自动调用D.被系统调用7.以下有关构造方法的说法,正确的是()。

[答案:A]A.一个类的构造方法可以有多个B.构造方法在类定义时被调用C.构造方法只能由对象中的其它方法调用D.构造方法可以和类同名,也可以和类名不同8.设x=1,y=2,z=3,则表达式y+=z--/++x的值是()。

面向对象程序设计作业2

面向对象程序设计作业2

1. 写出程序运行结果(1)答案:61 (2)答案:2252对于每个给定的程序段,指出代码中的错误,写出改正后的代码。

(1)下面代码定了Time类的成员函数setHour,Time的声明见Fig. L 9.1:答案:在Time类中添加公有成员函数声明如下:int&setHour(int);(2)下面代码调用了Time类的成员函数printUniversal,Time类的定义见Fig. L 9.1:答案:对于Time类的指针clockPtr,应该使用->运算符调用类的成员函数:clockPtr->printUniversal();(3)在Time类中定义数据成员hour, minute和second,见Fig. L 9.2,并在test code中使用Time 类:答案:第6行,成员运算符"."比指针运算符"*"优先级更高,可以改成(*clockPtr).second;或者clockPtr->second;(4)下面代码定义了类Time:答案:具有默认值的函数参数必须放在右边,可以改成:Time(int, int = 0, int = 0);(5)下面代码定义了类Q:答案:构造函数没有返回值类型,应该改成:Q(int);(6)下面代码是类Q的另一种定义:答案:第9行,使用这种方式初始化非静态成员变量,在旧版本(旧标准)的编译器下可能会有问题。

C++11以上可以用这种方式初始化。

warning: non-static data member initializers only available with '-std=c++11' or '-std=gnu++11'9 | int qData = 100;| ^~~(7)下面代码在类Q的声明之外定义了其成员函数setQ:答案:应在函数名前加范围解析运算符"::":void Q::setQ(int input)。

交大网络教育_面向对象程序设计(Java)第二次作业

交大网络教育_面向对象程序设计(Java)第二次作业

3、下面哪种流类允许您从一个文件中读取基本数据类型的数据?选择一项:a. FileReaderb. FileInputStreamc. DataInputStreamd. DataInputStream和FileInputStream题目2考虑如下代码段:FileOutputStream fo = new FileOutputStream(“myFile.txt”); DataOutputStream do = new DataOutputStream(fo);do.writeByte(9);do.writeFloat(4.20f);do.close();上述代码执行后,有多少字节(8位)被写入文件?选择一项:a. 2b. 10c. 3d. 5题目3下列说法中正确的是选择一项:a. 当一个对象被序列化时,整个类定义也会被相应保存b. 当一个对象被序列化时,整个对象的状态(所有的数据变量及其相应值)均会被保存c. FileInputStream无法读取文本文件,它只能用来读取图像文件d. 上述说法A,B,C均有误题目42、对File类实例化时,在文件系统中便相应有一个文件被创建。

该句话是否正确?选择一项:A. 正确B. 错误题目5下列集合类中哪种可用于存储“key-value”对且是线程安全的?选择一项:A. HashMapB. TreeMapC. VectorD. HashTable题目61、当使用File类中的方法操作文件系统时,下列功能中的哪个不能做到?选择一项:A. 改变当前工作路径B. 创建某个文件C. 修改文件的安全级别D. 删除某个文件题目7下列说法中错误的是选择一项:A. Set是一种不允许出现元素重复的集合B. List集合中不允许存在重复元素C. Map集合中可以存储重复值D. List是一种依索引有序的集合题目8下列说法中错误的是选择一项:A. FileInputStream类和FileOutputStream类均可用于处理16位Unicode字符的输入输出B. FileInputStream类和FileOutputStream类可用于读取文本文件C. Reader类和Writer类及其派生类都可用于16位Unicode字符的输入输出D. FileInputStream类和FileOutputStream类可用于读取图像文件题目9下面的哪些类实现了java.util.List接口?(1) java.util.Vector(2) java.util.LinkedList(3) java.util.HashTable(4) java.util.OrderedList选择一项:A. 1B. 1,2C. 3,4D. 1,2,3,4题目10下列语句不合法的是:选择一项:A. HashSet<String> set = new HashSet<String>();B. HashMap<Integer, String> hmap = new HashMap<Integer, String>();C. ArrayList<int> list = new ArrayList<int>();D. List<String> list2 = new ArrayList<String>();关于hashcode,下列说法中错误的是选择一项:A. 如果两个不相等的对象的hashcode值总不相等,程序的性能会得到提升B. 总是返回常量的函数不会是一个高效的函数C. 两个不相等的对象的hashcode值一定不相等D. 两个相等对象的hashcode值一定相等题目12下列代码的运行结果为(A)FileOutputStream out = new FileOutputStream(“objectStore.ser”); ObjectOutputStream os = new ObjectOutputStream(out);os.writeObject(“Object on the fly!”);选择一项:A. 字符串“Object on the fly!”被写入文件objectStore.serB. 第3行导致编译错误C. 第2行将出现一个异常D. 代码可以编译通过,但在运行时第3行将抛出一个异常题目13考虑如下代码段:1) import java.io.*;2) public class QuestionEight {3) public static void main(String[] args) throws IOException {4) F ile inputFile = new File(“javaCourse.txt”);5) File outputFile = new File(“javaCourseCopy.txt”);6) BuffferedReader in = new BufferedReader(inputFile);7) BufferedWriter out = new BufferedWriter(new FileWriter(outputFile));8) String line;9) while((line = in.readLine()) != null) {10) out.write(line);11) out.newLine();12) }13) in.close();14) out.close();15) }16) }上述代码的输出为:选择一项:A. 第6行编译时报错B. 编译通过,且运行时正常C. 编译通过,但运行时第6行抛出异常D. 第3行编译时报错题目14考虑如下代码段:1. int i = 5;2. printIt(i);3. void printIt(Integer wi) {4. int j = wi;5. System.out.println(“The value is: ” + j);6. }该代码段的输出为选择一项:a. 第2行编译时报错b. 第3行编译时报错c. 运行时错误d. The value is: 5题目15考虑如下代码段:1. ArrayList<ObjectOne> list = new ArrayList<ObjectOne>();2. list.Add(new ObjectOne());3. list.Add(new ObjectOne());4. list.Add(new ObjectOne());5. Collections.sort(list);6. class ObjectOne {7. private int x = 0;8. private int y = 0;9. }该代码段的输出为:选择一项:A. 运行时第3行出错B. 编译时第3行出错C. 运行时第5行出错D. 编译时第5行报错题目16考虑如下代码段:ArrayList<Integer> list = new ArrayList<Integer>();list.add(new Integer(1));list.add(new Integer(2));list.add(new Integer(3));Iterator<Integer> itr = list.iterator(); for(Integer wij : list) {System.out.println(“number: ” + wij); }该代码段的输出为:选择一项:A. 第6行编译时出错B. number: 1number: 2number: 3C. 第7行编译时出错D. 第5行编译时出错。

《面向对象程序设计》第2次作业

《面向对象程序设计》第2次作业

面向对象程序设计第2次作业二、主观题(共15道小题)9.答:13)-b-sqrt(b*b-4*a*c)10.答:14)fabs(b*b-a*c)11.答:15) 1 16) 7 17) 3 18) 0 19) 8 20) 612.答:21) 10 22) 3 23) 10 24) 9 25) 1 13. 面向对象的程序设计有四大特征,是抽象、封装、继承、多态。

14.#includeint area(int l=5,int w=5){return l*w;}void main(){cout<< area()<;cout<< area(10,2)<;cout<< area(2)<;}答:运行结果:25201015.答:运行结果:0:0:011:11:12答:运行结果:A:Object id:1 B:Object id:2答:结果:constructing B1 3 constructing B2 2 constructing B3 * constructing B1 4 constructing B2 1 constructing B3 *答:运行结果:5 6考察知识点:参数的传递,本题传递了实参的值19. 下面程序的运行结果是。

#includeint func1(int x,int y,int *cp,int *dp){*cp=x*x+y*y;*dp=x*x-y*y;}void main( ){int a=4,b=3,c=5,d=6;func1(a,b,&c,&d);cout<<C<<>}答:运行结果:25 7考察知识点:参数的传递,本题传递了实参的地址20. 该程序的输出是#include “stdio.h”void main(){char a[40]=”goodnighta”,*p;for(p=a;*p!=’a’;p++) putchar(*p-32);}答:运行结果:GOODNIGHT考察知识点:字符串的处理——大小写字母的转换21答:运行结果:member of D1 member of B1 member of B2123分析:内存中nv有三个拷贝,fun也有三个拷贝。

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

面向对象程序设计大作业计算器类完成时间:2013 年 5月25日计算器类1.编程目的设计实现计算器类,能进行整数及实数的加、减、乘、除、平方、开方等基本运算,及能进行二进制,十进制,八进制,十六进制数值之间的转换,以及能进行三角函数的计算。

2.系统简介本程序利用类完成了十进制下的四则运算(加,减,乘,除),可以把十进制转化为二进制、八进制、十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、sqrt等)。

程序设计语言采用Visual C++6.0,程序运行平台Windows 7,程序通过调试运行实现了设计目标。

刚开始时出现主要的运算界面,然后进行选择1-3.选择1,则进行一般运算;选择2,则进行三角函数运算;选择3,则进行进制的转换。

若选择1,则又分为1-7个选择,利用if...else if...else...语句来实现。

若选择1,进行加法运算;选择2,进行减法运算;选择3,进行乘法运算;选择4,进行除法运算;选择5,进行取余运算;选择6,幂运算;选择7,开方运算。

三角函数和进制转换与此类同。

3.编程思路本程序分为三类:(1)实现了十进制下的四则运算(加、减、乘、除),还可以进行平方、开方的运算及幂的运算;(2)实现十进制转换为二进制、八进制、十六进制。

(3)进行三角函数的基本运算。

建立一个文件,该文件包含三个类程序分别为class Trigonometric、class HexBinDecOct、class Calculate且分别对应三角函数运算、进制转换、一般运算,最后是一个主函数。

4总体设计(附类图)编程实现计算器,用类来完成。

首先,编写的是三角函数(sin、cos、tan)的实现类;其次,一般运算(加、减、乘、除、开方、幂)类;最后是,把十进制转换为二进制、八进制、十六进制。

具体程序实现如下图表示:5.关键技术说明面向对象设计方法的核心概念——类,利用类可以实现对数据的封装及隐蔽。

在面向对象程序设计中,程序模块是由类构成的,类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。

类成员的访问控制属性包括三种:公有类型(public)、私有类型(privite)、保护类型(protected)。

公有类型成员定义了类的外部接口,公有成员用public 关键字声明,在类外只能访问类的公有成员。

私有成员在关键字privite后面声明,如果私有成员紧接着类名称,则关键字可以省略。

私有成员只能被本类的成员函数访问,来自类外的任何访问都是非法的。

保护类型成员的性质和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同。

本程序包含公有成员和私有成员,不含保护类成员。

分别为class Trigononetric、class Calculate、class HexBinDecOct6.源代码#include <iostream>#include <cmath>#include <stdlib.h>using namespace std;#define pi 3.14159265/************************************************************/class Trigonometric{//三角函数实现private: double number;//要操作的数char ch2;//选择控制public: void print1();//界面输出void set1(double num)//传值给操作函数{number=num;}};void Trigonometric::print1(){cout<<"\t\t进入三角函数的运算"<<endl;cout<<"\t\t请输入一个弧度数:"<<endl;cin>>number; set1(number);cout<<"\t\t 1.求sin(a)"<<endl;cout<<"\t\t 2.求cos(a)"<<endl;cout<<"\t\t 3.求tan(a)"<<endl;cout<<"\t\t 4.求全部!"<<endl;cin>>ch2;back3:if(ch2=='1')cout<<"sin("<<number<<")="<<sin(number)<<endl;else if(ch2=='2')cout<<"cos("<<number<<")="<<cos(number)<<endl;else if(ch2=='3')cout<<"tan("<<number<<")="<<tan(number)<<endl;else if(ch2=='4'){cout<<"sin("<<number<<")="<<sin(number)<<endl;cout<<"cos("<<number<<")="<<cos(number)<<endl;cout<<"tan("<<number<<")="<<tan(number)<<endl;}else{cout<<"\t\t输入有误!请重新选择:"<<endl;cin>>ch2;goto back3;}}/************************************************************/class HexBinDecOct{//进制转换private: char str2[100];//存储二进制char str8[100];//存储八进制char str16[100];//存储十六进制char ch2;//选择控制int number;//要转换的十进制数public: void print2();void set2(double num){ number=num;}void conversionAll(int number);//全部转换char sixteen(int number);//转换为十六进制char eight(int number);//转换为八进制 char two(int number);//转换为二进制};void HexBinDecOct::print2(){ cout<<"欢迎使用进制转换:"<<endl;cout<<"\t\t请输入一个数:"<<endl;cin>>number;set2( number);cout<<"\t\t***********************************"<<endl;cout<<"\t\t * 1.十进制转换为二进制*"<<endl;cout<<"\t\t * 2.十进制转换为八进制*"<<endl;cout<<"\t\t * 3.十进制转换为十六进制*"<<endl;cout<<"\t\t * 4.十进制转换为二、八、十六进制 *"<<endl;cout<<"\t\t *请选择:1-4 *"<<endl;cout<<"\t\t***********************************"<<endl;cin>>ch2;back4:if(ch2=='1')//1.十进制转换为二进制cout<<two(number)<<endl;else if(ch2=='2')//十进制转换为八进制cout<<eight(number)<<endl;else if(ch2=='3')//十进制转换为十六进制cout<<sixteen(number)<<endl;else if(ch2=='4')//十进制转换为二、八、十六进制conversionAll(number);else {cout<<"\t\t输入有误!请重新选择:"<<endl;cin>>ch2;//重新选择goto back4;//重新转换}}char HexBinDecOct::two(int number){int N=number;cout<<"转换为二进制数为:"<<endl;int aa[20];int temp;temp = N;int num;int i=0;while(temp !=0){num = temp%2;aa[i] = num;i++;temp = temp/2;}for(num=i-1;num>=0;num--){cout<<aa[num];}cout<<endl;return 0;}char HexBinDecOct::eight(int number){cout << "请输入一个十进制正整数:"; cout << number << "(10) = ";int a[100];int index = 0;while(number >= 1){a[index] = number%8;index++;number /= 8;}for(int i=index-1; i>=0; i--)cout << a[i];cout << "(8)" << endl;return 0;}char HexBinDecOct::sixteen(int number){cout<<"请输入一个十进制数:"<<endl;char *p;p=itoa(number,str16,10);cout<<"str16="<<str16<<endl;cout<<"p="<<p<<endl; //将整型数n按十六进制转换为字符串并输出p=itoa(number,str16,16);cout<<"转换为十六进制为:"<<str16<<endl;return 0;}void HexBinDecOct::conversionAll(int number){cout<<"请输入一个数字:";cin>>number;char str2[10];char str8[10];char str16[10];itoa(number, str2, 2);itoa(number, str8, 8);itoa(number, str16, 16);cout<<"\t\t********************"<<endl;cout<<"\t\t* 1.转换为二进制 *"<<str2<<endl;cout<<"\t\t* 2.转换为八进制 *"<<str8<<endl;cout<<"\t\t* 3.转换为十六进制*"<<str16<<endl;cout<<"\t\t* 请选择:1-3 *"<<endl;cout<<"\t\t********************"<<endl;}/******************************************************* *****/class Calculate{//一般计算private: double sum;//存储运算结果char ch2;//选择控制double num1,num2;//两个操作数public: void set3(double num1,double num2)//赋值{num2=num2;num1=num1;}void print3();double add(double num1,double num2);//加double subtract(double num1,double num2);//减double multiplication(double num1,double num2);//乘double divide(double num1,double num2);//除double mod(double num1,double num2);//取余double mi(double num1,double num2);//幂double kaifang(double num1);//开方};void Calculate::print3(){cout<<"\t\t请输入两个数:"<<endl;cin>>num1>>num2;set3( num1,num2);cout<<"\t\t*******************"<<endl;cout<<"\t\t* 1.加法运算 *"<<endl;cout<<"\t\t* 2.减法运算 *"<<endl;cout<<"\t\t* 3.乘法运算 *"<<endl;cout<<"\t\t* 4.除法运算 *"<<endl;cout<<"\t\t* 5.取余运算 *"<<endl;cout<<"\t\t* 6.幂运算 *"<<endl;cout<<"\t\t* 7.开方运算 *"<<endl;cout<<"\t\t*******************"<<endl;cout<<"\t\t请输入菜单项(1-8):";cin>>ch2;back2:if(ch2=='1'){// 1.加法运算cout<<"\t\t"<<num1<<'+'<<num2<<'='<<add(num1,num2)<<endl ;}else if(ch2=='2'){// 2.减法运算cout<<"\t\t"<<num1<<'-'<<num2<<'='<<subtract(num1,num2)<<endl;}else if(ch2=='3'){// 3.乘法运算cout<<"\t\t"<<num1<<'*'<<num2<<'='<<multiplication(num1, num2)<<endl;}else if(ch2=='4'){// 4.除法运算cout<<"\t\t"<<num1<<'/'<<num2<<'='<<divide(num1,num2)<<e ndl;}else if(ch2=='5'){// 5.取余运算cout<<'\t\t'<<num1<<'%'<<num2<<'='<<mod(num1,num2)<<endl ;}else if(ch2=='6'){//6.幂运算cout<<'\t\t'<<num1<<'^'<<num2<<'='<<mi(num1,num2)<<endl;}else if(ch2=='7'){//7.开方运算cout<<'\t'<<num1<<'='<<kaifang(num1)<<endl;}else{ cout<<"\t\t输入有误!请重新选择:"<<endl;cin>>ch2;goto back2;}}double Calculate::add(double num1,double num2){return sum=num1+num2;}double Calculate::subtract(double num1,double num2){return sum=num1-num2;}double Calculate::multiplication(double num1,double num2)return sum=num1*num2;}double Calculate::divide(double num1,double num2) {if(num2!=0)return sum=num1/num2;elsereturn 0;}double Calculate::mod(double num1,double num2) {if(num2!=0)return sum=(int)num1%(int)num2;elsereturn 0;}double Calculate::mi(double num1,double num2) {if(num2==0)return sum=1;elsereturn sum=pow(num1,num2);}double Calculate::kaifang(double num1){if(num1>=0)return sum=sqrt(num1);elsereturn 0;}/********************************************************** **/int main(){ //int num1=0,num2=0,number=0;Trigonometric tri;//三角函数对象HexBinDecOct hex;//进制转换对象Calculate cal;//一般计算对象char ch1,ch3;back1:{do{cout<<"\t\t*****欢迎使用计算器**********"<<endl;cout<<"\t\t*****主菜单**********"<<endl;cout<<"\t\t* *"<<endl;cout<<"\t\t* 1. 基本运算 *"<<endl;cout<<"\t\t* 2. 三角函数 *"<<endl;cout<<"\t\t* 3. 进制转换 *"<<endl;cout<<"\t\t* *"<<endl;cout<<"\t\t* 请选择:1---3 *"<<endl;cout<<"\t\t*********************"<<endl;cin>>ch1; if(ch1=='1'){// 1.基本运算cal.print3();}else if(ch1=='2'){// 2.三角函数tri.print1();}else if(ch1=='3'){// 3.进制转换hex.print2();}else{cout<<"输入有误!"<<endl;goto back1;}cout<<"again?(y/n)"<<endl;cin>>ch3;}while(ch3=='y'||ch3=='Y');};return 0;}7.测试(主界面及各功能模块的运行图及说明)开始运行的界面:(一)、一般运算的界面:(1)加法的界面:(减法类似)(2)运行乘法的界面(除法类似不在列出):(3)幂运算:(4)开方运算:可以从图中看到,当进行开方运算时需输入两个数,但是第二个数没影响,程序运行第一个数且运行正确。

相关文档
最新文档