社会保障卡文件结构和数据项(V2.0) .doc

社会保障卡文件结构和数据项(V2.0) .doc
社会保障卡文件结构和数据项(V2.0) .doc

谢谢观赏

谢谢观赏社会保障卡文件结构和数据项(V2.0)

引言

本规范是《社会保障(个人)卡规范》(LB002-2000)中关于应用文件结构和数据项部分的升级,包括以下主要内容:

——社会保障卡应用的文件结构和数据项。其中包括DDF,ADF和EF的内部属性,访问控制等信息。

1 适用范围

本规范适用于人力资源和社会保障领域面向社会公众发行的社会保障卡。其使用对象主要是与社会保障卡应用相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等组织机构。

2 参考标准

GB/T 16649.5-2002 识别卡带触点的集成电路卡第5部分:应用标识符的国家编

号体系和注册规程

3 定义

以下定义适用于本规范。

3.1 命令(Command)

终端向IC卡发出的一条信息,该信息启动一个操作或请求一个应答。

3.2 响应(Response)

IC卡处理完成收到的命令报文后,回送给终端的报文。

3.3 交易(Transaction)

持卡者和业务、管理部门之间根据社会保障卡所支持的应用接受、提供服务的行为。

3.4 集成电路卡(IC卡)(Integrated Circuit(s) Card)

内部封装一个或多个集成电路的ID-1型卡(如ISO/IEC 7810、ISO/IEC 7811第1至第5部分、ISO/IEC 7812和ISO/IEC 7813中描述的)。

3.5 报文(Message)

由终端向卡或卡向终端发出的,不含传输控制字符的字节串。

3.6 报文鉴别代码(Message Authentication Code)

对交易数据及其相关参数进行运算后产生的代码。主要用于验证报文的完整性。

3.7 密钥(Key)

控制加密转换操作的符号序列。

3.8 社会保障应用(Social Security Application)

在人力资源和社会保障各专业领域管理和服务工作中的社会保障卡应用总称。广义的社会保障应用可以包括有关生命与健康、社会救助与优待抚恤等方面的应用。

3.9 专业应用(Speciality Application)

由人力资源和社会保障各业务管理部门提供并维护的社会保障卡应用,例如就业与失业应用。

3.10 就业与失业应用(Employment and Unemployment Application)

一种为持卡人在人力资源和社会保障部门(以下简称人力资源社会保障部门)办理求职、就业登记或失业登记等事务而设计的社会保障卡应用。

3.11 社会保险应用1(Social Insurance Application 1)

在本规范中将除医疗保险应用以外的各项社会保险应用统称为“社会保险应用1”,即为持卡人在人力资源社会保障部门办理养老保险、失业保险、工伤保险、生育保险等事务而设计的社会保障卡应用。

3.12 社会保险应用2(Social Insurance Application 2)

在本规范中将社会保险中的与医疗保险事务有关的应用单独称为“社会保险应用2”,即一种为持卡人享受医疗保险待遇,办理相关就医手续等事务而设计的社会保障卡应用。

3.13 人事人才应用(Personnel Application)

一种为持卡人在人力资源社会保障部门办理人才管理及服务、军队转业干部安置等事务而设计的社会保障卡应用。

3.14 账户划入(Wipe In Account)

将持卡人基本医疗保险个人账户上尚未写入卡内的资金额度写到卡内基本医疗保险个人账户中。

3.15 医疗消费(Medical Treatment Consume)

指持卡人就医、取药等与医疗有关的消费。

3.16 医保结算(Medical insurance settlement)

指持卡人在医疗消费中与医保(含医疗保险、工伤医疗、生育医疗、医疗救助等)有关的费用结算。从资金来源上划分,包括账户支付、现金支付、统筹基金支付等。

3.17 账户支付(Account Payment)

指持卡人从卡内基本医疗保险个人账户中支付医疗费用。

3.18 个人自付(Individual Payment)

指持卡人在医疗消费中,属于基本医疗保险统筹基金支付范围内的个人自付部分,包括现金支付和利用基本医疗保险个人账户支付的金额。

—2 —

谢谢观赏

3.19 统筹基金支付(Social-pooling Fund Payment)

指持卡人在医疗消费中,基本医疗保险统筹基金支付的金额。

4 缩略语和符号表示

以下缩略语和符号表示适用于本规范。

AID 应用标识符(Application Identifier)

CIA 卡内医疗保险个人账户(Individual Account for Medical Treatment on Card ) DDF 目录定义文件(Directory Definition File)

DF 专用文件(Dedicated File)

EF 基本文件(Elementary File)

FCI 文件控制信息(File Control Information)

ISO 国际标准化组织(International Organization for Standardization)

MAC 报文鉴别代码(Message Authentication Code)

MF 主控文件(Master File)

PIN 个人密码(Personal Identification Number)

RID 已注册的应用提供者标识(Registered Application Provider Identifier)

SSSE 社会保障系统环境(Social Security System Environment)

TAC 交易验证码(Transaction Authorization Cryptogram)

‘0’-‘9’ ‘A’-‘F’ 十六进制数字

xx 任意值

5 社会保障应用

社会保障卡应用可以同时支持本规范规定的所有专业应用,也可以只支持其中的某几项。

本规范适用于就业与失业、社会保险、人事人才应用。生命与健康、社会救助与优待抚恤应用参照本规范附录B。

本规范支持医疗保险采用联网处理、脱网处理和联网模式下临时脱网结算三种方式。

本规范定义三类文件,分别为启用文件、预设文件和预留文件。其中:

启用文件——预先定义,并实际启用;

预设文件——预先定义,但暂不启用,启用时间视业务需求而定;

预留文件——预留好位置、大小等要素,不对文件进行定义,待有新应用需求时再行定义和启用。

本规范准许发卡方在上述应用的基础上扩充其他应用。

卡内应用的扩充规则,见本规范第6部分。

5.1 标识符和标签

社会保障系统环境SSSE的应用标识符如下表所示。

表1社会保障系统环境SSSE的应用标识符

谢谢观赏

DDF 应用标识符内容应用标识符

SSSE sx1.sh.社会保障7378312E73682EC9E7BBE1B1A3D5CF

社会保障应用各个具体应用的标识符(AID)必须采用由国家IC卡注册中心颁发的RID,并通过RID选择该应用;对尚未获得RID的应用(如本规范附录B中定义的应用)则采用规定的应用标签,并通过应用标签选择该应用。

下表规定了社会保障应用的应用标识符、应用标签和应用标识符维护单位。其中,带“△”的应用为在《社会保障(个人)卡规范》(LB002-2000)(以下简称“LB002-2000”)基础上扩充的应用。

表2社会保障应用的应用标识符和应用标签

应用名称应用标识符应用标签应用标识符维护单位

公共应用D1 56 00 00 05 00 公共应用信息区人力资源和社会保障部信息中心就业与失业D1 56 00 00 05 01 就业与失业信息区人力资源和社会保障部信息中心社会保险1 D1 56 00 00 05 02 社会保险信息区1 人力资源和社会保障部信息中心社会保险2 D1 56 00 00 05 03 社会保险信息区2 人力资源和社会保障部信息中心人事与人才△D1 56 00 00 05 04 人事人才信息区人力资源和社会保障部信息中心

5.2 基本应用数据区

基本应用数据是指那些在社会保障卡的整个生命周期中不会改变的信息,该区内包括发卡机构数据文件(‘EF05’)、持卡人的基本信息文件(‘EF06’)、指纹数据文件(‘EF07’)和照片信息文件(‘EF08’)四个文件,它们被组织成基本文件存在于SSSE的DDF下。其中,带“※”的文件为在“LB002-2000”基础上扩充的文件。

表3 基本应用数据区文件特性

文件定义

文件

标识符

短文件

标识符

读控制写控制文件结构类别

发卡机构数据文件‘EF05’‘05’无UK SSSE变长记录启用持卡人的基本信息

文件

‘EF06’‘06’无UK SSSE变长记录启用指纹数据文件‘EF07’‘07’RK SSSE UK SSSE透明预设照片信息文件※‘EF08’‘08’RK SSSE UK SSSE透明预设5.3 公共应用数据区

公共应用数据是指社会保障卡中由不同的应用提供方分别维护,但各种专业应用都需要使用的信息,包括持卡人的户籍信息文件(‘EF05’)、常住地信息文件(‘EF06’)、个人状况信息文件(‘EF07’)、婚姻状况信息文件(‘EF08’)、人员身份及就业单位信息文件(‘EF09’)、国籍及政治面貌信息文件(‘EF0A’)、学历信息文件(‘EF15’)及5个预留文件(’EF16-1A’),它们被组织成基本文件存在于标识符为’DF01’的DF下。

表4 公共应用数据区文件特性

—4 —

谢谢观赏

谢谢观赏

文件定义 文件 标识符 短文件 标识符 读控制 写控制 文件结构 类别 户籍信息文件 ‘EF05’ ‘05’ PIN 或RK1 DF01 UK1 DF01 变长记录 启用 常住地信息文件 ‘EF06’ ‘06’ PIN 或RK1 DF01 UK4 DF01 变长记录 启用 个人状况信息文件 ‘EF07’ ‘07’ PIN 或RK1 DF01 UK2 DF01 变长记录 启用 婚姻状况信息文件 ‘EF08’ ‘08’ PIN 或RK1 DF01 UK3 DF01 变长记录 启用 人员身份及就业单位信息文件 ‘EF09’ ‘09’ PIN 或RK1 DF01 UK2 DF01 变长记录 启用 国籍及政治面貌信息文件※ ‘EF0A’ ‘0A’ PIN 或RK1 DF01

