C++综合应用实例.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++综合应用实例.ppt》由会员分享,可在线阅读,更多相关《C++综合应用实例.ppt(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C/C+综合应用实例1、数据代数运算系统的设计(相当于计算器)2、学生成绩管理系统的设计3、三角形面积验证程序的设计1、数据代数运算系统的设计(相当于计算器)问题:设计一个计算器程序,完成整数间的加、减、乘、除设计一个计算器程序,完成整数间的加、减、乘、除以及求运算,以及累加求和、计算以及求运算,以及累加求和、计算n!等。!等。(1)计算器程序设计文档 (2)使用TC开发的dos界面程序;(3)程序运行演示;这样的系统不好,我们可以将其改写为图形界面 (4)图形界面程序演示;(5)图形界面程序源代码2、学生成绩管理系统的设计例2:编写程序,实现学生成绩管理:要求实现 用户登录,用户登录,显示主
2、菜单,显示主菜单,学生信息的输入学生信息的输入,学生信息的输出,学生信息的输出,按学号查询学生信息,按学号查询学生信息,按成绩降序排序,按成绩降序排序,追加学生信息,追加学生信息,把学生信息保存到文件,把学生信息保存到文件,从文件中导出学生信息从文件中导出学生信息 等有关的功能。等有关的功能。关于该设计题目的有关问题与分析:(1)采用的程序设计方法的选择?)采用的程序设计方法的选择?A)面向结构的设计方法?面向结构的设计方法?B)面向对象的设计方法?面向对象的设计方法?(2)运行界面的选择?)运行界面的选择?A)DOS界面的设计?界面的设计?B)图形界面(图形界面(Windows界面)?界面)
3、?(3)数据类型的定义)数据类型的定义 (结构体或类的定义)(结构体或类的定义)(4)(数据结构的定义)存放数据的方式)(数据结构的定义)存放数据的方式 顺序表(数组存放一个班学生信息)顺序表(数组存放一个班学生信息)链表(利用指针存放一个班的学生信息)链表(利用指针存放一个班的学生信息)该题目的分析与设计:本题目可以采用本题目可以采用4种方式实现:种方式实现:(1)采用面向结构的程序设计方法,用)采用面向结构的程序设计方法,用顺序顺序表(数组和结构体)表(数组和结构体),DOS界面。界面。(2)采用面向结构的程序设计方法,用)采用面向结构的程序设计方法,用链表链表(指针和结构体),(指针和结
4、构体),DOS界面界面(3)采用面向对象的程序设计方法,用)采用面向对象的程序设计方法,用顺序表顺序表(定义顺序表类)(定义顺序表类),DOS界面界面(4)采用面向对象的程序设计方法,用)采用面向对象的程序设计方法,用链表链表(定义(定义链表链表类),类),DOS界面界面 另外,对这另外,对这4种方式,都可以采用种方式,都可以采用Windows(图形图形)界面实现。界面实现。(1)采用面向结构的程序设计方法)采用面向结构的程序设计方法 用用顺序顺序表(数组和结构体)表(数组和结构体)DOS界面界面采用面向结构的程序设计方法,用采用面向结构的程序设计方法,用顺序顺序表表(数组和结构体),(数组和
5、结构体),DOS界面界面处理过程:(1)定义学生结构体;)定义学生结构体;(2)定义学生数组()定义学生数组(一般放到主函数中定义一般放到主函数中定义)这里要注意,学生人数问题这里要注意,学生人数问题(3)按功能要求定义各有关功能函数;)按功能要求定义各有关功能函数;这里要注意,每个函数的参数及其函数的返回值这里要注意,每个函数的参数及其函数的返回值(4)设计主函数,实现系统所要求的功能。)设计主函数,实现系统所要求的功能。思考:思考:假设将(假设将(2)定义成一个)定义成一个“班级结构体班级结构体”,那么,整,那么,整个系统该如何实现);个系统该如何实现);(1)定义学生结构体;)定义学生结
6、构体;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个学生信息输出,要求:按一定得格式输出学生信个
7、学生信息输出,要求:按一定得格式输出学生信息(最好是表格格式,并且当学生人数较多时,应按页显示)息(最好是表格格式,并且当学生人数较多时,应按页显示)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个
8、学生信息的未,输入追加学生信息。个学生信息的未,输入追加学生信息。该功能的实现,可以使用(该功能的实现,可以使用(1)输入学生信息功能)输入学生信息功能(6)将数组)将数组s,n个学生信息,保存到文件个学生信息,保存到文件f中。中。save(st s,int n,char*f)(7)从文件从文件f中导出学生信息中导出学生信息,存放到数组存放到数组s中,并返回实际学生人数中,并返回实际学生人数n。load(char*f,st s,int&n)给出每个函数的具体实现 同学们自己给出各函数的源代码。同学们自己给出各函数的源代码。设计主函数,实现系统所要求的功能设计主函数,实现系统所要求的功能定义学生
9、数组:定义学生数组:这里要注意,学生人数问题这里要注意,学生人数问题Void main()st*t;定义数组定义数组 int m;数组的最大空间数组的最大空间 int n;实际学生人数实际学生人数 m=1000;st=new stm;n=0;显示菜单,分别调用有关的函数。显示菜单,分别调用有关的函数。(3)采用面向对象的程序设计方法)采用面向对象的程序设计方法 用用顺序表顺序表(定义(定义顺序表类顺序表类)DOS界面界面采用面向结构的程序设计方法,用采用面向结构的程序设计方法,用顺序表顺序表(定义(定义顺序表类顺序表类),),DOS界面界面处理过程:(1)定义学生类;)定义学生类;(2)定义班
10、级类)定义班级类(3)设计主函数,定义有关的对象,并调用有关的函数,)设计主函数,定义有关的对象,并调用有关的函数,完成系统功能。完成系统功能。分析:分析:由于成绩管理是由多名学生构成的,所以需要定义由于成绩管理是由多名学生构成的,所以需要定义学生类学生类;另外,由多个学生,形成一个班或年级,所以还需要定义一另外,由多个学生,形成一个班或年级,所以还需要定义一个个班级(年级)类班级(年级)类(1)定义学生类;)定义学生类;class st private:char Class20;/班级 int num;/学号 char name8;/姓名 float kc6;/各课程成绩(6门)float
11、ave;/平均成绩 int order;/名次 public:分析:关于学生类,该有哪些函数成员?分析:关于学生类,该有哪些函数成员?;学生类,函数成员的定义与实现学生类,函数成员的定义与实现public:(1)构造函数的定义:构造函数的定义:利用参数传递,形成一个学生利用参数传递,形成一个学生 有键盘输入形成一个学生有键盘输入形成一个学生 (2)输出学生信息函数;输出学生信息函数;(2)定义班级类)定义班级类class bj private:int m;/私有变量,顺序表实例的最大长度私有变量,顺序表实例的最大长度 int n;/私有变量,顺序表实例的当前长度私有变量,顺序表实例的当前长度
12、st *s;/存放学生的数组(利用指针实现)存放学生的数组(利用指针实现)public:分析:关于班级类,该有哪些函数成员?分析:关于班级类,该有哪些函数成员?;班级类,函数成员的定义与实现班级类,函数成员的定义与实现public:(1)构造函数的定义:构造函数的定义:利用参数传递,形成班级 由数组由数组s中,中,n各学生,形成班级各学生,形成班级 bj(st s int n);有键盘输入形成班级 学生信息的输入学生信息的输入(输入的结束条件如何设计?输入的结束条件如何设计?)bj();有文件导入,形成班级;从文件从文件f中导出学生信息中导出学生信息,bj(char*f)其它成员函数其它成员函
13、数 (2)输出学生信息,要求:按一定得格式输出学生信息)输出学生信息,要求:按一定得格式输出学生信息(最好是表格格式,并且当学生人数较多时,应按页显示)(最好是表格格式,并且当学生人数较多时,应按页显示)void pint()(3)查询学号为)查询学号为x的学生信息,并返回查找成功是(位置号)的学生信息,并返回查找成功是(位置号)否(否(-1)。)。int find(int x)(4)按平均成绩降序排序,形成新类。按平均成绩降序排序,形成新类。st sort()(5)在学生信息的未,输入追加学生信息。在学生信息的未,输入追加学生信息。注意:输入的结束条件如何设计?注意:输入的结束条件如何设计?
14、void input()(6)在学生信息的未,通过文件在学生信息的未,通过文件f,追加学生信息。追加学生信息。void app(char*f)(7)保存到文件)保存到文件f中。中。void save(char *f)给出每个函数的具体实现 同学们自己给出各函数的源代码。同学们自己给出各函数的源代码。设计主函数,实现系统所要求的功能设计主函数,实现系统所要求的功能定义有关的对象定义有关的对象Void main()bj b;定义班级对象定义班级对象 st s;定义学生对象定义学生对象 显示菜单,分别调用有关的函数。显示菜单,分别调用有关的函数。链表成绩管理1.链表的定义与结构描述2.链表的有关操作
15、实现3.利用链表结构实现成绩管理 (1)成绩管理的功能分析 (2)成绩管理的类定义与实现3 采用面向对象的程序设计方法,采用面向对象的程序设计方法,用用链表链表(定义(定义链表链表类),类),DOS界面界面1 单链表单链表通过指针把它的一串存储结点链接成一个链 存储结点由两部分组成:data字段 next 字段 data next头指针指向下一个节点的指针附加头结点结点尾指针单链表的结点类型struct ListNode int data;ListNode *next;data next问题问题(有关链表的操作有关链表的操作):n 如何定义如何定义(申明申明)一个链表呢一个链表呢?n 如何形成
16、一个链表呢如何形成一个链表呢?n 在链表中指定的位置处在链表中指定的位置处,如何插入一个节点呢如何插入一个节点呢?n 在链表中如何删除一个节点呢在链表中如何删除一个节点呢?n 一个链表中一个链表中,有几个数据元素呢有几个数据元素呢?如何定义如何定义(申明申明)一个链表呢一个链表呢?一个链表一般只要告诉该链表的头指针即可。定义链表:struct ListNode *first 该链表所有的操作,全部是从该链表所有的操作,全部是从“first”开始,开始,并且,该指针并且,该指针永远永远指向第一个位置指向第一个位置。一个链表是如何形成呢一个链表是如何形成呢?一个链表的形成,一般需要两步:First
17、(2)在空链表的基础上不断的插入节点,从而形成链表。)在空链表的基础上不断的插入节点,从而形成链表。一般分为:在前插入、在后插入两种一般分为:在前插入、在后插入两种(1)首先形成一个空链表:)首先形成一个空链表:NULL(0)构造空单链表LinkList()first=new ListNode;first-next=0;first(a)建空表建空表建立单链表建立单链表头插法建立单链表图示头插法建立单链表图示 first(a)建空表建空表c1ss 指向新申请的结点指向新申请的结点sdatac1(b)申请新结点并赋值申请新结点并赋值firstlast(c)插入第一个结点插入第一个结点 last=s
18、 last=sc1执行的语句组为执行的语句组为:snextfirstnext;firstnexts;ci1firstc2c1cis(d)插入第插入第i个元素个元素头插法头插法尾插法建表尾插法建表 尾插法建表图示尾插法建表图示 c1ss 指向新申请的结点空间指向新申请的结点空间sdatac1(b)申请新结点并赋值申请新结点并赋值firstL(a)建空表建空表lastfs(c)插入第一个结点插入第一个结点c1lastlasts;last指向链表的结尾指向链表的结尾c1firstc2last nexts;(d)插入第二个结点插入第二个结点sr将新建的节点插入到链表的最后将新建的节点插入到链表的最后尾
19、指针尾指针在头结点之后插入一个新结点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 endlpleas
20、e 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断断链链
21、,插入插入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(ListNo
22、de*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数据成员数据成员:两个指向结点的指针两个指向结点的指针:头指针和尾指针头指针
23、和尾指针 2成员函数成员函数:(1)构造函数构造函数 /创建并形成一个初始链表创建并形成一个初始链表 (2)析构函数析构函数 /删除构造函数所创建的链表删除构造函数所创建的链表 (3)插入元素函数插入元素函数 /在表的第在表的第i 个位置处个位置处,插入数据或在表尾插入元素插入数据或在表尾插入元素 (4)删除元素函数删除元素函数 /删除表中数值为删除表中数值为x的元素的元素 (5)查找元素查找元素 /在表中查找数据为在表中查找数据为x的元素在表中的位置的元素在表中的位置 (6)输出链表输出链表 /从头到尾输出表中的所有的元素从头到尾输出表中的所有的元素 (7)判定链表是否为空判定链表是否为空
24、/为了进行删除进行的一种判定为了进行删除进行的一种判定 (8)将链表设置为一个空表将链表设置为一个空表 /(9)计算链表的长度计算链表的长度 /统计链表中元素个数统计链表中元素个数 (10)将链表元素值写到文件中将链表元素值写到文件中 (11)将文件中的数据读到链表中将文件中的数据读到链表中 class LinkList /链表类链表类 private:ListNode *first,*last;/链表的表头指针和尾指针链表的表头指针和尾指针 public:LinkList()LinkList();/析构函数析构函数 ListNode *Insert(int value,int i);List
25、node *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建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 综合 应用 实例
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内