IT认证软考软件设计师辅导讲义.docx

上传人:b****6 文档编号:3866694 上传时间:2022-11-26 格式:DOCX 页数:36 大小:926.41KB
下载 相关 举报
IT认证软考软件设计师辅导讲义.docx_第1页
第1页 / 共36页
IT认证软考软件设计师辅导讲义.docx_第2页
第2页 / 共36页
IT认证软考软件设计师辅导讲义.docx_第3页
第3页 / 共36页
IT认证软考软件设计师辅导讲义.docx_第4页
第4页 / 共36页
IT认证软考软件设计师辅导讲义.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

IT认证软考软件设计师辅导讲义.docx

《IT认证软考软件设计师辅导讲义.docx》由会员分享,可在线阅读,更多相关《IT认证软考软件设计师辅导讲义.docx(36页珍藏版)》请在冰豆网上搜索。

IT认证软考软件设计师辅导讲义.docx

IT认证软考软件设计师辅导讲义

[IT认证]软考软件设计师辅导讲义

2010年软考软件设计师辅导讲义:

计算机系统知识

数据流图

 一.解题当中考生表现出的特点

  由于这是下午考试的第一道题,所以很多考生从考前的紧张氛围当中逐渐平静下来开始答题,头脑还比较清醒,阅读起来比较流畅,速度还可以,自我感觉不错。

可偏偏这道题有很多人不能全取15分,纠其原因有以下一些特点:

  1.拿卷就做,不全面了解试卷,做到心中有数。

这样会导致在解题过程当中缺少一种整体概念,不能明确自己在哪些题上必需拿分(多花时间),哪些题上自己拿不了分(少花时间)。

这样,在解题时目标就会明确很多。

  2.速度快,读一遍题就开始动手做。

  3.速度慢,用手指逐个字的去看,心想看一遍就能做出题来。

  4.在阅读题目时,不打记,不前后联系起来思考。

  5.边做边怀疑边修改,浪费时间。

  6.缺少的数据流找不准,可去掉的文件找不出来。

  7.由于缺少项目开发经验,对一些事务分析不知如何去思考。

  8.盲目乐观,却忽略了答题格式,丢了不应该丢的分。

  二.解题的方法与技巧

  1.首先要懂得数据流图设计要略。

  有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据存储文件。

如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。

在绘制时应该注意以下要点:

  

(1)自外向内,自顶向下,逐层细化,完善求精。

  

(2)保持父图与子图的平衡。

  为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。

一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。

根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。

对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。

  顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系。

  底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。

  中间数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。

中间层次的多少,一般视系统的复杂程度而定。

  任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数据流必须保持一致,此即父图与子图的平衡。

父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。

  在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,也即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡,如图1所示。

图1父图与子图的平衡

三.例题讲解

  例1:

【软件设计师(数据库系统工程师)2007年11月真题】

  试题一(共15分)

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

  【说明】

  某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:

  1.每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。

课程结束后进行期末考试,其成绩作为这门课程的考试成绩。

  2.学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。

  3.在记录学生成绩之前,系统需要验证这些成绩是否有效。

首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。

  4.对于有效成绩,系统将其保存在课程成绩文件中。

对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。

在教务处没有给出具体处理意见之前,系统不会处理这些成绩。

  5.若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。

教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。

  6.在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。

主讲教师须将核对之后的成绩报告返还系统。

  7.根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。

考试委员会在审查之后,上交一份成绩审查结果给系统。

对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。

  现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。

  图1-20层数据流图

  【问题1】(4分)

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

  【问题2】(3分)

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

  【问题3】(6分)

数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这三条数据流的起点和终点。

  【问题4】(2分)

  数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。

简要说明程序流程图的适用场合与作用。

  试题分析:

  本题考查的是DFD的应用,属于比较传统的题目,考查点也与往年类似。

  问题1考查的是顶层DFD。

顶层DFD通常用来确定系统边界,其中只包含一个唯一的加工(即待开发的系统)、外部实体及外部实体与系统之间的输入输出数据流。

题目要求填充的正是外部实体。

  从顶层DFD可以看出,数据流是完整的。

