面向对象实习报告共5篇.docx
- 文档编号:23563137
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:25
- 大小:28.55KB
面向对象实习报告共5篇.docx
《面向对象实习报告共5篇.docx》由会员分享,可在线阅读,更多相关《面向对象实习报告共5篇.docx(25页珍藏版)》请在冰豆网上搜索。
面向对象实习报告共5篇
面向对象实习报告(共5篇)
第1篇:
面向对象实习报告
实习题目一
1.三个自定义类
本题有三个自定义的类:
点类VecPosition,圆类circle,矩形类Rect,运用类的继承思想从这三个类中抽象出公共基类base。
其中base中有一个纯虚函数virtualvoiddraw()=0;VecPosition类主要实现各个运算符的点的构造,运算符的重载,求两点距离,判断一个点是否在给定其他几个点的范围内,以及与向量有关的几何运算。
Circle类主要实现圆对象的构造,圆的相关参数设置,求取圆的周长函数(doubleCircle:
:
getCircumference())、面积函数(doubleCircle:
:
getArea()),判断一个点是否在圆内boolCircle:
:
isInside(VecPositionpos),求两个圆交点函数intCircle:
:
getIntersectionPoints(Circlec,VecPosition*p1,VecPosition*p2)返回加点个数。
求两个圆的相交面积doubleCircle:
:
getIntersectionArea(Circlec)。
矩形由左上点坐标和右下点坐标确定。
包括矩形的构造,参数的设置修改,求矩形的面积,周长,以及判断一个点是否在矩形内。
2.可视化界面
建立单文档工程,添加画图菜单,如下图:
三个菜单项分别画点,画线,画矩形。
在view.h中添加如下变量:
CPoint类的m_oldpt,m_pt用于记录画图的起点坐标和终点坐标。
Circlem_circle,Rectm_rect,用于构造圆和矩形。
afx_msgvoid
OnLButtonDown(UINTnFlags,CPointpoint)是响应鼠标按下的消息,并将当前坐标传给m_oldPoint。
用switch分支控制画图种类,在view类中加入变量i,添加三个菜单消息响应函数,对i进行赋值;当点击菜单项“点”时,i=0;当点击菜单项“圆”时,i=1;当点击菜单项“矩形”时,i=2;
在view中添加voidC实º习一View:
:
OnLButtonUp(UINTnFlags,CPointpoint)用来响应鼠标左键弹起消息。
三种图形的绘制在该函数中完成。
具体绘图代码如下:
voidC实习一View:
:
OnLButtonUp(UINTnFlags,CPointpoint){CStringstr=\”\”,str1=\”\”;//TODO:
在此添加消息处|理程序代码和或调用默认值
VecPositionpt1,pt2;Circlecir1;RectRect1;
pt1.setVecPosition(m_pt.x,m_pt.y);pt2.setVecPosition(point.x,point.y);
面向对象程序设计课程设计
CClientDCpDC(this);///////客户区绘图对象
CBrush*poidBrush=CBrush:
:
FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//设置透明画刷,以免绘制的图形之间相互覆盖
/*CBrush*poidBrush=*/pDC.SelectObject(poidBrush);//将画刷选入设备环境
switch(i){case0:
/////////////////////点和圆关系
str=\”该点的坐标为\\r\\n\”;
str1.Format(\”%s\”,pt1.str().c_str());str+=str1;
if(m_ncir!
=0&&m_nrect!
=0)
{
{
if(m_circle.isInside(pt1))
str+=\”\\r\\n点在圆的内部?
\”;
else
str+=\”\\r\\n点不在圆的内部?
\”;
}
{
if(m_rect.isInside(pt1))
str+=\”\\r\\n点在矩形的内部\”;
else
str+=\”\\r\\n点不在矩形的内部\”;
}
}
elseif(m_ncir!
=0&&m_nrect==0)
{if(m_circle.isInside(pt1))
str+=\”\\r\\n点在圆的内部\”;
else
str+=\”\\r\\n点不在圆的内部\”;
}
elseif(m_ncir==0&&m_nrect>0)
{if(m_rect.isInside(pt1))
str+=\”\\r\\n点在矩形的内部\”;
else
str+=\”\\r\\n点不在矩形的内部\”;
}
MeageBox(str,\”显示:
\”);
-12
面向对象程序设计课程设计
str=str+str1+\”\\r\\n\”;
doubled=cir1.getIntersectionArea(m_circle);////相交面积
str1=\”两圆的相交面积为:
\\r\\n\”;
str+=str1;
str1.Format(\”%f\”,d);
str+=str1;
MeageBox(str);
}
else
{
}
}
m_ncir++;//记录圆的个数
MeageBox(str);
break;
case2:
////////////////////矩形
pDC.Rectangle(CRect(m_pt,point));
VecPositionp3,p4;
p3.setVecPosition(m_pt.x,m_pt.y);
p4.setVecPosition(point.x,point.y);
m_rect.setPosLeftTop(p3);
m_rect.setPosRightBottom(p4);
doublearea=m_rect.getArea();
doubleCircumference=m_rect.getCircumference();
CStringstr1,str2,str3,str4,str5,str6,str7,str8;
str1=\”左上角坐标:
\\r\\n\”;
str2.Format(\”%s\”,pt1.str().c_str());
str3=\”\\r\\n右下角坐标:
\\r\\n\”;
str4.Format(\”%s\”,pt2.str().c_str());
str5=\”\\r\\n矩形周长:
\\r\\n\”;
str6.Format(\”%f\”,Circumference);
str7=\”\\r\\n矩形面积:
\\r\\n\”;
str8.Format(\”%f\”,area);
MeageBox(str1+str2+str3+str4+str5+str6+str7+str8,\”显示:
\”);
m_nrect++;
break;
}CView:
:
OnLButtonUp(nFlags,point);
-34
面向对象程序设计课程设计
-56
面向对象程序设计课程设计
3.算法设计
给对话框添加Read函数,用于将文件中的数据读到数组中。
在读文件是由于一行一行读取时不知道每一行的字节长度,所以用了CFile类的派生类CStdioFile,该类的ReadString能够读取一行,遇到换行符即停止。
在字符串的分割时候也遇到了一些问题,找资料后得以解决。
str.Left(str.Find(\”\\t\”))以空格为界读取左侧内容。
str=str.Mid(str.Find(\”\\t\”));str=str.Trim();用于找到空格,并移除。
多次这样操作便可将文本文件中的数据提取出来
voidC成绩管理系统Dlg:
:
Read(void){CStdioFilefile(\”a.txt\”,CFile:
:
modeRead);
if(file){
inti=0;
CStringstr,str1,str2,str3,str4,str5,str6;
while(file.ReadString(str))
{
str1=str.Left(str.Find(\”\\t\”));
//stu[i].num=str1;
str=str.Mid(str.Find(\”\\t\”));
str=str.Trim();
str2=str.Left(str.Find(\”\\t\”));
//stu[i].name=str2;
str=str.Mid(str.Find(\”\\t\”));
str=str.Trim();//str2读出后删掉,便于读取str3
//str.TrimLeft();//缺省时删除空格
str3=str.Left(str.Find(\”\\t\”));
//stu[i].major=str3;
str=str.Mid(str.Find(\”\\t\”));
str=str.Trim();
//str.TrimLeft();
str4=str.Left(str.Find(\”\\t\”));
//stu[i].mathgrade=atof(str4);
str=str.Mid(str.Find(\”\\t\”));
str=str.Trim();
//str.TrimLeft();
str5=str.Left(str.Find(\”\\t\”));
//stu[i].Englishgrade=atof(str5);
str=str.Mid(str.Find(\”\\t\”));
str=str.Trim();
//str.TrimLeft();
str6=str;
stu[i].num=str1;////////对student赋值
stu[i].name=str2;
stu[i].major=str3;
-78
面向对象程序设计课程设计
MeageBox(\”没有此人!
\”,\”\”,MB_ICONWARNING);
break;}}}
//TODO:
在此添加控件通知理程序代码}添加功能实现:
将六个编辑框中的数据组合成字符串,写到文件末尾。
voidC成绩管理系统Dlg:
:
OnBnClickedButton2()//添加{UpdateData(TRUE);Read();
for(intj=0;stu[j].num!
=\”\”;){j++;m_count=j;}for(inti=0;i
CStdioFileof;CStringstr,str1;str=str1=\”\”;if(of.Open(\”a.txt\”,CFile:
:
modeReadWrite|CFile:
:
modeCreate|CFile:
:
modeNoTruncate))
while(of.ReadString(str))
{
str1=str.Left(str.Find(\”\\t\”));
ints=atoi(str1);
intn=atoi(m_num);
-910
面向对象程序设计课程设计
file.SeekToBegin();for(inti=0;stu[i].num!
=\”\”;i++){CStringstr,str1,str2,str3,str4,str5,str6;str1=stu[i].num;str2=stu[i].name;str3=stu[i].major;str4.Format(\”%f\”,stu[i].mathgrade);str5.Format(\”%f\”,stu[i].Englishgrade);str6.Format(\”%f\”,stu[i].physicalgrade);str=str1+\”\”+str2+\”\”+str3+\”\”+str4+\”\”+str5+\”\”+str6+\”\\r\\n\”;
file.Write(str,str.GetLength());}
file.Close();}排序功能的实现:
使用冒泡排序的算法将学生按照总分高低排序,将排序后的学生数据写入到文件“b.txt”中。
voidC成绩管理系统Dlg:
:
OnBnClickedButton4(){
intj=0;for(j=0;stu[j].num!
=\”\”;)j++;m_count=j;
for(inti=0;stu[i].num!
=\”\”;i++){
for(intb=0;b
{
if(stu[b].grade
{Studentst;
st=stu[b];
stu[b]=stu[b+1];stu[b+1]=st;
}
elseif(stu[b].grade==stu[b+1].grade&&
stu[b].mathgrade
{
Studentst=stu[b];
stu[b]=stu[b+1];stu[b+1]=st;
-1112
+str3+\”面向对象程序设计课程设计
另外,添加,排序,删除的结果写在文件a.txt和b.txt中
总
结
第一个题目增加了对类的继承派生,以及抽象基类的理解。
同时也学会了如何将自定义的类文件加到MFC工程中去。
更重要的是,熟悉了如何利用GDI绘图,知道了单文档工程的几大类的关系。
第二个题目让我学会了运用MFC封装的文件类处理文件,掌握了对字符串的处理和数据的提取。
但第二个题目在视图显示方面还有很多不足,对大量数据的显示不到位。
添加,排序,删除的结果从文件中查看还很不方便。
我会继续学习者方面知识,在这方面加以完善。
13
第2篇:
面向对象程序设计实习报告
《面向对象程序设计》
实习报告
学年:
20210-2021949854561学年第一学期
试验名称:
面向对象程序设计姓名:
李
芳
班级:
电子商务(本)0902班学号:
0902110206
一、实习目的
1.了解SQLServer的集成环境、系统的菜单、工具栏、企业管理器、查询分析器的使用方法。
2.掌握创建数据库、数据表的方法;掌握数据表的操作命令;熟悉T-SQL命令的使用。
3.了解基本命令的使用方法;掌握常用函数、表达式的使用方法,掌握程序控制结构的使用和程序设计,掌握变量的作用范围和自定义函数的使用。
4.熟悉VB与数据库管理系统的连接方法,较熟练地掌握利用向导、数据环境、数据控件等工具开发应用程序的基本操作界面。
5.熟练掌握常用算法程序、常用统计程序、数据排序方法、简单数据加密和解密程序、矩阵基本操作程序的编写、调试和使用。
在这几天的实习,培养了我们对于visualbasic的开发平台软件和开发岗位所需能力。
实习过程中能够掌握对计算机编程的基本思路和方法语句等,尤其是编一个程序的创新思想,养成良好的可视化程序编程思维,培养自己较强的逻辑思维能力和创新思维能力,最终能够应用VisualBasic开发平台解决社会实际工作的需求,软件开发的能力。
此外,在开发程序的同时,还增强了我们的团队协作精神。
通过这个实习进一步了解计算机语言和编程。
掌握VB中的常用控件的属性和事件、方法。
利用控件编写程序。
二、实习内容
一、
SQLServer基本操作
1.数据库操作
2.创建学生情况表及数据录入
学生情况表206结构设计
学生情况表206记录信息
课程情况表206结构设计
课程情况表206记录信息
选课情况表206结构设计
选课情况表206记录信息
二、程序设计
1.SQLServer与程序设计语言连接
1)利用VB数据窗体向导生成学生情况表206的录入界面如下:
选课情况表206
课程情况表(主从)206
学生情况表(主从)206
2).利用数据控件设计数据表操作界面,用数据控件完成各数据表的添加、修改、删除、查询等操作的窗体。
数据表综合操作206
2.编写程序求1000以内的所有素数。
3.计算最大公约数和最小公倍数
4.对任意偶数进行素数分解
5.百钱百鸡问题
6、成绩统计
7.字符统计
8.选择法排序
9.冒泡法排序
10.设计程序封面
11.系统集成界面设计
三、实习总结
1、主要收获
通过实习,我掌握VisualBasic程序设计的相关理论知识,掌握VB语言开发简单应用程序的总体思路和步骤,熟悉其开发环境,掌握常用的基本控件的实用方法和系统属性的设置。
在熟悉VB语言基本语法、语句结构的基础上,能利用VB语言采用不同的编程语句实现相同的功能,并解决实际中的一些问题。
理解数据库的概念和优势,掌握VB的数据库访问技术,能进行数据绑定控件的连接和设置,了解SQL语言的简单实用,能进行数据库相关的简单应用程序的开发。
通过参考实例,能进行实用窗体的设计,并添加相应的控件,进行消息映射,并在控件中显示信息,实现信息的添加,删除,查找等功能,最终完成一个实用的管理系统的开发和设计。
利用所学知识进行VB程序开发的整体规划和语言测试。
通过参与综合实验,使我能够对VB程序设计产生更为实际的感性认识,能对VB应用程序的开发有一个完整的认识,能借鉴VB语言应用的成功经验并运用到实际工作中去,为将来从事VB程序设计相关的工作打下坚实的基础,以更好的适应社会对程序设计应用人才的需要。
2、总结的经验
a、作系统前,先构思系统,根据要完成的功能,进行模块划分。
b、先添加控件,再编程;变量先定义,再使用,并注意初始化。
c、代码书写规范,一定要按层次结构书写。
注意适当添加注释,对子函数,变量进行说明
3、心得体会
事情。
这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。
由于这次设计涉及到数据库,我的学到了不少VB与数据库连接的知识,对数据库的操作有了进一步的了解。
这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。
所以今后我的学习道路还是很漫长的。
最后,在这里我要衷心的感谢我们的指导老师刘春光,谢谢他的悉心指导和热心帮助。
由于我水平有限,加之时间短暂,学到的知识还有很多的
四、参考资料
1.《SQLServer应用教程》人民邮电出版社主编:
郑阿奇2.《VisualBasic程序设计》中国矿业大学出版社主编:
龚尚福3.《VB程序设计案例汇编》沈洪、施明利等清华大学出版社
4.《VB6.0程序设计实训教程》杨克玉机械工业出版社5.《VB程序设计》孟德欣等清华大学出版社(2021-07出版)6.XX文库
第3篇:
面向对象程序设计实习报告
《面向对象程序设计》实习报告
班级:
学号:
姓名:
指导教师:
实习时间:
一.实习目的
1.学习怎样启动和退出VB,熟悉VB的工作环境2.掌握基本控件的重要属性、事件;
3.熟练掌握在窗体上建立上述控件的操作方法;4.熟练掌握事件过程代码的编写;
5.掌握建立基于图形界面的应用程序的过程
6.学习用属性窗口设置对象属性及用代码设置对象属性的方法。
7.学习如何用对象(窗体和控件)建立界面及在代码编辑器中输入程序代码的基本操作。
8.基本掌握用VB开发应用程序的一般步骤。
二.程序设计
实验1
基本算法练习
1.编写程序求“自己学号后3位到500”以内的所有素
数及自然数对。
2.编写程序“计算最大公约数和最小公倍数”
实验:
计算3个数的最大公约数和最小公倍数,并以最小公倍数作为总金额,计算人民币各种票额的张数
3.编写程序“歌德巴赫猜想及守形数”
4.编写程序“百钱百鸡问题”
实验:
编写程序解决百钱买百鸡问题:
公鸡5元/只,母鸡3元/只,小鸡一元买3只,用100元买100只鸡,问有哪些购买方案?
实验2
1.成绩统计
常用统计练习
实验:
利用文本框作为数据的输入和输出,产生数学、语文、英语、计算机等4门课程的成绩
2.字符统计
实验:
随机产生200个“32到自己学号后3位”且小于128的随机数,将其转换成相应字符,形成一段统计字符。
统计字符中各个字母、各数字、空格、其它字符的个数。
实验3
1.选择法排序
常用排序方法
实验:
随机产生10个“学号后3位到500之间”的数,用选择法进行递增序。
2.冒泡法排序
实验:
随机产生10个“50到学号后3位之间”的数,然后用冒泡法按递增的顺序进行排序。
3.二维数组排序
实验:
随机产生“10到学号后3位之间”的数,形成一个4*5的二维数组,按升序排列。
4.从有序数组中删除一个元素
实验要求:
随机产生“1到学号后3位之间”的10个数,然后产生1-10间的随机数,确定删除元素,最后得出删除后的结果
实验4加密解密与数制转换
1.数据加密与解密
根据产生的后移位数,将输入的字符进行加密和解密。
2.数制转换
输入任意进制(二进制、八进制、十进制、十六进制)数,然后按要求将其转换成其他进制的数。
(要求,至少有一个数为自己学号后3位)
实验5
矩阵的基本运算
随机产生数组A(4,4),数组元素为10-99之间的两位数;随机产生数组B(4,4),数组元素为“学号后3位-999”之间的三位数
1)对A、B矩阵进行求和运算;
2)对A、B矩阵进行乘积运算
3)对A、B矩阵进行转置运算;
4)在A、B矩阵乘积运算中,找出最大素数及所在行、列位置;
5)显示矩阵A的上三角形,显示矩阵B的下三角形;
6)将矩阵A的第1行和第3行互换,矩阵B的第1列和第3列互换;7)显示矩阵A的主、副对角线上的元素,并求出这些元素的和
实验6
综合应用
1.数据文件管理(编写应用程序实现学生基本信息的管理)
2.梵塔问题
传说印度教的主神梵天创造世界时,在印度北部的圣庙里安放了一块铜板,铜板上插着3根钢针,在一根钢针下从下到上放着由大到小的64个金盘。
梵天要求僧侣们不停地按下面规则把64个金盘移到另一根钢针上,等64个金盘全部移动完成时,便是世界毁灭之日
3.设计程序封面
封面中必须使用图形控件作出简单的图形,有文字滚动显示,根据自己的构思,设计一个创意封面
3.系统集成界面设计
将上面的各种程序集成到一个管理系统。
三、实习总结
今年12月28日至1月9日,我们进行了VB程序设计实习
1月1日我做好了一个程序,编程不算太难,但是我没有把
它在短时间做好,用了很长的时间。
这一天我觉得过得很快,因
为我的头在不停的思考,我觉得我们应给扪心自问一下一个学期
我们到底学会了什么?
我们目前所学的都有会吗?
上课的时候
我们都有好好学了吗?
如果让我们自己做会做吗?
这天我考虑了很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 实习 报告