南京信息工程大学 C++面向对象程序设计—课程设计报告
面向对象语言程序设计课程设计报告
面向对象语言程序设计课程设计报告题目:XX大学学籍管理系统学院专业班级学号姓名指导教师1开发背景现在,面对着大量的学生数据、报表,手工处理方式已经很难跟上现代化的步伐。
随着计算机技术及网络通讯技术的飞速发展,许多学校已经有了较好的计算机应用甚至网络硬件建设基础。
学籍管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学籍信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学籍管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情。
2可行性分析2.1技术可行性该系统所需硬件设备,如服务器、PC机、打印机及网络配件等,市场上有销售且价格较低,能满足系统功能要求。
软件上,操作系统采用WindowsNT, 数据库管理系统采用Microsoft Access version 7.0 MDB,这些软件在MIS开发中已被大量应用,技术上都比较成熟。
因此技术上是可行的。
2.2经济可行性成本方面,关于各种软、硬件及辅助设备的购置、调试、机房及辅助设备以及系统维护,内务开销这些费用都可以忽略不计,因为学校机房可以为我们免费提供一切,拥有了天时地利人和,我们只需充分利用这些资源来开发我们的学籍管理系统开发费用方面,因为此系统比较简单,费用不高。
2.3管理可行性由于该学校有很好的管理体制:每位学生均有学号及相关的成绩管理记录,且学生的具体信息均会记录在相关档案中,以此来决定学生的升级、留级、退学情况。
面向对象课程设计报告
面向对象课程设计报告一、引言面向对象课程设计是计算机科学与技术专业的一门重要课程,通过设计和实现一个完整的面向对象程序,培养学生的面向对象设计思维和编程能力。
本报告旨在介绍我所设计的面向对象课程设计,包括设计背景、需求分析、设计方案、实现细节和测试验证等内容。
二、设计背景本次面向对象课程设计的背景是设计一个学生信息管理系统。
随着教育事业的发展,学校中的学生数量不断增加,学生信息的管理越来越复杂。
传统的学生信息管理方式已经无法满足现代教育管理的需求,需要采用更加高效和智能的信息管理系统。
三、需求分析学生信息管理系统需要具备以下功能:1. 学生信息维护:包括学生基本信息的录入、修改和删除等操作。
2. 成绩管理:包括成绩录入、查询和统计等功能。
3. 课程管理:包括课程信息的录入、查询和修改等操作。
4. 成绩报表生成:根据学生成绩生成报表,方便教师和学校进行评估和分析。
5. 权限管理:不同用户有不同的权限,需要进行用户和权限管理。
四、设计方案根据需求分析,我设计了以下类:1. Student类:表示学生信息,包含学生id、姓名、性别、年龄等属性。
2. Course类:表示课程信息,包含课程id、名称、教师等属性。
3. Grade类:表示学生成绩,包含学生id、课程id、分数等属性。
4. User类:表示系统用户,包含用户id、用户名、密码等属性。
5. Report类:表示成绩报表,包含学生id、课程id、平均分等属性。
6. System类:表示学生信息管理系统,包含各种操作方法。
五、实现细节1. 数据存储:使用数据库来存储学生信息、课程信息、成绩信息和用户信息等数据。
2. 数据库设计:根据类的属性设计数据库表结构,每个类对应一个表,表中的字段对应类的属性。
3. 系统界面:设计一个图形界面,方便用户进行操作,包括学生信息录入、成绩查询、课程管理等功能。
4. 系统功能实现:根据需求设计各个功能的实现方法,包括学生信息维护、成绩管理、课程管理等操作。
《 面向对象程序设计》课程设计实验报告
《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。
有如下测试程序和测试程序的输出结果,要求设计类Welcome 。
void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。
要求从主函数输入a 、b 、c 的值并输出结果。
使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。
请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。
面向对象课程设计报告摘要
面向对象课程设计报告摘要一、课程目标知识目标:使学生掌握面向对象编程的基本概念,理解类与对象的关系,掌握继承、封装、多态等面向对象的核心特性;学会运用面向对象的思想分析和解决实际问题。
技能目标:培养学生具备独立设计类的能力,熟练运用类与对象进行程序设计;能够运用继承、封装、多态等特性编写结构清晰、易于维护的程序;提高学生的编程实践能力和问题解决能力。
情感态度价值观目标:激发学生对计算机编程的兴趣,培养良好的编程习惯;增强学生的团队协作意识,提高沟通表达能力;培养学生勇于探索、积极创新的精神。
课程性质:本课程为信息技术学科,旨在让学生掌握面向对象编程的基本知识和技能,提高编程素养。
学生特点:六年级学生具备一定的编程基础,思维活跃,好奇心强,但注意力容易分散,需要结合实际案例和互动教学激发学习兴趣。
教学要求:注重理论与实践相结合,强调学生的动手实践能力;采用启发式教学,引导学生主动探究,培养创新思维;关注学生个体差异,因材施教,提高整体教学效果。
1. 熟练掌握面向对象编程的基本概念和特性;2. 独立设计类,运用类与对象进行程序设计;3. 运用继承、封装、多态等特性编写结构清晰、易于维护的程序;4. 增强团队协作意识,提高沟通表达能力;5. 培养良好的编程习惯,勇于探索,积极创新。
二、教学内容本章节教学内容围绕面向对象编程的核心概念和技能展开,依据课程目标,选择以下内容:1. 面向对象基本概念:类与对象、属性与方法、构造函数、实例化;2. 面向对象特性:封装、继承、多态;3. 类的设计与实现:类的定义、属性的设计、方法的设计、构造函数的应用;4. 面向对象程序设计:创建对象、调用方法、访问属性、继承与多态的应用;5. 面向对象编程案例分析:实际案例分析与讨论,如学生管理系统、图形绘制等。
教学大纲安排如下:第一课时:面向对象基本概念,介绍类与对象、属性与方法等;第二课时:封装特性,讲解如何隐藏内部实现,提供外部访问接口;第三课时:继承与多态,阐述继承的概念,演示多态的应用;第四课时:类的设计与实现,通过实例讲解如何设计一个类;第五课时:面向对象程序设计,动手实践编写程序;第六课时:面向对象编程案例分析,分析讨论实际案例,巩固所学知识。
面向对象课程设计报告
三、总体设计
private void cbxSpecial_SelectedIndexChanged(object sender, EventArgs e)
private void NewMember_FormClosed(object sender, FormClosedEventArgs e)
(5)修改信息,包括修改个人的姓名,性别,年龄,届别,专业,班级,电话,邮编,E-mail等基本信息;
private void Search_FormClosing(object sender, FormClosingEventArgs e)
(7)显示所有信息,可以按照姓名,年龄,届别和专业分别排序显示数据库中所有成员的信息;
Sort类(信息排序显示模块)
方法
public Sort()
private void SortName_Click(object sender, EventArgs e)
Private void btnExit_Click(object sender, EventArgs e)
Private void btnReg_Click(object sender, EventArgs e)
(3)操作选择模块,可以选择进行添加新成员,查询某成员信息,删除成员信息和将成员信息排序显示等操作。
通过设计一个《校友录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。
南京信息工程大学 C++面向对象程序设计—课程设计报告
《面向对象程序设计》课程设计报告专业软件工程班级姓名学号指导教师顾韵华起止时间2012.6.4~2012.6.8学生信息管理系统一、需求分析本系统旨在实现一个小型的学生信息管理系统,实施本系统不仅可以减少学生信息管理部门的工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便学生信息管理部门的工作人员维护和查询学生信息。
程序主要实现学生信息的增删改、以及查询等功能。
二、程序的主要功能1、输入功能此功能主要是,对学生信息的初始化录入功能,在初始时,文件中没有任何数据,可以通过次函数输入任意学生的信息,在输入时通过一个if条件语句来实现控制循环,当输入的姓名是“0”时,使用break语句就跳出循环,即停止输入学生信息。
在此函数中使用文件处理的方式,先建立一个文件输出流对象,以写的方式打开f1.txt文件,使输入的学生信息都写入文件。
2、添加功能此功能主要是,添加一个学生的信息,也就是说调用一次这个函数只能添加一个学生的信息。
在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面。
3、删除功能此功能主要是,删除一个学生的信息。
在此功能函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,工作人员再根据提示信息输入想要删除第几个人的信息,关闭文件。
再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。
4、修改功能此功能主要是,修改一个学生的信息。
此功能函数的设计方法和删除功能函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。
5、查询功能在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查询和按姓名查询。
使用if语句来选择查询条件。
5.1 按学号查询根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。
面向对象程序设计课程设计报告
4.2 对程序中用到的 SQL Sever 相关操作方法进行封装............................... 10
4.5 学生管理模块............................................................................................... 17
5.总结.......................................................................................................................... 20 参考文献...................................................................................................................... 21
2
目
录
1.设计目的.................................................................................................................... 4 2.设计要求.................................................................................................................... 4
面向对象程序设计课程设计报告
面向对象程序设计课程设计报告㈡类设计定义Complex类:1.实部real ,虚部 imag double real,imag;2.构造函数:Complex(){} ,Complex(double r,double i){}3.析构函数:~Complex(){}4.加法重载: Complex operator+(Complex &c){}5.减法重载: Complex operator-(Complex &c){}6.乘法重载: Complex operator*(Complex &c){}7.除法重载: Complex operator/(Complex &c) {}8.重载==: int Complex:: operator==(Complex &c){}9.重载!=: int Complex:: operator!=(Complex &c)㈢函数设计1.多个复数四则运算的设计① void Add() {} //复数加法运算函数② void Sub() {} //复数减法运算函数③ void Mul() {} //复数乘法运算函数④ void Div() {} //复数除法运算函数2.主函数的设计数字选择功能菜单,根据输入的数字选择执行不同的功能。
用户输入复数的实部,虚部,从而得到计算结果。
void main() //主函数开始{char strChoise[20]; //定义字符串名system("cls");cou t<<"\t这是一个复数计算器,可以实现以下功能,请按对应的按键(0-4)\n\n\n";cou t<<"\t**************************菜单**************************\n";cou t<<"\t1:多复数加法,以0结束\n";cou t<<"\t2:多复数减法,以0结束\n";cou t<<"\t3:多复数乘法,以0结束\n";cou t<<"\t4:多复数除法,以0结束\n";cou t<<"\t0:退出程序\n\n:";cou t<<"\t请您选择:";cin>>strChoise;教师评语。
面向对象课程设计报告
面向对象课程设计报告导语:基于面向对象技术的基本思想和开发过程,介绍了面向对象技术的实现方法。
结合具体实例对面向对象技术在数据库系统结构设计和详细设计中的应用进行了详细的探讨,利用面向对象的数据库系统分析和设计方法,使用UML工具建立了具体的对象模型,给出了一种比较通用的数据库系统开发模式。
使用该模式设计的系统重用性好,且易于维护,从而有效提高了数据库系统的开发质量。
下面是的相关内容,希望对你有帮助。
随着计算机科学的发展、应用领域的不断扩大,对计算机技术本身的要求越来越高。
现在越来越多的软件开发过程采用了面向对象的开发技术,面向对象的研究遍及计算机软硬件的各个领域,如面向对象的程序设计语言、面向对象的程序设计方法、面向对象的设计、面向对象的分析、面向对象的操作系统、面向对象的DBMS、面向对象的开发工具、面向对象的开发环境等。
目前不仅在研究领域已取得了丰硕的成果,而且有些软件产品已经投放市场。
面向对象技术是一种新的设计技术,与传统的面向过程技术相比,它试图依据人们对问题的看法来解释软件的架构,并力求将问题域中的问题映像到分析模型中,再转换成对应的程序代码。
面向对象技术倡导一种新的认知和表示世界的思想,计算机专业人士利用它提出了面向对象的计算机程序设计语言、面向对象的软件设计方法、面向对象的数据库等,使面向对象技术在今天的应用设计中得到了最广泛的运用。
一、面向对象的有关基本概念面向对象技术为软件开发提供了一种新的方法学,引入了许多新的概念,这些概念是理解和使用面向对象技术的基础和关键。
(一)对象(Object)、方法(Method)及消息(Message)客观世界的问题都是由客观世界中的实体及其相互之间的关系构成的。
我们将客观世界中的实体抽象为问题空间中的对象。
由于我们需要解决的问题不同,我们面向的对象也就不同,因此对象是不固定的。
一本书可以是一个对象,一家图书馆也可以是一个对象。
从动态的观点看,对象及其操作就是对象的行为,一个对象的通常定义是:对象是对一组信息及其上面的操作的描述。
《面向对象程序设计》课程设计任务书
《面向对象程序设计》课程设计任务书一、课程设计目的《面向对象程序设计》是一门重要的计算机专业课程,通过本课程设计,旨在让学生更深入地理解和掌握面向对象程序设计的基本概念、原理和方法,提高学生运用面向对象技术解决实际问题的能力。
具体而言,课程设计的目的包括以下几个方面:1、巩固和加深学生对面向对象程序设计中类、对象、继承、多态等核心概念的理解,培养学生的抽象思维和逻辑思维能力。
2、让学生熟悉面向对象程序设计的开发流程,包括需求分析、设计、编码、测试和维护等阶段,提高学生的软件开发能力。
3、培养学生运用面向对象编程语言(如 C++、Java 等)进行实际编程的能力,提高学生的代码编写规范和调试能力。
4、培养学生的团队合作精神和沟通能力,让学生在团队中共同完成一个较为复杂的项目,学会分工协作和相互交流。
5、激发学生的创新意识和解决实际问题的能力,让学生能够将所学知识应用到实际场景中,开发出具有一定实用价值的软件系统。
二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。
2、课程设计题目应具有一定的实用性和挑战性,能够涵盖面向对象程序设计的主要知识点。
3、学生在进行课程设计时,应严格按照面向对象的方法进行分析、设计和实现,确保程序的结构清晰、可读性强、可维护性好。
4、学生需提交课程设计报告,报告内容应包括需求分析、总体设计、详细设计、编码实现、测试结果以及总结等部分。
5、课程设计报告应书写规范、条理清晰、图表完整、数据准确。
三、课程设计题目以下是几个可供选择的课程设计题目,学生可根据自己的兴趣和实际情况选择其中一个进行设计:题目 1:学生成绩管理系统设计一个学生成绩管理系统,能够实现对学生成绩的录入、查询、修改、统计等功能。
系统应具备良好的用户界面,方便用户操作。
题目 2:图书管理系统设计一个图书管理系统,能够实现对图书的入库、借阅、归还、查询等功能。
系统应能够记录图书的基本信息、借阅记录以及读者信息等。
面向对象的程序设计课程设计报告
面向对象的程序设计课程设计报告姓名:靳彦雷学号: 110511207 班级:大类1102 院系:数学与计算机学院日期: 2012年12月一、题目说明。
1)、程序设计必做题目1:通过组合和派生构成新的类本设计题目的任务是使用Point类产生Circle类。
分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。
写出每个类的构造函数,拷贝构造函数,析构函数,并在每个函数中添加输出语句,用于观察函数的调用顺序。
本设计题的目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。
另外本设计题目要让学生进一步掌握和理解类模板的技术及其实现方法。
2)、程序设计选作题目8 :栈模板类利用模板类实现一个栈。
要求至少实现以下几项功能:1)判断栈是否为空2)把一个数据元素压入栈3)把栈顶元素取出并赋值给一数据元素4)把栈中内容向上滚一个位置,即原来的第二个元素变成栈顶元素,原来第三个变成第二个,以此类推,而原来的栈顶元素变成栈底元素5)把栈中内容向下滚一个位置,即原来的栈顶元素变成第二个元素,原来第二个变成第三个,以此类推,而原来的栈底元素变成栈顶元素6)把栈清空7)编写一个外部函数,使用以上栈的各项功能二、程序设计的总体框图及各设计步骤的分析与代码设计1)、使用组合办法使Point类产生Circle类,并做出模板Point类中为:point(x,y):x (i),y (j)而设置circle类为:Circle(x,y,r):centerOfCir(x,y)其中centerofcir为圆circle的圆心。
2)、使用派生的方法由point类派生出circle类Point的设计为:Point(x,y)由此派生出circle类,并设定其继承point类的类型为public。
Class Circle:public PointCircle(int x,int y,float r)3)、题目8(栈模板类)的函数详细说明:Stack(Stack<T>&);Stack(int=10);//传入初始栈的容量~Stack();void put(T c);//入栈T pop();//弹栈,把栈顶元素删除T peek();//取栈顶元素,不进行删除操作bool isEmpty();//判断栈是否为空bool isFull();//判断栈是否满void addCapacity();//增加栈容量int getNumber();//返回栈元素的个数void clear();// 清空栈Stack<T> operator=(Stack<T> );//运算符重载三、系统调试的结果如下所示(1)用组合方式使point类产生circle类,其代码为下(1)所示,运行结果为:用派生方式使point类产生circle类,其代码为下(2)所示,运行结果为:用组合方式使point类产生circle类,并设计其模板,模板代码为下(3)所示,运行结果为:(4)、用派生方式使point类产生circle类,并设计其模板,模板代码为下(4)所示,运行结果为:(5)、栈模板的代码如下(5)所示,其运行结果为:四、具体的程序代码如下所示:(1)、Point和circle类的组合代码:#include<iostream>using namespace std;class Point //以下是point类的声明和定义{public:Point():x(0),y(0) //point类的默认构造函数{cout<<"point类默认构造函数被调用"<<endl;}Point(int i,int j):x(i),y(j)//point类的构造函数{cout<<"point类的构造函数被调用"<<endl;}Point(Point&p) //point类的拷贝函数{x=p.x;y=p.y;cout<<"point类的拷贝函数被调用"<<endl;}~Point() //point类的析构函数{cout<<"point 类的析构函数被调用"<<endl;}bool setX(int i);bool setY(int j);int getX(){return x;}int getY(){return y;}private:int x,y;};#include<iostream>using namespace std;class Circle{public:Circle(){radius=1.0;cout<<"circle类的默认构造函数被调用"<<endl;}Circle(int,int,float);Circle(Circle&c);~Circle(){cout<<"circel类的析构函数被调用"<<endl;}float area(){return radius*radius*3.1415;}bool setRadius(float r);float getRadius(){return radius;}Point &getCenter(){return centerOfCir;}private:float radius;Point centerOfCir;};//以下是point类的实现bool Point::setX(int i){if(i>=0){x=i;return true;}elsereturn false;}bool Point::setY(int j){if(j>=0){y=j;return true;}else return false;}//以下是circle类的实现Circle::Circle(int x,int y,float r):centerOfCir(x,y){if(r>=0)radius=r;elseradius=0;cout<<"circel类的构造函数被调用"<<endl;}Circle::Circle(Circle&c):centerOfCir(c.centerOfCir){radius=c.radius;cout<<"circel类的拷贝函数被调用"<<endl;}bool Circle::setRadius(float r){if(r>=0){radius=r;return true;}elsereturn false;}void main(){Circle c1;cout<<"圆心的坐标为("<<c1.getCenter().getX()<<",";cout<<c1.getCenter().getY()<<")"<<endl;cout<<"圆的面积为"<<c1.area()<<endl;cout<<endl;Circle c2(3,4,5);cout<<"圆心的坐标为("<<c2.getCenter().getX()<<",";cout<<c2.getCenter().getY()<<")"<<endl;cout<<"圆的面积为"<<c2.area()<<endl;cout<<endl;Circle c3=c2;cout<<"圆心的坐标为("<<c3.getCenter().getX()<<",";cout<<c3.getCenter().getY()<<")"<<endl;cout<<"圆的面积为"<<c3.area()<<endl;cout<<endl;}(2)、Circle类由point派生的程序源码:#include<iostream>using namespace std;class Point //以下是point类的声明和定义{public:Point()//point类的默认构造函数{x=0;y=0;}Point(int i,int j)//point类的构造函数{x=i;y=j;cout<<"point类的构造函数被调用"<<endl;}Point(Point&p) //point类的拷贝函数{x=p.x;y=p.y;cout<<"point类的拷贝函数被调用"<<endl;}~Point() //point类的析构函数{cout<<"point 类的析构函数被调用"<<endl;}bool setX(int i);bool setY(int j);int getX(){return x;}int getY(){return y;}protected: //把x,y声明为被保护int x,y;};//以下是circle类的声明和定义class Circle:public Point{public:Circle(){radius=1.0;cout<<"circle类的默认构造函数被调用"<<endl;};Circle(int,int);Circle(int,int,float);Circle(Circle&c){x=c.x;y=c.y;radius=c.radius;cout<<"circle类的拷贝函数被调用"<<endl;}~Circle(){cout<<"circle类的析构函数被调用"<<endl;}float area(){return radius*radius*3.1415;}bool setRadius(float r);float getRadius(){return radius;}private:float radius;};bool Point::setX(int i){if(i>=0){x=i;return true;}elsereturn false;}bool Point::setY(int j){if(j>=0){y=j;return true;}else return false;}bool Circle::setRadius(float r){if(r>=0){radius=r;return true;}elsereturn false;};//以下是circle类的定义Circle::Circle(int x,int y):Point(0,0){this->radius=radius;}Circle::Circle(int x,int y,float r):Point(x,y){radius=r;cout<<"circel类的构造函数被调用"<<endl;};//以下为主函数void main(){cout<<"类的派生程序"<<endl;Circle c1;cout<<"圆心的坐标是("<<c1.getX()<<","<<c1.getY()<<")."<<endl;cout<<"圆1的半径为"<<c1.getRadius()<<","<<"面积为"<<c1.area()<<endl;cout<<endl;Circle c2(3,4,5);cout<<"圆心的坐标是("<<c2.getX()<<","<<c2.getY()<<")."<<endl;cout<<"圆2的半径为"<<c2.getRadius()<<","<<"面积为"<<c2.area()<<endl;cout<<endl;Circle c3=c2;cout<<"圆心的坐标是("<<c3.getX()<<","<<c3.getY()<<")."<<endl;cout<<"圆3的半径为"<<c3.getRadius()<<","<<"面积为"<<c3.area()<<endl; };(3)、设计point类与circle类组合的模板:#include<iostream>using namespace std;template <class T>//Point 类的模板的声明和实现class Point{public :Point() //声明和定义POINT的默认构造函数{x=0;y=0;cout<<"point类的默认构造函数被调用"<<endl; }Point(T i,T j):x(i),y(j) //声明和定义point类的构造函数{ x=i;y=j;cout<<"Point 类的构造函数被调用"<<endl; }Point(Point<T> &p) //声明和定义point类的拷贝函数{ x=p.x;y=p.y;cout<<"point类的拷贝函数被调用"<<endl;}~Point() //p类的析构函数被调用{ cout<<"point的析构函数被调用"<<endl; }void setX(T i) //声明设定X轴坐标{ if(i>=0) x=i;else x=0; }T getX(){ return x; }void setY(T)//声明设定Y轴坐标{ if(j>=0) y=j;else y=0;}T getY(){ return y; }private :T x;T y;};#include<iostream>using namespace std;template<class T>class Circle{public:Circle() //声明和定义circle的默认构造函数{ radius=1.0;cout<<"circle类的默认拷贝函数被调用"<<endl; }Circle(T x,T y,T r):centerOfCir(x,y){if(r>=0)radius=r;elseradius=0;cout<<"circle类的构造函数被调用"<<endl;}Circle(Circle<T> &c):centerOfCir(c.centerOfCir){radius=c.radius;cout<<"circle类的拷贝函数被调用"<<endl;}~Circle(){cout<<"circle的析构函数被调用"<<endl;}bool setRadius(T r);T getRadius(){return radius;}T area(){return radius*radius*3.14159;}Point<T> &getCenter(){return centerOfCir;}private:T radius;Point<T> centerOfCir;};template<class T>bool Circle<T>::setRadius(T r){if(r>=0){radius=r;return true;}else return false;}void main()//定义主函数{Circle<float> c1;cout<<"圆心的坐标为("<<c1.getCenter().getX()<<",";cout<<c1.getCenter().getY()<<")"<<endl;cout<<"圆半径为"<<c1.getRadius()<<"的面积为"<<c1.area()<<endl;cout<<endl;Circle<float> c2(3,4,5.0);cout<<"圆心的坐标为("<<c2.getCenter().getX()<<",";cout<<c2.getCenter().getY()<<")"<<endl;cout<<"圆半径为"<<c2.getRadius()<<"的面积为"<<c2.area()<<endl;cout<<endl;Circle<float> c3=c2;cout<<"圆心的坐标为("<<c3.getCenter().getX()<<",";cout<<c3.getCenter().getY()<<")"<<endl;cout<<"圆半径为"<<c3.getRadius()<<"的面积为"<<c3.area()<<endl;cout<<endl;};(4)、设计由point类派生出circle类的程序模板。
面向对象课程设计实验报告
河南科技大学课程设计说明书课程名称面向对象程序课程设计题目贪吃蛇游戏程序设计院系信息工程学院班级计11*班学生姓名指导教师日期 2013.3.3~2013.3.17课程设计任务书课程设计报告文档题目:贪吃蛇游戏程序设计一.引言1.编写目的:通过本课程设计,巩固面向对象程序设计的基本概念、原理和技术,学会使用java语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化自己的实践意识,提高其实际动手能力和创新能力。
2.定义:对话框控件ID、所用及其描述控件ID 描述JFrame JPanel 用来放置整个主界面用来放置蛇身可以移动的范围newGame用来开始游戏的按钮stopGame用来停止游戏的按钮dialog用来弹出结算信息的对话框Label button Dialog中用来显示最终分数Dialog中用来关闭对话框nThread用来控制蛇身自动移动的线程3.参考资料:《java面向对象编程》,孙卫琴,2006,电子工业出版社《可视化程序设计》邱勇、肖春宝、白秀玲2011 清华出版社二.任务的描述1.目标:根据贪吃蛇游戏的运行状况进行需求分析,抽象贪吃蛇游戏运行时的算法,设计贪吃蛇游戏运行程序及人机交互界面。
2.功能描述:3.性能描述(1)数据精确度:比较精确。
(2)时间特性:蛇身的移动最开始是0.5秒,随着等级的提升,速度会变得更快,直到蛇死亡。
4.运行环境:装有Windows操作系统的计算机5.条件与限制:只能在装有Windows操作系统的计算机,装有eclipse和配置有JDK的环境中可以运行。
三.任务设计1.类的划分:(1)类1:snakemain主要功能是构造贪吃蛇游戏的主界面,Snakemain()构造出贪吃蛇游戏的主界面void Main()创建出贪吃蛇运动的窗口(2)类2:snakewin()功能是绘制贪吃蛇游戏的主界面,包括游戏结束弹出的对话框snakewin()该类的构造函数void paintComponent(Graphics g)绘制包括蛇身,分数等void eat()蛇身吃蛇块void move(int x,int y)蛇头移动void Othermove()蛇身移动void minyes(int x,int y)对蛇头是否死亡的判定void maxyes(int x,int y)蛇头死亡的各种条件void keyPressed(KeyEvent e)响应键盘被敲击时的事件void actionPerformed(ActionEvent e)响应鼠标点击的事件void run()蛇身自行移动的线程(3)类3:snakeAct主要作用是创建包括蛇头,蛇身,食物块int getX()取得对象左上角的横坐标void setX()设置对象左上角的横坐标int getY()取得对象左上角的纵坐标void setY()设置对象左上角的纵坐标2.类的继承接口等关系类snakeMain继承自JFrame类snakeWin继承自JPanel,同时实现了ActionListener, KeyListener, Runnable等接口。
面向对象课程设计报告绘
面向对象课程设计报告绘一、课程目标知识目标:1. 让学生掌握面向对象编程的基本概念,如类、对象、继承、封装和多态。
2. 使学生理解面向对象设计的原则,如单一职责、开闭原则、里氏替换等。
3. 帮助学生掌握至少一种面向对象编程语言(如Java、C++)的基本语法和应用。
技能目标:1. 培养学生运用面向对象思想进行程序设计的能力,能独立编写简单的面向对象程序。
2. 培养学生通过类图、序列图等工具进行面向对象分析与设计的能力。
3. 提高学生团队协作能力,能在小组项目中合理分工,共同完成任务。
情感态度价值观目标:1. 培养学生对编程的兴趣,增强学习动力。
2. 培养学生勇于尝试、积极探究的学习态度,提高解决问题的能力。
3. 培养学生遵守编程规范,养成良好的编程习惯。
课程性质:本课程为信息技术学科,旨在让学生掌握面向对象编程的基本知识,培养编程技能和团队协作能力。
学生特点:学生为初中年级,具备一定的逻辑思维能力,对新鲜事物充满好奇心,但学习注意力容易分散。
教学要求:结合学生特点,课程设计应注重实践操作,激发学生兴趣,提高学生的参与度。
同时,注重引导学生在项目中发挥团队协作精神,培养良好的编程习惯。
通过分解课程目标为具体的学习成果,使学生在学习过程中逐步达成课程目标,为后续教学设计和评估提供依据。
二、教学内容1. 面向对象基本概念:介绍类、对象、属性、方法等基本概念,并通过实例让学生理解它们在实际编程中的应用。
教材章节:第一章 面向对象编程基础2. 面向对象设计原则:讲解单一职责、开闭原则、里氏替换等设计原则,培养学生编写高质量代码的意识。
教材章节:第二章 面向对象设计原则3. 面向对象编程语言语法:教授Java/C++等面向对象编程语言的基本语法,如数据类型、控制结构、类与对象定义等。
教材章节:第三章 Java/C++基本语法4. 面向对象程序设计:通过案例教学,让学生学会如何使用面向对象思想进行程序设计,掌握类与对象的使用、继承与多态等技巧。
面向对象程序设计课设报告
C++课程设计报告一.设计任务应用VC++软件设计一个计算器的程序,应用对话框功能,基本要求能实现简单的加、减、乘、除运算,在完成基本功能的基础上,鼓励同学进行其他的创新设计,如增加计算器的小数运算、参数运算、存储运算等功能,类似于Windows下附件中的计算器。
二、目的与要求:1、目的:(1)要求学生达到熟练掌握VC++语言的基本知识和VC++调试技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:(1)求利用面向对象的方法以及VC++的编程思想来完成系统的设计;(2)要求在设计的过程中,对Windows环境下的编程有一个基本的认识;(3)掌握Framework的编程思想。
三.具体设计1.设计思想:利用VC++软件中的Windows MFC编程功能,创建一个对话框程序,利用控件菜单在对话框中创建若干按钮控件,作为计算器的十个数字按钮和加、减、乘、除运算符按钮,以及其他功能的按钮,如正负运算符、清除符和BackSpace等。
再添加一个编辑框,作为计算器的显示模块。
调整控件的位置和布局,尽量使计算器界面美观实用。
利用类向导功能为相应的控件创建成员变量及成员函数,在相应的函数位置添加函数功能实现代码,然后进行编译调试,修改程序,进一步完善计算器功能。
通过设置一些标志变量,根据具体的变量值,来判断应该进行的操作,然后将计算的结果传递给编辑框的变量,通过更新消息显示输入结果或计算结果。
2.设计表示:在对话框类中创建各个按钮的变量,数字按钮的标识符形如IDC_NUM0,运算符的标识符为IDC_ADD,IDC_SUB,IDC_MUL,IDC_DIV;其他的变量标识符也类似定义。
下面为数字键1的部分代码:if(Flag2){iCount++;if(Flag1) {Op1=Op1*10+1;m_Edit=Op1/(pow(10,iCount));}else {Op2=Op2*10+1;m_Edit=Op2/(pow(10,iCount));}}else{if(Flag1) {Op1=Op1*10+1;m_Edit=Op1;}else {Op2=Op2*10+1;m_Edit=Op2;}}其中,Op1,Op2为两个操作数变量,定义时定义为全局变量,表示是否按下小数点键,是则为1,否则为0,iCount表示按下小数点后输入数据的位数,先将数据以全部整数形式记录下来,m_Edit是编辑框的成员变量,显示时m_Edit的值是Op值除以10的iCount次幂来得到原来的输入数据, Flag1表示是否按下了运算符按钮,是则Flag1为1,否则Flag1为0. Op1=Op1*10+1是记录输入数据的算法,每输入一位数据,Op1都扩大十倍再加上所按的数字键的值,Op2的原理类似。
《面向对象程序设计》课程设计报告书(模板)
《面向对象程序设计》课程设计报告书(模板) 《面向对象程序设计》课程设计报告书设计题目:指导老师:学生学号:学生姓名:同组人员:时间:目录第1章选题 ..................................................................... ..................................................... 2 1.1 题目背景 ..................................................................... .................................................... 2 1.2系统实现的具体分工 ..................................................................... . (2)1.2.1 标题 ..................................................................... ..................................................... 2 1.3开发环境 ..................................................................... ..................................................... 2 第2章设计内容 ...................................................................................................................... 3 2.1实现功能 ..................................................................... ..................................................... 3 2.2 概要设计(涉及类的框图)..................................................................... ...................... 3 2.3 界面设计 ..................................................................... .................................................... 4 第3章系统实现 ..................................................................... ................................................. 5 3.1 涉及知识点 ..................................................................... ................................................ 5 3.2 系统运行(主要运行界面抓图) .................................................................... ............... 5 3.3 源程序清单(关键代码) .................................................................... .......................... 6 第4章结束语 ..................................................................... (16)第1章选题1.1 题目背景随着信息时代的到来和全社会信息化、网络化建设的兴起,传统的图书管理模式和操作方法越来越不能满足用户的需要.智能化、网络化、信息化的图书管理系统应用势在必行。
面向对象的程序设计课程设计报告
面向对象的程序设计课程设计报告姓名:学号:班级:院系:日期:一.设计目的课程设计是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是教学计划中综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
本次课程设计通过设计和实现几个应用程序,达到以下目标:1.使学生能够比较熟练地掌握C++语言的基本语法规则;2.熟练掌握基本的面向对象的程序设计方法,如类的实现、创建类的实例—对象、实现类的继承等;3.掌握各种面向对象的程序设计技术,如继承和派生,虚继承、虚函数、抽象类、多态的实现、运算符重载、使用C++标准库等;4.掌握在VC++平台上进行程序设计和调试的方法。
二.内容及要求1.内容与功能要求题目一:通过组合和派生构成新的类本设计题目的任务是使用Point类产生Line类。
分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。
本设计题的目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。
另外本设计题目要让学生进一步掌握和理解类模板的技术及其实现方法。
题目二:人员信息管理系统设计题目:本设计题目的任务是设计一个人员信息管理系统,并使用虚函数实现多态性,完成显示不同人员信息的任务。
设计要求:设计employee类,用来存储雇员的编号,级别,月薪等信息,能够对其进行操作和显示。
以employee为基类派生出technician类,表示兼职技术人员,以及manager类,表示经理,以及salesman类,表示兼职推销员。
利用manage类和salesman类派生出salesmanager 类,表示销售经理。
注意使用虚基类。
题目三:学生考勤管理系统设计题目:在学生考勤管理系统中,考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
统
五、程序分析
Student 类:表示学生信息的类。
class student
{
public:
student( ){};
//student 类的构造函数
void set( );
//初始化信息,第一次对信息的录入
void add( );
//添加学生信息
void del( );
//删除某学生信息
void change( ); //修改某学生信息
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题, 锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着 科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在,因此 作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个 编程,从理论到实践,在这些日子里,可以学到很多很多的东西,同时不仅可以 巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过 这次课程设计,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不 够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正 为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中
Visual C++ 6.0,菜单栏里点文件→新建→工程→Win32 Console Application →输入工程名,创建新的工作空间→菜单栏里点文件→C++ Source File,建立 新的工作空间,输入代码,调试运行。
四、 系统总框架图
主函数
输
添
删
修
显
退
入
加
除
改
示
出
信
信
信
信
信
系
息
息Байду номын сангаас
息
息
息
6. 查询模块 首先由工作人员输入要查找的学生的学号或姓名,然后系统用查找函数查
找,然后系统就调用输出函数,输出所查找的学生的信息。 7. 显示模块
显示模块将输出所有学生的主要资料。 8. 退出模块
退出系统。 七、程序运行结果 1. 程序启动,进入主界面:
2. 菜单项“1”:输入学生信息。
3.菜单项“2”:添加学生信息。
此功能主要是,修改一个学生的信息。此功能函数的设计方法和删除功能函 数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有 数据覆盖。 5、查询功能
在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查
询和按姓名查询。使用 if 语句来选择查询条件。 5.1 按学号查询 根据提示信息输入学号后,然后使用一个 for 循环语句,从第一个学生开始
此功能主要是,删除一个学生的信息。在此功能函数中,先以读的方式打开 文件,读出文件里的信息在显示在屏幕上,工作人员再根据提示信息输入想要删 除第几个人的信息,关闭文件。再以写的方式打开文件,以一个 if 条件语句控 制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以 写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。 4、修改功能
void search( ); //查询某学生信息
void display( ); //显示全部学生信息
private:
static int num;
string name,sex,politic,address;
};
六、模块分析 1. 主函数和主菜单模块
从文件 f1.txt 中读取学生信息至学生信息表 student stu 中;显示主菜 单。
在此函数中使用文件处理的方式,先建立一个文件输出流对象,以写的方式 打开 f1.txt 文件,使输入的学生信息都写入文件。 2、添加功能
此功能主要是,添加一个学生的信息,也就是说调用一次这个函数只能添加 一个学生的信息。在此函数中也使用文件处理的方式,但使用的是以追加的方式 打开文件,使输入的学生信息写在文件里原有信息的后面。 3、删除功能
《面向对象程序设计》 课程设计报告
专业 班级 姓名 学号 指导教师 起止时间
软件工程
顾韵华 2012.6.4~2012.6.8
学生信息管理系统
一、需求分析 本系统旨在实现一个小型的学生信息管理系统,实施本系统不仅可以减少学
生信息管理部门的工作人员数量,降低成本,而且可以大大提高工作效率,降低 工作强度,方便学生信息管理部门的工作人员维护和查询学生信息。
检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的 学号是唯一固定的,所以并使用 break 语句跳出循环。
当无查询结果时,会输出一条提示信息“无此人信息!” 。 5.2 按姓名查询
根据提示信息输入姓名后,然后使用一个 for 循环语句,从第一个学生开 始检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生 的姓名有可能重复出现,所以不能使用 break 语句跳出循环,应该从第一个学生 开始检索直到最后一名学生。
当无查询结果时,会输出一条提示信息“无此人信息!” 。 6、 显示功能
此功能主要是,显示所有学生的信息。先是从文件中读取学生信息,然后在 输出到显示窗口中。用一个 for 循环语句,来把所有学生的信息都输出。 7、 退出系统
当输入“0”时,就能退出系统,这是通过 while 语句来控制实现的。
三、程序开发环境 本程序在 VC++6.0 平台上开发。 使用 Microsoft Visual C++ 6.0 运行该程序,具体操作是:打开 Microsoft
4.菜单项“3”:删除学生信息。
5.菜单项“4”:修改学生信息。
6.菜单项“5”:查询学生信息。
7.菜单项“6”:显示所有学生信息。
8.菜单项“0”:退出系统。
八、 编程体会 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,比如:1.
各模块进行整合的时候,出现许多的错误,后来发现是变量不统一。 解决方法: 各模块统一变量。2.修改时,修改后的信息在文件中修改不了。解决方法:存入 文件时要先关闭文件,再调用函数。
2. 输入模块 工作人员根据主菜单的提示,输入相应功能代码,进入系统,输入学生信
息。 3. 添加模块
工作人员在主菜单中选择功能 2,输入学生信息,插入在学生信息表中。 4. 删除模块
首先由工作人员输入要删除的单个学生的序号,然后调用删除函数,删除 该名学生的资料。
5. 修改模块 首先由工作人员输入要修改的学生的序号,然后系统用修改函数查找,显 示该学生的资料,然后系统提示工作人员输入新的信息。
遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所 学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程 设计之后,一定把以前所学过的知识重新温故。
对给过我帮助的顾老师和所有同学再次表示忠心的感谢!
程序主要实现学生信息的增删改、以及查询等功能。
二、程序的主要功能 1、输入功能
此功能主要是,对学生信息的初始化录入功能,在初始时,文件中没有任何 数据,可以通过次函数输入任意学生的信息,在输入时通过一个 if 条件语句来 实现控制循环,当输入的姓名是“0”时,使用 break 语句就跳出循环,即停止 输入学生信息。