精品-清华大学C语言课件 第18章01 制作文本窗口

合集下载

清华大学C语言教学课件(共16个PPT)第1个共26页文档

清华大学C语言教学课件(共16个PPT)第1个共26页文档
常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来
清华大学C语言教学课件(共16个PPT)
第1个
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。

精品-清华大学C语言课件 第18章02 显示图形

精品-清华大学C语言课件 第18章02 显示图形

在知道所用的图形显示器适配器种类时,可以直接给gdriver和gmode赋值,当不知道图形显示器适配 器种类时就需要一个函数来自动检测,即detectgraph函数,其一般形式如下:
void detectgraph(int *gdriver,int *gmode);
【例18.1】 检测当前显示器,并根据检测结果进行图形初始化。
其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图 形驱动器、图形模式的符号常数及数值、色调、分辨率等的相关参数见表18.2。
表18.2 图形驱动器、模式的符号常数及数值、色调、分辨率
图形驱动器(gdriver)
符号常数
数值
CGA
1
CGA
1
CGA
表18.7 填充式样的符号常量、数值及含义
符号常数 EMPTY_FILL SOLID_FILL LINE_FILL LTSLASH_FILL SLASH_FILL
数值 0 1 2 3 4
含义 以背景颜色填充 以实填充 以直线填充 以斜线填充(阴影线) 以粗斜线填充(粗阴影线)
BKSLASH_FILL
调用该函数后可退出图形状态返回到调用initgraph()函数前的状态,并释放用于保存图形驱动 程序和字体的系统内存。 3.获取当前图形驱动程序名及模式 Turbo C 中定义了getdrivername函数来获取图形驱动程序名,该函数的一般形式如下:
char *far getdrivename(void)
程序运行结果如图18.4所示:
图18.4 检测显示器 当按任意键后程序跳转到图形界面,输出原型图案,如图18.5所示:
图18.5 绘制圆形
上例程序中先对图形显示器自动检测,然后再用图形初始化函数initgraph进行初始化设置,通过 上面运行出的结果会发现这种方法是可行的,但Turbo C提供了一种更简单的方法,即用:

清华大学C语言教学课件(共16个PPT)第2个共33页

清华大学C语言教学课件(共16个PPT)第2个共33页

16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
清华大学C语言教学课件(共16个PPT) 第2个
16、自己选择的路、跪着也要把它走 完。 17、一般情况下)不想三年以后的事, 只想现 在的事 。现在 有成就 ,以后 才能更 辉煌。
18、敢于向黑暗宣战的人,心里必须 充满光 明。 19、学习的关键--重复。
20、懦弱的人只会裹足不前,莽撞的 人只能 引为烧 身,只 有真正 勇敢的 人才能 所向披 靡。
ENDቤተ መጻሕፍቲ ባይዱ

清华大学C语言教学课件(共16个PPT)第1个共26页

清华大学C语言教学课件(共16个PPT)第1个共26页
清华大学C语言教学课件(共16个PPT) 第1个

6、黄金时代是在我们的前面,而不在 我们的 后面。

7、心急吃不了热汤圆。

8、你可以很有个性,但某些时候请收口 (蹩脚 的工人 总是说 工具不 好)。

10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
55、 为 中 华 之 崛起而 读书。 ——周 恩来
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特

清华大学的MFC编程精品课件

清华大学的MFC编程精品课件

7/10/2013
31
文档/视图结构支持: 决定是否使用CDocument类和 CView类支持文档/视图结构,无文档/视图结构的应用程序 不包含打开文件和存入磁盘功能的 MFC支持 资源语言:指定窗口菜单上所用的语言 使用 Unicode 库:使用Unicode版MFC 库 项目类型
一个MFC应用程序并不直接操作上述类,而是 以上述类为基类派生新的类,从而构建 Windows应用程序的基本框架。
7/10/2013 21
主要内容
Windows编程的基本概念 MFC应用程序框架类 文档/视图结构 MFC应用程序简单实例 实例分析 序列化和读写文档
7/10/2013
22
文档/视图结构
简化了Visual C++的编程工作
功能强大,灵活且稳定性好。 适用于Windows环境下的图形界面编程
用VC++及MFC开发的Windows平台下的软件有Photoshop, Office,QQ等。
7/10/2013
12
MFC应用程序框架结构类
MFC类库中的类是以层次结构的方式组 织起来的,大多数MFC类都是从CObject 中直接或者间接派生而来。
在MFC应用程序中,文档类和视图类是用户最常用的 两个类,两者密切相关。 文档/视图(Document/View)体系结构是MFC应用程 序框架结构的基础
用文档对象保存应用程序的数据 用视图对象控制视图显示数据 文档与视图的关系是一对多的关系,也就是说,文档中的数据 可以以不同的方式显示。
MFC在类CDocument和CView中为文档和视图提供了 基础结构。CWinApp、CFrameWnd和其他类与 CDocument和CView共同把所有的程序片段连在一起。

