阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E-SQL编写的部分售票代码: EXEC SQL SELECT balance INTO:x FROM tickets WHERE flight=:flightno; printf("航班%s当前剩余机票数为:%d\n请输入购票数:", flightno,x); scanf("%d",&a); EXEC SQL UPDATE tickets SET balance =x =:a WHERE flight=:flightno;请根据上述描述,完成下列问题。【问题1】上述售票程序,在并发状态下,可能发生什么错误?产生这种错误的原因是什么?【问题2】若将上述代码封装成一个完整的事务,则:(1)在并发请求下的响应效率会存在什么问题?(2)分析产生效率问题的原因。(3)给出解决方案。【问题3】下面是改写的存储过程,其中flightno为航班号;a为购票数;result为执行状态:1表示成功,0表示失败;表tickets中的剩余机票数balance具有大于等于零约束。请补充完整。CREATE PROCEDRUE buy_ticket(char[]flightno IN,( a ), int result OUT)AS BEGIN … UPDATE tickets SET balance=( b ) WHERE flight=flightno; if (sqLcode<>SUCCESS){ //sqLcode为SQL语句的执行状态( c ); result=0; return; } COMMIT;( d )END

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E-SQL编写的部分售票代码: EXEC SQL SELECT balance INTO:x FROM tickets WHERE flight=:flightno; printf("航班%s当前剩余机票数为:%d\n请输入购票数:", flightno,x); scanf("%d",&a); EXEC SQL UPDATE tickets SET balance =x =:a WHERE flight=:flightno;请根据上述描述,完成下列问题。【问题1】上述售票程序,在并发状态下,可能发生什么错误?产生这种错误的原因是什么?【问题2】若将上述代码封装成一个完整的事务,则:(1)在并发请求下的响应效率会存在什么问题?(2)分析产生效率问题的原因。(3)给出解决方案。【问题3】下面是改写的存储过程,其中flightno为航班号;a为购票数;result为执行状态:1表示成功,0表示失败;表tickets中的剩余机票数balance具有大于等于零约束。请补充完整。CREATE PROCEDRUE buy_ticket(char[]flightno IN,( a ), int result OUT)AS BEGIN … UPDATE tickets SET balance=( b ) WHERE flight=flightno; if (sqLcode<>SUCCESS){ //sqLcode为SQL语句的执行状态( c ); result=0; return; } COMMIT;( d )END


参考解析

解析:【问题1】本题考查事务基本概念及编程应用。此类题目要求考生认真阅读题目对实际问题的描述,分析现实业务中存在的问题,并以事务的方式提出解决方案及编程中的处理方式。根据题目描述的售票程序及部分代码,程序的逻辑是正确的,但在并发状态下,可能会产生错误。修改指令UPDATE会被分解为读取剩余票数到变量、修改变量、写入数据库几个步骤,并发时存在指令交叉,造成一个程序的修改被其他程序所覆盖,称为丢失修改错误。如下面所示的一个并发调度:



若上面所示的两个售票程序并发执行,两个程序先读取剩余票数据A(当前值为16)T1购票1张后,写入剩余票数为15,T2购票2张后,写入剩余票数为14。T1写入的15被T2写入的14所覆盖,T1所做的修改丢失。上述两个程序单独执行或串行执行都不会出现这种错误,错误产生的原因在于事务并发执行时受到另一事务的干扰,破坏了事务的隔离性。【问题2】封装的事务由两条SQL语句构成,中间存在与用户的交互,等待用户输入购票张数,会造成长事务,加锁状态下,其他购票事务程序会长时间等待,严重影响系统的响应速度。应将查询票数从事务中分离出来,UPDATE指令独立构成一个事务。【问题3】这是一个用存储过程实现购票的事务程序,存储过程参数部分给出了航班号和执行状态返回参数,应加入购票张数作为参数;修改剩余票数的UPDATE语句处需补充的是当前票数减去购票张数;SQL语句执行错误时应该进行事务回滚并退出程序,所有事务代码执行完成后提交,并返回。

相关考题:

试题五(15 分 )阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】飞机票售票系统,可以同时为多个顾客提供售票服务。一次售票交易主要由查询(R)和购买(W)两个操作组成,而这两个操作之间的间隔可能需要几分钟。 现有两位顾客同时到达一号和二号售票窗口购买机票,一号窗口的查询和购买操作用R1和W1表示,二号窗口的查询和购买操作用R2和W2表示。【 问题1】(5分)根据问题描述,依照下面给出的处理序列,给出可能出现的所有序列。(1)R1 ---------- W1 --------- R2 ---------- W2【 问题2】(6分)现假设航班 MU2211 只剩一张 2007 年 2 月 25 日的机票,并有两位顾客同时到达一号和二号售票窗口购买该票,请问在进行系统设计时,若不做必要的处理会产生什么问题?要避免该问题发生,应采用何种技术?【问题3】(4分)给出采取措施后可能出现的处理序列。

阅读下列说明,回答问题1至问题4,将解答填入对应栏内。【说明】Windows Server 2008是基于Windows NT的技术,支持完善的NTFS分区格式。请简要说出NTFS的特点。

阅读以下说明,回答问题,将解答填入对应的解答栏内。[说明] 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。main ( ){int n, i;printf ( "\n please input a number: \n");scanf ( "% d" ,u);printf ( "%d =" ,n);for((1)){while((2)){if((3)){ printf ("%d*",i);(4)}elsebreak;}}printf (“%d”,n);}

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明]下面是用小王用Dreamweaver MX编写的一个网页,如图12-2所示。从这个图片上,我们可以看出小王使用了Dreamweaver MX的哪些功能?

下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLEEXEC SQL SELECT balance INTO :x FROM tickets WHERE flight='A';printf("航班A当前剩余机票数为:%d\n请输入购票数:",x);scanf("%d",&a);x=x-a;if(x<0)EXEC SQL ROLLBACK WORK;printf("票数不够,购票失败!");else{EXEC SQL UPDATE tickets SET (a) ;if(SQLCA.sqlcode<>SUCCESS)EXEC SQL ROLLBACK WORK;else(b) ;}

阅读以下说明和关系表,回答问题1-2,将解答填入对应的解答栏内。[说明]下图是飞机票预定的数据库,售票员的顾客编号是指每个售票员自己接收过哪些顾客的订单,用顾客编号来表示。请用SQL语句来建立这三个基本表:飞机票Ticket、售票员Seller和顾客Customer(请注意数据类型的选择)其中各表属性如下:Ticket:Tno,Tflidltno,Tdate,Tseat,TPrice,Tdest,TdepartSeller:Sno,Sname,Ssex,ScustomernoCustomer:Cno,Cname,Caddr,Cflightno,Cdate

阅读下面的说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。[说明]阅读以下说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。windows Server 2003是一个多任务多用户的操作系统,能够以集中或分布的方式实现各种应用服务器角色,是目前应用比较广的操作系统之一。Windows内置许多应用服务功能,将下表中(1)~(5)处空缺的服务器名称填写在答题纸对应的解答栏内。(1)

阅读下列说明,回答问题1至问题3,将解答填入对应栏内。【说明】飞机票售票系统,可以同时为多个顾客提供售票服务。一次售票交易主要由查询(R)和购买(W)两个操作组成,而这两个操作之间的间隔可能需要几分钟。现有两位顾客同时到达一号和二号售票窗口购买机票,一号窗口的查询和购买操作用R1和W1表示,二号窗口的查询和购买操作用R2和W2表示。根据问题描述,依照下面给出的处理序列,给出可能出现的所有序列。(1)R1-----W1-----R2-----W2

阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。[说明]如图10-4所示是电子商务系统平台结构示意图。请把空缺的地方填写完整。

阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。[说明]电子商务系统的外部社会环境如图10-5所示。请把空缺的地方填写完整。

某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,,n)管理机票销售。假设Tj(j=1,2,,m)单元存放某日某航班的机票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的订票张数。初始化时系统应将信号量S赋值为( )。Pi进程的工作流程如下图所示,若用P操作和V操作实现进程间的同步与互斥,则图中空(a),空(b)和空(c)处应分别填入( )。A.0B.1C.2D.3A.P(S),V(S)和V(S)B.P(S),P(S)和V(S)C.V(S),P(S)和P(S)D.V(S),V(S)和P(S)

