




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XXX系统详细设计说明书编检审批(内部资料请勿外传)期:期:期:期:版权所有不得复制文档变更记录序号变更(+/-)说明作者版本号日期批准121. 引言1.1 编写目的和范围 1.2术语表1.3参考资料1.4使用的文字处理和绘图工具 2. 全局数据结构说明 错误!未定义书签。2.1常量2.2变量2.3数据结构3. 模块设计3.1用例图3.2功能设计说明3.2.1 模块 1 3.2.2 模块 24. 接口设计4.1内部接口 4.2外部接口 4.2.1接口说明4.2.2调用方式5. 数据库设计6. 系统安全保密设计6.1说明6.2设计6.2.1数据传输部分 6.2.2 IP过滤分部6.2.3身份验证
2、部分 7. 系统性能设计8. 系统出错处理1. 引言1.1编写目的和范围说明写这份详细设计说明书的目的。本详细设计说明书编写的目的是说明程序模块的设计考虑,包括程序描述、 输入/输出、算法和流程逻辑等,为软件编程和系统维护提供基础。本说明书的 预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。1.2术语表定义系统或产品中涉及的重要术语, 为读者在阅读文档时提供必要的参考信丿 111、0序号术语或缩略语说明性定义|1PMProject Ma nager,项目经理21.3参考资料列出有关资料的名称、作者、文件编号或版本等。参考资料包括:a. 需求说明书、架构设计说明书等;b. 本项
3、目的其他已发表的文件;c. 引用文件、资料、软件开发标准等。资料名称作者文件编号、版本资料存放地占八、1.4使用的文字处理和绘图工具文字处理软件:word office绘图工具:Visio2. 全局数据结构说明本章说明本程序系统中使用的全局数据常量、变量和数据结构2.1常量static String SERVER_ADDRESS 服务器地址boolea n log inF lag登录状态2.2变量BlueUserlnfo?用户账户结构体2.3数据结构包括数据结构名称,功能说明,具体数据结构说明(定义、注释、取值)等。3. 模块设计3.1用例图3.2功能设计说明3.2.1登录模块模块1主要分为以
4、下几个子模块:子模块 1、子模块2和子模块N。设计图功能描述此模块的主要功能是登录验证功能,保证程序的安全性问题。用户需要验证 用户和密码是否正确才能进行下一部操作。字段说明输出数据字段明输入数据变量名类型说明userNameStri ng用户名(必填)passwordStri ng密码(必填)STOPSPLASHint开场动画标志位SPLASHTIMElong消息发送延迟时间LOGINBUTTONint登录按钮是否能够点击 标志位code结果,0表示失败,1表示成功,2表示该养殖场地 不存在,3表示该Rfid已存在userName用户名
5、PassWord密码userRoleld用户权限,1代表系统用户,2代表人事部,3代表 育苗场,4代表生产部,5代表加工厂,6代表市场 部,7代表捕捞管理员表现形式为:code=1321.5流程图321.6源程序文件说明321.7函数说明对密码进行 MD5加密:md5(密码)将用户的账号密码暂时保存等下次登录时可以不用再次输入:saveUserlnfo(Activity 名,用户名,密码)限制条件必须在有网的条件下能使用登录功能。3.2.2人员管理设计图功能描述通过手持设备扫描员工的RFID号,并在员工工号的输入框手动输入员工工 号,并将两条数据上传到
6、服务器中的数据库。将员工工号与RFID号相互绑定输入数据变量名属性说明nu mberstri ng员工的员工号(必填)rfidstri ng员工的RFID号(必填)如:E200在检测数据的有效性是像是判断数据是否为空, 当向服务器发送消息时服务 器会对数据进行有效性检测,显示判断员工的员工号是否存在,员工的RFID号是否已被其他工作人员应将绑定。这些数据的获取离不开具有 RFID扫描功能的手持设备,对员工的 RFID卡 进行扫描获取RFID号。才实现此功能322.4输出数据变量名属性说明nu mberstri ng员工的员工号rfidstri ng员工的RFID号flagint数
7、据存储状态的标志位322.5业务算法和流程数据设计给出本程序中的局部数据结构说明,包括数据结构名称,功能说明,具体数 据结构说明(定义、注释设计、取值)等。相关数据库表,数据存储设计(具体 说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。 )源程序文件说明packageimportimportimport animportimportimportimportimportimportimportimportimportimportimportimportimport /引入RFID扫描的开发包* Created by zhouxingguo on 2
8、015/7/15.*/public class EmployeeActivityextends Activity privateButt on sca n;privateButt on saveMessage /保存员工信息private EditText inputNumber;/ 员工编号、卡号 private TextView inputRfid ; / 员工 RFID信息 privateStringnumber; /获取得到的卡号、编号private String rfid ; / 获取得到的 RFID privateRfidScan rfidScan ;private String
9、rfidget ;Overridepublic voidon Create(B un dle saved In sta nceState) super. on Create(savedI nsta nceState);setC onten tView(R .1 ayout.activity_employee );Util.initSoundPool (this );init();/获取RFID号和员工工号并保存到本地数据库/初始化控件private void in it() in putNumber = (EditText)findViewByld(R.id.input_employee_nu
10、mber);inputRfid = (TextView) findViewByld(R.id.input_employee_rfid);saveMessage = (Butt on)fin dViewByld(R.id. save_message_employe9;scan=(Button)findViewByld(R.id. scan_rfid );MyListener listener =new MyListener( this );saveMessageset On ClickListe ner(liste ner);sca n. set On ClickListe ner(liste
11、ner);/ datareceive =getI nte nt().getExtras();/dataflag=datareceive.getI nt("dataflag");/0 代表从主界面跳转,1代表从扫描接口跳转/if(dataflag=0)/ inputRfid.setText("请扫描员工卡号");/else if(dataflag=1)/rfidget = datareceive.getStri ng("rfid");/0代表从员工录入跳转,1代表从快递跳转/in putRfid.setText(rfidget);/pr
12、ivate class MyListener implements View.OnClickListener private Con text con text ;public MyListe ner(C on text con text) this . con text = con text;Overridepublic void on Click(View view) switch (view.getld() case R.id. scan_fid :rfidSca n =new RfidSca n(); rfidget =fidScan .scan(); if (rfidget != n
13、ull ) inputRfid .setText( rfidget );else Toast. makeText(getApplicationContext(),R.string.scan_rfid_failToast. LENGTH_SHqRTow();break;case R.id. save_message_employee / 保存员工信息按钮至U数据库,保存成功之后清空editText/要保证输入的信息不能全部为空if (!TextUtils. isEmpty (i nputNumber .getText()&& !TextUtils. isEmpty(inputRf
14、id .getText() nu mber =in putNumber .getText().toStri ng().trim();rfid = in putRfid .getText().toStri ng().trim();BlueOcea nEmployeeServiceemployeeService = newBlueOcea nEmployeeService( con text );BlueOcea nEmployee boe =newBlueOcea nEmployee();int flag = 0; 0表示保存到本地数据库,1表示 本地数据库数据待删除boe.setFlag(fl
15、ag);boe.setNumber(nu mbei);boe.setRfid(rfid );employeeService.i nsert(boe);inputNumber.setText("");inputRfid .setText("");Toast.makeText(getApplicati onCon text(),R.string. bind_success , Toast. LENGTH_LONshow();/开辟一个新线程上传数据new Thread( networkTask ).start();Toast.makeText(getAppl
16、icati onCon text(),R.string. save_success_toast , Toast. LENGTH_LONGhow();else Toast.makeText(getApplicati onCon text(),R.stri ng. employee_rfid_number_not_null , Toast. LENGTH_LO)Nhow();break;Runn able n etworkTask = new Runn able() Override public void run() / TODO/在这里进行http request. 网络请求相关操作 Uplo
17、adService uploadService = new UploadService();uploadService.upload(getApplicati onCon text();322.8函数说明大扫描RFID就成功时发出提示音:Util.initSoundPool(activity名称);程序的主体:init();开启数据上传线程:networkTask限制条件要实现此功能必须要具备可以扫描 RFID功能的手持设备,不然无法扫描员 工的RFID号。3.2.3池塘管理设计图功能描述此模块主要实现的功能是扫描池塘的 RFID,并手动输入池塘编号,
18、并将其 保存到本地数据库。并等到有网的条件下,将此条信息上传到服务器端的数据库。 实现池塘RFID号与池塘编号的绑定。输入数据变量名属性说明nu mberstri ng池塘编号(必填)如:育苗池1rfidstri ng池塘的RFID号(必填):在检测数据有效性时,需要检测数据是否为空。这些数据的获取离不开具有RFID扫描功能的手持设备,对池塘的RFID卡进行扫描获取RFID号。才实现此功能输出数据变量名属性说明nu mberstri ng池塘编号rfidstri ng池塘的RFID号flagInt数据存储标志位业务算法和流程数据设计给出本
19、程序中的局部数据结构说明,包括数据结构名称,功能说明,具体数 据结构说明(定义、注释设计、取值)等。相关数据库表,数据存储设计(具体说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。)323.7源程序文件说明 packageimport import import import import import import import import import import import import import import import* Created by zhouxingguo on 2015/7/15.*/public classPondActivityexten
20、ds Activity private Button scanPond; 点击扫描池塘private Button bindPond; / 绑定池塘编号和 RFID信息 private EditText pondNumbe 池塘编号、卡号 private TextView pondRfid ; / 池塘 RFID信息 private String number; /获取得到的卡号、编号 private String rfid ; / 获取得到的 RFID private RfidScan rfidScan private String rfidget ;Overridepublic voido
21、n Create(B un dle saved In sta nceState) super. on Create(savedl nsta nceState);setC onten tView(R .1 ayout.activity_p ond );Util.initSoundPool (this );in it();/初始化控件private voidin it() pon dNumber = (EditText) fin dViewByld(R.id.in put_po nd_number);pon dRfid = (TextView) fin dViewByld(R.id.in put_
22、po nd_rfid );scanPond=(Button)findViewByld(R.id.scan_pond_rfid );bin dP ond = (Butto n) fin dViewByld(R.id.bin d_po nd);MyListener listener =new MyListener( this );sca nPon dset On ClickListe ner(liste ner);bi ndPon d.set On ClickListe ner(liste ner);private classMyListener implements View.OnClickLi
23、stener private Con text con text ;public MyListe ner(C on text con text) this . con text = con text;Overridepublic void on Click(View view) Log. d( "aa","进入点击");switch (view.getld() case R.id. scan_pond_rfid :rfidSca n =new RfidSca n();rfidget =rfidScan .scan();if (rfidget != nul
24、l )pondRfid .setText( rfidget );else Toast. makeText(getApplicationContext(),R.string.sean_fid_fail,Toast. LENGTH_SHqRTow();break;case R.id. bind_pond : /保存员工信息按钮到数据库,保存成 功之后清空editText/要保证输入的信息不能全部为空if (!TextUtils. isEmpty (p on dNumbergetText()&& !TextUtils. isEmpty (pondRfid .getText() nu
25、mber =pon dNumbergetText().toStri ng().trim();rfid = pondRfid .getText().toString().trim();BlueOcea nPon dService pon dService =newBlueOcea nPon dService( con text );BlueOcea nPond boe =new BlueOcea nPon d();int flag =0; /0表示保存到本地数据库,1表示本地数据库数据待删除boe.setFlag(flag);boe.setNumber(nu mbei);boe.setRfid(
26、rfid );pon dService.i nsert(boe);pondNumbersetText("");pondRfid .setText("");Toast.makeText(getApplicati onCon text(),R.string. bind_success , Toast. LENGTH_LONGhow();/开辟一个新线程上传数据new Thread( networkTask ).start();else Toast.makeText(getApplicati onCon text(),R.stri ng. po nd_fid_
27、number_not_null, Toast. LENGTH_LONGiow();break;Runn ablen etworkTask = new Runn able() Override public void run() / TODO/在这里进行http request.网络请求相关操作UploadService uploadService = new UploadService();uploadService.upload(PondActivity.this );323.8函数说明当扫描RFID就成功时发出提示音:Util.initSoundPool(activity 名称);程序的主
28、体:init();开启数据上传线程:networkTask323.9限制条件要实现此功能必须要具备可以扫描RFID功能的手持设备,不然无法扫描员工的RFID号。3.2.4育苗管理设计图 功能描述本功能主要是对员工对育苗池的操作进行记录,显示扫描员工 RFID、池塘 RFID。还要扫描海产品的批次二维码,当员工对池塘进行操作时,需要记录操 作类型,并且记录池塘的温度。经这些信息记录到本地数据库。输入数据变量名属性说明rfidgetUserstri ng员工的RFID (必填)女口:rfidgetPoolstri ng池塘的RFID号(必填)女口:Batc
29、hStri ng批次二维码(必填)com/show.html?id=18FC90BE5B8124AF983421D29BFC4352getEve nTypeStri ng操作类型(必填),包括:喂食、换水、测 温、入池、投放tempStri ng温度(非必填)如:10CtimeStri ng在检测数据有效性时,需要检测rfidgetUser与rfidgetPool两个输入变量是否 为空。这些数据的获取离不开具有RFID扫描功能及二维码扫描的手持设备,对池 塘的RFID卡进行扫描并获取RFID号并且对池塘上的产品批次二维码进行扫描, 获取产品批次二维码。324.4输出数据变量名属性说明rfidg
30、etUserstri ng员工的RFIDrfidgetPoolstri ng池塘的RFID号DataStri ng批次二维码,如:getEve nTypeStri ng操作类型tempStri ng温度:10flagint数据存储标志位324.5业务算法和流程3.246数据设计给出本程序中的局部数据结构说明,包括数据结构名称,功能说明,具体数 据结构说明(定义、注释设计、取值)等。相关数据库表,数据存储设计(具体 说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。)源程序文件说明packageimportimportimportimportimportimport
31、 androimportimportimport import import import import import import import import importimportimportimport com.blueoceaimportimportimportimportimportimport import/*保苗阶段activity* Created by zhouxingguo on 2015/7/15. */public classprivateprivateprivateprivateYouthActivity Butt on Butt on Butt on Butt o
32、nextends Activity scanUser;/ 扫描员工 rfid scanPond; / 扫描池塘 RFID saveButton ; / 保存信息 scanQrcode; /扫描池塘二维码批次信息private private privateTextViewEditTextTextView员工RFID信息 池子RFID信息privateEditTextuserRfid ; / poolRfid ; / pondQrcode; /池塘二维码包含的批次信息temperature ; 输入池塘温度private private privateString rfidUser ;/ 获取得
33、到的 RFIDRfidScan rfidScanUser ; /rfid 扫描 user 类 String rfidgetUser ; / 获取得到的 userRfidprivate String rfidPool ; / 获取得到的池子 RFIDprivateRfidScan rfidScanPool ; rfid 扫描池子类privateStringrfidgetPool ; / 获取得到的 pooIRfidprivateStringbatch ; /获取池子标签上的批次二维码信息private Spinner spinner ; /操作类型下拉控件privateListvString&g
34、t;eventList ; 操作类型数据源private ArrayAdapter<String> adapter ;/ 适配器适配操作类型列表privateStringgetEventType ;privateStringpooITemp="" ; /池子温度,暂时用不到privateStringdata;private BroadcastReceiver receive ;privateScan Thread sca nThread;privateHandler mHandler = new Handler() public voidif (msg. wha
35、t = Scan Thread. SCANdata = msg.getData().getString( "data");Log.d( "acc_data" , data );Util.play (1, 0);pondQrcodesetText( data);Overridepublic voidon Create(B un dle saved In sta nceState) super. on Create(savedI nsta nceState);setCo nte ntView(R.layout.activity_youth );Util.in
36、itSoundPool (this );init_spinn er();in it();/* 开启二维码扫描线程* */try sca nThread = new Scan Thread(mHa ndler); catch (Exception e) Toast.makeText(getApplicati onCon text(),"serialport in itfail" , 0).show();return ;sea nThread.start();receive = new Fun keyListe ner();/代码注册广播接收者In te ntFilter fi
37、lter =new In te ntFilter();filter.addActio n();registerReceiver(receive , filter);Util.initSoundPool (getApplication();private classFunkeyListener extends BroadcastReceiver Overridepublic voidon Receive(Co ntext con text, I ntent intent) boolean defaultdown= false ;int keycode = intent.getIntExtra(&
38、quot;keycode" , 0);boolean keydown = intent.getBooleanExtra("keydown",defaultdow n);if (keycode = 134 && keydown) sca nThread.sca n();/初始化控件private void in it() userRfid = (TextView)findViewByld(R.id.input_baomiao_user );poolRfid = (EditText)findViewByld(R.id.input_baomiao_pon
39、d );pon dQrcode =(TextView)findViewByld(R.id.input_baomiao_pond_qrcode );temperature = (EditText)fi ndViewByld(R.id.in put_temperature );temperature .setInputType(Editorlnfo. TYPE_CLASS_PHONEbaomiao_sca n_employee); baomiao_sca n_pon d);sca nUser = (Butt on) fin dViewByld(R.id. sca nPo nd = (Butt on
40、) fin dViewByld(R.id.sca nQrcode = (Butt on)findViewByld(R.id.baomiao_pond_qrcode); / 扫描池塘二维码批次信息saveButt on = (Butto n) fin dViewByld(R.id.save_butto n1 ); sea nUser.set On ClickListe ner(liste ner); sea nPon dset On ClickListe ner(liste ner);sea nQrcode.set On ClickListe ner(liste ner); saveButton
41、 .setOnClickListener(listener);private voidin it_sp inn er()spinner =(Spinner)findViewByld(R.id.action_spinner );/定义数据源eve ntList =new ArrayListvStri ng>();eventList .add("喂食");eventList .add("换水");eventList .add("测温");eventList .add("入池");eventList .add(&q
42、uot;投放");adapter =new ArrayAdaptervString>( this ,R.layout. simple_spinner_item, eventList );adapter .setDropDownViewResource(R.layout. spinner_checked_text );spinner .setAdapter( adapter );/spi nner监听器获取选择内容spinner .setOnltemSelectedListener( newAdapterView. On ItemSelectedListe ner() Overr
43、idepublic void onltemSelected(AdapterView<?> adapterView, View view, int position, long l) getEventType = adapter .getltem(position);Overridepublic void onNothingSelected(AdapterView<?>adapterView) );private classMyListener implements View.OnClickListener private Con text con text ;publi
44、c MyListe ner(Con text con text) this . con text = con text;Overridepublic void on Click(View view) switch (view.getld() case R.id. baomiao_scan_employee: rfidSca nUser =new RfidSca n(); rfidgetUser =rfidScanUser .scan(); if (rfidgetUser != null ) userRfid .setText( rfidgetUser );else Toast.makeText
45、(getApplicati onCon text(),R.stri ng. scan_rfid_fail , Toast. LENGTH_SHORTow();break;case R.id. baomiao_scan_pond: rfidSca nPool =new RfidSca n(); rfidgetPool =rfidScanPool .scan(); if (rfidgetPool != null ) poolRfid .setText( rfidgetPool );else Toast.makeText(getApplicati onCon text(),R.stri ng. sc
46、an_rfid_fail , Toast. LENGTH_SHORTow();break;case R.id. baomiao_pond_qrcode:sca nThread.sca n();break;case R.id. save_button1 : /保存员工信息按钮到数据库,保 存成功之后清空editText/要保证输入的信息不能全部为空if (!TextUtils. isEmpty (poolRfid .getText()&& !TextUtils. isEmpty (userRfid .getText()&&!TextUtils.isEmpty (g
47、etEventType)&&(!TextUtils.isEmpty (data)| getEventType .equals("投放")newBlueOcea nEve ntService eve ntService =BlueOcea nEve ntService( con text );BlueOcea nEve nt boe =new BlueOcea nEve nt();String time= DateDefined.getDate (); / 获取自定义时间格式rfidUser =userRfid .getText().toString().tr
48、im();1表示rfidPool =poolRfid .getText().toString().trim();int flag =0; 0表示保存到本地数据库,本地数据库数据待删除type=type=type=type=type=int type = 2;if (getEventType .equals("喂食")1;(getEventType .equals("换水") 2;(getEventType .equals( 3;(getEventType .equals(4;(getEventType .equals(6;else ifelse ifel
49、se ifelse ifIIII"测温")投放")入池")String batch =data ; /扫描二维码信息Stri ng temp =temperature .getText().toString().trim();boe.setFlag(flag);boe.setUserRfid(rfidUser );boe.setPoolRfid(rfidPool );boe.setTime(time);boe.setEve ntType(type);if (type= 4)boe.setBatch("0");else boe.setB
50、atch(batch); boe.setPoolTemp(temp); eve ntService.i nsert(boe);userRfid .setText(""); poolRfid .setText(""); pondQrcode.setText(""); temperature .setText("");/开辟一个新线程上传数据new Thread( networkTask ).start();Toast.makeText(getApplicati onCon text(),R.string. save_
51、success_toast , Toast. LENGTH_LONshow();else Toast.makeText(getApplicati onCon text(),R.string. not_null_except_temperature , Toast. LENGTH_LONshow();break;Runn ablen etworkTask = new Runn able() Overridepublic void run() / TODO/在这里进行http request.网络请求相关操作UploadService uploadService = new UploadServi
52、ce(); uploadService.upload(YouthActivity.this );Overrideprotected void on Destroy() if (scanThread != null ) sca nThread .in terrupt();scanThread .close();unregisterReceiver(receive );super. on Destroy();3.248函数说明当扫描RFID就成功时发出提示音:Util.initSoundPool(activity 名称);程序的主体:init();开启数据上传线程:networkTask3.2.4
53、.9限制条件限制条件是,必须使用具有RFID和二维码扫描功能的手持设备才能完成此 功能。3.2.5加工包装设计图功能描述此模块的主要功能是扫描员工的 RFID号,并显示到屏幕上去。工作人员选 择产品类型,扫描产品二维码,一次可以扫描多个产品,并将数据保存到本地数 据库。输入数据变量名属性说明rfidgetstri ng员工的RFID (必填)女口:QRCodeStri ng产品二维码(必填)=18FC90BE5B8124AF983421D29BFC4352getProductTypeStri ng产品类型(必填),包括:冻海参、淡海参、 盐海参、鲜活海
54、参、盐渍海参 、及时海参TimeStri ng操作时间。女口在检测数据有效性时,需要检测rfidgetUser与rfidgetPool两个输入变量是否 为空。这些数据的获取离不开具有RFID扫描功能及二维码扫描的手持设备,对池 塘的RFID卡进行扫描并获取RFID号并且对池塘上的产品批次二维码进行扫描, 获取产品批次二维码。输出数据变量名属性说明rfidgetstri ng员工的RFID 女口:QRCodeStrin g产品二维码com/show.html?id=18FC90BE5B8124AF983421D29BFC4352getProductTypeStrin g产品类型,包括:冻海参、淡海参、盐海参、鲜活海参、 盐渍海参、及时海参TimeStrin g操作时间。女口
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CN120208785A 一种碳酸二乙酯热泵精馏装置及工艺
- 老年人保健知识培训小结课件
- 生物的变异和进化-2025年高考生物专项复习原卷版
- 人教版八年级英语下册专练:短文填空20篇(含答案)
- CN120198213A 基于穿透监管的自适应风险评估调整方法及系统
- 人教版八年级英语下册 Unit 1-Unit 10 期末复习之作文书面表达范文
- 配送员礼仪基础知识培训课件
- 2025版水电费远程抄表与用户服务合同
- 2025年企业研发项目抵押借款合同
- 2025版企业合同管理流程再造及优化方案
- 全国行政区域身份证代码表(EXCEL版)
- 新麻醉记录单
- 社区合理用药讲课
- 义务教育科学课程标准(2022年版)测试题及答案含课标解读
- 水运工程统一用表之一《浙江省港口工程统一用表》
- GB/T 13306-2011标牌
- GA 1800.6-2021电力系统治安反恐防范要求第6部分:核能发电企业
- FZ/T 13001-2013色织牛仔布
- 温医麻醉学专业英语专业英语考试参考
- 办公室主任竞聘报告课件
- 住宅小区供配电系统设计课件
评论
0/150
提交评论