级通信工程专业面向对象课程设计要求与指导.docx

上传人:b****6 文档编号:8724654 上传时间:2023-02-01 格式:DOCX 页数:34 大小:202.19KB
下载 相关 举报
级通信工程专业面向对象课程设计要求与指导.docx_第1页
第1页 / 共34页
级通信工程专业面向对象课程设计要求与指导.docx_第2页
第2页 / 共34页
级通信工程专业面向对象课程设计要求与指导.docx_第3页
第3页 / 共34页
级通信工程专业面向对象课程设计要求与指导.docx_第4页
第4页 / 共34页
级通信工程专业面向对象课程设计要求与指导.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

级通信工程专业面向对象课程设计要求与指导.docx

《级通信工程专业面向对象课程设计要求与指导.docx》由会员分享,可在线阅读,更多相关《级通信工程专业面向对象课程设计要求与指导.docx(34页珍藏版)》请在冰豆网上搜索。

级通信工程专业面向对象课程设计要求与指导.docx

级通信工程专业面向对象课程设计要求与指导

2012级《面向对象课程设计》要求与指导

专业:

通信工程

指导教师:

任世卿,刘洋,马玉峰,李晓静

一、课程设计的目的

面向对象课程设计是通信工程专业非常重要的实践性环节之一,是学完面向对象程序设计课程后的一次全面的综合练习。

本课程设计主要在于巩固学生对面向对象程序设计的基础理论的理解,掌握面向对象程序设计开发的基本方法,进一步提高学生综合运用所学知识的能力。

二、课程设计的要求及内容

(一)课程设计的基本要求

以MicrosoftVisualC++6.0作为集成开发环境,完成面向对象课程设计。

要求每人完成一个题目,题目由指导教师指派,学生与题目之间一一对应(即两个学生的题目不能重复),学生进行程序分析、设计、编程与调试、功能测试,并最终完成课程设计报告。

其中每个题目必须采用类与对象进行编程,每个题目的程序必须用两种工程实现,一种是Win32ConsoleApplication,输入输出采用传统DOS的字符式交互界面;另一种是MFCAppWizard(exe),输入输出采用基于Windows的图形式交互界面。

(二)各题目具体要求

1.分数类的设计与实现

建立用于完成分数形式运算的类RationalNumber。

编写一个测试该类的程序。

用整数变量表示类的私有数据(即分子和分母)。

给类提供一个能够对所声明的对象初始化的构造函数。

为了能够在不提供初始化值的情况下也能对对象初始化,构造函数中应该包含默认的值。

构造函数还应该以最简分数的形式存储数据,即2/4应该在对象中存储成分子为1、分母为2的形式。

公有成员函数应该有以下功能:

(1)两个有理数相加,以最简形式保存结果;

(2)两个有理数相减,以最简形式保存结果;

(3)两个有理数相乘,以最简形式保存结果;

(4)两个有理数相除,以最简形式保存结果;

(5)以a/b的形式输出有理数(a是分子,b是分母);

(6)以浮点形式输出有理数。

2.一维数组类模板的设计与实现

建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char,int,float等多种数据类型,类中的成员函数主要包括:

(1)排序函数,能够对数组元素进行升序排列;

(2)查找函数,能够在输入待查元素后,输出其在数组中的下标;

(3)构造函数,初始化输入数组元素,这里要求数组元素的个数n是一个变量;

(4)析构函数,释放数组元素所占用的堆内存;

(5)Set函数,可以为指定的数组元素赋值;

(6)Get函数,可以读取指定数组元素的值;

(7)Print函数,可以输出数组元素的值。

(8)编写一个测试该模板类的程序。

3.向量类的设计与实现

编写一个实现n维向量各种操作的类,功能包括:

(1)构造函数实现n维向量的初始化构造,这里n可变;

(2)析构函数实现向量动态内存的释放;

(3)拷贝构造函数实现向量的拷贝构造;

(4)重载赋值运算符‘=’,实现两个向量之间的赋值;

(5)编写成员函数求两个向量的内积;

(6)编写成员函数求两个向量的外积;

(7)编写成员函数求两个向量的和;

(8)编写成员函数求两个向量的差;

(9)编写成员函数判断两个向量之间的线性相关性。

(10)编写一个主函数测试多项式类的上述功能。

4.多项式类的设计与实现

开发多项式类Polynomial,多项式的每一项用链表的结点表示,每项包含一个系数和一个指数。

例如:

