首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
在面向对象方法中,对象可看成是属性(数据)以及这些属性上的专用操作的封装体。封装是一种 (1) 技术,封装的目的是使对象的 (2) 分离。 类是一组具有相同属性和相同操作的对象的集...
查看本题答案
包含此试题的试卷
初级程序员《单选题》真题及答案
点击查看
你可能感兴趣的试题
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种【2】技术
在面向对象方法中对象可看成是属性数据及这些属性上的专用操作的封装体封装是一种______技术
组装
产品化
固化
信息屏蔽
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种技术封装的目的是
组装
产品化
固化
信息隐蔽
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种30技术封装的目
组装
产品化
固化
信息隐蔽
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种23技术封装的目的是使
定义和实现
设计和测试
设计和实现
分析和定义
在面向对象方法中对象可看成属性数据以及这些属性上的专用操作的封装体封装是一种12技术类是一组具有相同
例证
用例
实例
例外
在面向对象方法中对象可看成属性数据以及这些属性上专用操作的封装体封装是一种1技术类是一组具有相同属性
例证
用例
实例
例外
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种23技术封装的目的是使
组装
产品化
固化
信息隐蔽
在面向对象方法中对象可看成属性数据以及这些属性上的专用操作的封装体封装是一种12技术类是一组具有相同
组装
产品化
固化
信息隐蔽
56不属于面向对象的软件开发方法在面向对象方法中对象可看成是属性数据以及这些属性上专用操作的封装体封
定义和实现
设计和测试
设计和实现
分析和定义
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种技术封装的目的是
组装
产品化
固化
信息隐蔽
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种技术封装的目的是
定义和实现
设计和测试
设计和实现
分析和定义
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种______技术封装的
组装
产品化
固化
信息隐蔽
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种______技术封装的
定义和实现
设计和测试
设计和实现
分析和定义
在面向对象方法中对象可看成属性数据以及这些属性上的专用操作的封装体封装是一种1技术类是一组具有
例证
用例
实例
例外
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装的目的是使对象的分离
定义和实现
分析和定义
设计和实现
设计和测试
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种技术封装的目的是
定义和实现
设计和测试
设计和实现
分析和定义
56不属于面向对象的软件开发方法在面向对象方法中对象可看成是属性数据以及这些属性上专用操作的封装体封
coad方法
booch方法
jackson方法
omt方法
在面向对象方法中对象可看成是属性数据以及这些属性上的专用操作的封装体封装是一种30技术封装的目
定义和实现
设计和测试
设计和实现
分析和定义
56不属于面向对象的软件开发方法在面向对象方法中对象可看成是属性数据以及这些属性上专用操作的封装体封
组装
严品化
固化
信息隐蔽
热门试题
更多
在进行单元测试时常用的方法是______
【说明2.1】 L为一个带头结点的循环链表函数deletenodeLinkListLintc的功能是删除L中数据域data的值大于c的所有结点并由这些结点组建成一个新的带头结点的循环链表其头指针作为函数的返回值 【函数2.1】 LinkListdeletenodeLinkListLintc { LinkListLcppre; pre=L; p=1; Lc=LinkListmallocsizeofListNode; Lc->next=Lc whilep!=L ifp->data>c { 2; 3; Lc->next=p; p=pre->next; } else { pre=p; p=pre->next; } returnLc; } 【说明2.2】 递归函数dec_to_k_2intnintk的功能是将十进制正整数n转换成k<2≤k≤9进制数并打印 【函数2.2】 dec_to_k_2intnintk {/*将十进制正整数n转换成k2≤k≤9进制数*/ ifn!=0 { dec_to_k_24k; printf%d5; } }
【说明】 该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排最后把已处理的字符串应不含标点符号仍按行重新存入字符串数组xx中最后把结果xx输出到文件OUT6.DAT中 例如原文YouHeMe Iamastudent. 结果MeHeYou studentaamI 原始数据文件存放的格式是每行的宽度均小于80个字符含标点符号和空格 【函数】 #include<string.h> #include<conio.h> #include<ctype.h> #include<stdio.h> charxx[50][80]; intmaxline=0;/*文章的总行数*/ intReaaDatvoid; voidWriteDatvoid; voidStrOLvoid { char*p1*p2t[80]; inti; fori=0;i<maxline;i++ {p1=xx[i];t[0]=0; while*p1p1++; whilep1>=xx[i] {while!isalpha*p1&&p1!=xx[i]p1--; p2=p1; while1p1--; ifp1==xx[i] ifisalpha*p1p1--; elseif!isalpha*p1+1break; p2++; 2; strcattp1+1; strcatt; } strcpyxx[i]t; } } voidmain { if3{ printf数据文件in.dat不能打开!/n/007; return; } StroL; writeDat; getch; }intReadDatvoid { FILE*fp; inti=0; char*p; iffp=fopene:/a/in.datr==NULLreturn1; whilefgetsxx[i]80fp!=NULL{ p=strchrxx[i]’/n’ ifp*p=0; i++; } maxline=4 fclosefp; return0; } voidWriteDatvoid { FILE*fp; inti; fp=fopene://a//out6datw; fori=0;i<5;i++{ printf%s/nxx[i]; fprintffp%s/nxx[i] } fclosefp }
[说明] 本程序接收输入的学生信息包括学号姓名成绩原样输出信息并计算学生的平均成绩其中学生类Stud除了包括no学号name姓名和grade成绩数据成员外还有两个静态变量sum和num分别存放总分和人数另有一个构造函数一个普通成员函数disp和一个静态成员函数avg用于计算平均分 [Java代码] publicclassStud{ publicintno; publicStringname; publicdoublegrade; public1doublesum=0; publicstaticintnum=0; publicStudintnoStringnamedoublegrade{ this.no=no; this.name=name; this.grade=grade; this.sum=2; 3; } publicstaticdoubleavg{ return4; } publicvoiddisp{ System.out.printlnthis.no+/t+this.name+/t+this.grade; } publicstaticvoidmainString[]args{ Stud[]students={newStud1Li81newStud2Zhao84.5newStud3Zhang87}; System.out.pfintlnno/tname/tgrade; students[0].disp; students[1].disp; students[2].disp; System.out.printlnavg=+5; } }
在面向对象方法中______机制是对现实世界中遗传现象的模拟
系统测试计划应该在软件开发的______阶段制定
[说明] 下面程序的功能是将多个文件的内容同时输出在屏幕上文件名都作为参数传入命令执行为catfile1file2file3即同时输出file1file2file3的内容 [程序] #include<stdio.h> #include<stdlib.h> voidfileeopyFILE*ifpFILE*ofp {intc; whilec=getc1!=EOFputec2;} intmainintargechar*argv[] {FILE*fp; while3>0 iffp=fopen4r==NULL{ printfCan’topenfile/n; return1; } else{ filecopyfpstdout; fclose5; } return0; }
关于软件文档的叙述______是错误的
【说明】 下面是一个Applet程序程序的功能是在显示面板上输出字符串当html页面被其他窗口遮挡后再次显示时请给出输出结果 importjava.awt.*; importjava.1.*; publicclassMyApplet2Applet{ publicvoid3Graphicsg{ g.drawStringtip2040; tip=IamJavaApplet; } publicvoidinit{ tip=welcome;} private4tip; } <html> <head> <title>ASimpleApplet</title> </head> <body> <appletcode=MyApplet.classwidth=800height=400> </applet> </body> </html> 网页输出5
【说明】 主窗口有一个按钮一个文本框和一个复选框初始时窗口大小不能调整选中复选框后窗口大小可以调整如果撤销复选框的选择则窗口的大小又不能调整如下图所示 【Java代码】 importjava.awt.*; importjava.awt.event.*; classMyFrameextendsFrameimplementsItemListenerActionListener { Checkboxbox; TextAreatext; Buttonbutton; MyFrame1 { supers; box=newCheckbox设置窗口是否可调整大小; text=newTextArea1212; button=2关闭窗口; button.addActionListenerthis; box.addltemListenerthis; setBounds100100200300; setVisibletrue; addtextBorderLayout.CENTER; addboxBorderLayout.SOUTH; addbuttonBorderLayout.NORTH; setResizable3; validate; } publicvoiditemStateChangedItemEvente { ifbox.getState==true { setResizabletrue; } else { setResizablefalse; } } publicvoidactionPerformedActionEvente { 4; } } classsimple { publicstaticvoidmainStringargs[] { 5simple; } }
[说明] 本程序接收输入的学生信息包括学号姓名成绩原样输出信息并计算学生的平均成绩其中学生粪Stud除了包括no学号name姓名和grade成绩数据成员外有两个静态变量sum和num分别存放总分和人数另有一个构造函数一个普通成员函数disp和一个静态成员函数avg用于计算平均分 [C++程序] #include<stdio.h> #include<string.h> classStud {intno; charname[10]; intdeg; 1intsum; staticintnum; public: Studintncharna[]intd{ no=n; deg=d; strcpynamena; 2; 3; } staticdoubleavg{return4;} voiddisp{printf%-5d%-8s%3d/nnonamedeg;} }; intStud::sum=0; intStud::num=0; voidmain { Studs11Li81s22Zhao84.5s33Zhang87; printf/nNo.NameGrade/n; s1.disp; s2.disp; s3.disp; printfAvg=%g/n/n5; }
下列关于结构化设计与面向对象设计的叙述中不正确的是______
______是关于质量管理体系的一系列标准有助于企业交付符合用户质量要求的产品
软件做什么和怎么做是软件开发过程中需要解决的关键问题其中怎么做是在______阶段解决的
【说明】 以下【C++程序】实现一个简单的小型复数类MiniComplex该复数类能进行输入输出复数的加法减法乘法和除法运算还可以进行复数的相等比较 【C++程序】 #ifndefH_MiniComplex #defineH_MiniComplex #include<iostream> usingnamespacestd; classMiniComplex{ public://重载流插入和提取运算符 1ostream&operator<<ostream&osObjectconstMiniComplex&complex{ osObject<<<<complex.realPart<<+<<complex.imagPart<<i<<; returnosObject; } 2istream&operator>>istream&isObjectMiniComplex&complex{ charch; isObject>>complex.realPart>>ch>>complex.imagPart>>ch; returnisObject; } MiniComplexdoublereal=0doubleimag=0;//构造函数 MiniComplexoperator+constMiniComplex&otherComplexconst;//重载运算符+ MiniComplexoperator-constMiniComplex&otherComplexconst;//重载运算符- MiniComplexoperator*constMiniComplex&otherComplexconst;//重载运算符* MiniComplexoperator/constMiniComplex&otherComplexconst;//重载运算符/ booloperator==constMiniComplex&otherComplexconst;//重载运算符== private: double3; doubleimagPart; }; #endif #includeMiniComplex.h boolMiniComplex::operator==constMiniComplex&otherComplexconst{ returnrealPart==otherComplex.realPart&&imagPart==ortherComplex.imagPart; } MiniComplex::MiniComplexdoublerealdoubleimag{ realPart==real;imagPart==imagPart; } MiniComplexMiniComplex::operator+constMiniComplex&otherComplexconst{ MiniComplextemp; temp.realPart=realPart+ortherComplex.realPart; temp.imagPart=imagPart+ortherComplex.imagPart; returntemp; } 4 {MiniComplextemp; temp.realPart=realPart-ortherComplex.realPart; temp.imagPart=imagPart-ortherComplex.imagPart; returntemp; } MiniComplexMiniComplex::operator*constMiniComplex&otherComplexconst{ MiniComplextemp; temp.realPart=realPart*ortherComplex.realPart-imagPart*ortherComplex.imagPart; temp.imagPart=realPart*ortherComplex.imagPart+imagPart*ortherComplex.realPart; returntemp; } MiniComplexMiniComplex::operator/constMiniComplex&otherComplexconst{ MiniComplextemp; floattt; tt=1/ortherComplex.realPart*ortherComplex.realPart+ortherComplex.imagPart*ortherComplex.imagPart; temp.realPart=realPart*ortherComplexrealPart+imagPart*ortherComplex.imagPart*tt; temp.imagPart=imagPart*ortherComplex.realPart-realPart*ortherComplex.imagPart*tt; returntemp; } #include<iostream> #include<MiniComplex.h> usingnamespacestd; intmain{ MiniComplexnuml2334num25635; cout<<InitialValueofnum1=<<num1<</nInitialValueofnum2=<<num2<<end1; cout<<num1<<+<<num2<<=<<num1+num2<<end1;//使用重载的加号运算符 cout<<num1<<-<<num2<<=<<num1-num2<<end1;//使用重载的减号运算符 cout<<num1<<*<<num2<<=<<num1*num2<<end1;//使用重载的乘号运算符 cout<<num1<</<<num2<<=<<num1/num2<<end1;//使用重载的除号运算符 5; }
【说明】 本程序可以将字符串s1中出现的所有s2子串替换成s3形成一个新串但不破坏字符串s1 【代码】 #include<stdio.h> #include<stdlib.h> #include<string.h> char*replacechar*s1char*s2char*s3 {char*p*q*r*s;int|2|3i=0; |2=strlens2; |3=strlens3; p=s1; whilep=strstrps2!=NULL {i++;/*统计s2串出现的次数*/ 1; } i=2; s=r=char*malloci;/*分配动态内存存放新字符串*/ p=s1; while1 {q=strstrps2;/*s2串是否在s1中出现q是首次出现的位置*/ ifq!=NULL {i=q-p; 3; r+=i; 4; r+=|3; p=q+|2;/*将指向s1串的指针移到s2子串出现的位置后 为下一次循环做好准备*/ } else/*q为空表示剩余的s1串中已经没有s2*/ {5; break;/*终止循环*/ } } returns;/*返回指向所形成的新串的指针*/ } voidmain {char*a=sabcababde*b=ab*c=efg*d; d=replaceabc;printfresult=%s/nd;freed; }
[函数2.1说明] 函数strcpy的功能是将字符串str2的内容复制到字符申str1 [函数2.1] 1strcpychar*slr1constchar*str2 {char*temp; while*str2!=’/0’*cp++=2; 3=’/0’; returnstr1; } [函数2.2说明] 函数intstrcmpconstchar*str1constchar*str2的功能是按字典序比较两个字符串str1和str2的大小当str1<str2时返回-1当str1>str2时返回1否则返回0 [函数2.2] intstrcmpconstchar*str1constchar*str2 {while*str1==*str2{ if*s1==4return0; s1++; 5; } if*str1<*str2return-1; return1; }
阅读以下某客房管理系统的算法说明和程序流程图根据要求回答问题1至问题4 【算法说明】 某商务交流中心共有N间客房每间客房的房间号房间等级床位数及占用状态分别存放在数组ROOMRANKNBED和STATUS中房间等级值为12或3房间的状态值为0空闲或1占用客房是以房间不是床位为单位出租的 程序流程图见图2-11所反映的算法是根据几个散客的要求预订一间空房程序的输入为人数M房间等级要求尺R=0表示任意等级都可以程序的输出为所有可供选择的房间号 【问题2】 假设该商务交流中心当前各个房间的情况如表2-14所示 表2-14 某商务交流中心房间情况表 序号1 ROOM RANK NBED STATUS 1 1101 2 6 0 2 1102 3 6 1 3 1201 1 2 0 4 1202 3 3 0 5 1301 1 2 1 6 1302 2 3 0 当输入M=3R=0时该算法的输出是1 当输入M=2R=1时该算法的输出是2
【说明8.1】 以下程序的功能是生成20个200~300之间的随机整数输出其中能被5整除的数并求出它们的和 【程序代码8.1】 PrivateSubCommand1_Click Fori=1To20 x=Int1*200+100 If2=0Then Printx S=S+3 EndIf Nexti PrintSum=;S EndSub 【说明8.2】 程序8.2运行后单击窗体则在窗体上显示的内容是a=4和b=5 【程序代码8.2】 PrivateSubForm_Click DimaAsIntegerbAsInteger a=20:b=50 p1ab p2ab p3ab Printa=;ab=;b EndSub Subp1xAsIntegerByValyAsInteger x=x+l0 y=y+20 EndSub Subp2ByVal×AsIntegeryAsInteger x=x+l0 y=y+20 EndSub Subp3ByVal×AsIntegerByValyAsInteger x=x+10 y=y+20 EndSub
瀑布模型突出的缺点是不适应______的变动
如果用户对系统的目标不是很清楚需求难以定义这时最好使用______进行系统开发
【说明】设M叉树采用列表法表示即每棵子树对应一个列表列表的结构为子树根结点的值后跟用括起来的各子树的列表若有子树的话各子树的列表间用分隔例如如下图所示的三叉树可用列表abcdefghi表示本程序根据输入的列表生成一棵M叉树并由M叉树再输出列表【函数】#include#include#defineM3/*三叉树*/typedefstructnode{intval;structnode*subTree[M];}NODE;charbuf[255]*str=buf;NODE*d=NULL;NODE*makeTree/*由列表生成M叉树*/{intk;NODE*s;s=1;s->val=*str++;fork=0;k<M;k++s->subTree[k]=NULL;if*str==’’{k=0;do{str++;s->subTree[k]=2;if*str==’’{str++;break;}k=k+1;}while3;}returns;}voidwalkTreeNODE*t/*由M叉树输出列表*/{inti;ift!=NULL{4;ift->subTree[0]==NULLreturn;putchar’’;fori=0;i<M;i++{5;ifi!=M-1&&t->subTree[i+1]!=NULLputchar’’;}putchar’’;}}voidmain{printfEnterexp:;scanf%sstr;d=makeTree;walkTreed;putchar’/n’;}
黑盒测试也称为功能测试黑盒测试不能发现______
下面对对象概念描述错误的是______
从下列3道试题试题5至试题7中任选1道解答如果解答的试题数超过1道则题号小的1道解答有效 阅读以下应用说明和VisualBasic程序根据要求回答问题1问题2 【说明】 某机动车驾驶员模拟考试系统的交通禁令标志识别窗体中共有1个按钮CmdTest6个标签 1个包含10个单选按钮的控件数组OptPicture如图2-15所示其中标签LblPrompt1禁令标志与标签LblTest相对应标签LblPrompt2图片答案与标签LblAnswer相对应标签LblEvaluate为结果提示 窗体Frm001对象和单选按钮控件数组OptPicture对象的部分属性及属性值如表2-15所示 表2-15窗体单选按钮控件数组的部分属性及属性值 对象 属性 属性值 窗体 名称 Frm001 Icon 变通标识 MaxButton 1 MinButton 2 单选按钮控件数组 名称 optPicture Index 3 Style 1-Graghics Picture 装入相应图片 该程序运行时单击【测试】按钮CmdTest在标签LblTest中随机显示一个交通禁令标志名称用户单击控件数组OptPicture相应单选按钮后程序在标签LblAnswer给出用户所击单选按钮对应的交通禁令标志名称在标签LblEvaluate给出正确或错误的提示结果如图2-15和图2-16所示 【VisualBasic程序】Dim4 AsStringPrivateSubcmdTest_ClickDimiAs IntegerFori=0To95 NextilblPrompt2.Visible= FalselblAnswer.Visible=False lblEvaluate.Visible=Falsei=IntRnd*10 lblTest.Caption=tnameiEndSubPrivateSub Form_LoadDimiAsIntegerFori=0To 9optPicturei.Value=False 6lblPrompt2.Visible=False lblAnswer.Visible=FalselblEvaluate.Visible= Falsetname0=禁止向左向右转弯tname1= 禁止直行和向右转弯道tname2=禁止直行和向左转弯tname3= 禁止驶入tname4=禁止掉头tname5= 禁止车辆长时停放tname6=禁止机动车通行tname7= 禁止非机动车通行tname8=禁止超车tname9= 禁止车辆临时或长时停放EndSubPrivateSuboptPicture_ClickIndexAs IntegerlblPrompt2.Visible=True lblAnswer.Visible=7 lblEvaluate.Visible=TruelblAnswer.Caption= 8If9Then lblEvaluate.ForeColor=vbRed lblEvaluate.Caption=恭喜你!回答正确!Else lblEvaluate.ForeColor=vbBlue lblEvaluate.Caption=很遗憾回答错误EndIfEndSub 【问题1】 请根据图2-15和图2-16的显示效果和【Visual Basic程序】将表2-15中窗体对象单选按钮控件数组对象的1~3空缺处的属性值填写完整
通常在软件的输入输出设计中合理的要求是______
软件开发过程中常采用甘特Gantt图描述进度安排甘特图以______
阅读以下某客房管理系统的算法说明和程序流程图根据要求回答问题1至问题4 【算法说明】 某商务交流中心共有N间客房每间客房的房间号房间等级床位数及占用状态分别存放在数组ROOMRANKNBED和STATUS中房间等级值为12或3房间的状态值为0空闲或1占用客房是以房间不是床位为单位出租的 程序流程图见图2-11所反映的算法是根据几个散客的要求预订一间空房程序的输入为人数M房间等级要求尺R=0表示任意等级都可以程序的输出为所有可供选择的房间号 【问题4】 如果限制该算法最多输出K个可供选择的房间号则在程序流程图见图2-11中>Na所指向的判断框中应修改为4
【说明】 某超市集团为发展业务向社会公开招聘N个工种的工作人员每个工种各有不同的编号1至M和计划招聘人数每位应聘者需申报两个工种并参加集团组织的考试该集团公司将按应聘者的成绩从高分至低分的顺序进行排队录取具体录取原则是从高分到低分依次对每位应聘者先按其第一志愿录取当不能按其第一志愿录取时便将他的成绩扣去5分后重新排队并按其第二志愿录取 以下C程序为输出各工种实际招聘的应聘人员每个工种都保留一个录取者的有序队列录取处理循环直至招聘额满或已对全部应聘者都作了录取处理后跳出 C程序中类型STU包含有应聘者的基本信息编号成绩志愿排队成绩和录取志愿号数组rzl的每个元素对应一个工种包含有计划招聘人数和已录取的人数 【C程序】 #include #defineN36 #defineEDMARK5 typedefstructstu{ intnototalz[2]sortmzi; structstu*next; }STU; structrznode{ intlmtcount; STU*next; }rz[N]; STU*head=NULL*over=NULL; intall FILE*fp; chardataf[]=zp2008.dat; printSTU*p {for;p!=NULL;p=p->next printf%d%d/tp->nop->total } insertSTU**pSTU*u {STU*v*q; forq=*p;q!=NULL;v=q1 ifq->sortm<u->sortm break; ifq==*p 2; else 3; u->next=q; } main {intzninototalzlz2; STU*p*v*q; fp=fopendatafr; iffp==NULL {printfCan’topenfile%s.kndataf; exit0; } fscanffp%d&zn; forall=0i=1;i<=zn;i++ {fscanffp%d&rz[i].lmt; rz[i].count=0; rz[i].next=NULL; all+=4; } for;; {iffscanffp%d%d%d%d&no&total&zl&z2!=4 break; p=STU*mallocsizeofSTU; p->no=no; p->total=p->sortm=total; p->zi=0; p->z[0]=z1; p->z[1]=z2; 5; } fclosefp; for;all&&head!=NULL; {p=head; head=head->next; ifrz[p->z[p->zi]].count<6 {rz[p->z[p->zi]].count++; insert&rz[p->z[p->zi]].nextp; all--; continue; } ifp->zi>=1 {p->next=over; over=p; continue; } p->sortm-=DEMARK; 7; insert&headp; } fori=1;i<=zn;i++ {printf%d:/ni; printrz[i].next; printf/n; } printfover:/n; printhead; printover; printf/n; }
______是关于质量管理体系的一系列标准有助于企业交付符合用户质量要求的产品
热门题库
更多
中级网络工程师
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术