ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:540.16KB ,
资源ID:25805173      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25805173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++mfc上机实习报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++mfc上机实习报告.docx

1、c+mfc上机实习报告 面向对象程序设计 课程设计报告学 号: 201* 班级序号: 11* 姓 名:* 指导老师: 陈亮老师 成 绩: 中国地质大学(武汉) 信息工程学院信息工程系 2014年6月17日上机题目一1、题目:橡皮筋画线程序,要求:(1)基本要求利用鼠标在视图上绘制线,能够设置线的颜色和宽度;能够用鼠标拾取绘制的某条线,被选中的线能够高亮显示,并且弹出对话框,输入线的属性保存起来;(2)高阶要求能够将绘制的线数据保存在Line.dat文本文件中;打开线数据文件Line.dat,可以显示出文件里面的线图形。(3)可选功能文字能够在视图任意地方点击鼠标后输入。(提示:可以使用STL中

2、的容器来管理数据。)2、设计思路:利用MFC中的单文档,在view函数中添加up和down的命令响应函数,使实现画线的功能,并在函数中增加特定代码使实现设置线宽和颜色(具体函数代码可以从书上找到),同样的添加保存和打开所画的线、能输入文字的命令函数。3、实现情况和能改进的地方:代码运行成果是可以改变线宽和颜色,并且在运行出的窗口的大小改变构绘制的线不会消失,可以保存并打开绘制的线,能在视图的任何地方输入文字。用鼠标拾取绘制的线并高亮显示没有实现,保存时直接保存的绘制的线,而并没有将所画线的属性保存下来,没有dat类型的文件。4、具体代码如下:设置线宽的对话框的代码:(因引入对话框,需添加头文件

3、)void CHuiView:OnSetting() / TODO: Add your command handler code here CSettingDlg dlg; dlg.m_nLineWidth=m_nLineWidth; if(IDOK=dlg.DoModal() m_nLineWidth=dlg.m_nLineWidth; 设置颜色的代码:void CHuiView:OnColor() / TODO: Add your command handler code here CColorDialog dlg; dlg.m_cc.rgbResult=m_clr; dlg.m_cc.F

4、lags |=CC_RGBINIT | CC_FULLOPEN; if(IDOK=dlg.DoModal() m_clr=dlg.m_cc.rgbResult; /dlg.DoModal();文件保存于打开的代码:void CHuiView:OnFileOpen() / TODO: Add your command handler code here HMETAFILE hmetaFile; hmetaFile=GetMetaFile(meta.wmf); m_dcMetaFile.PlayMetaFile(hmetaFile); DeleteMetaFile(hmetaFile); Inva

5、lidate();void CHuiView:OnFileSave() / TODO: Add your command handler code here HMETAFILE hmetaFile; hmetaFile=m_dcMetaFile.Close(); CopyMetaFile(hmetaFile,meta.wmf); m_dcMetaFile.Create(); DeleteMetaFile(hmetaFile);在视图的任何地方输入文字:(OnCreat和OnChar函数)int CHuiView:OnCreate(LPCREATESTRUCT lpCreateStruct) i

6、f (CView:OnCreate(lpCreateStruct) = -1) return -1; CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight); ShowCaret(); / TODO: Add your specialized creation code here return 0;void CHuiView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: A

7、dd your message handler code here and/or call default CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); if(0x0d=nChar) m_strLine.Empty(); m_ptOrigin.y+=tm.tmHeight; else if (0x08=nChar) COLORREF clr=dc.SetTextColor(dc.GetBkColor(); dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); m_strLine=

8、m_strLine.Left(m_strLine.GetLength()-1); dc.SetTextColor(clr); else m_strLine+=nChar; CSize sz=dc.GetTextExtent(m_strLine); CPoint pt; pt.x=m_ptOrigin.x+sz.cx; pt.y=m_ptOrigin.y; SetCaretPos(pt); dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); CView:OnChar(nChar, nRepCnt, nFlags);在运行窗口上保存绘制的线:void

9、CHuiView:OnDraw(CDC* pDC) CHuiDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CPen pen(PS_SOLID,m_nLineWidth,m_clr); CBrush* pBrush=CBrush:FromHandle(HBRUSH)GetStockObject(NULL_BRUSH); pDC-SelectObject(pBrush); for (int i=0;iMoveTo(CGraph*)m_ptrArray.GetAt(i)-m_ptOrigin); pDC-LineTo(CGraph*)m_ptrArra

10、y.GetAt(i)-m_ptEnd); HMETAFILE hmetaFile; hmetaFile=m_dcMetaFile.Close(); pDC-PlayMetaFile(hmetaFile); m_dcMetaFile.Create(); m_dcMetaFile.PlayMetaFile(hmetaFile); DeleteMetaFile(hmetaFile); / TODO: add draw code for native data here最终的up 和down函数:void CHuiView:OnLButtonDown(UINT nFlags, CPoint point

11、) / TODO: Add your message handler code here and/or call default m_ptOrigin=point; SetCaretPos(point); m_strLine.Empty(); CView:OnLButtonDown(nFlags, point);void CHuiView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CClientDC dc(this); CPen pe