阅读以下说明和Java代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 以下Java代码实现两类交通工具(Flight和Train)的简单订票处理, 类Vehicle、Flight、Train之间的关系如图5-1所示。图5-1【Java代码】 import java.util.ArrayList; import java.util.List; abstract class Vehicle { void book(int n) { //订 n张票 if (getTicket0()=n) { decrease Ticket(n); } else { System.out.println(余票不足!!); } } abstract int getTicket(); abstract void decreaseTicket(int n); }; class Flight (1) { Private (2) tickets=216; //Flight的票数 Int getTicket(){ Return tickets; } void decreaseTicket(int n){ tickets=tickets -n; } } class Train (3) { Private (4) tickets=2016; //Train的票数 int getTicket() { return tickets; } void decreaseticket(int n) { tickets = tickets - n; } } public class Test { public static void main(String[] args) { System.out.println(欢迎订票 ! ); ArrayListVehicle v = new ArrayListVehicle(); v.add(new Flight()); v.add(new Train()); v.add(new Flight()); v.add(new Train()); v.add(new Train()); for (int i=0;iv.size(); i++){ (5) (i+1); //订i+1张票 System.out.println(剩余票数: +v.get(i).getTicket()); } } } 运行该程序时输出如下: 欢迎订票! 剩余票数:215 剩余票数:2014 剩余票数: (6) 剩余票数: (7) 剩余票数: (8)

试题四(共25分)阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3。某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票。开发小组经过设计,给出该系统的部分关系模式如下:航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价)代理商(代理商编号,代理商名称,客服电话,地址,负责人)机票代理(代理商编号,航班编号,票价)旅客(身份证号,姓名,性别,出生日期,电话)购票(购票单号,身份证号,航班编号,搭乘日期,购票金额)在提供给用户的界面上,其核心功能是当用户查询某航班时,将该航班所有的代理商信息及其优惠票价信息,返回给用户,方便用户购买价格优惠的机票。在实现过程中发现,要实现此功能,需要在代理商和机票代理两个关系模式上进行连接操作,性能很差。为此开发小组将机票代理关系模式进行了扩充,结果为:机票代理(代理商编号,航班编号,代理商名称,客服电话,票价)这样,用户在查找信息时只需对机票代理关系模式进行查询即可,提高了查询效率。【问题1】(6分) 机票代理关系模式的修改,满足了用户对代理商机票价格查询的需求,提高了查询 效率。但这种修改导致机票代理关系模式不满足3NF,会带来存储异常的问题。 1)请具体说明其问题,并举例说明。 2)这种存储异常会造成数据不一致,请给出解决该存储异常的方案。 【问題2】(9分) 在机票销售信息处理系统中,两个代理商的售票并发执行,可能产生的操作序列如表4-1所示。假设两个代理商执行之前,该航班仅剩1张机票。 1)请说明上述两个代理商操作的结果。 2)并发操作会带来数据不一致的问题,请具体说明3种问题。 【问题3】(10分) 为了避免问题2中的问题,开发组使用库的读写锁机制,操作序列变为表4-2所示。请填写表中的空白项,并用150字以内的文字说明读写锁机制的缺点。

