工商局、质监局和地税局等部门的业务系统不变的情况下,应用Web Service技术,只提供基于(6)的数据访问接口,该接口使用(7)规范准确地描述为共享数据发布服务,并将该描述发布到(8)供服务请求者查找绑定和使用,通过这种方式来实现各个部门共享数据。
第2题
试题六(共15分)
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据库表Department为例,其类图如图6-1所示。
【Java代码】
import java.util.*;
class Department{/*代码省略*/}
interface IDepartment{
(1) ;
(2) ;
}
class SqlserverDepartment (3) {
public voidInsert(Department department){
System.out.println(”Insert a record into Department in SQL Server!");
∥其余代码省略
}
public Department GetDepartment(int id){
/*代码省略*/
}
}
classAccessDepartment(4) {
public void Insert(Department department){
System.out.println("Insert a record into Department in ACCESS!”);
∥其余代码省略
}
public Department GetDepartment(int id){
/*代码省略*/
}
}
(5) {
(6) ;
}
class SqlServerFactory implements IFactory{
public IDepartment CreateDepartment(){
retum new SqlserverDepartment();
}
∥其余代码省略
}
class AccessFactory implements IFactory{
public IDepartment CreateDepartment(){
return new AccessDepartment();
}
∥其余代码省略
}
第3题
阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。
【说明】下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot时,采用从left、right和mid=[(left+right)/2]中取中间值,并交换到right位置的办法。数组a存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。
void quicksort (int a[], int left, int right) {
int temp;
if (left<right) {
hat pivot = median3 (a, left, right); //三者取中子程序
int i = left, j = right-1;
for(;;){
while (i <j && a[i] < pivot) i++;
while (i <j && pivot < a[j]) j--;
if(i<j){
temp = a[i]; a[j] = a[i]; a[i] = temp;
i++; j--;
}
else break;
}
if (a[i] > pivot)
{temp = a[i]; a[i] = a[right]; a[right] = temp;}
quicksort( (1) ); //递归排序左子区间
quieksort(a,i+1 ,right); //递归排序右子区间
}
}
void median3 (int a[], int left, int right)
{ int mid=(2);
int k = left;
if(a[mid] < a[k])k = mid;
if(a[high] < a[k]) k = high; //选最小记录
int temp = a[k]; a[k] = a[left]; a[left] = temp; //最小者交换到 left
if(a[mid] < a[right])
{temp=a[mid]; a[mid]=a[right]; a[right]=temp;}
}
消去第二个递归调用 quicksort (a,i+1,right)。 采用循环的办法:
void quicksort (int a[], int left, int right) {
int temp; int i,j;
(3) {
int pivot = median3(a, left, right); //三者取中子程序
i = left; j = righi-1;
for (;; ){
while (i<j && a[i] < pivot)i++;
while (i<j && pivot <a[j]) j--;
if(i <j) {
temp = a[i]; a[j]; = a[i]; a[i]=temp;
i++; j--;
}
else break;
}
if(a[i]>pivot){(4);a[i]=pivot;}
quicksoft ((5)); //递归排序左子区间
left = i+1;
}
}
第5题
阅读下列说明和有关图表,回答问题1至问题3。
【说明】
A公司决定开发一套公共交通自动售票系统,系统要求如下所述。
(1)乘客能按以下3步操作购票:选定目的地,投入钱币,获得一张票。
(2)并且仅当乘客选定目的地后,系统才接收投钱;每次投入的钱只购买一张票。
(3)只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票。
(4)如需找钱,则在出票的同时应退还多余的钱。
(5)如果乘客投入的钱不够票价,或者票库中没有所需要的票时,系统将全额退钱,并允许乘客另选目的地,继续购票。
(6)出票前乘客可以单击“取消”按钮取消购票,系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票。
(7)出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。
该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚
线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。
对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用“”形式注明。
该公司还制定了一个过程启动表,用以表明状态迁移图中的4个动作与转换图中的4个过程之间的“启动”关系,即说明哪个动作将启动哪个过程。用1表示启动,用0表示不启动。启动的过程将根据获得的输入数据产生输出数据,未唐动的过程则不会产生输出数据,该表中没有列出的过程,其执行与否与事件无关。
【问题1】
转换图中缺少哪3条数据流?请指明每条数据流的名称、起点和终点。
【问题2】
在状态迁移图中,a、b、c分别表示什么事件?请用转换图中给出的事件名解答。
【问题3】
在过程启动表中,d、e处应填什么?请分别用4位二进制码表示。
根据以下关于学校构成的说明回答问题1至问题3。
【说明】
学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授各带有若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。
【问题1】
用E-R图画出此学校的概念模型,用文字写出各实体和联系的属性。
【问题2】
将E-R图转换成关系模型。
【问题3】
指出各关系模型的候选键。
第6题
阅读下列Java程序和程序说明, 将应填入(n)处的字句写在答题纸的对应栏内。
【说明】数据排序。将给定的n个整数分别按照升序和降序进行排列。
class SortInt_1
{
int i, j, k, temp;
void SortInt(int a1, a2[]){//升序排序
for(i=0; i<a1-1; i++){
k=i;
for(j=i+1 ;j<a1 ;j++)
if ((1)) k=j;
if(k!=i){
temp=a2[i];a2[i]=a2[k];a2[k]=temp;
}
}
}
}
class Sortlnt_2 (2)
{
int i, j, k, temp;
void Sortlnt(int a1,a2[]){//降序排序
for(i=0;i<a1-1 ;i++) {
k=i;
for(j=i+1 ;j<a1 ;j++)
if ((3)) k=j;
if(k!=i){
temp=a2[i];a2[i]=a2[k];a2[k]=temp;
}
}
}
}
Class TestOverLoad {
Public static void main(String args[])
{
int a[]={10,55,100,35,87,90,100,16};
Sortlnt_1 newlnt1=(4);
Newlnt1. SortInt(a. length, a);//调用SortInt_1类的方法
System. out. println("升序排列的数据");
For(int i=0;i<8;i++)
System. out. print(a[i]+" ");
system. out. println();
SortInt_2 newInt2=new sortint_2(); //创建类SortInt_2的对象
(5);
System. out. println("降序排列的数据: ");
For(int i=0;i<8;i++)
System. out. print(a[i]+" ");
}
}
第7题
阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。
【说明】
本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列(先行后列)序号排列为:0,1,2,3,4,5,6,7,8。
程序采用试探法,即从序号为0的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为8的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序引入二维数组check Matrix,存放需要进行合理性检查的相邻方格的序号。
include <stdio. h>
define N 12
int b[N+1];
int pos;
int a[9];/* 用于存储诸方格所填入的整数*/
int AllNum=0;/* 统计有多少种填法*/
int checkMatrix[][3]={ {-1},{0,-1},{1,-1},
{0,-1},{1,3,-1},{2,4,-1},
{3,-1},{4,6,-1},{5,7,-1}};
void write(int a[])
{ int i, j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("%3d", a[3*i+j]);
printf("\n");
}
}
int isPrime(int m)
{ int i;
if(m==2)return 1;
if(m==1 ‖ m%2==0)return 0;
for(i=3; i*i<m;)
{ if(m%i==0)return 0;
i+=2;
}
return 1;
}
int selectNum(int start)
{ int j;
for(j=start; j<=N; j++)
if(b[j])return j;
return 0;
}
int check()/*检查填入pos位置的整数是否合理*/
{ int i,j;
for(i=0; (j=(1))>=0; i++)
if(!isPrime(a[pos]+a[j]))
(2);
(3);
}
extend ()/* 为下一方格找一个尚未使用过的整数*/
{ a[(4)]=selectNum(1);
b[a[pos]]=0;
}
void change ()/*为当前方格找下一个尚未使用过的整数(找不到回溯)*/
{ int j;
while(pos >=0 && (j=selectNum((5)))==0)
b[a[pos--]]=1;
if(pos<0)return;
b[a[pos]]=1; a[pos]=j; b[j]=0;
}
int find ()
{ int k=1;
pos=0; a[pos]=1; b[a[pos]]=0;
do{
if(ok)
if(pos==8)
{ write(a);
change();
AllNum++;/* 统计有多少种填法*/
}
else extend();
else change();
k=check();
}while(pos>=0);
}
void main()
{ int i;
for(i=1; i<=N; i++) b[i]=1;
find();
prinrf("共有%d种不同填法!/n", AllNum);
}
第8题
【说明】
一个图书馆信息管理系统的分析与建模。下面是某图书馆的有关介绍。
图书馆雇有若干管理员,各自具有编码、姓名等属性。管理员可上岗,也可下岗。
图书馆中备有若干图书,每本图书有书号、书名、出版社、价格等属性。图书馆不定期地购买并注册新图书供读者借阅,也可将报废的旧书注销以停止借阅。
图书馆可为众多读者提供服务。每个读者在借阅之前需注册姓名、性别、地址、Email等内容。读者可在终端上查询。每个读者最多可同时借阅5本书。每本图书借期为30天;若有一本书超期,则不可再借其他图书。一本书超期一天罚款0.1元。若一本书超期3个月不归还,则发布通告。若读者的图书丢失,在罚款处理之前不能借书,每本报失的图书罚款该书价的2倍。注册新读者不受限制;在注销读者之前,该读者必须归还所有借阅的图书,或者报失并接受罚款。
在需求分析阶段,采用UML的用例图描述系统功能需求,如图1-6所示。指出图1-6中(1)(2)、(3)、(4)分别是哪个用例?
第9题
并修改顾客的累积消费金额和积分点。请给出新增加的积分卡关系模式,并对销售详单关系模式进行修正,指出修正后关系模式和新增关系模式的候选键(用实下画线表示)和外键(用虚下画线表示)。
[附]
关系模式的标记规则如下:
关系名(属性名1,属性名2,…,属性名n)
其中:
①若该属性仅为主键属性时,则该属性名下画实下画线;
②若该属性仅为外键属性时,则该属性名下画虚下画线;
③若该属性既是主键属性,又是外键属性时,则在该属性名下画实下画线和虚下画线;
④若该属性既不是主键属性,又不是外键属性时,则在该属性名下不做标记。
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!