UK5DF01

变长记录 启用 学历信息文件 ‘EF15’ ‘15’ PIN 或RK1 DF01 UK6DF01

变长记录 启用 预留信息文件1※ ‘EF16’ ‘16’ 无 UK7DF01 透明 预留 预留信息文件2※ ‘EF17’ ‘17’ 无 UK8DF01 透明 预留 预留信息文件3※ ‘EF18 ‘18’ 无 UK9DF01 透明 预留 预留信息文件4※ ‘EF19 ‘19’ 无 UKA DF01 透明 预留 预留信息文件5※

‘EF1A ’

‘1A ’

UKB DF01

透明

预留

5.4 就业与失业数据区

就业与失业应用数据是指社会保障卡中由人力资源社会保障部门维护,记录持卡人就业、失业等情况的信息,包括持卡人的职业和专业技能信息文件(‘EF05’)、就业状况信息文件(‘EF06’)、就业记录信息文件(‘EF07’)、就业失业登记证信息文件('EF09')、就业援助对象认定信息文件(‘EF15’)、就业扶持政策享受信息文件(‘EF16’),它们被组织成基本文件存在于标志符为‘DF02’的DF 下。

表5 就业与失业数据区文件特性

文件定义 文件标志符 短文件 标志符 读控制 写控制 文件结构 类别 职业和专业技能信息文件

‘EF05’ ‘05’ PIN 或RK1DF02 UK1 DF02 变长记录 预设 就业状况信息文件 ‘EF06’ ‘06’ PIN 或RK1DF02 UK2 DF02 变长记录 启用 就业记录信息文件 ‘EF07’ ‘07’ PIN 或RK1DF02 UK3 DF02 循环 启用 就业失业登记证信息文件※ ‘EF09’ ‘09’ PIN 或RK1DF02 UK4 DF02 变长记录 启用 就业援助对象认定信息文件※ ‘EF15’ ‘15’ PIN 或RK1DF02 UK5 DF02 变长记录 启用 就业扶持政策享受信息文件※

‘EF16’

‘16’

PIN 或RK1DF02

UK6DF02

循环

启用

5.5 社会保险数据区1

社会保险数据区1中的应用数据是指社会保障卡中由人力资源社会保障部门维护,记录持卡人除医疗保险以外的各项社会保险的信息,包括失业保险信息文件(‘EF 05’)、劳动能力鉴定信息文件(‘EF 06’)、养老保险信息文件(‘EF 07’)、工伤保险信息文件(‘EF 15’)、生育保险信息文件(’EF16’)、工伤认定信息文件(’EF17’)、供养亲属信息文件(’EF18’)、参保凭证信息文件(‘EF19’),它们被组织成基本文件存在于标识符为‘DF 03’的DF 下。

表6社会保险数据区1文件特性

文件定义

文件

标识符

短文件

标识符

读控制写控制文件结构类别

失业保险信息文件‘EF 05’‘05’PIN或RK2DF03UK1DF03变长记录启用劳动能力鉴定信息

文件

‘EF 06’‘06’PIN或RK1DF03UK2DF03变长记录启用养老保险信息文件‘EF 07’‘07’PIN 或RK1DF03UK3DF03变长记录启用工伤保险信息文件

‘EF 15’‘15’PIN或RK1DF03UK4DF03变长记录启用生育保险信息文件

‘EF 16’‘16’PIN或RK1DF03UK5DF03变长记录启用工伤认定信息文件

‘EF 17’‘17’PIN或RK1DF03UK6DF03变长记录启用供养亲属信息文件

‘EF 18’‘18’PIN或RK1DF03UK7DF03变长记录启用参保凭证信息文件

‘EF 19’‘19’PIN或RK1DF03UK8DF03定长记录启用5.6 社会保险数据区2

社会保险数据区2中的应用数据是指社会保障卡中由医疗保险管理部门维护,记录持卡人医疗保险有关情况的信息。包括医疗保险基本信息文件(‘EF 05’)、医疗保险临时脱网结算信息文件(‘EF 06’)、医疗交易明细文件(‘EF 08’)、特殊医疗结算记录文件(‘EF15’)。它们被组织成基本文件存在于标识符为‘DF 04’的DF下。

医疗保险应用脱网处理方式下还应存在一个文件:医疗保险金额文件(COS内部操作文件)。

表7社会保险数据区2文件特性

文件定义

文件

标识符

短文件

标识符

读控制写控制文件结构类别

医疗保险基本信息

文件

‘EF 05’‘05’PIN或RK1DF04UK1DF04变长记录启用医疗保险临时脱网

结算信息文件※

‘EF 06’‘06’PIN & RK1DF04UK2DF04变长记录启用

医疗交易明细文件‘EF 08’‘08’PIN 不允许

改写

循环启用

特殊医疗结算记录

文件※

‘EF15’‘15’PIN或RK1DF04UK2DF04循环启用5.7 人事与人才应用数据区

人事与人才应用数据是指社会保障卡中由不同的应用提供方分别维护,但各种专业应用都需要使用的人事人才信息,包括荣誉信息文件(‘EF05’)、专家信息文件(‘EF06’)、军队转业干部信息文件(‘EF07’),它们被组织成基本文件存在于标识符为’DF07’的DF下。

表8 人事与人才应用数据区文件特性

—6 —

谢谢观赏

谢谢观赏

文件定义

文件 标识符 短文件 标识符 读控制 写控制 文件结构 类别 荣誉信息文件※ ‘EF05’ ‘05’ RK1DF07 UK1 DF07 变长记录 预设 专家信息文件※ ‘EF06’ ‘06’ RK2DF07 UK2DF07 变长记录 预设 军队转业干部信息文件※ ‘EF07’

‘07’

RK3DF07

UK3 DF07

变长记录

预设

循环文件的结构应符合ISO/IEC 7816-4。对循环文件中所有数据项的修改必须考虑数据

完整性和安全要求。 6

卡内应用扩充规则

本部分给出了发卡地区在本规范的基础上扩充卡内应用时所需遵循的规则。 应用扩充包括文件的扩充和数据项的扩充。

基本原则:发卡地区在实际应用社会保障卡时,可以根据本地需求进行卡内应用的扩充或不扩充。本规范中已经规定的DF 文件标识符、EF 文件标识符、EF 文件内的数据项标志不允许更改、占用。发卡地区对于所选择的应用和数据项必须采用规范规定的标识符和标志。

DF 应用文件扩充规则:DF 文件可以扩充,扩充的DF 文件标识符从‘DF0A ’开始向后排列。

EF 基本文件扩充规则:SSSE 环境下和各DF 文件下的EF 文件可以扩充,扩充的EF 文件标识符从‘EF0C ’开始向后排列。

数据项扩充规则:SSSE 环境下各EF 文件的数据项不得再行扩充;本规范中的循环记录文件不得做数据项上的扩充,但可以做记录数上的扩充;其余各EF 文件中的数据项可以扩充。 7

社会保障应用的数据项格式

本部分详细规定了本规范所定义的各种应用数据项的格式。

在本部分中所定义的所有应用数据项的标志、长度都以十六进制值表示。 由于许多数据项的实际长度随持卡人的具体情况存在差异,当某一数据项的实际长度不足本规范所定义的长度时,对格式为cn 的数据项左靠齐并且右补十六进制’F’,格式为an 的数据项左靠齐并且右补十六进制’0’,使数据项的长度达到本规范所定义的长度。

下表给出了社会保障应用的数据项格式。其中,带“★”的数据项为在“LB002-2000”基础上扩充的数据项。

表9 数据项的格式与属性

标志 数据项

类型 长度 所属文件 备注

‘01’ 卡的识别码 cn ‘10’ SSSE ‘EF05’

‘02’ 卡的类别 an ‘01’ ‘03’ 规范版本 an ‘04’ ‘04’ 初始化机构编号 cn ‘0C’ ‘05’ 发卡日期 cn ‘04’ ‘06’ 卡有效期 cn ‘04’ ‘07’ 卡号 an ‘09’ ‘08’ 社会保障号码 an ‘12’ SSSE ‘EF06’ 当数据的长度超过

‘09’

姓名

an

‘1E’

— 8 —

标志 数据项 类型 长度 所属文件 备注 ‘4E ’ 姓名扩展★ an ‘14’ 数据项’09’的最大长度时,可以使用数据项’4E ’继续存储

‘0A’ 性别 an ‘01’ ‘0B’ 民族 cn ‘01’ ‘0C’ 出生地 cn ‘03’ ‘0D’ 出生日期 cn ‘04’ -

指纹

b

‘300’

SSSE ‘EF07’ 起始位置0000 - 数字相片★ b ‘1000’ SSSE ‘EF08’

起始位置0000

‘20’ 户口类别 an ‘02’ ‘DF01’ ‘EF05’

‘21’ 户口所在地地址

