
第8章结构化设计方法8.1结构体类型8.2枚举类型18.4共用体8.5数组和结构体8.6结构体中的结构体8.7结构体与指针8.8编译预处理
0 第8章 结构化设计方法 • 8.1 结构体类型 • 8.2 枚举类型 • 8.4 共用体 • 8.5数组和结构体 • 8.6结构体中的结构体 • 8.7结构体与指针 • 8.8编译预处理

本章目标掌握结构体、、枚举等数据类型的定义与使用方法掌握结构化程序设计方法2.个>3、解决复杂的现实问题
1 本章目标 ➢ 1、掌握结构体、枚举等数据类型的定义与使用方法 ➢ 2、掌握结构化程序设计方法 ➢ 3、解决复杂的现实问题

8.1结构体类型般应用程序要处理的数据相当复杂。简单的数据类型无法解决复杂应用程序的需求。例:工资管理系统的工资单数据01工资单02工作部门:字符串,最大长度为10字符02姓名:字符串,最大长度为8个字符02职务(含职称、工种):代码,0~9902参加工作时间03年份:1900-205003月份:1~1203日:1~3102家庭情况03婚否:0一否,1一是03是否双职工:0一否,1一是03独生子女出生日期,如无独生子女则填1900.01.01
2 8.1 结构体类型 • 一般应用程序要处理的数据相当复杂。 • 简单的数据类型无法解决复杂应用程序的需求。 例:工资管理系统的工资单数据

8.1 结构体类型例:工资管理系统的工资单数据04年份:1900-205004月份:1~1204日:1~3103入托子女数:0~1003住房面积:0~1000基本工资:010000,保留两位小数岗位津贴:0~10000,保留两位小数保险:010000,保留两位小数独生子女费:0~10000,保留两位小数房租:010000,保留两位小数电费:0~10000,保留两位小数水费:010000,保留两位小数02取暖费:010000,保留两位小数02实发工资:0~10000,保留两位小数
3 8.1 结构体类型 例:工资管理系统的工资单数据

8.1结构体类型分析采用了缩进的方式来描述工资单数据的层次结构每个数据项前面有一个层次号,表明数据项之间的隶属关系。数据项名称后面可以填写该数据项的类型、数据范围以及其他注意事项
4 8.1 结构体类型 分析: • 采用了缩进的方式来描述工资单数据的层次结构。 • 每个数据项前面有一个层次号,表明数据项之间的隶属关 系。 • 数据项名称后面可以填写该数据项的类型、数据范围以及 其他注意事项

8.1结构体类型分析:前面的简单数据类型无法表示这些复杂数据的内在联系各数据项的类型互不相同,工资单无法用一个数组存放:若对各数据项分别建立数组,数据很难保持一致;数据结构的复杂化带来了程序结构的复杂化:程序难于设计,可读性降低,调试困难
5 8.1 结构体类型 分析: • 前面的简单数据类型无法表示这些复杂数据的内在联系; • 各数据项的类型互不相同,工资单无法用一个数组存放; • 若对各数据项分别建立数组,数据很难保持一致; • 数据结构的复杂化带来了程序结构的复杂化; • 程序难于设计,可读性降低,调试困难

8.1结构体类型原因缺乏一种能够有效地表示复杂数据之间的内在联系的数据结构:解决方法:C++允许用户根据需要来构造数据类型,提供了结构体类型;枚举类型;共用体类型:类等自定义数据类型(User-DefinedType)。6
6 8.1 结构体类型 原因: • 缺乏一种能够有效地表示复杂数据之间的内在联系的数据结 构; 解决方法:C++允许用户根据需要来构造数据类型,提供了 • 结构体类型; • 枚举类型; • 共用体类型; • 类 等自定义数据类型(User-Defined Type)

8.1.1结构体类型的定义结构体由不同类型的数据组成的集合体;包含多种成员。结构体定义:程序中对结构体的组成进行描述的过程
7 8.1.1 结构体类型的定义 结构体: • 由不同类型的数据组成的集合体; • 包含多种成员。 结构体定义: • 程序中对结构体的组成进行描述的过程

8.1.1结构体类型的定义结构体类型的定义方法:struct数据类型成员名1;数据类型成员名n;
8 8.1.1 结构体类型的定义 结构体类型的定义方法: struct { 数据类型 成员名1; . 数据类型 成员名n; } ;

8.1.1结构体类型的定义例:定义一个表示日期的结构体类型Datestruct1intda year;intda mon,intda_day,1自定义类型Date;有3个成员变量:年、月、日;定义了结构体类型后,可以声明该类型的变量。例:Date yesterday, today, tomorrow;
9 8.1.1 结构体类型的定义 • 自定义类型Date; • 有3个成员变量:年、月、日; • 定义了结构体类型后,可以声明该类型的变量。 例: Date yesterday, today, tomorrow; 例:定义一个表示日期的结构体类型 struct Date { int da_year; int da_mon; int da_day; };