上半年 软件设计师 案例分析Word格式.docx

上传人:b****2 文档编号:5222351 上传时间:2023-05-04 格式:DOCX 页数:18 大小:419.80KB
下载 相关 举报
上半年 软件设计师 案例分析Word格式.docx_第1页
第1页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第2页
第2页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第3页
第3页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第4页
第4页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第5页
第5页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第6页
第6页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第7页
第7页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第8页
第8页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第9页
第9页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第10页
第10页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第11页
第11页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第12页
第12页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第13页
第13页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第14页
第14页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第15页
第15页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第16页
第16页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第17页
第17页 / 共18页
上半年 软件设计师 案例分析Word格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

上半年 软件设计师 案例分析Word格式.docx

《上半年 软件设计师 案例分析Word格式.docx》由会员分享,可在线阅读,更多相关《上半年 软件设计师 案例分析Word格式.docx(18页珍藏版)》请在冰点文库上搜索。

上半年 软件设计师 案例分析Word格式.docx

系统与考试有关的主要功能如下。

(1)考试设置。

教师制定试题(题目和答案),制定考试说明、考试时间和提醒时间等考试信息,录入参加考试的学生信息,并分别进行存储。

(2)显示并接收解答。

根据教师设定的考试信息,在考试有效时间内向学生显示考试说明和题目,根据设定的考试提醒时间进行提醒,并接收学生的解答。

(3)处理解答。

根据答案对接收到的解答数据进行处理,然后将解答结果进行存储。

(4)生成成绩报告。

根据解答结果生成学生个人成绩报告,供学生查看。

(5)生成成绩单。

对解答结果进行核算后生成课程成绩单供教师查看。

(6)发送通知。

根据成绩报告数据,创建通知数据并将通知发送给学生;

根据成绩单数据,创建通知数据并将通知发送给教师。

现采用结构化方法对考试系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

 

【问题1】

(2分)

使用说明中的词语,给出图1-1中的实体E1~E2的名称。

【问题2】

(4分)

使用说明中的词语,给出图1-2中的数据存储D1~D4的名称。

【问题3】

根据说明和图中词语,补充图1-2中缺失的数据流及其起点和终点。

【问题4】

(5分)

图1-2所示的数据流图中,功能(6)发送通知包含创建通知并发送给学生或老师。

请分解图1-2中加工(6),将分解出的加工和数据流填入答题纸的对应栏内。

(注:

数据流的起点和终点须使用加工的名称描述)

试题二(共15分)

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

某省针对每年举行的足球联赛,拟开发一套信息管理系统,以方便管理球队、球员、主教练、主裁判、比赛等信息。

【需求分析】

(1)系统需要维护球队、球员、主教练、主裁判、比赛等信息。

球队信息主要包括:

球队编号、名称、成立时间、人数、主场地址、球队主教练。

球员信息主要包括:

姓名、身份证号、出生日期、身高、家庭住址。

主教练信息主要包括:

姓名、身份证号、出生日期、资格证书号、级别。

主裁判信息主要包括:

姓名、身份证号、出生日期、资格证书号、获取证书时间、级别。

(2)每支球队有一名主教练和若干名球员。

一名主教练只能受聘于一支球队,一名

球员只能效力于一支球队。

每支球队都有自己的唯一主场场地,且场地不能共用。

(3)足球联赛采用主客场循环制,一周进行一轮比赛,一轮的所有比赛同时进行。

(4)一场比赛有两支球队参加,一支球队作为主队身份、另一支作为客队身份参与

比赛。

一场比赛只能有一名主裁判,每场比赛有唯一的比赛编码,每场比赛都记录比分和日期。

【概念结构设计】

根据需求分析阶段的信息,设计的实体联系图(不完整)如图2-1所示。

【逻辑结构设计】

根据概念结构设计阶段完成的实体联系图,得出如下关系模式(不完整):

球队(球队编号,名称,成立时间,人数,主场地址)

球员(姓名,身份证号,出生日期,身高,家庭住址,

(1))

主教练(姓名,身份证号,出生日期,资格证书号,级别,

(2))