试题五(共15 分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如下表5-1所示:假设某售票网点一次售出a张航班A 的机票,则售票程序的伪指令序列为: R (A, x); W (A, x – a)。根据上述业务及规则,完成下列问题:【问题1】(5 分)若两个售票网点同时销售航班A的机票,在数据库服务器端可能出现如下的调度:A:R1(A, x),R2(A, x),W1(A, x – 1),W2(A, x – 2);B:R1(A, x),R2(A, x),W2(A, x – 2),W1(A, x – 1);C:R1(A, x),W1(A, x – 1),R2(A, x),W2(A, x – 2);其中Ri(A, x),Wi(A, x)分别表示第i个销售网点的读写操作,其余类同。假设当前航班 A 剩余 10 张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。【问题2】(6 分)(1)判定事务并发执行正确性的准则是什么?如何保证并发事务正确地执行?(2) 引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。【问题3】(4 分)下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLEEXEC SQL SELECT balance INTO :x FROM tickets WHERE flight = ‘A’ ;printf("航班A 当前剩余机票数为:%d\n请输入购票数:", x );scanf("%d", a);x = x – a ;if (x0)EXEC SQL ROLLBACK WORK;printf("票数不够,购票失败!");else{EXEC SQL UPDATE tickets SET (a) ;if (SQLCA.sqlcode SUCCESS)EXEC SQL ROLLBACK WORK;else(b) ;}

阅读以下C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。【C代码1】【问题2】写出【代码2】的运行时的输出结果。

阅读以下说明和Java代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下Java代码实现两类交通工具(Flight和Train)的简单订票处理,类Vehicle、Flight、Train之间的关系如图5-1所示。【Java代码】import java.util.ArrayList;import java.util.List; abstract class Vehicle {void book(int n) { //订 n张票if (getTicket0() >=n ) {decrease Ticket(n);} else {System.out.println(“余票不足!!“);}} abstract int getTicket();abstract void decreaseTicket(int n);}; class Flight(1){Private(2)tickets=216; //Flight的票数Int getTicket(){Return tickets;} void decreaseTicket(int n){tickets=tickets - n;}} class Train(3){Private(4)tickets=2016; //Train的票数int getTicket() {return tickets;} void decreaseticket(int n) {tickets = tickets - n; }} public class Test {public static void main(String[] args) {System.out.println(“欢迎订票!");ArrayListVehicle v = new ArrayListVehicle();v.add(new Flight());v.add(new Train());v.add(new Flight());v.add(new Train());v.add(new Train());for(int i=0;iv.size(); i++){(5)(i+1); //订i+1张票System.out.println(“剩余票数:”+v.get(i).getTicket());}}}运行该程序时输出如下:欢迎订票!剩余票数:215剩余票数:2014剩余票数:(6)剩余票数:(7)剩余票数:(8)

阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【C代码1】 float adjustSalary(int service_year,int age,float salary) { if( service_year 30 ) salary *= 1.2; } else salary *= 2.0; return salary;} 【C代码2】 void foo(int coin) { switch (coin) { case 1: printf("Cent\n"); case 5: printf("Nicke1\n");break; case 10: printf("Dime\n"); case 25: printf("Quarter\n"); }} 【C代码3】 int getSum(int n){ int t, i = 0, sum = 0; while ( i

阅读下列说明,补充(1)-(9),将解答填入答题纸的对应栏内。

阅读下列说明,回答问题1 至问题3 ,将解答填入答题纸的对应栏内。【说明】某航空公司要开发一个订票信息处理系统,该系统的部分关系模式如下: 航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,票价) 折扣(航班编号,开始日期,结束日期,折扣) 旅客(身份证号,姓名,性别,出生日期,电话,VIP折扣) 购票(购票单号,身份证号,航班编号,搭乘日期,购票金额) 有关关系模式的属性及相关说明如下:(1)航班表中的起飞时间和到达时间不包含日期,同一航班不会在一天出现两次及两次以上;(2)各航空公司会根据旅客出行淡旺季适时调整机票的折扣,旅客购买机票的购票金额计算公式为:票价×折扣×VIP折扣,其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票后被修改。VIP折扣值的计算由函数float vip_value(char[18]身份证号)完成。根据以上描述,回答下列问题。 【问题1】请将如下创建购票关系的SQL语句的空缺部分补充完整,要求指定关系的主键、外键,以及购票金额大于零的约束。 CREATE TABLE 购票( 购票单号 CHAR(15) ___(a)___, 身份证号 CHAR(18), 航班编号 CHAR(6), 搭乘日期 DATE, 购票金额 FLOAT __(b)__, ___(c)__, ___(d)__, );【问题2】(1)身份证号为210000196006189999的客户购买了2013年2月18日CA5302航班的机票,购票单号由系统自动生成。下面的SQL语句将上述购票信息加入系统中,请将空缺部分补充完整。INSERT INTO 购票(购票单号,身份证号,航班编号,搭乘日期,购票金额) SELECT '201303105555','210000196006189999','CA5302','2013/2/18', __(e)__ FROM 航班,折扣,旅客 WHERE __(f)__ AND 航班.航班编号='CA5302' AND '2013/2/18' BETWEEN 折扣.开始日期 AND 折扣.结束日期 AND 旅客.身份证号='210000196006189999';(2)需要用触发器来实现VIP折扣的修改,调用函数vip_value( )来实现。请将如下SQL语句的空缺部分补充完整。 CREATE TRIGGER VIP_TRG AFTER ___(g)___ ON ___(h)___ RE FERENCING new row AS nrow FOR EACH row BEGIN UPDATE 旅客 SET ___(i)___ WHERE ___(j)___;END【问题3】请将如下SQL语句的空缺部分补充完整。(1)查询搭乘日期在2012年1月1日至2012年12月31日之间,且合计购票金额大于等于10000元的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。 SELECT 旅客.身份证号,姓名,SUM(购票金额) FROM 旅客,购票 WHERE ___(k)___ GROUP BY ___(l)___; ORDER BY ___(m)___;(2)经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。查询从广州到北京,经过一次中转的所有航班对,输出广州到中转地的航班编号、中转地、中转地到北京的航班编号。 SELECT ___(n)___ FROM 航班航班1,航班 航班2 WHERE ___(o)___;

阅读以下说明,回答问题1至问题2,将解答填入答题纸对应的解答栏内。【说明】某留言系统采用ASP+Access开发,其后台管理登录页面如图4-1所示。【问题1】(9分)以下是该后台管理登录页面login.asp的部分代码,请仔细阅读该段代码,根据图4-1 将(1)~(9)的空缺代码补齐。【问题2】(6分)1.在登录页面 login.asp 中通过导入了bbb.asp的代码,以下是bbb.asp的部分代码,请仔细阅读该段代码,将空缺代码补齐。

阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。【说明】 Windows 系统的用户管理配置中,有多项安全设置,如图2-1 所示。

阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。main( ){int i,n; //1for(i=1;i

某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,…,n)管理机票销售。假设Tj(j=1,2,…,m)单元存放某日某航班的机票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的订票张数。初始化时系统应将信号量S赋值为(请作答此空)。Pi进程的工作流程如下图所示,若用P操作和V操作实现进程间的同步与互斥,则图中空(a)、空(b)和空(c)处应分别填入( )。A.0B.1C.2D.3

某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,…,n)管理机票销售。假设Tj(j=1,2,…,m)单元存放某日某航班的机票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的订票张数。初始化时系统应将信号量S赋值为( )。Pi进程的工作流程如下图所示,若用P操作和V操作实现进程间的同步与互斥,则图中空(a)、空(b)和空(c)处应分别填入(请作答此空)。A.P(S)、V(S)和V(S)B.P(S)、P(S)和V(S)C.V(S)、P(S)和P(S) D.V(S)、V(S)和P(S)

阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3。【说明】某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票。开发小组经过设计,给出该系统的部分关系模式如下:航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价)代理商(代理商编号,代理商名称,客服电话,地址,负责人)机票代理(代理商编号,航班编号,票价)旅客(身份证号,姓名,性别,出生日期,电话)购票(购票单号,身份证号,航班编号,搭乘日期,购票金额)在提供给用户的界面上,其核心功能是当用户查询某航班时,将该航班所有的代理商信息及其优惠票价信息,返回给用户,方便用户购买价格优惠的机票。在实现过程中发现,要实现此功能,需要在代理商和机票代理两个关系模式上进行连接操作,性能很差。为此开发小组将机票代理关系模式进行了扩充,结果为:机票代理(代理商编号,航班编号,代理商名称,客服电话,票价)这样,用户在查找信息时只需对机票代理关系模式进行查询即可,提高了查询效率。【问题1】(6分)机票代理关系模式的修改,满足了用户对代理商机票价格查询的需求,提高了查询效率。但这种修改导致机票代理关系模式不满足3NF,会带来存储异常的问题。1)请具体说明其问题,并举例说明。

阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】某企业网络拓扑如图1-1所示,A~E是网络设备的编号。

某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,…,n)管理机票销售。假设Tj(j=1,2,…,m)单元存放某日某航班的机票剩余票数,Temp为Pi进程的临时工作单元,x为某用户的订票张数。初始化时系统应将信号量S赋值为(请作答此空)。Pi进程的工作流程如下图所示,若用P操作和V操作实现进程间的同步与互斥,则图中空(a)、空(b)和空(c)处应分别填入(2)。A. 0B. 1C. 2D. 3