客观对象的描述结构体程序设计.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级语言程序设计 第8章 客观对象的描述 —结构体程序设计 本章要解决的问题 1.学生成绩管理系统的实现(数组和链表) 2.志愿者管理问题 3.扑克牌洗牌和发牌模拟 学习目标 理解客观对象的描述方法—结构体 掌握结构体类型变量的定义和使用方法 学会结构体或指向结构体的指针作为函数参数的 了解自引用结构体及链表结构 了解共用体类型和枚举类型的定义和使用方法 1 学生成绩管理系统的实现 问题描述:假设我们要为学校教务部门开发一个学生成绩管理系统,要求能用这个系统录入学生成绩、修改学生成绩、统计学生成绩、查询学生成绩、输出学生成绩(报表)。为了简单,现在只考虑某一门课程的成绩,每个同学的成绩包括平时、期中、期末和平均成绩。 分析 它的主流程是 当时还没有能力实现,每个函数模块用了一个树桩stub或存根先占在那里 void input(void) { printf(“ok\n”); } 现在到了可以实现的时候了 假设现在要管理的某门课程的学生数是固定的60,首先要解决的是如何存放这60个学生的某门课程的成绩相关的信息? 某门课程成绩相关的信息应该包括: 姓名、学号、平时成绩、期中成绩、期末成绩、总评成绩 用前面学过的方法:数组 用多个一维数组 char *num[60]; char *name[60]; int dailyGrade[60]; int midGrade[60]; int endGrade[60]; float average[60]; 这时各个模块函数的原型可定义为 void input (char *num, char *name, int dg[], int mg[], int eg[], int ag[]); … 其它几个略 void print (char *num, char *name, int dg[], int mg[], int eg[], int ag[]); 请大家自己实现这个版本 这种方法有什么特点? 数据在内存中的分布比较分散 这样的一组属性数据所表达的客观对象怎么定义呢? 能不能像整数用int类型,字符用char类型那样定义问题中的对象为一种类型呢?如学生类型 如果能,就可以用这个自定义的学生类型去创建问题中涉及的学生对象啦。 学生对象的描述 你能不能给学生下个定义? 不同的人可能关注学生不同的一组特征/属性 如:学生处关心的是学生注册相关的属性 姓名,学号,年龄,性 别,出生日期,籍贯,家庭住址,…. 不同的学生只是属性值不同而已 教务部门把学生对象描述成 学号,姓名,平时成绩,期中成绩,期末成绩,总评成绩 确定了对象的属性,对象就基本确定了 C语言允许用结构体类型表达客观世界的对象 struct 结构体类型名{ 成员列表; }; 其中struct 是关键字,成员列表给出成员的类型和名字,注意这个定义的结尾必须跟一个分号;表示结构体类型定义结束。 例1 学生结构体类型的定义 (成绩信息相关的) struct student{ char *num; char *name; int dailyGrade; int midGrade; int endGrade; float average; }; 这样我们就定义了一种新的类型它叫struct student,它与我们熟悉的int,float等具有同等地位。 例2 平面上的点结构体类型定义 struct point{ int x; int y; }?; 任何一类客观世界的对象均可抽象成一个结构体类型 结构体变量的定义和初始化 有了结构体类型之后就可以用它定义具体的客观对象(结构体类型的变量) struct student li, wang; struct student zhang; 注意现在的类型名是 struct student 对象li, wang, zhang的属性是什么? 定义之后分别给各个成员赋值,要用成员运算符 . 如 li.num=00002; li.name=lihong; li.dailyGrade=85; li.midGrade=95; li.endGrade=88; li.average=89.2; 在定义时直接初始化 struct student zhang = { 0001, zhangqiang , 80, 70, 100, 83.3 }; 结构体类型的变量支持整体赋值 wang = li; 有时在定义结构类型

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档