an ‘50’ ‘0E’ 户口所在地行政区划代码★ cn ‘03’ ‘23’ 常住所在地地址★ an ‘50’ ‘DF01’ ‘EF06’

‘24’ 常住所在地行政区划代码★ cn ‘03’ ‘28’ 联系电话

an ‘0F’ ‘2C’ 联系人(监护人)姓名★ an ‘32’ ’2D’ 联系人(监护人)电话★ an ‘0F’ ‘29’ 个人就业或离退休(职)状态 an ‘01’ ‘DF01’ ‘EF07’ ‘2B’ 婚姻状况

an ‘01’ ‘DF01’ ‘EF08’

'2E' 单位名称

an ‘46’ ‘DF01’ ‘EF09’

'30' 单位组织机构代码 an

‘09’

‘32’ 人员身份类别★ an ‘02’ ‘37’ 国籍★ an ‘03’ ‘DF01’ ‘EF0A’

‘38’ 政治面貌★ an ‘02’ ‘39’ 参加党派日期★ cn ‘04’ ‘2A’ 学历

cn ‘01’ ‘DF01’ ‘EF15’

‘40’ 学位信息1(见标志‘57’-‘59’) B-TLV ‘34’ ‘40’ 学位信息2(见标志‘57’-‘59’) B-TLV ‘34’ ‘40’ 学位信息3(见标志‘57’-‘59’) ★ B-TLV ‘34’ ‘57’ 学位代码 an ‘03’ ‘58’ 所学专业类别 cn ‘03’ ‘59’ 毕业学校名称

an

‘28’

- 预留信息文件1 b ‘128’ ‘DF01’ ‘EF16’ 起始位置0000 -

预留信息文件2

b

‘128’

‘DF01’ ‘EF17’

起始位置0000

谢谢观赏

谢谢观赏

标志 数据项

类型 长度 所属文件 备注 - 预留信息文件3 b ‘128’ ‘DF01’ ‘EF18’ 起始位置0000 - 预留信息文件4 b ‘128’ ‘DF01’ ‘EF19 起始位置0000 - 预留信息文件5

b ‘128’ ‘DF01’ ‘EF1A ’

起始位置0000

‘42’ 专业技术职务代码 an ‘03’ ‘DF02’ ‘EF05’

‘41’ 专业技术职务级别★

an ‘03’ ‘43’ 职业资格(工人技术等级)信息1 (见标志‘5A’-‘5E’)

B-TLV ‘6C’ ‘43’ 职业资格(工人技术等级)信息2 (见标志‘5A’-‘5E’)

B-TLV ‘6C’ ‘5A’ 职业资格(工人技术等级)名称代码

an ‘07’ ‘5B’ 职业资格(工人技术等级)等级 an ‘01’ ‘5C’ 职业资格(工人技术等级)证书发证/年检机构名称

an ‘46’ ‘5D’ 职业资格(工人技术等级)证书发证/年检日期

cn ‘04’ ‘5E’ 职业资格(工人技术等级)证书编号★

an ‘10’ ‘44’ 职业资格(专业技术人员)信息1 (见标志’33’-‘36’)★

B-TLV ‘65’ ‘44’ 职业资格(专业技术人员)信息2 (见标志’33’-‘36’)★

B-TLV ‘65’ ‘33’ 职业资格(专业技术人员)名称代码★

an ‘03’ ‘34’ 职业资格(专业技术人员)注册登记/年检机构名称★

an ‘46’ ‘35’ 职业资格(专业技术人员)注册登记/年检日期★

cn ‘04’ ‘36’ 职业资格(专业技术人员)证书编号★

an ‘10’ ‘4C’ 最近一次办理就业登记日期 cn ‘04’ ‘DF02’ ‘EF06’

‘4B’ 就业登记类型及形式★ an ‘05’ ‘4D’ 就业登记地行政区划代码★ cn ‘03’ ‘60’ 最近一次办理失业登记日期

cn ‘04’ ‘4F’ 失业登记类型、原因及注销原因★ an ‘06’ ‘50’ 失业登记地行政区划代码★ cn ‘03’ ‘3A’ 现从事职业 an ‘07’ - 就业记录 - ‘55’ ‘DF02 ’ ‘EF07’ 循环文件,至少4条

-

从事职业

an

‘07’

— 10 —

标志 数据项 类型 长度 所属文件 备注 - 就业起始日期 cn ‘04’ 记录

- 就业终止日期 cn ‘04’ - 就业工作单位名称 an ‘46’ ‘55’ 就业失业登记证编号★ an ‘10’ ‘DF02’ ‘EF09’

‘56’ 就业失业登记证发证机构★

an ‘46’ ‘96’ 就业失业登记证发证/年检日期★ cn ‘04’ ‘97’ 就业失业登记证发证地行政区划代码★

cn ‘03’ ‘99’ 就业援助对象认定信息1 (见标志‘10’ - ‘12’) ★ B-TLV ‘10’ ‘DF02’ ‘EF15’

‘99’ 就业援助对象认定信息2 (见标志‘10’ - ‘12’) ★ B-TLV ‘10’ ‘99’ 就业援助对象认定信息3 (见标志‘10’ - ‘12’) ★ B-TLV ‘10’ ‘99’ 就业援助对象认定信息4 (见标志‘10’ - ‘12’) ★ B-TLV ‘10’ ‘10’ 认定为就业援助对象类型★ an ‘03’ ‘11’ 就业援助认定日期★

cn ‘04’ ‘12’ 就业援助认定地行政区划代码★ cn ‘03’ ‘0F’ 退出就业援助对象范围的认定日期★

cn ‘04’ ‘1F’ 退出就业援助对象范围的认定地行政区划代码★

cn ‘03’ - 就业扶持政策享受信息★

- ’12’ ‘DF02’ ‘EF16’

循环文件,至少4条记录

- 享受就业扶持政策类型★ an ‘03’ - 享受就业扶持政策核准日期★ cn ‘04’ - 就业扶持政策享受开始日期★ cn ‘04’ - 就业扶持政策享受终止日期★ cn ‘04’ - 就业扶持政策享受地行政区划代码★

cn ‘03’ ‘61’ 失业保险参保地所属行政区划代码★

cn ‘03’ ‘DF03’ ‘EF05’

‘60’ 最近一次办理失业登记日期 cn ‘04’ ‘98’ 最近一次失业保险金申领日期

cn ‘04’ ‘62’ 失业保险金申领报到日期/信息更新日期

cn ‘04’ ‘63’ 失业保险累计缴费年限 an ‘03’ ‘64’ 失业保险有效缴费年限 an ‘03’ ‘65’ 应领取失业保险金月数 an ‘03’ ‘66’ 已领取失业保险金月数 an ‘03’ ‘45’ 劳动能力鉴定编号★ an ‘14’ ‘DF03’ ‘EF06’

‘46’

申请鉴定事项代码★

an

‘02’

谢谢观赏

谢谢观赏

标志 数据项

类型 长度 所属文件 备注

‘47’ 伤残等级★

an ‘02’ ‘48’ 生活自理障碍等级★ an ‘01’ ‘49’ 丧失劳动能力鉴定结论★ an ‘01’ ‘67’ 劳动能力鉴定日期 cn ‘04’ ‘6B’ 劳动能力鉴定机构名称 an ‘3C’ ‘4A’ 申请确认事项1

(见标志‘13‘—‘17‘)★ B-TLV ‘61’ ‘4A’ 申请确认事项2

(见标志‘13‘—‘17‘)★ B-TLV ‘61’ ‘4A’ 申请确认事项3

(见标志‘13‘—‘17‘)★ B-TLV ‘61’ ‘13’ 申请确认事项代码★ an ‘02’ ‘14’ 确认事项结论★ an ‘01’ ‘15’ 配置辅助器具项目名称★ an ‘14’ ‘16’ 申请劳动能力确认日期★ cn ‘04’ ‘17’ 申请劳动能力确认机构名称★ an ‘3C’ ‘70’ 养老保险险种类型★

an ‘03’ ‘DF03’ ‘EF07’

‘71’ 养老保险参保地所属行政区划代码★

cn ‘03’ ‘6E’ 基本养老保险个人账户建立日期 cn ‘04’ ‘6C’ 离退休日期 cn ‘04’ ‘6F’ 待遇享受开始日期★ cn ‘04’ ‘73’ 养老保险信息更新日期

cn ‘04’ ‘7A’ 工伤保险参保地所属行政区划代码★

cn ‘03’ ‘DF03’ ‘EF15’

‘7B’ 工伤定期待遇享受开始日期★ cn ‘04’ ‘7C’ 工伤保险信息更新日期★

cn ‘04’ ’51’ 生育保险参保地所属行政区划代码★

cn ‘03’ ‘DF03’ ‘EF16’

‘5F’ 职工未就业配偶标识★ an ‘01’ ‘3B’ 工伤认定编号★ an ‘14’ ‘DF03’ ‘EF17’

‘3C’ 用人单位名称★ an ‘46’ ‘3D’ 工伤认定结论★ an ‘01’ ‘3E’ 工伤认定日期★ cn ‘04’ ‘3F’ 工伤认定部门名称★ an ‘3C’ ‘74’ 供养险种类型★

an ‘03’ ‘DF03’ ‘EF18’

