由动态表动态创建数据窗口的编程技术

合集下载

数据窗口编程实验报告

数据窗口编程实验报告

一、实验目的1. 理解数据窗口的基本概念和功能。

2. 掌握数据窗口的创建、操作和使用方法。

3. 通过实验加深对数据窗口编程的理解和应用。

二、实验环境1. 操作系统:Windows 102. 开发环境:Delphi XE73. 数据库:Microsoft SQL Server 2014三、实验内容1. 数据窗口的创建2. 数据窗口的属性设置3. 数据窗口的控件操作4. 数据窗口的编程应用四、实验步骤1. 数据窗口的创建(1)打开Delphi XE7,创建一个新的VCL Forms应用程序。

(2)在Form1上添加一个TDBGrid控件,用于显示数据窗口。

(3)在Form1上添加一个TADOConnection控件,用于连接数据库。

(4)在Form1上添加一个TADOQuery控件,用于查询数据库。

(5)设置TADOConnection的连接字符串,连接到SQL Server数据库。

(6)设置TADOQuery的SQL语句,查询需要显示的数据。

(7)将TADOQuery的Data属性设置为TDBGrid的数据源。

2. 数据窗口的属性设置(1)设置TDBGrid的Caption属性,显示标题。

(2)设置TDBGrid的Columns属性,添加需要显示的列。

(3)设置TDBGrid的DataSource属性,关联到TADOQuery。

(4)设置TDBGrid的Column属性,调整列宽和标题。

3. 数据窗口的控件操作(1)在Form1上添加一个TButton控件,用于执行查询。

(2)编写TButton的OnClick事件处理程序,设置TADOQuery的Active属性为True,触发查询。

(3)在Form1上添加一个TButton控件,用于关闭查询。

(4)编写TButton的OnClick事件处理程序,设置TADOQuery的Active属性为False,关闭查询。

4. 数据窗口的编程应用(1)在Form1上添加一个TLabel控件,用于显示查询结果数量。

PB动态数据窗口

PB动态数据窗口

[PB]-动态数据窗口〓创建动态数据窗口若要动态创建数据窗口,需要使用函数Create,该函数的语法如下:dw_1.Create(syntax{,errorbuffer})其中,dw_1是数据窗口控件的名称,该数据窗口控件要和新创建的数据窗口对象相关联。

syntax是用来描述创建数据窗口对象的确切语法的字符串。

errorburrer是可选项,用来保存创建数据窗口对象过程中发生的错误信息。

如果不指定该参数,就会在发生错误时显示一个错误信息的提示窗口。

如果创建成功该函数返回1,否则返回-1,如果参数为null则函数返回null。

由于Create函数成功创建数据窗口对象后,要改变dw_1数据窗口控件所关联的数据窗口对象,因此,需要重新为数据窗口设置事务对象(使用函数SetTransObject或者SetTrans)。

获取创建数据窗口的语法有多种方法,可以对相关的SQL语句使用SyntaxFromSQL函数,也可以使用对已经创建好的数据窗口对象使用LibraryExport函数。

因为创建数据窗口的语法比较复杂,即使使用了LibraryExport输出已有数据窗口对象的语法,操作起来也相当费劲。

所以,更为通用的是前面一种方法。

这种方法配合一定的编程技巧,让用户指定要创建的数据窗口对象的SQL语句,使用户有更多的自由和选择。

使用这种方法,肯定用到函数SyntaxFromSQL,它的语法是:transaction.SyntaxFromSQL(SQLselect,presetation,err)其中,transaction是事务对象的名称,该事务对象必须正确地设置了相关参数,并且和数据库建立了联结。

SQLselect是用来创建数据窗口的SQL语句,为String 类型。

presentation是要创建的数据窗口对象的显示风格,为String类型。

简单的格式是:Style(Type=presentationstyle)其中Style和Type都是保留字,presentationstyle的取值有Tabular,Grid,Form,Graph,Group,Label和Nup,其中Tabular是缺省类型。