所以只要根据数据流从题目说明的上下文中,找出E1~E4所对应的外部实体,分别为考试委员会、主讲教师、学生和教务处。

  0层DFD中缺少的东西比较多,要求填写数据存储及缺失的数据流。

先来确定数据存储。

首先,从说明中找出可能是数据存储的元素来。

很明显,学生信息文件、课程信息文件、课程单元信息文件、课程成绩文件和无效成绩文件应该是数据存储。

下面的工作就是对号入座。

  从0层DFD上可以看到,加工3到D5有一条数据流;而加工3所完成的操作是“记录无效成绩”。

从说明中可知,“对于无效成绩,系统会单独将其保存在无效成绩文件中”,所以D5应该是数据存储“无效成绩文件”;类似地,从加工2气己录有效成绩”到D4有一条数据流,这说明D4就是数据存储“课程成绩文件”。

  D1输出两条数据流,分别流向加工1“验证学生信息”和加工4“生成成绩列表”。

由说明“根据学生信息文件来确认该学生是否选修这门课程”可知,验证学生信息时,需要根据学生信息文件来进行;而生成成绩列表及成绩单时,学生信息都是必要的。

所以D1应该是“学生信息文件”。

  这样的话,D2和D3就应该分别与“课程单元信息文件”和“课程信息文件”对应。

由于D2和D3都只与加工1有关,所以它们的对应关系就是随意的了。

这样5个数据存储就填充完整了。

下面要丰L充缺失的数据流。

  首先,从说明的第5条可知,生成成绩列表时,是需要从课程成绩文件中获取信息的,“课程成绩文件”实际上就是图中的D4。

而D4和加工4之间并没有数据流,因此这就是一条缺失的数据流。

  另外,前面在确定D1所对应的数据存储时提到过,生成成绩单时是需要学生信息的。

所以,加工5应该从D1中获取相应的信息,这样就找到了第二条数据流。

  第三条数据流也比较容易找。

说明的第7条告诉我们,只有“对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生”。

也就是说,从成绩列表到成绩单的生成是有条件的。

这意味着,在加工4和加工5之间应该存在一条数据流,这就是第3条数据流。

  问题4实际上是为了考查大家对DFD的进一步理解,明确DFD在软件开发中用于描述功能需求。

  例2:

【软件设计师2004年5月真题】

  试题一(15分)

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

  [说明]

  某图书馆管理系统的主要功能是图书管理和信息查询。

对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。

  系统的图书管理功能分为四个方面:

购入新书、读者借书、读者还书以及图书注销。

  1.购入新书时需要为该书编制入库单。

入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。

  2.读者借书时需填写借书单。

借书单内容包括读者号和所借图书分类目录号。

系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过5本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。

  3.读者还书时需填写还书单。

系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。

  4.注销图书时,需填写注销单并修改图书目录文件中的库存总量。

  系统的信息查询功能主要包括读者信息查询和图书信息查询。

其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。

图书管理系统的顶层图如图1-1所示;图书管理系统的第0层DFD图如图1-2所示,其中加工2的细图如图1-3所示。

  【数据流图1-1】

  [问题1](2分)

  数据流图1-2中有两条数据流是错误的,请指出这两条数据流的起点和终点。

  [问题2](6分)

  数据流图1-3中缺少三条数据流,请指出这三条数据流的起点和终点。

  [问题3](7分)

  根据系统功能和数据流图填充下列数据字典条目中的

(1)和

(2):

  查询请求信息=[查询读者请求信息|查询图书请求信息]

  读者情况=读者号+姓名+所在单位+{借书情况}

  管理工作请求单=  

(1)

  入库单=  

(2)

  试题分析:

  本题是一道分层数据流图的题目。

解答此类问题最关键的一点就是要细心,把题目看清,不要丢掉任何一个条件。

另外解题有一定的技巧’,从一些常规的人口作为突破口,会事半功倍。

现在就利用分层数据流图的数据流的平衡原则(即父图和子图(加工图)的一致性)来解题。

  子图是其父图中某一部分内部的细节图(加工图)。

它们的输入输出数据流应该保持一致。

如同看到地上有只蚂蚁有6条细细的腿,中间是一个小黑点,要看得更清楚一些就拿放大镜看。

这时能看到它的头、触角、身体和比较粗的腿,但是看到的一定还是6条腿,不是?