‘75’ 参保地所属行政区划代码★ cn ‘03’ ‘76’ 供养关系★

cn ‘01’ ’77’ 供养待遇享受开始日期★ cn ‘04’ ’78’ 供养亲属信息更新日期★ cn ‘04’ ’79’

养老保险参保凭证信息 (见标志‘18‘—‘1E‘)★

B-TLV

‘27’

‘DF03’ ‘EF19’

— 12 —

标志 数据项

类型 长度 所属文件 备注

’79’ 医疗保险参保凭证信息 (见标志‘18‘—‘1E‘)★ B-TLV ‘27’ ’79’ 失业保险参保凭证信息 (见标志‘18‘—‘1E‘)★ B-TLV ‘27’ ‘79’ 预留参保凭证信息

(见标志‘18‘—‘1E‘)★ B-TLV ‘27’ ‘18’ 险种类型★

an ‘03’ ‘19’ 参保地所属行政区划代码★ cn ‘03’ ‘1A’ 本地参保起始日期★ cn ‘04’ ‘1B’ 本地参保终止日期★ cn ‘04’ ‘1C’ 本地个人实际缴费金额★ cn ‘04’ ‘1D’ 本地实际缴费月数★ an ‘03’ ‘1E’ 凭证出具日期★

cn ‘04’ ‘81’ 医疗保险险种类型及标识★ an ‘08’ ‘DF04’ ‘EF05’

‘84’ 医疗保险参保地所属行政区划代码★

cn ‘03’ ‘87’ 健康档案编号★ an ‘11’ ‘8C’ 医疗保险参保人员类别 cn ‘01’ ‘80’ 基本医疗保险个人账户建立日期 cn ‘04’ ‘8B’ 基本医疗保险个人账号 an ‘1D’ ‘8A’ 医疗证号

an ‘0F’ ‘83’ 定点医疗机构代码1 an ‘09’ ‘86’ 定点医疗机构代码2 an ‘09’ ‘89’ 定点医疗机构代码3 an ‘09’ ‘7D’ 工伤协议医疗机构代码1★ an ‘09’ ‘7E’ 工伤协议医疗机构代码2★ an ‘09’ ‘7F’ 工伤协议医疗机构代码3★ an ‘09’ ‘8D’ 生育定点医疗机构代码1★ an ‘09’ ‘8E’ 生育定点医疗机构代码2★ an ‘09’ ‘8F’ 医疗保险用卡方式 an ‘01’ ‘90’ 准许脱网医保结算标识★ an ‘01’ ‘DF04’ ‘EF06’

‘92’ 脱网医保结算累计金额★ cn ‘04’ ‘93’ 脱网医保结算累计次数★ an ‘02’ - 医疗交易明细 - ‘1C’ ‘DF04’ ‘EF08’

循环文件,至少30条记录

- 交易序号 b ‘02’ - 交易类型 an ‘01’ - 终端机编号 cn ‘06’ - 交易时间 cn ‘07’ - 个人账户交易金额 b ‘04’ - 个人自付金额 b ‘04’ - 统筹基金支付金额 b ‘04’ -

特殊医疗结算记录★

-

‘03’

‘DF04’ 循环文件,

谢谢观赏

谢谢观赏

标志 数据项

类型 长度 所属文件 备注 - 交易序号★ b ‘02’ ‘EF15’

至少8条记录

- 结算类别★ an ‘01’ ‘F0’ 荣誉称号名称代码★ an ‘02’ ‘DF07’ ‘EF05’

‘F1’ 荣誉称号级别★ an ‘01’ ‘F2’ 荣誉称号批准日期★ cn ‘04’ ‘F3’ 荣誉奖章名称代码★ an ‘03’ ‘F4’ 荣誉奖章批准日期★ cn ‘04’ ‘F5’ 专家类别★ an ‘03’ ‘DF07’ ‘EF06’

‘F6’ 批准日期★ cn ‘04’ ‘F7’ 批准单位名称★ an ‘46’ ‘F8’ 批准转业日期★ cn ‘04’ ‘DF07’ ‘EF07’

‘F9’

安置方式★

an

‘01’

’DF02’’EF06’文件与’DF03’’’EF05’文件中的“最近一次办理失业登记日期” (标志’60’)两处应存在且仅存在其一。

当医疗保险用卡方式为脱网时,医疗保险金额文件是COS 内部操作文件,包含以下COS 操作内部数据元:基本医疗保险个人账户联网交易计数器(长度为2字节)、基本医疗保险个人账户脱网交易计数器(长度为2字节)、基本医疗保险个人账户余额(长度为4字节)、年度个人自付累计金额(长度为4字节)、年度统筹基金支付累计金额(长度为4字节)、支付年度(长度为2字节)和年度起始日期(长度为2字节)。 8

应用数据项的定义和表示方法

8.1 基本应用数据

8.1.1 发卡机构数据 8.1.1.1 卡的识别码

卡的识别码由卡的发行码和认证码构成。卡的发行码由卡的应用城市代码、社会保障卡应用标识符、发卡机关对卡进行初始化时给出的流水号码构成。其中卡的应用城市代码遵守GB/T2260的规定,例如上海市行政区划代码是31 00 00;社会保障卡应用标识符由国家IC 卡注册中心颁发,其值为D1 56 00 00 05。

卡的认证码由应用城市代码、社会保障卡应用标识符、卡的流水号等三组代码经加密运算取得。

卡的识别码的数据构成如下表所示:

表10 卡的识别码构成

名称 类型 长度 内容 应用城市代码 cn 3 行政区划代码 社会保障卡应用标识符

cn 5 D1 56 00 00 05

卡的流水号 cn 4 卡的认证码

cn

4

8.1.1.2 卡的类别

按不同的持卡群体,卡可区分为学龄前儿童卡、学生卡、成年人卡和老年人卡四类。本规范规定,卡的类别用一个字符的阿拉伯数字代码表示,其表示方法应符合下表的规定。

表11 卡的类别代码

代码卡的类别说明

1 学龄前儿童卡适用于6周岁以下的学龄前儿童

2 学生卡适用于全日制学校就读学生

3 成年人卡适用于16周岁以上城镇劳动力

4 老年人卡适用于70周岁以上的老年人

本规范准许发卡地区不按持卡群体区分卡的类别。对于不区分持卡群体的地区,卡的类别代码采用“3”。

8.1.1.3 规范版本

规范版本是社会保障卡的应用数据文件所执行的技术规范的版本号。版本号由版本第次和修改第次号组成,二者之间用圆点“.”相隔。2000年发布的《社会保障(个人)卡规范》(LB002-2000)为1.0版;本规范为2.0版,本规范经第1次修改的,版本号为2.01。8.1.1.4 初始化机构编号

初始化机构编号是发卡机构或由发卡机构授权对卡内数据文件进行格式化的机构的编号(即由人力资源和社会保障部统一分配的社会保障卡发行机构标识号)。初始化机构编号的组成如下表所示。

表12 初始化机构编号的组成

名称类型长度内容

社会保障卡发卡机构标识号cn 5 91 56 00 00 02

发卡地区行政区划代码cn 3 行政区划代码

初始化机构所在地行政区划代码cn 3 行政区划代码

顺序号cn 1

例:北京市社会保障卡的初始化机构为北京市人力资源社会保障局,其编号为91 56 00 00 02 11 00 00 11 01 00 02

8.1.1.5 发卡日期

发卡日期是发卡机构向社会保障卡申领人发出卡的日期,日期表示方法应符合GB/T 7408规定的完全表示方法的基本格式。

8.1.1.6 卡有效期

发卡机构针对不同年龄段人群,对其持有的卡的使用期限所作的规定。不同人群的卡的使用期限由发卡机构定义。卡有效期的日期表示方法应符合本规范8.1.1.5条的规定。

8.1.1.7 卡号

发卡机构依据一定的发卡顺序赋予IC卡的编号称为卡号。社会保障卡卡号的编码规则应符合本规范附录A的规定。

8.1.2 个人基本信息

8.1.2.1 社会保障号码

社会保障号码对中国国籍的国内居民为公民身份号码,其结构和表示形式应符合GB 11643的规定。对外国人、港澳台人员、华侨等为按人力资源和社会保障部确定的编制规则统一分配的社会保障号码。

8.1.2.2 姓名

持卡人的姓名应使用全国通用文字,本规范规定卡内存储的姓名用汉字表示,外国人使用英文字母表示,与其所持护照上的英文姓名一致。

8.1.2.3 性别

性别分为男性、女性和未说明性别等三类。持卡人性别用一个字符的阿拉伯数字代码表示,其表示方法应符合GB 2261.1-2003的规定。

表13 性别代码

—14 —

谢谢观赏

代码名称代码名称

1 男性9 未说明性别

2 女性

8.1.2.4 民族

采用国家认定的民族名称来记录持卡人的民族信息。本规范规定民族名称用两个字符的阿拉伯数字代码表示,其表示方法应符合GB 3304-1991的规定。

表14 民族代码

代码名称代码名称

01 汉族30 土族

02 蒙古族31 达翰尔族

03 回族32 仫佬族

04 藏族33 羌族

05 维吾尔族34 布朗族

06 苗族35 撒拉族

07 彝族36 毛南族

08 壮族37 仡佬族

