阅读下列说明以及图3-1和图3-2,回答问题1、问题2和问题3。
[说明]
下面是某公司开发的电梯管理系统,系统功能如下:
1.响应用户召唤指令。当用户需要电梯时可以通过按楼层面板召唤。
2.进入电梯后,乘客可以通过电梯面板选择目的楼层。
3.当电梯到达调度楼层后,判断是否响应停止运行,开启电梯门,完成调度。
4.当电梯到达非调度楼层时,不作响应,继续运行。
5.乘客在电梯中能够知道电梯的运动状态,如运动方向、电梯运行到的楼层等。
6.电梯超载报警。
系统采用面向对象方法进行开发。在开发过程中某设计室设计的电梯管理系统用例如表9-4所示。电梯管理系统用例图如图9-4所示。
根据说明,回答下面问题:
仔细分析系统的用例说明和用例图,从功能要求角度来看,该系统的用例并不完善。请根据功能要求补充至少两个用例,并作简单说明。
第1题
如下的SQL语句是检索“每个学生及其选修的课程名和成绩”的不完整语句,请在空缺处填入正确的内容。
SELEC(1)
FROM(2)
WHERE(3)
第2题
阅读以下说明和表,回答问题1~3问题。
[说明]
在学校中,存在以下关系:
(a)一个系有若干学生,但一个学生只能在一个系;
(b)一个学生可以选修多门课程,每门课程有若干学生选修;
(c)每个学生所学的每门课程都有一个成绩。
该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。
(a)表一:学生信息表STUDENT(STID,NAME,AGE,DEPTNO),其中,STID表示学号,NAME表示学生姓名,AGE表示年龄,DEPTNO表示系号。
(b)表二:课程表COURSE(COID,NAME),其中,COID表示课程号,NAME表示课程名。
(c)表三:成绩表SCORE(SCID,COID,GRADE),其中,SCID表示学号,COID表示课程号, GRADE表示成绩,成绩为空时表示这学期正在上的课程。
根据要求将SQL语句补充完整。
(1)查询各系的学生数
SELECT(1),COUNT(*)(2)
GROUP BY DEPTNO;
(2)更改课程号为C601的课程名为“大学物理”
UPDATE(3)SET(4)
(3)基于学生信息表,建立一个计算机系(系编号为D01)的学生视图。写出命令。
CREATE OR REPLACE VIEW V_STUDENT
AS(5)
第4题
阅读以下说明,将应填入(n)处的字句写在答卷纸的对应栏内。
【说明】
下面的程序为堆排序程序,其中函数adjust(i,n)是把以R[i](1≤i≤┕i/2┙)为根的二叉树调整成堆的函数,假定R[i]的左、右子树已经是堆,程序中的,是在主函数中说明的结构数组,它含有要排序的n个记录。
【程序】
Void adjust(i,n)
Int i,n;
{
iht k,j;
element extr;
extr=r[i];
k=i;
j=2*i;
while (j<=n )
{if ((j<n) && (r[j].key<r[j+1].key))
(1);
if (extr. key<r[j].key)
{
r[k]=r[j];
k=j;
(2);
}
else
(3);
}
r[k]=extr;
}
/*让i从┗i/2┛逐步减到1, 反复调用函数adjust, 便完成建立初始堆的过程。*/
void heapsort (r,n)
list r;
int n;
{
int i,1;
element extr;
for (i=n/2;i>=1;- -i)
(4); /* 建立初始堆*/
for (k--n;k>=2;k- -)
{
extr=r[1];
r[1]=r[k];
r[k]=extr;
(5);
}
}
第5题
阅读以下说明和数据流图,回答问题1~问题3,将解答写在对应栏内。
[说明]
实验室信息管理系统完成对实验室的开放课题的管理工作。实验室信息管理系统主要完成课题申请、评审、课题结题以及课题信息查询工作。
申请人申请课题时,访问实验室主页提交课题申请,经过专业审核后,将申请结果反馈给申请人,同时系统将记录课题申请书及其相关信息,以供查询。“年度汇总”将对当年课题申请信息进行汇总。
申请人完成课题后需要登录实验室主页申请结题。收到结题申请后,经过专家评审后,结题结果将通过E-mail反馈给申请人,同时系统将结题结果作为实验室课题信息记录成文件,以供查询,如果评审通过,该课题作为科研成果,系统并记录以供查询。
对于实验室信息的查询需要进行身份验证。验证通过后,可以查询到“历年课题申请书”、“实验室课题一览表”、“开放课题成果汇总表”、“历年结题申请书”等信息。对于实验课题可以获得课题编号和名称、课题的经费额、课题起始日期和结题日期,课题申请人姓名、工作单位、电话以及email地址等信息。
数据流图8-5缺少了一条数据流,请给出此数据流的起点和终点,并采用说明中的词汇给出此数据流名。
第6题
阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如左下所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如右下所示。
右上图中,类RomoteController的方法onPressButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(int degree)方法用于调整电灯灯光的强弱,参数 degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中 setChannel(int channel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。
【C++代码】
class Light{ //电灯类
public:
void trunLight(int degree){//调整灯光亮度,0表示关灯,100表示亮度最大);
};
class TV{//电视机类
public:
vold setChannel(int channel]{//调整电视频道,0表示关机,1表示开机并切换到1频道};
};
class Command{//抽象命令类
public:
virtual void on()=0;
virtual void off()=0;
};
class RemoteController{ //遥控器类
protected:
Command* commands [4];//遥控器有4个按钮,按照编号分别对应4个Command对象
public:
void onPressButton(int button){ //按钮被按下时执行命令对象中的命令
if(button % 2==0)commands[button]->on();
else commands[button]->off();
}
void setCommand(int button,Command* command){
(1)=command;//设置每个按钮对应的命令对象
}
};
class LightCommand:public Command{ //电灯命令类
protected: Light* light; //指向要控制的电灯对象
public:
void On(){light->trunLight(100););
void off()[light->(2););
LightCommand(Light * light){this->light=light;);
};
class TVCommand:public Command{//电视机命令类
protected: TV*tv; //指向要控制的电视机对象
public:
void on(){tv->(3);};
void off(){tv->setChannel(0););
TVCommand(TV *tv){this->tv=tv;);
};
void main(){
Light light; TV tv;//创建电灯和电视对象
LightCommand lightCommand (&light);
TVCommand tVCommand(&tv);
RemoteController remoteController;
remoteController. setCommand(0,(4)); //设置按钮0的命令对象
…//此处省略设置按钮1、按钮2和按钮3的命令对象代码
}
本题中,应用命令模式能够有效让类(5)和类(6)、类(7)之间的耦合性降至最小。
第7题
阅读下列说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
栈(Stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(Stock Top),而另一端称为栈底(Stock Bottom)。栈的基本操作包括:创建栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否已满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。
当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存储(如下图所示)。
以下C代码采用链式存储结构实现一个整数栈操作。
【C代码】
typedef struct List {
int data; //栈数据
struct List* next; //上次入栈的数据地址
}List;
typedef struct Stack{
List* pTop; //当前栈顶指针
}Stack;
Stack* NewStack() {return (Stack*) calloc(1/sizeof(Stack));}
int IsEmpty(Stack* S){//判断栈S是否为空栈
if((1))return 1;
return 0;
}
int Top(Stack* s){//获取栈顶数据。若栈为空,则返回机器可表示的最小整数
if(IsEmpty(S))return INT_ MIN;
return (2);
}
void Push(Stack* S,int theData) {//将数据theData压栈
List* newNode;
newNode=(List*)calloc(1/sizeof (List));
newNode->data=theData;
newNode->next=S->pTop;
S->pTop=(3);
}
void Pop(Stack* S) {//弹栈
List* lastTop;
if(IsEmpty(S) ) return;
lastTop=S->pTop;
S->pTop=(4);
free(lastTop);
}
define MD(a) a<<2
int main(){
int i;
Stack* myStack;
myStack= NewStack();
Push(myStack,MD(1));
Push(myStack,MD(2));
Pop(myStack);
Push(myStack,MD(3)+1);
while( !IsEmpty(myStack) ){
printf("%d",Top(myStack));
Pop(myStack);
}
return 0;
}
以上程序运行时的输出结果为:(5)
第8题
阅读以下说明和数据流图,回答问题1~3问题。
[说明]
学生信息管理系统旨在用微型计算机对全校的学生事务进行管理,其内容包括新生管理、成绩管理、重修管理、毕业资格审定以及随机查询和打印报表等。
教务人员在进入系统时,系统通过注册登录来提供用户的访问权限,系统会检查用户的合法性,如不合法,系统拒绝用户进入,如是合法用户,则根据命令要求类型处理。本系统主要有新生管理、成绩管理、重修处理、资格审定四大功能,分别进行不同的管理。
新生管理首先按照各专业录入新生信息,录入时若录入的信息不完整,则给出提示信息,要求用户录入完整信息;若新生库中已经存在该生信息了,则给出提示信息,保证不重复录入新生信息。在录入阶段,会显示新生库中的记录,可以进行浏览、删除、修改等操作,以便用户录入正确无误的新生信息。录入完毕后,打印编好学号和分好班次的新生名单并将新生记录写入学生信息库。
成绩管理使用一般方法和特殊方法对学生成绩进行管理。分别按照这两种方法进行成绩的录入和计算。成绩处理完毕后,合并到学生成绩库,可以对学生成绩总库进行浏览、修改、删除、插入、查找等操作,同时提供成绩查询功能,可按照学号、姓名、课程号、课程名称、专业班级查询学生成绩,最后打印各种形式的学生成绩单。
重修处理首先对学生重修总体情况进行浏览,可以查询未交费学生重修情况、某个学生重修情况等,打印各种形式的重修单和重修证。另外进行重修交费登记,输入某个重修学生学号,则显示该生相关信息 (姓名、专业等)、重修课程信息、重修总学分、应交金额等,交费登记后,写入重修表和交费表。资格审定主要对毕业生的毕业资格进行审定,计算毕业生的已修学分,审定后填写资格库,显示审定结果,打印毕业生资格表和毕业证书等。
学生信息管理系统顶层图如图10-1所示;学生信息管理系统的第0层DFD图如图10-2所示,其中,加工3的细化图如图10-3所示,加工4的细化图如图10-4所示。
[数据流图 10-1]
(1)数据流图10-2缺少了一条数据流,请给出此数据流的指向,并采用说明中的词汇给出此数据流名。
(2)数据流图10-3缺少一条数据流,请根据说明补充完整。并指出此数据流的起点和终点。
第10题
阅读以下说明和Visual Basic 码,将应填入(n)处的字名写在的对应栏内
[说明] 这是一个用户名校验程序,如用户名正确,即输出欢迎字样,否则,弹出警告窗并直接退出程序。下面是实现上述功能的程序,请填空。“Option Explicit”此语句的作用:强制显示声明
Dim UserName (2) As String
Dim Flag As Boolean
(1)
Private Sub Form. _ Load( )
UserName (0) = "AA": UserName (1) = "BB": UserName(2) = "CC"
Flag = False
inputName = InputBox( “请输入名称:“,”身份确认”“,”)
Dim i As Integer
For i = 0 To False
If inputName = UserName(i) Then
(2)
End If
Next i
If (3) Then
MsgBox “用户身份确失败!退出应用”, vbOKOnly, “警告”
End
End If
End Sub
Private Sub Form_ Paint( )
(4)
End Sub
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!