C#动态创建和动态使用程序集、类、方法、字段等(一)

C#动态创建和动态使用程序集、类、方法、字段等(一)

C#动态创建和动态使⽤程序集、类、⽅法、字段等(⼀) 有时候在整个项⽬架构⾥也需要动态创建程序集的需求,那如何创建程序集呢,请跟我来学习⼀下吧。

⾸先需要知道动态创建这些类型是使⽤的⼀些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使⽤反射,那么动态创建也⼀样使⽤的是反射,是属于反射的技术!也就是将对象或者数据映射成⼀个对象或者程序集保存起来⽽已。

⾸先我们需要了解每个动态类型在.net中都是⽤什么类型来表⽰的。

程序集:System.Reflection.Emit.AssemblyBuilder(定义并表⽰动态程序集)构造函数:System.Reflection.Emit.ConstructorBuilder(定义并表⽰动态类的构造函数)⾃定义属性:System.Reflection.Emit.CustomAttributeBuilder(帮助⽣成⾃定义属性使⽤构造函数传递的参数来⽣成类的属性)枚举:System.Reflection.Emit.EnumBuilder(说明并表⽰枚举类型)事件:System.Reflection.Emit.EventBuilder(定义类的事件)字段:System.Reflection.Emit.FieldBuilder(定义并表⽰字段。

⽆法继承此类)局部变量:System.Reflection.Emit.LocalBuilder(表⽰⽅法或构造函数内的局部变量)⽅法:System.Reflection.Emit.MethodBuilder(定义并表⽰动态类的⽅法(或构造函数))模块:System.Reflection.Emit.ModuleBuilder(定义和表⽰动态程序集中的模块)参数:System.Reflection.Emit.ParameterBuilder(创建或关联参数信息如:⽅法参数,事件参数等)属性:System.Reflection.Emit.PropertyBuilder(定义类型的属性 (Property))类:System.Reflection.Emit.TypeBuilder(在运⾏时定义并创建类的新实例) 我们有了这些类型,基本上就可以动态创建我们的任何需要使⽤的类型,当然很多可以动态创建的类型我不可能都介绍完,如果在项⽬中有需要可以去查阅MSDN,⾥⾯都有DEMO的,主要的问题就是要理解每⼀种类型的定义,⽐如:程序集加载是靠AppDomain,程序集⾥包含多个模块,模块⾥可以声明类,类⾥可以创建⽅法、属性、字段。

PB的数据窗口操作

PB的数据窗口操作

PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。

在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。

下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。

一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。

创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。

2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。

通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。

3.数据检索:使用数据窗口可以方便地进行数据检索。

通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。

4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。

通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。

同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。

5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。

通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。

6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。

例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。

二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。

通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。

这对于动态查询和灵活的数据展示非常有用。

2.嵌套数据窗口:PB支持嵌套数据窗口的使用。

通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。

例如,可以在父数据窗口中显示子数据窗口的数据。

利用PowerBuilder用户对象动态生成录入界面

利用PowerBuilder用户对象动态生成录入界面

型 ,本例 选择 C S O O T M定制类 型 ,定义 u n ti _o n h g用户对 象 , 在此 用户 对象上 又根据 实际动 态生 成多个 可视 化用 户对象 , 将它们作为一个整体来处理。
工具 ,是流行的数据库前端开发工具 之一 。它集成 了强大且易 于使用的第 四代编程语言 ,内置包括数据 窗口在 内的多种对象 类 ,支持并访问当前广泛应用的各种数据库 ,数据窗 口对象是 P w ru dr ( o eb i e 简称 P ) 中一 个功 能十分 强大 的对象 ,也是 l B
Ke rs P w r u dr ojc o e t ; srbetd n i ywod : o e i e ;bet r ne ue jc ;ya c B l -i d o m
1 前 言
Pw rule 作 为 一 种 可 视 化 、面 向 对 象 的 快 速 应 用 开 发 o eB i r d
( h L 0 e i l opt o ue n e r etr B in 0 0 9 T eP A 3 2r d a h si l mptr dn t kcne , e ig10 3 ) n c ac a wo j
Ab t c : c odn eo jc o e t rga mi ’ d s n p n il. a igu eo ep ga mi ei ’ m t— sr t A c rigt t be t r ne p o rm n S e i r c e m kn s f h rr m n d s n s eh a oh —i d g g i p t o g g o s fh B Sv ul srojc,miga teues e t _t sa dcne t hc r hne o t uul, i atl d eP ’ i a ue beta n th sr’ ne i m o t iha cagdcni o s t s rc ot s r e n nw e n y h ie