清华大学C语言教学课件(共16个PPT)第2个共33页

清华大学C语言教学课件(共16个PPT)第2个共33页

26、要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭

27、只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰


28、知之者不如好之者,好之者不如乐之者。——孔子

29、勇猛、大胆和坚定的决心能够抵得上武器的精良。——达·芬奇

30、意志是一个强壮的盲人,倚靠在明眼的跛子肩上。——叔本华
谢谢!
33
清华大学C语言教学课件(共16个PPT) 第2个
51、山气日夕佳,飞鸟相与还。 52、木欣欣以向荣,泉涓涓而始流。
53、富贵非吾愿,帝乡不可期。 54、雄发指危冠,猛气冲长缨。 55、土地平旷,屋舍俨然,有良田美 池桑竹 之属, 阡陌交 通,鸡 犬相闻 。

C语言课程设计PPT课件

C语言课程设计PPT课件
第31页/共87页
汉字库简介
程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三个文件。 • HZK16中存储的是16*16点阵汉字是按行存储的以便于显示,每个汉字字模32BYTE,按照国标码顺序存储,
其中也包含了682个纯中文符号字母。
第32页/共87页
汉字库的情况
• ASC16存储256个西文ASCII码的8*16点阵格式,按行存储,每个ASCII码16字节。 • HZK24X存储24*24点阵打印字模,按列存储,每个汉字字模占576字节。24*24点阵汉字存储两比较大,所
功能
输入值 输出值
X 范围 CX DX 无
Y 范围 CX DX 无
光标范围 CX DX SI 无
DI
中断程序 CX ES : 无
DX
功能调用 AX=0007 AX=0008 AX=0010
AX=000C
第19页/共87页
鼠标功能调用方法
用TC通过INT33H中断来编制基本函数,有三种常用方法: • 嵌入汇编程序,如:ASM CLI清中断 • 利用全程变量赋予寄存器值,然后通过函数geninterrupt( )调用中断实现 • 利用联合类型REGS,SREGS通过函数int86(),int86x()调用中断,原型在dos.h
设置鼠标的移动范围
SetMouseArea(int x0,int y0,int x1,int y1) { union REGS regs;
regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,&regs;&regs); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,&regs,&regs); }

C语言程序设计(上)清华大学出版社PPT课件

C语言程序设计(上)清华大学出版社PPT课件
"\nluck"
字符串常量的长度 : – 所包含的字符个数
字符串常量的存储方式:
所占存储单元数:串长度+1
例如:
a \0
字符串 结束标记
\n l u c k \0
3. 变量
26
1) 变量的有关概念
在程序运行过程中,其值改变的数据,称
为变量,变量用标识符表示,称为变量名。
变量必须“先定义后使用”
占内存(位) 占内存(字节)
数值范围
有效位数
32
4
3.4E-38~3.4E+38
7
64
8
1.7E-308~1.7E+308
16
80
10
1.2E-493~1.2E+4932
19
35
(2)表示方式。实型常数的表示方式如下。 十进制数:例如6.2,.96,-387.29。 指数形式:例如-2.3E3,-7.5E-3。
007 008 012 010 013 009 011 092 063 039 034 000
40
③字符串常量。字符串常量是由一对双引号 括起来的字符序列。例如:"BOOK",
“$20.5”等都是合法的字符串常量。 ④字符变量。字符变量的取值是字符常量,
即单个字符。字符变量的类型说明符是char。 ⑤符号常量。在C语言中可以用一个标识符
表2.3 字符型数据所占位数
数据类型 类 型 符
有符号字 符型
无符号字 符型
char unsigne
d char
占内 存 ( 位)
8 8
占内存 (字 节)
1 1
数值范围 (ASCII码值)
-128~127(有 符号字符型)

精品-清华大学C语言课件 第18章04 图形模式下输出文本

