1、上半年软件设计师下午试题及答案2021年上半年软件设计师考试 下午题试题一共15分 阅读以下说明和图,答复以下问题1至问题4,将解答填入答题纸的对应栏内。【说明】 某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:1处理借阅。借阅者要借阅图书时,系统必须对其身份借阅者ID进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,假设合法,那么检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并
2、且罚金未超过限额,那么允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,假设是,那么对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,假设是,执行“处理逾期操作;最后,更新图书表,删除借出图书表中的相应记录。 2维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丧失或损坏严重时,从图书表中删除该图书记录。3处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规那么计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,假设罚金超过限额,管理员收取罚
3、金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1.2所示的0层数据流图。【问题1】4分使用说明中的词语,给出图1-1中的实体E1-E4的名称。【问题2】4分使用说明中的词语,给出图1-2中的数据存储D1D4的名称。【问题3】 5分在DFD建模时,需要对有些复杂加工处理进行进一步精化,绘制下层数据流图。针对图1-2中的加工“处理借阅,在1层数据流图中应分解为哪些加工?使用说明中的术语【问题4】2分说明【问题3】中绘制1层数据流图时要注意的问题。试题三共15分阅读以下说明和图,答复以下问题1至问题3,将解答填入答题纸的对应栏内。【
4、说明】 某网上购物平台的主要功能如下: 1创立订单。顾客 Customer在线创立订单Order,主要操作是向订单中添加工程、从订单中删除工程。订单中应列出所订购的商品Product及其数量quantities。2提交订单。订单通过网络来提交。在提交订单时,顾客需要提供其姓名name、收货地址address、以及付款方式form. of payment预付卡、信用卡或者现金。为了制定送货方案以及安排送货车辆,系统必须确定订单量volume。除此之外,还必须记录每种商品的名称Name、造价cost price、售价sale price以及单件商品的包装体积cubic volume。3处理订单。订
5、单处理人员接收来自系统的订单;根据订单内容,安排配货,制定送货方案。在送货方案中不仅要指明发货日期delivery date,还要记录每个订单的限时发送要求Delivery Time Window。4派单。订单处理人员将己配好货的订单转交给派送人员。5送货收货。派送人员将货物送到顾客指定的收货地址。当顾客收货时,需要在运货单delivery slip上签收。签收后的运货单最终需交还给订单处理人员。6收货确认。当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认。现采用面向对象方法开发上述系统,得到如图3-1所示的用例图和图3-2所示的类图。【问题1】 5分根据说明中的描述,给出图3-1中
6、A1A3所对应的参与者名称和U1U2处所对应的用例名称。【问题2】7分根据说明中的描述,给出图3-2中C1C3所对应的类名以及14处所对应的多重度类名使用说明中给出的英文词汇。【问题3】3分根据说明中的描述,将类C2和C3的属性补充完整属性名使用说明中给出的英文词汇。试题四共15分阅读以下说明和C代码,答复以下问题1至问题3,将解答写在答题纸的对应栏内。【说明】用两台处理机A和B处理n个作业。设A和B处理第i个作业的时间分别为ai和bi。由于各个作业的特点和机器性能的关系,对某些作业,在A上处理时间长,而对某些作业在B上处理时间长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的
7、,每个作业只能被处理一次。现要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间所有作业被处理的时间之和最少。算法步骤:1确定候选解上界为R短的单台处理机处理所有作业的完成时间m,2用px,y,k=1表示前k个作业可以在A用时不超过x且在B用时不超过y时间 内处理完成,那么px,y,k=px-ak,y,k-1|px,y-bk,k-1|表示逻辑或操作。3得到最短处理时问为minmaxx,y。【C代码】下面是该算法的C语言实现。1常量和变量说明n: 作业数m: 候选解上界a: 数组,长度为n,记录n个作业在A上的处理时间,下标从0开始b: 数组,长度为n,记录n个作业在B上的处理时间,
8、下标从0开始k: 循环变量p: 三维数组,长度为m+1*m+1*n+1temp: 临时变量max: 最短处理时间2C代码#includeint n, m;int a60, b60, p10010060;void read() /*输入n、a、b,求出m,代码略*/void schedule() /*求解过程*/int x,y,k;forx=0;x=m;x+for(y=0;ym;y+1fork=1;kn;k+pxyk=0;fork=1;kn;k+forx=0;x=m;x+fory=0;y=0 2 ;if 3 pxyk=(pxyk |pxy-bk-1k-1);void write() /*确定最优
9、解并输出*/int x,y,temp,max=m;forx=0;x=m;x+fory=0;y=m;y+if( 4 temp=5 ;iftemp maxmax = temp;printf(n%dn,max,void main()read();schedule();write();【问题1】 9分根据以上说明和C代码,填充C代码中的空15。【问题2】2分根据以上C代码,算法的时间复杂度为6用O符号表示。【问题3】4分考虑6个作业的实例,各个作业在两台处理机上的处理时间如表4-1所示。该实例的最优解为7,最优解的值即最短处理时间为8。最优解用x1,x2,x3,x4,x5,x6表示,其中假设第i个作业
10、在A上赴理,那么xi=l,否那么xi=2。如1,1,1,1,2,2表示作业1,2,3和4在A上处理,作业5和6在B上处理。试题五共15分,在试题五和试题六中任选1题解答,如果两题都解答,那么视试题五的解答有效。 阅读以下说明和C+代码,将应填入n处的字句写在答题纸的对应栏内。【说明】某咖啡店当卖咖啡时,可以根据顾客的要求在其中参加各种配料,咖啡店会根据所参加的配料来计算费用。咖啡店所供给的咖啡及配料的种类和价格如下表所示。【C+代码】#include #include using namespace std;const int ESPRESSO_PRICE = 25;const int DRA
11、KROAST_PRICE = 20;const int MOCHA_PRICE = 10;const int WHIP_PRICE = 8;class Beverage /饮料1 :string description;public:2 () return description; 3 ;class CondimentDecorator : public Beverage /配料protected:4 ;class Espresso : public Beverage /蒸馏咖啡public:Espresso () description=Espresso; int costreturn ES
12、PRESSO_PRICE; ;class DarkRoast : public Beverage /深度烘焙咖啡public:DarkRoast() description = DardRoast; int cost() return DRAKROAST_PRICE; ;class Mocha : public CondimentDecorator 摩卡public:MochaBeverage*beverage this-beverage=beverage; string getDescription() return beverage-getDescription()+,Mocha; int
13、 cost() return MOCHA_PRICE+beverage-cost(); ;class Whip :public CondimentDecorator /奶泡public:WhipBeverage*beverage this-beverage=beverage; string getDescription() return beverage-getDescription()+,Whip; int cost() return WHIP_PRICE+beverage-cost(); ;int main() Beverage* beverage = new DarkRoast();be
14、verage=new Mocha( 5 ;beverage=new Whip 6 ;coutgetDescription()¥cost() endl;return 0;编译运行上述程序,其输出结果为:DarkRoast, Mocha, Whip ¥38 试题六共15分 阅读以下说明和Java代码,将应填入n处的字句写在答题纸的对应栏内。【说明】某咖啡店当卖咖啡时,可以根据顾客的要求在其中参加各种配料,咖啡店会根据所参加的配料来计算费用。咖啡店所供给的咖啡及配料的种类和价格如下表所示。【Java代码】import java.util.*;1 class Beverage /饮料String de
15、scription = Unknown Beverage;public 2 return description;public 3 ;abstract class CondimentDecorator extends Beverage /配料4 ;class Espresso extends Beverage /蒸馏咖啡private final int ESPRESSO_PRICE = 25;public Espresso() description=Espresso; public int cost() return ESPRESSO_PRICE; class DarkRoast exte
16、nds Beverage /深度烘焙咖啡private finalint DARKROAST_PRICE = 20;public DarkRoast() description = DarkRoast; public int cost rcturn DARKROAST PRICE; class Mocha extends CondimentDecorator /摩卡private final int MOCHA_PRICE = 10;public MochaBeverage beverage this.beverage = beverage;public String getDescripti
17、on return beverage.getDescription0 + , Mocha;public int cost() return MOCHA_PRICE + beverage.cost();class Whip extends CondimentDecorator /奶泡private finalint WHIP_PRICE = 8;public WhipBeverage beverage this.beverage = beverage; public String getDescription return beverage.getDescription+, Whip;public int cost() return WHIP_PRICE + beverage.cost(); public class Coffee public static void mainString args Beverage beverage = new DarkRoast();beverage=new Mocha 5 ;beverage=new Whip 6 ;System.out.printlnbeverage.getDescription() +¥ +beverage.cost();编译运行上述程序,其输出结果为:DarkRoast, Mocha, Whip ¥38
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1