09 布依族38 锡伯族

10 朝鲜族39 阿昌族

11 满族40 普米族

12 侗族41 塔吉克族

13 瑶族42 怒族

14 白族43 乌孜别克族

15 土家族44 俄罗斯族

16 哈尼族45 鄂温克族

17 哈萨克族46 德昂族

18 傣族47 保安族

19 黎族48 裕固族

20 傈傈族49 京族

21 佤族50 塔塔尔族

22 畲族51 独龙族

23 高山族52 鄂伦春族

24 拉祜族53 赫哲族

25 水族54 门巴族

26 东乡族55 珞巴族

27 纳西族56 基诺族

28 景颇族99 其他

29 柯尔克孜族

8.1.2.5 出生地

持卡人的出生地采用中华人民共和国行政区域名称来表示,本规范规定出生地用六个字符的阿拉伯数字代码表示,其表示方法应符合GB/T 2260-2007《中华人民共和国行政区划代码》及本行业的扩展规定。对于出生地不详的,可用籍贯(祖居地)代替。

8.1.2.6 出生日期

出生日期采用公历日期,其表示方法应符合本规范8.1.1.5条的规定。

8.1.3 指纹

谢谢观赏

采集指纹按照先右手、后左手的顺序轮流进行,每只手各采集1枚指纹。手指优先顺序为:食指、拇指、中指、无名指和小拇指。如无特殊情况,应当采集双手食指指纹。食指无法采集到有效指纹信息时,则按指位顺序依次采集该手的其他手指,直至采集到有效的指纹信息。当一只手无法采集到有效的指纹信息时,可采集留存另一只手有效的2枚指纹信息。

8.1.4数字相片

表15 数字相片图像数据的规格和要求

属性规格和要求

颜色模型RGB 基色体系

颜色深度24位真彩色

图像格式彩色静止连续图像:bmp 和jpeg 两种格式

图像尺寸人像图像数字图像1 :1打印后的打印图像为宽26mm , 高为32mm

分辨率分辨率大于300DPI

图像特性人像清晰、层次丰富、背景简单连通,人像头部宽度占整个图像比例的三分之二以上,头项距图像上沿5 个像素以上

图像压缩倍数压缩图像最终字节是4096 字节,即4K 数据

8.2 公共应用数据

8.2.1户籍信息

8.2.1.1户口类别

户口类别分为非农业户口、农业户口、港澳台侨人员、外国人、居民户口等。本规范规定户口类别用两个字符的阿拉伯数字代码表示,其表示方法应符合下表的规定。

表16 户口类别(户籍地类别)代码

代码名称代码名称

10 非农业户口(城镇) 33 台湾地区居民

11 本地非农业户口(本地城镇) 34 华侨

12 外地非农业户口(外地城镇) 40 外国人

20 农业户口(农村) 41 未取得永久居留权的外国人

21 本地农业户口(本地农村) 42 取得永久居留权的外国人

22 外地农业户口(外地农村) 50 居民户口

30 港澳台侨人员51 本地居民户口

31 香港特别行政区居民52 外地居民户口

32 澳门特别行政区居民

注:50居民户口,在当地因户籍制度改革,无法区分农业户口、非农业户口时使用。

8.2.1.2户口所在地地址

户口所在地的详细地址。户口所在地由中华人民共和国行政区划名称、街道(乡、镇)和街、路、巷、村等名称以及门牌号码及居室号码构成。其中行政区划名称应符合GB/T 2260的规定。

8.2.1.3户口所在地行政区划代码

户口所在地行政区划代码采用中华人民共和国行政区域名称来表示,本规范规定用六个字符的阿拉伯数字代码表示,其表示方法应符合GB/T 2260-2007《中华人民共和国行政区划代码》及本行业的扩展规定。

8.2.2常住地信息

8.2.2.1常住所在地地址

常住所在地的详细地址,地址表示方法应符合本规范8.2.1.2条的规定。对异地居住人

—16 —

谢谢观赏

员指其在实际居住地的常住地址。

8.2.2.2常住所在地行政区划代码

常住所在地行政区划代码采用中华人民共和国行政区域名称来表示,本规范规定用六个字符的阿拉伯数字代码表示,行政区划代码表示方法应符合本规范8.2.1.3条的规定。

8.2.2.3联系电话

能与持卡人及时取得联系的手机号码。无手机号码时,应记录固定电话号码,固定电话号码应带有区号。

8.2.2.4联系人(监护人)姓名

能通过其与持卡人取得联系的人员姓名或未成年人的监护人姓名,姓名表示方法应符合本规范8.1.2.2条的规定。

8.2.2.5联系人(监护人)电话

能与联系人或监护人及时取得联系的电话号码,固定电话号码应带有区号。

8.2.3个人状况信息

8.2.3.1个人就业或离退休(职)状态

持卡人所处的劳动就业和离退休(职)等状态,分为就业、离休、退休、退职、失业、无业、从未就业和其他等八种类型。本规范规定就业状况用一个字符的阿拉伯数字代码表示,其表示方法应符合下表的规定。

表17 个人就业或离退休(职)状态代码

代码名称代码名称

1 在业 5 失业

2 离休 6 无业

3 退休7 从未就业

4 退职8 其他非在业

注:08其他非在业,包括出国(境)、离境、服兵役、判刑收监、劳教等人员。

8.2.4婚姻状况信息

8.2.4.1婚姻状况

婚姻状况分未婚、已婚、丧偶、离婚、未说明的婚姻状况等五类。本规范规定婚姻状况用一个字符的阿拉伯数字代码表示,其表示方法应符合GB/T 2261.2-2003的规定。

表18 婚姻状况代码

代码名称代码名称

1 未婚 4 离婚

2 已婚9 未说明的婚姻状况

3 丧偶

8.2.5人员身份及就业单位信息

8.2.5.1单位名称

持卡人就业单位名称。持卡人在两个以上单位供职时,应记录为其缴纳社会保险费的单位的名称。持卡人各项社会保险在不同单位缴纳时,应记录为其缴纳基本养老保险费的单位的名称。单位名称表示方法应符合单位法定注册名称的表示方法。

8.2.5.2单位组织机构代码

由质量技术监督部门赋予单位的组织机构代码。单位组织机构代码表示方法应符合GB 11714-1997的规定。

8.2.5.3人员身份类别

持卡人个人身份。人员身份类别的表示方法应符合GB/T 2261.4-2003的规定。

表19 人员身份类别代码

谢谢观赏

代码名称代码名称

11 国家公务员31 学生

12 参照公务员管理人员37 现役军人

13 专业技术人员51 自由职业者

17 职员54 个体经营者

21 企业管理人员70 无业人员

24 工人80 退(离)休人员

27 农民90 其他

注:“退(离)休人员”包括退职人员。

8.2.6国籍及政治面貌信息

8.2.6.1国籍

仅由外国人填写国籍信息,国籍代码按ISO 3166.1-2006国家及其地区的名称代码的第一部分国家代码规定的3位英文字母表示,如德国为DEU,丹麦DNK。

8.2.6.2政治面貌

本人政治身份。政治面貌的表示方法应符合GB/T 4762-1984的规定。

表20 政治面貌代码

代码名称代码名称

01 中共党员08 农工党党员

02 中共预备党员09 致公党党员

03 共青团员10 九三学社社员

04 民革会员11 台盟盟员

05 民盟盟员12 无党派民主人士

06 民建会员13 群众

07 民进会员

8.2.6.3参加党派日期

本人参加党派的日期,日期表示方法应符合本规范8.1.1.5条的规定。

8.2.7学历信息

8.2.7.1学历

持卡人的最高学历。本规范规定学历用两个字符的阿拉伯数字代码表示,其表示方法应符合GB 4658的规定。

表21 学历代码

代码名称代码名称

11博士研究生47技工学校

14硕士研究生61普通高中

21大学本科71初级中学

31大学专科81小学

41中等专科90其他

44职业高中

8.2.7.2学位代码

持卡人具有的学位代码。持卡人具有三个以上不同学位的,可记录三个学位代码,本规范规定学位代码用三个字符的阿拉伯数字代码表示,其表示方法应符合GB 6864的规定。

8.2.7.3所学专业类别

持卡人接受高等学校本科、专科教育所学学科的专业名称。持卡人具有三个以上不同专—18 —

谢谢观赏

业的,可记录三个学科专业名称。本规范规定专业用六个字符的阿拉伯数字代码表示,其表示方法应符合GB/T16835的规定。

8.2.7.4毕业学校名称

持卡人接受所学学科高等学校教育的学校名称。持卡人具有三个不同专业的,应分别记录与其所学学科相应的学校名称。

8.3 就业与失业应用数据

8.3.1职业和专业技能信息

8.3.1.1专业技术职务代码

持卡人符合国家规定,并经相应机构考核评审获得的专业技术职务代码。本规范规定的专业技术职务代码用三个字符的阿拉伯数字代码表示,其表示方法应符合GB/T 8561-2001的规定。

8.3.1.2专业技术职务级别

持卡人符合国家规定,并经相应机构考核评审获得的专业技术职务级别。本规范规定的专业技术职务级别用三个字符的阿拉伯数字代码表示,其表示方法应符合GB/T 12407-2008的规定。