主裁判(姓名,身份证号,出生日期,资格证书号,获取证书时间,级别)

比赛(比赛编码,主队编号,客队编号,主裁判身份证号,比分,日期)

(6分)

补充图2-1中的联系和联系的类型。

图2-1中的联系“比赛”应具有的属性是哪些?

根据图2-1,将逻辑结构设计阶段生成的关系模式中的空

(1)~

(2)补充完整。

现在系统要增加赞助商信息,赞助商信息主要包括赞助商名称和赞助商编号。

赞助商可以赞助某支球队,一支球队只能有一个赞助商,但赞助商可以赞助多支球队。

赞助商也可以单独赞助某些球员,一名球员可以为多个赞助商代言。

请根据该要求,对图2-1进行修改,画出修改后的实体间联系和联系的类型。

试题三(共15分)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

某物品拍卖网站为参与者提供物品拍卖平台,组织拍卖过程,提供在线或线下交易服务。

网站主要功能描述如下:

(1)拍卖参与者分为个人参与者和团体参与者两种。

不同的团体也可以组成新的团体参与拍卖活动。

网站记录每个参与者的名称。

(2)一次拍卖中,参与者或者是买方,或者是卖方。

(3)一次拍卖只拍出来自一个卖方的一件拍卖品;

多个买方可以出价:

卖方接受其中一个出价作为成交价,拍卖过程结束。

(4)在拍卖结算阶段,买卖双方可以选择两种成交方式:

线下成交,买卖双方在事

先约定好的成交地点,当面完成物价款的支付和拍卖品的交付;

在线成交,买方通过网上支付平台支付物价款,拍卖品由卖方通过快递邮寄给买方。

一次拍卖过程的基本事件流描述如下:

(1)卖方在网站上发起一次拍卖,并设置本次拍卖的起拍价。

(2)确定拍卖标的以及拍卖标的保留价(若在拍卖时间结束时,所有出价均低于拍卖标的保留价,则本次拍卖失败)。

(3)在网站上发布本次拍卖品的介绍。

(4)买方参与拍卖,给出竟拍价。

(5)卖方选择接受一个竟拍价作为成交价,结束拍卖。

(6)系统记录拍卖成交价,进入拍卖结算阶段。

(7)卖方和买方协商拍卖品成交方式,并完成成交。

现采用面向对象方法对系统进行分析与设计,得到如表3-1所示的类列表以及如图3-1所示的类图,类中关键属性与方法如表3-2所示。

(7分)

根据说明中的描述,给出图3-1中

(1)~(7)所对应的类名(类名使用表3-1中给出的序号)。

根据说明中的描述,确定表3-2中的属性/方法分别属于哪个类(类名、方法/属性名使用表3-1、3-2中给出的序号)。

(3分)

在图3-1采用了何种设计模式?

以100字以内文字说明采用这种设计模式的原因。

试题四(共15分)

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。

n-皇后问题是在n行n列的棋盘上放置n个皇后,使得皇后彼此之间不受攻击,其规则是任意两个皇后不在同一行、同一列和相同的对角线上。

拟采用以下思路解决n-皇后问题:

第i个皇后放在第i行。

从第一个皇后开始,对每个皇后,从其对应行(第i个皇后对应第i行)的第一列开始尝试放置,若可以放置,确定该位置,考虑下一个皇后;

若与之前的皇后冲突,则考虑下一列;

若超出最后一列,则重新确定上一个皇后的位置。

重复该过程,直到找到所有的放置方案。

【C代码】

下面是算法的C语言实现。

(1)常量和变量说明

pos:

一维数组,pos[i]表示第i个皇后放置在第i行的具体位置

count:

统计放置方案数

i,j,k:

变量

N:

皇后数

(2)C程序

#include<

stdio.h>

math.h>

#defineN4

/*判断第k个皇后目前放置位置是否与前面的皇后冲突*/