条,也不是3条。

子图也是如此,在上一级中有几个数据流,它的子图也一定有同样的数据流,而且它们的输送方向是一致的(也就是说原图有3条进的数据流,2条出的数据流,子图同样也是)。

  用这条原则可以轻松地解决问题3。

在。

层图中,“4监控传感器”模块有1条输人数据流——“传感器状态”和3条输出数据流——“电话拨号”、“传感器数据”和“告警类型”。

在加工4的细化图中,仅看到了输出数据流“告警类型”,所以知道此加工图少了“传感器状态”、“电话拨号”、“传感器数据’’这3条数据流。

加工4的结构非常清晰,所以只需把这3条数据流对号入座即可,“电话拨号”应是“4.5拨号”的输出数据流;“传感器状态”应是作为“4.4读传感器”处理的输入数据流;“传感器数据”应该是经“4.1显示格式”处理过的数据流,所以作为“4.1显示格式”的输出数据流。

  [问题1]

  此题和以往试题有所不同。

以往都给定了完整正确的顶层图。

现在顶层图不完整,可以通过题目说明信息以及顶层图来分析顶层图并解答问题。

题目中提到了“房主可以在安装该系统时配置安全监控设备(如传感器,显示器,报警器等)”在顶层图中这3个名词都没有出现,但仔细观察,可以看出“电视机”实际上就是“显示器”。

因为它接收TV信号并输出。

