




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计、编码规范程序设计、编码规范目录1.程序界面设计41.1.Web网站结构规范41.2.客户端文件命名规范41.2.1.Web页面命名规范41.2.2.Windows Form页面命名规范51.3.界面中控件命名规范51.3.1.Button控件命名规范51.3.2.输入、选择控件命名规范71.3.3.DataGrid网格控件命名规范71.3.4.工具条控件命名规范81.4.菜单及菜单项命名规范82.程序编码规范102.1.代码格式102.2.接口、类、方法、属性命名规范112.2.1.接口及接口成员的命名规范112.2.2.类的命名规范112.2.3.类方法命名规范122.2.4.类属性的命名规范122.3.注释规范132.3.1.整体注释规范:132.3.2.模块注释规范132.3.3.类属性注释规范152.3.4.方法注释规范152.3.5.代码间注释规范152.4.变量命名规范153.项目特定规范16第 16页 共 16页1. 程序界面设计1.1. Web网站结构规范为了保证系统有一个统一的界面风格及布局风格,需在网站虚拟根目录下增下一个存放系统图片文件的Image目录和一个存放系统CSS的Css目录。程序中所用到的所有系统图片及CSS都将从此两个目录中进行引出。两个目录中都存放有不同风格的图片,用户可以设置系统使用的风格。系统中使用的CSS的文件名统一命名为:OceanSoft.css1.2. 客户端文件命名规范系统中一般的单据的命名都必须按下面的规范命名:1.2.1. Web页面命名规范 新增单据的aspx页面的名称 = 代表此单据功能的英文单词 + Add.aspx,并尽量与页面对应的数据库表名相对应。例如:职员新增的aspx页面的名称为 :EmployeeAdd.aspx 查询单据的aspx页面的名称 = 代表此单据功能的英文单词 + Qry.aspx 例如:职员查询的aspx页面的名称为 :EmployeeQry.aspx 查询结果显示的aspx页面的名称 = 代表此单据功能的英文单词 + Dts.aspx 例如:职员查询结果显示的aspx页面的名称为 :EmployeeDts.aspx 单据主操作页面的名称= 代表此单据功能的英文单词 + Manage.aspx,并尽量与页面对应的数据库表名相对应。例如:职员信息维护的主操作aspx页面名称为 :EmployeeManage.cs 其它界面的aspx页面名称=代表此单据功能的英文单词 +.aspx其它界面主要是指一些业务单据以外的界面。如参数设置等界面。如SysInforSetting.aspx1.2.2. Windows Form页面命名规范 新增单据的cs页面的名称 = frm+代表此单据功能的英文单词 + Add.cs,并尽量与页面对应的数据库表名相对应。例如:职员新增的cs页面的名称为 :frmEmployeeAdd.aspx 查询单据的aspx页面的名称 = frm+代表此单据功能的英文单词 + Qry.cs 例如:职员查询的cs页面的名称为 :frmEmployeeQry.aspx 查询结果显示的cs页面的名称 = frm+代表此单据功能的英文单词 + Dts.cs 例如:职员查询结果显示的cs页面的名称为 :frmEmployeeDts.cs 单据主操作页面的名称= frm+代表此单据功能的英文单词 + Manage.cs,并尽量与页面对应的数据库表名相对应。例如:职员信息维护的主操作cs页面名称为 :frmEmployeeManage.cs 其它界面的cs页面名称= frm+代表此单据功能的英文单词 +.cs其它界面主要是指一些业务单据以外的界面。如参数设置等界面。1.3. 界面中控件命名规范1.3.1. Button控件命名规范按钮类别按钮功能名称ID可用状态图片名称不可用状态图片名称标题TextCssClass排列序号登录(Login)登录按钮cmdLogincmdLogin.GIFCmdLogin_False.GIF登录1登录取消按钮cmdLoginCancelcmdLoginCancel. GIF取消2单据新增界面 (New)关闭按钮cmdNewClosecmdNewClose.GIFcmdNewClose_False.GIF关闭Button1新增按钮cmdNewAddcmdNewAdd. GIFcmdNewAdd_False. GIF新增Button2保存按钮cmdNewSavecmdNewSave. GIFcmdNewSave_False. GIF保存Button3删除按钮cmdNewDeletecmdNewDelete. GIFcmdNewDelete_False. GIF删除Button4复制按钮cmdNewCopycmdNewCopy.GIFcmdNewCopy_False.GIF复制Button5查询按钮cmdNewSearchcmdNewSearch. GIFcmdNewSearch_False. GIF查询Button6设置按钮cmdNewSettingcmdNewSetting. GIFcmdNewSetting_False. GIF设置Button7打印按钮cmdNewPrintcmdNewPrint.GIFcmdNewPrint.GIF打印Button8帮助按钮cmdNewHelpcmdNewHelpcmdNewHelp_False.GIF帮助Button9单据主界面(Main)新增按钮cmdMainAddcmdMainAdd. GIFcmdMainAdd_False. GIF新增Button1删除按钮cmdMainDeletecmdMainDelete. GIFcmdMainDelete_False. GIF删除Button2设置按钮cmdMainSettingcmdMainSetting. GIFcmdMainSetting_False. GIF设置Button3查询按钮cmdMainSearchcmdMainSearch. GIFcmdMainSearch_False. GIF查询Button4打印按钮cmdMainPrintcmdMainPrint.GIFcmdMainPrint_False.GIF打印Button5帮助按钮cmdMainHelpcmdMainHelp.GIFcmdMainHelp_False.GIF帮助Button6跳转页面按钮cmdMainGoTocmdMainGoTo.GIFcmdMainGoTo_False.GIFGo或转到7首页按钮cmdMainFirstcmdMainFirst.GIFcmdMainFirst_False.GIF首页Button8上一页按钮cmdMainPreviouscmdMainPrevious.GIFcmdMainPrevio_False.us.GIF上一页Button9下一页按钮cmdMainNextcmdMainNext.GIFcmdMainNext_False.GIF下一页Button10末页cmdMainLastcmdMainLast.GIFcmdMainLast_False.GIF末页Button11其它网页中的功能按钮确定按钮cmdOkCmdOk.GIFCmdOk_False.GIF确定Button取消按钮(服务器端)cmdCancelcmdCancel.GIFcmdCancel_False.GIF取消Button取消按钮(客户端)btnCancelbtnCancel.GIFbtnCancel_False.GIF取消/关闭Button新增按钮cmdAddcmdAdd.GIFcmdAdd_False.GIF新增Button修改按钮cmdEditcmdEdit.GIFcmdEdit_False.GIF修改Button保存按钮cmdSavecmdSave.GIFcmdSave_False.GIF保存Button删除按钮cmdDeletecmdDelete.GIFcmdDelete_False.GIF删除Button选择按钮cmdSelectcmdSelect.GIFcmdSelect_False.GIF选择Button全部选择按钮cmdSelectAllcmdSelectAll.GIFcmdSelectAll_False.GIF全部选择Button4全部删除按钮cmdDeleteAllcmdDeleteAll.GIFcmdDeleteAll_False.GIF全部删除Button4日期选择按钮btnSelectDatebtnSelectDate.GIFbtnSelectDate_False.GIFSelectDateButton时间选择按钮btnSelectTimebtnSelectTime.GIFbtnSelectTime_False.GIFSelectTimeButton系统资料选择按钮btnSelectInfobtnSelectInfo.GIFbtnSelectInfo_False.GIFSelectInfoButton单据的选择按钮btnSelectBillbtnSelectBill.GIFbtnSelectBill_False.GIFbtnSelectBillButton 对于Web页面:界面的所有按钮的命名将按服务器和客户端按钮的不同而有不同的命名。对于服务器端按钮的命名以小写字符“cmd”开头 + 按钮所代表含意的英文单词,每个英文单词的首字母需大写;而客户端的按钮的命名以小写字符“btn”开头 + 按钮所代表含意的英文单词,每个英文单词的首字母需大写。为了使用各类界面中的按钮有灵活的设置,将对界面中的按钮进行分类,从而引用不同的CssClass。其中:单据新增界面中工具栏中的按钮将统一引用CssClass:ToolbarNew,从而保证修改此CssClass时,只改变所有具有此工具栏的界面。单据的主界面中工具栏中的按钮将统一引用CssClass:ToolbarMain,从而保证修改此CssClass时,只改变所有具有此工具栏的界面。其它网页界面中的功能按钮中,所有两个字的按钮将引用相同的CssClass:Button;所有四个字的按钮将引用相同的CssClass:Button4。 对于Windows Form页面对于Windows Form中的按钮的命名以小写字符“cmd”开头 + 按钮所代表含意的英文单词,每个英文单词的首字母需大写;1.3.2. 输入、选择控件命名规范控件类型控件名前缀控件名引用CssClass备注Labellbl数据库字段名LabelTextBoxtxt数据库字段名TextBoxTextAreatxt数据库字段名TextArea多行的TextBoxRadioButtonrdo数据库字段名RadioButtonRadioButtonListrdolst数据库字段名RadioButtonListCheckBoxchk数据库字段名CheckBoxCheckBoxListchklst数据库字段名CheckBoxListListBoxlst数据库字段名ListBoxListBoxListlstlst数据库字段名ListBoxListDropDownListdrp数据库字段名DropDownList以上规范适合于Web页面及Windows Form页面。1.3.3. DataGrid网格控件命名规范为了便于在程序开发中对网格控件的控制,一个界面中网格控件名称为统一为datagrid1,如果此界面中有多个控件,可分别命名为datagrid2、datagrid3datagridn。对于Web DataGrid控件的CSS引用规范如下:网格元素引用CssClass说明对应的DataGrid项网格本身Tabel设置网格本身的样式DataGrid或客户端TabelDataGrid交替项TabelAlternDataGrid交替项的样式AlternationItemStyleDataGrid标头项TabelHeadDataGrid标头的样式HeaderStyleDataGrid普通项TabelItemDataGrid普通项的样式ItemStyleDataGrid脚注项TabelFootDataGrid脚注的样式FooterStyleDataGrid编辑项TabelEditDataGrid编辑项的样式EditItemStyleDataGrid选定项TabelSelectDataGrid选定项的样式SelectedItemStyleDataGrid分页项TabelPageDataGrid分页项的样式PagerStyle 每个DataGrid在设置时,必须设置以上的CssClass项及相应的控件名称。1.3.4. 工具条控件命名规范GroupIDCaption按钮IDToolTipText1新增tbrNew新增1保存tbrSave保存1删除tbrDelete删除2导入tbrImport数据导入2导出tbrExport数据导出3打印tbrPrint打印3预览tbrPreview打印预览4插行tbrInsertRow插入行4删行tbrRemoveRow删除行5审核tbrCheck审核5反审tbrUnCheck取消审核6查看tbrView查看资料卡片6查找tbrBlur模糊查找7退出tbrExit1.4. 菜单及菜单项命名规范Menu_LevelMenu_CaptionMenu_NameMenu_ShortCutDescription1文件(&F)mnuFile1-1新建(&N)mnuFileNewCtrl+N新增一张单据1-2保存(&S)mnuFileSaveCtrl+S保存单据信息1-3删除(&D)mnuFileDeleteCtrl+D删除当前单据1-4清空(&C)mnuFileClearAlt+Bksp清空当前单据的信息间隔MnuFileSp21-5数据导入(&I)MnuFileImportCtrl+I使用模板1-6数据导出(&E).mnuFileExportCtrl+E保存当前单据为模板间隔MnuFileSp31_7打印(&P)mnuFilePrintCtrl+P打印当前数据1_8打印预览(&V)mnuFilePreview预览当前数据间隔MnuFileSp21_9退出(&Q)MnuFileQuitCtrl+Q退出当前的操作2编辑(&E)MnuEdit2-1插入行(&I)mnuEditInsertRowShift+Ins在当前位置插入明细行2-2删除行(&R)mnuEditRemoveRowShift+Del删除当前的明细行间隔MnuEditSp12-3清空网格mnuEditClearGrid如果状态条上用到以ClearGrid命名,否则与清除界面时冲突间隔MnuEditSp32-4剪切行(&T)mnuEditCutCtrl+X2-5复制行(&C)mnuEditCopyCtrl+C2-6粘贴行(&P)mnuEditPasteCtrl+P3操作&O)MnuOperate3_1审核(&C)mnuOperateCheck3_2取消审核(&U)mnuOperateUnCheck间隔MnuEditSp13-3查看消息(&V)mnuOperateViewMessageF63-4发送消息(&S)mnuOperateSendMessageF74查看(&V)MnuView4-1资料卡片(&C)mnuViewCardF5查看各种资料的卡片4-2模糊查找(&B)mnuViewBlurF2间隔MnuViewSp24_3刷新(&F)MnuViewRefreshF9刷新查询的数据5帮助(&H)MnuHelpF15_1内容(&C)mnuHelpContent5_2索引(&I)mnuHelpIndex间隔mnuHelpSp15_3公司主页 (&W)mnuHelpWeb间隔mnuHelpSp25_4关于(&A)mnuHelpAbout特殊单据、特殊窗体菜单定义1显示/隐含列(&H)MnuViewHideCol设置当前网格格式(显示/隐藏列)2排序(&S)MnuViewSort3升序(&A)mnuViewAsc4降序(&D)mnuViewDesc5全部选定(&A)mnuViewAll6反向选择(&R)mnuViewReserve7向导(&W)mnuOperateWizards2. 程序编码规范2.1. 代码格式u 所有的缩进为4个空格,不允许保留制表符,因为不同的编辑器制表符的长度不一样。u 在代码中垂直对齐左括号和右括号。if(x=0)Response.Write(用户编号必须输入!); 不允许以下情况:if(x=0) Response.Write(用户编号必须输入!); 或者:if(x=0)Response.Write(用户编号必须输入!);u 代码行的最大长度。为了防止在阅读代码时不得不滚动源代码编辑器,每行代码在1024*800的显示频率下不得超过一显示屏(136个英文字符)。如果包括注释在内不得超过1.5显示屏的长度(176个英文字符)。u 当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。例如:string mStrSql=INSERT INTO PAS_CM_RewardPunlish(RPLevelDetail,RPType, “+ “UserGUID,RPID,Memo,RPReason,RPDate,Status,AddIP , “ + “RPType,UserGUID,RPID,Memo,RPReason,RPDate,Status,AddIP;u 编写 SQL 语句时,对于关键字使用全部大写;对于数据库元素(如表、列和视图)使用大小写混合。u 将大的复杂代码节分为较小的、易于理解的模块。为了便于代码的阅读及维护,规定每个方法、函数的代码最长不得超过100行。最好每个方法的代码行数遵循不超过30行的原则,如果可以拆分的方法尽量多拆分。这样利于系统的维护,也减少了bug的出现概率。 2.2. 接口、类、方法、属性命名规范2.2.1. 接口及接口成员的命名规范u 接口的命名规范如下: 给接口名称加上字母 I 前缀,以指示该类型为接口。 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。各英文单词或缩写单词的首字母必须大写。接口中使用的英文单词数不得超过三个英文单词。 使用Pascal大小写。 少用缩写。 在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。使用要编写Employee类的接口,则其接口为Iemployee。这样在编码时就能很容易的辨认出某类的接口及某接口对应的类。 不要使用下划线字符 _。u 接口方法的命名:接口方法的名称 = 代表接口功能的动词 或 由代表接口功能的动词+ 代表接口操作对象的名称组成。其中,动词由一个英文单词组成。一般不允许使用英文的缩写。操作对象的名称由一个或三个以下(包括三个)英文单词或英文单词缩写组成。每个英文单词或缩写单词的首字母应大写。例如:得到用户名的接口方法:GetUserName更改用户口令的接口方法:ChangePassword用户管理接口IEmployee增加用户的接口方法:Add得到用户资料的接口方法:GetUserInfo2.2.2. 类的命名规范u 表现层的命名:表现层类的命名为:代表表现层内容的名词 + 字符System。注意:如果此处代表表现层内容的名词在数据库有相对应的数据库表,则此名词应是数据库表的名称(不含前后缀)。这样有利于将表现层的类与数据库中的表的名称保持一致。其中代表现层内容的名词可以是英文单词或英文单词的缩写。当是只用一个英文单词时,最好不要使用缩写;表现层的名称不得超过三个英文单词,各英文单词或缩写英文单词的首字母必须大写。例如:职员信息在数据库的表中名称为:SYS_Employee,则职员管理的表现层的命名为:EmployeeSystem;定单管理的表现层的命名为:OrderSystem;客户管理表现层的命名为:CustomerSystem。u 业务规则层的命名:业务规则层类的命名为:代表业务规则层内容的名词+ 字符Rule。注意:如果此处代表业务规则层内容的名词在数据库有相对应的数据库表,则此名词应是数据库表的名称(不含前后缀)。这样有利于将业务规则层的类与数据库中的表的名称保持一致。其中业务规则层内容的名词可以是英文单词或英文单词的缩写。当是只用一个英文单词时,最好不要使用缩写;业务规则层的名称不得超过三个英文单词,各英文单词或缩写英文单词的首字母必须大写。例如:职员管理的业务规则层的命名为:EmployeeRule;定单管理的业务规则层的命名为:OrderRule;客户管理业务规则层的命名为:CustomerRule。u 数据集层(实体类)的命名:业务规则层类的命名为:数据库表的名称(不含前后缀)。例如:职员表在数据库中的名称为SYS_Customer ,则职员实体实的名称为Customer。2.2.3. 类方法命名规范 类的命名必须遵循以下规范及建议:u 类的名称应该能够标识事物的特性,使用名词或名词短语命名类。u 类的名称尽量不使用缩写,除非它是众所周知的。u 类的名称可以由三个以下的单词或单词缩写组成,但通常不应多于三个。每个英文单词或缩写单词的首字母必须大写。u 使用 Pascal 大小写。u 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。u 不要使用下划线字符 (_)。u 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 是适当的。u 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。2.2.4. 类属性的命名规范u 所有的类属性必须使用get、set语句定义。不允许public类型的属性。u 对于实体实的属性名称与对应的数据库中的表字段名称完全一致。u 属性的名称应该能够标识属性所表达事物的特性,使用名词或名词短语命名属性。u 属性的名称尽量不使用缩写,除非它是众所周知的。u 属性的名称可以由三个以下的单词或单词缩写组成,但通常不应多于三个。每个英文单词或缩写单词的首字母必须大写。u 使用 Pascal 大小写。u 不要使用下划线字符 (_)。2.3. 注释规范注释规范包括:模块注释规范、类的属性、方法注释规范、代码间注释。2.3.1. 整体注释规范:所有函数、属性、方法等手工编写的代码必须有注释、除了系统自动生成的代码。例如:手工编写的函数,这个必须填写注释:public class CompanyCreateEdit : System.Web.UI.Pageprivate int mi_CompanyId; /公司ID/ / 解密字符串/ / 字符串数据/ 解密后的字符串internal static string UnprotectData(string ps_Data)byte pbtarr_dataIn = Convert.FromBase64String(ps_Data);byte pbtarr_dataOut = UnprotectData(pbtarr_dataIn);string ps_Out = null;if(null != pbtarr_dataOut)ps_Out = Encoding.Unicode.GetString(pbtarr_dataOut);return ps_Out;系统自动生成的函数,可以不填写注释:private void btnSubmit_Click(object sender, System.EventArgs e)2.3.2. 模块注释规范模块开始必须以以下形式书写模块注释:/模块编号:/作用:/作者:/编写日期:/如果模块有修改,则每次修改必须添加以下注释:/Log编号:/修改描述:/作者:/编写日期:/其中,作者或修改者姓名必须是完整的中文姓名,不得是英文名或中文简称。例如:/ / 作用:公司信息修改/ 作者:丁小军/ 日期:2004-4-20/ / 修改1/ 作用:添加*功能/ 作者:丁小军/ 日期:2004-4-20/ / 修改2/ 作用:修改*功能/ 作者:丁小军/ 日期:2004-4-20/ public class CompanyCreateEdit : System.Web.UI.Page#region 修改一/ / 添加*功能/ private void Edit()#endregionprivate void btnOK(object sender, System.EventArgs e)#region 修改一/EditOld(); /这里是删除的旧代码Edit();#endregion#region 修改二Fix();#endregion在代码修改的地方加#region 和 #endregion,删除旧代码时不要彻底删除,做注释。2.3.3. 类属性注释规范在类的属性必须以以下格式编写属性注释:/ /属性说明/ 2.3.4. 方法注释规范在类的方法声明前必须以以下格式编写注释/ / 说明:/ 扩展说明:/ / param name=/ / 2.3.5. 代码间注释规范代码间注释分为单行注释和多行注释:单行注释:/多行注释:/*这是多行注释1这是多行注释2这是多行注释3*/代码中遇到语句块时必须添加注释(if,for,foreach,),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。2.4. 变量命名规范程序中变量名称 = 变量的级别前缀 + 变量类型缩写 + ”_” +代表变量含意的英文单词或单词缩写。其中:为了能很容易识别变量的应用范围,在变量的前缀中将带有此变量的应用范围的标识。如果一个变量是类模块级的变量,则此变量的级别前缀为小写字母”m”(module的首字母),否则为过程级的变量,其级别前缀为小写字母”p” (process的首字母)。在定义变量时,也不能使用.NET中使用的关键字或与关键很相近的英文单词。下列单词已是.NET的关键字。abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed flo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物流管理师综合能力考试试题及答案解析
- 中国叙事学考试题及答案
- 中级钳工考试题及答案
- 2026届天津市北仓第二中学英语九上期末综合测试试题含解析
- 2025年网红经纪人资格认证考试试题详解
- 2月急诊医学知识试题库与参考答案
- 2025年团建活动策划师素质评估试题及答案解析
- 专升本普通心理学模拟试题与参考答案解析
- 2025年山东省菏泽市中考地理试题【含答案、解析】
- 装卸用工合同3篇
- 超星尔雅学习通《趣修经济学微观篇》章节测试及答案
- 化脓性扁桃体炎
- DB3502∕T 090-2022 居家养老紧急事件应急助援规范
- 腰椎间盘突出症护理查房课件
- 2024口腔医学专业考核标准
- 大型群众性活动安全许可申请表
- 小学数学人教版-六年级上-第一单元-分数乘法-教材分析
- 百融云创风险决策引擎V5产品操作手册
- DL∕T 1281-2013 燃煤电厂固体废物贮存处置场污染控制技术规范
- DZ∕T 0033-2020 固体矿产地质勘查报告编写规范(正式版)
- 家庭健康指导员培训方案及流程
评论
0/150
提交评论