12、n(PS_SOLID,m_nLineWidth,m_clr); CBrush* pBrush=CBrush:FromHandle(HBRUSH)GetStockObject(NULL_BRUSH); dc.SelectObject(&pen); dc.SelectObject(pBrush); dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_dcMetaFile.MoveTo(m_ptOrigin); m_dcMetaFile.LineTo(point); m_dcMetaFile.SelectObject(&pen); /m_dcMetaFile.Sel

13、ectObject(pBrush); CGraph *pGraph=new CGraph(m_ptOrigin,point); m_ptrArray.Add(pGraph); CView:OnLButtonUp(nFlags, point);添加的成员变量及其初始化:m_ptOrigin=0; m_clr=RGB(255,0,0); m_nLineWidth=0; m_strLine= ; m_dcMetaFile.Create();运行结果为:上机题目二1、题目:学生学籍成绩管理系统学生的信息包括:姓名、学号、性别、班级、院系;学生的成绩信息包括英语、数学、程序设计及体育成绩等各门课的成绩;

14、定义如下类,并建立一个文本文件Student.dat,用于存储学生、课程与成绩的相关信息。文件格式自己定义。学生类CStudent(姓名、学号、性别、班级、院系);课程类CLessen(课程名称、课程开设时间);成绩类CGrade(学号、课程名称、成绩)要求实现如下功能: 在对话框上能够添加、删除、编辑和查询课程信息; 在对话框上能够添加、删除、编辑和查询学生信息学生信息; 在对话框上能够增加、删除、编辑和查询学生的选课信息; 在对话框上能够录入和编辑学生某门课的考试成绩; 在对话框上能够按照学生姓名查询学生的选课信息和选课成绩,并统计出其总成绩、平均成绩,计算出该学生的成绩的标准差; 显示全

15、班的学生成绩排名。 统计出各班的平均成绩,并进行排名。2、设计思路:对话框的应用,在对话框上添加控件,将控件与具体函数或成员变量绑定,该题中利用此来实现编辑框与列表控件的同步,从而实现录入、查询、和编辑等功能。将学生管理系统分为三部分:学生个人信息、成绩和选课情况,三部分在具体处理上是一样的,成绩计算时,需进行类型转换。3、实现结果及可改进的地方:实现结果是能在对话框上进行录入、查询、编辑和删除。在学生成绩的对话框上没有实现学生排名情况,可以无限录入但是没有数据的保存,不能整个班级排名和不同班级排名。该题目中查询、录入都是在同一对话框实现的,可以再不同对话框实现,实现需要变量对应。4、具体代码

16、如下:单击按钮,使弹出另一对话框:(固定,改变具体类名即可)void CXUESHENGDlg:OnButton1() / TODO: Add your control notification handler code here CStudent st; st.DoModal();学生信息:对编辑框定义对应的成员变量:m_xingming = _T(); m_xingbie = _T(); m_xuehao = _T(); m_yuanxi = _T(); m_zhuanye = _T();列表控件在相同对话框内,定义对用成员变量: DDX_Control(pDX, IDC_LIST1, m

17、_list); DDX_Text(pDX, IDC_EDIT1, m_xingming); DDX_Text(pDX, IDC_EDIT2, m_xingbie); DDX_Text(pDX, IDC_EDIT3, m_xuehao); DDX_Text(pDX, IDC_EDIT4, m_yuanxi); DDX_Text(pDX, IDC_EDIT5, m_zhuanye); /AFX_DATA_MAP录入按钮及列表控件设置代码:void CStudent:OnButton1() / TODO: Add your control notification handler code here

18、 UpdateData(TRUE);/将界面的数据更新到对应的变量中 int count=m_list.GetItemCount();/获取当前存在的数据总量 m_list.InsertItem(count,m_xingming);/插入一行 m_list.SetItemText(count,1, m_xingbie); m_list.SetItemText(count,2, m_xuehao); m_list.SetItemText(count,3, m_yuanxi); m_list.SetItemText(count,4, m_zhuanye); MessageBox(已录入学生信息!)

19、;BOOL CStudent:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here DWORD dwStyle = m_list.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; dwStyle |= LVS_EX_GRIDLINES; m_list.SetExtendedStyle(dwStyle); m_list.InsertColumn(0, 姓名,LVCFMT_LEFT,60); m_list.InsertColumn(1, 性别,

20、LVCFMT_LEFT,60); m_list.InsertColumn(2, 学号,LVCFMT_LEFT,60); m_list.InsertColumn(3, 院系,LVCFMT_LEFT,60); m_list.InsertColumn(4, 专业,LVCFMT_LEFT,60); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE删除按钮:void CStudent:OnButton2() / TODO:

