《处理复杂数据》PPT课件.ppt

上传人:小飞机 文档编号:5487949 上传时间:2023-07-12 格式:PPT 页数:28 大小:365.50KB
返回 下载 相关 举报
《处理复杂数据》PPT课件.ppt_第1页
第1页 / 共28页
《处理复杂数据》PPT课件.ppt_第2页
第2页 / 共28页
《处理复杂数据》PPT课件.ppt_第3页
第3页 / 共28页
《处理复杂数据》PPT课件.ppt_第4页
第4页 / 共28页
《处理复杂数据》PPT课件.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《处理复杂数据》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《处理复杂数据》PPT课件.ppt(28页珍藏版)》请在三一办公上搜索。

1、第七章 处理复杂数据,主要内容,案例:处理“学生信息管理系统”的完整信息使用结构类型表示学生完整信息案例实施调试程序学生练习拓展小结,在本章,将继续完善“学生信息管理系统”案例程序,在上一章案例程序的基础上,可以实现对学生完整信息的管理。具体包括:(1)录入学生的完整信息,包括:姓名、学号、身份证号码、年龄、出生日期、家庭地址;(2)按姓名查询学生信息,并可列出查询得到的学生的完整信息;(3)修改学生信息,包括:姓名、学号、身份证号码、年龄、出生日期、家庭地址;(4)删除指定的学生信息;(5)列表显示所有学生的完整信息。,处理“学生信息管理系统”完整信息,为了表示复合数据,必须先定义一个复合结

2、构类型,C语言提供了一个关键字struct来定义一个复合结构类型。复合结构类型是对C语言基本数据类型的扩充。在定义了复合结构类型以后,可以为定义的复合结构类型定义变量。为了表示一个“学生”,可以定义一个结构类型:struct Studentchar name40;/学生姓名char sno20;/学号char sid20;/身份证号码int age;/年龄char address200;/家庭地址;,使用结构表示学生信息-定义结构,结构类型定义的一般格式为:struct 结构类型名成员类型 成员名称;成员类型 成员名称;注意,不要遗漏结构类型定义的“”后面的“;”。其中的“成员类型”可以是C语

3、言基本数据类型,也可以是已经定义的其他结构类型。这也说明,结构类型的定义是可以嵌套的。,使用结构表示学生信息-定义结构,为了更好的表示学生的基本信息,可用出生日期来替代“年龄”。struct Dateint year;/年int month;/月int day;/日;struct Studentchar name40;/学生姓名char sno20;/学号char sid20;/身份证号码struct Date birth;/出生日期char address200;/家庭地址;,使用结构表示学生信息-定义结构,一旦定义了新的结构类型,可以定义该结构类型的变量。例如,为了表示一个学生信息,基于已

4、经定义的结构类型Student,可以定义一个变量:struct Student stu;变量stu称为结构变量。定义结构变量的一般形式如下:struct 结构类型名 变量1,变量2,;,表示学生信息-定义结构类型变量,可以使用typedef关键字重新定义Student结构类型如下:typedef structint year;/年int month;/月int day;/日 Date;typedef structchar name40;/学生姓名char sno20;/学号char sid20;/身份证号码Date birth;/出生日期char address200;/家庭地址 Studen

5、t;定义后就可以直接用Date和Student表示结构类型了。,表示学生信息-定义结构类型变量,可以在定义结构类型的同时定义结构变量:typedef structint year;/年int month;/月int day;/日 Date;struct Studentchar name40;/学生姓名char sno20;/学号char sid20;/身份证号码Date birth;/出生日期char address200;/家庭地址 stu;(1)可以使用也可以不使用typedef定义结构类型,它们可同时存在;(2)在定义结构类型的同时定义结构变量,则不能使用typedef关键字,表示学生信

6、息-定义结构类型变量,对结构变量的访问,就是分解为对结构变量各个成员的访问。访问结构变量成员的一般形式是:结构变量名.成员名strcpy(stu.name,张三);strcpy(stu.sno,2010060501);stu.birth.year=1990;stu.birth.month=10;stu.birth.day=12;strcpy(stu.address,广东省广州市天河区天河北路123号);printf(学生基本信息:姓名=%s,学号=%s,身份证=%s,出生日期=%d-%d-%d,家庭地址=%sn,stu.name,stu.sno,stu.sid,stu.birth.year,s

7、tu.birth.month,stu.birth.day,stu.address);,表示学生信息-访问结构变量成员,在定义结构变量的同时,也可以对结果变量进行初始化。在定义结构变量的同时对结构变量进行初始化,只需在结构变量的后面加上赋值运算符,并把成员对应的值按定义结构类型时的顺序列出来,中间用逗号分隔开,并用一对“”括起来,放在赋值运算符的后面即可包含在“”中的值必须与结构变量成员的个数和类型相同。,表示学生信息-访问结构变量成员,int displayStudent(Student stu)printf(-n);printf(学生基本信息:姓名=%s,学号=%s,身份证=%s,出生日期=

8、%d-%d-%d,家庭地址=%sn,stu.name,stu.sno,tu.sid,tu.birth.year,stu.birth.month,stu.birth.day,stu.address);printf(-);return 0;displayStudent(stu);,表示学生信息-结构类型作为参数,C源文件包括两种类型:扩展名为.c的源文件和扩展名为.h头文件,它们都称为工程源文件。其中,扩展名为.c的源文件中主要放置一些C语句代码,包括预处理指令、函数定义等;扩展名为.h的头文件,也称为include文件,主要放置一些结构类型定义、函数说明、常量定义等。在C中,包括很多扩展名为.h