inisplace(intpos[],intk){

inti;

for(i=1;

i<

k;

i++){

if(

(1)||fabs(i-k)══fabs(pos[i]-pos[k])){

return();

}

return1;

intmain(){

inti,j,count=1;

intpos[N+1];

//初始化位置

=N;

pos[i]=0;

(2);

while(j>

=1){

pos[j]=pos[j]+1;

/*尝试摆放第i个皇后*/

while(pos[j]<

=N&

&

(3)_){

pos[j]=pos[j]+1;

/*得到一个摆放方案*/

if(pos[j]<

j══N){

printf("

方案%d:

"

count++);

i++){

%d"

pos[i]);

\n"

);

/*考虑下一个皇后*/

(4)){

j=j+1;

}else{//返回考虑上一个皇后

pos[j]=0;

(5);

(10分)

根据以上说明和C代码,填充C代码中的空

(1)~(5)。

根据以上说明和C代码,算法采用了(6)设计策略。

上述C代码的输出为:

(7)。

从下列的2道试题(试题五至试题六)中任选1道解答。

如果解答的试题数超过1道,则题号小的1道解答有效。

试题五(共15分)

阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

某图书管理系统中管理着两种类型的文献:

图书和论文。

现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。

采用Visitor(访问者)模式实现该要求,得到如图5-1所示的类图。

【C++代码】

classLibraryVisitor;

classLibraryItemInterface{

public:

(1):

};

classArticle:

publicLibraryItemInterface{

private:

stringm_title;

//论文名

stringm_author;

//论文作者

intm_start_page;

intm_end_page;

Article(stringp_author,stringp_title,intp_start_page,intp_end_page);

intgetNumber()fPages();

voidaccept(LibraryVisitor*visitor);

classBook:

//书名

//作者

intm_pages;

//页数

Book(stringp_author,stringp_title,intp_pages);

voidaccept(LibraryVisitor*visitor);

classLibraryVisitor{

(2);

(3);

virtualvoidprintSum()=0;

classLibrarySumPrintVisitor:

publicLibraryVisitor{//打印总页数

intsum;

LibrarySumPrintVisitor();

voidvisit(Book*p_book);

voidvisit(Article*p_article);

voidprintSum();

//visitor.cpp

intArticle:

:

getNumber()fPages(){

retumm_end_page-m_start_page;

voidArticle:

:

accept(LibraryVisitor*visitor){(4);

Book:

Book(stringp_author,stringp_title,intp_pages){

m_title=p_title;

m_author=p_author;

m_pages=p_pages;

intBook:

getNumberOfPages(){returnm_pages;

}

voidBook:

accept(LibraryVisitor*visitor){(5);

//其余代码省略

(15分)

阅读上述说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

试题六(共15分)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

采用Visitor(访问者)模式实现该要求,得到如图6-1所示的类图。

【Java代码】

importjava.util.*;

interfaceLibraryVisitor{

 

(1) :

 

(2)  :

classLibrarySumPrintVisitorimplementsLibraryVisitor{//打印总页数

privateintsum=0;

publicvoidvisit(Bookp_book){

sum=sum+p_book.getNumberOfPages();

publicvoidvisit(Articlep_article){

sum=sum+p_article.getNumberOfPages0;

publicvoidprintSum(){

System.out.println("

SUM="

+sum);

interfaceLibraryItemInterface{

(3);

classArticleimplementsLibraryItemInterface{

privateStringm_title;

//价仑文名。

privateStringm_author;

//仑文作者

privateintm_start_page;

privateintm_end_page;

publicArticle(Stringp_author,Stringp_title,intp_start_page,intp_end_page){

m_title=p_title;

m_author=p_author;

m_end_page=p_end_page;

publicintgetNumbelOfPages(){

rctumm_end_page-m_start_page;

publicvoidacccpt(LibraryVisitorVisitor){

(4):

classBookimplementsLibraryItemInterface{

//书作者

privateintm_pages;

//页教

publicBook(Stringp_author,Stringp_title,intp_pages){

m_title=p_title;

m_pages=p_pages;

publicintgetNumberOfPages(){

returnm_pages;

publicvoidaccept(LibraryVisitorvisitor){

(5)___;

阅读上述说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2