1、第5章系统设计SystemDesign,2,章节结构,5.1系统设计概述5.2信息系统设计策略-结构图5.3系统设计的原则5.4系统设计的策略5.5编码设计5.6数据库设计5.7输入/输出及人机界面设计5.8系统设计说明书5.9系统设计实例,3,5.6编码设计(代码设计),代码是用来表征客观事物的一个或一组有序的符号,它应易于计算机和人识别与处理。编码就是用字母、数字或其组合来代表事物。代码的作用:鉴别功能标识分类对象信息代码化,便于计算机进行识别、分类、排序和统计利用代码可以节省计算机的存储空间,提高运算速度利用代码可以提高系统的可靠性,4,5.6.1代码的种类,代码,非含义码,含义码,有序
2、码,随机码,校验码,对照码,缩略码,助记码,缩略码,字母顺序码,区间码,年代码,层次码,十进制码,特征码,P218图5.35代码的种类,5,1.有序码(顺序码),将顺序的自然数或字母赋予分类对象。有序码例:人的性别代码(GB2261-80)1-男2-女各系代码等等,6,代码的表示形式(编码方式),(1)数字顺序编码(2)数字分组顺序编码(3)字符编码(4)组合编码,7,(1)数字顺序编码,这是最简单的编码形式,一般适用于被编码对象数目较少的情况。例如,某企业管理信息系统中,对6个物资仓库的编码可采用如下的数字顺序码。,8,(2)数字分组顺序编码,当编码对象具有两层(或以上)的分类时,可采用数字
4、一步分为层次码、十进制码、特征码。,12,(1)区间码之层次码,按分类对象的从属层次关系作为排列顺序的一种代码。国民经济行业分类和代码(GB4754-84)采用三层的层次码。三层分别代表大类、中类、小类。,13,(2)区间码之十进制码,十进制码中每一位数字代表一类,一般用于图书分类。500自然科学510数学520天文学620工程和技术科学621机械和电气工程621.1蒸汽动力工程621.2水利机械,14,(3)区间码之特征码,在码的结构中,为多个属性各规定一个位置,从而表示某一编码对象的不同方面特征。,如某一男装的编码为M38-2W1。,15,3.助记码,用可以帮助记忆的字母或数字来表示编码对
5、象,将编码对象的名称、规格等作为代码的一部分。TV-B-12TV-C-2020寸彩色电视机,16,4.缩略码,把人们习惯使用的缩写字直接用于代码,是助记码的特例。Cm、Kg等,17,5.校验码及其生成过程、代码校验方法,校验码=校验位自检码=原代码(代码本体)+校验码校验码的一种生成过程:对原代码的每一位加权求和设原代码为C1C2Cn,权因子为P1P2Pn,加权求得:S=C1P1+C2P2+CnPn权因子可以取自然数1,2,3,几何级数2,4,8,16,32,质数2,3,5,7,11、等。,18,校验码的生成过程,用加权和除以模得余数R=SmodM其中,R表示余数,M表示模数,可取M=10,1
6、1等。模减去余数或者直接取余数得校验码,附加在原代码后。Cn+1=M-R或R,19,校验码的生成过程例,原代码:123456权因子:173173模:10加权和:S=11+2733415763=81余数:R=81mod10=1校验码:10-1=9自检码:1234569,自检码=原代码(代码本体)+校验码,20,习题1:计算校验码,原代码:12345权因子:65432模:11加权和:S=16+25344352=50余数:R=50mod11=6校验码:11-6=5自检码:123455,21,习题2:计算18位身份证号的校验码,老的身份证号是15位,新的身份证号为18位。关于身份证第18位是怎么计算的
7、,原理如下:根据国家标准GB11643-1999中有关公民身份号码的规定,公民身份号码是特征组合码,由17位数字本体码和1个数字校验码组成。排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码和1位数字校验码。地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。,22,计算18位身份证号的校验码(续1),生日期码编码对象出生的年、月、日,其中年份用4位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。顺序码为同一地址码所标识的区域范围内,对同年同月同日出生的人员编定的顺序号。其中第17位奇数分给男性,偶数分给女性。校验码(
8、第18位)是根据前面17位数字码,按照ISO7064:1983.MOD11-2计算出来的。,23,计算18位身份证号的校验码(续2),第18位数字的计算方法为:原代码:身份证号前17位。权因子:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2模:11加权和:身份证号前17位数字和对应权因子相乘再求和S余数:R=Smod11,R只可能有0-1-2-3-4-5-6-7-8-9-10这11个取值校验码:按规定(ISO7064:1983.MOD11-2)不同R对应校验码取值分别为1-0-X-9-8-7-6-5-4-3-2,(直接取余数得校验码),24,计算18位身份证号的校验码(
9、续3),可见若余数是2,就会在身份证末位出现罗马数字的X。若余数是10,身份证的最后一位号码就是2。试计算自己的身份证校验码是否与实际情况相符。,25,用校验码检查代码的过程,使用校验码是输入设计环节的输入校验方式之一,是前述校验码生成过程的逆向过程。当自检码C1C2CnCn+1(其中Cn+1为校验码)输入计算机后,对C1C2Cn分别乘以原来的权,Cn+1乘以1,把它们相加后所得的和除以模。若余数为0,则该代码一般来说是正确的,否则输入有错。(原代码与权乘积之和校验码)模整数,26,用校验码检查代码例,设输入的代码(含校验码)为55787,其中7为校验值,对每一位乘以它的原来的权1234,校验
10、位乘的权为1。用所得的加权和被模9除,若余数为零,则代码一般是正确的,否则就是输入有错。上述代码显然有错,因为其加权和除以模的余数不为零。75/9=8.3,27,不一般的情况,原编码:1234569(正)或2415569(误)权因子:173173模:10余数:90/10=9.0100/10=10.0结论:本例两种编码检验结果均为0,检验失效。,28,用校验码检查组合编码的处理方法,一般情况下,校验码是对数字代码进行检验。在使用校验码对组合编码进行检查时,将AZ跟随09顺序变为:A=10B=11Z=35,*为摆动的等差级数:权从1、2、3递增到低于模的一半,然后再从模减1,递减至高于模的一半;按
11、此规律进行重复。例如:模是11,则权为1、2、3、4、5、10、9、8、7、6、1、2、3、.,不同权和模的检错率(检错效率),30,不同权和模的检错率(检错效率),31,5.6.2编码设计的原则,唯一性通过编码可唯一地确定编码对象,这是编码在数据管理中最基本的作用。合理性代码结构应与相应的分类体系相对应。可扩充性和稳定性应留有充分的余地,以备将来不断扩充的需要。简单性代码结构尽量简单,并注意避免形似符号。,32,编码设计的原则(续1),适用性代码尽可能反映对象的特点,以帮助记忆,便于填写。规范性国家有关编码标准是代码设计的重要依据,已有的标准必须遵循。在一个代码体系中,代码结构、类型、编写格