9、的头文件。,案例实施程序重构,添加Student.h头文件 typedef structint year;/年int month;/月int day;/日 Date;typedef structchar name40;/学生姓名char sno20;/学号char sid20;/身份证号码Date birth;/出生日期char address200;/家庭地址 Student;,案例实施程序重构,添加function.h头文件/函数说明int insert();/*该函数添加新的学生信息*/int query();int update();int delete();int list();in

10、t save();int load();,案例实施程序重构,将各个功能函数放置到function.c文件中需要在function.c源文件开头的预处理指令部分加上如下的#include预处理指令:#include#include Student.h“为StudentManager.c添加必要的头文件#include Student.h#include function.h“具体各文件代码请参考教材。,案例实施程序重构,int insert()if(current=50)printf(对不起,由于人数已满,不能再添加新学生信息n);return 1;printf(请输入学生姓名:);scanf(

11、%s,stucurrent.name);printf(请输入学生学号:);scanf(%s,stucurrent.sno);printf(请输入学生身份证号码:);scanf(%s,stucurrent.sid);printf(请输入学生出生日期:);scanf(格式(年-月-日):%d-%d-%d,案例实施修改函数完善程序功能,int query()char name40;int i;printf(请输入要查询的学生的姓名:);scanf(%s,name);for(i=0;icurrent;i+)if(strcmp(stui.name,name)=0)printf(学生信息如下n);prin

12、tf(姓名:%sn,stui.name);printf(学号:%sn,stui.sno);printf(身份证号:%sn,stui.sid);printf(出生日期:%d-%d-%dn,stui.birth.year,stui.birth.month,stui.birth.day);printf(地址:%sn,stui.address);return 0;printf(该学生不存在!nn);return 1;,案例实施修改函数完善程序功能,int update()char name40;int i;printf(请输入要修改的学生的姓名:);scanf(%s,name);for(i=0;icu

13、rrent;i+)if(strcmp(stui.name,name)=0)printf(请输入学生姓名:);scanf(%s,stui.name);printf(请输入学生学号:);scanf(%s,stui.sno);printf(请输入学生身份证号码:);scanf(%s,stui.sid);printf(请输入学生出生日期,格式(年-月-日):);scanf(%d-%d-%d,案例实施修改函数完善程序功能,int delete()char name40;int i;printf(请输入要删除的学生的姓名:);scanf(%s,name);for(i=0;icurrent;i+)if(st

14、rcmp(stui.name,name)=0)if(i(current-1)memmove(,案例实施修改函数完善程序功能,设置程序为可调试状态 设置程序的断点 启动程序调试 单步跟踪你的程序 结束调试,调试程序,已经完成对完整学生信息的管理,包括:学生姓名、学号、身份证号、出生日期及家庭地址的管理,现在到了你管理完整图书信息的时候了。继续完善你的案例程序,使之可以管理图书的完整信息,包括:图书名称、图书ISBN号、作者、出版社、出版时间、价格。具体要求:(1)编写能管理图书的完整信息的案例程序;(2)将程序代码按照逻辑功能放置到不同的源文件中;(3)在Code Blocks环境下调试你的程序

15、,使之正确运行。,学生练习,共同体也是一种结构类型,只是共同体中的成员内容被存放到同一段内存单元中,共同体所占内存单元的大小按最大的成员决定。定义的共同体的关键字是union。定义如下一个用于表示身高的共同体Height如下:union Heightdouble heightInMeter;int heightInCentimeter;在这个共同体中,具有两个成员:heightInMeter及heightInCentimeter,它们占用同一段内存单元,因为double数据类型占用8个字节,而int数据类型值占用4个字节,所以Height共同体占用8个字节。定义一个变量:union Heigh

16、t cliton;cliton.heightInMeter=1.82;此时,你使用“米”来表示cliton的身高,cliton.heightInCentimeter=182;此时,你使用“厘米”来表示cliton的身高。,拓展union共同体,在任何时刻,都只有一个成员是有效的#include union Heightdouble heightInMeter;int heightInCentimeter;int main()union Height cliton;cliton.heightInCentimeter=1.82;printf(Cliton的身高:%dn,cliton.heightI

17、nMeter);return 0;运行该程序,将显示不正确的结果:1。,拓展union共同体,枚举类型也是一种结构类型。如果一个变量只有几种可能的值,可以定义为枚举类型。所谓“枚举”,就是将变量可能的值一一列举出来,这些被枚举出来的值称为枚举元素。使用enum关键字定义枚举类型。例如,定义一个表示一周所有天的名称的枚举类型:enum WeekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;基于这个枚举类型,可以定义变量:enum Weekday workday;并可以进行赋值:workday=Monday;,拓展枚举类型,

18、#include typedef enumSunday,Monday,Tuesday,Wednesday,Thursday,Friday,SaturdayWeekday;int main()Weekday workday;workday=Monday;printf(%dn,workday);return 0;运行这个程序,将输出:1。这是因为C语言将枚举类型中的枚举元素作为整数来进行管理:将枚举类型中的第一个枚举元素赋以整数0,第二个枚举元素被赋以1,以此类推。,拓展枚举类型,可以在定义枚举类型时强制某个枚举元素的整数值,例如:typedef enumSunday=10,Monday,Tues

19、day,Wednesday,Thursday,Friday,SaturdayWeekday;此时,如果定义枚举变量并输出其中的值,代码如下:Weekday workday;workday=Monday;printf(%dn,workday);则将输出11。枚举类型的变量可以参与数值运算,例如:Weekday workday;workday=Monday;printf(%dn,workday+1);将输出12。,拓展枚举类型,本章介绍了C语言程序设计的“结构类型”,并应用结构类型完善了案例程序“学生信息管理系统”的设计,通过使用结构类型实现了对完整的学生信息的管理。同时,本章也介绍了如何在Code Blocks中实现对多工程文件的管理,最后介绍了解决程序运行时Bug的利器-跟踪调试。,小结,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号