ImageVerifierCode 换一换
格式:PPT , 页数:98 ,大小:1.09MB ,
资源ID:8427169      下载积分:18 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8427169.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C++综合应用实例PPT.ppt)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C++综合应用实例PPT.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C/C+,综合应用实例,1,、数据代数运算系统的设计(相当于计算器),2,、学生成绩管理系统的设计,3,、三角形面积验证程序的设计,1,1,、数据代数运算系统的设计(相当于计算器),问题:,设计一个计算器程序,完成整数间的加、减、乘、除以及求运算,以及累加求和、计算,n,!等。,(,1,),计算器程序设计文档,(,2,),使用,TC,开发的,dos,界面程序;,(,3,)程序运行演示;,这样的系统不好,我们可以将其改写为图形界面,(,4,)图形界面程序演示;,(,5,),图形界面程序源代码,2,2,、学生成

2、绩管理系统的设计,例,2,:,编写程序,实现学生成绩管理:,要求实现,用户登录,,显示主菜单,,学生信息的输入,学生信息的输出,,按学号查询学生信息,,按成绩降序排序,,追加学生信息,,把学生信息保存到文件,,从文件中导出学生信息,等有关的功能。,3,关于该设计题目的有关问题与分析:,(,1,)采用的程序设计方法的选择?,A),面向结构的设计方法?,B),面向对象的设计方法?,(,2,)运行界面的选择?,A)DOS,界面的设计?,B),图形界面(,Windows,界面)?,(,3,)数据类型的定义,(结构体或类的定义),(,4,)(数据结构的定义)存放数据的方式,顺序表(数组存放一个班学生信息

3、链表(利用指针存放一个班的学生信息),4,该题目的分析与设计:,本题目可以采用,4,种方式实现:,(,1,)采用面向结构的程序设计方法,用,顺序,表(数组和结构体),,DOS,界面。,(,2,)采用面向结构的程序设计方法,用,链表,(指针和结构体),,DOS,界面,(,3,)采用面向对象的程序设计方法,用,顺序表,(定义顺序表类),,DOS,界面,(,4,)采用面向对象的程序设计方法,用,链表,(定义,链表,类),,DOS,界面,另外,对这,4,种方式,都可以采用,Windows(,图形,),界面实现。,5,(,1,)采用面向结构的程序设计方法,用,顺序,表(数组和结构体),DOS,界面,

4、6,采用面向结构的程序设计方法,用,顺序,表(数组和结构体),,DOS,界面,处理过程:,(,1,)定义学生结构体;,(,2,)定义学生数组(,一般放到主函数中定义,),这里要注意,学生人数问题,(,3,)按功能要求定义各有关功能函数;,这里要注意,每个函数的参数及其函数的返回值,(,4,)设计主函数,实现系统所要求的功能。,思考:,假设将(,2,)定义成一个“班级结构体”,那么,整个系统该如何实现);,7,(,1,)定义学生结构体;,struct st,char Class20;/,班级,int num;/,学号,char name8;/,姓名,float kc6;/,各课程成绩,(6,门,

5、),float ave;/,平均成绩,int order;/,名次,;,8,按功能要求定义各有关功能函数,(,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

6、int n,int x),9,(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,给出每个函数的具体实现,同学们自己给出各函数的源代码。,11,设计主函数,实现

7、系统所要求的功能,定义学生数组:这里要注意,学生人数问题,Void main(),st*t;,定义数组,int m;,数组的最大空间,int n;,实际学生人数,m=1000;,st=new stm;,n=0;,显示菜单,分别调用有关的函数。,12,(,3,)采用面向对象的程序设计方法,用,顺序表,(定义,顺序表类,),DOS,界面,13,采用面向结构的程序设计方法,用,顺序表,(定义,顺序表类,),,DOS,界面,处理过程:,(,1,)定义学生类;,(,2,)定义班级类,(,3,)设计主函数,定义有关的对象,并调用有关的函数,完成系统功能。,分析:,由于成绩管理是由多名学生构成的,所以需要定

8、义,学生类,;,另外,由多个学生,形成一个班或年级,所以还需要定义一个,班级(年级)类,14,(,1,)定义学生类;,class st,private:,char Class20;/,班级,int num;/,学号,char name8;/,姓名,float kc6;/,各课程成绩,(6,门,),float ave;/,平均成绩,int order;/,名次,public:,分析:关于学生类,该有哪些函数成员?,;,15,学生类,函数成员的定义与实现,public:,(,1,)构造函数的定义:,利用参数传递,形成一个学生,有键盘输入形成一个学生,(,2,)输出学生信息函数;,16,(,2,)定

9、义班级类,class bj,private:,int m;/,私有变量,顺序表实例的最大长度,int n;/,私有变量,顺序表实例的当前长度,st *s;/,存放学生的数组(利用指针实现),public:,分析:关于班级类,该有哪些函数成员?,;,17,班级类,函数成员的定义与实现,public:,(,1,)构造函数的定义:,利用参数传递,形成班级,由数组,s,中,,n,各学生,形成班级,bj,(st s int n),;,有键盘输入形成班级,学生信息的输入,(,输入的结束条件如何设计?,),bj,(),;,有文件导入,形成班级;,从文件,f,中导出学生信息,bj(char*f),18,其它成

10、员函数,(,2,)输出学生信息,要求:按一定得格式输出学生信息(最好是表格格式,并且当学生人数较多时,应按页显示),void pint(),(,3,)查询学号为,x,的学生信息,并返回查找成功是(位置号)否(,-1,)。,int find(int x),19,(4),按平均成绩降序排序,形成新类。,st,sort(),(5),在学生信息的未,输入追加学生信息。,注意:输入的结束条件如何设计?,void input(),(6),在学生信息的未,通过文件,f,追加学生信息。,void app(char*f),(,7,)保存到文件,f,中。,void,save(char *f),20,给出每个函数的

11、具体实现,同学们自己给出各函数的源代码。,21,设计主函数,实现系统所要求的功能,定义有关的对象,Void main(),bj b;,定义班级对象,st s;,定义学生对象,显示菜单,分别调用有关的函数。,22,链表,成绩管理,1.,链表的定义与结构描述,2.,链表的有关操作实现,3.,利用链表结构实现成绩管理,(1),成绩管理的功能分析,(2),成绩管理的类定义与实现,3,采用面向对象的程序设计方法,,用,链表,(定义,链表,类),,DOS,界面,23,1,单链表,通过指针把它的一串存储结点链接成一个链,存储结点由两部分组成:,data,字段,next,字段,data next,头指针,指向

12、下一个节点的指针,附加头结点,结点,尾指针,24,单链表的结点类型,struct,ListNode,int,data,;,ListNode,*next,;,;,data next,问题,(,有关链表的操作,):,如何定义,(,申明,),一个链表呢,?,如何形成一个链表呢,?,在链表中指定的位置处,如何插入一个节点呢,?,在链表中如何删除一个节点呢,?,一个链表中,有几个数据元素呢,?,25,如何定义,(,申明,),一个链表呢,?,一个,链表,一般只要告诉该链表的,头指针,即可。,定义链表:,struct,ListNode *,first,该链表所有的操作,全部是从“,first,”,开始,,并

13、且,该指针,永远,指向第一个位置,。,26,一个链表是如何形成呢,?,一个链表的形成,一般需要两步:,First,(,2,)在空链表的基础上不断的插入节点,从而形成链表。,一般分为:在前插入、在后插入两种,(,1,)首先形成一个空链表:,NULL(0),27,构造空单链表,LinkList(),first=new ListNode;,first-next=0;,;,first,(,a,),建空表,28,建立单链表,头插法建立单链表图示,first,(,a,),建空表,c,1,s,s,指向新申请的结点,s,data,c,1,(,b,),申请新结点并赋值,first,last,(,c,),插入第一

14、个结点,last=s,c,1,执行的语句组为,:s,next,first,next,;,first,next,s,;,c,i,1,first,c,2,c,1,c,i,s,(,d,),插入第,i,个元素,头插法,29,尾插法建表,尾插法建表图示,c,1,s,s,指向新申请的结点空间,s,data,c,1,(,b,),申请新结点并赋值,firstL,(,a,),建空表,last,f,s,(,c,),插入第一个结点,c,1,last,last,s,;,last,指向链表的结尾,c,1,first,c,2,last,next,s,;,(,d,),插入第二个结点,s,r,将新建的节点插入到链表的最后,尾

15、指针,30,在头结点之后插入一个新结点,void LinkList:insert(int a),ListNode *temp;,temp=new ListNode;,temp-data=a;,temp-next=0;,temp-next=first-next;,first-next=temp;,执行的语句组为,:s,next,first,next,;,first,next,s,;,c,i,1,first,c,2,c,1,c,i,s,插入第,i,个元素,31,单链表的建立,(调用插入函数,可以创建链表:形成具有,n,个元素的链表),void LinkList:create(int n),int

16、i=0;,int data;,cout endlplease input the data of the list;,while(idata;,insert(data);,i+;,32,查找单链表中第,i,个结点算法,ListNode*FindIndex(const int i),ListNode *p,if(i=-1)return first;,p=first-next;,/,int j=0;,while(p!=NULL&j next;,j+;,return p;,33,单链表插入算法(第,i,节点前插入),L,a,1,a,i,1,a,i,a,n,pre,(,a,),寻找第,i,1,个结点,

17、e,s,(,b,),申请新的结点,pre,L,a,1,a,i,1,a,i,a,n,e,s,与,a,i,连链,:,s,next,pre,next,a,i-1,与,a,i,断,链,插入,e:,pre,next,s,;,(,c,),插入,34,单链表插入算法,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-ne

18、xt=q;,return q;,p,L,a,1,a,i,1,a,i,a,n,e,q,与,a,i,连链,:,s,next,pre,next,a,i-1,与,a,i,断,链,插入,e:,pre,next,s,;,(,c,),插入,35,单链表删除算法,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,求长度算法,i

19、nt Length(),ListNode *p=first-next;,int count=0;,while(p!=NULL),p=p-next;,count+;,return count;,L,a,0,a,i,1,a,i,a,n,(,),p,37,单链表的类定义,分析,1,数据成员,:,两个指向结点的指针,:,头指针和尾指针,2,成员函数,:,(1),构造函数,/,创建并形成一个初始链表,(2),析构函数,/,删除构造函数所创建的链表,(3),插入元素函数,/,在表的第,i,个位置处,插入数据或在表尾插入元素,(4),删除元素函数,/,删除表中数值为,x,的元素,(5),查找元素,/,在表中

20、查找数据为,x,的元素在表中的位置,(6),输出链表,/,从头到尾输出表中的所有的元素,(7),判定链表是否为空,/,为了进行删除进行的一种判定,(8),将链表设置为一个空表,/,(9),计算链表的长度,/,统计链表中元素个数,(10),将链表元素值写到文件中,(11),将文件中的数据读到链表中,38,class LinkList,/,链表类,private:,ListNode *first,*last;/,链表的表头指针和尾指针,public:,LinkList(),LinkList();/,析构函数,ListNode *Insert(int value,int i);,Listnode *

21、insert(int,value),int Remove(int value);,ListNode*FindIndex(int value);,void PrintList();/,遍历单链表,void MakeEmpty();/,将链表置为空表,int Length()const;/,计算链表的长度,int NotNull();/,判断是否是空表,void create();,;,单链表的类定义,39,三、利用链表结构实现成绩管理,(1),成绩管理的功能分析,(2),成绩管理的类定义与实现,要求,:,1,简单的系统与功能分析,2,建立数据结构表,3,要建立一个测试的数据表,至少要有,20,个

22、测试数据,4,使用数据链表实现数据的:录入、查询、修改、增加、删除、统计、输出,40,一、定义学生成绩管理系统的数据结构表,序号 成员名 数据类型 长度 字段含义,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,

23、二、根据所要求的成绩管理系统定义类,系统的功能要求,:,使用数据链表实现如下功能:,初始链表的建立,录入、查询、修改、增加、删除、统计、输出等功能。,(,一,),数据定义,(,类的数据成员说明,):,一个指向学生结构的头指针,;,(,注意,:,该指针就是链表的头,),struct node,int Class;/,班级,int num;/,学号,char name8;/,姓名,float kc6;/,各课程成绩,(6,门,),float ave;/,平均成绩,int order;/,名次,node*next;/,指针,;,class cj,private:,struct node,*head;

24、public:,待定义的各功能函数,结点定义,类定义,42,(,二,),操作定义,(,函数功能,划分,),1.,初始链表的建立,:,利用类的,构造函数,建立一个只有,附加头结点,的,空链表,;,2.,录入,(,增加一个,),学生信息,:,由键盘一个一个输入学生的信息,并链到链表中,;,(,注意,:,什么时候停止输入呢,?,即,:,输入的结束条件,?),如何链到链表上呢,?(,在表的,尾上追加,),3,.,追加结点,:,在链表尾上链上一个结点,(,p,所指的结点,):,43,4.,链表的建立,:,在空链表已经建立的基础上,向链表中提供信息,(,注意,:,采用先提供的信息在表的前面,依次向后,)

25、可以分为两种方式,:,(1),由键盘一个一个输入学生的信息,并链到链表中,;,(可以直接使用添加学生操作,;,即使用,2,),(2),利用文件将文件中的内容读入,并链到链表中,44,5.,定位,:,提供学生的学号,在链表中查找该学生所在链表中的位置,(,返回指向该结点的一个指针,),(,注意,:,该操作是为后面的操作服务的,特别是,:,删除、修改、查询,),6.,查询,:,提供学生的学号,在链表中查找该学生并输出该学生的信息,(,包括学生的名次,),7.,删除,:,提供学生的学号,在链表中查找该学生,并从表中删除学号是该值的学生,8.,修改成绩,:,提供学生的学号,在链表中查找该学生,找到

26、后先显示原来的学生信息,然后修改,(,重新输入,),学生信息,45,9.,统计,:,给出各课成绩的平均分,总平均分,并分别按各课程统计成绩段的人数,:,优秀人数、良好人数、中等人数、及格人数,不及格人数,并按一定的格式将所有统计结果显示出来。,10.,排序,(,降序,):,按学生的平均成绩进行由小到大排序,新形成一个排序链表,.,(,注意,:,该操作是为其它操作服务的,;,例如,:5,(,查询,),可以使用,当,添加学生,或,删除学生,以及,修改学生成绩,后,都需要重新排序,),11.,输出链表,:,按链表中的先后次序输出表中的所有信息,(,注意,:,该操作为,按顺序输出,信息和,排序输出,服

27、务,):,46,12.,写文件,:,将进行各种操作后所形成的链表信息,写入文件中,备以后使用时,利用,3(2),再读入形成链表,.,(,注意,:,可以形成两类文件,:,按输入的顺序,按排序后的,),13.,其他的一些服务操作,:,(1),析构函数,:,(2),输出表头函数,:,(,为功能、,6,、,7,、,8,、,11,、,12,服务,),(3),输出,P,指针所指结点信息,:,(,为功能:,6,、,7,、,8,、,11,、,12,服务,),47,类声明,:,由以上分析,可以给出成绩管理的类声明,:,class cj,private:struct node,*head;,public:,cj(

28、);/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

29、int num);,/8.,修改成绩,:,提供学号,修改,(,重新输入,),学生信息,void statistic();,/9.,统计函数,统计平均成绩,void sort(cj /,10.,排序,(,降序,):,按平均成绩排序,形成排序的链表,h,void Insert(cj,/,在有序表,h,中结点后仍有序,(,排序的一个辅助函数,:,void output();/,11:,输出链表中各结点值,void wf(char*f);,/12.,由链表,形成文件,cj();/13(1):,析构函数,程序运行结束时,删除链表中的各结点,void print1();/13(2):,输出一个同学的成绩

30、标题,),void print2(node*p);/13(3),输出一个同学的成绩,node*gethead()return head;/13(4),获取头指针,int Length()const;/13(5),计算链表的长度,;,48,cj:cj(),/1:,构造函数,建立一个只有,附加头结点,的,空链表,head=new node;,head-next=0;,49,void cj:input(),/2:,录入学生信息,:,由键盘一个一个输入学生的信息,并在表的尾上追加,),int Class;char name8;int num;float c6,ave;int order;,nod

31、e*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,void cj:appen(node*p),/3.,追加结点,:,在链表尾上链上一个结

32、点,(p,所指的结点,),node*p1,*p2;,p1=head;,p2=p1-next;,while(p2),p1=p2;,p2=p2-next;,p1-next=p;,p-next=p2;,51,void 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);/,取第二行标题,ffClas

33、snamenumc0c1c2c3c4c5;,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,node cj:*post(int num)/,5.,定位,:,提供学号,返回指向该结点的一个指针,),node*p1,*p2;,p1=head;,if(

34、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,void cj:lookup(int num),/6.,查询 提供学号,查找学生并输出学生的信息,node*p1;,p1=post(num);/,定位,:,提供学号,返回指向该结点的一个指针,),if(p1!=0),print1();/,输出一个同学的成绩,(,标题,),print2(p1);/,输出一个同学的信息,else,cout,无学生记录

35、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,void cj:modify(int num)/,8:,修改函数,修改对应学号的学生成绩,node*p,*p2;,p=post(num);/,定位,:,提供学号,返回指向该结点的一个指针,),if(p!=0),float c6,cout,原成绩,:;,prin