表22 专业技术职务级别代码

代码名称代码名称

410 高级430 初级

411 正高级434 助理级

412 副高级435 员级

420 中级499 未定职级

8.3.1.3职业资格(工人技术等级)名称代码

持卡人有资格从事的社会工作类别,即持卡人经国家批准的职业技能鉴定(指导)机构授予的职业资格(工人技术等级)资格证书所记载的职业(工种)分类。持卡人持有两个以上职业资格证书(工人技术等级)的,可按职业资格(工人技术等级)证书记录两个职业资格(工人技术等级)名称代码。本规范规定的职业资格(工人技术等级)名称代码用七个字符的阿拉伯数字代码表示,其表示方法应符合《中华人民共和国职业分类大典》的规定。

8.3.1.4职业资格(工人技术等级)等级

持卡人持有的职业资格(工人技术等级)证书的等级。持卡人持有两个以上职业资格(工人技术等级)证书的,可按职业资格(工人技术等级)证书记录相应的两个等级代码。本规范规定的职业资格(工人技术等级)等级代码用一个字符的阿拉伯数字代码表示,其表示方法应符合GB/T 14946-2002 A.13《国家职业资格(工人技术等级)代码》的规定。

8.3.1.5职业资格(工人技术等级)证书发证/年检机构名称

持卡人持有的职业资格(工人技术等级)证书的颁发机构或年检机构名称。持卡人持有两个以上职业资格(工人技术等级)证书的,可按职业资格(工人技术等级)证书记录相应的两个机构名称。

8.3.1.6职业资格(工人技术等级)证书发证/年检日期

持卡人获得职业资格(工人技术等级)证书或通过职业资格(工人技术等级)证书年检的日期。持卡人持有两个以上职业资格(工人技术等级)证书的,可按职业资格(工人技术等级)证书记录相应的两个日期。日期的表示方法应符合本规范8.1.1.5条的规定。

8.3.1.7职业资格(工人技术等级)证书编号

持卡人持有的职业资格(工人技术等级)证书编号。持卡人持有两个以上职业资格(工人技术等级)证书的,可按职业资格(工人技术等级)证书记录相应的两个证书编号。

谢谢观赏

8.3.1.8职业资格(专业技术人员)名称代码

持卡人参加全国统一职业资格(专业技术人员)考试合格并注册登记的职业资格(专业技术人员)名称代码。持卡人取得两个以上职业资格(专业技术人员)的,可按职业资格(专业技术人员)证书记录两个职业资格(专业技术人员)名称代码。本规范规定职业资格(专业技术人员)名称代码用三个字符的阿拉伯数字代码表示,其表示方法应符合下表的规定。

表23 职业资格(专业技术人员)名称代码

代码名称代码名称

100 执业药师280 房地产经纪人

110 注册建筑师290 国际商务专业人员

120 勘察设计注册工程师300 注册安全工程师

121 注册结构工程师310 注册核安全工程师

122 注册土木工程师(岩土专业)320 建造师

123 注册土木工程师(港口与航道

321 一级建造师

专业)

322 二级建造师

124 注册土木工程师(水利水电工

程)

125 注册公用设备工程师330 土地登记代理人

126 注册电气工程师340 注册设备监理师

127 注册化工工程师350 出版专业技术人员职业资格

128 注册环保工程师360 质量专业技术人员职业资格

130 监理工程师370 环境影响评价工程师

140 房地产估价师380 注册测绘师

150 注册资产评估师390 注册验船师

160 造价工程师400 物业管理师

170 珠宝玉石质量检验师410 注册计量师

180 注册税务师420 招标师

190 拍卖师430 投资建设项目管理师

200 企业法律顾问440 管理咨询师

210 假肢与矫形器制作师450 地震安全性评价工程师

220 矿产储量评估价师460 通信专业技术人员职业资格

230 注册城市规划师470 广告专业技术人员职业资格

240 价格鉴证师480 计算机技术与软件专业技术资格250 棉花质量检验师490 翻译专业资格

260 矿业权评估师500 社会工作者

270 注册咨询工程师

8.3.1.9职业资格(专业技术人员)注册登记/年检机构名称

为持卡人的职业资格(专业技术人员)进行注册登记的机构名称或年检机构名称。持卡人取得两个以上职业资格(专业技术人员)的,可按职业资格(专业技术人员)证书记录相应的两个机构名称。

8.3.1.10职业资格(专业技术人员)注册登记/年检日期

持卡人注册登记职业资格(专业技术人员)或通过职业资格(专业技术人员)年检的日期。持卡人取得两个以上职业资格(专业技术人员)的,可按职业资格(专业技术人员)证书记录相应的两个日期。日期的表示方法应符合本规范8.1.1.5条的规定。

—20 —

(完整版)数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1 .实验目的 (1 )掌握使用Visual C++ 6.0 上机调试程序的基本方法; (2 )掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2 .实验要求 (1 )认真阅读和掌握和本实验相关的教材内容。 (2 )认真阅读和掌握本章相关内容的程序。 (3 )上机运行程序。 (4 )保存和打印出程序的运行结果,并结合程序进行分析。 (5 )按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>// 头文件 #include// 库头文件------ 动态分配内存空间 typedef int elemtype;// 定义数据域的类型 typedef struct linknode// 定义结点类型 { elemtype data;// 定义数据域 struct linknode *next;// 定义结点指针 }nodetype; 2)创建单链表

nodetype *create()// 建立单链表,由用户输入各结点data 域之值, // 以0 表示输入结束 { elemtype d;// 定义数据元素d nodetype *h=NULL,*s,*t;// 定义结点指针 int i=1; cout<<" 建立一个单链表"<> d; if(d==0) break;// 以0 表示输入结束 if(i==1)// 建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));// 表示指针h h->data=d;h->next=NULL;t=h;//h 是头指针 } else// 建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t 始终指向生成的单链表的最后一个节点

数据结构实验报告图实验

图实验一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10;

template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif MGraph.cpp

#include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) {

数据结构实验答案1

重庆文理学院软件工程学院实验报告册 专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

实验序号 1 实验名称实验一线性表基本操作实验地点S-C1303 实验日期2013年04月22日 实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成 (an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄) 实验过程及步骤1. #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n"); for(i=0; i<=l->last; i++) { scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n");

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

约瑟夫问题数据结构实验报告汇总.

中南民族大学管理学院学生实验报告 实验项目: 约瑟夫问题 课程名称:数据结构 年级: 专业:信息管理与信息系统 指导教师: 实验地点:管理学院综合实验室 完成日期: 小组成员: 2012 学年至2013 学年度第1 学期

一、实验目的 (1)掌握线性表表示和实现; (2)学会定义抽象数据类型; (3)学会分析问题,设计适当的解决方案; 二、实验内容 【问题描述】:编号为1,2,…,n的n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自 1 开始顺序报数,报到m 时停止报数。报m 的人出列,将他的密码作为新的m 值,从他在顺时针方向上的下一个人开始重新从1 报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。 【基本要求】:利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。 【测试数据】:m 的初值为20;密码:3,1,7,2,4,8,4(正确的结果应为6,1,4,7,2,3,5)。 三、实验步骤 (一)需求分析 对于这个程序来说,首先要确定构造链表时所用的插入方法。当数到m 时一个人就出列,也即删除这个节点,同时建立这个节点的前节点与后节点的联系。由于是循环计数,所以才采用循环列表这个线性表方式。 程序存储结构利用单循环链表存储结构存储约瑟夫数据(即n个人的编码等),模拟约瑟夫的显示过程,按照出列的顺序显示个人的标号。编号为1,2,…,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人开始按顺时针方向自1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方向上的下一个人开始重新从 1 报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。基本要求是利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。 程序执行的命令(1)构造单向循环链表。 (2)按照出列的顺序引出各个人的标号。 测试数据 m 的初值为 20;密码:3,1,7,2,4,8,4(正确的结果应为 6,1,4,7,2,3,5) (1)、插入:在把元素插入到循环链表中时,由于是采用的头插法,所以我保留了front头结点。在每加入一个节点时,都会直接连接在front后面,从而保证一开始就赋值的rear尾节点不用修改。 伪代码阐释如下:

数据结构实验二11180

