《VC++面向对象程序设计》课程设计任务书
一、课程设计目的
《VC++面向对象程序设计》是计算机相关专业的一门重要专业基础课。其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。VC++程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。通过课程设计,可以使学生更进一步地理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题,从而达到锻炼学生理论与实践相结合的能力。
本课程设计以设计综合性实验为主,培养学生灵活利用所学综合知识,提高程序设计的能力;同时,也培养学生利用C++语言进行编程和调试程序的能力,使学生能够具有编写较复杂程序的能力。通过此次课程设计,主要达到以下目的:
(1)巩固和加深对VC++面向对象程序设计基本知识的理解,提高综合运用VC++理论的能力。
(2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
(3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
二、VC++课程设计要求
(一)基本要求
1、每组2人完成课程设计。(可以选择前10题中任意2题(每人1题)或者2人共同完成10-20题中任意1题)。其中,设计报告中要能体现明确分工,并每人完成不同的功能模块,对于关键代码或者关键模块不允许出现重复内容。
2、独立思考,独立完成课程设计。课程设计中各任务的设计和调试要求独立完成,遇到问题可以相互讨论,但不可以拷贝。
3、做好上机准备。每次上机实验之前,要事先编制好准备调试的程序,认真想好调试步骤和相关环境的设置方法,准备好有关文档。
4.按照课程设计的具体要求建立功能模块。对于具体模块要求按照如下几个方面内容认真完成:
?需求分析:
在该部分描述清楚模块的具体功能。如果存在多个模块,则需要描述清楚每个模块的具体功能及相互之间的关联关系。
?概要设计:
在此部分对模块的算法设计进行说明(可以采用算法流程图进行描述,并附上该图的相关文字说明),每个程序中使用的存储结构设计说明(如果指定存储结构,请描述清楚该存储结构的定义)。
?详细设计:
该部分要求给出各个算法具体实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)说明。源程序要按照程序编写规则编写。其中,针对变量、函数名称定义及关键代码需要有详细的注释说明,对于重点功能模块要附加上清晰的功能描述及具体注释说明。
?调试分析
采用面向对象程序设计思想进行代码实现与调试。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。
测试数据及实验结果,并对实验结果的正确性进行说明。在此基础上,需对算法的时间复杂度和空间复杂的进行简要分析,并对每个模块设计和调试时存在的问题进行思考,并提出解决方法或者改进设想。
⑤课程设计总结
在完成VC++课程设计之后,需要提交课程设计总结。该总结报告除了包含上述?-?的设计内容之外,还需要包括以下内容:课程设计过程中遇到的问题说明,解决问题过程中的思考内容,程序调试能力的思考情况,最后对VC++面向对象程序设计这门课程的思考和认识等内容。
针对每个学生需要进行实验结果检查。对于程序源代码和程课程设计总结文件必须上交,作为考核内容的一部分。(上交时每人交一份文件夹,文件夹具体命名规则为:“学号_姓名_课程设计名称”)。
(二)技术要求
1、用C++语言实现设计任务; 2、程序可读性好,执行效率高; 3、具有良好的操作界面和用户体验; 4、课程设计总结能够很好地反映设计内容。
三、设计任务
要求完成的主要设计任务包括以下几个方面:
1、系统应紧扣题目,实现具体功能及相关操作(例如查找、删除、排序等操作);
2、数据结构等相关设计; 3、主要算法设计; 4、编程及上机实现;
5、撰写课程设计报告,主要包括: ?设计题目;?正文,包括引言、需求分析、模块设计(算法设计)、程序实现及测试、设计总结等;?结束语;?参考文献。
四、时间安排 课程名称 VC++课设 VC++课设 VC++课设 班级 计科1301-1303 计科1301-1303 计科1301-1303 周次 18周-18周 18周-18周 18周-18周 周五3-4节 周三1-4节 计算中心机房 计算中心机房 上机时间(10学时) 周一1-4节 实验室 计算中心机房 五、课程设计题目及内容(均采用面向对象程序设计方法)
题目1:设计一元多项式计算
【任务要求】
(1)能够按照指数降序排列建立并输出多项式;
(2)能够完成两个多项式的相加、相减,并将结果输入;
实现提示:可选择带头结点的单向循环链表 或单链表存储多项式,头结点可存放多项式的参数,如项数等。
要求:在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图) 、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
【测试数据】 自行选择
题目2:链表应用1
【任务要求】 实现两个链表的合并。 基本功能要求:
(1)建立两个链表A和B,链表元素个数分别为m和n个。
(2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线形表C,使得:
当m>=n时,C=x1,y1,x2,y2,…xn,yn,…,xm 当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn 输出线性表C
(3) 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。 【测试数据】
1) A表(30,41,15,12,56,80) B表(23,56,78,23,12,33,79,90,55) 2) A表(30,41,15,12,56,80,23,12,34) B表(23,56,78,23,12)
题目3:链表应用2
【问题描述】
已知非空线性链表第一个链结点的指针为list,写出下列各项操作的算法程序。
(1)逆转该线性链表;
(2)删除线性链表中从左往右第一个数据为data的链结点; (3)删除从第I个链结点开始的连续k个结点。 【任务要求】
设计一组输入数据并编写完整的程序。调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果。
【提示】
1)逆转一个链表是指在不增加新结点的前提下,依次改变链表中结点的连接方向。
2)删除数据结点时,首先判断链表是否为空,若非空,先判断第一个结点是否满足条件,若是则删除;否则从第二个结点开始顺序查找,直到找到为止,然后删除;对任何不满足条件的情况都报告相应提示信息。
3)从第I个结点开始连续删除k个结点时,考虑以下两种情况:当I=1时,从第一个开始删除即可;当I>1时,先找到前一个结点然后再连续删除K个结点。最后释放各个结点空间。
【测试数据】 自行设定
题目4:二叉树的基本操作(建立、求二叉树树深度、遍历)
【任务要求】
要求输入二树的各个结点,求二叉树的树深度,并能够输出指定遍历方式(层序、先序、中序、后序)的遍历序列;分别建立;建立二叉树存储结构的的输入函数、求二叉树的树深度的函数、遍历序列的函数
层序遍历(用队列的方法实现)
中序遍历( 用递归和非递归的方法一起都实现) 先序遍历( 用递归和非递归的方法一起都实现) 后序遍历( 用递归和非递归的方法一起都实现)
题目5:算术表达式求值
【问题描述】
在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。
【任务要求】
算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。
算法输出:表达式运算结果。
算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。
题目6:内部排序算法比较
【问题描述】
编制一个演示内部排序算法比较的程序。利用随机函数产生30000个随机整数,利用冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序等排序方法进行排序,并统计每一种排序上机所花费的时间。
【任务要求】
算法输入:以菜单的形式选择排序方法
算法输出:不同情况下关键字参加的比较次数和关键字的移动次数,每一种排序上机所花费的时间。
算法要点:
(1)利用随机函数产生30000个随机整数。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《VC++面向对象程序设计》课程设计任务书在线全文阅读。
相关推荐: