《大二c++课程设计》由会员分享,可在线阅读,更多相关《大二c++课程设计(4页珍藏版)》请在金锄头文库上搜索。
1、第 1 页 共 4 页 课程设计题目: 课程设计题目: 1、创建一个点类 Point,其中有 X、Y 轴坐标作为数据成员,同时拥有构造函数、设置 和访问 X、Y 轴坐标的成员函数、求面积的虚函数 Area、求体积的虚函数 Volume。以 Point 类为直接或间接基类派生出圆类 Circle、 矩形类 Rectangle、 正方形类 Square、 圆柱类 Cylinder、 长方体类 Cuboid、正方体类 Cube,自行定义这些类的继承关系、类中的数据成员和其他内 容,并改写 Area 和 Volume 函数正确求出各几何对象的面积和体积。编写测试代码,创建上 述类的对象,并通过指针或引
2、用来使用 Area 和 Volume 函数计算面积或体积。 2、定义一个抽象基类 CElement ,其中定义了显示、求面积等公共接口(纯虚函数) 。 从 CElement 类直接或间接派生出 CPoint(点) 、CLine(线) 、CArc(圆弧) 、CCircle(圆) 、 CRectangle(矩形) 、CTriangle(三角形) 、CEllipse(椭圆)等图形元素类,并重定义基类 中的虚函数,完成相应的功能。再定义一个 CElemList 链表类,链表的节点通过指针指向 CElement 类型的对象。编写测试代码,生成各个具体的图形类对象,将它们加入链表中, 并通过链表头指针访问
3、各个图形的显示、求面积等函数,实现运行时的多态,从而显示或计 算出正确的数据。 3、定义一个人员类 Person,它有姓名、性别、身份证号、出生日期等信息,同时拥有 能够显示和设置这些信息的函数;从 Person 类派生出学生类 Student 和教师类 Teacher,学 生类有学号、年级、班级等信息,教师类有职称等信息;再从 Student 和 Teacher 类派生出 在职学习的教师类 StuTeacher。以上类中的信息采用动态内存分配存储的方法,要在构造函 数里分配存储空间,要有析构函数释放空间,要有拷贝构造函数实现深拷贝。在类的继承关 系中要合理利用虚拟继承避免二义性问题, 要在派
4、生类中重写基类中继承来的成员函数。 类 中的其它内容自行设计,编写测试代码使用这些类。 4、试着写出能想到的所有的形状(二维和三维) ,形成一个层次结构。定义一个图形类 Shape, 并由该类派生出类 TwoDimensionalShap (二维图形) 和类 ThreeDimensionalShape (三 维图形) ,在这些类中都定义了虚函数 print 来输出类型名称和纬度,TwoDimensionalShape 类还定义了虚函数area求二维图形的面积, ThreeDimensionalShape类中定义了虚函数volume 求三维图形的体积。从已经定义的 Shape、TwoDimens
5、ionalShap 和 ThreeDimensionalShape 类派生出各种具体的形状, 同时重定义 area 或 volume 函数计算具体形状对象的面积和体积。 类中的其它内容自行设计,编写测试代码使用这些类。 5、某公司雇员(employee)包括经理(manager) 、技术人员(technician)和销售员 (salesman) 。开发部经理(developermanger) ,既是经理也是技术人员;销售部经理 (salesmanager) ,既是经理也是销售员。以 employee 类为虚基类派生出 manager、technician 和 salesman 类;再进一步多重
6、派生出 developermanager 和 salesmanager 类。 employee 类的属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资) 。 操作包括月薪计算函数(pay()) ,该函数要求输入请假天数,扣去应扣工资后,得出实发基 本工资。 technician 类派生的属性有每小时附加酬金和当月工作时数, 及研究完成进度系数, 业绩工资为三者之积。 也包括同名的 pay()函数, 工资总额为基本工资加业绩工资。 salesman 类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积,也包括同名的 pay() 函数,工资总额为基本工资加业绩工资。manager
7、 类派生属性有固定奖金额和业绩系数,业 绩工资为两者之积,工资总额也为基本工资加业绩工资。而 developermanager 类,pay()函数第 2 页 共 4 页 是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。salesamanager 类,pay() 函数则是经理的固定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资。 要求有构造函数、拷贝构造函数,合理使用虚拟继承避免二义性问题,类中的其它内容 自行设计,编写测试代码使用这些类。 6、建立一个 Matrix 类用来表示 m行n 列的矩阵,它有以下成员函数: 构造函数:根据参数值创建一个矩阵,并为矩阵元素动态分配存
8、储空间,同时完成数据 输入; 析构函数:将矩阵占用的动态存储区释放; 拷贝构造函数:实现矩阵对象之间的深拷贝构造; = 运算符重载函数:实现矩阵对象之间的深拷贝赋值; transpose 函数:实现矩阵的转置; 另外重载 + 和 * 运算符,实现矩阵的加法和乘法; 自行设计类中的数据成员和其他内容,同时编写测试代码使用 Matrix 类。 7、定义一个 Time 类表示时间,其拥有成员函数实现时间与一个秒数或另一个时间相 加减,加减时要保证时、分、秒之间的准确进位和借位; 定义一个 Date 类表示日期, 其拥有成员函数实现日期与一个天数或另一个日期相加减, 加减时要保证年、月、日之间的准确进
9、位和借位; 以 Time 和 Date 类为基类派生出 DateAndTime 类,对该类重载运算符 + 和 实现加 减秒数或时间或日期的操作,重载 + 和 运算符实现加减 1 秒的操作(要区分出前置和 后置运算符) ,在运算符重载函数中可以利用基类中的加减函数; 在这些类中都定义了构造函数实现对象的初始化,同时重载了运算符实现对象的显 示; 自行设计类中的数据成员和其他内容,同时编写测试代码使用这些类。 8、自定义一个 String 类用来存储字符串,串中的字符存放在动态分配的数组中,该类 拥有以下成员函数: 构造函数:为对象分配动态存储空间,完成初始化,要考虑多种参数的重载形式,例如 无参
10、数、参数类型为 char 或 char*; 析构函数:将占用的动态存储空间释放; 拷贝构造函数:实现 String 对象之间的深拷贝构造; IsSubstring 函数:判断参数是否为当前串的子串,参数可以为 char*或 String 类型; Str2Num 函数:将数字字符串转成数值; UpperStr 函数:将字符串中的小写字母均转为大写字母; ReplaceStr 函数:替换 String 中的某个字符串; ReplaceChar 函数:替换 String 中的某个字符; DelStr 函数:删除 String 中的某个字符串; DelChar 函数:删除 String 中的某个字符;
11、 重载了以下运算符: = 运算符:实现 String 对象之间的深拷贝赋值; + 运算符:将两个 String 对象首尾相连; 运算符:访问 String 对象中某个下标位置的字符; 运算符:输出 String 对象; 第 3 页 共 4 页 自行设计类中的数据成员和其它内容,并编写测试代码使用该 Sting 类。 9、定义一个元素类型为 char、元素个数不限的集合类 Set,集合中的元素存放在动态分 配的存储空间中,它拥有以下成员函数: 构造函数:为对象分配动态存储空间,输入数据,完成初始化; 析构函数:将占用的动态存储空间释放; 拷贝构造函数:实现 Set 对象之间的深拷贝构造; IsE
12、mpty 函数:判断集合是否为空; Size 函数:返回集合中元素个数; IsElement 函数:判断某字符是否属于该集合; 重载了以下运算符: | 运算符:求两个集合的并集; & 运算符:求两个集合的交集; = 运算符:实现 Set 对象之间的深拷贝赋值; - 运算符:求两个集合的差集; = 运算符:判断两个集合是否相等; += 运算符:增加元素; -= 运算符:删除元素; = 运算符:判断某集合是否为当前集合的子集; 运算符:输出 Set 对象; 自行设计类中的数据成员和其它内容,并编写测试代码使用该 Set 类。 10、定义一个大整数类 HugeInt,它利用一个动态分配的 short
13、 int 类型的数组来存放超 大整数,该类中的成员函数有: 构造函数:为对象分配动态存储空间,输入数据,完成初始化;要考虑多种参数的重载 形式,例如参数类型为 long 或 char*; 析构函数:将占用的动态存储空间释放; 拷贝构造函数:实现 HugeInt 对象之间的深拷贝构造; 同时为该类重载了以下运算符: = 运算符:实现 HugeInt 对象之间的深拷贝赋值; + 运算符:两个大整数相加; - 运算符数:两个大整数相减; * 运算符:两个大整数相乘; / 运算符:两个大整数相除; 关系运算符:比较两个大整数的大小关系及是否相等; 运算符:输出该大整数; 11、建立一个分数类 Frac
14、tion,其拥有 int 类型的私有数据成员 denominator(分母)和 numerator(分子) ,另外还拥有以下成员函数: 构造函数:为参数指定默认值,初始化分数,防止分母为 0,并以最简分数形式存储数 据; 拷贝构造函数:用一个分数对象初始化新建分数对象; 输出函数 print():以浮点形式输出分数; 同时为该类重载了以下运算符: 第 4 页 共 4 页 + 运算符:两个分数相加,以最简分数形式保存结果; - 运算符数:两个分数相加,以最简分数形式保存结果; * 运算符:两个分数相加,以最简分数形式保存结果; / 运算符:两个分数相加,以最简分数形式保存结果; 关系运算符:比较
15、两个分数的大小关系及是否相等; 运算符:以 a/b 的形式输出分数; 类中的其它部分自行设计,编写测试代码使用该分数类。 课程设计要求: 课程设计要求: 在以上 11 题中任选一题独立完成,题目要求可以根据自己的理解做一定的变化。按格 式要求写出设计报告,并调试程序使之正确运行。 设计报告要求使用 A4 纸打印装订,同时将设计报告电子稿和调试后的源程序压缩打包 后在网络课堂中上传,压缩包用自己的学号、姓名、专业班级命名,中间用 _ 隔开(如命 名为:140102023001_张三_电商 07-1.rar) 。 课程设计提交截止日期为本门课的最后一次课,到期未上交者视为缺考。 凡作品雷同或不是自己完成的课程设计均视为不及格!凡作品雷同或不是自己完成的课程设计均视为不及格!