动态窗口法算法原理说明

动态窗口法算法原理说明

动态窗口法算法原理说明什么是动态窗口法算法原理?动态窗口法算法原理是一种针对海量数据处理的方法,通过设置一个固定大小的窗口,在数据流中滑动窗口并不断更新窗口内的状态,以快速计算特定问题的解。

动态窗口法算法可以大幅减少计算量,提高效率,并且不需要事先对整个数据集进行遍历。

动态窗口法算法的使用场景动态窗口法算法广泛应用于实时数据处理、流式数据分析、滑动窗口查询等场景,例如处理实时交易数据、网络流量分析、时间序列分析等。

这些场景中的数据通常是连续不断产生的,传统的遍历或聚合方法在效率和实时性上无法满足要求,而动态窗口法算法恰能满足这一需求。

动态窗口法算法步骤详解下面我们将详细介绍动态窗口法算法的步骤,分为初始化阶段和滑动更新阶段两部分。

1. 初始化阶段在初始化阶段,我们需要确定窗口的大小、定义窗口内的状态以及初始化状态的值。

窗口的大小根据具体问题来设定,可以是固定大小也可以是根据数据特征动态调整。

2. 滑动更新阶段在滑动更新阶段,我们按照窗口大小依次处理数据流中的元素。

具体步骤如下:2.1 更新状态从数据流中取出一个新的元素,并更新窗口内的状态。

状态的更新根据具体问题而定,可以是计算平均值、求和、统计频次等。

2.2 检查窗口范围检查当前窗口的范围是否超过设定的大小。

如果超过,需要对窗口内的状态进行调整,保持窗口的大小不变,并去除掉窗口最旧的元素。

2.3 处理结果根据窗口内的状态计算所需的结果。

这个结果可以是每次窗口滑动时的统计信息,也可以是在滑动过程中得到的特定结果,如最大值、最小值等。

以上就是动态窗口法算法的基本步骤。

通过不断滑动窗口并更新内部状态,我们可以及时获得问题的结果,避免了对整个数据集的遍历或聚合操作,从而提高了计算效率。

动态窗口法算法的优缺点动态窗口法算法具有以下优点:1. 高效性:由于只需要维护窗口内的状态,可以大幅减少计算量,提高处理效率。

2. 实时性:能够及时处理实时数据流,实现实时计算和分析。

PB数据窗口技巧大全

PB数据窗口技巧大全

PB数据窗口技巧大全PB数据窗口是PowerBuilder语言中的一种常用控件,用于显示和操作数据。

在实际项目开发中,掌握一些PB数据窗口的技巧能够提高开发效率和用户体验。

下面是一些常用的PB数据窗口技巧的详细介绍,包括动态数据源、处理数据更新、格式化数据、控制数据窗口行为等方面。

1. 动态数据源:PB数据窗口支持通过修改SQL语句和参数实现动态查询。

可以通过修改dw_1.sqlsyntax和dw_1.settransobject等属性实现动态数据源切换或过滤。

2. 处理数据更新:PB数据窗口提供了一些方法来处理数据的插入、更新和删除。

可以使用dw_1.insertrow、dw_1.updaterow和dw_1.deleterow等方法来实现数据的增删改操作。

