问答题【说明】
源程序中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。
①定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。
②定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。
③完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。
④完成Money类成员函数float Money::TotalMoney(float fencelen,float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test4.cpp清单如下:
#include<iostream.h>
{{U}} (1) {{/U}}
class Circle
{
private:
float radius;
public:
{{U}} (2) {{/U}}
float Circumference(){return 2 * P| * radius;}
float Area(){return P|*radius * radius;}
};
class Money
{
private:
float FencePrice;
float ConcretePrice;
public:
Money(float f,float c);
float Tota|Money(float fencelen, float conarea);
};
Money::Money(float f,float c)
{
{{U}}(3) {{/U}}
}
float Money::Tota|Money(float fencelen, float conarea)
{
{{U}}(4) {{/U}}
}
void main( )
{
float radius, fence, concrete;
cout. setf(ios:: fixed);
cout. setf(ios:: showpoint);
cout. precision (2);
cout << "Enter the radius of the pool:";
cin > > radius;
cout << "Enter the FencePrice:";
cin > > fence;
cout << "Enter the ConcretePrice: ";
cin > > concrete;
Circle Pool(radius);
Circle PoolRim(radius + WIDTH);
Money mon( fence, concrete);
float totalmoney = mon. TotalMoney( PoolRim. Circumference( ), ( PoolRim. Area ( ) - Pool.
Area ( ) ) );
cout << "The total money is RMB" << totalmoney << end|;
}
问答题[问题3]
写出每种关系模式的主键。
问答题试题五(共15分)阅读下列说明和C++代码,将应填入____(n)____处的字句写在答题纸的对应栏内。[说明]某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。现在采用观察者(Observer)模式来开发该系统。观察者模式的类图如图5-1所示。[C++代码]
问答题[说明]
在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape_t、point_t和circle_t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。
[C程序]
typedef enum { point, circle } shape_type; /* 程序中的两种图形:点和圆 */
typedef struct { /* 基本的图形类型 */
shape type type; /* 图形种类标识:点或者圆 */
void (*destroy) (); /* 销毁图形操作的函数指针 */
void (*draw)(); /* 绘制图形操作的函数指针 */
} shape_t;
typedef struct { shape_t common; int x; int y; } point_t;
/* 定义点类型,x、y为点坐标 */
void destroyPoint (point_t* this) { free(this); printf ("Point
destoryed!/n");) /* 销毁点对象 */
void drawPoint (point_t* this) { printf("P(%d, %d)", this→x, this→y);)
/* 绘制点对象 */
shape_t* createPoint(va_list* ap) /* 创建点对象,并设置其属性 */
{
point_t* p point;
if ((p_point=(point_t*) malloc (sizeof(point_t)))==NULL) return NULL;
p_point→common. type = point;
p_point→common. destroy = destroyPoint;
p_point→common. draw=drawPoint;
p_point→x = va_arg (*ap, int); /* 设置点的横坐标 */
p_point→y = va_arg(*ap, int); /* 设置点的纵坐标 */
return (shape_t*)p_point; /* 返回点对象指针 */
}
tyPedef struct /* 定义圆类型 */
{
shape_t common;
point_t *center; /* 圆心点 */
int radius; /* 圆半径 */
} circle_t;
void destroyCircle(circle_t* this) {
free (______); free(this); printf("Circle destoryed!/n");
}
void drawCircle (circle_t* this)
{
printf ("C(");
______.draw( this→center); /* 绘制圆心*/
printf (", %d)", this→radius);
}
shape_t* createCircle(va list* ap) /* 创建一个圆,并设置其属性 */
{
circle_t* p_circle;
if ((p_circle=(circle_t*)malloc(sizeof(circle_t)))==NULL)return NULL;
p_circle→common. type=circle; p_circle→common. destroy=destroyCircle;
p_circle→common. draw=drawCircle;
______ =createPoint(ap); /* 设置圆心 */
p_circle→radius=va arg(*ap, int); /* 设置圆半径 */
return p_circle;
}
shape t* createShape(shape_type st, …) /* 创建某一种具体的图形 */
{
va_list ap; /* 可变参数列表 */
shape_t* P_shape = NULL;
______ (ap, st);
if ( st == point) p_shape=createPoint( &ap); /* 创建点对象 */
if ( st == circle) p_shape=createCircle(&ap); /* 创建圆对象 */
va_end(ap);
return p-shape;
}
int main()
{
int i; /* 循环控制变量,用于循环计数 */
shape t* shapes[2]; /* 图形指针数组,存储图形的地址 */
shape_s[0] = createShape ( point, 2, 3); /* 横坐标为2,纵坐标为3 */
shapes[1] = createShape( circle, 20, 40, 10);
/* 圆心坐标(20, 40), 半径为10 */
for (i=0; i<2; i++) { shapes[i]→draw(shapes[i]); printf("/n"); }
/* 绘制数组中图形 */
for( i=1; i>=0; i--) shapes[i]→destroy(shapes[i]);
/* 销毁数组中图形 */
return 0;
}
运行结果如下:
p(2, 3)
______
Circle destoryed!
Point destoryed!
问答题问题:4.3 若输入的硬币数为30,则最少的比较次数为( ),最多的比较次数为( )。
问答题【说明】某绘图系统存在point、line、square三种图元,它们具有Shape接口,图元的类图关系如图13-12所示。现要将circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来的,它提供的接口不能被系统直接使用。代码13-2既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码13-3根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如表13-5所示。{{B}}表13-5接口及其功能{{/B}}ShapeXCircle功能display()DisplayIt()显示图元【代码13-2】classCircle{{U}}(1){{/U}}{private{{U}}(2){{/U}}pxc;publicCircle(){pxc=new{{U}}(3){{/U}};}publicvoiddisplay(){pxc.{{U}}(4){{/U}};}}【代码13-3】publicclassFactory{public{{U}}(5){{/U}}getShapeInstance(inttyoe){//生成特定类实例switch(type){case0:returnnewpoint();case1:returnnewRectangle();case2:returnnewline();case3:returnnewCircle();default:returnnull}}};publicclassApp{publicstaticviodmain(Stringargv[){if(argv.length!=1){system.out.println("errorparameters!");Return;}inttype=(newInteger(argv[0)).intValue();Factoryfactory=newFactory();shapes;s=factory.{{U}}(6){{/U}};if(s==null){system.out.println("Errorgetinstance!");Return;}s.display();return;}}
问答题[说明]某订单管理系统的部分UML类图如图5-16所示。在图5-16中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如表5-23所示。{{B}}表5-23某订单管理系统各个类的部分属性和方法说明表{{/B}}{{B}}类{{/B}}{{B}}成员{{/B}}{{B}}说明{{/B}}ProductListArrayList<Product>productsProductStringcode产品编号Stringdescription产品描述doubleprice产品单价Booleanequals(Objectobject)若两个产品相同则返回true,否则返回falseOrderItemProductproduct订单项中的产品intquantity产品的订购数量ProductgetProduct()获取订单项中的产品OrderArrayList(orderItem)items订单中包含的订单项orderListArrayList(Order)Orders订单voidaddorder(orderOrder)向订单列表中添加新订单intgetNumberOfOrders()获取订单列表中的订单总数SalesSystemProductListcatalog产品目录orderListsales订单列表voidstatistic()依次统计产品目录中每个产品的订购总量,并打印出每个产品的编号、说明、订购总量和订购金额可以使用类java.util.ArrayList<E>来实现对象的聚集关系,如图5-16中OrderList与Order之间的聚集关系。for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合及用来接收集合中每个元素的变量,其语法如下:for(用来接收集合中元素的变量:需要遍历的对象集合)如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.Iterable<T>。Java程序7-1和Java程序7-2分别给出了类OrderList和方法statistic的Java代码。
问答题
对文法G[S]:S→a|∧|(T);T→T,S|S:回答问题1~问题3。
【表】
表4-2 预测分析表
a
∧
(
)
,
#
S
→a
→∧
(u)(2)(/u)
T
(u)(1)(/u)
→SN
→SN
N
(u)(3)(/u)
→,SN
问答题阅读下列说明和图,回答问题1至问题3。【说明】公司IT部门决定开发一个计算机管理系统以记录期刊的传阅情况。期刊在公司内部传阅,员工可以要求加入传阅队列。图书室登记公司收到的期刊,交给名单中的第一名员工。员工应在3个工作日内完成阅读,员工阅读完毕后通知系统,系统提醒下一位阅读者取书,下一个员工必须确认已收到期刊。当传阅名单中“下一位”员工出差在外时将无法进行传阅,此时将期刊传给再下一位,而将该员工做标记,再次传递此书时优先考虑该员工。最后一位员工阅读完毕后,将期刊交还图书室以便共用。系统能在员工忘记传递期刊时发出提醒信息。系统详细记录期刊传阅情况,当员工阅读完后通知系统,系统记录该员工的员工号及日期,并在备注栏注明是传出;同样,当员工收到期刊后给系统收书确认,系统记录该员工的员工号及日期,并在备注栏注明是收到。公司的员工都有一个唯一的员工号。公司订阅了多种期刊,为每一本期刊(有唯一期刊流水号)产生一份传阅名单,并详细记录传阅情况。员工的出差情况存储在系统主机中。该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,图9-4是该系统的类图的一部分,图9-5描述了成功传递期刊的序列图。
问答题[说明]某学校的教学系统描述如下:学生信息包括:学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、入学年份(Syear)、主修专业(Smajor),其中学号是入学时唯一编定的。教师信息包括:教工号(Tno)、姓名(Tname)、性别(Tsex)、年龄(Tage)、职称(Title),其中教工号是唯一编定的。课程信息包括:课程号(Cno)、课程名称(Cname)、学时(Cpeiiod)、学分(Ccredit),其中课程号是唯一编定的。每个专业每个年级只有一个班级,这样班级就可用入学年份标识。每位教师只教授特定的一门的课程,每门课程可以有多个教师教授,各位老师的上课地点及上课时间有所不同。注意:一门课程至少有一位教师教授,否则这门课程就视为不存在。每位学生可以同时选修多门不同的课程,一门课程至少要有10位学生选修,否则就取消这门课程的开设。注意:选修课程时要指定任课教师,不能重复选修同一门课程。课程结束后,任课教师给选修该课程的学生一个成绩(Grade)。注意:教师不能给没有选修他所教授课程的学生成绩,即使选修了其他教师教授的同一门课也不行。图2-1是经分析得到的E-R图。[图2-1]
问答题[说明] 为网球比赛的选手安排比赛日程。设有n(n=2m)位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手赛一场,且每位选于每天赛一场,不轮空。 设n位选手被顺序编号为1, 2, …, n,比赛的日程表是一个n行n-1列的表,第i行j列的内容是第i号选手第j天的比赛对手。用分治法设计日程表,就是从其中一半选手(2m-1位)的比赛日程导出全体2m选手的比赛日程。从众所周知的只有两位选手的比赛日程出发,反复这个过程,直至为n位选手安排好比赛日程为止。 如两位选手比赛日程表如下所示: 1 1 2 2 1 如四位选手比赛日程表如下所示: 1 2 3 1 2 3 4 2 1 4 3 3 4 1 2 4 3 2 1 函数中使用的预定义符号如下: #define M 64 int a[M+1][M]; [函数] void main() int twom1, twom, i, j, m, k; printf("指定n(=2的k次幂)位选手, 请输入k: /n"); scanf("*d", /*预设两位选手的比赛日程*/ a[l] [1] = 2; a[2] [1] = 1; m = 1; twoml = 1; while(______) m++; twoml += twoml; twom = twoml * 2;/*为2^m位选手安排比赛日程*/ /*填日程表的左下角*/ for(i = twoml + i; ______; i++) for(j = i; j <= twoml - i; j++) a[i] [j] = a[i - twoml] [j] + twoml; /*填日程表的右上角*/ a[1] [twoml] = ______;/*填日程表右上角的第1列*/ for(i = 2; i <= twoml; i++) a[i] [twoml] = a[i - 1] [twoml] + i; /*填日程表右上角的其他列,参照前一列填当前列+/ for(j = twoml + 1; j < twom; j++) for(i = i; i < twoml; i++) a[i] [j] = ______; a[twoml] [j] = a[l] [j - 1]; /*填日程表的右下角*/ for(j = twoml; j < twom; j++) for(i = i; i <= twoml; i++) a[______] [j] = i; /*输出日程表*/ for(i = i; i <= twom; i++) for(j = i; j < twom; j++) printf("%4d", a[i] [j]); printf("/n"); printf("/n");
问答题[说明]已知某唱片播放器不仅可以播放唱片,而且可以连接计算机并把计算机中的歌曲刻录到唱片上(同步歌曲)。连接计算机的过程中还可自动完成充电。关于唱片,还有以下描述信息。(1)每首歌曲的描述信息包括歌曲的名字、谱写这首歌曲的艺术家及演奏这首歌曲的艺术家。只有两首歌曲的这3部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。(2)每张唱片由多条音轨构成。一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。(3)每条音轨都有一个开始位置和持续时间。每张唱片上的音轨次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道它的下一条音轨和上一条音轨是什么(如果存在的话)。根据上述描述,采用面向对象方法对其进行分析与设计,得到了如下表所示的类列表、如图1所示的初始类图以及如图2所示的描述播放器行为的UML状态图。类列表类名说明Artist艺术家Song歌曲Band乐队Musician歌手Track音轨Album唱片
问答题【说明】某单位正在使用一套C/S模式的应用软件系统,现在需要升级为B/S应用模式,但需要保持业务的连续性。开发人员提出用WebService作为中间层的接口进行开发。【问题1】请用120字以内文字,从业务的继承性、升级成本(时间、工作量)和扩展性三个方面简要说明开发人员所提方案的优点。【问题2】WebService的三个基本技术是WSDL、SOAP、UDDI,它们都是以XML为基础定义的。请用120字以内文字,简要说明WSDL、SOAP和UDDI的作用。【问题3】服务注册中心、服务提供者和服务请求者之间的交互和操作构成了WebService的体系结构,如图13-21所示。请用180字以内文字,说明这三者的主要功能及其交互过程。
问答题[说明]某高等院校的教学管理具有选课管理和成绩管理两大功能。选课管理主要完成以下工作:(1)录入与生成新学期课程表;(2)学生选课注册;(3)查询,学生、教师、教学管理员可以查询课程表,获得课程信息、学生选课信息和学生、教师信息;(4)选课注册信息的统计与报表生成。成绩管理主要的功能为:(1)成绩录入:教学管理员录入学生考试成绩;(2)成绩查询:教师、教学管理员可以查询学生考试成绩。。学生只允许查询自己的考试成绩,不允许查询他人的成绩;(3)成绩统计与报表生成:教学管理员进行成绩统计,打印统计报表。把学生选课注册信息传送给财务系统,以便计算学生应交纳的费用。根据需要,系统设计的用例有“选课管理”、“成绩管理”、“查询课程信息”、“选课注册”、“管理开设课程”等用例。其中部分用例说明如下:“查询课程信息”:学生、教师或教学管理员启动查询课程信息时,该用例开始运行。根据输入的查询要求(查询主题或关键字),显示有关的课程信息;“选课注册”。当学生登录进行选课注册时,该用例开始运行,它提供了选择课程、注册、修改注册、删除注册等功能。学生登录需要用户标识(ID)和口令;“管理开设课程”。当教学管理员登录系统进行产生选课信息操作时,该用例开始运行。它首先检查用户标识(ID)和口令,然后从数据库中取出学生的选课注册数据,按照要求进行分类统计,生成选课注册报表。活动者“学生”与用例“选课注册”的交互关系如下:当“学生”登录系统进入选课注册活动时,首先要输入用户标识(ID)和口令,经系统的“注册表单”接口对象验证,如果正确无误,则“学生”可以进行查询活动或选课活动,否则拒绝进入。若“学生”发出“查询”请求,系统的“选课注册表单”接口对象响应信息给“学生”,及发送增加或删除学生选课数据的消息。“开设课程”对象响应该消息,找出数据库中的相关数据,增加或删除学生的姓名和所选的课程名,或做相应的修改,并把增加或删除学生课操作成功或失败的信息反馈给“选课注册表单”接口对象,“选课注册表单”接口对象再反馈给“学生”。如果“学生”按下“确认”键,则选课操作得到确认,发出提交请求。“选课注册表单”接口对象响应该请求,并发出“存储”消息。“开设课程”对象响应“存储”消息,进行数据库存储操作,选课数据存入数据库。若“学生”结束选课,发出“退出”系统请求,“注册表单”接口对象响应请求,关闭系统。图10-7为系统的顶层UML用例图。图10-8为选课注册顺序图。
问答题[说明]用创建Thread类的子类的方法实现多线程,判断一个数是否是素数。如果是,打印“是素数”,如果不是,则打印“不是素数”,如果没有参数输入,显示“请输入一个命令行参数”。[Java程序]
问答题某宾馆拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。[需求分析结果](1)员工信息主要包括员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。岗位有管理和服务两种。岗位为“管理”的员工可以更改(添加、删除和修改员工表中的本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为“服务”的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。(2)部门信息主要包括部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只有一位负责人。(3)客房信息包括客房号、类型、价格、状态等信息。其中类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。{{U}}1{{/U}}客户信息包括身份证号、姓名、性别、单位和联系电话。{{U}}2{{/U}}客房预订情况包括客房号、预订日期、预订入住日期、预订入住天数、身份证号等信息。一条预订信息必须且仅对应一位客户,但一位客户可以有多条预订信息。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图(不完整)如图所示。[逻辑结构设计]逻辑结构设计阶段设计的部分关系模式(不完整)如下。员工({{U}}{{U}}1{{/U}}{{/U}},姓名,出生年月,性别,岗位,住址,联系电话,密码)权限(岗位,操作权限)部门(部门号,部门名称,部门负责人,电话)客房({{U}}{{U}}2{{/U}}{{/U}},类型,价格,状态,入住日期,入住时间,员工号)客户({{U}}{{U}}3{{/U}}{{/U}},姓名,性别,单位,联系电话)更改权限(员工号,{{U}}{{U}}4{{/U}}{{/U}},密码,更改日期,更改时间,管理员号)预订情况({{U}}{{U}}5{{/U}}{{/U}},预订日期,预订入往日期,预订入住天数)
问答题已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图所示。其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示了。当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类。例如,图中的类MyApplication和类MyDocument,并分别实现Application和Document类中的某些方法。已知Application类中的openDocument方法采用了模板方法(TemplateMethod)设计模式,该方法定义了打开文档的每一个主要步骤如下:{{U}}{{/U}}首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回。{{U}}{{/U}}创建文档对象。{{U}}{{/U}}通过文档对象打开文档。{{U}}{{/U}}通过文档对象读取文档信息。{{U}}{{/U}}将文档对象加入到Application的文档对象集合中。[Java代码]abstractclassDocument{publicvoidsave(){/*存储文档数据,此处代码省略*/}publicvoidopen(StringdocName){/*打开文档,此处代码省略*/publicvoidclose(){/*关闭文档,此处代码省略*/}publicabstractvoidread(StringdocName);};abstractclassAppplication{privateVector<{{U}}{{U}}{{/U}}{{/U}}>docs;/*文档对象集合*/publicbooleancanOpenDocument(StringdocName){/*判断是否可以打开指定文档,返回真值时表示可以打开,返回假值表示不可打开,此处代码省略*/}publicvoidaddDocument(DocumentaDocument){/*将文档对象添加到文档对象集合中*/docs.add({{U}}{{U}}{{/U}}{{/U}});}publicabstractDocumentdoCreateDocument();/*创建一个文档对象*/publicvoidopenDocument(StringdocName){/*打开文档*/if({{U}}{{U}}{{/U}}{{/U}}){System.out.println("文档无法打开!");return;}{{U}}{{U}}{{/U}}{{/U}}adoc={{U}}{{U}}{{/U}}{{/U}};{{U}}{{U}}{{/U}}{{/U}};{{U}}{{U}}{{/U}}{{/U}};{{U}}{{U}}{{/U}}{{/U}};}};
问答题[说明]以下VisualBasic代码实现了对位图(BMP)进行旋转显示。以下程序共实现了对BMP位图图形进行180°旋转、90°旋转(顺时针)、90°旋转(逆时针)、水平翻转、垂直翻转共5项处理。显示界面如图12-8所示。仔细阅读[代码7-1]至[代码7-3],完成(n)代码,并写在对应栏内。[代码7-1]BeginVB.FormForm1AutoRedraw=-1'TrueCaption="图像的施转"//...窗体描述(略)BeginVB.CommandButtonCommand7Caption="退出"//...窗体描述(略)EndBeginVB.CommandButtonCommand6Caption="复位"//...窗体描述(略)EndBeginVB.CommandButtonCommand5Caption="垂直翻转"//...窗体描述(略)EndBeginVB.CommandButtonCommand4Caption="水平翻转"//...窗体描述(略)EndBeginVB.CommandButtonCommand3Caption="90°(逆时针)"//...窗本描述(略)EndBeginVB.CommandButtonCommand2Caption="90°(顺时针)"//...窗体描述(略)EndBeginVB.PictureBoxPicture2//...窗体描述(略)EndBeginVB.CommandButtonCommand1Caption="180°"//...窗体描述(略)EndBeginVB.PictureBoxPicture1//...窗体描述(略)EndEnd[代码7-2]PrivateDeclareFunctionBitBltLib"gdi32"(ByValhDestDCAsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValdwRopAsLong)AsLongConstsrcopy=&HCC0020DimhAsIntegerDimwAsIntegerPrivateSubForm_Load()Picture2.Picture=LoadPicture(App.Path&"/a01.bmp")'导入图片'h=Picture1.Heightw=Picture1.WidthEndSub[代码7-3]PrivateSubCommandl_Click()旋转180°Picture2.Picture=LoadPicture("")Forj=0TohStep1Fori=0TowStep1(1)NextiNextjEndSubPrivateSubCommand2_Click()'顺时针施转90°'Picture2.Picture=LoadPicture("")Fori-hTo0Step-1Forj-0TowStep1(2)NextjNextiEndSubPrivateSubCommand3_Click()'逆时针旋转90°'Picture2.Picture=LoadPicture("")Forj=wTo0Step-1Fori=0TohStep1(3)NextiNextjEndSubPrivateSubCommand4Click()'水平翻转Picture2.Picture=LoadPicture("")Fori=wTo0Step-1Forj=0TohStep1(4)NextjNextiEndSubPrivateSubCommand5_Click()'垂直翻转Picture2.Picmre=LoadPicmre("")Forj=0TohStep1Fori=0TowStepI(5)NextiNextjEndSubPrivateSubCommand6_Click()'复位Picture2.Picture=LoadPicmre("")Fori=0TowStep1Forj=0TohStep1(6)NextjNextiEndSub
问答题【说明】图书管理系统详细记录图书库存情况、读者信息及读者借阅记录(包括借书日期和还书日期)。新书入库时要为该书编制图书卡片,包括分类目录号、图书流水号(要保证每本书都有唯一的流水号,即使同类图书也是如此)、书名、作者、内容摘要、价格和购书日期。同一个书名由于版次、作者等不同有可能存在多“种”图书,其间用“分类目录号”区分。系统为每一位合法读者编制一个唯一的借书证号,读者需要提供姓名、单位。一个读者最多可以同时借阅5本图书。借阅图书时,新添借阅记录,并将对应的“归还标记”字段置为“false”,表示“尚未归还”;归还图书时,将相应的“归还标记”字段置为“true”,表示“已经归还”。一本书可能供多位读者借阅,同一本书读者可以重复借阅。如图9-17所示为该系统的E-R图。
问答题阅读下列说明和图,回答问题1至问题3。[说明]某大型旅店为了便于管理,欲开发一个客房管理系统。希望实现客房预定、入住登记、帐务结算、退房,以及将服务项目记入客人帐单。旅客包括散客和团体,散客预定或入住时需要提供姓名、性别、身份证和联系电话,团体则提供团体名称、负责人的姓名、性别、身份证和联系电话,以及团体人数。对于散客,还要提供换房。旅店还提供了很多服务项目,比如早餐。对每一个入住客人,服务列表记录了住宿期间的各项服务,包括服务类型、日期、数量等。当然,客人也可以不要任何服务。旅店的客房有一个唯一的房间号,分为不同的类别,不同的房间床位数和价格不同。为了有效的管理,需要记录每天的客房状态。客房的状态有:空闲、占用、已预定和维修。·客人入住后,客房处于占用状态;·客人退房后,客房处于空闲状态;·客人预定后,客房处于已预定状态;·预定客人入住后,客房处于占用状态;·预定客人取消预定后客房处于空闲状态;·需要维修时客房处于维修状态;·维修完成后客房处于空闲状态。该系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图3-1是该系统的类图的一部分,图3-2描述了客房状态的转变情况。[图3-1][图3-2]1.请用图3-1的属性和方法的名称给出客人类的属性和方法。(注意:团体类中的负责人姓名等与散客的对应属性含义相同,不必区分)