36、t1();,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

37、/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,void cj:Insert(cj&h,node*p),/,在有序表中插入一

38、个结点后仍有序,(,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,void cj:output()/,11:,输出链表中各结点值,node*p;,p=head-next;,cout,输出学生信息,:next;,coutendl;,60,void cj:wf(char*f),/12.,由链表

39、形成文件,node*p;,ofstream ff;,ff.open(f);,ff,学生成绩表,endl;,ff,姓名,学号,班级,elec C+,数学,英语,政治,体育,next;,while(p),ffnamenumClasst;,ffkc0kc1kc2t;,ffkc3kc4kc5next;,ff.close();,61,cj:cj(),/13(1):,析构函数,程序运行结束时,删除链表中的各结点,node*p1;,while(head),p1=head;,head=head-next;,delete p1;,62,void cj:print1()/13(2):,输出一个同学的成绩,(,标

40、题,),cout“,姓名 ”,“,学号 ”,“,班级 ”,“,电子 “,;,coutC+,数学,英语,政治,体育,endl;,void cj:print2(node*p)/13(3):,输出一个同学的成绩,int I;,coutnamenumClasst;,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,void main()/,主函数,cj A,B;,int a;,int num;,while(1),

41、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,switch(

42、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.out

43、put();break;,case 9:A.rf(abc);break;,case 10:A.wf(abc);break;,default:break;,;,cout,按任意键继续操作,!endl;,getchar();,end:;,cout,谢谢您使用本系统,!endl;,66,3,、三角形面积验证程序的设计,问题:,给出求解下列问题逐步求精的分析过程,并设计程序完成其验证:,已知一个正三角形,ABC,,其内分点,A,1,、,B,1,、,C,1,,使得,2AC,1,=C,1,B,、,2BA,1,=A,1,C,、,2CB,1,=B,1,A,,连接,CC,1,、,BB,1,、,AA,1,,三条直

44、线分别相交于,A,2,、,B,2,、,C,2,。要求编写程序验证,三角形,A,2,B,2,C,2,的面积是三角形,ABC,的面积的,7,分之一。,67,68,分析问题的基本方法,基本方法是:,由顶向下,逐步求精;,即:将复杂问题,分解为小问题,小问题解决了,大问题也就解决了。,例如:如下的问题,已知一个正三角形,ABC,,其内分点,A,1,、,B,1,、,C,1,,使得,2AC,1,=C,1,B,、,2BA,1,=A,1,C,、,2CB,1,=B,1,A,,连接,CC,1,、,BB,1,、,AA,1,,三条直线分别相交于,A,2,、,B,2,、,C,2,(见图,1,)。,要求编写程序验证,:,

45、三角形,A,2,B,2,C,2,面积是三角形,ABC,面积的七分之一,.,69,(7),建立平面直角坐标系;,。,运用逻辑思维分析程序设计:,设正三角形,ABC,的边长为,a,,则本题目就是求两个三角形的面积,已知三角形的边长求面积,对于三角形,ABC,是很容易的,但对于三角形,A,2,B,2,C,2,的面积的求解却比较麻烦。,(,如何求呢,?,),对于该问题的逻辑思维及其分析过程:,(1),三角形,A,2,B,2,C,2,的面积,(2),求边长(,A,2,B,2,、,B,2,C,2,、,C,2,A,2,),(3),求交点坐标(,A,2,、,B,2,、,C,2,),(4),求直线方程(,AA,

46、1,、,BB,1,、,CC,1,),(5),求内分点坐标(,A,1,、,B,1,、,C,1,),(6),已知边长,a,,确定三角形,ABC,的顶点坐标(,A,、,B,、,C,),分析,实现,70,设计分析,(,1,)采用什么设计方法:,面向结构的设计方法?,面向对象的设计方法?,(,2,)不同的设计方法,需要定义不同的数据结构(数据类型),如何定义数据结构;,结构体,类,(,3,)下面我们对两种设计方法,分别给出设计程序,71,采用“面向结构的设计方法”,72,采用“面向结构的设计方法”,需要的工作步骤:,(,1,)定义有关的结构体:,点,直线,三角形,(,2,)给出有关的函数设计实现:,根据

47、前面的分析,需要定义什么函数,完成什么功能,使用什么参数,函数返回值及其类型;,(,3,)设计主函数:,调用(,2,)中的函数,完成要求的功能。,1,、已知一个三角形,t,求面积,mj;,2,、已知两顶点,a,b,求内分点,(,在这里两段的比值为,1:2);,3,、已知两顶点,p1,p2,求直线方程,line,4,、已知两直线,l1,l2,,求交点坐标,5,、已知两点,P1,P2,,求距离,73,(1),首先,定义有关的数据结构(采用结构体),三角形结构(三边形成三角形),(,a,b,c,),struc T,double a;,double b;,double c;,直线方程结构,:ax+by

48、c=0,struc L,double a;,double b;,double c;,点结构,:,(,x,y,),struc P,double x;,double y;,;,直线方程结构,:y=kx+b,struc L,double k;,double b;,或者,74,(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,2,、已知两顶点,a,b,求内分

49、点,(,在这里两段的比值为,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,3,、,已知两顶点,p1,p2,求直线方程,line (ax+by+c=0),L zx(P p1,P p2),L q;,实现过程,.,77,4,、已知两直线,l1,l2,,求交点坐标,P jd(L l1,L l2),实现过程,.,78,5,、已知两点,P1,P2,,求距离,double jl(P p1,P p2),实现过程,.,79,(3),设计主函数(,调用前面的各函数,完成计算),Void main(),

50、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(d

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服