21、 Add your control notification handler code here BOOL findok = FALSE; for(int i=0;im_list.GetItemCount();i+) if(m_list.GetItemState(i,LVIS_SELECTED)=LVIS_SELECTED) m_list.DeleteItem(i); MessageBox(已删除所选学生信息); findok=TRUE; if(findok!=TRUE) MessageBox(请先选择需要删除的学生); UpdateData(FALSE);查询按钮(按名字查询):void C

22、Student:OnSearch() / TODO: Add your control notification handler code here int i; BOOL temp = FALSE; UpdateData(TRUE); for(i=0;im_list.GetItemCount();i+) if(m_xingming=m_list.GetItemText(i,0) m_xingbie = m_list.GetItemText(i,1); m_xuehao = m_list.GetItemText(i,2); m_yuanxi= m_list.GetItemText(i,3);

23、m_zhuanye = m_list.GetItemText(i,4); UpdateData(FALSE); temp = TRUE; break; if(temp=FALSE) MessageBox(没有该学生的记录!); UpdateData(FALSE);编辑按钮:(按名字一样修改)void CStudent:OnGai() / TODO: Add your control notification handler code here Cgai ga; ga.DoModal(); int i; BOOL temp = FALSE; UpdateData(TRUE); for(i=0;i

24、m_list.GetItemCount();i+) /if(temp=true) if(ga.m_xingming=m_list.GetItemText(i,0) /m_xingming=ga.m_xingming; int count=m_list.GetItemCount();/获取当前存在的数据总量 / m_list.InsertItem(count,m_xingming);/插入一行 m_list.SetItemText(i,1, ga.m_xingbie); m_list.SetItemText(i,2, ga.m_xuehao); m_list.SetItemText(i,3, g

25、a.m_yuanxi); m_list.SetItemText(i,4, ga.m_zhuanye); /m_xingbie=ga.m_xingbie; /m_xuehao =ga.m_xuehao; /m_yuanxi = ga.m_yuanxi; /m_zhuanye = ga.m_zhuanye; UpdateData(FALSE); /temp = TRUE; break; if(ga.m_xingming!=m_list.GetItemText(i,0) MessageBox(修改失效!); 在成绩和选课情况的对话框上,录入、查询、编辑、删除的代码只需改变给的成员变量名,具体实现是一

26、样的。成绩:成员变量:m_chengxu = _T(); m_tiyu = _T(); m_xingming = _T(); m_pingjun = _T(); m_cha = _T(); m_shuxue = _T(); m_yingyu = _T();列表控件的变量: DDX_Control(pDX, IDC_LIST1, m_list1); DDX_Text(pDX, IDC_EDIT3, m_chengxu); DDX_Text(pDX, IDC_EDIT4, m_tiyu); DDX_Text(pDX, IDC_EDIT5, m_xingming); DDX_Text(pDX, ID

27、C_EDIT6, m_pingjun); DDX_Text(pDX, IDC_EDIT7, m_cha); DDX_Text(pDX, IDC_EDIT2, m_shuxue); DDX_Text(pDX, IDC_EDIT1, m_yingyu);列表控件与编辑框的同步,(录入)及平均数、方差的计算,并将计算结果同时在编辑框列表控件中显示。void CGrade:OnButton1() / TODO: Add your control notification handler code here UpdateData(TRUE);/将界面的数据更新到对应的变量中 int count=m_li

28、st1.GetItemCount();/获取当前存在的数据总量 m_list1.InsertItem(count,m_xingming);/插入一行 m_list1.SetItemText(count,1, m_yingyu); m_list1.SetItemText(count,2, m_shuxue); m_list1.SetItemText(count,3, m_chengxu); m_list1.SetItemText(count,4, m_tiyu); int a,b,c,d,e; char ch110,ch210,ch310,ch410,ch510,ch610,ch710; Get

29、DlgItemText(IDC_EDIT1,ch1,10); GetDlgItemText(IDC_EDIT2,ch2,10); GetDlgItemText(IDC_EDIT3,ch3,10); GetDlgItemText(IDC_EDIT4,ch4,10); GetDlgItemText(IDC_EDIT6,ch5,10); GetDlgItemText(IDC_EDIT7,ch6,10); GetDlgItemText(IDC_EDIT8,ch7,10); a=atoi(ch1); b=atoi(ch2); /类型转换 c=atoi(ch3); d=atoi(ch4); e=(a+b+c+d)/4; itoa(e,ch5,10); SetDlgItemText(IDC_EDIT6,ch5); m_list1.SetItemText(count,5,ch5); int m,n; m=sqrt(a-e)*(a-e)+(b-e)*(b-e)+(c-e)*(c-e)+(d-e)*(d-e)/4); n=a+b+c+d; itoa(m,ch6,1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1