第一篇:2011年准保培训(习题)TC
2011年准保培训(习题)
上市前,剥离可行的有(2011年保代考试真题): A、制药企业排污部分设立子公司剥离
B、负责外包装部分剥离,为公司长年提供服务 C、销售部分剥离,主要负责公司的销售 D、厂区绿化环卫剥离,负责厂区卫生环境
下列关于股份锁定的说法,正确的有:
A、中小板企业,申报前12个月增资入股的股东,应自工商登记之日起锁定36个月
B、中小板企业,申报前12个月从发行人控股股东受让的股东,应自上市之日起锁定36个月
C、创业板企业,申报前12个月增资入股的股东,应自工商登记之日起锁定36个月
D、创业板企业,申报前12个月从发行人控股股东受让的股东,应自上市之日起锁定36个月
E、创业板企业,申报前12个月从发行人第二大股东(非控股股东一致行为人)受让股份的股东,应自上市之日起锁定36个月
下列关于股份锁定的说法,正确的有:
A、创业板企业,因上市公司上市一年半后陷入危机或者面临严重财务困难,受让人提出的挽救公司的重组方案获得该公司股东大会审议通过和有关部门批准,且受让人承诺继续遵守上述承诺的;经深交所同意,控股股东可以转让其持有的股份
B、上交所企业,上市公司上市8个月后,经上交所同意,其控股股东可将其持有的上市公司股份转让给同一控制的另一股东
C、中小板企业董、监、高,离任后满6个月后的6个月内,只能转让所持股份的50% D、创业板企业董、监、高,上市后第10个月离职,则离职之日起18个月内不得转让股份
E、创业板企业董、监、高,上市后第10个月离职,第12个月通过交易所增持股份10万股,增持的10万股在当年可转让1/4
发行人的内部控制应达到(准保培训检测题): A、制度健全且被有效执行
B、能够合理保证财务报告的可靠性 C、能够合理保证生产经营的合法性 D、能够合理保证营运的效率与效果
主板,影响IPO的有:
A、中小板企业,同一次控股股东股权转让,转给高管每股2元,转给私募10元。按8元一次性计管理费用与资本公积
B、某股东12岁,但有合理的解释,其为财务投资者,股东要求登记在其12岁儿子的名上
C、某生产企业,其一直无偿使用控股股东的商标,辅导期间将商标无偿转给该生产企业
D、某现任独立董事两年前曾受证监会行政处罚
E、预计上市后关联交易将会持续上升,没有很好的解决措施
主板,影响IPO的有:
A、产品不同,但有相同的供应商,原材料相同,且生产流程大致相同,不构成同业竞争
B、实际控制人的弟弟从事的上游客户未纳入上市体系,有合理解释 C、某拟上市公司董事王某与拟上市公司共同设立一个企业,拟上市公司持股90%,王某持10%,从事与拟上市公司不同的业务
D、发行人近三年曾被税务机关出具罚款1000元,不构成重大违法 E、控股股东未参与公司经营,其两年前因犯罪而在监狱服刑 下列说法,正确的有:
A、历史上曾有实物出资没有过户,后用现金补足 B、发行人股权分散,经多方面认定无实际控制人
C、定向增发,发行部要征求上市部的意见,而上市部要征求交易所的意见 D、报告期内会计政策、会计估计不能调整 E、连锁企业的加盟商,核查范围要达到70%以上
判断:原发行人经营两种业务,于2008年分立,将其中较大一块业务剥离出来,2010年进行申报
判断:同一控制下合并,2008年收购达总资产60%,2009年达70%,2009年四季度进行申报
下列关于创业板IPO的说法,正确的有: A、整体改制,无验资报告,由省级政府确认 B、控股子公司,实收资本未缴足
C、注册资本8000万元,问题出资占5000万元,规范后运行24个月申报 D、注册资本8000万元,曾有抽逃2000万元,报告期内补回
创业板的下列情形不影响独立性的有
A、控股股东在某项业务领域有ABC三项专利,其中AB专利已经纳入发行人体系,C专利留在控股股东手中但实际未使用 B、与控股股东共用商标
C、生产厂房、办公场所向关联方租赁 D、发行人上市后关联交易占同类交易的35% E、发行人上市后,业务链的某一项核心环节有依赖关联方,但占比非常小,只有2%
创业板的下列情形不影响独立性,或表述正确的有
A、目前存在实质性同业竞争,控股股东出具承诺将来不从事同类业务 B、某公司股权较为分散,第二大股东股权4%,有从事相似业务 C、关联方处置:注销或转让了的,要提供清算或转让之前的财务数据 D、关联方的股权转让的,要核查受让方,是否存在亲属关系,即使不是会计准则的关联方,也应披露
E、与同一家关联方存在比例较大的采购和销售构成发行障碍
下列情形符合创业板上市要求的有:
A、客户集中度较高,募投项目不是目前主导产品 B、募投产品未获得客户认证
C、招股说明书只对公司员工交纳社保与公积金作出定性分析与披露 D、某发行人是军工企业,经国防科工委批复,对部分信息豁免披露 E、某软件企业,税收优惠金额与比例均较大,但均符合法律法规的规定
询价对象应包括:
A、董事会决议公告后已经向上市公司或者保荐人提交认购意向书的供应商
B、公司前30名股东
C、不少于20家证券投资基金管理公司 D、不少于10家证券公司 E、不少于5家保险公司
判断:上市公司发行可转换公司债券,由市场询价确定。
判断:上市公司发行可转换公司债券,由发行人自行确定。(2011年准保培训检测题)
判断:公司债券对担保未作出强制性要求。
判断:公司债券要求评级,但对于评级的级别未作出要求
下列关于公司债券计算口径的说法,正确的有: A、股权融资、债券融资申请可以同时进行
B、发行债券不能超过最近一期净资产的40%,净资产得审计;
C、发行债券不能超过最近一期净资产的40%,净资产为母公司个别报表中所有者权益
D、发行债券不能超过最近一期净资产的40%,净资产为合并报表资产额扣除少数股东权益
E、计算累计债券不包括短期融资券 F、计算累计债券不包括短中期票据
G、公司近一期净资产10亿元,已发行中期票据3.5亿元,拟发行公司债券4亿元
下列关于可转换债券的说法,正确的有:
A、上市公司股东拟发行可交换公司债券,债券金额不得超过用于交换股票按照交换价格计算的市值的70%,且股票设置为担保物 B、拟用于交换的股票不能是有限售条件的股票 C、发行可交换债可以不进行评级
D、发行可交换债的股东,需要提供近三年一期的财务报告,财务报告要求依据新会计准则编制,并由同一家具有证券期货业务资格的会计师事务所审计
E、发行可交换债的股东,可以不用提供最近一期的季报
上市公司非公开发行股票,以下构成发行障碍的有(自小古):
A、上市公司非公开发行股票购买资产,所交易标的资产涉及环保有关报批事项,在董事会决议公告前已申请报批但尚未获得环保部门批复,公司在重组报告书中已披露相关进展情况和程序,并作出特别风险提示; B、上市公司非公开发行股份购买资产,拟购买在本次交易首次董事会决议前存在尚未解除的抵押担保情况,资产出售发承诺在股东大会召开前能解除相关抵押担保,上市公司律师发表意见说明股东大会召开前解除抵押担保不存在障碍; C、上市公司非公开发行股份购买资产,拟购买的资产为企业股权并且为控股股权,该股权存在无形资产出资,目前该无形资产因所有权归属问题尚存在未决诉讼;
D、上市公司非公开发行股票,一部分用于购买资产,另一部分为股票融资(现金认购),非公开发行价格为该次交易首次董事会决议公告日前20个交易日公司股票交易均价的90%。
判断:上市公司公开发行证券,募集资金拟用于重大资产购买,需编制3年一期备考合并利润表和3年一期备考合并资产负债表。
判断:A上市公司,拟收购B公司,两个公司的总资产分别为10亿、8亿元,需要提供备考的三年一期比较报表
股权融资的特点有()(证券发行与承销习题)A、公司财务风险小 B、融资成本较高
C、股权融资不利于企业财务杠杆作用的发挥 D、股权融资可能引起企业控制权变动
债务融资成本一般低于股权融资成本的原因有(BC)(证券发行与承销习题)
A、债务融资成本财务风险较小 B、债务融资具有财务杠杆的作用
C、债务融资利息的支付具有冲减税基的作用 D、债务融资一般不会产生对企业的控制权问题
有关价格和投资者约束机制的表述,正确的有(准保协会培训检测题): A、增发价格、转债转股价格、非公发行底价遵循市价原则 B、非公开发行股票一般情况下通过市场询价确定 C、配股要求代销,大股东承诺
D、在公司治理方面严格有关批准程序和制度
下列关于上市公司再融资的情形,符合要求的有:
A、某上市公司2011年2月非公开发行股份募集资金8亿元,某项目市场前景广阔,资金已经基本使用完,后期仍需要大量资金,于2011年6月再申报发行可转债10亿元
B、某上市公司非公开发行股票募集资金,项目需求10亿元,董事会决议前已经投资6亿元,募集资金10亿元,其中6亿元置换前期投资 C、某上市公司非公开发行股票募集资金,项目需求10亿元,董事会决议后已经投资6亿元,后市场行情下跌,第二次召开董事会并调低价格,拟募集资金8亿元,其中6亿元置换前期投资
D、某上市公司非公开发行股票募集资金,项目需求10亿元,董事会决议后已经投资6亿元,后因预案到期,第二次召开董事会延期,仍以6亿元置换前期投资
E、某上市公司非公开发行股票募集资金,项目需求10亿元,董事会决议后已经投资6亿元,后修改了发行股数,第二次召开董事会延期,拟募集资金12亿元,其中6亿元置换前期投资
下列关于上市公司再融资的情形,符合要求的有:
A、某再融资项目,项目设计启动时铺底流动资金为1亿元,而该项目总投资6亿元
B、募集资金用于收购资产(评估定价),保荐机构未直接对盈利预测进行实质性判断,未对评估值的高低作实质性判断
C、募集资金用于收购资产,该资产的经营业绩不是独立的,价格按20%的评估溢价交易
D、募集资金用于收购资产,该资产用收益现值法评估 E、收购资产未明确评估基准日与资产交割日之间的收益归属
F、收购资产,用收益现值法,约定评估基准日与资产交割日之间的收益归转让方 下列关于新股发行的表述,正确的有:
A、上交所网下发行,发行人和券商可确定最低配售数量,入围机构较多应进行随机摇号,根据摇号结果进行配售
B、要求主承销商在路演询阶段,即向询价对象披露研究报告的估值结论和主要参考信息
C、发行人及其主承销商须披露参与询价的机构的具体报价情况
D、网上可向网下回拨,仍不足,可由承销团推荐其他投资者参与网下申购 E、网下机构投资者在既定的网下发售比例内有效申购不足,不得向网上回拨,可以中止发行。中止发行后,在核准文件有效期内,可随时发行,发行后向中国证监会备案
第二篇:TC学习心得
1、路网的建立
(1)路网简单的话,直接在transcad里新建相应的地理文件,画出小区和路网
(2)将cad的路网图导入,autocad——输出dxfR12的文件——在transcad中打开(具体参读工程蚂蚁的借助AUTOCAD在transcad中建立线网层方法,他在那里写的非常详细,包括一些注意事项)
在这里我有几点不明白的需要大虾指点:路网在cad里画好后,需在结点打断(交叉口),是怎么实现的一次性打断?我只会一条一条的打断
2、od矩阵的导入
(1)excel做成一维的形式,直接用transcad打开,然后使用MATRIX--IMPORT倒入到transcad中
(2)似乎还有另一种更简单的方法,我一直没搞明白??
3、小区编号问题
transcad默认的小区ID与实际对小区的编号不一致,为使其一致可使用输入输出法:先将小区增加一个编号的字段,输出小区文件为标准的地理文件,此时ID选择编号,再输入该文件即可
4、小区合并大区的问题
(1)在小区中增加一个字段daqu(2)需要合并的小区在这一字段填写所在的大区区号(3)操作:tool/geographic analysis/merge by value
5、质心连杆问题:
(1)质心连杆在分配后影响到图的美观,可以先将连杆作选择集,然后将其status设置为invisable(2)质心连杆上的交通量分配不合理,可以通过多设置几条质心连杆或将其连接到不同的道路上(比如支路)具体的方法我还没有掌握,恳请大虾赐教
6、几个小细节
(1)作分配时,对任何的路网或节点的数据进行过改动后,需重新生成net文件才可生效(2)对于生成的期望线,可以通过map/color theme将其设置为颜色样式
7、有transcad作公交规划的步骤:(1)在transcad软件中,建立城市道路网(2)划分交通小区,并建立公交OD文件
(3)在道路网的基础上,在建立公交线网,并布设公交站点(4)将交通小区型心与公交站点连接起来 公交规划中的应用不明朗?
第三篇:TC
第五章 TC 算术运算符和算术表达式
5.1 概述
TC语言中运算符和表达式数量之多,在脚本语言中是少见的,正是丰富的运算符和表达式使TC 语言功能十分完善。这也是TC语言的主要特点之一。
TC语言的运算符具有不同的优先级,在表达式中,各运算量参与运算的先后顺序要遵守运算符优先级别的规定.5.2 TC运算符简介
TC语言的运算符可分为以下几类:
1.算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)。
2.关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(= =)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。4.赋值运算符:用于赋值运算,分为简单赋值(=).算术运算符用来计算,关系和逻辑运算符,用来作比较,赋值运算符,用来给变量赋值.5.3算术运算符和算术表达式 1.基本的算术运算符
加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,4+8等。 减法运算符“-”:减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等 乘法运算符“*”:双目运算. 除法运算符“/”:双目运算。参与运算量均为整型时,结果也为整型,舍去小数。
如果运算量中有一个是浮点型,则结果为浮点型。
〖例〗
1.字符型 字符
2.字符=字符串.格式化(“nn%d,%dn”,20/7,-20/7)3.辅助.消息框(字符)4.字符=字符串.格式化(“nn%d,%dn”,20.0/7,-20.0/7)5.辅助.消息框(字符)复制代码
本例中,20/7,-20/7的结果均为整型,小数全部舍去。而20.0/7和-20.0/7由于有字符型参与运算,因此结果也为实型。
求余运算符(模运算符)“%”:双目运算。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。【例】
1.字符型 字符
2.字符= 字符串.格式化(“%dn”,100%3)3.辅助.消息框(字符)复制代码
本例输出100除以3所得的余数.2.算术表达式和运算符的优先级
表达式是由常量、变量、功能和运算符组合起来的式子。一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级进行。单个的常量、变量、功能可以看作是表达式的特例。算术表达式是由算术运算符和括号连接起来的式子。
算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合TC语法规则的式子。
以下是算术表达式的例子:
1.a+b 2.(a*2)/c 3.(x+r)*8-(a+b)/7 复制代码
运算符的优先级:TC 语言中,运算符的运算优先级共分为8级.1级最高,9级最低.在表达式中,优先级较高的先于优先级较低的进行运算,同优先级下,在TC中,都是从左向右计算. 一级,[](数组下标调用),功能调用, 二级,!(逻辑非运算)
三级,()(括号里面的表达式)
四级,*(乘操作),/(除操作),%(求余) 五级,+(加法),-(减法)
六级,>(大于),<(小于),>=(大于等于),<=(小于等于) 七级,==(等于),!=(不等于) 八级,&&(与操作) 九级,||(或操作)
第六章 TC的关系运算符和表达式
6.1 概述
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作,这样的比较运算在TC中称为关系表达式,运算符号称为关系运算符.6.2 关系运算符
比较两个量的运算符称为关系运算符。
关系运算符及其优先次序
在TC语言中有以下关系运算符: 1.< 小于
2.<= 小于或等于 3.> 大于 4.>= 大于或等于 5.== 等于 6.!= 不等于
关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。
6.2 关系表达式
关系表达式的一般形式为:表达式,关系运算符 ,表达式
例如:
1.a+b>c-d 2.x>3/2 3.复制代码
都是合法的关系表达式,关系表达式的值一定是为逻辑型,真 或者是 假,如:5>0的值为“真”。(a=3)>(b=5)由于3>5不成立,故其值为假。
6.3 逻辑运算符和表达式
逻辑运算符极其优先次序,TC语言中提供了三种逻辑运算符: 1.&& 与运算 2.|| 或运算 3.!非运算
与运算符&&和或运算符||均为双目运算符.非运算符!为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的,关系可表示如下:
1.!(非)→&&(与)→||(或)复制代码
“&&”和“||”低于关系运算符,“!”高于算术运算符。
按照运算符的优先顺序可以得出:
a>b && c>d 等价于(a>b)&&(c>d)
!b==c||dc&&x+yc)&&((x+y) 逻辑运算的值 逻辑运算的值也为“真”和“假”两种。其求值规则如下: 1.与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。 例如: 5>0 && 4>2 由于5>0为真,4>2也为真,相与的结果也为真。 2.或运算||:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。例如: 5>0||5>8 由于5>0为真,相或的结果也就为真。 3.非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。 例如:!(5>0)的结果为假。 虽然TC编译在给出逻辑运算值时,逻辑运算值只有“真”,“假”这2个值。不是“真”就为“假”。 逻辑表达式 逻辑表达式的一般形式为:表达式 逻辑运算符。 其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。 例如:(a&&b)&&c 根据逻辑运算符的左结合性,上式也可写为: a&&b&&c 逻辑表达式的值是式中各种逻辑运算的最后值,以“真”和“假”分别代表。 下面做个表达式的综合实例: [例] 1.功能 逻辑型 测试(逻辑型 a,整型 b,整型 c)2.如果(a&&(c>b))3.辅助.消息框(“a等于真并且c大于b”)4.如果结束 5.6.如果(!a||(c+b)>100)7.辅助.消息框(“a等于假或者c加b的值大于100”)8.如果结束 9.10.返回 真 11.功能结束 复制代码 以上代码中,我们不难看出,如果测试函数传入的参数a为真,并且c大于b的时候,会弹出对话框“a等于真并且c大于b” ,如果传入的参数a为假,并且b+c的值大于100的时候,会弹出对话框“a等于假或者c加b的值大于100”.第七章 TC 过程化程序设计 7.1 概述 过程化程序设计是一种以事件为中心的编程思想,就是分析出解决问题所需要的步骤,然后用功能把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际的实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.对比较面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与功能的方法可以很好的组织.比如拿学生早上起来的事情来说说这种面向过程吧.粗略的可以将过程拟为: (1)起床 (2)穿衣 (3)洗脸刷牙 (4)去学校 而这4步就是一步一步的完成,它的顺序很重要,你只须一个一个的实现就行了,我们用TC的形式表现出来 1.空间 我的一天 2.3.功能 逻辑型 起床()4.//起床...5.返回 真 6.功能结束 7.8.功能 逻辑型 穿衣()9.//穿衣...10.11.12.13.14.15.16.17.18.19.20.21.22.返回 真 功能结束 功能 逻辑型 洗脸刷牙()//洗脸刷牙...返回 真 功能结束 功能 逻辑型 去学校()//去学校...返回 真 功能结束 23.空间结束 复制代码 我们调用的时候就这样了 1.我的一天.起床()2.我的一天.穿衣()3.我的一天.洗脸刷牙()4.我的一天.去学校()复制代码 过程化程序设计中,我们经常把把一个问题分解成若干小问题,再对每个小问题进行分解(分模块),知道每个问题的难度都足以小,能够解决为止,然后再把这些小问题合并,就解决了大问题,一般要完成过程化程序设计主要由以下三种逻辑结构组成: 顺序结构:顺序结构是一种线性、有序的结构,它依次执行各功能 循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件为止 选择结构:选择结构是根据条件成立与否选择程序执行的通路 采用过程化程序设计方法,程序结构清晰,易于阅读、测试、排错和修改。由于每个模块用功能定义封装,执行单一功能,模块间联系较少,使程序编制比过去更简单,程序更可靠,而且增加了可维护性,每个模块可以独立编制、测试.下面我们来一一介绍它们.第八章 TC 如果语句 8.1 如果语句 如果语句,也就是 如果 语句,用如果语句可以构成分支结构.它根据给定的条件进行判断,以决定执行某个分支程序段.TC语言的如果语句有两种基本形式,并且每个如果语句的结尾都要有一个如果结束。 (注:关键字中英文对应关系,如果else,如果结束select,条件default,选择结束while,循环结束endfor) 图解: 实例: 1.2.功能 逻辑型 测试()3.整型 i=0 4.遍历(100)5.i=i+1 6.遍历结束 7.返回 真 8.功能结束 复制代码 本例程序将重复执行100次循环,每执行一次,i值加1。 2、条件表达式的遍历 遍历(整型 i=0;i<100;i++)…… 循环语句 遍历结束 注: 整型 i : 表示定义了一个遍历语句的变量。 i<100 : 这个是遍历语句成立的条件,只要i的值小于100,就会一直遍历下去,直到i大于等于100结束遍历。 i++ : 这个语句相当于 i = i + 1。 图解: 实例: 1.2.功能 逻辑型 测试()3.整型 sun=0 4.遍历(整型 i=0;i<100;i++)5.sun = sun + 1 6.遍历结束 7.辅助.消息框(转换.整型转字符型(sun))8.返回 真 9.功能结束 10.复制代码 10.1.3 跳出语句 跳出语句通常用在循环语句中。如果没有跳出语句,则将成为一个死循环而无法退出。当跳出语句用于循环语句中时,可使程序终止循环而执行循环后面的语句, 通常跳出 语句总是与如果语句联在一起。即满足条件时便跳出循环。 (注:关键字中英文对应关系,跳出continue)循环(表达式1) …… 如果(表达式2)继续 …… 如果结束 循环结束 例: 1.2.功能 逻辑型 测试()3.整型 i=0 4.循环(i<100)//设置循环 5.如果(i<50)6.i=i+2 7.继续 //判断满足条件者,不在执行后面的语句,直接返回循环语句继续循环 8.如果结束 9.i=i+1 10.11.循环结束 返回 真 12.功能结束 复制代码 事例中当i的值小于50的时候,i每次都是加2的,当i的值大于50的时候就每次加1了。 第十一章 TC 功能定义 11.1 TC功能概述: 功能是TC源程序的基本模块,通过对功能模块的调用实现特定的功能.TC语言中的功能相当于其它高级语言的子程序,在其他高级语言中,比如C,C++中,称为函数.允许用户建立自己定义的功能。用户可把自己的算法编成一个个相对du立的功能模块,然后用调用的方法来使用功能。可以说TC程序的全部工作都是由各式各样的功能完成的,所以也把TC语言称为功能式语言。 由于采用了功能模块式的结构,TC语言易于实现结构化程序设计。使程序的层次结构清晰,便于程序的编写、阅读、调试。 在TC语言中可从不同的角度对功能分类。 一.从功能定义的角度看,功能可分为TC库功能(API)和用户定义功能两种。1)TC库功能(API):由TC系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序中直接调用即可。2)用户定义功能:由用户按需要写的功能。对于用户自定义功能,不仅要在程序中定义功能本身,而且在主调功能模块中还必须对该被调功能进行类型说明,然后才能使用。 二.TC语言的功能兼有其它语言中的功能和过程两种功能,所有TC功能都是有返回值的功能:此类功能被调用执行完后将向调用者返回一个执行结果,称为功能返回值。如数学功能即属于此类功能。由用户定义的这种要返回功能值的功能,必须在功能定义和功能说明中明确返回值的类型。 三.从主调功能和被调功能之间数据传送的角度看又可分为无参功能和有参功能两种。 1)无参功能:功能定义、功能说明及功能调用中均不带参数。主调功能和被调功能之间不进行参数传送。 2)有参功能:也称为带参功能。在功能定义及功能说明时都有参数,称为形式参数(简称为形参)。在功能调用时也必须给出参数,称为实际参数(简称为实参)。进行功能调用时,主调功能将把实参的值传送给形参,供被调功能使用。 四.TC语言提供了极为丰富的(API)库功能,这些库功能又可从功能角度分类。具体可以在TC程序中或者帮助文档中看到相应的功能功能和使用说明。功能定义的一般形式 (注:关键字中英文对应关系,功能endfunction,返回-return) 1.无参功能定义的一般形式 1.功能 功能类型 功能名()2.//声明部分.....语句 3.//执行的操作 4.返回 功能类型 5.功能结束 6.复制代码 其中功能类型和功能名称为功能头。返回类型指明了本功能的类型,功能的类型实际上是功能返回值的类型.该返回类型与前面介绍的TC的各种类型相同。功能名是由用户定义的标识符,功能名后有一个空括号,其中无参数,但括号不可少。功能到功能结束中的内容称为功能体。功能体是执行具体操作的功能调用的集合,它完成了功能的实现操作.1.功能 逻辑型 Hello()2.//这里添加你要执行的代码 3.辅助.消息框(“Hello,world ”)4.返回 真 5.功能结束 复制代码 这里,Hello作为功能名的功能,Hello功能是一个无参功能,当被其它功能调用时,弹出Hello world对话框。 2.有参功能定义的一般形式 1.功能 功能类型 功能名(形式参数表列)2.//声明部分.....语句 3.返回 功能类型 4.功能结束 复制代码 有参功能比无参功能多了一个内容,即形式参数表列。在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行功能调用时,主调功能将赋予这些形式参数实际的值。形参既然是变量,必须在形参表中给出形参的类型说明。例如,定义一个功能,用于求两个数中的大数,可写为: 1.功能 整型 max(整型 a, 整型 b)2.如果(a>b)3.返回 a 4.否则 5.返回 b 6.如果结束 7.功能结束 复制代码 第一行说明max功能是一个整型功能,其返回的功能值是一个整数。形参为a,b,均为整型量。a,b的具体值是由主调功能在调用时传送过来的。在function 和endfunction 中的功能体内,除形参外没有使用其它变量,因此只有语句而没有声明部分。在max功能体中的return语句是把a(或b)的值作为功能的值返回给主调功能。有返回值功能中至少应有一个return语句。 11.2 功能的参数和功能的值 1.形式参数和实际参数 前面已经介绍过,功能的参数分为形参和实参两种。在本小节中,进一步介绍形参、实参的特点和两者的关系。形参出现在功能定义中,在整个功能体内都可以使用,离开该功能则不能使用。实参出现在主调功能中,进入被调功能后,实 19 参变量也不能使用。形参和实参的功能是作数据传送。发生功能调用时,主调功能把实参的值传送给被调功能的形参从而实现主调功能向被调功能的数据传送。功能的形参和实参具有以下特点: 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在功能内部有效。功能调用结束返回主调功能后则不能再使用该形参变量。 实参可以是常量、变量、表达式、功能等,无论实参是何种类型的量,在进行功能调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。 功能调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在功能调用过程中,形参的值发生改变,而实参中的值不会变化 例: 1.空间 测试 2.功能 逻辑型 A()3.整型 n=100 4.测试.B(n)5.返回 真 6.功能结束 7.8.功能 整型 B(整型 n)9.整型 i=n-1 10.11.12.13.14.15.16.复制代码 循环(i>=1)n=n+i i=i-1 循环结束 返回 n 功能结束 空间结束 在A功能中输入n值等于100,并作为实参,在调用时传送给s 功能的形参量n(注意,本例的形参变量和实参变量的标识符都为n,但这是两个不同的量,各自的作用域不同)。n值为100。即实参n的值为100。把此值传给功能s时,形参n的初值也为100,在执行功能过程中,形参n的值变为5050。返回主功能之后,输出实参n的值仍为100。可见实参的值不随形参的变化而变化。 2.默认参数和引用传值参数 1).默认参数: 前面已经介绍过,功能的参数分为形参和实参两种。功能通过定义形参的数据类型,调用该功能者则需要传入一个和形参相同的数据类型的参数来调用。通常情况下,功能定义了多少个参数个数,调用该功能者必须传递相应数据类型的参数个数,如果用户在功能定义参数的时候予以了初始值,调用该功能者,可以根据需要如果不需要这个参数的时候,可以不用对该参数进行赋值调用.或者修改其默认值进行调用都可以,这种功能参数的定义方式就是默认参数定义。例: 空间 我的程序 功能 整型 默认参数(整型 参数A,整型 参数B=0).....//语句 返回 0 功能结束 功能 整型 A(整型 参数A) 我的程序.默认参数(参数A)//第二个默认参数可以选择不传值 我的程序.默认参数(参数A,10)//第二个默认参数可以传入其他整型值 返回 0 功能结束 空间结束 以上例子,我们可以看到,功能:默认参数中,有2个参数,第一个是整型参数,第二个也是整型参数,但在定义的时候赋初始值等于0了,也就是默认参数。所以功能A在调用功能默认参数的时候,除了第一参数必须传入一个整型参数外,第二个默认参数可以选择性的选择传入另外一个整型值或者不传任何值。 2).引用传值参数: 前面已经介绍过,功能的参数分为形参和实参两种。功能调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在功能调用过程中,形参的值发生改变,而实参中的值不会变化。但通过我们的引用传值参数方式可以改变这种数据是单向的传递方式,我们在做一个功能定义参数的时候,在参数前面加一个“&”符号,就说明了这个参数属于引用传值。调用该功能者,在给该功能的引用传值传入参数变量的时候,如果调用者对该引用传值传入参数变量进行重新赋值的时候,在该功能调用结束的时候,该引用传值传入参数变量的值会等于调用者中重新赋予的新值,这种功能参数的定义,以 “&”符号 出现的时候,就属于引用传值参数。例: 空间 我的程序 功能 整型 引用传值(整型 &A, 整型 &B)A=A*2 B=B*4 返回 0 功能结束 功能 整型 普通传值(整型 A,整型 B)A=1, B=2 我的程序.引用传值(A,B)返回 0 功能结束 以上例子中,功能:引用传值,定义了2个引用传值的参数A和B,功能:普通传值, 在调用功能引用传值的时候, 传入了变量A,和变量B, 变量A的值赋值等于1, 变量B的值赋值等于2, 而引用传值功能会将传入的变量A的值乘于2, 将变量B的值乘于4, 所以在功能:引用传值执行到返回的时候, 传入的变量A的值由原来的1等于1*2改变等于2, 而变量B的值由原来的2等于2*4改变等于8。 3.功能的返回值 功能的值是指功能被调用之后,执行功能体中的程序段所取得的并返回给主调功能的值。对功能的值(或称功能返回值)有以下一些说明: 1)功能的值只能通过return语句返回主调功能。 返回语句的一般形式为: 返回 表达式 或者为: 返回(表达式)该语句的功能是计算表达式的值,并返回给主调功能。在功能中允许有多个返回语句,但每次调用只能有一个返回语句被执行,因此只能返回一个功能值。2)功能值的类型和功能定义中功能的类型应保持一致。例: 1.2.空间 测试 3.功能 整型 A(整型 a, 整型 b)4.返回 a+b 5.功能结束 6.7.功能 整型 B(整型 a, 整型 b)8.如果(a>b)9.返回 a 10.11.12.13.否则 返回 测试.A(a,b)如果结束 功能结束 14.空间结束 复制代码 功能A中,返回了2个参数中和的表达式,功能B者通过比较参数的大小来返回,如果参数a大于参数b返回参数a,否则传参数a和b给功能A做返回值进行返回。 第十二章 TC 功能的调用 12.1 TC 功能的调用 前面已经说过,在程序中是通过对功能的调用来执行功能体的,其过程与其它语言的子程序调用相似,通过功能所属的空间来引用调用功能的。TC语言中,功能调用的一般形式为: 空间名.功能名(实际参数表) 对无参功能调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实参之间用逗号分隔。 (注:function对应TC中文为:功能,endfunction对应TC中文为:功能结束,return对应TC中文为:返回) 功能调用的方式在TC语言中,可以用以下几种方式调用功能: 1.功能表达式:功能作为表达式中的一项出现在表达式中,以功能返回值参与表达式的运算。这种方式要求功能是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。 2.功能实参:功能作为另一个功能调用的实际参数出现。例: 1.空间 测试 2.功能 整型 A(整型 a)3.返回 a+100 4.功能结束 5.功能 6.整型 B(整型 b)7.返回 b+100 8.功能结束 9.功能 整型 C(整型 a,整型 b)10.11.12.13.14.15.整型 max=测试.A(a)+测试.B(b)返回 max 功能结束 功能 整型 D(整型 a,整型 b)返回 测试.C(测试.A(a),测试.B(b))功能结束 16.空间结束 复制代码 功能C中整型 max=测试.A(a)+测试.B(b),是一个赋值表达式,把功能A和功能B的返回值赋予变量max。功能D者是以功能A和功能B做为了功能C的实际参数,调用了功能C,做为了返回值。 被调用功能的功能原型 在TC语言中主调功能中调用某功能之前不需要做任何声明,只要改功能功能已经编写完成而且该功能所在的空间中进行引用即可。这与使用变量之前要先进行变量说明是一样的。在主调功能中对被调功能作说明的目的是使编译系统知道被调功能返回值的类型,以便在主调功能中按此种类型对返回值作相应的处理。例: 1.空间 测试 2.功能 整型 A(整型 n)3.返回 测试.B(n)4.功能结束 5.功能 整型 B(整型 n)6.返回 测试.A(n)7.功能结束 8.空间结束 复制代码 在同一个空间中,功能间相互调用,只需要功能所在的空间的空间名:测试,引出功能名()就可以调用成功了。例子中的空间名为:测试,测试空间中有功能A和功能B,功能A要调用功能B,因为功能B要传一个整型变量,所以就这样测试.B(n)就可以调用到了,同理功能B调用功能A,也是测试.A(n)即可。 第十三章 TC 空间定义 13.1 空间定义概念 命名空间就相当于一个名称,命名空间里面包含的是功能定义和全局变量的定义,如果在不同名称的命名空间中有相同的功能名,则表示的是不同的含义,一般 我们可以这样理解,空间就是把一套功能分了类,比如TC自带的空间,把字符串的处理的功能都封装成了 字符串空间里面.,窗口的一套功能都是封到 窗口空间里面的.我们来举例说明: 一般我们新建一个项目,TC会默认为我们创建一个 以项目名称 命名的空间,这个空间名是不能修改的,假如我建了一个名称为 我的程序 的项目,会默认生成下面的代码.举例代码如下: 1.空间 我的程序 //定义默认空间 2.功能 逻辑型 开始_点击()//这里添加你要执行的代码 3.返回 真//函数返回语句 4.功能结束 5.功能 逻辑型 退出_点击()//这里添加你要执行的代码 6.辅助.退出()7.返回 真 //函数返回语句 8.功能结束 9.空间结束 //空间结束语句 复制代码 TC的默认生成的空间,自动生成的一些功能或者属性框生成的功能,一般都是事件功能,TC都封在这个默认空间里,这里的 开始_点击和退出_点击,都是界面上面两个默认按钮,开始按钮和退出按钮的点击事件,所触发的功能,也就是说,生成的EXE,当点击开始按钮时,就会执行 开始_点击 功能,事件机制这里不多做介绍,其他会有专门的介绍.假如我们想自己定义一个空间,叫 我的数学,里面实现一个加法运算,我们需要这样写:例: 1.空间 我的程序 2.//定义默认空间 3.功能 逻辑型 开始_点击()4.//这里添加你要执行的代码 5.整型 和 6.和=我的数学.加法(10,10)7.返回 真 8.//函数返回语句 9.功能结束 10.功能 逻辑型 退出_点击()25 11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.//这里添加你要执行的代码 辅助.退出()返回 真 //函数返回语句 功能结束 空间结束 //空间结束语句 //这里是自定义的空间 空间 我的数学 //这里是自定义的空间里面实现的一个自定义的功能.功能 整型 加法(整型 x,整型 y)//这里添加你要执行的代码 整型 和=x+y 返回 和 //函数返回语句 功能结束 空间结束 29.//空间结束语句 复制代码 这里,我们实现了一个 自定义的空间 叫 我的数学 ,并在这个空间里面实现了一个 加法功能,我们在 默认空间 我的程序里面 的 开始_点击()功能里调用了它,调用的格式为 我的数学.加法(10,10)它返回了10+10的结果.这样就实现了,我们的自定义的空间,大家还可以陆续在里面添加其他的功能,比如减法,乘法,什么的,当然我们这里只是举一个例子,这些功能都是直接可以用操作符实现的.数组 数组,顾名思义就是一组同类型的数。 一、数组的声明 声明数组的语法为:在数据类型后加方括号括来说明。本接仅介绍一维数组。下面是一个整型数组的例子: 1.整型[] array= 整型[10] 复制代码 这条语句定义了一个具有10个整型元素的名为array的数组。方括号中的维数表达式可以包含运算符,但其计算结果必须是一个长整型值。这个数组是一维的。下面这些声明是合法的: 1.整型[] offset = 整型 [5*2] 2.浮点型[] count = 浮点型[5*2+3] 3.复制代码 下面是不合法的: 1.整型[] offset= 整型 [5*2/3] // 数组的大小不能为浮点数 2.复制代码 二、用下标访问数组元素 1.整型[] offset= 整型 [5*2] 复制代码 表明该数组是一维数组,里面有10个数,它们分别为offset[0],offset[1],……offset[9];千万注意,数组的第一个元素下标从0开始。一些刚学编程的人员经常在这儿犯一些错误。offset[3]=25;上面的例子是把25赋值给整型数组offset的第四个元素。在赋值的时候,可以使用变量作为数组下标。 1.整型 下标 = 0 2.整型[] offset =整型[5*2] 3.重复(10)4.offset[下标] =辅助.随机数(10,30)5.下标 =下标 + 1 6.重复结束 7.复制代码 题目的意思是随机产生10~30之内的10个整数,存入到数组中。 三、数组的初始化 前面说了,变量可以在定义的时候初始化,数组也可以。 1.整型[] array = 整型[5] 2.array[0] = 1 3.array[1] = 2 4.array[2] = 3 5.array[3] = 4 6.array[4] = 5 7.复制代码 初始化值的个数可以和数组元素个数一样多。 如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,其余的元素被初始化为0。 举个例子: 1.输入5个整数存入数组中,然后把它们从小到大排列并放在同一数组中。(思路:先找出最小的,放在第一个位置,为了防止把原先的数覆盖掉,可以把原先的第一个数和最小数的位置互换)。 1.整型[] array = 整型[5] 2.整型 i=0,j=0,min=0,stmp=0 3.重复(5)4.array[i] =辅助.随机数(10,30)// 随机生成5个数 5.i =i + 1 6.重复结束 7.字符型 输入内容 8.输入内容 = 字符串.格式化(“随机数为:%d,%d,%d,%d,%d”, array[0] , array[1] , array[2] , array[3] , array[4])9.辅助.消息框(输入内容)10.11.12.13.14.15.16.//// 开始排序 i=0 循环(i<4)min=array[i] j=i+1 循环(j<5)如果(min>array[j])// 里面的4行语句很重要 17.18.19.20.21.22.min=array[j] stmp=array[i] array[i]=array[j] array[j]=stmp 如果结束 j = j + 1 23.24.25.26.循环结束 i = i + 1 循环结束 输入内容 = 字符串.格式化(“排列后的数据为:%d,%d,%d,%d,%d”, array[0] , array[1] , array[2] , array[3] , array[4])27.辅助.消息框(输入内容)复制代码 分析:先让第一个值作为基准,如果后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。两个数互换应该这样(stmp=a;a=b;b=stmp;),而不是(a=b;b=a;),想想这是为什么?必须要用一个变量作为桥梁。这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。 二维数组 比方说我们熟知的坐标系,在2D游戏里,一组(X,Y)坐标决定人物的位置,而这里的坐标,我们就可以用二维坐标来描述。二维数组的定义:数据类型 [][] 数组名 比方我们知道游戏里的5组坐标,那么我们就可以定义一个这样的二维数组: 整型[][] 坐标 = 整型[5][2] 这个就可以很清楚的表示:列号为0的表示X坐标,列号为1的表示Y坐标。 二维数组的引用 二维数组和一维数组的使用差不多,不过二维数组提供了二种方法遍历,一种是:先横向再纵向,另一种是:先纵向再横向。不过二种方法的效果都是一样的!那么我们来看看具体怎么访问二维数组。例如: 1.整型[][] 坐标 = 整型[5][2] 2.整型 i=0,j=0 3.循环(i<5)4.j=0 5.循环(j<2)6.坐标[i][j]=辅助.随机数(11,32)7.j = j + 1 8.循环结束 9.i=i+1 10.循环结束 复制代码 二维数组的大小:整型[][]坐标 = 整型[5][2] // 大小为 5* 2三维数组 定义: 类型[][][] 数组名 如:整型[][][] 变量 初始化大小:变量 = 整型[10][2][3] 数组的大小/长度: N*N*N 整型[10][2][3]这里的大小为10*2*3=60 数组的访问:数组名 [下标1][下标2][下标3] 下标的值为0~N-1 N为数组的长度。 多维数组操作复杂,一般用到二维就够了。 TC操作的文件,一般有三种:INI格式文件,TXT格式文件,图片文件。 1、图片文件 图片文件一般都是用做界面美化的资源,以及找图命令的资源。例如: 1.整型 图像序号,返回的x坐标,返回的y坐标 2.图像序号=图像.找图(0,0,1440,900,“d:111.bmp|d:222.bmp|d:333.bmp”,#203040,0.8,0,返回的x坐标,返回的y坐标)3.如果(图像序号>=0)4.辅助.消息框(转换.整型转字符型(返回的x坐标))5.辅助.消息框(转换.整型转字符型(返回的y坐标))6.辅助.消息框(“找到该图”)30 7.否则 8.辅助.消息框(“没有找到该图”)9.如果结束 复制代码 2、INI文件 是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了,但在某些情况,还是要直接编辑.ini才方便。 格式: INI文件是由 节、键、值组成。 节: 就是文件里中括号所表示的内容。如:[数据域] 键与值:就是文件里等号两边的内容。例如:name=张三,那么这里的name就是键,而键的值,我们就称之为值。 在TC里操作INI的命令 1.辅助.写配置(“RealmName”,“East”,“serverGerman”,“D:abc.ini”)复制代码 RealmName为节,East为键,serverGerman为值,D:abc.ini为INI文件路径。 1.字符型 字符串 2.字符串=辅助.读配置(“RealmName”,“East”,“D:abc.ini”)3.辅助.消息框(字符串)复制代码 读配置其实就是获取INI文件里的值,一个INI文件里,这个值是通过节与键来确定的。 3、TXT文件 TXT的文件操作比较复杂,所以TC提供了一个专门处理文件的空间,叫文件。这一套完整的命令,已经足够我们处理如何文件了!3.1、创建文件 整型 创建(字符型 path,字符型 attribute=“创建文件”) 第一个参数是文件的路径,第二个是文件的属性,可以是一个也可以是多个的组合。返回值是成功创建文件的文件句柄,创建失败则返回0,所以在使用的时候,要判 断函数的返回值。例如: 1.整型 文件句柄 2.文件句柄=文件.创建(“d:1.txt”,“读写|共享读|共享写|总是创建”)//自定义属性 3.如果(文件句柄==0)4.辅助.消息框(“文件创建失败”)5.否则 6.辅助.消息框(“文件创建成功”)7.文件.关闭(文件句柄)8.如果结束 复制代码 3.2、打开文件 整型 打开(字符型 path,字符型 attribute=“读写|共享读|共享写|文件要存在”) 第一个参数是文件的路径,第二个是文件的属性,可以是一个也可以是多个的组合,返回值是成功打开文件的文件句柄,打开失败则返回0,所以在使用的时候,要判断函数的返回值。 3.3、关闭文件 逻辑型 关闭(整型 handle) 这里的handle为文件句柄,这个参数是创建文件或者打开文件的返回值。当文件不需要操作了,或者是操作完毕了,我们都应该关闭文件,释放掉系统的资源。 3.4、设置文件的读写位置 逻辑型 设置游标位置(整型 handle,字符型 pos) 这个命令是用来控制文件的读写位置,可以从文件头位置开始,或者是文件结束位 置开始。当我们打开文件或者是创建文件时,文件的读写位置是在文件头位置。 例如: 1.整型 文件句柄 2.文件句柄=文件.打开(“d:1.txt”)3.文件.设置游标位置(文件句柄,“开始”)4.文件.设置游标位置(文件句柄,“结束”)5.文件.关闭(文件句柄)复制代码 3.5、向文件写入内容 逻辑型 写入(整型 handle,字符型 inputstr) 在当前的文件读写位置,向文件中写入指定的内容。handle为文件句柄,这个参数是创建文件或者打开文件的返回值。 逻辑型 写一行(整型 handle,字符型 str) 在当前的文件读写位置,写入指定的内容,并且会自动换行,而写入命令是不会自动换行的。这个命令也可以直接使用写入命令来实现,只需要在写入的内容后面增加换行符(”rn”),”r”表示回车,”n”表示换行。代码如下: 1.文件.写一行(文件句柄,“aaaa”)2.// 等价于 3.文件.写入(文件句柄,“ aaaa ”+”rn”) 复制代码 这2个写内容方法使用时,需要注意一个问题:如果写入位置在文件头,那么当文件头有内容时,会覆盖原来的内容。如果写入的内容比原有的内容长,那么会完全覆盖原有内容;如果写入的内容比原有内容短,那么只会覆盖写入长度的内容,还有一部分原有内容会保留! 逻辑型 末尾写入(整型 handle,字符型 inputstr) 在文件的末尾位置写入内容,使用这个命令的时候,TC会自动将文件的写入位置设置到文件的末尾,之后再写入数据。所以这个命令也可以用写入命令来实现,只需要在写入内容之前,将文件的写入位置设置到文件的结束位置就可以了。代码如下: 1.文件.末尾写入(文件句柄,“ aaaa”)2.// 等价于 3.文件.设置游标位置(文件句柄,“结束”)4.文件.写入(文件句柄,“ aaaa”)复制代码 3.6、获取文件的长度 整型 长度(整型 handle) 命令的返回值表示获取到文件的总大小。 3.7、判断指定路径的文件是否存在 逻辑型 是否存在(字符型 path) 这个命令用来判断指定路径的文件是否存在,如果文件不存在,则返回假,存在则返回真。这个命令一般用了打开文件的操作之前。 更多的文件操作命令,我们可以参照TC的帮助文档,只要打开TC软件,点击软件的右上角的问号,就可以打开帮助文档,之后在TC API说明里找到文件命名空间。 TC网络空间通信 TC的网络通信根据TCP/IP和UDP协议实现的,因此遵守协议的规定。那么我们先来熟悉下这2个协议吧。 UDP协议 UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络连接。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些。 类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。尤其是在需要很强的实时交互性的场合,如网络游戏、视频会议等,UDP协议更是显示出极强的威力。 UDP协议是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。至于对方是否可以接收到这些数据内容,UDP协议无法控制,因此说UDP协议是一种不可靠的协议。 UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。因为UDP协议是面向非连接的协议,没有建立连接的过程,因此它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。 UDP协议的主要作用是完成网络数据流量和数据报之间的转换:在信息的发送端,UDP协议将网络数据流量封装数据报,然后将数据报发送出去;在信息的接收端,UDP协议将数据报转换成实际数据内容。 实际上,我们可以认为基于UDP协议的Socket类似于一个码头,该码头的作用就是负责发送、接收集装箱,一个数据报类似于一个集装箱。因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器端的概念。 TCP/IP协议 TCP/IP是发展至今最成功的通信协议之一,其开放性的特点成为了因特网的基础。 在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式。 服务器是一个进程,它一直等待着客户进程的请求以便为客户进程服务,客户进程向服务器提出请求,服务器对请求做出相应的处理并执行被请求的任务,然后将结果返回给客户机。这里还要讲到一个概念套接字(Socket),Socket是通信基石,是支持TCP/IP协议网络通信的基本单元。 一个Socket就是一个通信的端点,用以一个短整数来表示。 注意:Socket不是端口号,它只是一个句柄,代表网络协议中的一组数据,这组数据包括TCP连接中双方IP地址以及目前连接状况。一个正在被 使用的Socket都有它的类型和与其相关的网络应用进程。 在介绍UDP协议基础内容方面,我们需要对UDP和TCP进行一下简单的对比: TCP协议:可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。UDP协议:不可靠,差错控制开销较小,传输大小限制在64K以下,不需要建 立连接。 根据通信性质,Socket可以分为两类: Stream Socket(会话套接字):使用TCP协议,提供一种面向连接的可靠数据通信方式.当要发送在批量数据或想让发出的数据按顺序无重复地到达目的地时,就要使用会话套接字,但需要很多开销。 Datagram Socket(数据报套接字):使用UDP协议,提供不可靠的,非连接的数据通信方式,具有向多个目标地址发送广播数据报的能力,由于其并不十分可靠,需要应用程序负责管理数据报的排序和可靠性。 总之,若要用TCP协议那Socket就必须设为Stream,反之,用UDP就设为Datagram。 UDP协议的使用 下面介绍下UDP服务器、客户端的流程: UDP服务端创建流程 1、初始化网络环境(网络.初始化()) 2、创建套接字(网络.套接字()) 3、绑定套接字并开启端口(网络.绑定()) 4、接收或发送数据(网络.接收来自()、网络.发送到()) 5、关闭套接字(网络.关闭套接字()) 6、关闭初始化网络环境(网络.关闭()) UDP客户端创建流程 1、初始化网络环境(网络.初始化()) 2、创建套接字(网络.套接字()) 3、接收或发送数据(网络.接收来自()、网络.发送到()) 4、关闭套接字(网络.关闭套接字()) 5、关闭初始化网络环境(网络.关闭()) 图解如下: UDP模式注意: UDP模式的服务端概念比较模糊,需要接收数据需要 绑定 实例源码如下: 服务器代码 1.网络.初始化()//初始化网络环境 2.整型 服务器套接字句柄=网络.套接字(2)//创建数据报(UDP)套接字 3.网络.绑定(服务器套接字句柄,9999)//开启了计算机的9999端口,供外界连接 4.整型 rPort 5.字符型 接收缓存,rIP,发送缓存=“客户端,我是服务器端!” 6.循环(真)7.如果(网络.接收来自(服务器套接字句柄,接收缓存,100,rIP,rPort))//接收数据 8.辅助.消息框(接收缓存)9.网络.发送到(服务器套接字句柄,发送缓存,rIP,rPort)10.11.12.如果结束 循环结束 网络.关闭套接字(服务器套接字句柄)//关闭套接字释放资源 13.复制代码 客户端代码 网络.关闭()//关闭网络环境释放资源 1.网络.初始化()//初始化网络环境 2.整型 服务器套接字句柄=网络.套接字(2)//创建数据报(UDP)套接字 3.整型 rPort 4.字符型 接收缓存,rIP,发送缓存=“服务器,我是客户端” 5.网络.发送到(服务器套接字句柄,编辑框.获得文本(“编辑框0”),“127.0.0.1”,9999)//向指定地址端发送一串字符串 6.网络.接收来自(服务器套接字句柄,接收缓存,100,“127.0.0.1”,9999)//接收数据 7.辅助.消息框(接收缓存)//打印从指定地址接收的字串 8.网络.关闭套接字(服务器套接字句柄)//关闭套接字释放资源 9.网络.关闭()//关闭网络环境释放资源 复制代码 TCP/IP协议的使用 下面介绍下TCP/IP服务器、客户端的流程: TCP 服务端创建流程 1、初始化网络环境(网络.初始化()) 2、创建套接字(网络.套接字()) 3、绑定套接字并开启端口(网络.绑定()) 4、监听套接字并设置可同时连接数(网络.监听()) 5、接受连接(网络.接受()) 6、接收或发送数据(网络.接收()、网络.发送()) 7、返回等待另一客户请求(关闭网络.接受()创建的客户端套接字,重新调用网络.接受()创建新的客户端套接字) 8、关闭套接字(网络.关闭套接字()) 9、关闭初始化网络环境(网络.关闭()) TCP 客户端创建流程 1、初始化网络环境(网络.初始化()) 2、创建套接字(网络.套接字()) 3、与服务器建立连接(网络.连接()) 4、接收或发送数据(网络.接收()、网络.发送()) 5、关闭套接字(网络.关闭套接字()) 6、关闭初始化网络环境(网络.关闭()) 图解如下: 实例代码如下: 服务器代码 1.网络.初始化()//初始化网络环境 2.整型 服务器套接字句柄=网络.套接字(1)//创建流式(TCP)套接字 3.网络.绑定(服务器套接字句柄,9999)//开启了计算机的9999端口,供外界连接 4.网络.监听(服务器套接字句柄,5)//监听套接字,设置可连接数为5个 5.字符型 返回IP,发送缓存=“客户端,你好,我是服务器”,接收缓存 6.循环(真)//循环接受处理连接 7.整型 客户端套接字句柄=网络.接受(服务器套接字句柄,返回IP)//这里程序会挂起等待,直到有客户端连接到来 8.网络.发送(客户端套接字句柄,发送缓存)//向指定客户端发送一串字符串 9.网络.接收(客户端套接字句柄,接收缓存)//接收从客户端发送的字串 10.串 11.网络.关闭套接字(客户端套接字句柄)//关闭套接 辅助.消息框(接收缓存)//打印从客户端接收的字字释放资源 12.如果(接收缓存==“关闭”)//客户端如果发送 关闭 服务器将关闭 13.14.15.16.17.辅助.消息框(“服务器关闭”)跳出 如果结束 循环结束 网络.关闭套接字(服务器套接字句柄)//关闭套接字释放资源 18.复制代码 客户端代码 网络.关闭()//关闭网络环境释放资源 1.网络.初始化()//初始化网络环境 2.整型 客户端套接字句柄=网络.套接字(1)//创建流式(TCP)套接字 3.网络.连接(客户端套接字句柄,“127.0.0.1”,9999)//这里测试所以连接的是本机 4.字符型 发送缓存=“服务器,你好,我是客户端”,接收缓存 5.网络.接收(客户端套接字句柄,接收缓存)//接收从服务器发送的字串 6.辅助.消息框(接收缓存)//打印从服务器接收的字串 7.网络.发送(客户端套接字句柄,发送缓存)//向指定服务器发送一串字符串 8.网络.关闭套接字(客户端套接字句柄)//关闭套接字释放资源 9.网络.关闭()//关闭网络环境释放资源 复制代码 网络命令的使用范围很广泛,大家可以根据自己的需要加入深入。 SiteView TC流量控制 概述 今天,信息技术在中国各个行业中的应用都得到了前所未有的重视,“以信息化带动工业化”已为各级决策部门所共识,各个行业在IT方面都有很大的投入,进行了大量的系统建设和应用开发。在实际情况中,用户长时间的下载、上传文件,占用大量的带宽,影响正常的Email收发、实时视频会议等及时通信或商务活动。因此,有效地管理IT资源,合理的分配利用网络资源,已经成为一件刻不容缓须要解决的事情。为保证企业合理使用Internet资源,通过带宽监视和流量限制技术,能有效防止对Internet资源的滥用。合理分配每个IP使用流量。 SiteView TC是基于Linux操作系统的网络流量监测与管理系统,适用于各种规模的企业和政府的网络,能有效解决网络应用性能问题,保护IT投资,降低运营成本,从而提高用户的生产力。SiteView TC解决方案提供了直观的界面使网络管理人员能够随时随地了解网络带宽使用情况,而且能对网络用户进行分组上下行带宽限制。并且,一旦系统出现可疑异常状况,预警可通过声音、E-mail、滚动消息等方式及时通知相关人员或自动进行常见故障处理,从而最大限度的降低系统平台出现故障的可能,减少可能给企业带来的损失。完善的日志分析报告,更能帮助网络管理人员预防可能出现的故障,为企业网络的战略规划提供依据。 易用快捷的操作方式,SiteView TC采用Web界面,“一键一击”的引导式界面设计,全面提升用户体验。 成熟稳定的系统平台,基于Red Hat Enterprise Linux开发,内核性能优秀稳定,经过全面严格的网络性能测试,对于各种网络环境进行特别参数优化,使得系统可用性大大加强,最大程度上避免产品当机状况的发生,减轻网络管理员繁重的维护及管理工作。 先进的远程协同工作方式,方便多用户操作,当系统遇到突发状况,网络管理员可以通过系统的远程技术支持模块获取技术支持工程师实时在线支持。 完善的系统修复设计,网络管理员可以通过一键备份和一键修复模块,将系统配置自动还原到以前所定义的还原点,更可以通过系统操作记录,获知以前可能存在的误操作,对操作进行修正。 丰富的报警方式,无论系统管理人员身在何处,都能及时了解网络系统可能出现的故障。系统的各种日志报告,更能帮助网络管理人员快速追踪问题根源,找到网络误配置部分,从而杜绝日后出现同样问题。 全面的日志分析报告很好的满足了不同网络管理人员的需求,详尽的文本报告和直观易懂的带宽图表,方便网络管理人员对网络流量状况的了解。对于高层决策人员而言,更能从中提前发现隐患,给企业信息建设战略规划提供依据。功能介绍 1.工作原理 所用的数据包都会流经SiteView TC,通过流量分析引擎按照IP地址,或是协议对数据包进行分类,打上标记。然后,通过流量分析引擎,每三分钟对每个IP的上行流量,下行流量总的统计,以及细化到每个IP的几种基本协议流量统计,并以报表的形式把统计结果保存下来。在通过流通量控制引擎,检查已经受到限制的IP的流量,是否已经达到管理员所限制的最大值。如果已经达带到上限,则通过我们制定的算法对数据包发送的速率进行有效的控制、及整形。 1.1实时流量监控 通过实时获取流过SiteView TC的所有IP地址网络传输速率和流量,为网络管理员的网络建设和管理工作提供参考,并能从异常流量中,分析网络中存在的隐患。在对传输流量监视基础上,可以进一步对单个IP的上下行传输速率进行手动控制,为网络用户区分优先级,对不同优先级的用户提供不同的网络服务,同时SiteView TC还支持按协议控制流量,比如对常见的http、ftp、telnet、ssh、p2p等协议进行流量控制,保证正常的企业上网流量。 另外SiteView TC也可以通过以组的方式或者以一个网段的方式对用户的流量设置,进行统一的管理.2.系统管理 SiteView TC多功能网关不仅功能十分强大,而且通过Web界面进行操作也十分易用。2.1支持远程启停机 可以远程控制机子的关机。2.2网关状态查看 可以很方便地查看网关的硬盘空间、CPU利用率、系统授权文件情况等等。2.3支持远程启停网关各功能模块 以直观的方式提供网关各功能的状态的查看。 管理员可通过点击按钮来完成重启、停止、启动各功能模块。2.4 开机和关机设置 网关重启或关闭时,需要预先启动或关闭的服务,都可以在这里设置。2.5 修改密码 登陆用户可以随时修改登陆密码,增加系统安全性。2.6 计划任务 类似Windows操作系统的计划任务程序,可以通过定义这个模块来定时进行一些自定义任务,比如数据库统计,信息搜集等等。 2.7 支持本地DNS SiteView TC可以缓存查询过的DNS充当本地DNS域名服务器,更快地解析域名。2.8支持DHCP 在255台以下机器的企业网络中,客户机器只需设定自动获取IP地址,就可以通过DHCP服务 获得可以上网的IP地址。 2.9 网络工具 提供PING、TraceRoute、WEB执行命令窗口等日程命令工具集,避免管理员在多平台间切换,直接在Web页面查看输出结果。 2.10 实时连接查看 SiteView TC可以保存所有通过TC的内网机器连接状态,通过SiteView TC进行的数据分析,可以实时查看内网机器的当前状态,比如访问的外网IP地址以及对应的地理位置,端口,标志位等信息。 2.11网络隧道配置 在中大型企业网络中,当企业各组织机构被划分到不同的网段中时,可以通过配置网络隧道,在两台SiteViewTC系统或者一台SiteViewTC系统和一台支持GRE格式封装的路由器之间进行网络隧道对接,轻松实现各部门互访,如同在同一子网。 2.12日志文件大小监控 对系统日志磁盘使用状况进行监控,当日志文件大小超过定义的阀值时,系统会自动发送E-Mail到管理员邮箱提醒注意。 2.13一键备份与恢复 提供对系统配置文件的备份与恢复,可以一键点击备份所有配置文件,也可单独选择特定配置文件进行备份,这适用于重装或升级系统时,大大减少网络管理人员重复工作量,提升工作效率。2.14在线技术支持 这是游龙科技提供给正式版用户的特有服务,每个正式版License都会附送一年的技术支持服务,遇到重大问题无法自行解决时,网络管理人员可以通过点击连接按钮,使得SiteView TC自动连接远程服务器通知游龙科技技术人员,技术人员会进行在线实时维护修复。 材料员考试习题(建筑材料) 一、填空题 1.材料的主要物理性质指标包括(密度)、(密实性)、(孔隙率)和(空隙率)。2.建筑砂筑是由(胶凝)材料、(细骨料)、(掺加料)和(水)组成的。 3.制作混凝土试件至少抗压(3)块为一组 ,抗渗(6)块为一组,抗冻(15)为三组。4.钢材拉力试验所测得的(屈服点)、(抗拉强度)和(伸长率)是钢材的重要技术指标,是作评定钢材质量是否合格的一个试验项目。 5.水泥强度试验其计量单位为(MPa),抗压抗折算至精确(0.1MPa)。6.胶凝材料有(水泥)、(石灰)、(石膏)等,细骨料主要是(砂)。 7.砂试验取样应按比例进行,在料堆上取样时一般以(400)m2或(600)吨为一批。8.混凝土设计常采用(设计)与(试验)相结合的方法。 9.水泥可分为(硅酸盐)、(普通硅酸盐)、(矿渣硅酸盐)、(火山灰质)、(粉煤灰)和(复合水泥)六大类。 10.采用标准养护条件的试件应在(20±5℃)环境中静置(1)昼夜至(2)昼夜,然后(编号)拆模后,应立即放入温度为(20±2℃)相对湿度为(95%)以上的标准养护室养护。11.建筑材料的性能要求一般应包括(力学性能)、(物理性能)、(耐久性能)、化学性能、防火、外观等。 12.材料的强度有(抗压强度)、(抗剪强度)、(抗拉强度)、抗弯强度等,均以材料受外力时(单位面积)上所承受的力的大小来表示。 13.材料在弹性范围内,弹性模量E为常数,其值等于(应力)与(应变)的比值,一般混凝土的弹性模量为(30)GPa,而钢材的弹性模量为(210)GPa。 14.抗渗性通常用(渗透系数)K表示,抗渗等级是以规定的试件在标准试验方法下承受的最大静水(压力)来确定,以符号Pn表示,等级为P6时,表示材料能承受(0.6)MPa的水压力而不渗水。 15.当湿润角a小于等于900的为(亲水)材料,当a大于900(憎水)材料.16.凡水泥(初凝时间)、(氧化镁)、(三氧化硫)、(体积安定性)中任一项不符合标准规定时均为废品。 17.混凝土四种基本组成材料是(水)、(水泥)、(砂)、(石子)。 18.立方体抗压强度以边长为(150*150*150)mm的立方体试件,在标准养护条件下(28)d所测量得的立方体抗压强度值。 19.钢材按化学成分来分有(低炭素结构)钢和(合金)钢。20.一般常用水泥当(细度)、(终凝时间)、(不溶物质和烧失量)中的任何一项不符合标准规定或混合材料掺加量超过最大限量和强度低于商品强度等级的指标时判为不合格品。21.改善混凝土凝结时间的外加剂有:(缓凝剂)、(早强剂)、速凝剂等。22.凡由(胶凝材料)、(粗细骨料)、(水)及其他材料,按适当的比例配合、拌和配制而成的具有所需的形体、强度和耐久性的人造石材,叫做混凝土,如水泥混凝土、沥青混凝土等。23.混凝土拌合物的和易性包括(流动性)、(黏聚性)和(保水性)。24.长距离运输混凝土时,应在混凝土内加(缓凝剂)。 25.混凝土配合比常用的方法有(绝对体积法)和(质量法或假定表观密度法)。26.砂浆的和易性包括(稠度)和(保水性)两方面。27.土的三相组成一般是指(固相)、(液相)和(气相)。28.按照土的三相比例,土的性能指标可分为两种:一种是(试验指标);另一种是(换算指标)。 29.土工合成材料测试项目一般可分为(物理性能)、(力学性能)、(水力学性能)和耐久性四大类。 30.标准养护龄期为(28天)。 二、判断题 (×)1.常用的硅酸盐水泥物理性质,初凝时间不得迟于45分钟,终凝时间不得早于12小时。 (×)2.一般混凝土用砂要求砂的含泥量,按重量计在5~10%范围。 (√)3.常用的五大类水泥的安定性的测定方法可以用饼法,也可用雷氏法,有争议时以雷氏法为准。 (×)4.混凝土立方体的抗压强度目的是检验混凝土的强度是否达到标号,并为控制施工质量提供依据。 (×)5.一组混凝土试块设计标号为C20,经抗压强度试验,每均为19.7MPa,符合C20标准要求的强度。 (√)6.砌筑砂浆用料水泥常用的五大类水泥均可使用,但不同品种水泥不得混合使用。 (√)7.混凝土常用的水泥有硅酸盐水泥、矿渣水泥、普通水泥、火山灰水泥、粉煤灰水泥五大类水泥。 (√)8.混凝土制作抗压试件规格为骨料最大粒径应不大于试件最小边长的三分之一。 (√)9.材料的机械性能包括强度塑性、弹性、脆性、韧性、断裂韧性、硬度等。 (√)10.钢材试样在拉伸试验中,试样卸荷后立即恢复原形叫弹性变型。 (√)11.水泥的安定性测定结果的判别沸煮结束后,即可放掉箱中的热水,打开箱盖,待箱体冷却至室温,取出试件进行判别。 (√)12.水泥安定性检验、目测,用直尺检查,发现饼试样结果不一样,该判定此水泥安定性为不合格。 (√)13.砂按其产源分为河砂、山砂、海砂三种。 (√)14.金属材料按变力作用不同,强度分为抗拉强度,抗压强度和抗弯强度等。 (√)15.砂子的筛分、比重、容重等试验称为物理检验。 (√)16.普通硅酸盐水泥的物理性质初凝时间不得早于45分钟,终凝时间不得迟于12小时。 (×)17.硅酸盐水泥经试验,有7天的抗压、抗折结果,就可以判定该水泥标号。 (√)18.用于砌砖、石、砌块等用,砂浆坑称为砌筑砂。 (√)159.水泥凡由硅酸盐熟,适量石膏磨细制成的水,硬性胶凝材料称为硅酸盐水泥。 (×)19.普通混凝土常用的水泥有硅酸盐水泥、矿渣水泥、普通水泥等三大类水泥。 (√)20.水泥的安定性测定,饼法是观察水泥净浆试饼在沸煮后的外形变化来检验水泥的体积安定比。 (√)21.一组钢材经拉伸试验,按可用计量为屈服点380N/mm2抗拉强度为560N/mm2,按法定计量单位分别为380MPa、560MPa。 (×)22.凡由硅酸盐水泥熟料,少量混合材料,适量石膏磨细制成的水硬性胶凝材料称为硅酸盐水泥。 (×)23.一般粗骨料均是允许有泥块含量的。 (×)24.体积密度是材料在绝对密实状态下,单位体积的质量。(×)25.砂浆的和易性包括流动性、粘聚性和保水性。 (√)26.粉煤灰是目前混凝土原材料中使用较多的一种掺合料。 (√)27.改善混凝土拌合物性能的外加剂有:减水剂、泵送剂、缓凝剂等。(√)28.颗粒级配是砂料品质中一个重要的检测项目。 (√)29.混凝土按表观密度分可分为:特重混凝土、重混凝土和轻混凝土。 (√)30.测定混凝土拌和物的流动性是用塌落度和维勃稠度,并辅以直观经验来评定黏聚性和保水性。 (×)31.粉煤灰进场检验的必试项目包括含水量、细度、烧失量、需水量比。(√)32.水灰比是指水和水泥的关系。 (√)33.混凝土配合比设计确定的基本参数主要为水灰比、砂率和单位需水量。 (×)34.《混凝土强度检验评定标准》(GB/T 50107-2010)规定:当用于评定的样本容量小于10组时,应采用统计方法评定混凝土强度。 (√)35.砌筑砂浆拌合物的技术性质包括和易性、强度、黏结力、变形性能和凝结时间。(×)36.土的密度即是土粒密度。 (√)37.由两种或两种以上材料复合成的土工合成材料称为土工复合材料。(×)38.土工合成材料的性能指标主要通过力学性能指标反映,与其他指标无关。(×)39.普通混凝土力学性能试验应以三个试件为一组,每组试件所用的拌合物可从不同盘混凝土中取样。 (×)40.混凝土进行抗压强度试验的标准试件为边长100mm的立方体试件。 三、简答题 1.影响混凝土和易性的因素是什么?如何提高混凝土的和易性? 影响因素: a水泥,水,外加剂,骨料 b环境条件,温度,湿度 c时间 d施工工艺等 措施: a调节混凝土的材料组成 b掺加各种外加剂(如减水剂、引气剂等)c提高振捣机械的效能。 2.钢材进行拉伸性能试验时一般经历哪4个阶段? 弹性阶段、屈服阶段、强化阶段、颈缩阶段 3.土工合成材料一般包括哪几种功能? 反滤功能、排水功能、隔离功能、包容功能、防渗功能、防护功能、加筋功能 4.组成混凝土的原材料主要包括哪几种? 水泥、掺合料、外加剂、细骨料、粗骨料、拌合水 5.混凝土的外加剂主要有哪些?是如何分类的? ① 改善混凝土拌和物流变性能的外加剂:如减水剂、高效减水剂、泵送剂等; ② 调节混凝土凝结时间的外加剂:如缓凝剂、早强剂和速凝剂等; ③ 改善混凝土耐久性能的外加剂:引气剂,防水剂,引气减水剂等; ④ 改善混凝土其他性能的外加剂:膨胀剂、防冻剂,着色剂、以及水下混凝土不分散剂等。6.如何测定砂浆的强度?砂浆的强度等级有哪些? 砂浆的强度是以边长为70.7mm的立方体试件,一组6个,按规定的方法成型并经标准养护28d后,测得的抗压强度平均值来表示。根据《砌筑砂浆配合比设计规程》(JGJ/T98---2010)的规定,砌筑砂浆的强度可分为M20、M15、M10、M7.5、M5.0、和M2.5共6个强度等级,例如,M7.5表示砂浆28d的抗压强度不低于7.5MPa。第四篇:SiteView TC流量控制概要
第五篇:材料员培训习题