精品-清华大学C语言课件 第18章04 图形模式下输出文本
图形模式下输出文本
本讲大纲
1.文本输出函数 2.设置文本属性 实例6 输出字符串“welcome to our school” 实例7 按指定格式在指定位置输出字符串
文本输出函数
当前位置显示字符串函数outtext(),其一般形式如下:
void outtext(char *string);
该函数的作用是在现行位置输出字符串指针string所指的文本。 在指定位置显示字符串函数outtextxy(),其一般形式如下:
程序运行结果如图18.23所示: 图18.23 文本输出
表18.9 字体
符号常数
数值
含义
DEFAULT_FONT
0
8*8点阵字(缺省值)
TRIPLEX_FONT
1
三倍笔划字体
SMALL_FONT
2
SANSSERIF_FONT
3
小号笔划字体 无衬线笔划字体
GOTHIC_FONT
4
黑体笔划字directio来自的取值如表18.10:表18.10 输出方向
符号常数 HORIZ_DIR VERT_DIR
settextstyle(int font,int direction,int charsize)
作用是设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。其中font为 文本字体参数,direction为文本显示方向,charsize为字符大小参数。 font的取值如表18.9:
void outtextxy(int x,int y,char *string);
参数(x,y)给定要显示字符串的屏幕位置,string指向该字符串。该函数作用是在规定的(x,y) 位置输出字符串指针string所指的文本。

清华C 语言程序设计:第18章 模板

清华C  语言程序设计:第18章 模板
函数模板
实例化
模板函数
6
2018/11/22
18.2 函数模板(3/5)

函数模板的定义都是以关键字template开头 template之后<>中是函数模板的参数列表 函数模板的参数是类型参数,其类型为 class 或typename
template<class T> template<class T1, class T2>
18.2 函数模板(5/5)


函数模板规定了对数据的处理流程 某些数据类型(模板的参数)要等到模板实例 化时再确定具体的类型 函数模板的实例化由编译器来完成

根据函数调用的实参类型确定模板形参的具体类型 用相应的类型替换函数模板中的模板参数完成函数 模板的实例化

为什么模板的每个形参要在函数的参数列表中 至少出现一次?
10
2018/11/22
例子2:使用函数模板实现数组的排序 和输出(1/4)
//ex18_1:使用函数模板实现数组的排序和输出 #include <iostream.h> #define SIZE 8 template<class ElementType > void sortArray(ElementType b[], int len) { for (int pass=0; pass < len-1; pass++) for(int i = pass+1; i <= len-1; i++) if (b[pass] > b[i]) { ElementType hold; hold = b[ pass ]; b[ pass ] = b[ i ]; b[ i ] = hold; } } 2018/11/22

C语言(清华大学出版社)ppt课件

