面向对象程序设计课程设计指导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计课程设计》
指导书
2 周)
适用专业:苏州理工学院计算机科学与技术专业
江苏科技大学苏州理工学院
2018年8 月
课程设计目的
《面向对象程序设计课程设计》的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言 (C++) 基本语法、基本算法的理解,加深对面向对象程序设计的理解,并将课本上的理论知识的实际应用有机的结合起来,锻炼学生的分析问题、解决问题的能力,为学习后续课程和实际编程打下良好的基础。
二、课程设计要求
利用所学的面向对象程序设计的编程知识和技巧,独立完成具有一定难度的程序设计题,养成良好的编程习惯,掌握基本程序设计的理念、方法,熟练运用程序调试的技巧,提高基本的程序开发能力。
1.学生必须独立完成本指导书中附录一中的所有编程题。
2.遵守机房管理制度和实验操作规则
3.上机者在上机规定的时间内,不得从事与本课程设计无关的内容
4.独立完成课题,严禁抄袭他人成果
5.按时提交报告
三、时间安排
2018年9月2日~2018年9月 13日。
四、实验设备和开发工具
1.计算机
计算机应具有较好的性能和稳定性。
2.操作系统
操作系统采用 Windows 2000 、 Windows XP 、 Windows 2003 server 等。
3.开发工具
VC
五、考核要求
1.上机考核:在规定的时间内完成 1~2 题进行编程,占总成绩的 60% 。
2.课程设计报告:选附录中的一半题写成报告,格式要求见附录二,占总成绩的
20%。
3.平时表现:占总成绩的 20。
附录一:课程设计内容
【排序、数组操作】
1.[题目]对一个 5 位数的任意整数,求出其降序数。例如:整数是 82319,则其降序
数是 98321。算法提示:将整数的各位数分解到一维整型数组 a 中,再将 a 数组中的元素按
降序排序,最后输出 a 数组元素值。试建立一个类 NUM ,用于完成该功能。具体要求如下:
(1)私有数据成员 int n 。存放 5 位数的整数。 int a[5] 。存放其元素的降序排列值。
(2)公有成员函数
NUM ( int x=0) :构造函数,用参数 x 初始化数据成员 n。
void decrease():将n的各位数值分解到 a数组中,并将a数组排成降序。
void show ( ) :屏幕显示原数及其降序数。
(3)在主程序中输入一个5位数的任意整数,然后定义一个 NUM类对象num,用上述输
入的数初始化num,然后完成对该类的测试。
运行结果:
输入一个五位的正整数 :82319
n=82319
9 8 3 2 1
2.[题目]设有一个包含 size 个数的数列,要求能够把从指定位置 m 开始的 n 个数排成
降序,并输出新的完整的数列。可将数列存放在一维数组中。例如,原数列有10个数,值为{ 1 , 8, 3, 0, 5, 9, 7, 6, 9, 8 } ,若要求把从第 4个数开始的 5个数排成降序,则得到的新数列为 { 1, 8, 3, 9, 7, 6, 5, 0, 9, 8 }。试建立一个类 LIST ,完成上述功能。具体要求如下:
(1)私有数据成员
int size 。数列元素个数。
int *arr 。数列数组的起始指针。
(2)公有成员函数
LIST(int a[ ], int len):构造函数,用len初始化size,根据size动态分配数组存储空
间, arr 指向该存储空间。
void sortpart (int m, int n) :将数列从第 m 个元素开始的 n 个数排成降序。注意: 数
列中数的序号与其元素的下标不一致。
void output( ) :输出新的完整的数列。
~LIST ():析构函数,释放 arr指向的存储空间。
(3)在主程序中定义数组int a[10]用于存放原始数列,其值为 { 1,8,3,0,5,9,7,
6,9,8 }。定义一个LIST类对象tt,用a数组及数组实际元素的个数初始化该对象,然后把从第 4个数开始的 5个数按逆序排列,完成该类的测试。
3.【题目】求整数x,使y=x2的各位数字为严格递增序列。如:372=1369中,1、
3、6、9是严格递增序列;又如,1、3、6、6、9就不是一个严格递增序列。试建立一个类
RISE,完成求出某范围内,满足条件的所有x及其平方数和x的个数。
具体要求如下:
(1)私有数据成员
int low,high : x 的取值范围的下限和上限。
int a[100][2] :每行存放满足条件的 x 及其平方数。
int count :满足条件的 x 的个数。
(2)公有成员函数
RISE (int lw,int hi) :构造函数,用参数 lw 和 hi 分别初始化 low 和 high 。缺省的
取值范围为 [10,1000] 。将 count 初始化为 0。
int isrise(int y) :判断 y 的各位数字是否严格递增,若是则返回1,否则返回 0。
void process():求出满足条件的所有x及其平方,并将结果存入数组a,同时统
计满足条件的 x 的个数。
void show():输出数组 a及 count。
⑶ 在主函数中完成对该类的测试。定义一个RISE类的对象v,使用缺省方式
初始化该对象,按上述要求处理并输出结果。
程序运行结果应为
13 169
16 256
17 289
37 1369
116 13456
117 13689
367 134689
count=7
4.【题目】若数组a中的n个元素已按升序排列,现将一个新数 x插入到数组a中,
插入后数组 a 的元素仍然保持升序。使用的插入排序算法是:从数组 a 的最后一个元素开始,依次向前扫描数组元素,若 a[i]大于x,则将a[i]放入a[i+1](后移一个位置),并继续向前扫描,直到找到某个 a[i]小于或等于x,将x赋值到a[i+1]元素中,此时完成插入排序工作。编写程序时要考虑初始时,数组是空数组(即数组中没有元素),插入第一个元素时,要做特殊处理。试建立一个类InsSort,完成插入排序工作。
具体要求如下:
(1)私有数据成员
int a[100] :存放排好序的整数序列。
int n :数组实际元素个数。
(2)公有成员函数
InsSort (int b[ ], int size):构造函数,用参数 b初始化a数组,用参数size初始化
n, size 的缺省值是 0。
void insert(int x):将x插入到数组 a中。
void show( ) :输出数组元素个数及数组各元素值。
(3)在主函数中完成对该类的测试。定义数组int b[100] ,其初值是:
{ 1 , 3, 5 } 。定义一个InsSort 类的对象arr ,用数组 b 及其元素的个数初始化该对象。定义数组int c[100] ,其初值是: { 0 , 1, 2, 3, 5, 8, 10 } 。然后循环将数组 c 中的所有元素依次插入到对象arr 的成员数组 a 中。最后输出对象arr 中的全体数据成员。程序正确运行后,应输出:
number=10
0, 1, 1, 2, 3, 3, 5, 5, 8, 10
5.【题目】将两个分别从小到大排列的有序数组a和b复制合并到第3个有序数组c
中。m和n分别是数组a和b的元素个数,结果 c的元素个数为k。例如a和b数组元素分别为 {1,2, 2, 3, 8}和{3, 4, 7, 8},则结果数组 c 的值是: {1, 2, 2, 3, 3, 4, 7, 8,8} 。算法是:将 a、b 两个数组看成两个队列,比较队首的两个元素,将较小者放入 c 队列尾部,如果队首的两个元素相等,则先选择 a 队列首部元素加入 c 队列尾部。循环执行以上过程,直到 a 或 b 队列之一为空,然后将另一个非空队列拷贝到 c 队列尾部。注意:不允许使用其它算法(如排序算法)。试建立一个类Com,完成合并工作。