2x4的指数为4,系数为2。

请开发一个完整的Polynomial类,包括构造函数、析构函数以及“get”函数(读取值)和“set”函数(设置值)。

该类还要提供以下重载的运算符:

(1)重载加法运算符+,将两个多项式相加。

(2)重载加法运算符-,将两个多项式相减。

(3)重载赋值运算符=,将一个多项式赋给另外一个多项式。

(4)重载加法运算符*,将两个多项式相乘。

(5)编写一个主函数测试多项式类的上述功能。

5.基于成员函数的方阵类设计与实现

设计一个能够实现n×n矩阵操作的类,这里的n可变,主要功能包括:

(1)使用构造函数完成方阵的初始化赋值;

(2)使用析构函数完成矩阵动态内存的释放;

(3)使用函数实现两个矩阵的和;

(4)使用函数实现两个矩阵的差;

(5)使用函数实现两个矩阵的积;

(6)使用函数实现矩阵的转置;

(7)使用函数求矩阵中的最大值;

(8)使用函数求矩阵中的最小值。

(9)编写一个主函数测试上述功能。

6.基于运算符重载的方阵类设计与实现

设计一个能够实现n×n矩阵操作的类,这里的n可变,主要功能包括:

(1)使用构造函数完成方阵的初始化赋值;

(2)使用析构函数完成矩阵动态内存的释放;

(3)重载加法运算符+,实现两个矩阵的和;

(4)重载加法运算符-,实现两个矩阵的差;

(5)重载加法运算符*,实现两个矩阵的积;

(6)重载加法运算符=,实现两个矩阵之间的赋值;

(7)使用拷贝构造函数完成方阵的拷贝构造;

(8)重载加法运算符<<,实现矩阵按照行列的格式输出;

(9)编写一个主函数测试上述功能。

7.复数类的设计与实现

设计一个复数类,复数类的数据成员是real和imag,它们的数据类型是double,分别表示复数的实部和虚部,要求如下:

(1)编写一个带有缺省参数的构造函数,默认值为(0,0),实现一个复数的构造。

(2)编写一个拷贝构造函数,实现一个复数的拷贝构造。

(3)编写一个析构函数,在函数中输出(real,imag)被析构,例如:

如果复数的实部为1,虚部为2,则被析构时程序输出:

“(1,2)被析构”。

(4)重载运算符“+”为复数类的成员函数,其功能是返回两个复数的相加的结果。

(5)重载运算符“-”为复数类的成员函数,其功能是返回两个复数的相减的结果。

(6)重载运算符“*”为复数类的友元函数,其功能是返回两个复数的相乘的结果。

(7)重载运算符“/”为复数类的友元函数,其功能是返回两个复数的相除的结果。

(8)重载单目运算符“-”为复数类的友元函数,其功能是返回当前复数的相反数。

(9)重载运算符“>>”为复数类的友元函数,其功能是按照以格式(real,imag)

(10)输入复数。

例如:

如果复数的实部为1,虚部为2,则输入的格式是“(1,2)”。

(11)重载运算符“<<”为复数类的友元函数,其功能是按照以格式(real,imag)

(12)输出复数。

例如:

如果复数的实部为1,虚部为2,则输出的结果是“(1,2)”。

(13)以上函数在类的内部写出函数原型,在类的外部写出函数实现代码,最后编写一个主函数main测试以上的函数功能。

8.单链表类的设计与实现

编写一个实现学生信息单链表各种操作的类,学生信息包括学号、姓名和成绩,类实现以下功能:

(1)初始化单链表为空表;

(2)实现单链表的插入操作的成员函数;

(3)实现单链表的删除操作的成员函数;

(4)实现单链表的查找操作的成员函数(给定学号,查找其学号、姓名和成绩);

(5)实现求单链表长度的成员函数;

(6)实现建立单链表的成员函数,单链表节点的个数不确定。

(7)编写一个主函数测试上述功能。

9.大整数类的设计与实现

计算机中表示整数的位数是有限的,设计并实现一个能够进行任意长度整数准确计算的类,完成以下功能:

(1)用构造函数实现大整数的构造。

(2)重载“+”运算符,实现两个大整数的相加运算;

(3)重载“-”运算符,实现两个大整数的相减运算;

(4)重载“*”运算符,实现两个大整数的相乘运算;

(5)重载“<<”运算符,实现大整数的输出。

提示:

长整数用一维字符型数组来存储,数组的每一个元素顺序存储长整数的一位数字。

