版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、任务一 Android开发环境的搭建第一部分知识回顾与思考1. Android 的四层架构分别包括哪几层?分别起到什么作 用?答:Linux内核层(Linux Kernel ):基于 Linux内核,内核 为上层系统提供了系统服务。系统库层(Libraries ):系统库基于C/C+语言实现,通过接 口向应用程序框架层提供编程接口。应用框架层 (Application Framework ):为开发者提供了一系列的Java API ,包括图形用户界面组件View、 SQLite数据库相关的 API、Service组件等。应用程序层( Applications ):包含了 Android 平台中
2、各式各 样的应用程序。第二部分职业能力训练一、单项选择题(下列答案中有一项是正确的,将 正确答案填入括号内)1. Android四层架构中,应用框架层使用的是什么语法?(C)A . CB . C+C. Java D. Android2. Android 四层架构中,系统库层使用的是什么语法? ( B)A . VBB . C /C+C . Java D . Android3. 应用程序员编写的Android应用程序,主要是调用(B)提供的接口进行实现。A .应用程序层DCB .应用框架层.应用视图层.系统库层二、填空题(请在括号内填空)1 .在Android智能终端中,有很多应用如拍照软件、联系
3、人管理软件,它们都属于Android的(应用程序)层。2 .为了让程序员更加方便的运行调试程序,Android提供了(模 拟器),可以方便的将程序运行其上,而不要实际的移动终端。程序运行,我们需要安装(Java 3 .为了支持)。JDK三、简答题1 .简述 Android开发环境安装的步骤。答:下载并安装JDK ,配置 JDK的环境变量;从Anroid官网上下载 Android 开发组件(包含 Eclipse和Android SDK 、 ADT );安装Android开发环境(包括配置 Android SDK的环境变量、打开Eclipse通过菜单设定 Android SDK路径)。2 .简述
4、Android应用程序创建和运行的步骤。1答:通过菜单创建 Android应用程序,设置应用程序名、Android 版本等基本信息。指定运行的模拟器)。点击菜单中的运行按钮可以直接运行Android项目(也可以通过菜单配置运行参数,星座查询工具的设计与实现任 务二第一部分知识回顾与思考的属性、方法、监听器如何使用,它们分别起了什么作用?1. Android文件设定,通过设定控件的属性能够静态的改变控件的样式和一些xml答:Android控件的属性,可以通过 特性;控件的方法,可以通过编写代码动态调用方法,在程序中调用方法可以动态的修改控件的样式、也可以获得控件的相关信息;控件的监听器,可以通过
5、编码为控件创建、设定监听器,监听器 可以监听控件发生的事件,一旦发生某个监听的事件可以触发相应的处理代码。工程中重要的目录和文件,它们的作用是什么?.回顾一下Android 2目录:该目录中存放的是我们需要编辑的src答:源代码;Java开发工具自动生成的文件,它包含了界面、图标、常量等各种资gen目录:目录中存放所有由Android;源的id目录:目录中的内容是程序运行后自动生成的,不需要我们编辑,里面包含自动生成的可执行 bin); HelloAndroid.apk 文件(如目录:该目录中放置程序的重要资源,包括图片、布局、字符串等资源;res文件:该文件非常重要,列出了应用程序许多基本信
6、息(如版本、应用程序名 AndroidManifest.xmlGPS称、启动图标等),其中还包括了程序使用到的各种服务(如电话服务、互联网服务、短信服务、Activity服务等),该文件甚至包括了程序中所使用到的各个信息。第二部分职业能力训练一、单项选择题(下列答案中有一项是正确的,将 正确答案填入括号内)A .以下哪个控件用来显示图片1?(EditText . TextViewC . B . A ImageView Button . D)D.如果要实现用户单击后触发一定的处理,以下哪个控件最合适?( 2EditText TextView C B ImageViewA ButtonD )。C3
7、.如果我们需要捕捉某个控件的事件,我们需要为该控件创建(.工程.属性A .监听器C.方法BD)D.以下的哪个属性是用来表示引用图片的资源4 ? (IDA . textB . imgC . idD. src5 .以下的哪个属性是用来控制虚拟键盘输入类型? ( B)A . keyboardB . inputTypeC . text srcD .6 . Android工程启动是最先加载的是 AndroidManifest.xml , 如果有多个Activity ,以下哪个属性决定了该Activity最先被加载? ( A)A . ent.action.MAINandroid.in
8、tent.action.LAUNCHERBC. ent.action.ACTIVITY ent.action.ICON . D7 .如果我们需要导入一张图片资源,我们需要将图片放在哪个 工程目录中()。AA . resdrawableB resstringC . respicture D . resicon8 .如果我们需要创建一个字符串资源,我们需要将字符串放在 resvalues 的哪个文件中? ( B)A . value.xmlB . strings.xmlC . dimens.xml styles.xml . DC9.以下哪个布局最不适合在多
9、种移动终端上使用?()A .相对布局 B.线性布局 C.绝对布局 D.表格布局D10.相对布局中,如果指定一个控件位于引用控件的左侧,应 该使用()属性。A . android:layout_toParentLeftOf B. android:layout_alignPa rentLeftC. android:layout_alignLeft D. android:layout_toLeftOf二、填空题(请在括号内填空)1 .在Android控件使用过程中,经常需要根据控件的ID获取控件的对象,我们可以使用 (findViewByld )方法。2 .导入图片时,需要特别注意图片的名称不可以包
10、含(大写字 母、特殊符号)。XML3 .在创建控件的时候,可以在布局文件的界面视图中拖拉 控件,但本质上还是编辑的()文件。4 .表格布局可以包含多行,(TableRow )代表是一行。5 .如果创建了一个字符串资源为hello,那么它的ID应该是(R.String.hello )。三、简答题1.简述五种布局的特点和运用场合。框架布局:所有控件排列在左上角,用于制作特别的控件,初学 者使用较少;线性布局:控件可以按照水平或者垂直方向进行排列,控件排列方式简单;绝对布局:可以指定控件摆放的位置,虽然摆放控件很容易,但是不适合多种分辨率和尺寸的屏幕,需要慎用;相对布局:能够设定控件之间的相对关系、
11、 控件与父容器的相对关系,控件排列方式比较灵活,是常用4的布局之一;表格布局:通过配合使用TableRow可以将控件以表格形式排列2.简述本节课程所学控件的特点和作用。TextView :最基础的控件,用做显示文本信息;Button控件:通过监听器单击事件,可以实现用户点击按钮后触发相应动作;ImageView 控件:用于显示图片的控件, 可以通过src属性指 定显示的图片,可以通过调用方法来动态设定图片;EditText控件:输入文本控件,主要用于让用户输入信息, inputtype属性可以指定输入文本时的键盘特征;DatePicker控件和 TimePicker控件:日期和时间控件,可以
12、显示日期和时间,也可以让用户进行日期和时间的选择。任务三计算器的设计与实现第一部分知识回顾与思考1. Android提供了多种提示方式,思考一下它们各自的优缺点?答:Android提供的常见的提示信息的方式有 Toast、 Dialog 以及Notification 。它们各自的特点如下:(1) Toast只能给用户提示信息,过一定时间后信息自动消 失,用户只能阅读提示的信息,不能做出交互性动作,也不能修 改Toast的界面。(2) Dialog不仅能给用户提示信息,还可以让用户选择对提 示信息的响应方式,更复杂的,用户可以定制Dialog的界面。(3) Notification提供了更高级的
13、提示信息的方式,手机界面上有专门用于显示Notification的区域。用Activity户可以向下滑动拉开通知栏,查看通知的内容,还可以 进一步打开相关的来对通知信息做进一步的处理。2.回顾一下 Android的调试流程,在你的程序遇到问题的时候, 你应该如何去定位解决问题?答:当程序运行遇到问题时,我们应按如下的步骤去推测问题所在和调试程序:(1)推理 Bug出现时所发生的动作(2)该动作所对应的程序代码(3)在该行代码处设置断点(4)启动程序调试,重复刚才的操作(5)程序运行至断点时停止,然后单步执行程序(6)单步执行时注意所涉及变量值的变化(7)发现变量值异常或处理错误8)修改代码再次
14、运行(第二部分职业能力训练一、单项选择题(下列答案中有一项是正确的,将 正确答案填入括号内)1 . Toast创建完毕后,需要显示出来此时需要调用以下哪个方 法?(B)A . makeTextB . showC . create D . view2 .以下哪个类对应 Android中的提示对话框 ?( A)A . AlertDialogB DialogC . ShowDialog AlertD .A3.对话框中有几个默认 Button ,()代表是确定按钮。A . PositiveButtonB . NegativeButtonC . NeutralButtonD . OKButton4 .
15、Android中有一个服务用来管理通知,它是()。BA . ServiceB . NotificationManagerC . NoticeD . Dialog Builder5 .我们单击模拟器上的菜单键所产生的菜单,称为0。DA . ContextMenuB . KeyMenuC . PopupMenuD . Optio nMenu6 .以下的哪个方法会在菜单创建时被调用A) (?A . onCreateOptionsMenuB . onCreateMenuC . onCreat eContextMenu D. onCreateonCreateOptionsMenu7 .以下的哪个方法会在
16、菜单项被单击时被调用?(C)A . onContextItemSelected BC. onOptionsItemSelected D. onItemSelected8 .以下哪个类用于构造数组类型数据的适配器?(D)A . AdapterB . CursorAdapterC . SimpleAdapter ArrayAdap terD .A9. Spinner控件的子项被选中所对应的监听器为()。A . setOnItemSelectedListenerB OnClickListenerC OnLongClickListener setOnItemListener . D10.以下哪个日志级
17、别最高?(D)A . WARNB . INFOC . DEBUG ERROR . D二、填空题(请在括号内填空)1 .创建 Toast使用makeText方法的第一个参数代表 Activity 的(对象)。2 .用户单击移动终端的(Menu )按钮,会触发创建Option Menu3 . Spinner的父类是(AdapterView ),如何希望将数据显示 到这样的控件上,)(Adapter 一般都需要使用进行数据与控件的绑定。4 .调试是为了让程序执行到某行代码时停顿,我们需要在这一 行设置(端点)。5 .在)。Eclipse中有一个窗口用于管理日志, 该窗口是(LogCat三、简答题1
18、.如果程序在运行时就发生了崩溃,你会如何进行推测和调试?答:程序运行发生崩溃时,我们应按如下的步骤去推测问题所在 和调试程序:(1)推理 Bug出现时所发生的动作(2)该动作所对应的程序代码(3)在该行代码处设置断点(4)启动程序调试,重复刚才的操作(5)程序运行至断点时停止,然后单步执行程序7(6)单步执行时注意所涉及变量值的变化(7)发现变量值异常或处理错误(8)修改代码再次运行2 .简述两种OptionMenu创建方法的相同点和不同点。答:不同点:第一种方法完全通过代码的方式来创建菜单,即通过重写 Activity 类的 onCreateOptionsMenu即通过定义resmenuma
19、in.xml方法来创建菜单;而第二种方法则是通过定义布局文件的方式来创建菜单,菜单布局文件来创建菜单。相比较来说,第二种方法非常好地实现了逻辑代码和表现样式的分离,特别是在需要修改菜单样式时,第二种方法能够更少地修改代码而专 注于XML布局文件,是目前更为推崇的架构方式。相同点:对于两种方法创建的菜单,响应其事件的方法是一样的, 即都是通过重写 Activity类的onOptionsItemSelected方法来实现其事件响应的。8任务四“我的日记”的设计与实现第一部分知识回顾与思考1. Android中的生命周期中有哪几种状态? 答:活动状态、暂停状态、停止状态、销毁状态。2. Intent
20、有哪些重要属性,Activity之间是如何进行信息的传递的?答:属性:Component (组件)、Action (动作)、Data (数 据)、Category (分类)、Type (类(扩展信息)。型)、Extra中的属性进行信息的传递的。intent Android中是通过 在第二部分职业能力训练一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内))(B1 .以下哪个控件可以用来显示进度?TextViewProgressBar . EditTextB . C. A ButtonD .)A? ( 2.以下哪个方法可以用来获得进度条的当前进度值public synchronize
21、d int getProgress()Apublic synchronized void setIndeterminate (boolean indeterminate)B public synchronized void setProgress(int progress) CPublic final synchronized void incrementProgressBy(intdiff). D)(A处于栈顶时,此时处于哪种状态的生命周期中,当 3.在ActivityActivity?.销毁BA .活动.暂停CD.停止)(?会处于哪种状态被某个的生命周期中,4 .在ActivityActi
22、vity AlertDialog覆盖掉一部分之后,A.销毁。.停止B.活动.暂停CDAA. 5 Action ACTION_DIAL 代表(属性)标准动作。.显示直接打电话的界面 A .显示电话拨号面板 B.提供编辑数据的途径 D.向用户显示数据 C(Action中的Intent 1 id ,如果需要显示6为的联系人信 息,属性与属性应该设定为什么?Data A)。ACTION_VIEW content:/contacts/people/1 . AACTION_DIAL content:contacts/people/1BC. ACITON_EDIT content:/contacts/peo
23、ple/1ACTION_CALL content:/contacts/people/1DSD卡的存储路径,需要调用(7.在文件存储中,若要获得)。AA . Environment.getExternalStorageDirectory()B. openFileOutput(String name,int mode)C File (File dir, String name)Environment.getDataDirectory() . D8. Android 中 Environment.MEDIA_MOUNTED 代表 SD 的()状态。ASD卡,并且应用程序对卡具有读写权限。A .手机已插
24、上 SDSD B .手机已插上SD卡,但是应用程序对卡只具有读权限。C.手机上没有SD卡D. SD存在但是没有被安装,可以通过 USB大容量存储器共 享)的Activity 会在category 为(Android 系统的主屏幕(Home )显示。9. AA . CATEGORY_HOMEB. CATEGORY_PREFERENCEC. ACTION_MAIND CATEGORY_BROWSABLE10. activity生命周期中调用的第一个回调函数是()。AonCreated()A onStart() . BC. onResume()D. onRestart()二、填空题(请在括号内填空)
25、1 .若用 DDMS查看,存储在手机SD卡上的文件的路径为()。/mnt/sdcard/所存储的数据是以2. SharedPreferences )的格式保存在“键-值”xml (文件中。取值为(.当 3 android: indeterminate )时,开启了进度条的 “不确定模式"。trueFile 4. Android 中提供了标准的)InputStream、( File )OutputStream 。Java文件输入输出流,分别为(5. category 类别为(CATEGORY_LAUNCHER )的 Activity会在Android系统启动的时候最优先启动起来。三、简
26、答题101 .简述 ProgressBar 如何与 Handler结合在一起使用答:在布局文件写入进度条控件;在源程序文件中中明 Handler对象handler > Progressbar类 对象 progressbar、 int型对象 progress 表示当STOP和CONTINUE前进度,以及两个常量 分别代表停止、继 续两种消息;实例化 Handler 对象 handler ,在 handleMessage 方法,更 新进度条UI界面;重写onCreate()方法,开启了一个子线程,该线程的run()方法 中利用handler发送消息。2 .简述 Android中如何利用文件存
27、储来读写 SD卡上的TXT文件。答:改写 AndroidManifest.xml 文件,为SD 卡设置创建与删除文件权限、写入数据的权限:设置读写模式:利用Environment.getExternalStorageState().equals(Environment. MEDIA_MOUNTED)判断 SD卡是否正常安装在手机上;在SD卡安装正常的情况下,利用File file = newFile(Environment.getExternalStorageDirectory(), filename)获得该文件对应的File对象;append);获得该文件的输出流、inputStream =
28、 new利用outputStream = new FileOutputStream(file,FileInputStream(file);获得该文件的输入流;利用输入流inputstream、输出流 outputstream 对文件进行标准的java读写。11任务五音乐播放器的设计与实 现第一部分知识回顾与思考1. ListView如何与数据进行绑定?答:最简单的方式,可以在布局文件中为ListView指定一个字符串数组。其次,可以使用 Adapter将ListView与数组进行绑定,根据不同的数据源需要使用与其对应的Adapter。2. ArrayAdapter 、 SimpleAdatpe
29、r 、 SimpleCursorAdapter的作用分别是什么?如何使用它们?答:ArrayAdapter :可用于与数组进行数据绑定;SimpleAdapter :可用于与List集合的多个对象进行数据绑定;SimpleCursorAdapter :用于与 Cursor提供的数据进行绑定。具体使用方式参考本任务支撑知识三、四、五小节。3. MediaPlayer对象的生命周期是怎样的?答:用 new操作符创建一个新的MediaPlayer对象或是对已有对象调用reset()方法之后MediaPlayerInitialized 状态。在开对象处于Idle状态。调用setDataSource()
30、方法会使处于 Idle状态的对象转变为始播放之前,MediaPlayer对象必须要进入 Prepared 状态,有同步和异步两种方式可以使MediaPlayerPrepared 状态。start()方法。当此方法成功返回时,对象进入要开始播放,必须调用 MediaPlayer的对象处于 Started状态。当调用 pause()方法并返回时,会使MediaPlayer 对象进入Paused状态。调用stop()方法会停止播放,并且还会让一个处于Started、Paused、Prepared 或 PlaybackCompleted 状态的MediaPlayer进入Stopped状态。具体参考本任
31、务支撑知识第 六节。4. 回顾一下定时器所涉及几个类的作用以及这几个类之间的关 系(Timer、TimerTask、Handle > Message)。答:Timer启动后会周期性的触发 TimerTask类的run方法, 在 run方法中会向 UI线程的 Handle 对UI线程中控件象发送Message ,从而触发 Handle对象的handleMessage 方法,在该方法中可以进行更新等操作。第二部分职业能力训练一、单项选择题(下列答案中有一项是正确的,将 正确答案填入括号内)1. ListView是常用的(C)类型控件。A .按钮B.图片C.列表D.下拉列表A)。2. List
32、View与数组或List集合的多个值进行数据绑定时使用(A . ArrayAdapterB . SimpleAdapterC . SimpleCursorAd apter BaseAdapterD .B)。3. ListView与List集合的多个对象进行数据绑定时使用12A . ArrayAdapterB SimpleAdapterC . SimpleCursorAd apterD . BaseAdapter4. ListView 与Cursor提供的数据进行绑定时使用(C)。A . ArrayAdapterB SimpleAdapterC . SimpleCursorAd apterD B
33、aseAdapter5. Android 中 MediaPlayer 无法播放( D)。A .程序资源文件B.网络上的文件C. SD卡上的文件D .其 他程序资源文件)。6B.以下表示系统自定义的只显示一行文字的布局文件是(A . android.R.layout.simple_list_item_0 B . android.R.layout .simple_list_item_1C android.layout.simple_list_item_0android.layout.simple_list_item_1 D7. MediaPlayer 对象执行(D)之后处于Idle状态。A . s
34、tart()B . stop()C . pause() reset() . D)。8.下列说法错误的是(DA . prepare。是同步加载B . prepare。方法返回时已加载完毕C. prepareAsync()是异步力口载 D . prepareAsync()方法返回 时已加载完毕3s执行定时器任务,9.如果希望启动定时器后5s执行第一次 执行定时器任务,然后每隔 方法scheduleD)o的后两个参数需要设定为(A . 5, 2B. C. 5000, 2000 5, 3D. 5000, 3000二、填空题(请在括号内填空)1 .创建 ListView 有两种方式包括直接使用ListV
35、iew 控件和(让 Acitivity 继承 ListActivity )。2 . ListView 继承自(AdapterView )。setAdapter )函数将 ListView 和 Adapter 绑定。3. Adapter配置好以后,需要用(为MediaPlayer 指定加载的音频文件时可以使用MediaPlayer提供的静态方法(create()和非静态方法 (setDataSource() )。4.调用 prepareAsync()方法会使 MediaPlayer 对象进入 (preparing ) 状态并返回。抛出异常)。5.如果定时器子线程试图更新TextView 的文本显
36、示,将会(三、简答题1 .简述构造SimpleCursorAdapter时各个参数的作用。答:参数table :数据库中表格的名称;参数 columns :需要查 询的列名的数组;参数 selection :数据库查询条件,相当于SQL语句中 where后面的条件;参数 selectionArgs : selection 语句中可以使用”来指定数值,数据库 where条件后面经常会带?号, 这个参数就是?号的替代者;参数having :聚合操作;参数 groupBy :查询数据时分组的规则;参数:查询数据时排序的规则。orderBy132 .简述 MediaPlayer 对象的 prepare
37、Async()方法和 prepare()方法的区别及其各自使用场景。答:prepareAsync() 方法和 prepare()方法分别是异步加载和 同步加载,prepareAsync()方法执行完毕后MediaPlayer 进入 preparing 状态,而prepare()方法执行完毕 后 MediaPlayer 进入 prepared 状态。而加载本地音频的时候一般使用prepare()prepareAsync() 方法一般用于加载网络音频文件等耗时的场景,就可以了1415任务六贪吃蛇游戏的设计与实 现第一部分知识回顾与思考1.回顾一下操作SQLite 数据库的几个类的作用和之间的关系
38、(、SQLiteDatabaseSQLiteOpenHelper 、)。Cursor类:需要进行数据操作,需要创建一个类继承自该类,通过该类实现数据库的创 SQLiteOpenHelper 答:建和升级;对象,通过该对象可以进行数据 SQLiteDatabaseSQLiteDatabase 类:通过 SQLiteOpenHelper 类可以获得库的增加、删除、修改、查询;对象,通过操作该对象可以对返回的数据集从行的移动,并且获取类:查询数据库后返回 Cursor Cursor当前行指定列的数据。.回顾一下自定义控件的方法和监听器的作用。2答:自定义控件的共有方法:通过编写自定义控件的方法,可以
39、返回当前控件的状态,也可以设定控件的参数,本质上是控件外影响控件内部的途径;自定义控件的监听器:通过提供监听器,可以让控件外部监视控 件内部发生的事件,通过方法的回调触发控件外部的处理,本质上是控件内部通知控件外部的途径。第二部分职业能力训练一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内)Androidl .)类。中有许多控件,这些控件无一例外的都继承自(DView TextViewD . A . ControlB WindowCAndroid2 .)。B中有许多布局,它们均是用来容纳子控件和子布局的,这些布局均继承自(LinerLayoutCBA Layout . ViewGroup . ContainerD类的很多方法,以下哪个方法是与焦点相关?(.自定义控件时需要重写View 3) BonDraw onAttachedToWindowonFocusChangedA . onTouchEventB. C. D.)o 4.以下哪个方法是在控件尺寸发生变化时会被调用? ( ConLayout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024绿化带杂草管理协议样本
- 2024年适用租车服务协议综合范例
- 2024年工程项目食堂供应承包协议
- 2024年土建工程协议示范文本
- 2024在线支付安全规范SET协议
- 2024年个人贷款协议模板大全2
- 医生聘用合同的岗位职责
- 2024年师徒合作协议范本下载
- 2024年度西安二手房销售协议模板
- 2024年金融领域反担保协议参考样式
- 期中试卷(试题)-2024-2025学年三年级上册数学青岛版
- 期中押题卷(试题)-2024-2025学年数学六年级上册北师大版
- 期中模拟(1-3单元)(试题)-2024-2025学年六年级上册数学苏教版
- 统编版2024年新版道德与法治七年级上册第二单元《成长的时空》单元整体教学设计
- 点亮文明 课件 2024-2025学年苏少版(2024)初中美术七年级上册
- 廉政法规知识测试及答案
- 国开2024年秋《机电控制工程基础》形考任务3答案
- 中国高血压防治指南(2024年修订版)解读(总)
- 一+《展示国家工程++了解工匠贡献》(教学课件)-【中职专用】高二语文精讲课堂(高教版2023·职业模块)
- 结婚函调报告表
- 网站内容管理系统(CMS)
评论
0/150
提交评论