理工学院实验报告 系部计算机系班级学号 课程名称数据结构实验日期 实验名称链表的基本操作成绩 实验目的: (1)掌握线性表的链式存储结构的特点; (2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。 实验条件:计算机一台,vc++6.0 实验容与算法思想: 容: 建立一有序的链表,实现下列操作: 1.把元素x插入表中并保持链表的有序性; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求 运行结果:

附:源程序: #include #include #define OK 1 #define ERROR 0 typedef char ElemType; typedef struct Node { ElemType data; struct Node* next; }Node,*LinkList; void init_linklist(LinkList *l) { *l=(LinkList)malloc(sizeof(Node)); (*l)->next=NULL; } void CreateFromTail(LinkList L) { Node *r, *s; char c; int flag =1; r=L; while(flag) { c=getchar(); if(c!='$') {

数据结构实验报告[3]

云南大学 数据结构实验报告 第三次实验 学号: 姓名: 一、实验目的 1、复习结构体、指针; 2、掌握链表的创建、遍历等操作; 3、了解函数指针。 二、实验内容 1、(必做题)每个学生的成绩信息包括:学号、语文、数学、英语、总分、加权平均分;采用链表存储若干学生的成绩信息;输入学生的学号、语文、数学、英语成绩;计算学生的总分和加权平均分(语文占30%,数学占50%,英语占20%);输出学生的成绩信息。 三、算法描述 (采用自然语言描述) 首先创建链表存储n个学生的成绩信息,再通过键盘输入学生的信息,创建指针p所指结点存储学生的成绩信息,从键盘读入学生人数,求出学生的总分和加权平均分,输出结果。 四、详细设计 (画出程序流程图)

五、程序代码 (给出必要注释) #include #include typedef struct score {int number; int chinese; int math; int english; int total; float average; struct score *next; } student; //创建链表存储n个学生的信息,通过键盘输入信息student*input_score(int n) {int i; student*stu,*p; for(i=0,stu=NULL;inumber);

数据结构停车场问题实验报告汇总

数据结构课程设计 ——停车场管理问题 姓名: 学号: 问题描述 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的

车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 二、实现要求 要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 三、实现提示 汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(‘A',,1,5)表示1号牌照车在5这个时刻到达,而(‘ D ',,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(‘ E ',0,0)时结束。本题可用栈和队列来实现。 四、需求分析 停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。停车场的管理流程如 下 ①当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等候)。 ②当车辆要求出栈时,该车到栈顶的那些车辆先弹出栈(在它之后进入的车辆必须先退出车场为它让路),再让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕后,检查等候队列(便道) 中是否有车,有车则从队列头取出一辆车压入栈中。

数据结构实验二

洛阳理工学院实验报告 系部计算机系班级学号姓名 课程名称数据结构实验日期 实验名称链表的基本操作成绩 实验目的: (1)掌握线性表的链式存储结构的特点; (2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。 实验条件:计算机一台,vc++6.0 实验内容与算法思想: 内容: 建立一有序的链表,实现下列操作: 1.把元素x插入表中并保持链表的有序性; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求 运行结果:

附:源程序: #include #include #define OK 1 #define ERROR 0 typedef char ElemType; typedef struct Node { ElemType data; struct Node* next; }Node,*LinkList; void init_linklist(LinkList *l) { *l=(LinkList)malloc(sizeof(Node)); (*l)->next=NULL; } void CreateFromTail(LinkList L) { Node *r, *s; char c; int flag =1; r=L; while(flag) { c=getchar(); if(c!='$') {

数据结构实验报告2

数据结构实验报告 二.程序设计相关信息 (1)实验题目:编写一个程序algo2-3.cpp,实现双链表的各种基本运算,并在此基础上设计一个主程序完成如下功能: 1.初始化双链表h; 2.依次采用尾插法插入a,b,c,d,e元素; 3.输出双链表h; 4.输出双链表h长度; 5.输出双链表h是否为空; 6.判断双链表h的第3个元素; 7.输出元素‘a’的位置; 8.在第4个元素位置上插入‘f’元素; 9.输出双链表h; 10.删除L的第3个元素; 11.输出双链表h; 12.释放双链表h。 (2)实验目的:熟悉双链表的基本操作并掌握尾插法建表。 (3)算法描述或流程图

(4)源代码 #include #include

typedef struct DNode { char data; struct DNode *next; struct DNode *prior; }DNode,DLinkList; void initlist(DLinkList *&h) { h=(DLinkList*)malloc(sizeof(DLinkList)) ; h->next=NULL; h->prior=NULL; } void destroylist(DLinkList *&h) { DLinkList *p=h,*q=p->next; while(q!=NULL) {free(p); p=q; q=p->next; } free(p); } int getelem(DLinkList *h,int i,char &e) {int j=0; DLinkList *p=h; while(jnext; } if(p==NULL) return 0; else { e=p->data; return 1; } } int listempty(DLinkList *h) { return(h->next==NULL&&h->prior==NULL); } int listlength(DLinkList *h) { DLinkList *p=h;int n=0; while(p->next!=NULL) {n++; p=p->next; } return (n);

数据结构实验报告

姓名: 学号: 班级: 2010年12月15日

实验一线性表的应用 【实验目的】 1、熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。、; 2、以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3、掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; 4、通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的 应用和链表的建立等各种基本操作)。 【实验内容】 约瑟夫问题的实现:n只猴子要选猴王,所有的猴子按1,2,…,n编号围坐一圈,从第一号开始按1,2…,m报数,凡报到m号的猴子退出圈外,如此次循环报数,知道圈内剩下一只猴子时,这个猴子就是猴王。编写一个程序实现上述过程,n和m由键盘输入。【实验要求】 1、要求用顺序表和链表分别实现约瑟夫问题。 2、独立完成,严禁抄袭。 3、上的实验报告有如下部分组成: ①实验名称 ②实验目的 ③实验内容:问题描述:数据描述:算法描述:程序清单:测试数据 算法: #include #include typedef struct LPeople { int num; struct LPeople *next; }peo; void Joseph(int n,int m) //用循环链表实现 { int i,j; peo *p,*q,*head; head=p=q=(peo *)malloc(sizeof(peo)); p->num=0;p->next=head; for(i=1;inum=i;q->next=p;p->next=head; } q=p;p=p->next; i=0;j=1; while(i

数据结构实验报告

南京工程学院实验报告 操作的函数程序清单,分别用顺序表和链表结构完成,并在首页上表明团队名称、成员及个人的工作(函数),未来的成绩评定时将包含这一部分的团队成绩及个人的工作成绩。 一、实验目的 1.熟悉上机环境,进一步掌握语言的结构特点。 2.掌握线性表的顺序存储结构的定义及实现。 3.掌握线性表的链式存储结构——单链表的定义及实现。 4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。 5.掌握线性表在链式存储结构——单链表中的各种基本操作。 二、实验内容 1.顺序线性表的建立、插入及删除。 2.链式线性表的建立、插入及删除。 三、实验步骤 1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。 2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。 3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。 四、程序主要语句及作用(main函数程序清单) 程序1的主要代码(附简要注释) #include #define MAXSIZE 1024 typedef int elemtype; typedef struct{ elemtype vec[MAXSIZE]; int len; }sequenlist; elemtype geti(sequenlist s, int i); elemtype deli(sequenlist *s,int i); elemtype insi(sequenlist *s,int i,int b); int main(int argc, char *argv[]){ int i,n,x; sequenlist a; printf("输入n(n>3):"); scanf("%d",&n);

数据结构实验二-

实 验 报 告 一、实验目的 1) 加深对图的表示法和图的基本操作的理解,并可初步使用及操作; 2) 掌握用图对实际问题进行抽象的方法,可以解决基本的问题; 3) 掌握利用邻接表求解非负权值、单源最短路径的方法,即利用Dijkstra 算法求最短 路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题; 4) 学会使用STL 中的map 抽象实际问题,掌握map ,List,,priority_queue 等的应 用。 二、实验内容与实验步骤 (1) 实验内容: 使用图这种抽象的数据结构存储模拟的欧洲铁路路线图,通过Dijkstra 算法求出欧洲旅行最少花费的路线。该实验应用Dijkstra 算法求得任意两个城市之间的最少路费,并给出路费最少的路径的长度和所经过的城市名。 (2) 抽象数据类型及设计函数描述 1) 抽象数据类型 class City : 维护一个城市的信息,包括城市名name ,是否被访问过的标记visted ,从某个城市到达该城市所需的总费用total_fee 和总路径长度total_distance ,求得最短路径后路径中到达该城市的城市名from_city 。 class RailSystem : 用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map 实现,map 的key-value 课程名称:数据结构 班级: 实验成绩: 实验名称:欧洲旅行 学号: 批阅教师签字: 实验编号:实验二 姓名: 实验日期:2013 年6 月 18 日 指导教师: 组号: 实验时间:

值对的数据类型分别为string和list<*Service>,对应出发城市名和该城市与它能 够到达的城市之间的Service链表。 class Service: 为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用 fee,两城市之间的直接距离distance。 部分设计函数描述 ●RailSystem(const string& filename) 构造函数,调用load_services(string const &filename)函数读取数据 ●load_services(string const &filename) 读取传入的文件中的数据并建立上述两个map以模拟欧洲铁路路线图 ●reset(void) 遍历cities图,初始化所有城市的信息:visted未访问,total_distance最大 值,total_fee费用最大值,from_city为空 ●~RailSystem(void) 析构函数,用delete将两个map中所有使用new操作符开辟的空间删除 ●void output_cheapest_route(const string& from, const string& to, ostream& out); 输出两城市间的最少费用的路径,调用calc_route(string from, string to)函 数计算最少费用 ●calc_route(string from, string to) 使用Dijkstra算法计算from和to两个城市间的最少费用的路径 (3)采用的存储结构 1)map > outgoing_services 用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。 2)list 以service为指针的list表,保存两城市间的路径。 3)map cities 用来保存所有城市信息,通过城市名查找该城市有关信息。 4)priority_queue, Cheapest> candidates 存储候选的遍历城市,City*是优先队列存储的对象类型,vector是该对象的向量集合,Cheapest是比较规则。 三、实验环境 操作系统:Windows 8 调试软件:Microsoft visual studio 2012 上机地点:综合楼311 机器台号:笔记本