3. 格式化数据:PB数据窗口提供了一些格式化数据的方法,可以通过修改数据窗口列的format属性来实现对数据的格式化。

例如,可以使用dw_1.modify表示列的format属性来自定义数据的显示格式。

4. 排序和过滤数据:PB数据窗口提供了排序和过滤数据的功能。

可以通过修改dw_1.setsort和dw_1.setfilter等方法实现对数据的排序和过滤。

5. 控制数据窗口行为:PB数据窗口提供了一些属性和方法来控制数据窗口的显示效果。

例如,可以使用dw_1.retrieve来重新检索数据,使用dw_1.setitemstatus来设置数据窗口的状态等。

6.多表连接查询:PB数据窗口支持多表连接查询,可以通过在SQL 语句中使用连接符号和条件来实现多表连接查询的功能。

7.数据窗口插入计算列:PB数据窗口支持插入计算列,可以通过在SQL语句中使用函数和表达式来插入计算列实现对数据的计算和处理。

8.数据窗口多级分组:PB数据窗口支持多级分组,可以通过在数据窗口中设置分组列和聚合函数来实现数据的分组和统计。

9.数据窗口嵌套:PB数据窗口支持嵌套,可以在一个数据窗口中插入另一个数据窗口,实现数据的嵌套显示和处理。

如何运用动态SQL语句实现对数据窗口的动态操作

如何运用动态SQL语句实现对数据窗口的动态操作

D n mi tgn Ara是 P weB i e y a c a ig e S o r ul r提 供 d

尤其 是 在 它 的 编 程 语 言 P w rcit中 可 嵌 o eSr p
的一 种对 象数据 类 型 变量 , 于保 存 要 执行 的动 用
态S QL语 句信 息 , 用 P w r ule 常 o eB i r已定 义 的 d
1 动态 S QL语 句
在 P weB ie o r udr中动 态 S QL语 句 有 四 种 格
式 , 别适用 于 不 同的情 况. 分
tr i ); eLs t
EXECUTE DYNAM I o e u e { I C Pr c d r US NG
P r me eLit a a tr s );
求数 据窗 口对 象 也 是 “ 态 的 ” 因 此 , 用 动 态 动 , 运 S QL语句 和动 态 数 据 窗 口对 象 技术 实 现对 数据
库 的动态操 作.
D YNAMI UR OR I R E UR OR CC S P OC D EF
Dyn mi S a n a c t gi gAr a ; e
S S ae n { I a scin jc) QL ttme t USNG Trn at Obet ; o
EXECUTE Dy a c t gn Ara { S NG n miS a i g e U I
P rmeel t ; aa tri ) s
Tot l 3 a NO 5
如何运 用动态 S QL语句 实现对数据 窗 口的动态操作
宿 营 高晶辉
( 牡丹 江大 学 黑龙 江 牡丹江 17 1)牡丹 江 师范学 院 501( 黑 龙江 牡丹 江 17 1) 50 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
职业 研究 技术
n an 喱盈 — ed 一 ■■ n t r 一 昌 一‘ o IH l vo a
由动 态 表 动 态 创 建 数 据 窗 口的编 程 技 术
柴 作 良 欧君 ( 安顺职 业技 术学 院信 息 与 电子 科 学系 贵州 安顺 5 1 0 ) 6 0 0
摘 要 : o eB i e ( 在P w r u l r 以下 简称P ) d B 程序设 计中, 经常需要根据 不 同的情 况动态建立数据 表 , 而对建立 的数据表要 进行 查询 、 计等操 统 作, 这就 需要 动态地建立数据 窗 口。 本文就此讨论 了以P 作 为前端开发工具 , d pie e v r B A a tv S r e An wh r( y ee 以下 简, AS 作 为后端数据库 g A) S
据库 的使 用。
对程序设 计人 员来说 , 据 窗 口又可 以分 数
其 中my Q 、 _n m、 _ 是字符串变量 。 S L l ta xl s b
数据操 作的对象 , 其极大 方便 了应用程 序对数 my Q 变量值 实质为 创建表的S L S L Q 语句 , 该语 的语 法 , 第二 个参数是 存放创建 中产生 的错误
15 8
此 函数根据S L 句( Q 语 第一个参 数) 窗 口的风 和 格 ( 二个 参数 ) 构建 完整 的数据 窗 口脚本 , 第 来
执行 错误 则返 回空字符 串。
l s na = S s y tx QL a. y t x o c S n a Fr mS QL