设有k位长整数m,用数组a[]存储:

m=a[k]*10^(k-1)+a[k-1]*10^(k-2)+...+a[2]*10^1+a[1]*10^0

并用a[0]存储长整数m的位数,即a[0]=k。

10.小型人员信息管理系统的设计与实现

某小型公司主要有四类人员:

经理、兼职技术人员、销售经理和兼职推销员。

现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。

人员编号基数为1000,每输入一个人员信息编号顺序加1。

程序要有对所有人员提升级别的功能。

本例中为简单起见,所有人员的初始级别均为1级,然后进行升级,经理升为4级,兼职技术人员和销售经理升为3级,推销员认为1级。

月薪计算办法是:

经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销员的月薪按该推销员当月销售额的4%提成;销售经理即拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的千分之五。

要求为每一类人员单独建立文件,并在每个文件中手工录入一些人员基本信息,并根据这些基本信息计算职工的月薪,并将计算结果保存入相应的磁盘文件中。

要求编写程序实现上述功能,并且可以通过实例演示上述功能。

11.大学教师工资的计算与存储

某大学的教师的职称等级决定其工资等级,教师共有四种职称等级:

助教,讲师,副教授,教授,其月薪分别为:

助教900元/月,讲师1000元/月,副教授1300元/月,教授1600元/月。

编写一个计算教师工资的程序,要求如下:

(1)建立一个抽象基类Teacher,其数据成员有:

教师姓名name,教师职称position,教师工资Salary;成员函数有:

纯虚函数CalcSalary()计算教师工资,纯虚函数Show()输出教师的姓名、职称和工资。

(2)分别从抽象基类Teacher中派生出四个具体类Assistant,Lecture,AssociateProfessor,Professor,分别表示助教,讲师,副教授,教授。

在每一个类中实现三个成员函数,构造函数为教师初始化姓名和职称;CalcSalary()函数计算教师工资;Show()输出教师的姓名、类别和工资,其中输出格式为:

姓名:

name,职称:

position,工资:

Salary元

(3)教师的姓名和职称信息包含在磁盘文件teacher.txt中,要求建立teacher.txt文本文件,并输入如下信息:

王刚助教

李铭讲师,

张莉副教授

赵蒙教授

程序从Teacher.txt文件中读取上述信息,作为工资计算依据。

(4)编写一个主函数main测试以上各类,要求用一个基类的指针分别指向派生类对象分别计算每一个人的工资,并将输出结果保存到Teacher.txt文件中。

例如输出如下结果:

王刚助教900

李铭讲师1000

张莉副教授1300

赵蒙教授1600

12.小型教师与干部管理信息系统的设计与实现

分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。

要求:

