问答题

【说明】
关于一位花商有以下一些事实。
(1)销售在不同地区生长的花,这些地区一年的最低气温在一定范围内变化。
(2)想用编号来表示发货类型。
(3)要出售某些类型的花。
假定已经通过SQL语句建立了基本表:
CREATE TABLE Zone(ID CHAR(2) PRIMARY KEY,
LowerTemp NUMERIC(3),
UpperTemp NUMERIC(3));
CREATE TABLE Delivery(ID CHAR (2) PRIMARY KEY,
Category CHAR(5),
DelSize NUMERIC(5,3));
CREATE TABLE FlowerInfo(ID CHAR (3),
ComName CHAR(25),
LatName CHAR(30),
Czone NUMERIC(3),
Hzone NUMERIC(3),
Delivered NUMERIC(3),
SunNeed CHAR(3),
PRIMARY KEY(ID));
地区(ID,最高温度,最低温度)
发货(ID,发货类型,发货规格)
花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)
【问题2】
写出SQL语句实现如下功能:查询以花瓶(pot)形式发货的所有鲜花的ID、普通名及花瓶的规格,得到结果表按照普通名的字母逆序打印。

【参考答案】

SELECT FlowerInfo.ID,FlowerInfo.ComName,Delivery.DelSize
......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
【说明】 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为: m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2] 其中a[1]保存该长整数的位数,a[0]保存该长整数的符号:0表示正数,1表示负数。 运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减的情况。注:不考虑溢出情况,即数组足够大。 【函数】 int cmp(int *LA, int *LB); *比较长整数LA与LB的绝对值大小* *若LA绝对值较大返回正值,LA较小返回负值,相等则返回0* int ADD(int *LA, int*LB, int *LC) *计算长整数LA与LB的和,结果存储于LC中* *注意:正数与负数的和相当于正数与负数绝对值的差* *数据有误返回0,正常返回1* if(LA==NULL || LB==NULL || LC==NULL)return 0; int *pA, *pB,i,N,carry,flag; flag=LA[0]+LB[0]; switch(flag) *根据参与运算的两个数的符号进行不同的操作* case 0: case 2: LC[0]=LA[0]; *LA与LB同号,结果符号与LA(LB)相同* pA=LA; pB=LB; (1) ; break; case 1: *LA与LB异号* *比较两者的绝对值大小,结果符号与较大者相同* flag= (2) ; if(flag>0) *LA较大* LC[0]=LA[0]; pA=LA; pB=LB; else if(flag<0) *LB较大* LC[0]=LB[0]; pA=LB; pB=LA; else *LA与LB相等* LC[0]=0; LC[1]=0; return 1; flag=-1; break; default: return 0; break; *switch* *绝对值相加减* *注意对于减法pA指向较大数,pB指向较小数,不可能出现不够减的情况* (3) ; N=LA[1]>LB[1]LA[1]:LB[1]; for(i=0;i<N;i++) if(i>=pA[1]) *LA计算完毕* carry+=flag *pB[i+2]; else if(i>=pB[1]) *LB计算完毕* carry +=pA[i+2]; else carry +=pA[i+2]+flag *pB[i+2]; LC[i+2]=Carry%10; carry =10; if( (4) ) *需要借位,针对减法* LC[i+2]+=10; carry--; *for* if( (5) ) *最高进位,针对加法* LC[i+2]=carry; i++; if(LC[i+1]==0)i--;严若最高位为零,针对减法* LC[1]=i; return 1; ; *ADD*
问答题
【说明】 现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1, y1,x2,y2)画一条直线,DF2则用drawline(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现 部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图9-7显示了各个类间的关系。 这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是 C++语言实现,能够正确编译通过。 【C++代码】 class DP1 public: static void draw_a_line(double x1, double y1,double x2, double y2) 省略具体实现 ); class DP2 public: static void drawline(double x1, double x2,double y1, double y2) 省略具体实现 ; class Drawing public: (1) void drawLine(double x1,double y1,double x2,double y2)=0; ; class V1Drawing:public Drawing public: void drawLine(double x1, double y1,double x2, double y2) DP1::draw_a_line(x1,y1,x2,y2); ; class V2Drawing:public Drawing public: void drawLine(double x1, double y1, double x2, double y2) (2) ; ; class Shape private: (3) _dp; public: Shape(Drawing *dp); virtual void draw()=0; void drawLine(double x1, double y1, double x2, double y2); ; Shape::Shape(Drawing *dp) _dp = dp; void Shape::drawLine(double x1, double y1, double x2, double y2) 画一条直线 (4) ; class Rectangle: public Shape private: double _x1,_y1,_x2,_y2; public: Rectangle(Drawing *dp, double x1, double y1, double x2, double y2); void draw(); ; Rectangle::Rectangle(Drawing *dp, double x1, double y1, double x2, double y2) : (5) _x1=x1;_y1=y1;_x2=x2;_y2=y2; void Rectangle::draw() 省略具体实现