l= sta “ u r (,)” b l n m+ n mei 62 , — c
3创 建 动态 数 据 窗 口
动态建 立好评 委打 分表后 , 为实现 评委对
r t n e ur
e i nd f
分数 、 计算最后 得分 , 并可以 完成排 序 、 删除 等 功能 。 以需建 立静 态表 ( 所 即评委 表) 动态表 和 ( 即评委 打分表 ) 两个数 据表 。 评委表 只包括 “ 评委 姓名 ” 一个 字段 , 具体
的操作离不 开其功能 强大的数 据窗 口
SE LECT“ 委 ” “ 评 , 评委 姓 名 ” FROM
“评 委 ”。
22打开游标 , . 循环取 出评委 姓名 。 构建建表 命
令字符 串 , 后关 闭游 标 然
Ope ge — l n t va ue;
COl0 r= 5 53648 l27)d ataw i d Ow n
my QL= S my QL + x S ]b
Fe c th ge—vaue nt l t m ; t l i o:s na
_
1 数据 窗 口 (aa i o D t n w) W d
数据窗 口是一 个对象 , 包含 了对数据 库 中 的数据进 行特定 操作 的信息 。 只要定 义好一 个
Lo op
my Q = S L “ 后得分 n m r (, S L my Q + 最 u ei 6 c 2 , RI RY KE 参 赛者 ) )P MA Y( ) ”
Cl s g t va ue; oe e_ l
(slc*r m评委打 分” X — t l,s er r “ee tfo , S sye l— ro )
d 1strn o c (Q c ) w一 .et s e t L a a S
c =dw nt es le