(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。

(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Techear_Cadre类中还包含数据成员wages(工资)。

(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

(4)在类体中声明成员函数,在类外定义成员函数。

(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

(6)人员的基本信息分别存储在磁盘文件Teacher.txt,Cadre.txt和Teacher_Cadre.txt文件中,Teacher.txt的格式是:

(姓名、年龄、性别、地址、电话、职称),Cadre.txt的格式是:

(姓名、年龄、性别、地址、电话、职务),Teacher_Cadre.txt的格式是:

(姓名、年龄、性别、地址、电话、职称、职务、工资),要求在操作系统中建立上述文件,并按照上述格式手工录入几条记录,程序首先从文件中读取相应数据,然后完成上述功能。

13.图形面积的计算与存储

写一个程序,定义抽象基类Shape,由它派生出5个派生类:

Circle(圆形)、Squre(正方形)、Rectangle(矩形)、Trapezoid(三角形)。

用虚函数分别计算几种图形面积,并求它们的和。

要求用基类指针数组,使它的每个元素指向一个派生类对象。

要求将计算的各种图形面积以及它们和的结果存到磁盘文件ShapeArea.txt中。

14.约瑟夫环问题的求解与仿真

约瑟夫环(Joseph)问题的一种描述是:

编号为1,2,…,n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。

一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。

报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。

试通过类的设计求解约瑟夫环问题的出列顺序。

具体的要求和说明如下:

(1)利用单向循环链表存储结构模拟此过程,按照出列的顺序输出个人的编号。

(2)m的初值为20;n=7,7个人的密码依次为:

3,1,7,2,4,8,4,首先m的值为6(正确的出列顺序应为:

6,1,4,7,2,3,5)。

(3)程序运行后,首先要求用户指定初始报数的上限值,然后读取个人的密码。

可设n<=30,此题所用的循环链表中不需要“头结点”,请注意空表和非空表的界限。

(4)将上述功能改为在顺序结构上实现。

15.集合类的设计与实现

通过类与对象的设计,编制一个能演示执行集合的并、交和差运算的程序,要求如下:

(1)集合的元素限定为小写字母字符[‘a’,…,’z’]。

(2)演示程序以用户和计算机的对话方式执行。

(3)以有序链表表示集合。

(4)可进一步实现集合的元素判定和子集判定运算。

16.基于插入排序方法的类模板设计与实现

建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char,int,float等多种数据类型,并对数组元素实现插入类排序。

主要完成如下功能:

(1)实现数组数据的输入和输出;

(2)实现直接插入排序功能;

(3)实现2-路插入排序功能;

(4)实现希尔排序功能;

(5)将每种排序功能作为类的成员函数实现,编写主函数测试上述排序功能。

17.基于交换排序方法的类模板设计与实现

建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char,int,float等多种数据类型,并对数组元素实现交换类排序。

主要完成如下功能:

(1)实现数组数据的输入和输出;

(2)实现单向起泡排序功能;

(3)实现双向起泡排序功能;

(4)实现快速排序功能;

(5)将每种排序功能作为类的成员函数实现,编写主函数测试上述排序功能。

18.基于选择排序方法的类模板设计与实现

建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char,int,float等多种数据类型,并对数组元素实现选择类排序。

主要完成如下功能:

(1)实现数组数据的输入和输出;

(2)实现简单选择排序功能;

(3)实现树形选择排序功能;

(4)实现堆排序功能;

(5)将每种排序功能作为类的成员函数实现,编写主函数测试上述排序功能。

19.静态查找类模板的设计与实现

建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char,int,float等多种数据类型,并对数组元素进行静态查找。

主要完成如下功能:

(1)实现数组数据的输入和输出;

(2)对数组进行顺序查找;

(3)对有序数组进行折半查找(递归算法);

(4)对有序数组进行折半查找(非递归算法);

(5)将每种查找功能作为类的成员函数实现,编写主函数测试上述查找功能。

20.动态查找类模板的设计与实现

实现以二叉排序树为代表的动态查找表类模板,数据元素可以是char,int,float等多种数据类型,包括以下功能:

(1)采用二叉链表存储结构实现二叉排序树的存储;

(2)实现二叉排序树的建树;

(3)实现二叉排序树结点的插入;

(4)实现二叉排序树结点的删除;

(5)实现二叉排序树结点的查找;

(6)将上述功能作为类的成员函数实现,编写主函数测试上述查找功能。

21.基于开放地址法的哈希表类模板设计与实现

实现哈希表类模板,数据元素可以是char,int,float等多种数据类型,包括以下功能:

(1)实现哈希表的建立,散列函数采用除留余数法;

(2)使用开放地址法处理冲突;

(3)实现哈希表元素的插入;

(4)实现哈希表元素的删除;

(5)实现哈希表的查找;

(6)将上述功能作为类的成员函数实现,编写主函数测试上述查找功能。

22.基于链地址法的哈希表类模板设计与实现

实现哈希表类模板,数据元素可以是char,int,float等多种数据类型,包括以下功能:

(1)实现哈希表的建立,散列函数采用除留余数法;

(2)使用链地址法处理冲突;

(3)实现哈希表元素的插入;

(4)实现哈希表元素的删除;

(5)实现哈希表的查找;

(6)将上述功能作为类的成员函数实现,编写主函数测试上述查找功能。

23.赫夫曼编码的设计与实现

进行赫夫曼编码类的设计并实现,包括以下功能:

(1)设计类的数据成员和成员函数,实现赫夫曼树的存储;

(2)根据给定的通信字符出现的概率,实现赫夫曼树的建立;

(3)遍历赫夫曼树,求赫夫曼编码;

(4)给出一段字符串,进行赫夫曼编码;

(5)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

24.二叉树类模板的设计与实现

进行二叉树类模板的设计并实现,数据元素可以是char,int,float等多种数据类型,包括以下功能:

(1)采用顺序存储结构或链式存储结构实现二叉树的存储;

(2)实现二叉树的建树;

(3)实现二叉树的前序、中序、后序遍历;

(4)能够求解二叉树的结点总数和叶子结点总数;

(5)能够求解二叉树的高度;

(6)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

25.队列类模板的设计与实现

进行队列类模板的设计并实现,队列采用循环队列实现,数据元素可以是char,int,float等多种数据类型,包括以下功能:

(1)实现初始化队列操作,建立一个空队列;

(2)实现清空队列操作;

(3)实现判断队列是否为空的操作;

(4)实现求队列长度的操作;

(5)实现返回队首元素的操作;

(6)实现入队操作;

(7)实现出队操作;

(8)实现队列的遍历操作,输出队列的每个元素。

(9)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

26.栈类模板的设计与实现

进行栈类模板的设计并实现,栈采用链式存储结构,数据元素可以是char,int,float等多种数据类型,包括以下功能:

(1)实现初始化栈操作,建立一个空栈;

(2)实现清空栈操作;

(3)实现判断栈是否为空的操作;

(4)实现求栈长度的操作;

(5)实现返回栈顶元素的操作;

(6)实现入栈操作;

(7)实现出栈操作;

(8)实现栈的遍历操作,输出栈的每个元素。

(9)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

27.表达式求值的设计与实现

表达式求值是程序设计语言编译中的一个最基本问题,要求进行类的设计与实现,采用算符优先法实现表达式求值。

具体要求如下:

(1)用顺序栈作为表达式求值过程中运算符栈和操作数栈的实现;

(2)用二维数组存储算符间的优先关系;

(3)采用算符优先法实现表达式求值;

(4)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

28.基于Dijkstra算法的最短路径问题求解

进行类的设计与实现,解决最短路径问题。

具体要求如下:

(1)采用图的邻接矩阵或邻接表实现最短路径问题中图的存储;

(2)采用Dijkstra算法求从某个源点到其余各顶点的最短路径;

(3)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

29.基于Floyd算法的最短路径问题求解

进行类的设计与实现,解决最短路径问题。

具体要求如下:

(1)采用图的邻接矩阵或邻接表实现最短路径问题中图的存储;

(2)采用Floyd算法求每一对顶点的最短路径;

(3)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

30.基于DFS算法的图的遍历问题求解

进行类的设计与实现,解决图的遍历问题。

具体要求如下:

(1)采用图的邻接矩阵或邻接表实现最短路径问题中图的存储;

(2)采用递归程序实现图的深度优先搜索(DFS);

(3)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

31.基于BFS算法的图的遍历问题求解

进行类的设计与实现,解决图的遍历问题。

具体要求如下:

(1)采用图的邻接矩阵或邻接表实现最短路径问题中图的存储;

(2)采用队列实现图的广度优先搜索(BFS);

(3)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

32.基于Prim算法的最小生成树问题求解

进行类的设计与实现,解决无向连通图的最小生成树的遍历问题。

具体要求如下:

(1)采用图的邻接矩阵或邻接表实现最短路径问题中图的存储;

(2)采用普里姆(Prim)算法实现最小生成树问题的求解;

(3)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

33.字符串类的设计与实现

进行字符串类的设计,具体要求如下:

(1)使用堆分配存储表示实现字符串的存储;

(2)实现串赋值操作StrAssign(&T,chars);

(3)实现串比较操作StrCompare(S,T);

(4)实现求串长操作StrLength(S);

(5)实现串连接操作Concat(&T,S1,S2)

(6)实现求子串操作SubString(&Sub,S,pos,len)

(7)实现清空子串操作ClearString(&S);

(8)将上述功能作为类的成员函数实现,编写主函数测试上述功能。

三、课程设计时间安排

本课程设计在学完面向对象程序设计课程后进行,具体时间为第17~19周,共3周。

四、课程设计考核办法

(1)课程设计报告

不少于5000字,报告除了在封面中应有题目、班级、姓名、学号和课程设计日期以外,其正文一般包括需求分析、类与对象设计、算法设计、图形界面设计、调试问题分析、参考文献等部分。

课程设计报告字体格式采用宋体,小四,行距为最小值20磅,具体可参照后面的课程设计报告范例。

(2)程序演示和验收答辩情况

在课程设计的后期,指导教师在实验室进行课程设计程序的验收与答辩,由学生演示编制的程序,并回答教师提出的问题,教师检查学生程序的编写情况。

(3)课程设计的考勤与纪律遵守情况

五、课程设计报告范例

下面给出了一个课程设计报告范例,作为同学撰写课程设计报告的参考。

 

封皮

(按学校要求手工填写)

 

课程设计任务书

学院

信息科学与工程学院

专业

通信工程

学生姓名

XXX

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1