C语言(清华大学出版社)ppt课件
结构。 (4)具有结构化的控制语句 ,是完全模块化
和结构化的语言。 (5)语法限制不太严格,程序设计自由度大。
C程序设计(第三版)
C语言的特点
(6)允许直接访问物理地址,能进行位操 作,能实现汇编语言的大部分功能,可直接 对硬件进行操作。兼有高级和低级语言 的特点 。
(7)目标代码质量高,程序执行效率高。 只比汇编程序成的目标代码效率低10 %-20%。
C程序设计(第三版)
算法如下 :
S1:输入n
S2:i=2
(i作为除数)
S3:n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不 是素数”,算法结束。否则执行S5
S5:i+1→i
S6:如果i≤n-1,返回S3。否则打印 n “是素
实际上,n不必被2到(n-1)的整数除,只需 被2到n/2间整数除,甚至只需被2到 之n 间的 整数除即可。
C程序设计(第三版)
说明: 本程序的作用是输出一行信息:
1.3 简单的C语Th言is程i序s a介C绍program.
#include <stdio.h>
/*文件包含*/
main( )
/*主函数 */
{
/*函数体开始*/
printf ("This is a C program.\n"); /*输出语句*/
(8)程序可移植性好(与汇编语言比)。基 本上不做修改就能用于各种型号的计算 机和各种操作系统。
C程序设计(第三版)
1.2 C语言的特点
问题:既然有了面向对象的C++语言,为 什么还要学习C语言?
解释1:C++是由于开发大型应用软件的需 要而产生的,并不是所有的人都要去编 写大型软件。

C语言实验教程(上)清华大学ppt

C语言实验教程(上)清华大学ppt
• 9.查看文件目录
经过编辑、编译、
链接和运行后,在
D:\PROGRAM中
(右图所选择的目
录)存放了相关的
文件
29
第一章 C程序实例
• 10.程序调试 • 程序调试有两种方法,一种是直接查看源程序并找出错误,另一种方法——使用 调试工具。 • 调试工具的使用方法有: • (1)断点的设置:在需要设置断点的语句处单击鼠标左键,再单击工具栏中的按钮, 即可设置断点。 • 断点通常设在可能存在错误的语句之前。 • (2)调试:单击工具栏中的按钮开始调试执行,程序执行至断点处暂停。此时调试 工具栏可见,单击其中的按钮,可以“单步执行”,即一次执行一行语句。 • (3)停止调试:单击停止调试按钮,停止程序的调试过程。
10
第一章 C程序实例
• 1.2 C的基本字符与词汇
• 1.2.1 C语言的字符集 • (1)字母和数字
• 小写字母 a b c…z • 大写字母 A B C…Z • 数字 0 1 2…9 • (2)特殊字符 • +=-_()*#&%$!|<>^.,;:"'/\?{}[]~ • (3)空白字符 • 包括空格、换行符和制表符
13
第一章 C程序实例
• (2) 保留字 • 保留字又称关键字,是C语言中具有特定含义
的一些单词
• ANSI C规定的保留字共有32个:
auto continue enum if short switch volatile
break default extern int signed typedef while
C++ 6.0”→“Microsoft Visual C++ 6.0”,启动VC++的集成开发环境 (IDE),界面如图所示 :
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该函数的原型在conio.h。中函数中形式参数left和top是窗口左上角的坐标,right和bottom是窗 口的右下角坐标,其中(left,top)和(right,bottom)是相对于整个屏幕而言的。Turbo C2.0规定整个 屏幕的左上角坐标为(1,1),右下角坐标为(80,25)。并规定水平方向为X轴,方向自左向右;沿垂直 方向为Y轴,方向自上至下。 注意:
}程序运行结果如图18.1所示:
图18.1 输出文本
实例2 以阶梯状输出文本,要求绿底黄字
本例实现以阶梯状输出字符串,要求绿底黄字。
#include <stdio.h> #include <conio.h> main() { int i; char c[]="abcdefghijklmnopqrstu"; clrscr(); textbackground(GREEN);/* 设置屏幕背景色 */ window(5, 5, 35, 25); /* 定义文本窗口 */ textcolor(14);/* 定义窗口背景色 */ for(i=0;i<21;i++) { gotoxy(i,i); putch(c[i]); /*在指定位置输出字符*/ }
参数color为要设置的字符的颜色。
有关颜色的定义如表18.1所示:
表18.1 颜色的相关属性
符号常数 BLACK
数值 0
含义 黑
字符或背景 两者均可
BLUE
1

两者均可
GREEN
2
绿
两者均可
CYAN
3

两者均可
RED
4

两者均可
MAGENTA
5
洋红
两者均可
BROWN
6

两者均可
LIGHTGRAY
7
该函数的作用是清除当前窗口中从光标位置到行尾的所有字符,光标位置不变。 光标定位函数,其一般形式如下:
void gotoxy(x,y);
该函数在文本状态下经常用到,其作用是将字屏幕上的光标移到当前窗口指定的位置上。这里x,y是 指光标要定位处的坐标,当x,y超出了窗口的大小时,该函数就不起作用了。 注意: gotoxy函数中的参数x和y是相对于窗口来说的。 插入空行函数,其一般形式如下:
void insline(void);
该函数的作用是插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。 删除一行函数,其一般形式如下:
void delline(void);
删除当前窗口内光标所在行,同时把该行下面所有行都上移一行。 拷进文字函数,其一般形式如下:
int gettext(int xl, int yl, int x2, int y2, void *buffer);
淡灰
两者均可
DARKGRAY
8
深灰
只用于字符
LIGHTBLUE
9
淡蓝
只用于字符
LIGHTGREEN
10
淡绿
只用于字符
LIGHTCYAN
11
淡青
只用于字符
LIGHTRED
12
淡红
只用于字符
LIGHTMAGENTA
13
淡洋红
只用于字符
YELLOW
14

