2016c++课设任务书_第1页
2016c++课设任务书_第2页
2016c++课设任务书_第3页
2016c++课设任务书_第4页
2016c++课设任务书_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计课程设计任务书学期:2016-2017第一学期时间2016年12月12日开始班级:15计科本1、本2、15计应专1机电与信息工程学院教师陈小常【设计目的】本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完面向对象程序设计课程后进行的一次全面的综合练习。本课程设计的目的和任务:(1)巩固和加深学生对C+课程的基本知识的理解和掌握;(2)掌握C+编程和程序调试的基本技能;(3)利用C+进行简单软件设计的基本思路和方法;(4)提高运用C+解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。课设报告要求:1、封面上写明:题目、指导教师、专业、班级、姓名、学号、起

2、止日期以及其他内容。2、在实习报告的扉页上写明设计题目和实习报告要求。3、系统需求与功能分析,画出功能结构图。4、各个类的设计思路及其源代码,并适当加以注释。5、主要功能代码的实现思路及测试过程描述。6、程序调试正确后的运行结果显示。7、程序设计中所遇到的问题及解决问题的办法。8、整个应用程序还需作哪些改进。9、课程设计的感想和体会。【设计内容与任务】每组学生在教师提供的课程设计题目中任意选择一题,题目有难有易,学生根据自身情况选题后独立完成,每组成员限定14人。题目选定后不可更换。题目1组合类与排序目的与要求:通过类的组合,可以将现有的若干个类合成一个新类,它反映的是对象的组合概念,由小类装

3、成更大的类。类组合的难点在于其构造函数(包括析构函数)设计。本实验要求学会创建组合类对象、删除组合类对象时,如何创建(删除)其内嵌对象,这里包括参数的传递、构造的顺序等。设计任务及过程任务:设计计算机类分解为显示器类、CPU1、硬盘类、主板类、内存类、显卡类等;然后按CPU介格排序(升序)。过程:数据输入每台主机CPM自己的数据如主频、频率、价格、日期等;数据存储日期类、CPltt、RA瞰、一台主机类、N台主机类;数据处理即排序算法,使用算法对记录进行排序题目2拷贝构造函数与对象复制目的与要求:1、了解拷贝构造函数的含义;2、了解拷贝构造函数的相关语法规则;3、学会运用拷贝构造函数;设计任务及

4、过程任务:以具体对象为列,讨论同类对象的赋值与复制。过程:数据输入成矩阵;数据存储定义图像类设计、构造函数、拷贝构造函数、显示图像;数据处理所需要到的拷贝构造函数。题目3组合派生类与对象移动目的与要求:1、了解组合派生类的含义;2、了解拷组合派生类的相关语法规则;3、学会运用派生类与对象移动。设计任务及过程任务:定义点类(两点),然后类组合成直线类,最后线类派生类增加如颜色等属性的类。过程:数据输入两点及属性线性、颜色;数据存储,点、直线、扩展直线属性类的设计;数据输出显示相关的属性。题目4组合派生类与队列操作目的与要求:1、了解组合派生类的含义;2、了解拷组合派生类的相关语法规则;3、学会运

5、用派生类与队列操作设计任务及过程任务:以公有派生类对象作为队列的元素,进行入队、出队、访问元素等基本操作。过程:数据输入5个点的属性值;数据存储,基类、派生类、队列类的设计;数据输出显示相关的属性。题目5类模版继承与栈操作目的与要求:1、了解类模版继承与栈操作的含义;2、学会运用类模版继承与栈操作;3、使用类模版继承进行栈基本简单操作;设计任务及过程任务:在学生信息中按序号从小到大顺序,将记录逐条入栈,再逐个出栈、显示。过程:创建、入栈、出栈、释放、数据输出。题目6矩阵的常用运算目的与要求:(1) 定义矩阵类。要求从键盘输入矩阵的行数和列数,以及矩阵的元素值,并用动态内存空间存储。(2) 以菜

6、单的方式选择矩阵的常用运算。并判断两个矩阵能否进行加、减、乘的运算。(3) 要求重载相关运算符进行矩阵的常用运算。(4) 输出两个矩阵运算后的和、差、积。题目7通过string类对象操作学生数据目的与要求:学生数据模型用类CSstudent定义,其数据成员有姓名、学号、三门课的成绩及总成绩,成员函数有print及其它必要的函数。其中,姓名和学号用string类对象表示,print函数按相应对齐格式在一行中输出所有数据。设计类CStuOR在类中,通过string和字符串流对存放的学生数据进行添加、遍历、查找、排序和存储到文件的操作。其中,成员函数Add添加学生数据,成员函数ShowAll用来遍历

