




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章处理复杂数据 主要内容 案例 处理 学生信息管理系统 的完整信息使用结构类型表示学生完整信息案例实施调试程序学生练习拓展小结 在本章 将继续完善 学生信息管理系统 案例程序 在上一章案例程序的基础上 可以实现对学生完整信息的管理 具体包括 1 录入学生的完整信息 包括 姓名 学号 身份证号码 年龄 出生日期 家庭地址 2 按姓名查询学生信息 并可列出查询得到的学生的完整信息 3 修改学生信息 包括 姓名 学号 身份证号码 年龄 出生日期 家庭地址 4 删除指定的学生信息 5 列表显示所有学生的完整信息 处理 学生信息管理系统 完整信息 为了表示复合数据 必须先定义一个复合结构类型 C语言提供了一个关键字struct来定义一个复合结构类型 复合结构类型是对C语言基本数据类型的扩充 在定义了复合结构类型以后 可以为定义的复合结构类型定义变量 为了表示一个 学生 可以定义一个结构类型 structStudent charname 40 学生姓名charsno 20 学号charsid 20 身份证号码intage 年龄charaddress 200 家庭地址 使用结构表示学生信息 定义结构 结构类型定义的一般格式为 struct结构类型名 成员类型成员名称 成员类型成员名称 注意 不要遗漏结构类型定义的 后面的 其中的 成员类型 可以是C语言基本数据类型 也可以是已经定义的其他结构类型 这也说明 结构类型的定义是可以嵌套的 使用结构表示学生信息 定义结构 为了更好的表示学生的基本信息 可用出生日期来替代 年龄 structDate intyear 年intmonth 月intday 日 structStudent charname 40 学生姓名charsno 20 学号charsid 20 身份证号码structDatebirth 出生日期charaddress 200 家庭地址 使用结构表示学生信息 定义结构 一旦定义了新的结构类型 可以定义该结构类型的变量 例如 为了表示一个学生信息 基于已经定义的结构类型Student 可以定义一个变量 structStudentstu 变量stu称为结构变量 定义结构变量的一般形式如下 struct结构类型名变量1 变量2 表示学生信息 定义结构类型变量 可以使用typedef关键字重新定义Student结构类型如下 typedefstruct intyear 年intmonth 月intday 日 Date typedefstruct charname 40 学生姓名charsno 20 学号charsid 20 身份证号码Datebirth 出生日期charaddress 200 家庭地址 Student 定义后就可以直接用Date和Student表示结构类型了 表示学生信息 定义结构类型变量 可以在定义结构类型的同时定义结构变量 typedefstruct intyear 年intmonth 月intday 日 Date structStudent charname 40 学生姓名charsno 20 学号charsid 20 身份证号码Datebirth 出生日期charaddress 200 家庭地址 stu 1 可以使用也可以不使用typedef定义结构类型 它们可同时存在 2 在定义结构类型的同时定义结构变量 则不能使用typedef关键字 表示学生信息 定义结构类型变量 对结构变量的访问 就是分解为对结构变量各个成员的访问 访问结构变量成员的一般形式是 结构变量名 成员名strcpy stu name 张三 strcpy stu sno 2010060501 strcpy stu sidstu birth year 1990 stu birth month 10 stu birth day 12 strcpy stu address 广东省广州市天河区天河北路123号 printf 学生基本信息 姓名 s 学号 s 身份证 s 出生日期 d d d 家庭地址 s n stu name stu sno stu sid stu birth year stu birth month stu birth day stu address 表示学生信息 访问结构变量成员 在定义结构变量的同时 也可以对结果变量进行初始化 Studentstu 张三 2010060501 4102031990101245 1990 10 12 广东省广州市天河区天河北路123号 在定义结构变量的同时对结构变量进行初始化 只需在结构变量的后面加上赋值运算符 并把成员对应的值按定义结构类型时的顺序列出来 中间用逗号分隔开 并用一对 括起来 放在赋值运算符的后面即可包含在 中的值必须与结构变量成员的个数和类型相同 表示学生信息 访问结构变量成员 intdisplayStudent Studentstu printf n printf 学生基本信息 姓名 s 学号 s 身份证 s 出生日期 d d d 家庭地址 s n stu name stu sno tu sid tu birth year stu birth month stu birth day stu address printf return0 Studentstu 张三 20100605011990 10 12 广东省广州市天河区天河北路123号 displayStudent stu 表示学生信息 结构类型作为参数 C源文件包括两种类型 扩展名为 c的源文件和扩展名为 h头文件 它们都称为工程源文件 其中 扩展名为 c的源文件中主要放置一些C语句代码 包括预处理指令 函数定义等 扩展名为 h的头文件 也称为include文件 主要放置一些结构类型定义 函数说明 常量定义等 在C中 包括很多扩展名为 h的头文件 案例实施 程序重构 添加Student h头文件typedefstruct intyear 年intmonth 月intday 日 Date typedefstruct charname 40 学生姓名charsno 20 学号charsid 20 身份证号码Datebirth 出生日期charaddress 200 家庭地址 Student 案例实施 程序重构 添加function h头文件 函数说明intinsert 该函数添加新的学生信息 intquery intupdate intdelete intlist intsave intload 案例实施 程序重构 将各个功能函数放置到function c文件中需要在function c源文件开头的预处理指令部分加上如下的 include预处理指令 include include Student h 为StudentManager c添加必要的头文件 include Student h include function h 具体各文件代码请参考教材 案例实施 程序重构 intinsert if current 50 printf 对不起 由于人数已满 不能再添加新学生信息 n return1 printf 请输入学生姓名 scanf s stu current name printf 请输入学生学号 scanf s stu current sno printf 请输入学生身份证号码 scanf s stu current sid printf 请输入学生出生日期 scanf 格式 年 月 日 d d d 案例实施 修改函数完善程序功能 intquery charname 40 inti printf 请输入要查询的学生的姓名 scanf s name for i 0 i current i if strcmp stu i name name 0 printf 学生信息如下 n printf 姓名 s n stu i name printf 学号 s n stu i sno printf 身份证号 s n stu i sid printf 出生日期 d d d n stu i birth year stu i birth month stu i birth day printf 地址 s n stu i address return0 printf 该学生不存在 n n return1 案例实施 修改函数完善程序功能 intupdate charname 40 inti printf 请输入要修改的学生的姓名 scanf s name for i 0 i current i if strcmp stu i name name 0 printf 请输入学生姓名 scanf s stu i name printf 请输入学生学号 scanf s stu i sno printf 请输入学生身份证号码 scanf s stu i sid printf 请输入学生出生日期 格式 年 月 日 scanf d d d 案例实施 修改函数完善程序功能 intdelete charname 40 inti printf 请输入要删除的学生的姓名 scanf s name for i 0 i current i if strcmp stu i name name 0 if i current 1 memmove 案例实施 修改函数完善程序功能 设置程序为可调试状态设置程序的断点启动程序调试单步跟踪你的程序结束调试 调试程序 已经完成对完整学生信息的管理 包括 学生姓名 学号 身份证号 出生日期及家庭地址的管理 现在到了你管理完整图书信息的时候了 继续完善你的案例程序 使之可以管理图书的完整信息 包括 图书名称 图书ISBN号 作者 出版社 出版时间 价格 具体要求 1 编写能管理图书的完整信息的案例程序 2 将程序代码按照逻辑功能放置到不同的源文件中 3 在CodeBlocks环境下调试你的程序 使之正确运行 学生练习 共同体也是一种结构类型 只是共同体中的成员内容被存放到同一段内存单元中 共同体所占内存单元的大小按最大的成员决定 定义的共同体的关键字是union 定义如下一个用于表示身高的共同体Height如下 unionHeight doubleheightInMeter intheightInCentimeter 在这个共同体中 具有两个成员 heightInMeter及heightInCentimeter 它们占用同一段内存单元 因为double数据类型占用8个字节 而int数据类型值占用4个字节 所以Height共同体占用8个字节 定义一个变量 unionHeightcliton cliton heightInMeter 1 82 此时 你使用 米 来表示cliton的身高 cliton heightInCentimeter 182 此时 你使用 厘米 来表示cliton的身高 拓展 union共同体 在任何时刻 都只有一个成员是有效的 includeunionHeight doubleheightInMeter intheightInCentimeter intmain unionHeightcliton cliton heightInCentimeter 1 82 printf Cliton的身高 d n cliton heightInMeter return0 运行该程序 将显示不正确的结果 1 拓展 union共同体 枚举类型也是一种结构类型 如果一个变量只有几种可能的值 可以定义为枚举类型 所谓 枚举 就是将变量可能的值一一列举出来 这些被枚举出来的值称为枚举元素 使用enum关键字定义枚举类型 例如 定义一个表示一周所有天的名称的枚举类型 enumWeekday Sunday Monday Tuesday Wednesday Thursday Friday Saturday 基于这个枚举类型 可以定义变量 enumWeekdayworkday 并可以进行赋值 workday Monday 拓展 枚举类型 includetypedefenum Sunday Monday Tuesday Wednesday Thursday Friday Saturday Weekday intmain Weekdayworkday workday Monday printf d n workday return0 运行这个程序 将输出 1 这是因为C语言将枚举类型中的枚举元素作为整数来进行管理 将枚举类型中的第一个枚举元素赋以整数0 第二个枚举元素被赋以1 以此类推 拓展 枚举类型 可以在定义枚举类型时强制某个枚举元素的整数值 例如 typedefenum Sunday 10 Monday Tuesday Wednesday Thursday Friday Saturday Weekday 此时 如果定义枚举变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络管理员职业素养及试题及答案
- 供应链管理中的风险考题及答案
- 在实践中加深对知识的理解2025年计算机二级VB考试试题及答案
- 行政管理考试防范的知识盲点:试题及答案
- 关于网络管理员考试的新探讨及试题答案
- 2025玉米买卖合同
- 弘扬学生团结互助的精神计划
- 行政法理论创新的路径选择试题及答案
- 代码抽象与接口设计试题及答案
- 2025年软件设计师复习全账本及试题及答案
- 2025届高考作文复习:时评类作文分析 课件
- 老年期常见心理问题的护理(老年护理课件)
- T-CAICI 89-2024 通信建设安全生产标准化基本要求
- 《民法典》2024年知识考试题库(含答案)
- 江苏省启东市高中数学 第二章 平面向量 第7课时 2.3.2 向量的坐标表示(2)教案 苏教版必修4
- 137案例黑色三分钟生死一瞬间事故案例文字版
- 高中英语外研版 单词表 必修1
- 临床流行病学与循证医学-临床实践指南的制定与评价
- 【魔镜洞察】2024药食同源保健品滋补品行业分析报告
- 2023届高考地理一轮复习跟踪训练-石油资源与国家安全
- 14.有趣的光影(课件)-美术六年级下册
评论
0/150
提交评论