只用于字符
WHITE15Fra bibliotek白只用于字符
注意:
BLINK
int getche(void);
getche()函数的作用是从键盘上获取一个字符。
掌握屏幕操作函数
清屏函数,其一般形式如下:
void clrscr(void);
该函数的作用是清除当前窗口中的文本内容,并把光标定位在窗口的左上角(1,1)处。 清除行尾字符函数,其一般形式如下:
void clreol(void);
制作文本窗口
本讲大纲
1.定义文本窗口 2.设置窗口颜色 3.文本的输入和输出 4.掌握屏幕操作函数 实例1 输出hello world 实例2 以阶梯状输出文本,要求绿底黄字 实例3 movetext函数应用
定义文本窗口
字符屏幕的核心是窗口(Window),它是屏幕的活动部分,共有80列25行的文本单元,字符输出或显 示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。
int puttext(int x1, int y1, int x2, int y2, void *buffer);
该函数的作用是把先前由gettext()保存到buffer指向的内存中的文字拷出到屏幕上一个矩形区域中。 参数x1和y1为矩形左上角坐标,x2和y2为矩形右下角坐标。Buffer为指向内存中存储矩形区域的指针。 移动文字函数,其一般形式如下:
}程序运行结果如图所示:
实例3 movetext函数应用
#include <stdio.h> #include <conio.h> main() { int i; char c[]="abcdefghijklmnopqrstu"; clrscr(); textbackground(GREEN);/* 设置屏幕背景色 */ window(5, 5, 35, 25);/* 定义文本窗口 */ textcolor(14);/* 定义窗口背景色 */ for(i=0;i<21;i++) { gotoxy(i,i); putch(c[i]); } /*将左上角(5,5)右下角(10,10)文本在左上角为(30,10)的位置输出*/ movetext(5,5,10,10,30,10);
gettext函数是将屏幕上指定的矩形区域内文本内容存入buffer指针指向的一个内存空间。参数x1和 y1为矩形左上角坐标,x2和y2为矩形右下角坐标。内存的大小用下式计算: 所用字节大小=矩形区域的行数*矩形区域的列数*2 其中: 矩形区域行数=y2-y1+1 矩形区域列数=x2-x1+1 拷出文字函数,其一般形式如下:
实例1 输出hello world
在指定区里输出hello world,要求绿底黄字。
#include <stdio.h> #include <conio.h> main() { char c[]="hello world"; textbackground(2);/* 设置屏幕背景色*/ window(5, 5, 35, 25);/* 定义文本窗口*/ textcolor(14);/* 设置输出字符颜色*/ cputs(c); /*输出字符串*/
conio.h中。
设置窗口颜色
文本窗口颜色的设置包括背景颜色的设置和字符颜色的设置,设置背景颜色的函数的一般形式如下:
void textbackground(int color);
参数color为要设置的背景的颜色。
设置字符颜色的函数的一般形式如下:
void textcolor(int color);
int movetext(int x1,int x2,int y2,int x3,int y3);
movetext()函数将屏幕上左上角为(x1,y1),右下角为(x2,y2)的一矩形窗口内的文本内容复制到 左上角为(x3,y3)的新的位置。该函数的坐标也是相对于整个屏幕而言的。 说明:
movetext()函数是复制而不是移动窗口区域内容,当使用该函数以后,原位置区域的文本内容不会消 失,仍然存在。
int cputs(char *string);
cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样,只是受窗口大小的限制。 字符输出函数
int putch(int ch);
putch()函数输出一个字符到窗口内。 说明:
使用以上几种函数,当输出超出窗口的右边界时会自动转到下一行的开始处继续输出。当窗口内 填满内容仍没有结束输出时,窗口屏幕将会自动逐行上卷直到输出结束为止。 2.窗口内文本的输入函数 字符输入函数的一般形式如下:
若window函数中的坐标超过了屏幕坐标的界限,则窗口的定义就失去了意义,也就是说定义将不 起作用。 如要定义一个窗口左上角在屏幕(5,5)处,大小为30列20行的窗口可写成:
window(5,5,35,25);
说明: windows函数的原型在头文件conio.h中,本文中介绍的文本窗口中的所有函数原型都在头文件
编写绘图程序经常要用到对字符屏幕进行操作。Turbo C2.0可以定义屏幕上的一个矩形域作为窗 口,使用window()函数定义。窗口定义之后,用有关窗口的输入输出函数就可以只在此窗口内进行操 作而不超出窗口的边界。 window函数的一般形式如下:
void window(int left, int top, int right, int bottom);
}程序运行结果如图所示:
128
闪烁
只用于字符
背景只有0到7共八种颜色,当取大于7小于15的数,则代表的颜色与减7后的值对应的颜色相同。
文本的输入和输出
1.窗口内文本输出函数 格式输出函数
int cprintf(“格式化字符串”,变量表列);
cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf()函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制,而printf()函数的输出为整个屏幕。 字符串输出函数
相关文档
最新文档