C++综合应用实例1课件

上传人:文**** 文档编号:240744961 上传时间:2024-05-04 格式:PPT 页数:99 大小:1.24MB
返回 下载 相关 举报
C++综合应用实例1课件_第1页
第1页 / 共99页
C++综合应用实例1课件_第2页
第2页 / 共99页
C++综合应用实例1课件_第3页
第3页 / 共99页
点击查看更多>>
资源描述
C/C+综合应用实例1、数据代数运算系统的设计(相当于计算器)2、学生成绩管理系统的设计3、三角形面积验证程序的设计1精选ppt1、数据代数运算系统的设计(相当于计算器)问题:设计设计一个一个计计算器程序,完成整数算器程序,完成整数间间的加、减、乘、除的加、减、乘、除以及求运算,以及累加求和、以及求运算,以及累加求和、计计算算n!等。!等。(1)计算器程序设计文档 (2)使用TC开发的dos界面程序;(3)程序运行演示;这样的系统不好,我们可以将其改写为图形界面 (4)图形界面程序演示;(5)图形界面程序源代码2精选ppt2、学生成绩管理系统的设计例2:编写程序,实现学生成绩管理:要求实现 用用户户登登录录,显显示主菜示主菜单单,学生信息的学生信息的输输入入,学生信息的学生信息的输输出,出,按学号按学号查询查询学生信息,学生信息,按成按成绩绩降序排序,降序排序,追加学生信息,追加学生信息,把学生信息保存到文件,把学生信息保存到文件,从文件中从文件中导导出学生信息出学生信息 等有关的功能。等有关的功能。3精选ppt关于该设计题目的有关问题与分析:(1)采用的程序)采用的程序设计设计方法的方法的选择选择?A)面向面向结结构的构的设计设计方法?方法?B)面向面向对对象的象的设计设计方法?方法?(2)运行界面的)运行界面的选择选择?A)DOS界面的界面的设计设计?B)图图形界面(形界面(Windows界面)?界面)?(3)数据)数据类类型的定型的定义义 (结结构体或构体或类类的定的定义义)(4)(数据)(数据结结构的定构的定义义)存放数据的方式)存放数据的方式 顺顺序表(数序表(数组组存放一个班学生信息)存放一个班学生信息)链链表(利用指表(利用指针针存放一个班的学生信息)存放一个班的学生信息)4精选ppt该题目的分析与设计:本本题题目可以采用目可以采用4种方式种方式实现实现:(1)采用面向)采用面向结结构的程序构的程序设计设计方法,用方法,用顺顺序序表(数表(数组组和和结结构体)构体),DOS界面。界面。(2)采用面向)采用面向结结构的程序构的程序设计设计方法,用方法,用链链表表(指(指针针和和结结构体),构体),DOS界面界面(3)采用面向)采用面向对对象的程序象的程序设计设计方法,用方法,用顺顺序表序表(定(定义顺义顺序表序表类类),DOS界面界面(4)采用面向)采用面向对对象的程序象的程序设计设计方法,用方法,用链链表表(定(定义义链链表表类类),),DOS界面界面 另外,另外,对这对这4种方式,都可以采用种方式,都可以采用Windows(图图形形)界面界面实现实现。5精选ppt(1)采用面向)采用面向结结构的程序构的程序设计设计方法方法 用用顺顺序序表(数表(数组组和和结结构体)构体)DOS界面界面6精选ppt采用面向采用面向结结构的程序构的程序设计设计方法,用方法,用顺顺序序表表(数(数组组和和结结构体),构体),DOS界面界面处理过程:(1)定)定义义学生学生结结构体;构体;(2)定)定义义学生数学生数组组(一般放到主函数中定一般放到主函数中定义义)这这里要注意,学生人数里要注意,学生人数问题问题(3)按功能要求定)按功能要求定义义各有关功能函数;各有关功能函数;这这里要注意,每个函数的参数及其函数的返回里要注意,每个函数的参数及其函数的返回值值(4)设计设计主函数,主函数,实现实现系系统统所要求的功能。所要求的功能。思考:思考:假假设设将(将(2)定)定义义成一个成一个“班班级结级结构体构体”,那么,整个,那么,整个系系统该统该如何如何实现实现););7精选ppt(1)定)定义义学生学生结结构体;构体;struct st char Class20;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float ave;/平均成绩 int order;/名次 ;8精选ppt按功能要求定按功能要求定义义各有关功能函数各有关功能函数 (1)学生信息的)学生信息的输输入入(输输入学生的信息,存放到数入学生的信息,存放到数组组s中,返回中,返回实际实际学学生个数生个数给给n,注意:注意:输输入的入的结结束条件如何束条件如何设计设计?)void iuput(st s int*n);(2)将数)将数组组s中,中,n个学生信息个学生信息输输出,要求:按一定得格式出,要求:按一定得格式输输出学生信出学生信息(最好是表格格式,并且当学生人数息(最好是表格格式,并且当学生人数较较多多时时,应应按按页显页显示)示)void pint(st s,int n)(3)从数)从数组组s,n个学生信息中,个学生信息中,查询查询学号学号为为x的学生信息,并返回的学生信息,并返回查查找找成功是(位置号)否(成功是(位置号)否(-1)。)。int find(st s,int n,int x)9精选ppt(4)将数将数组组s,n个学生信息中按平均成个学生信息中按平均成绩绩降序排序,形成排序数降序排序,形成排序数组组y。sort(st s,int n,st y)(5)在数在数组组s,n个学生信息的未,个学生信息的未,输输入追加学生信息。入追加学生信息。该该功能的功能的实现实现,可以使用(,可以使用(1)输输入学生信息功能入学生信息功能(6)将数)将数组组s,n个学生信息,保存到文件个学生信息,保存到文件f中。中。save(st s,int n,char*f)(7)从文件从文件f中中导导出学生信息出学生信息,存放到数存放到数组组s中,并返回中,并返回实际实际学生人数学生人数n。load(char*f,st s,int&n)10精选ppt给出每个函数的具体实现 同学同学们们自己自己给给出各函数的源代出各函数的源代码码。11精选ppt设计设计主函数,主函数,实现实现系系统统所要求的功能所要求的功能定定义义学生数学生数组组:这这里要注意,学生人数里要注意,学生人数问题问题Void main()st*t;定定义义数数组组 int m;数数组组的最大空的最大空间间 int n;实际实际学生人数学生人数 m=1000;st=new stm;n=0;显显示菜示菜单单,分,分别调别调用有关的函数。用有关的函数。12精选ppt(3)采用面向)采用面向对对象的程序象的程序设计设计方法方法 用用顺顺序表序表(定(定义义顺顺序表序表类类)DOS界面界面13精选ppt采用面向采用面向结结构的程序构的程序设计设计方法,用方法,用顺顺序表序表(定(定义义顺顺序表序表类类),),DOS界面界面处理过程:(1)定)定义义学生学生类类;(2)定)定义义班班级类级类(3)设计设计主函数,定主函数,定义义有关的有关的对对象,并象,并调调用有关的函数,用有关的函数,完成系完成系统统功能。功能。分析:分析:由于成由于成绩绩管理是由多名学生构成的,所以需要定管理是由多名学生构成的,所以需要定义义学生学生类类;另外,由多个学生,形成一个班或年另外,由多个学生,形成一个班或年级级,所以,所以还还需要定需要定义义一一个个班班级级(年(年级级)类类14精选ppt(1)定)定义义学生学生类类;class st private:char Class20;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float ave;/平均成绩 int order;/名次 public:分析:关于学生分析:关于学生类类,该该有哪些函数成有哪些函数成员员?;15精选ppt学生学生类类,函数成,函数成员员的定的定义义与与实现实现public:(1)构造函数的定构造函数的定义义:利用参数利用参数传递传递,形成一个学生,形成一个学生 有有键盘输键盘输入形成一个学生入形成一个学生 (2)输输出学生信息函数;出学生信息函数;16精选ppt(2)定)定义义班班级类级类class bj private:int m;/私有私有变变量,量,顺顺序表序表实实例的最大例的最大长长度度 int n;/私有私有变变量,量,顺顺序表序表实实例的当前例的当前长长度度 st *s;/存放学生的数存放学生的数组组(利用指(利用指针实现针实现)public:分析:关于班分析:关于班级类级类,该该有哪些函数成有哪些函数成员员?;17精选ppt班班级类级类,函数成,函数成员员的定的定义义与与实现实现public:(1)构造函数的定构造函数的定义义:利用参数传递,形成班级 由数由数组组s中,中,n各学生,形成班各学生,形成班级级 bj(st s int n);有键盘输入形成班级 学生信息的学生信息的输输入入(输输入的入的结结束条件如何束条件如何设计设计?)bj();有文件导入,形成班级;从文件从文件f中中导导出学生信息出学生信息,bj(char*f)18精选ppt其它成其它成员员函数函数 (2)输输出学生信息,要求:按一定得格式出学生信息,要求:按一定得格式输输出学生信息出学生信息(最好是表格格式,并且当学生人数(最好是表格格式,并且当学生人数较较多多时时,应应按按页显页显示)示)void pint()(3)查询查询学号学号为为x的学生信息,并返回的学生信息,并返回查查找成功是(位置号)找成功是(位置号)否(否(-1)。)。int find(int x)19精选ppt(4)按平均成按平均成绩绩降序排序,形成新降序排序,形成新类类。st sort()(5)在学生信息的未,在学生信息的未,输输入追加学生信息。入追加学生信息。注意:注意:输输入的入的结结束条件如何束条件如何设计设计?void input()(6)在学生信息的未,通在学生信息的未,通过过文件文件f,追加学生信息。追加学生信息。void app(char*f)(7)保存到文件)保存到文件f中。中。void save(char *f)20精选ppt给出每个函数的具体实现 同学同学们们自己自己给给出各函数的源代出各函数的源代码码。21精选ppt设计设计主函数,主函数,实现实现系系统统所要求的功能所要求的功能定定义义有关的有关的对对象象Void main()bj b;定定义义班班级对级对象象 st s;定定义义学生学生对对象象 显显示菜示菜单单,分,分别调别调用有关的函数。用有关的函数。22精选ppt链表成绩管理1.链表的定义与结构描述2.链表的有关操作实现3.利用链表结构实现成绩管理 (1)成绩管理的功能分析 (2)成绩管理的类定义与实现3 采用面向采用面向对对象的程序象的程序设计设计方法,方法,用用链链表表(定(定义义链链表表类类),),DOS界面界面23精选ppt1 单链单链表表通过指针把它的一串存储结点链接成一个链 存储结点由两部分组成:data字段 next 字段 data next头指针指向下一个节点的指针附加头结点结点尾指针24精选ppt单链表的结点类型struct ListNode int data;ListNode *next;data next问题问题(有关有关链链表的操作表的操作):n 如何定如何定义义(申明申明)一个一个链链表呢表呢?n 如何形成一个如何形成一个链链表呢表呢?n 在在链链表中指定的位置表中指定的位置处处,如何插入一个如何插入一个节节点呢点呢?n 在在链链表中如何表中如何删删除一个除一个节节点呢点呢?n 一个一个链链表中表中,有几个数据元素呢有几个数据元素呢?25精选ppt如何定如何定义义(申明申明)一个一个链链表呢表呢?一个链表一般只要告诉该链表的头指针即可。定义链表:struct ListNode *first 该链该链表所有的操作,全部是从表所有的操作,全部是从“first”开始,开始,并且,并且,该该指指针针永永远远指向第一个位置指向第一个位置。26精选ppt一个一个链链表是如何形成呢表是如何形成呢?一个链表的形成,一般需要两步:First(2)在空)在空链链表的基表的基础础上不断的插入上不断的插入节节点,从而形成点,从而形成链链表。表。一般分一般分为为:在前插入、在后插入两种:在前插入、在后插入两种(1)首先形成一个空)首先形成一个空链链表:表:NULL(0)27精选ppt构造空单链表LinkList()first=new ListNode;first-next=0;first(a)建空表建空表28精选ppt建立建立单链单链表表头头插法建立插法建立单链单链表表图图示示 first(a)建空表建空表c1ss 指向新申指向新申请请的的结结点点sdatac1(b)申申请请新新结结点并点并赋值赋值firstlast(c)插入第一个插入第一个结结点点 last=s last=sc1执执行的行的语语句句组为组为:snextfirstnext;firstnexts;ci1firstc2c1cis(d)插入第插入第i个元素个元素头头插法插法29精选ppt尾插法建表尾插法建表 尾插法建表尾插法建表图图示示 c1ss 指向新申指向新申请请的的结结点空点空间间sdatac1(b)申申请请新新结结点并点并赋值赋值firstL(a)建空表建空表lastfs(c)插入第一个插入第一个结结点点c1lastlasts;last指向指向链链表的表的结结尾尾c1firstc2last nexts;(d)插入第二个插入第二个结结点点sr将新建的将新建的节节点插入到点插入到链链表的最后表的最后尾指尾指针针30精选ppt在头结点之后插入一个新结点void LinkList:insert(int a)ListNode *temp;temp=new ListNode;temp-data=a;temp-next=0;temp-next=first-next;first-next=temp;执执行的行的语语句句组为组为:snextfirstnext;firstnexts;ci1firstc2c1cis 插入第插入第i个元素个元素31精选ppt单链表的建立(调用插入函数,可以创建链表:形成具有n个元素的链表)void LinkList:create(int n)int i=0;int data;cout endlplease input the data of the list;while(idata;insert(data);i+;32精选ppt查找单链表中第i个结点算法 ListNode*FindIndex(const int i)ListNode *pif(i=-1)return first;p=first-next;/int j=0;while(p!=NULL&j next;j+;return p;33精选ppt单链表插入算法(第i节点前插入)La1ai1aianpre(a)寻寻找第找第 i1 个个结结点点es(b)申申请请新的新的结结点点preLa1ai1aianes 与与ai连链连链:snextprenextai-1与与ai断断链链,插入插入 e:prenexts;(c)插入插入34精选ppt单链表插入算法ListNode*Insert(int value,int i)/插入数据内容为value的新结点,为第i个结点。ListNode*p,*q;q=new ListNode;q-data=value;p=FindIndex(i-1);if(p=NULL)return NULL;q-next=p-next;p-next=q;return q;pLa1ai1aianeq 与与ai连链连链:snextprenextai-1与与ai断断链链,插入插入 e:prenexts;(c)插入插入35精选ppt单链表删除算法 void RemoveAfter(ListNode*link)/删除参数link的后继结点 ListNode*newlink;if(link!=NULL)newlink=link-next;link-next=newlink-next link-next=link-next-nexy delete newlink;36精选ppt求长度算法int Length()ListNode *p=first-next;int count=0;while(p!=NULL)p=p-next;count+;return count;La0ai1aian()p37精选ppt单链单链表的表的类类定定义义分析分析1数据成数据成员员:两个指向两个指向结结点的指点的指针针:头头指指针针和尾指和尾指针针 2成成员员函数函数:(1)构造函数构造函数 /创创建并形成一个初始建并形成一个初始链链表表 (2)析构函数析构函数 /删删除构造函数所除构造函数所创创建的建的链链表表 (3)插入元素函数插入元素函数 /在表的第在表的第i 个位置个位置处处,插入数据或在表尾插入元素插入数据或在表尾插入元素 (4)删删除元素函数除元素函数 /删删除表中数除表中数值为值为x的元素的元素 (5)查查找元素找元素 /在表中在表中查查找数据找数据为为x的元素在表中的位置的元素在表中的位置 (6)输输出出链链表表 /从从头头到尾到尾输输出表中的所有的元素出表中的所有的元素 (7)判定判定链链表是否表是否为为空空 /为为了了进进行行删删除除进进行的一种判定行的一种判定 (8)将将链链表表设设置置为为一个空表一个空表 /(9)计计算算链链表的表的长长度度 /统计链统计链表中元素个数表中元素个数 (10)将将链链表元素表元素值值写到文件中写到文件中 (11)将文件中的数据将文件中的数据读读到到链链表中表中 38精选pptclass LinkList /链链表表类类 private:ListNode *first,*last;/链链表的表表的表头头指指针针和尾指和尾指针针 public:LinkList()LinkList();/析构函数析构函数 ListNode *Insert(int value,int i);Listnode *insert(intvalue)int Remove(int value);ListNode*FindIndex(int value);void PrintList();/遍遍历单链历单链表表 void MakeEmpty();/将将链链表置表置为为空表空表 int Length()const;/计计算算链链表的表的长长度度 int NotNull();/判断是否是空表判断是否是空表 void create();单链单链表的表的类类定定义义39精选ppt三、利用三、利用链链表表结结构构实现实现成成绩绩管理管理 (1)成绩管理的功能分析 (2)成绩管理的类定义与实现要求:1简单的系统与功能分析2建立数据结构表3要建立一个测试的数据表,至少要有20个测试数据4使用数据链表实现数据的:录入、查询、修改、增加、删除、统计、输出,40精选ppt一、定一、定义义学生成学生成绩绩管理系管理系统统的数据的数据结结构表构表序号 成员名 数据类型 长度 字段含义 1 Class int 班级 2 num int 学号 3 name char 8 姓名 4 kc0 float 电子技术 5 kc1 float C+程序设计 6 kc2 float 多媒体技术 7 kc3 float 大学英语 8 kc4 float 高等数学 9 kc5 float 大学体育 10 Ave float 平均成绩 11 Order int 名次 13 next ”自定义的结构类型“指针,指向下一个结点41精选ppt二、根据所要求的成绩管理系统定义类系统的功能要求:使用数据链表实现如下功能:初始链表的建立,录入、查询、修改、增加、删除、统计、输出等功能。(一一)数据定数据定义义(类类的数据成的数据成员说员说明明):一个指向学生一个指向学生结结构的构的头头指指针针;(注意注意:该该指指针针就是就是链链表的表的头头)struct node int Class;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float ave;/平均成绩 int order;/名次 node*next;/指针;class cj private:struct node *head;public:待定待定义义的各功能函数的各功能函数 结结点定点定义义类类定定义义42精选ppt(二)操作定义(函数功能划分划分)1.初始初始链链表的建立表的建立:利用类的构造函数构造函数,建立一个只有附加附加头结头结点点的空空链链表表;2.录录入入(增加一个增加一个)学生信息学生信息:由键盘一个一个输入学生的信息,并链到链表中;(注意:什么时候停止输入呢?即:输入的结束条件?)如何链到链表上呢?(在表的尾上追加尾上追加)3.追加追加结结点点:在链表尾上链上一个结点(p所指的结点):43精选ppt4.链链表的建立表的建立:在空链表已经建立的基础上,向链表中提供信息(注意:采用先提供的信息在表的前面,依次向后);可以分为两种方式:(1)由键盘一个一个输入学生的信息,并链到链表中;(可以直接使用添加学生操作;即使用2)(2)利用文件将文件中的内容利用文件将文件中的内容读读入入,并并链链到到链链表中表中44精选ppt5.定位定位:提供学生的学号,在链表中查找该学生所在链表中的位置 (返回指向该结点的一个指针)(注意:该操作是为后面的操作服务的,特别是:删除、修改、查询)6.查询查询:提供学生的学号,在链表中查找该学生并输出该学生的信息(包括学生的名次)7.删删除除:提供学生的学号,在链表中查找该学生,并从表中删除学号是该值的学生8.修改成修改成绩绩:提供学生的学号,在链表中查找该学生,找到后先显示原来的学生信息,然后修改(重新输入)学生信息 45精选ppt9.统计统计:给出各课成绩的平均分,总平均分,并分别按各课程统计成绩段的人数:优秀人数、良好人数、中等人数、及格人数,不及格人数,并按一定的格式将所有统计结果显示出来。10.排序排序(降序降序):按学生的平均成绩进行由小到大排序,新形成一个排序链表,.(注意:该操作是为其它操作服务的;例如:5(查询)可以使用,当添加学生或删除学生以及修改学生成绩后,都需要重新排序)11.输输出出链链表表:按链表中的先后次序输出表中的所有信息 (注意:该操作为按顺序输出信息和排序输出服务):46精选ppt12.写文件写文件:将进行各种操作后所形成的链表信息,写入文件中,备以后使用时,利用3(2)再读入形成链表.(注意:可以形成两类文件:按输入的顺序,按排序后的)13.其他的一些服务操作:(1)析构函数析构函数:(2)输输出表出表头头函数函数:(为功能、6、7、8、11、12服务)(3)输输出出P指指针针所指所指结结点信息点信息:(为功能:6、7、8、11、12服务)47精选ppt类声明:由以上分析,可以给出成绩管理的类声明:class cj private:struct node *head;public:cj();/1:构造函数构造函数,建立一个只有建立一个只有附加附加头结头结点点的的空空链链表表 input();/2:向向链链表中添加学生的信息表中添加学生的信息(在表的在表的尾上追加尾上追加)appen(node*p);/3.追加追加结结点点:在在链链表尾上表尾上链链上一个上一个结结点点(p所指的所指的结结点点)void rf(char*f);/4.读读文件,形成文件,形成链链表表 node*post(int num);/5.定位定位:提供学号提供学号,返回指向返回指向该结该结点的一个指点的一个指针针)void lookup(int num);/6.查询查询 提供学号提供学号,查查找学生并找学生并输输出学生的信息出学生的信息 void Delete(int num);/7.删删除除:提供学号提供学号,删删除学号是除学号是该值该值的学生的学生 void modify(int num);/8.修改成修改成绩绩:提供学号提供学号,修改修改(重新重新输输入入)学生信息学生信息 void statistic();/9.统计统计函数函数,统计统计平均成平均成绩绩 void sort(cj&h);/10.排序排序(降序降序):按平均成按平均成绩绩排序排序,形成排序的形成排序的链链表表h void Insert(cj&h,node*p);/在有序表在有序表h中中结结点后仍有序点后仍有序(排序的一个排序的一个辅辅助函数助函数:void output();/11:输输出出链链表中各表中各结结点点值值 void wf(char*f);/12.由由链链表表,形成文件形成文件 cj();/13(1):析构函数析构函数,程序运行程序运行结结束束时时,删删除除链链表中的各表中的各结结点点,void print1();/13(2):输输出一个同学的成出一个同学的成绩绩(标题标题)void print2(node*p);/13(3)输输出一个同学的成出一个同学的成绩绩 node*gethead()return head;/13(4)获获取取头头指指针针 int Length()const;/13(5)计计算算链链表的表的长长度度;48精选pptcj:cj()/1:构造函数构造函数,建立一个只有附加附加头结头结点点的空空链链表表head=new node;head-next=0;49精选pptvoid cj:input()/2:录录入学生信息入学生信息:由由键盘键盘一个一个一个一个输输入学生的信息入学生的信息,并在表的尾上追加并在表的尾上追加)int Class;char name8;int num;float c6,ave;int order;node*p2;int t,i;coutt;while(t=1)cout请输请输入班入班级级,姓名姓名,学号学号,电电子技子技术术,C+,数学,数学,;cout英英语语,政治,体育成,政治,体育成绩绩Classnamenumc0c1c2c3c4c5;p2=new node;ave=(c0+c1+c2+c3+c4+c5)/6;p2-Class=Class;p2-num=num;strcpy(p2-name,name);for(i=0;ikci=ci;p2-order=0;p2-ave=ave;appen(p2);coutt;50精选pptvoid cj:appen(node*p)/3.追加追加结结点点:在在链链表尾上表尾上链链上一个上一个结结点点(p所指的所指的结结点点)node*p1,*p2;p1=head;p2=p1-next;while(p2)p1=p2;p2=p2-next;p1-next=p;p-next=p2;51精选pptvoid cj:rf(char*f)/4.读读文件,形成文件,形成链链表表 int Class;char name8;int num;float c6,ave;int order;char ss250;/存放存放标题标题的的 node*p2;ifstream ff;ff.open(f);ff.getline(ss,200);/取第一行取第一行标题标题ff.getline(ss,200);/取第二行取第二行标题标题ffClassnamenumc0c1c2c3c4c5;while(!ff.eof()p2=new node;ave=(c0+c1+c2+c3+c4+c5)/6;p2-Class=Class;p2-num=num;strcpy(p2-name,name);for(i=0;ikci=ci;p2-order=0;p2-ave=ave;appen(p2);ffClassnamenumc0c1c2c3c4c5;ff.close();52精选pptnode cj:*post(int num)/5.定位定位:提供学号提供学号,返回指向返回指向该结该结点的一个指点的一个指针针)node*p1,*p2;p1=head;if(p1-next=0)return 0;p2=p1-next;while(p2-num!=num&p2-next!=0)p1=p2;p2=p2-next;if(p2-num=num)return p2;else return 0;53精选pptvoid cj:lookup(int num)/6.查询查询 提供学号提供学号,查查找学生并找学生并输输出学生的信息出学生的信息 node*p1;p1=post(num);/定位定位:提供学号,返回指向该结点的一个指针)if(p1!=0)print1();/输出一个同学的成绩(标题)print2(p1);/输出一个同学的信息 else cout无学生记录!next;if(p1=0)cout无学生无学生记录记录!num!=num&p2-next!=0)p1=p2;p2=p2-next;if(p2-num=num)p1-next=p2-next;delete p2;cout已已删删除了除了这这个学生的个学生的记录记录endl;else cout没找到没找到该该学生学生!endl;return;55精选pptvoid cj:modify(int num)/8:修改函数修改函数,修改修改对应对应学号的学生成学号的学生成绩绩 node*p,*p2;p=post(num);/定位定位:提供学号,返回指向该结点的一个指针)if(p!=0)float c6,cout原成绩:;print1();print2(p);cout请输入新的成绩:c0c1c2c3c4c5;ave=(c0+c1+c2+c3+c4+c5)/6;for(i=0;ikci=ci;p-ave=ave;else cout没找到该学生!next;while(p1!=0)print2(p1);s1=s1+p1-kc0;s2=s2+p1-kc1;s3=s3+p1-kc2;s4=s4+p1-kc3;s5=s5+p1-kc4;s6=s6+p1-kc5;i+;p1=p1-next;cout平均成平均成绩绩:endl;cout电电子技子技术术s1/itC+:s2/i;cout数学数学s3/it英英语语s4/it政治政治s5/it;cout体育体育s6/inext;while(p1)p2=new node;p2-ave=p1-ave;p2-Class=p1-Class;p2-num=p1-num;strcpy(p2-name,p1-name);for(j=0;jkcj=p1-kcj;Insert(h,p2);p1=p1-next;p1=h.gethead()-next;int i=1;while(p1!=0)p1-order=i;i=i+1;p1=p1-next;58精选pptvoid cj:Insert(cj&h,node*p)/在有序表中插入一个结点后仍有序(10.排序排序(降序降序)的一个的一个辅辅助函数助函数:)node*p1,*p2;p1=h.gethead();if(p1-next=0)p1-next=p;p-next=0;else p2=p1-next;while(p2-next&p2-avep-ave)p1=p2;p2=p2-next;p1-next=p;p-next=p2;59精选ppt void cj:output()/11:输输出出链链表中各表中各结结点点值值 node*p;p=head-next;cout输出学生信息:next;coutendl;60精选pptvoid cj:wf(char*f)/12.由由链链表表,形成文件形成文件 node*p;ofstream ff;ff.open(f);ff 学生成绩表endl;ff姓名 学号 班级 elec C+数学 英语 政治 体育 next;while(p)ffnametnumtClasst;ffkc0tkc1tkc2t;ffkc3tkc4tkc5next;ff.close();61精选ppt cj:cj()/13(1):析构函数析构函数,程序运行程序运行结结束束时时,删删除除链链表中的各表中的各结结点点,node*p1;while(head)p1=head;head=head-next;delete p1;62精选pptvoid cj:print1()/13(2):输出一个同学的成绩(标题)cout“姓名 ”“学号 ”“班级 ”“电子 “;coutC+数学 英语 政治 体育 endl;void cj:print2(node*p)/13(3):输出一个同学的成绩 int I;coutnametnumtClasst;for(i=0;i=5;+i)coutkci;coutnext;while(p!=0)n=n+1;p=p-next;return n;node cj:*gethead()/13(5)获取头指针return head;64精选pptvoid main()/主函数主函数 cj A,B;int a;int num;while(1)cout*endl;cout*欢欢迎使用本系迎使用本系统统(请选择请选择你所要的功能你所要的功能)*endl;cout 0.退出系退出系统统.endl;cout 1.成成绩录绩录入入.endl;cout 2.成成绩绩修改修改.endl;cout 3.成成绩查询绩查询.endl;cout 4.删删除成除成绩绩.endl;cout 5.顺顺序序输输出所有人的成出所有人的成绩绩.endl;cout 6.统计统计平均成平均成绩绩.endl;cout 7.显显示学生人数示学生人数 endl;cout 8.输输出排序出排序结结果果 endl;cout 9.读读文件文件 endl;cout 10.写文件写文件 endl;cout*endl;couta;65精选pptswitch(a)case 0:goto end;case 1:A.create();break;case 2:coutnum;A.modify(num);A.sort(B);break;case 3:A.sort(B);coutnum;B.lookup(num);break;case 4:coutnum;A.Delete(num);break;case 5:A.output();break;case 6:A.statistic();break;case 7:cout学生人数学生人数为为:A.Length()endl;break;case 8:A.sort(B);B.output();break;case 9:A.rf(abc);break;case 10:A.wf(abc);break;default:break;cout按任意按任意键继续键继续操作操作!endl;getchar();end:;cout谢谢谢谢您使用本系您使用本系统统!endl;66精选ppt3、三角形面积验证程序的设计问题问题:给给出求解下列出求解下列问题问题逐步求精的分析逐步求精的分析过过程程,并并设设计计程序完成其程序完成其验证验证:已知一个正三角形已知一个正三角形ABC,其内分点,其内分点A1、B1、C1,使得,使得2AC1=C1B、2BA1=A1C、2CB1=B1A,连连接接CC1、BB1、AA1,三条直,三条直线线分分别别相交于相交于A2、B2、C2。要求。要求编编写程序写程序验证验证,三角形三角形A2B2C2的面的面积积是三角形是三角形ABC的面的面积积的的7分之一。分之一。67精选ppt68精选ppt分析分析问题问题的基本方法的基本方法 基本方法是:基本方法是:由由顶顶向下,逐步求精;向下,逐步求精;即:即:将复将复杂问题杂问题,分解,分解为为小小问题问题,小,小问题问题解决了,解决了,大大问题问题也就解决了。也就解决了。例如:如下的例如:如下的问题问题 已知一个正三角形已知一个正三角形ABC,其内分点,其内分点A1、B1、C1,使得,使得2AC1=C1B、2BA1=A1C、2CB1=B1A,连连接接CC1、BB1、AA1,三条直,三条直线线分分别别相交于相交于A2、B2、C2(见图见图1)。)。要求要求编编写程序写程序验证验证:三角形三角形A2B2C2面面积积是三角形是三角形 ABC面面积积的七分之一的七分之一.69精选ppt (7)建立平面直角坐建立平面直角坐标标系;系;。运用运用逻辑逻辑思思维维分析程序分析程序设计设计:设设正三角形正三角形ABC的的边长为边长为a,则则本本题题目就是求两个三角形的面目就是求两个三角形的面积积,已知三角形的已知三角形的边长边长求面求面积积,对对于三角形于三角形ABC是很容易的,但是很容易的,但对对于三于三角形角形A2B2C2的面的面积积的求解却比的求解却比较较麻麻烦烦。(如何求呢如何求呢?)对对于于该问题该问题的的逻辑逻辑思思维维及其分析及其分析过过程:程:(1)三角形三角形A2B2C2的面的面积积(2)求求边长边长(A2B2、B2C2、C2A2)(3)求交点坐求交点坐标标(A2、B2、C2)(4)求直求直线线方程(方程(AA1、BB1、CC1)(5)求内分点坐求内分点坐标标(A1、B1、C1)(6)已知已知边长边长a,确定三角形,确定三角形ABC的的顶顶点坐点坐标标(A、B、C)分析分析实实现现70精选ppt设计分析(1)采用什么)采用什么设计设计方法:方法:面向面向结结构的构的设计设计方法?方法?面向面向对对象的象的设计设计方法?方法?(2)不同的)不同的设计设计方法,需要定方法,需要定义义不同的数据不同的数据结结构(数据构(数据类类型)型),如何定,如何定义义数据数据结结构;构;结结构体构体 类类 (3)下面我)下面我们对们对两种两种设计设计方法,分方法,分别给别给出出设计设计程序程序 71精选ppt 采用采用“面向面向结结构的构的设计设计方法方法”72精选ppt采用采用“面向面向结结构的构的设计设计方法方法”需要的工作步需要的工作步骤骤:(1)定)定义义有关的有关的结结构体:构体:点,直点,直线线,三角形,三角形(2)给给出有关的函数出有关的函数设计实现设计实现:根据前面的分析,需要定根据前面的分析,需要定义义什么函数,完成什么功能,什么函数,完成什么功能,使用什么参数,函数返回使用什么参数,函数返回值值及其及其类类型;型;(3)设计设计主函数:主函数:调调用(用(2)中的函数,完成要求的功能。)中的函数,完成要求的功能。1、已知一个三角形、已知一个三角形t,求面求面积积mj;2、已知两、已知两顶顶点点a,b,求内分点求内分点 (在在这这里两段的比里两段的比值为值为1:2);3、已知两、已知两顶顶点点p1,p2,求直求直线线方程方程line4、已知两直、已知两直线线l1,l2,求交点坐,求交点坐标标5、已知两点、已知两点P1,P2,求距离,求距离73精选ppt(1)首先,定义有关的数据结构(采用结构体)三角形三角形结结构(三构(三边边形成三角形)形成三角形)(a,b,c)struc T double a;double b;double c;直直线线方程方程结结构构:ax+by+c=0struc L double a;double b;double c;点点结结构构:(x,y)struc P double x;double y;直直线线方程方程结结构构:y=kx+bstruc L double k;double b;或者或者74精选ppt(2)给出有关的函数设计 (注意:形参和函数的返回值):1、已知一个三角形t,求面积mj;double mj(T t)double L,ss;L=(t.a+t.b+t.c)/2;ss=sqr(L*(L-t.a)*(L-t.b)*(L-t.c);return ss;75精选ppt2、已知两顶点a,b,求内分点 (在这里两段的比值为1:2);P fd(P a,P b)P q;q.x=(b.x-a.x)/3+a.x;q.y=(b.y-a.y)/3+a.y;return q;76精选ppt3、已知两顶点p1,p2,求直线方程line (ax+by+c=0)L zx(P p1,P p2)L q;实现过程.77精选ppt4、已知两直线l1,l2,求交点坐标 P jd(L l1,L l2)实现过程.78精选ppt5、已知两点P1,P2,求距离 double jl(P p1,P p2)实现过程.79精选ppt(3)设计主函数(调用前面的各函数,完成计算)Void main()P A,B,C,A1,B1,C1,A2,B2,C2;L L1,L2,L3;double d1,d2,d3,s1,s2;double a=10.00;B.x=0;B.y=0;A.x=a/2;A.y=a*sqr(3)/2;C.x=a;C.y=0;A1=fd(B,C);B1=fd(C,A);C1=fd(A,B);L1=zx(A,A1);L2=zx(B,B1);L3=zx(C,C1);A2=jd(L1,L2);B2=jd(L1,L3);C2=jd(L2,L3);d1=jl(A2,B2);d2=jl(B2,C2);d3=j;(C2,A2);s1=mj(a,a,a);s2=mj(d1,d2,d3);if(fabs(s1-7*s2)=0.001)/?cout“正确!”;else cout“错误!”80精选ppt 采用采用“面向面向对对象的象的设计设计方法方法”81精选ppt采用采用“面向面向对对象的象的设计设计方法方法”需要的工作步需要的工作步骤骤:(1)定)定义义有关的有关的类类:点,直点,直线线,三角形,三角形 (2)设计设计主函数主函数:定定义义有关的有关的对对象,象,并并调调用有关的函数,完成要求的功能。用有关的函数,完成要求的功能。注意:注意:每个每个类类有什么数据成有什么数据成员员;每个每个类类有什么成有什么成员员函数,都具有什么功能函数,都具有什么功能?82精选ppt(1)首先,定义有关的类结类结构构 class P private:double x;double y;public:/构造函数,用构造函数,用a,b提供提供值值,形成点,形成点 P(double a,double b);/构造函数,由两直构造函数,由两直线线a,b形成交点形成交点 P(line a,line b);/构造函数,由两构造函数,由两顶顶点点a,b,及比,及比值值r,求内分点求内分点 P(P a,P b,double r);/由两由两顶顶点,求两点点,求两点间间的距离的距离 (使用友元)(使用友元)friend double d(P a,P b);/显显示示顶顶点的点的值值 void show();点点类类的定的定义义:点点结结构构:(x,y)83精选ppt/构造函数,用构造函数,用a,b提供提供值值,形成点,形成点P:P(double a,double b)x=a;y=b;84精选ppt/构造函数,由两直构造函数,由两直线线a,b形成交点形成交点P:P(line a,line b)/直直线线采用:采用:y=kx+b 85精选ppt/构造函数,由两构造函数,由两顶顶点点a,b,及比,及比值值r,求内分点求内分点P:P(P a,P b,double r)86精选ppt/由两由两顶顶点,求两点点,求两点间间的距离的距离(使用友元)使用友元)friend double d(P a,P b)87精选ppt/显显示示顶顶点的点的值值void P:show()88精选ppt直直线类结线类结构构直直线线方程方程结结构构:ax+by+c=0class L double a;double b;double c;直直线线方程方程结结构构:y=kx+bclass L double k;double b;或者或者本本题题目中,使用,第二种格式目中,使用,第二种格式89精选ppt直直线线方程方程结结构构:y=kx+bclass Lprivate:double k;double b;public:/构造函数,由两参数,直接构造函数,由两参数,直接赋值赋值 L(double x,double y);/构造函数,由两点形成直构造函数,由两点形成直线线 L(P x,P y);/显显示直示直线线信息信息 void show();90精选ppt/构造函数,由两参数,直接构造函数,由两参数,直接赋值赋值L:L(double x,double y)91精选ppt/构造函数,由两点形成直构造函数,由两点形成直线线L:L(P x,P y)92精选ppt/显显示直示直线线信息信息void L:show()93精选ppt三角形类结类结构构 (三(三边边形成三角形)形成三角形)(a,b,c)class T private:double a;double b;double c;public:/构造函数,由三参数,直接构造函数,由三参数,直接赋值赋值;T(double x,double y,double z);/显显示三角形的信息;示三角形的信息;void show();/计计算三角形面算三角形面积积 double s();94精选ppt/构造函数,由三参数,直接构造函数,由三参数,直接赋值赋值T:T(double x,double y,double z)95精选ppt/显显示三角形的信息;示三角形的信息;void T:show()96精选ppt/计计算三角形面算三角形面积积double T:s()97精选ppt设计主函数(定义对象,完成计算)void main()double a=10.00;P A(a/2,a*sqr(3)/2;),B(0,0),C(a,0);P A1(B,C,2),B1(C,A,2),C1(A,B,2);L L1(A,A1),L2(B,B1),L3(C,C1);P A2(L1,L2),B2(L1,L3),C2(L2,L3);double d1,d2,d3,s1,s2;d1=d(A2,B2);d2=d(B2,C2);d3=d(C2,A2);T t1(a,a,a);T t2(d1,d2,d3);s1=t1.s();s2=t2.s();if(fabs(s1-7*s2)=0.001)/?cout“正确!”;else cout“错误!”98精选ppt此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!