




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信与信息工程学院2010 /2011 学年 第 2 学期课程设计 实验报告模 块 名 称 vc+软件设计专 业 电子信息工程 学 生 班 级 b090110 学 生 学 号 学 生 姓 名 指 导 教 师 董恒 等 日 期 2012 年 5 月 实验内容 本课程设计分成练习题和综合题两部分。基础练习题11道中每个学生选择5个完成,要求如下:必做:1;2,3选择其一;4,5选择其一;6- 11选择其二。综合课题任选一道。一 、 练习题:1、基本环境调试将例程1用vc+打开,修改错误使程序能够运行。理解编译错误,运行错误等。2、文件操作写一个档案文件保存以下内容:学生姓名,性别,年龄,家庭住址,电话,电子邮件,爱好等。再以上基础上进行该文件的读出并可编辑浏览显示。3、图形编程提供一个图形工具界面,让用户能够画出直线,椭圆,多边形等几何元素,结果可以保存并可读出。4、字符串操作能够从磁盘上选择打开文本文档,读入所有内容并显示,统计所有的字符数目,单词数目,中文字符串的数目。5、动态链接库目的:了解mfc支持的三种动态链接库:win32dll,mfc常规dll, mfc扩展库。掌握封装dll的基本方法。二、综合题:文件编辑创建一个多文档工程,实现对于磁盘文件的浏览,编辑等功能。能够以文本文件,二进制文件方式打开文件;支持剪贴板功能;支持搜索,查找,替换功能;支持文件定位;基本步骤:(1)数据库后台设计,数据准备;(2)界面设计;(3)功能实现;(4)测试。实验环境vc+ 6.0实验步骤 基础题题目1 基本环境调测1.1实验目的:该程序计算任意数目以内的素数并且输出,要输入范围参数。修改给出的这段程序,使之能够运行,理解编译错误,运行错误等。1.2程序说明:本题是一道改错题,根据已经给出的例程1进行改错及完善的操作。打开vc+6.0,将例程1打开,点编译时会提示有根据错误所在行数,分析代码修改代码,其中的一个错误是error 是c2106: = : left operand must be l-value混淆了逻辑的等于号和赋值的等号;还有的error 是c2181: illegal else without matching if,if少了一个配套的大括号。重新编译,链接都没有错误,在运行的时候,当输入100,200等较大的数求所有素数时出现下面的状况:只需将存放素数的数组容量变大,变为primes200或更大1.3测试结果:总结分析:在调试的过程中,通过双击错误提示很轻松的将前两个编译错误很容易改出来了,存放素数的数组定义的太小而导致的问题则比较隐蔽,通过这个题目我对compiling,linking,build有了进一步的理解。1.4程序:void cfund1dlg:onbutton1() updatedata();int primes200;/存放素数的数组.int index=0; /简单的求素数算法.bool flag=true;for(int m=2;m=m_limit;m+) for(int i=2;im;i+)if(m%i=0)flag=false;break;elseflag=true;if(flag=true)primesindex+=m; cwnd *pwnd=getdlgitem(idc_staticoutput);cstring str;str.format(%d以内的素数有%d个:nn,m_limit,index);for(int i=0;isetwindowtext(str);题目2 文件操作2.1实验目的1) 熟练掌握文件操作,学会用write() 函数和read()函数写文件和读文件2) 学会建立工程提供比较直观的对话框界面供浏览2.2程序说明: 系统提供了一个控件面板,用鼠标选中我们需要的控件,将其放置对话框,设计出我们需要的程序界面。然后在建立类向导中为控件关联一个变量,分别为m_name,m_age,m_phone,m_email,m_address,m_hoppy,均为cstring类型。然后就是编写控件消息处理函数,我们需要编写的是void cmydlg:onsave() ,void cmydlg:onopen() ,分别对应控件“打开”“保存”,还需要编写voidcmydlg:display(stuinfo *si)显示函数。这样,这个程序的基本功能就满足要求了。2.3流程图:程序窗口输入学生信息保存信息输入结束修改信息打开信息无误yn2.4测试结果:总结分析:本题主要考察要求的是我们能否学会建立工程提供比较直观的对话框界面供浏览,并编写相应的事件函数,以及熟练掌握文件操作,学会用write() 函数和read()函数写文件和读文件。2.5关键程序:/显示函数void cmydlg:display(stuinfo *si)/stuinfo si=*m_stuindex;m_name=si-name;m_age=si-age;m_phone=si-phone;m_email=si-email;m_hoppy=si-hoppy;m_address=si-address;updatedata(false); /updatedata(false)是将控件的关联变量的值传给控件并改变控件状态/保存函数void cmydlg:onsave() / todo: add your control notification handler code hereupdatedata(); /updatedata() 是mfc的窗口函数,用来刷新数据的stuinfo si;memset(&si,0,sizeof(stuinfo); /memset() 函数常用于内存空间初始化strcpy(,m_name);strcpy(si.phone,m_phone);strcpy(si.email,m_email);strcpy(si.address,m_address);strcpy(si.hoppy,m_hoppy);strcpy(si.age,m_age);/ write into the filecfiledialog filedlg(false);filedlg.m_ofn.lpstrfilter=stud info(*.si)0*.si0all files(*.*)0*.*00;filedlg.m_ofn.lpstrdefext=si;if(idok=filedlg.domodal()cfile file(filedlg.getfilename(), cfile:modecreate | cfile:modewrite);file.write(&si, sizeof(stuinfo);file.close();/打开文件函数void cmydlg:onopen() / todo: add your control notification handler code here cfiledialog filedlg(true); /构造对话框对象(false)表示保存(true)表示打开filedlg.m_ofn.lpstrfilter = stud info(*.si)0*.si0all files(*.*)0*.*00;if(idok=filedlg.domodal()/domodal负责对模态话框的创建和撤销cfile file(filedlg.getfilename(), cfile:moderead);stuinfo si;file.read(&si,sizeof(stuinfo);file.close();display(&si);void cmydlg:onadd() / todo: add your control notification handler code hereupdatedata();stuinfo stuinfo;memset(&stuinfo,0,sizeof(stuinfo);strcpy(,m_name);strcpy(stuinfo.age,m_age);strcpy(stuinfo.phone,m_phone);strcpy(stuinfo.hoppy,m_hoppy);strcpy(stuinfo.email,m_email);/m_records.push_back(stuinfo);/m_stuindex=m_records.end()-1;题目三:图形编辑3.1实验目的1)掌握建立基于的文档工程的步骤2)熟悉鼠标绘图的机理,了解鼠标消息响应函数框架3.2程序说明:本题是使用mfc实现在界面上绘图的功能,基本包括点、直线、椭圆和矩形。关键问题是确定用户选择的图形类型,从而可以调用相应的类库,并将类实例化之后使用其中各种绘图函数。同时需要记录用户鼠标点击的操作,获取鼠标指针当前的屏幕坐标,确定图形的起始位置和结束位置。3.3程序流程图开 始选择图形类型点线椭 圆矩 形3.4测试结果:结果分析:程序提供了一个图形绘制界面,我们可以画出直线,椭圆,矩形,绘制的结果可以通过文件中的保存并可通过“打开”读出原来原来已经保存的图形。要求我们能够熟悉鼠标绘图的机理,了解鼠标消息响应函数框架。3.5关键程序:void cgraphicview:ondraw(cdc* pdc)cdrawdoc* pdoc = getdocument();assert_valid(pdoc);/ todo: add draw code for native data hereif (!pdoc) return;int index;index = pdoc-m_obarray.getsize();/取得直线的数目for(int i=0;im_obarray.getat(i);pshape-drawing(pdc);void cdrawview:onlbuttondown(uint nflags, cpoint point) / todo: add your message handler code here and/or call default this-last=point;cview:onlbuttondown(nflags, point);void cdrawview:onlbuttonup(uint nflags, cpoint point) / todo: add your message handler code here and/or call defaultcdrawdoc *pdoc = getdocument(); pdoc-addshape(last,point, m_stype);invalidate();cview:onlbuttonup(nflags, point);题目四:字符串的操作4.1实验目的 1)熟练掌握字符串处理2)熟练掌握判断中文字符,英文单词的方法3)掌握文件操作,如文件读取,文件存储4)掌握工程建立方法4.2程序说明:本题是对文本文件内的字符信息做统计工作。主要思想是通过嵌套判断来实现对字母,字符,汉字的区分。编写一个统计的函数counting(char *p, int length)来统计,字符数numchar的大小由getlength()得到,用if(pi=a&pi=a&pi=0x00&pim_char= dwfilelen;pbuf = new chardwfilelen;file.read(pbuf, dwfilelen);file.close();m_content =pbuf;counting(pbuf, dwfilelen);void cmydlg:counting(char *p, int length) /计算模块bool wordbeg = true;bool flag = true;int numasc=0;this-m_word=0;for(int i=0; i=a&pi=a&pim_word+;wordbeg = false;else wordbeg = true;if(pi=0x00&pim_chinese = (length-numasc)/2;/this-numchar=length-numchinese;updatedata(false);题目五:动态链接库5.1实验目的了解mfc 支持的三种动态链接库:win32dll,mfc 常规dll, mfc扩展库。掌握封装dll的基本方法。5.2程序说明:本题是使用动态链接库来完成一些简单的程序算法。动态链接库分为win32、mfc及mfc扩展三种,分别通过不同的方法来建立。动态链接库编写完毕后,生成dll和lib文件,将其复制到测试工程的debug文件夹下,并在工程中与lib文件关联之后就可以调用动态链接库中的函数或方法5.3测试结果:总结分析:本题主要要求我们了解mfc 支持的三种动态链接库:win32dll,mfc 常规dll, mfc扩展库,掌握封装dll的基本方法。5.4关键程序:void ctestdlldlg:onbuttonadd() / todo: add your control notification handler code herehinstance hinst;hinst=loadlibrary(win32dll.dll);typedef int (*addproc)(int a);addproc add=(addproc)getprocaddress(hinst,add);if(!add)messagebox(获取函数地址失败);return;updatedata(true);m_r1=add(m_n);updatedata(false);void ctestdlldlg:onbuttonfactorial() / todo: add your control notification handler code herehinstance hinst;hinst=loadlibrary(mfcdll.dll);typedef int (*addproc)(int a);addproc jiechen=(addproc)getprocaddress(hinst,jiechen);if(!jiechen)messagebox(获取函数地址失败);return;updatedata(true);m_r2=jiechen(m_n2);updatedata(false);二 、综合题。实验目的:首先创建一个多文档工程,实现对于磁盘文件的浏览,编辑等功能。能够以文本文件,二进制文件方式打开文件;支持剪贴板功能;支持搜索,查找,替换功能;功能参考了磁盘文件工具程序ultraedit 。程序说明:功能要求分析:1. 文件读取功能:即利用目标系统能通过读取功能,一方面能够显示文件的原来数据形式,另一方面也能够把原来的数据形式通过编码转化为用户很方便识别的十六进制数据,进而为用户方便的了解文件的存储数据。2. 文件编辑功能:即利用目标系统能通过编辑功能,把对读取的文件数据进行修改,添加,删除,进而实现对原文件的更新的功能,以方便用户能够对文件的方便的操作。3文件保存功能:即利用目标系统能通过保存功能,把对读取的文件数据进行修改和编辑过后的数据在保存回原文件,以实现对原文件的保存测试结果: 关键程序:void chexeditview:ondraw(cdc* pdc)crect rc;getclientrect(rc);if(m_text = null)pdc-fillrect(rc, &cbrush(rgb(255,255,255);return;cdcdc;dc.createcompatibledc(pdc);cbitmap bm;bm.createcompatiblebitmap(pdc, rc.width(), rc.height();dc.selectobject(bm);dc.setboundsrect(&rc, dcb_disable);cfont font;font.createfont ( m_lineheight, 0, 0, 0, fw_normal, 0, 0, 0, default_charset, out_default_precis, clip_default_precis, default_quality, fixed_pitch | ff_modern, 0 );cfont* oldfont = dc.selectobject ( &font );cbrush bkbrush(rgb(255,255,255); dc.fillrect(rc, &bkbrush);uint linecy, linecx;uint dwpos;char currentchar20;uchar text17;int linebeginpos;m_hexstart = m_charwidth * (14 - m_leftchar);/计算二进制显示开始位置m_textstart = m_hexstart + m_charwidth * 50;/计算ascii码显示开始位置for(uint i = 0; i m_pagerows; i+)/按行显示数据linebeginpos = (m_topline+i-1)*16;/计算当前行开始字符相对于总缓冲区的位置linecy = i * m_lineheight;/当前行的y坐标sprintf(currentchar, %08xh:, linebeginpos);dc.settextcolor(:getsyscolor(color_windowtext);dc.setbkcolor(rgb(255,255,255);dc.textout (m_charwidth*(2-m_leftchar), linecy, currentchar);/显示地址基值memcpy(text,&m_textlinebeginpos,16);/取当前行数据text16 = 0;for(int l = 0; l 16; l+)if(textl m_charcount)textm_charcount%16 = 0;/最后的数据不满一行时dc.textout (m_textstart, linecy, text);/显示右面的ascii字符/被选中时反色显示右面的ascii字符int selstart = (m_selstart - linebeginpos)15? 15:(m_selend - linebeginpos);if(selstart = 0)dc.setbkcolor(:getsyscolor ( color_highlight );dc.settextcolor(:getsyscolor ( color_highlighttext );textselend+1=0;dc.textout (m_textstart+selstart*m_charwidth, linecy, &textselstart);elsedc.settextcolor(:getsyscolor(color_windowtext);dc.setbkcolor(rgb(255,255,255);for(uint j = 0; j (m_charcount-1)goto bitblt;/显示完最后一行退出if(dwpos = m_selstart & dwpos 4;sprintf(currentchar, %x, chex);dc.textout (line
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惊蛰节气课件
- 情景式对联窍门课件
- 大学秋季迎新活动方案
- 2026届陕西省西安市第六十六中学高二化学第一学期期中预测试题含解析
- 杨梅促销方案
- 美团员工试题及答案
- 幼儿园散学典礼的活动方案
- java三层框架面试题及答案
- 幼儿园电工面试题及答案
- 红与黑考试题及答案
- 2025年蛟川书院分班测试题及答案
- 飞机数字孪生与预测性维护集成
- 2025《煤炭购销合同》
- 2025年行政执法证考试必刷题库与答案
- 基孔肯雅热防控知识考试试题含答案
- 2025年机关事业单位技能资格考试-文秘资料技师历年参考题库含答案解析(5卷套题【单项选择题100题】)
- 吉林化工(危险化学品)、医药企业电气设备设施安全隐患排查指南
- 劳动用工考试试题及答案
- 护理消毒液的配置
- 2025年职业指导师(四级)考试模拟试题汇编与模拟试题解析
- 2025年全新公安基础知识题库(含答案)
评论
0/150
提交评论