1、1,知识回顾-系统开发的生命周期,2,知识回顾,系统设计的内容 系统总体结构框架设计、代码设计、数据库设计、输入/输出设计等。,3,4,5,系统详细设计-代码设计,(一)代码的定义 人为确定的代表客观事物名称、属性、状态的由数字或字符等表示的符号或符号组合。,6,代码及其作用,(1)代码代码是代表事物名称、属性、状态等的符号,为了便于计算机处理,一般用数字、字母或它们的组合来表示。由于代码的编制需要仔细调查和多方协调,是一项很费事的工作,需要经过一段时间。在手工处理系统中,许多数据如零件号、设备号、图号等早已使用代码。,7,(2)代码的作用(功能)为事物提供一个概要而不含糊的认定,便于数据的存
2、储和检索。代码缩短了事物的名称,无论是记录、记忆还是存储,都可以节省时间和空间。使用代码可以提高处理的效率和精度。按代码对事物进行排序、累计或按某种规定算法进行统计分析,可以十分迅速。提高了数据的全局一致性。这样,对同一事物,即使在不同场合有不同的叫法,都可以通过编码统一起来,提高了系统的整体性,减少了因数据不一致而造成的错误。是人和计算机的共同语言,是两者交换信息的工具。,8,代码设计的原则,(1)唯一化唯一化是代码设计的首要任务。(2)规范化我们在唯一化的前提下还要强调编码的规范化。(3)系统化现代化企业的编码系统已由简单的结构发展成为十分复杂的系统。系统所用的代码尽量标准化,以方便数据交
3、换和共享。,9,代码设计的注意事项:设计的代码在逻辑上必须能满足用户的需要,在结构上能与处理的方法相一致; 例如,在设计用于统计的代码时,为了提高处理速度,往往使之能够在不需调出有关数据文件的情况下,直接根据代码的结构进行统计。可扩充且容易修改;要注意避免引起误解,不要使用易于混淆的字符;如0、z、I、S、V与0、2、1、5、U易混;不要把空格作代码;要使用24小时制表示时间等要注意尽量采用不易出错的代码结构; 例如字母字母数字的结构(如WW2)比字母数字字母的结构(如W2W)发生错误的机会要少一些。,10,当代码长于4个字母或5个数字字符时,应分成小段,这样人们读写时不易发生错误; 例如72
4、64996135比7264996135易于记忆,并能更精确地记录下来。若已知代码的位数为p,每一位上可用字符数为Si,则可以组成码的总数为C=Si。 例如某市普通居民的电话号码为7位,均以0到9阿拉伯数字表示。其中首位不能用0、1和9,则该市可安装普通居民电话的最大理论容量为: C=10*10*10*10*10*10*7=7000000,11,代码的种类,1.顺序码2.区间码3.助忆码(1)顺序码又称系列码,它是一种用连续数字代表编码对象的码。如下表的企业职工的顺序码:,12,例:一个企业职工代码的设计0001 张三0002 张四00010050为一车间人员0051 张五0052 张六0050
5、0100为二车间人员,顺序码的优点:短而简单,记录的定位方法简单,易于管理。顺序码的缺点:没有逻辑基础,本身不能说明任何信息的特征。新加的代码只能列在最后,删除则造成空码。,13,(2) 区间码,区间码把数据项分成若干组,每一区间代表一个组,码中数字的值和位置都代表一定意义。邮政编码就是典型的区间码。区间码的优点:信息处理比较可靠,排序、分类、检索等操作易于进行。区间码的缺点:码的长度与它分类属性的数量有关,有时可能造成很长的码。在许多情况下,码有多余的数。码的维修比较困难。如下表是某企业的用户分类代码。码21代表该用户为采购总量小于9999元的零售单位。区间码类型,14,某企业的用户分类代码
6、,15,区间码又可分为以下各种类型:多面码一个数据项可能具有多方面的特性。如果在码的结构中,为这些特性各规定一个位置,就形成多面码。例如,对于机制螺钉,可作如下表那样的规定。代码2342 表示材料为黄铜的1.5mm方形头镀铬螺钉。,16,上下关联区间码上下关联区间码由几个意义上相互有关的区间码组成,其结构一般由左向右排列。 例如,会计核算方面,用最左位代表核算种类(资产、负债、成本、所有者权益、损益及余额方向),下一位代表会计核算项目。,17,十进位码此法相当于图书分类中沿用已久的十进位分类码,它是由上下关联区间码发展而成的。如610.736,小数点左边的数字组合代表主要分类,小数点右边的指出
7、子分类。子分类划分虽然很方便,但所占位数长短不齐,不适于计算机处理。显然,只要把代码的位数固定下来,仍可利用计算机处理。,18,(3)助忆码,助忆码:用文字、数字或文字数字结合起来描述。 (表示产品的规格、型号)特点: 可以通过联想帮助记忆。例如,用TV-B-12代表12英时黑白电视机,用TV-C-20代表20英时彩色电视机。又如在开发一个商业经贸性公司的信息系统时,在数据库中需要分别存储商品的进、存、销3个环节的价格、成本、资金占用等信息。为了区别起见,这时我们可以规定:字段的前两位分别用J-,C-,X-来表示进、存、销,用后5位数来代表价格、成本、费用、资金占用等等。例如J-price表示
8、进价。这就是一个典型的纯字条符码。,19,代码的校验,(1)录入代码时的可能错误:识别错误:1/7,0/O,Z/2,D/O,S/5,易位错误:12345/13245,双易位错误:12345/13254,随机错误:上述两种或两种以上的错误出现,20,(2)避免代码录入出现错误的办法 在设计好的代码后,再增加一位,作为代码的组成部分。增加的一位,即为校验位。使用中,没有特别性。 使用时,应录入包括校验位在内的完整代码,代码进入系统后,系统将取该代码校验位前的各位,按照确定代码校验位的算法进行计算,并与录入代码的最后一位(校验位)进行比较,如果相等,则录入代码正确,否则录入代码错误,进行重新录入。,
9、21,(3)确定校验位值的方法,算术级数法举例:校验位的确定原设计的一组代码为五位,如32456,确定权数为7,6,5,4,3。求代码每一位Ci与其对应的权数Pi的乘积之和S, S=C1*P1+C2*P2+Ci*Pi(i=1,2,n) =3*7+2*6+4*5+5*4+6*3 =21+12+20+20+18=91确定模M(一般介于5到12之间),M=11取余R,R = S MOD M = 91 MOD 11 = 3校验位Ci+1 = R = 3最终代码为: C1 C2 C3 C4CiCi+1 ,即324563使用时为:324563,22,几何级数法几何级数法权为几何级数(等比级数)。原编码 1
10、 2 3 4 各乘以权 16 8 4 2乘积之和 16+16+12+852以11为模去除乘积之和,把得出的余数作为校验码:521148因此编码为 12348。,23,质数法质数法权为质数。原编码 1 2 3 4各乘以权 13 7 5 3乘积之和 13+14+15+12=54以11为模去除乘积之和,把得出余数作为校验码:5411410因此编码为 12340。注意:以11为模时,若余数是10,则校验码取0。,24,身份证号码的规则设计,概述18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999公民身份号码中做了明确的规定。 GB11643-1999公民身份号码为GB
11、11643-1989社会保障号码的修订版,其中指出将原标准名称社会保障号码更名为公民身份号码,另外GB11643-1999公民身份号码从实施之日起代替GB11643-1989。GB11643-1999公民身份号码主要内容如下:一、范围该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。二、编码对象公民身份号码的编码对象是具有中华人民共和国国籍的公民。,25,区间码把数据项分成若干组,每一 区间代表一个组,码中数字的值和位置都代表一定意义。,26,身份证号码的规则设计,概述三、号码的结构和表示形式1、号码的结构公民身份号码是特征组合码,由十七位
12、数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。2、地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。3、出生日期码表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。4、顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。5、校验码,27,身份证号码的规则设计,设计方法(1)十七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, . , 16 ,先对前
13、17位数字的权求和Ai:表示第i位置上的身份证号码数字值Wi:表示第i位置上的加权因子,由2(n-1)mod 11得来。其中n表示身份证每一个数字所在位置,最左边是第18位,即n=18,最右边是第2位,n2。Mod表示求余数。对应得到的Wi如下:Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)计算模Y = mod(S, 11)(3)通过模得到对应的校验码Y: 0 1 2 3 4 5 6 7 8 9 10校验码: 1 0 X 9 8 7 6 5 4 3 2,28,(四)代码设计方法 1、线分类法:也称层级分类法,是指将分类对象按所选定的若干分类标志,逐次地分
14、成相应的若干个层级类目,并排列成一个有层次、逐级展开的分类体系。 线分类法的一般表现形式是大类、中类、小类和细目等,将分类对象一层一层地进行具体划分,同位类的类目之间存在着并列关系,上位类与下位类之间存在着隶属关系。,29,线分类法,线分类法结构图,30,线分类法实例:,31,1、线分类法特点: (1)信息容量大,层次清楚,逻辑性强,符合传统应用的习惯 (2)既适用于手工操作,又便于计算机处理; (3)结构不灵活,柔性差;,32,(四)代码设计方法,2、面分类法: 又称平行分类法,是指将所选定的分类对象的若干标志视为若干个面,每个面划分为彼此独立的若干个类目,排列成一个由若干个面构成的平行分类
15、体系。 面分类法分类时所选用的标志之间没有隶属关系,每个标志层面都包含着一组类目。,33,面分类法结构,34,实例1,35,实例2:服装的面分类法,36,2、面分类法特点: (1)不易识别和记忆; (2)可实现任意组配面的信息检索,适合机器处理; (3)柔性好,面的增加、删除、修改容易;,注:线分类法和面分类法最明显的区别是线分类法中 的属性具有层次性,不是独立的;面分类法中的 属性不具有层次性,是独立的。,37,在实际应用时常采用以线分类法为主,面分类法为辅、二者相结合的分类法。我国在编制全国工农业产品(商品、物质)分类与代码国家标准时。采用的是线分类法和面分类法相结合,以线分类法为主的综合分类法。,