[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷53及答案与解析.doc
《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷53及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷53及答案与解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 53及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明,回答问题 1问题 4。【说明】 某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表 6所示。 对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计 (下划线表示主关键字 ) 设计一: 顾客 Customer(顾客代码 Cno,姓名 name,住址 address,联系电话 phone) 收银员 Salesman(收银员代码 Sno,身份证号 idno,姓名 name,住址 address,联系电
2、话 phone) 商品 Merchandise(商品代码 Mno,商品名称 Mname,价格 price) 发票 Invoice(发票号码 Ino,交易日期 Idate,顾客代码 Cno,收银员代码 Sno,商品代码 Mno,单价 unitpfice,数量 amount) 设计二: 顾客 Customer(顾客代码 Cno,姓名 name,住址 address,联系电话 phone) 收银员 Salesman(收银员代码 Sno,身份证号 idno,姓名 name,住址 address,联 系电话 phone) 商品Memhandise(商品代码 Mno,商品名称 Mname,价格 price
3、) 发票 Ivoice(发票号码Ino,交易日期 Idate,顾客代码 Cno,收银员代码 Sno) 发票明细 Invoicedetail(发票号码 Ino,商品代码 Mno,单价 unitprice,数量 amount) 1 设计一的关系模式 Invoice最高满足第几范式 ?为什么 ?设计一和设计二哪个更加合理 ?为什么 ? 2 根据设计二中关系模式,以下 SQL语句是用于 “建立 2005年 1月期间每张发票的发票号,交易日期,交易 商品件数和交易总金额的视图 ”的不完整语句,请填补其中的空缺。 CREATE VIEW Invoice -total(1) SELECT Invoice.
4、ino, ldate,(2), (3) FROM Invoice, lnvoicedetail WHERE(4)AND ldate BETWEEN 2005-01-01AND 2005-01-31 GROUPBY(5); 3 根据设计二中关系模式,以下 SQL语句是用于 “查询从未售出的商品信息 ”的不完整语句,请填 补其中的空缺。 SELECT Mno, Mname, price FROM Merchandise(1) WHERE(2) (SELECT(3) FROM lnvoicedetail WHERE A. Mno=lnvoicedetail. Mno); 4 设计二中关系 Merch
5、andise中由属性 price表示商品价格,关系 lnvoicedetail中的属性 unitprice也表示商品价格。两个是否有必要同时存在 ?为什么 ? 5 阅读以下说明和流程图,回答问题 1至问题 3, 将答案写在对应栏内。 【说明】 流程图描述了某高校图书订购与编目系统的处理流程。全校的图书典藏在校图书馆和各系的资料室中。学校每年分若干批向出版单位订购图书,同一批订购的图书将陆续邮寄到学校。出版单位在寄出图书的同时附上到书清单和发票,发票上仅给出一份到书清单中书的总册数和总金额。学校收到图书和发票后,先参照订购单验收,然后进行编目,并把有关信息存放在书种文件、书名文件、作者文件和复本
6、文件中,以供读者检索。 书种文件记录了每种书的有关信息。所谓一种书是指同一作者、同一书名、同一出版单位和同一出版年份出版的书 。例如, 2004年张明在科技出版社出版了软件工程 (印数 8000册 )和数据库基础 (印数 5000册 ),则张明在 2004年出版了两种书。在全校的藏书中,如果一种书只有一册,则该书的信息存放在书种文件中:如果一种书有多册,则其中一册书的信息存放在书种文件中,其余的书作为复本将信息存放在复本文件中。复本文件的结构与书种文件的结构相同,每种书都有一个书号,书号唯一地标识了一种书。在书库中,每册书有一个登录号,登录号唯一地标识了一册书。此外,为了图书检索的方便,将图书
7、按学科分类,分类号用来标识不同的学科领域。 各 类单据和文件的结构如下所示。 订购单:订购批号、书名、作者名、出版单位、出版年份、单价、订购册数、订购部门代码、订购日期。 到书清单:订购批号、书名、作者名、出版单位、出版年份、单价、册数。 发票:订购批号、发票号、总册数、总金额。 书种文件:分类号、登录号、书名代码、作者代码、出版单位、出版年份、单价、复本标志、典藏部门代码、借出标志。 其中,复本标志用来指示该种书在书库中有没有复本:对于书名相同的若干种书,书名代码是相同的。 书名文件:书名代码、书名。 作者文件:作者代码、作者名。 【问题 1】 指出验收 文件至少应由哪些数据项组成。 【问题
8、 2】 由于处理 5和处理 6的分类,可能导致分类后的文件中一张发票无法找到与它对应的那些书,从而当一组发票的金额之和与一组到书清单中的书价之和不等时,无法知道是哪一张发票和哪一份清单不一致。如果仍使用原流程图,那么当到书清单文件的结构做何改动后,能找出不一致的发票和相应的书目。 【问题 3】 若在书种文件中增加数据项 “书号 ”,则如何重新设计复本文件的结构,使数据冗余最小。 5 阅读以下说明和程序流程图,将应填入 (n) 处的字句写在对应栏内。 说明 假定用一个整型数组 表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m表示为: m=ak10k-2+ak-110k-3+
9、a310+a2 其中 a1保存该长整数的位数, a0保存该长整数的符号: 0表示正数、 1表示负数。注:数组下标从 0开始。 流程图 (图 4-1)用于计算长整数的加 (减 )法。运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注,此处不考虑溢出情况,即数组足够大。这样在程序中引进两个指针 pA和 pB,分别指向绝对 值较大者和较小者。而对绝对值相加 ,情况,让pA指向 LA, pB指向 LB,不区分绝对值大小。 pApB可用通式 pA+flag*pB来计算, flag为 +1时即对应 pA+pB, flag为 -1时即对应 pA
10、-pB。需特别注意的是,对于相减,不够减时要进行借位,而当最高位借位后正好为 0时,结果的总位数应减1;对于加法,有最高进位时,结果的总位数应加 1。 流程图中涉及的函数说明如下: (1)cmp(int *LA, int *LB)函数,用于比较长整数 LA 与 LB 的绝对值大小,若 LA绝对值大于 LB绝对值则返回正值, LA 绝对值 小于 LB绝对值返回负值,相等则返回 0。 (2)max(int A, int B)函数,用于返回整数 A与 B中较大数。 另外,对流程图中的写法进行约定: (1)“: =”表示赋值,如 “flag: =LA0+LB0”表示将“LA0+LB0”的结果赋给 fl
11、ag,相当于 C中的赋值语句: “flag=LA0+LB0; ”;(2)“: ”表示比较运算,如 “flag: 1”表示 flag与 1比较。 6 (1) 7 (2) 8 (3) 9 (4) 10 (5) 10 阅读下列说明和 Java代码, 将应填入 (n) 处的字句写在对应栏内。 说明 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 6-1所示。现在采用组合 (Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 6-2所示的类图。其中 MenuComponent为抽象类,定义了添加 (add)新菜单和打印饭店所有菜单信息 (prin
12、t)的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 6-1中的甜点菜单。类 MenuItem表 示菜单中的菜式。Java代码 import Java.util.*; (1) MenuComponent protected String name; (2) ;/添加新菜单 public abstract void print(); /打印菜单信息 public String getName()return name; class MenuItem extends MenuComponent private double p
13、rice; public Menultem(String name, double price) this.name=name; this.price=price; public double getPrice() return price; public void add(MenuComponent menuComponent)return;/添加新菜单 public void print() System.out.print(“+getName(); System.out.println(“,“+getPrice(); class Menu extends MenuComponent pr
14、ivate List MenuComponentmenuComponents=new ArrayList MenuComponent (); public Menu(String name)this.name=name; public void add(MenuComponent menuComponent) /添加新菜单 menuComponents. (3) ; publiC void print() System.out.print(“n“+getName(); System.out.println(“,“+“-“); Iterator iterator=menuComponents.i
15、terator(); while(iterator.hasNext() MenuComponent menuC0mponent=(MenuComponent)iterator.next(); (4) ; Class MenuTestDrive public static void main(String args) MenuComponent allMenus=new Menu(“ALL MENUS“); MenuComponent dinerMenu=new Menu(“DINER MENU“); / 创建更多的 Menu对象,此处代码省略 allMenus. add(dinerMenu);
16、 /将dinerMenu添加到餐厅菜单中 / 为餐厅增加更多的菜单,此处代码省略 (5) ; /打印饭店所有菜单的信息 11 (1) 12 (2) 13 (3) 14 (4) 15 (5) 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 16 阅读以下说明和 C+代码,将应填入 (n)处的字句写在对应栏内。 【说明】 以下 C+程序的功能是计算三角形、矩形和正方形的面积并输出。程序由 4个类组成:类 Triangle、 Rectangle和 Square分别表示三角形、矩形和正方形:抽象类Figure提
17、供了一个纯虚函数 getAxea(),作为计算上述 3种图形面积 的通用接口。 【 C+代码】 #include iostream #include cmath using namespace std; class Figure public: virtual double getArea()=0;/纯虚函数 ; class Rectangle : (1) protected: double height; double width; public: Rectangle() Rectangle(double height, double width) this- height=height;
18、this- width=width; double getArea() return (2); ; class Square: (3) public: Square(double width) (4); ; class Triangle: (5) private: double la,lb,lc; public: Triangle(double la,double lb,double lc) this- la=la;this- 1b=1b;this- lc=lc; double getArea() double s=(la+lb+lc)/2.0; return sqrt(s*(s-la)*(s
19、-lb)*(s-lc); int main() Figure *figures3=new Triangle(2,3,3),new Rectangle(5,8), new Square(5); for(int i=0;i 3;i+) cout “figures“ i “area=“ (figuresi)- getArea() endl; return 0; 17 阅读下列说明和 Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】现欲构造一文件目录树,采用组合 (Composite)设计模式来设计,得到的类图如 68所示: 【 Java代码】 import JavA util
20、ArrayList; import JavA util List; (1)class AbstractFileprotected String name; public void printName()System out println(name); public abstract boolean addChild(AbstractFile file); public abstract boolean removeChild(AbstractFile file); public abstract ListgetChildren ; class File extends AbstractFil
21、epublic File(String name)(this name=name; public boolean addChild(AbstractFile file)return false; public boolean removeChild(AbstractFile file)return false; public ListgetChildren()return (2) ; )clasS Folder extends AbstractFileprivate ListchildList; public Folder(String name)thiS name=name; this ch
22、ildList=new ArrayList; public boolean addChild(AbstractFile file)return childList add(file); public boolean removeChild(AbstractFile file)return childList remove(file); public (3)getChildren()return (4) ; )public class Clientpublic static void main(Stringargs)构造一个树形的文件目录 结构AbstractFile rootFolder=ne
23、w Folder(“C: ”); AbstractFile compositeFolder=new Folder(”composite”); AbstractFile windowsFolder=new Folder(”windows”);AbstractFile file=new File(”TestComposite java”); rootFOlder addChild (compositeFolder); rootFolder addChiid(windowsFolder);compositeFolder addChild(file);打印目录文件树printTree(rootFold
24、er); private static void printTree(AbstractFile ifile)ifile PrIntName(); Listchildren: ifile getChildren ();if(chiidren=null)return; for(AbstractFile file: children)(5) ; 该程序运行后输出结果为: C: compositeTestComposite javaWindows 18 读下列说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 已知某类库开发商捉供了一套类库,类库中定义了 Application类和
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 设计师 下午 应用技术 试题 模拟 53 答案 解析 DOC