7、所有学生数据,成员函数Seek用来按姓名查找学生数据,成员函数SortToFile用来按总成绩从高到低排序,并将结果数据保存到文件student.txt中。编写一个完整的程序并测试。题目8分数计算器目的与要求:为分数定义一个类。分数定义为两个整数之比,比如1/2,3/4,64/2等等,将分数表示成int类型的两个值:一个表示分子,一个表示分母。将类命名为Fractiono分数应以1/2,15/32,300/401这样的形式来输入和输出,注意分子、分母可能包含负号,所以必须支持象-1/2,15/-32,以及-300/-401这样的输入。重载提取运算符>>和插入运算符和<<

8、。还要重载+,-,*,/运算符,使它们能正确支持Fraction类型。(4)应考虑有一个函数,能对分数进行约分与规格化,在规格化之后,分母一定是正的,并且分子分母的最大分约数为1。例如,对4/-8进行规格化之后,它应该表示成等价的-1/2。(5)仿照计算器的运算过程,采用计算器方式来进行有关分数运算。题目9复数运算器目的与要求:(1)为复数定义一个类,名为Complex。复数的形式是a+bi其中,a和b是double类型的数字,而i表示虚数单位,-1。将复数表示成double类型的两个值。将成员变量命名为realPart(实部)和imagePart(虚部)。(2)重载输入和输出运算符>&

9、gt;和<<.。输入复数时,最好能接受6,6+4i,5-2i,7i,-9i,i,和-i这样形式的输入。可考虑用字符串接受输入,然后对字符串进行讨论,以便识别各种情况。(3)输出复数时,应对实部和虚部的各种情况加以讨论,以便能输出6,6+4i,5-2i,7i,-9i,i,和-i这样形式的复数。注意实部、虚部可能包含负号。(4)重载+、-、*、/运算符,使它们能支持Complex类型。(5)参考教材P119例EX_ComplexFriend和P426实验六例EX_Complex.cpp。题目10学生选课系统目的与要求:(1) 定义学生类、课程类。设每个学生最多只能选修5门课程,每门课程

10、最多30名学生选修。(2) 根据用户要求,可设置并得到学生所选课程。(3) 给出学生姓名,可得到某门课程的成绩,也可得到学生所有课程的平均成绩。(4) 根据课程名,可设置选修学生,设置或修改选修学生的学生成绩,也可计算该课程的平均成绩。题目11将学生成绩类对象作为栈元素,并设计用栈类来存取学生成绩数据。设学生成绩类的私有数据成员有学生姓名,学号和三门成绩。说明:栈模型栈是一种“FILO”(先进后出)或“LIFO”(后进先出)的存储结构。它占用一块连续的内存空间,有两个端点:一个端点是固定的,称为栈底;另一个端点是活动的,称为栈顶。操作只能在栈顶进行,建立一个栈先要开辟栈空间。且为了指示栈顶位置

11、还要设定一个指针,称为栈顶指针sp。栈有两种操作:push(压入)与pop(弹出)。初建栈时,栈顶指针sp指向栈底。当向栈内压入一个元素di时,先向栈顶写入di,再执行sp+。再压入一个元素d2时,先向栈顶写入d2,再执行sp+o可见,栈顶总是用于存放下一个元素。当栈内弹出一个元素d2时,直接执行sp-,然后含会SP中的内容,当再次压入新元素时,d2被覆盖。题目12将学生成绩数据分成两个类CPerson和CScore,其中CPerson类的数据成员是姓名和学号,而CScore的数据成员除了三门课成绩外,还有一个CPerson类对象stu。并且,CScore类是CPerson的友元类,这样在类C

12、Score中通过stu对象可以访问CPerson类的所有成员。止匕外,仍使用栈模型来存取学生成绩数据,其中栈类Cstack使用静态成员来进行数据操作。说明:Cperson和CScore类的设计由于要设计的Cperson类是将Cscore类作为自己的友元类,因此,Cperson类的私有数据成员的操彳不必再在Cperson类中指定,且不必重新指定构造函数和拷贝构造函数,它们的默认版本已能满足要求。题目13定义个人信息类CPerson,描述的属性有姓名、年龄、性别。并以CPerson为基类分别公有派生出学生类CSstudent和CTeacher。其中CSstudent类增加的属性有班级、学号、三门课