数据结构实验报告.

实验目的 (1)学会用先序创建一棵二叉树。 (2)学会采用递归算法对二叉树进行先序、中序、后序遍历。 (3)学会打印输出二叉树的遍历结果。 实验内容 【问题描述】建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。 【基本要求】 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。 【测试数据】 ABCффDEфGффFффф(其中ф表示空格字符) 则输出结果为先序:ABCDEGF 中序:CBEGDFA 后序:CGBFDBA 【选作内容】 采用非递归算法实现二叉树遍历。 实验步骤 (一)需求分析 1、在这个过程中,接受遍历的二叉树是从键盘接受输入(先序),以二叉链表作为存储结构,建立的二叉树。因此,首先要创建一棵二叉树,而这棵二叉树是先序二叉树。本演示程序中,集合的元素设定为大写字母ABCDEFG,输出的先序,中序,后序遍历分别为ABCDEGF,CBEGDFA,CGBFDBA。二叉树可以表示为:

接受的输入数据在进行递归的先序,中序,后序遍历后,分别将结果打印出来。 2、在程序运行的过程中可以看到,以计算机提示用户执行的方式进行下去,即在计算机终端上提示“输入二叉树的先序序列”后,由用户在键盘上输入ABC##DE#G##F###,之后相应的选择遍历及遍历结果显示出来。 3、程序执行的命令包括:首先是二叉树的先序序列被创建输入,其次是对输入进去的先序序列有次序的进行先序,中序,后序遍历。最后是打印出二叉树的遍历结果。 4、测试数据 (1)在键盘上输入的先序序列ABC##DE#G##F### (2)先序遍历结果ABCDEGF

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程序(算法)。 1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果。(15分) 2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学 生的学号、姓名和成绩。 3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求 1.修改算法。将奇偶排序算法升序改为降序。(15分) 2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)) 3.编译、链接以上算法,按要求写出实验报告(25)。 4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。 三、实验报告说明 实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。

三、实验源程序(算法) Score.c #include "stdio.h" #include "string.h" #define M 6 #define N 3 struct student { char name[10]; int number; int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; void changesort(struct student a[],int n,int j) {int flag=1,i; struct student temp; while(flag) { flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

数据结构实验二链表

云南大学数学与统计学实验教学中心 实 验 报 告 一、实验目的: 通过实验掌握线性链表的建立及基本操作,巩固课堂内容,练习其程序的设计与实现。 由于顺序存储结构的操作相对比较简单,而且在前期课程《高级语言程序设计》中使用得也多, 所以本次实验侧重于对线性链表存储结构上的操作及应用的实现。 二、实验内容: 本实验包含以下几个子问题: 1、 采用表尾挂入法建立一个以LA 为头指针的单链表: 2、 3、 就地逆转以LB 为头指针的单链表,即得到如下形式的单链表: 4、 将逆转后的LB 表接到LA 表之尾并构成循环链: LA 二、实验要求: 1. 每一个子问题用一个C 语言的函数来完成。 2. 对每一个子问题的结果用一个打印函数输出其结果以验证程序运行是否正确。 打印函数必须是公共的,即:用一个输出函数,既可以对单链表又可对循环链表实现,

打印输出。 3.用主函数调用各个子函数,以完成题目要求。 4.程序设计时应尽量考虑通用性,若改变题给数据仍能实现要求。 [实现提示]: .第3小题题中的“就地逆转”即只允许引入除LB外的两个工作指针来实现。 即可以以循环方式从链表首部起逐个地修改各个结点的指针:从NEXT(向后)指针改变为PRIOR(向前)的指针,并注意保存搜索时的指针。 三、实验环境 Windows win7 程序设计语言C 四、实验过程(请学生认真填写): 1. 实验设计的(各)流程图:

2. 程序设计的代码及解释(必须给出): /*----------------------------------LinkList-------------------------------------*/ /*基本要求---------------------------------------------------------------------*/ /*采用表尾挂入法建立一个以LA为头指针的单链表--------------*/ /*采用表首插入法建立一个以LB为头指针的单链表.---------------*/ /*就地逆转以LB为头指针的单链表,即得到如下形式的单链表.*/ /*将逆转后的LB表接到LA表之尾并构成循环链-------------------*/ /*每一个子问题用一个C语言的函数来完成--------------------------*/ /* 打印函数必须是公共的-------------------------------------------------*/ /*-------------------------------------Start-------------------------------------*/ /*--------------------------------------------------------------------------------*/ #include #include #include #define LIST_SIZE 10 /*--------------------------------------------------------------------------------*/ /*定义链表类型--------------------------------------------------------------*/ typedef struct LNode{ int data; struct LNode *next; }LinkList; /*--------------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------------*/ main(){ LinkList *InitialList1(); LinkList *InitialList2(); LinkList *reverse(LinkList *L); void connect(LinkList *L1,LinkList *L2); void putList(LinkList *L); LinkList *L1,*L2; L1=InitialList1(); L2=InitialList2(); printf("The original of list L1:\n"); putList(L1); printf("The original of list L2:\n");

《数据结构》实验报告

《数据结构》实验报告 实验序号:4 实验项目名称:栈的操作

附源程序清单: 1. #include #define MaxSize 100 using namespace std; typedef int ElemType; typedef struct { ElemType data[MaxSize]; int top; }SqStack; void InitStack(SqStack *st) //初始化栈 { st->top=-1; } int StackEmpty(SqStack *st) //判断栈为空{ return (st->top==-1); } bool Push(SqStack *st,ElemType x) //元素进栈{ if(st->top==MaxSize-1)

{ return false; } else { st->top++; //移动栈顶位置 st->data[st->top]=x; //元素进栈 } return true; } bool Pop(SqStack *st,ElemType &e) //出栈 { if(st->top==-1) { return false; } else { e=st->data[st->top]; //元素出栈 st->top--; //移动栈顶位置} return true; } //函数名:Pushs //功能:数组入栈 //参数:st栈名,a->数组名,i->数组个数 bool Pushs(SqStack *st,ElemType *a,int i) { int n=0; for(;n数组名,i->数组个数 bool Pops(SqStack *st,ElemType *a,int i) { int n=0; for(;n

数据结构实验二

实验报告 学院(系)名称:计算机科学与工程学院姓名 赵振宇学号20175302专业计算机科学与技术班级2017级4班 实验项目实验二:二叉树的操作课程名称数据结构与算法 课程代码0661913实验时间 2019年5月21日第3、4节实验地点7-219考核 标准 实验过程25分程序运行20分回答问题15分实验报告30分特色功能5分考勤违纪情况5分成绩成绩 栏其它批改意见: 教师签字:考核 内容评价在实验课堂中的表现,包括实验态度、编 写程序过程 等内容等。□功能完善,□功能不全□有小错□无法运行○正确○基本正确○有提示○无法回答○完整○较完整○一般○内容极少 ○无报告○有○无○有 ○无一、实验目的 实验目的:通过实验使学生深刻理解二叉树性质,验证二叉树的遍历算法,并能在遍历算法基础上实现较复杂算法设计。 二、实验题目与要求 要求:第1题必做,2-5题中至少选择1题。 1.以二叉链表为存储结构,实现二叉树的创建、遍历 1)问题描述:在主程序中设计一个简单的菜单,分别调用相应的函数功能: 1…建立树 2…前序遍历树 3…中序(非递归)遍历树 4…后序遍历树 0…结束 2)实验要求:在程序中定义下述函数,并实现要求的函数功能: CreateTree():按从键盘输入的前序序列,创建树 PreOrderTree():前序遍历树(递归) InOrderTree():中序(非递归)遍历树 LaOrderTree():后序遍历树(递归)

3)注意问题: ?注意理解递归算法的执行步骤。 ?注意字符类型数据在输入时的处理。 ?重点理解如何利用栈结构实现非递归算法 2.在二叉树中,P所指结点为二叉树中任一给定的结点,编写算法求从根结点到P所指结点之间的路径。 1)实验要求:以二叉链表作为存储结构 2)实验提示:采用非递归后序遍历二叉树,当后序遍历访问到P所指结点时,此时栈中所有结点均为P所指结点的祖先,由这些祖先便构成了一条从根结点到P所指结点之间的路径。 3.试编写按层次顺序遍历二叉树的算法 1)问题描述:编写按层次顺序遍历二叉树的算法 2)实验要求:以二叉链表作为存储结构 4.编写算法求二叉树高度及宽度。 1)问题描述:二叉树高度是指树中所有节点的最大层数,二叉树宽度是指在二叉树的各层上,具有节点数最多的那一层上的节点总数。 2)实验要求:以二叉链表作为存储结构 5.实现一个哈夫曼编/译码系统 1)问题描述:利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码。对于双工信道,每端都需要一个完整的编码/译码系统。试为这样的信息收发站写一个哈夫曼的编/译码系统。 2)实验要求:一个完整的系统应具有以下功能: (1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。 (2)E:编码(Encoding)。利用已建好的哈夫曼树对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。 (3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。 (4)P:打印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。 (5)T:打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。 3)实现提示: (1)文件CodeFile的基类型可以设为字节型。 (2)用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“E”为止。 (3)在程序的一次执行过程中,第一次执行I、D或C命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。

相关文档
最新文档