1 r s g b x 。 据 窗 口 创 建 失 败 ’ sa e o (数 ,
l— r o ) s e r r
2建 立数 据 表
根据 演讲 比赛情况 , 程序 由评委表 中的 评 委名 字动态生 成评委 打分数 据表 、 户可 录入 用
创 建方 法 在此 不用 叙 述 。 评 委 打 分 表 字 段 从 评 委 表 的 “ 委 姓 评
选 手所 打 分 数录 入 、 统计 、 排序 等 功 能 , 态 动
建立 该 表 的 数据 窗 口对 象成 为 关 键 。 序设 程 计 思 路 及 代码 如 下 。 3 1 置数据 窗 口风格 .设
服 务器 , 现 由动态数据 表动态 创建数据 窗 口的程序设 计技术 。 实 关 键 词 : o r i e 游 标 S 数 据 窗 口 P weBul r d QL 中图分 类号 : 42 G6 文 献标 识 码 : A
文章编号 : 7 —9 9 ( 0 ) 8b 一0 5 l l 3 7 2 1 0 ( ) 1 -0 6 5 0 8
句在以 后调 用。
信息 , 创建成 功返 回1 否则返 回一1 当创建 成 , 。
错误 , 代码 如下 : i d 1 c e t( — y t x,s e r r-1 f w一 .r aei s n a l— ro ) s
t n he
2 3 删除 已经存 在的评 委打分 表 。 . 再创建 新表 功后 , 新数 据 窗 口显示数 据 , 刷 否则 提示 创建
iy= 0 Font. e ght l H i =- i Fo 2 nt. t h= 2 pi c
的算 法变为 简单 易行 , 提高软件 开发 质量和效
率。
c l r a kg o nd. de e i . mo =1 d t 序 自动提 出评 委 姓名 并 创 建 该表 。 计思 路 ( o o =0 b c r u 设 及主要代码如下 。
f nt he ght o . i =-9 f ont w e g =40 f nt. . i ht 0 o f m iy=O o a l f nt. t pich=2 on c f t. har e =1 4 st 3 backg round .m ode= lbackground .
e eu e i x c t mme it : S d a e my QL;
如果 不删 除已经存 在的表 , 因表 名相 同导 致创建 失败 , 所以上面 两条语 句均不能少 。x e— eu e i c t mme it命令 的作用 是解析并 马 上执 dae
行 动 态 的SQL语 句 。
( o o =l 7 7 l ) c l r 6 7 2 ” 5
my QL ce t tbe 委打 分( S =“ ra e a l评 参赛者
32 . 调用 s n xrm Q 函数构建 窗 口脚本 yt F s L a o
S n a Fr mS y t x o QL函数 有三 个参 数 , 第一
g i 风格 、 rd 字体 为宋 体 , 并把 其作 为 字符 串常
代 码 中d 1 w一 是数 据 窗 口控 件 。
4结语
在数 据库软 件设计 中, 如能 根据需 要较好
P B中数 据窗 口风格有多种 , 此处选用 常用 地 采用从 动 态表 动态 建立 数据 窗 口的 编程技
术, 将极 大地 拓展 软 件 的灵活 性 , 甚至 使复 杂
( aa n o 对象 , D t Wi w) d 所以数据窗 口的设计成为
关键, 以下就 是以PB作为前端 开发 工具 , A AS
c a (0n t n】 . h r )o l 1 4 1”
Fe c th ge — l e i o :s t m ; t va u nt l_ na
21 . 设计游标 读评 委姓名
DECLAR E t v ue ge — al CU RSOR FOR
F n .h re = )tx ( n . c =‘ 体 ’ o t c a st 1 0 e t o t f e 宋 5 f a
中 国科教创 新导刊
C ia d c to In v to H r l hn E u a in n o a in e ad
e eu e i x c t mme it “ rp tbe 评 委 打 da e d o a l
为静态数 据窗 口和动态 数据窗 口。 态数据窗 静
口的数 据 对象 是指 定的 表 的指 定的 字段 及类 分 ” ; 型 , 久不 变 。 永 动态 数据 窗 I则 在程 序运 行 中 q 由代码创 建的 , 其语 法及字 段类 型等视实 际需 要 而定 , 相对 来说更具 有 灵活性 , 度大 , 难 对程 序 员要求 更高 。
名 ” 段值 而 来 , 果 没 有评 委 , 字 如 系统 不 会 建 量 赋给x _ t l变量 : s sye 立 评委 打分 表 。 当用 户 录入 评委 并保 存后 , 程
X — t e sy et e rd c l mn S syl=“t l(yp =g i ) ou a tslc=n o t fc =‘ u oeet o fn . e 宋体 ’ n . a a Fo tF m—
3 3调用 c a . r t e e函数创 建数据 窗口
Crae e t 函数 有两 个参数 , 第一 个参 数是 由 S na F o QL函数产生 的或手 工处理 出来 y t x r mS
数据 窗 口对象 , 可以 在不 同的 程序 中 使用 , 就
所 以可以 视数 据窗 口为封 装 了对数 据库 中的
在数 据库软 件设 计过程 中 , 程序 常常 会 自 动创建一 些临时 的或 中间数据表 来存放 数据 , 对 这 些表 中的 数 据修 改 、 查询 等 操 作是 必 不 可少的 , 且在 不同环境 下 的程 序设计 方法和 代 码编写 各不相 同 。 B 在P 程序 设计 中 , 对表 数据
参数对应S L Q 语法 , 第二个 参数为窗 口的风格 ,
作 为数据库 平台 , 在设 计演讲 比赛评 分系统 中 实 现 由动态 数据 表 动态地 创 建数据 窗 口的编
程技 术。
Do wh l QLc . QL o e : 0 i S e aS cd
相关文档
最新文档