13、程成绩、总分和平均分;CTeacher类增加的属性有职称、部门、工龄。在定义一个研究生助手类CAssistant,它分别从CTeacher类和CSstudent类公有派生,增加的属性有导师(CPerson类对象)、职责。要求:(1)除某类CPerson外,其他类增加的属性用成员函数SerData来设定。集成的属性用构造函数来初始化;但Cassistant中的CTeacher成员对象仍需要在构造函数中进行初始化。(2)每个类都有一个成员函数ShowInfo,用于显示当前类增加的属性。对于基类CPerson则选择全部属性。(3)分析可能产生二义性的情况,并分别给出相应的解决办法。(4)设计各个类的

14、代码,在main函数中定义Cassistant类对象。然后输出该对象的所有属性然后输出该对象的所有属性(包括基类属性)。根据上述描述和要求,编写程序。题目14用简单链表模型来存取个人信息类数据。其中。个人信息CPerson包含的数据有:姓名、年龄和性别。为了能用类来实现简单链表模型,且便于以后扩展,用结点类CNode和链表类CSimpList类来描述。其中,结点类CNode包含的数据成员有:描述数据域的CPerson对象data指向下一个节点的指针next。链表类CSimpList用来实现结点的常用操作,其数据成员有:头指针pHead、当前指针pCur。在链表类CSimpList要求实现下列操

15、作。(1)当成员函数重载“+=”运算符,根据CPerson对象构造并实现结点的添加操作。(2)用友元函数重载后缀“+”,实现当前结点指针向后移动,并返回当前结点指针。(3)用成员函数重载“”运算符,实现按姓名查找匹配的结点,并返回该节点的指针。根据上述描述和要求,编写实现程序。题目15通过文件操作存放学生数据。学生数据模型用类CSstudent来定义,其数据成员有:姓名、学好和三门课的成绩。成员函数有:"<<"和">>”运算符重载函数、print函数和必要的构造函数等。其中,print函数呀来按相应对齐格式在一行中输出所有数据。定义一个CS

16、stuFile类,用于文件操作,其成员函数有:向文件添加学生数据的add函数、按姓名查找学生数据的seek函数和输出文件中所有学生数据的list函数等。另外,该类的构造函数实现文件流的打开操作,析构函数用于文件流的关闭操作。根据上述描述和要求,编写一个完整的程序并测试。题目16根据栈模型,设计一个栈类模板CGenStack,实现下列相关定义及其操作:用于反映栈空间指针的成员函数begin和end;用于判断栈是否为空的成员函数empty;用于获取栈大小的成员函数size;(4)用于获取或设置栈顶元素的成员函数top;用于元素入栈操作的成员函数push;(6)用于元素出栈操作的成员函数pop;当栈

17、满时,动态创建一个是原来空间两倍的空间,把原来栈中的内容放入新栈,再删除原栈空间。根据上述要求,设计一个CGenStack类模板。题目17通过链表容器类list来操作学生数据。具体要求如下:学生数据模型用类CSstudent定义,其数据成员有姓名、学号、三门课的成绩及总成绩,成员函数有print及其他必要的函数等。其中,print函数用来按相应对齐格式在一行中输出所有数据。设计类CStuList。在该类中,用list容器类实例化对象存放学生数据,用成员函数Add添加学生数据,用成员函数ShowAll遍历所有的学生数据,用STL中的算法模板编写成员函数Seek按姓名查找学生数据,用list容器类

18、的sort编写成员函数SortToFile按总成绩从高到低排序,并保存到文件student.dat中。编写一个完整的程序并测试。题目18创建一个完整的C+啦用程序,用于对某班学生的课程成绩进行管理设计要求:用循环语句构建程序主菜单框架,通过输入菜单项标识符执行菜单项所关联的功能。如图说示:学生成绩管理系统(当前记录数:0)请选择要操作的命令号:1 从文件导入记录2 从键盘输入记录3 全部记录列表显示4 按指定学号查找5 删除指定学号的记录6 统计和显示不及格的学生人数7 统计并显示均分在80分以上的学生人数8 保存到文件中9 退出请选择:设计并实现班级类、学生类、课程成绩类,编制一个完整的C+应用程序。题目19常用控件目的:(1) 熟悉对话框应用程序的创建。(2) 熟悉对话框资源的添加和设计。(3) 掌握控件消息和对话框消息的映射。(4) 学会在控件上绘制图案。(5) 学会在同一个消息函数中处理不同控件的消息。要求:(1) 枚举系统字体。(2) 控件图案绘制。(3) 管理学生个人信息。题目20菜单、工具和状态栏目的:(1) 了解MFC文档视图结构。(2) 熟悉菜单资源的编辑,学会对菜单进行基本编程控制。(3) 学会添加命令消息的默认处理。(4) 熟悉工具栏图标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论