再看其他的几个实体都和“传感器,,(‘报警器”没有关联。

又因为A中输出“传感器状态”到“住宅安全系统”所以A应填“传感器”。

B接收“告警类型”,所以应填:

“报警器”。

  [问题2]

  首先,毫无疑问“4监控传感器”用到了配置信息文件,这点可以在加工4的细化图中看出。

接着,观察0层图,“3密码处理”这个处理是用于检验密码的,且它只有1个输出数据流“检验ID信息’’到“显示信息和状态”,没有反馈回来的数据流,所以“检验ID信息”是已经验证通过的用户的信息,用户输入密码应是在“3密码处理”这个环节中进行验证的(因为如果密码验证是在“5显示信息和状态”中进行的,那么从“5显示信息和状态”应有1条不合法用户的数据流反馈到“密码处理”)。

所以“密码处理”一定要用到配置信息文件中的用户名和密码。

同时由于输出到“5显示信息和状态”的数据流是“检验ID信息”,所以“5显示信息和状态”也用到了配置信息文件。

1、程序语言知识

  1.1程序语言:

  程序语言分为低级语言和高级语言两个大类。

  低级语言:

又称为面向机器语言,它是特定的计算机系统所固有的语言。

  机器语言:

虽然执行效率高,但编写出来的程序可读性很差,程序难以修改和维护。

  汇编语言:

汇编语言是机器语言的一种提升,它使用了一些助记符号来表示机器指令中的操作码和操作数。

但它仍然是一种和计算机的机器语言十分接近的语言,使用起来仍然不太方便。

  高级语言:

与人们的自然语言比较接近,使用起来很方便,也极大的提高了程序设计的效率。

  下面简单介绍了几种高级语言的特点:

  Fortran:

第一个被广泛用于进行科学计算的高级语言。

  Algol:

早期研制出来的高级语言。

有严格的文法规则,用巴科斯范BNF来描述语言的文法,是一个分程序结构的语言。

(最近嵌套原则和存储器使用效率高)

  Cobol:

面向事务处理的高级语言。

在数据库管理系统设计方面使用广泛。

  Pascal:

具有相当强的表达能力,特别是对于数据结构功能的表达极具优势。

  C:

当今最通用的程序设计语言。

C是一种较低级的语言,提供了指针和地址操作的能力,但正是因为它的这一特点,才使它更具灵活性。

C与UNIX操作系统紧密相关。

  Prolog:

逻辑型语言的代表。

它是建立在关系理论和一阶谓词逻辑理论基础上的。

Prolog程序由一些俗称事实和规则的Horn子句组成,具有很强的推理功能,适用书写自动定理证明、专家系统、自然语言理解等问题的程序。

  LISP:

典型的函数型程序语言。

它以λ演算为基础。

它广泛的用于问题求解等人工智能领域。

  面向对象技术具有3个最重要的特征:

封装性、继承性和多态性。

  ◆封装性:

指隐藏类对象内部实现的复杂细节,将类以变量类型的形式提供给用户,从而有效地保护内部所有数据不受外部破坏。

  ◆继承性:

指一个类(父类)再加上某些新的特征生成另外一个新类(子类),子类具有父类的全部特征,从而增强了类的共享机制,实现了软件的可重用性,简化了软件的开发工作。

  ◆多态性:

指将同一处理过程或函数应用于不同的变量(参数),实现数据和过程的功能重载,从而简化编码。

  下面简单介绍一下几种面向对象语言。

  C++:

是在C语言的基础上发展起来与C兼容的语言。

是目前最流行的面向对象语言,主要增加了类功能和从其他类中继承类对象的功能。

  Smalltalk:

典型的面向对象的程序设计语言,引入了类和对象。

  Java:

由SUN公司开发的一种面向对象的程序设计语言。

其主要特点是可移植性好,可用于各种平台,尤其适合网络上运行。

  数据类型和控制结构:

  对于不同的程序语言,其提供的数据类型都不相同。

数据是程序操作的对象,使用时都需要分配内存空间,它们都具有以下的属性。

  数据名称:

由用户通过标示符命名;

  类型:

说明数据占用内存的大小和存放方式

  存储类:

说明数据在内存中的位置和生存期

  作用域:

说明数据可以使用的范围

  生存期:

说明数据占用内存的时间

数据从不同角度可分成不同的类别:

  纯量数据类型(基础数据类型)和结构数据类型:

其中纯量数据类型包括(实型、整型、布尔型、指针,双精度型和枚举型);而结构数据类型包括(联合、数组、复型和记录)

  按作用域分:

全局量和局部量

  按生存期分:

自动生存期(auto)、静态生存期(static)和动态生存期

  按程序运行期数据值是否改变:

常量和变量

  按类型分:

void、标量、函数和聚合

标量又可分为算术、枚举和指针;⌝  

聚合可分为数组、结构体和共用体。

⌝  

  按构造方式分:

基本类型和派生类型(主要参考C语言)

  基本类型是void、char、int、float、double和枚举类型,以及其变种short、long、signed和unsigned。

  派生类型包括指针、数组、函数、结构体(struct)和共用体(union)。

其中,最后两种为用户类型。

  程序语言中的控制结构为数据和数据上的运算组合成程序提供了基本框架,主要包括3种控制结构,即

顺序:

⌝  

选择:

if语句⌝  

重复:

while语句⌝  

  1.2汇编语言:

  汇编程序是为特定的计算机或者计算机系统设计的面向机器的语言。

  汇编语言中的语句可以分成两大类:

与机器指令相对应的可执行汇编语句;⌝  

汇编控制语句,即伪指令。

⌝  

  伪指令并不翻译成机器指令,它的作用是控制汇编程序工作。

  每条汇编语句被划分成4个区,依次是标号区、操作码区、操作数区和注解区。

  例如:

[标号][操作码][操作数][注解]

  用汇编语言编写的源程序,要通过汇编程序将它翻译成机器语言程序,才能被计算机执行。

因此,汇编程序的功能就是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目标程序。

它的基本工作包括:

将每一条可执行汇编语句转换成对应的机器指令⌝  

处理源程序中出现的伪指令⌝  

  整个汇编程序工作通常要对源程序进行两次扫描才能完成。

第一次扫描主要工作是定义符号的值。

第二次扫描的目的则是产生目标程序。

其中,可执行汇编语句被翻译成对应的二进制代码机器指令,而伪指令会根据伪指令记忆码调用伪指令表对应元素所规定的子程序入口。

数据从不同角度可分成不同的类别:

  纯量数据类型(基础数据类型)和结构数据类型:

其中纯量数据类型包括(实型、整型、布尔型、指针,双精度型和枚举型);而结构数据类型包括(联合、数组、复型和记录)

  按作用域分:

全局量和局部量

  按生存期分:

自动生存期(auto)、静态生存期(static)和动态生存期

  按程序运行期数据值是否改变:

常量和变量

  按类型分:

void、标量、函数和聚合

标量又可分为算术、枚举和指针;⌝  

聚合可分为数组、结构体和共用体。

⌝  

  按构造方式分:

基本类型和派生类型(主要参考C语言)

  基本类型是void、char、int、float、double和枚举类型,以及其变种short、long、signed和unsigned。

  派生类型包括指针、数组、函数、结构体(struct)和共用体(union)。

其中,最后两种为用户类型。

  程序语言中的控制结构为数据和数据上的运算组合成程序提供了基本框架,主要包括3种控制结构,即

顺序:

⌝  

选择:

if语句⌝  

重复:

while语句⌝  

  1.2汇编语言:

  汇编程序是为特定的计算机或者计算机系统设计的面向机器的语言。

  汇编语言中的语句可以分成两大类:

与机器指令相对应的可执行汇编语句;⌝  

汇编控制语句,即伪指令。

⌝  

  伪指令并不翻译成机器指令,它的作用是控制汇编程序工作。

  每条汇编语句被划分成4个区,依次是标号区、操作码区、操作数区和注解区。

  例如:

[标号][操作码][操作数][注解]

  用汇编语言编写的源程序,要通过汇编程序将它翻译成机器语言程序,才能被计算机执行。

因此,汇编程序的功能就是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目标程序。

它的基本工作包括:

将每一条可执行汇编语句转换成对应的机器指令⌝  

处理源程序中出现的伪指令⌝  

  整个汇编程序工作通常要对源程序进行两次扫描才能完成。

第一次扫描主要工作是定义符号的值。

第二次扫描的目的则是产生目标程序。

其中,可执行汇编语句被翻译成对应的二进制代码机器指令,而伪指令会根据伪指令记忆码调用伪指令表对应元素所规定的子程序入口。

数据从不同角度可分成不同的类别:

  纯量数据类型(基础数据类型)和结构数据类型:

其中纯量数据类型包括(实型、整型、布尔型、指针,双精度型和枚举型);而结构数据类型包括(联合、数组、复型和记录)

  按作用域分:

全局量和局部量

  按生存期分:

自动生存期(auto)、静态生存期(static)和动态生存期

  按程序运行期数据值是否改变:

常量和变量

  按类型分:

void、标量、函数和聚合

标量又可分为算术、枚举和指针;⌝  

聚合可分为数组、结构体和共用体。

⌝  

  按构造方式分:

基本类型和派生类型(主要参考C语言)

  基本类型是void、char、int、float、double和枚举类型,以及其变种short、long、signed和unsigned。

  派生类型包括指针、数组、函数、结构体(struct)和共用体(union)。

其中,最后两种为用户类型。

  程序语言中的控制结构为数据和数据上的运算组合成程序提供了基本框架,主要包括3种控制结构,即

顺序:

⌝  

选择:

if语句⌝  

重复:

while语句⌝  

  1.2汇编语言:

  汇编程序是为特定的计算机或者计算机系统设计的面向机器的语言。

  汇编语言中的语句可以分成两大类:

与机器指令相对应的可执行汇编语句;⌝  

汇编控制语句,即伪指令。

⌝  

  伪指令并不翻译成机器指令,它的作用是控制汇编程序工作。

  每条汇编语句被划分成4个区,依次是标号区、操作码区、操作数区和注解区。

  例如:

[标号][操作码][操作数][注解]

  用汇编语言编写的源程序,要通过汇编程序将它翻译成机器语言程序,才能被计算机执行。

因此,汇编程序的功能就是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目标程序。

它的基本工作包括:

将每一条可执行汇编语句转换成对应的机器指令⌝  

处理源程序中出现的伪指令⌝  

  整个汇编程序工作通常要对源程序进行两次扫描才能完成。

第一次扫描主要工作是定义符号的值。

第二次扫描的目的则是产生目标程序。

其中,可执行汇编语句被翻译成对应的二进制代码机器指令,而伪指令会根据伪指令记忆码调用伪指令表对应元素所规定的子程序入口。

数据从不同角度可分成不同的类别:

  纯量数据类型(基础数据类型)和结构数据类型:

其中纯量数据类型包括(实型、整型、布尔型、指针,双精度型和枚举型);而结构数据类型包括(联合、数组

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

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1