欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C++综合应用实例.ppt

    • 资源ID:66804841       资源大小:620.50KB        全文页数:98页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++综合应用实例.ppt

    C/C+综合应用实例1、数据代数运算系统的设计(相当于计算器)2、学生成绩管理系统的设计3、三角形面积验证程序的设计1、数据代数运算系统的设计(相当于计算器)问题:设计一个计算器程序,完成整数间的加、减、乘、除设计一个计算器程序,完成整数间的加、减、乘、除以及求运算,以及累加求和、计算以及求运算,以及累加求和、计算n!等。!等。(1)计算器程序设计文档 (2)使用TC开发的dos界面程序;(3)程序运行演示;这样的系统不好,我们可以将其改写为图形界面 (4)图形界面程序演示;(5)图形界面程序源代码2、学生成绩管理系统的设计例2:编写程序,实现学生成绩管理:要求实现 用户登录,用户登录,显示主菜单,显示主菜单,学生信息的输入学生信息的输入,学生信息的输出,学生信息的输出,按学号查询学生信息,按学号查询学生信息,按成绩降序排序,按成绩降序排序,追加学生信息,追加学生信息,把学生信息保存到文件,把学生信息保存到文件,从文件中导出学生信息从文件中导出学生信息 等有关的功能。等有关的功能。关于该设计题目的有关问题与分析:(1)采用的程序设计方法的选择?)采用的程序设计方法的选择?A)面向结构的设计方法?面向结构的设计方法?B)面向对象的设计方法?面向对象的设计方法?(2)运行界面的选择?)运行界面的选择?A)DOS界面的设计?界面的设计?B)图形界面(图形界面(Windows界面)?界面)?(3)数据类型的定义)数据类型的定义 (结构体或类的定义)(结构体或类的定义)(4)(数据结构的定义)存放数据的方式)(数据结构的定义)存放数据的方式 顺序表(数组存放一个班学生信息)顺序表(数组存放一个班学生信息)链表(利用指针存放一个班的学生信息)链表(利用指针存放一个班的学生信息)该题目的分析与设计:本题目可以采用本题目可以采用4种方式实现:种方式实现:(1)采用面向结构的程序设计方法,用)采用面向结构的程序设计方法,用顺序顺序表(数组和结构体)表(数组和结构体),DOS界面。界面。(2)采用面向结构的程序设计方法,用)采用面向结构的程序设计方法,用链表链表(指针和结构体),(指针和结构体),DOS界面界面(3)采用面向对象的程序设计方法,用)采用面向对象的程序设计方法,用顺序表顺序表(定义顺序表类)(定义顺序表类),DOS界面界面(4)采用面向对象的程序设计方法,用)采用面向对象的程序设计方法,用链表链表(定义(定义链表链表类),类),DOS界面界面 另外,对这另外,对这4种方式,都可以采用种方式,都可以采用Windows(图形图形)界面实现。界面实现。(1)采用面向结构的程序设计方法)采用面向结构的程序设计方法 用用顺序顺序表(数组和结构体)表(数组和结构体)DOS界面界面采用面向结构的程序设计方法,用采用面向结构的程序设计方法,用顺序顺序表表(数组和结构体),(数组和结构体),DOS界面界面处理过程:(1)定义学生结构体;)定义学生结构体;(2)定义学生数组()定义学生数组(一般放到主函数中定义一般放到主函数中定义)这里要注意,学生人数问题这里要注意,学生人数问题(3)按功能要求定义各有关功能函数;)按功能要求定义各有关功能函数;这里要注意,每个函数的参数及其函数的返回值这里要注意,每个函数的参数及其函数的返回值(4)设计主函数,实现系统所要求的功能。)设计主函数,实现系统所要求的功能。思考:思考:假设将(假设将(2)定义成一个)定义成一个“班级结构体班级结构体”,那么,整,那么,整个系统该如何实现);个系统该如何实现);(1)定义学生结构体;)定义学生结构体;struct st char Class20;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float ave;/平均成绩 int order;/名次 ;按功能要求定义各有关功能函数按功能要求定义各有关功能函数 (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)(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)给出每个函数的具体实现 同学们自己给出各函数的源代码。同学们自己给出各函数的源代码。设计主函数,实现系统所要求的功能设计主函数,实现系统所要求的功能定义学生数组:定义学生数组:这里要注意,学生人数问题这里要注意,学生人数问题Void main()st*t;定义数组定义数组 int m;数组的最大空间数组的最大空间 int n;实际学生人数实际学生人数 m=1000;st=new stm;n=0;显示菜单,分别调用有关的函数。显示菜单,分别调用有关的函数。(3)采用面向对象的程序设计方法)采用面向对象的程序设计方法 用用顺序表顺序表(定义(定义顺序表类顺序表类)DOS界面界面采用面向结构的程序设计方法,用采用面向结构的程序设计方法,用顺序表顺序表(定义(定义顺序表类顺序表类),),DOS界面界面处理过程:(1)定义学生类;)定义学生类;(2)定义班级类)定义班级类(3)设计主函数,定义有关的对象,并调用有关的函数,)设计主函数,定义有关的对象,并调用有关的函数,完成系统功能。完成系统功能。分析:分析:由于成绩管理是由多名学生构成的,所以需要定义由于成绩管理是由多名学生构成的,所以需要定义学生类学生类;另外,由多个学生,形成一个班或年级,所以还需要定义一另外,由多个学生,形成一个班或年级,所以还需要定义一个个班级(年级)类班级(年级)类(1)定义学生类;)定义学生类;class st private:char Class20;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float ave;/平均成绩 int order;/名次 public:分析:关于学生类,该有哪些函数成员?分析:关于学生类,该有哪些函数成员?;学生类,函数成员的定义与实现学生类,函数成员的定义与实现public:(1)构造函数的定义:构造函数的定义:利用参数传递,形成一个学生利用参数传递,形成一个学生 有键盘输入形成一个学生有键盘输入形成一个学生 (2)输出学生信息函数;输出学生信息函数;(2)定义班级类)定义班级类class bj private:int m;/私有变量,顺序表实例的最大长度私有变量,顺序表实例的最大长度 int n;/私有变量,顺序表实例的当前长度私有变量,顺序表实例的当前长度 st *s;/存放学生的数组(利用指针实现)存放学生的数组(利用指针实现)public:分析:关于班级类,该有哪些函数成员?分析:关于班级类,该有哪些函数成员?;班级类,函数成员的定义与实现班级类,函数成员的定义与实现public:(1)构造函数的定义:构造函数的定义:利用参数传递,形成班级 由数组由数组s中,中,n各学生,形成班级各学生,形成班级 bj(st s int n);有键盘输入形成班级 学生信息的输入学生信息的输入(输入的结束条件如何设计?输入的结束条件如何设计?)bj();有文件导入,形成班级;从文件从文件f中导出学生信息中导出学生信息,bj(char*f)其它成员函数其它成员函数 (2)输出学生信息,要求:按一定得格式输出学生信息)输出学生信息,要求:按一定得格式输出学生信息(最好是表格格式,并且当学生人数较多时,应按页显示)(最好是表格格式,并且当学生人数较多时,应按页显示)void pint()(3)查询学号为)查询学号为x的学生信息,并返回查找成功是(位置号)的学生信息,并返回查找成功是(位置号)否(否(-1)。)。int find(int x)(4)按平均成绩降序排序,形成新类。按平均成绩降序排序,形成新类。st sort()(5)在学生信息的未,输入追加学生信息。在学生信息的未,输入追加学生信息。注意:输入的结束条件如何设计?注意:输入的结束条件如何设计?void input()(6)在学生信息的未,通过文件在学生信息的未,通过文件f,追加学生信息。追加学生信息。void app(char*f)(7)保存到文件)保存到文件f中。中。void save(char *f)给出每个函数的具体实现 同学们自己给出各函数的源代码。同学们自己给出各函数的源代码。设计主函数,实现系统所要求的功能设计主函数,实现系统所要求的功能定义有关的对象定义有关的对象Void main()bj b;定义班级对象定义班级对象 st s;定义学生对象定义学生对象 显示菜单,分别调用有关的函数。显示菜单,分别调用有关的函数。链表成绩管理1.链表的定义与结构描述2.链表的有关操作实现3.利用链表结构实现成绩管理 (1)成绩管理的功能分析 (2)成绩管理的类定义与实现3 采用面向对象的程序设计方法,采用面向对象的程序设计方法,用用链表链表(定义(定义链表链表类),类),DOS界面界面1 单链表单链表通过指针把它的一串存储结点链接成一个链 存储结点由两部分组成:data字段 next 字段 data next头指针指向下一个节点的指针附加头结点结点尾指针单链表的结点类型struct ListNode int data;ListNode *next;data next问题问题(有关链表的操作有关链表的操作):n 如何定义如何定义(申明申明)一个链表呢一个链表呢?n 如何形成一个链表呢如何形成一个链表呢?n 在链表中指定的位置处在链表中指定的位置处,如何插入一个节点呢如何插入一个节点呢?n 在链表中如何删除一个节点呢在链表中如何删除一个节点呢?n 一个链表中一个链表中,有几个数据元素呢有几个数据元素呢?如何定义如何定义(申明申明)一个链表呢一个链表呢?一个链表一般只要告诉该链表的头指针即可。定义链表:struct ListNode *first 该链表所有的操作,全部是从该链表所有的操作,全部是从“first”开始,开始,并且,该指针并且,该指针永远永远指向第一个位置指向第一个位置。一个链表是如何形成呢一个链表是如何形成呢?一个链表的形成,一般需要两步:First(2)在空链表的基础上不断的插入节点,从而形成链表。)在空链表的基础上不断的插入节点,从而形成链表。一般分为:在前插入、在后插入两种一般分为:在前插入、在后插入两种(1)首先形成一个空链表:)首先形成一个空链表:NULL(0)构造空单链表LinkList()first=new ListNode;first-next=0;first(a)建空表建空表建立单链表建立单链表头插法建立单链表图示头插法建立单链表图示 first(a)建空表建空表c1ss 指向新申请的结点指向新申请的结点sdatac1(b)申请新结点并赋值申请新结点并赋值firstlast(c)插入第一个结点插入第一个结点 last=s last=sc1执行的语句组为执行的语句组为:snextfirstnext;firstnexts;ci1firstc2c1cis(d)插入第插入第i个元素个元素头插法头插法尾插法建表尾插法建表 尾插法建表图示尾插法建表图示 c1ss 指向新申请的结点空间指向新申请的结点空间sdatac1(b)申请新结点并赋值申请新结点并赋值firstL(a)建空表建空表lastfs(c)插入第一个结点插入第一个结点c1lastlasts;last指向链表的结尾指向链表的结尾c1firstc2last nexts;(d)插入第二个结点插入第二个结点sr将新建的节点插入到链表的最后将新建的节点插入到链表的最后尾指针尾指针在头结点之后插入一个新结点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个元素个元素单链表的建立(调用插入函数,可以创建链表:形成具有n个元素的链表)void LinkList:create(int n)int i=0;int data;cout endlplease input the data of the list;while(idata;insert(data);i+;查找单链表中第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;单链表插入算法(第i节点前插入)La1ai1aianpre(a)寻找第寻找第i1个结点个结点es(b)申请新的结点申请新的结点preLa1ai1aianes与与ai连链连链:snextprenextai-1与与ai断断链链,插入插入e:prenexts;(c)插入插入单链表插入算法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)插入插入单链表删除算法 void RemoveAfter(ListNode*link)/删除参数link的后继结点 ListNode*newlink;if(link!=NULL)newlink=link-next;link-next=newlink-next link-next=link-next-nexy delete newlink;求长度算法int Length()ListNode *p=first-next;int count=0;while(p!=NULL)p=p-next;count+;return count;La0ai1aian()p单链表的类定义单链表的类定义分析分析1数据成员数据成员:两个指向结点的指针两个指向结点的指针:头指针和尾指针头指针和尾指针 2成员函数成员函数:(1)构造函数构造函数 /创建并形成一个初始链表创建并形成一个初始链表 (2)析构函数析构函数 /删除构造函数所创建的链表删除构造函数所创建的链表 (3)插入元素函数插入元素函数 /在表的第在表的第i 个位置处个位置处,插入数据或在表尾插入元素插入数据或在表尾插入元素 (4)删除元素函数删除元素函数 /删除表中数值为删除表中数值为x的元素的元素 (5)查找元素查找元素 /在表中查找数据为在表中查找数据为x的元素在表中的位置的元素在表中的位置 (6)输出链表输出链表 /从头到尾输出表中的所有的元素从头到尾输出表中的所有的元素 (7)判定链表是否为空判定链表是否为空 /为了进行删除进行的一种判定为了进行删除进行的一种判定 (8)将链表设置为一个空表将链表设置为一个空表 /(9)计算链表的长度计算链表的长度 /统计链表中元素个数统计链表中元素个数 (10)将链表元素值写到文件中将链表元素值写到文件中 (11)将文件中的数据读到链表中将文件中的数据读到链表中 class 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();单链表的类定义单链表的类定义三、利用链表结构实现成绩管理三、利用链表结构实现成绩管理 (1)成绩管理的功能分析 (2)成绩管理的类定义与实现要求:1简单的系统与功能分析2建立数据结构表3要建立一个测试的数据表,至少要有20个测试数据4使用数据链表实现数据的:录入、查询、修改、增加、删除、统计、输出,一、定义学生成绩管理系统的数据结构表一、定义学生成绩管理系统的数据结构表序号 成员名 数据类型 长度 字段含义 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 ”自定义的结构类型“指针,指向下一个结点二、根据所要求的成绩管理系统定义类系统的功能要求:使用数据链表实现如下功能:初始链表的建立,录入、查询、修改、增加、删除、统计、输出等功能。(一一)数据定义数据定义(类的数据成员说明类的数据成员说明):一个指向学生结构的头指针一个指向学生结构的头指针;(注意注意:该指针就是链表的头该指针就是链表的头)struct node int Class;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float ave;/平均成绩 int order;/名次 node*next;/指针;class cj private:struct node *head;public:待定义的各功能函数待定义的各功能函数 结点定结点定义义类定义类定义(二)操作定义(函数功能划分划分)1.初始链表的建立初始链表的建立:利用类的构造函数构造函数,建立一个只有附加头结点附加头结点的空链表空链表;2.录入录入(增加一个增加一个)学生信息学生信息:由键盘一个一个输入学生的信息,并链到链表中;(注意:什么时候停止输入呢?即:输入的结束条件?)如何链到链表上呢?(在表的尾上追加尾上追加)3.追加结点追加结点:在链表尾上链上一个结点(p所指的结点):4.链表的建立链表的建立:在空链表已经建立的基础上,向链表中提供信息(注意:采用先提供的信息在表的前面,依次向后);可以分为两种方式:(1)由键盘一个一个输入学生的信息,并链到链表中;(可以直接使用添加学生操作;即使用2)(2)利用文件将文件中的内容读入利用文件将文件中的内容读入,并链到链表中并链到链表中5.定位定位:提供学生的学号,在链表中查找该学生所在链表中的位置 (返回指向该结点的一个指针)(注意:该操作是为后面的操作服务的,特别是:删除、修改、查询)6.查询查询:提供学生的学号,在链表中查找该学生并输出该学生的信息(包括学生的名次)7.删除删除:提供学生的学号,在链表中查找该学生,并从表中删除学号是该值的学生8.修改成绩修改成绩:提供学生的学号,在链表中查找该学生,找到后先显示原来的学生信息,然后修改(重新输入)学生信息 9.统计统计:给出各课成绩的平均分,总平均分,并分别按各课程统计成绩段的人数:优秀人数、良好人数、中等人数、及格人数,不及格人数,并按一定的格式将所有统计结果显示出来。10.排序排序(降序降序):按学生的平均成绩进行由小到大排序,新形成一个排序链表,.(注意:该操作是为其它操作服务的;例如:5(查询)可以使用,当添加学生或删除学生以及修改学生成绩后,都需要重新排序)11.输出链表输出链表:按链表中的先后次序输出表中的所有信息 (注意:该操作为按顺序输出信息和排序输出服务):12.写文件写文件:将进行各种操作后所形成的链表信息,写入文件中,备以后使用时,利用3(2)再读入形成链表.(注意:可以形成两类文件:按输入的顺序,按排序后的)13.其他的一些服务操作:(1)析构函数析构函数:(2)输出表头函数输出表头函数:(为功能、6、7、8、11、12服务)(3)输出输出P指针所指结点信息指针所指结点信息:(为功能:6、7、8、11、12服务)类声明:由以上分析,可以给出成绩管理的类声明: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)计算链表的长度计算链表的长度;cj:cj()/1:构造函数构造函数,建立一个只有附加头结点附加头结点的空链表空链表head=new node;head-next=0;void 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;void 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;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);/取第二行标题取第二行标题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();node 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;void 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;void 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;void 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;void cj:output()/11:输出链表中各结点值输出链表中各结点值 node*p;p=head-next;cout输出学生信息:next;coutendl;void 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();cj:cj()/13(1):析构函数析构函数,程序运行结束时程序运行结束时,删除链表中的各结点删除链表中的各结点,node*p1;while(head)p1=head;head=head-next;delete p1;void 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;void 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;switch(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;3、三角形面积验证程序的设计问题:问题:给出求解下列问题逐步求精的分析过程给出求解下列问题逐步求精的分析过程,并并设计程序完成其验证:设计程序完成其验证:已知一个正三角形已知一个正三角形ABC,其内分点,其内分点A1、B1、C1,使得,使得2AC1=C1B、2BA1=A1C、2CB1=B1A,连接连接CC1、BB1、AA1,三条直线分别相交于,三条直线分别相交于A2、B2、C2。要求编写程序验证。要求编写程序验证,三角形三角形A2B2C2的面的面积是三角形积是三角形ABC的面积的的面积的7分之一。分之一。分析问题的基本方法分析问题的基本方法 基本方法是:基本方法是:由顶向下,逐步求精;由顶向下,逐步求精;即:即:将复杂问题,分解为小问题,小问题解决了,将复杂问题,分解为小问题,小问题解决了,大问题也就解决了。大问题也就解决了。例如:如下的问题例如:如下的问题 已知一个正三角形已知一个正三角形ABC,其内分点,其内分点A1、B1、C1,使得,使得2AC1=C1B、2BA1=A1C、2CB1=B1A,连接,连接CC1、BB1、AA1,三条直线分别相交于,三条直线分别相交于A2、B2、C2(见图(见图1)。)。要求编写程序验证要求编写程序验证:三角形三角形A2B2C2面积是三角形面积是三角形 ABC面积的七分之一面积的七分之一.(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的顶点坐标(的顶点坐标(

    注意事项

    本文(C++综合应用实例.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开