湖南大学实验报告_湖南大学信号处理实验

其他范文 时间:2020-02-27 19:11:08 收藏本文下载本文
【www.daodoc.com - 其他范文】

湖南大学实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“湖南大学信号处理实验”。

HUNAN UNIVERSITY

C++

学生姓名 李国龙 学专指生业导学班老

号 201408010211 级 计算机科学与技术 师 杨圣洪

2015年12月 30日

一、实验原理:运用MFC的知识编写一个系统,实现二进制文件的创建,读取,查询,插入,修改,删除,排序,索引,基于索引的查询等功能。

二、实验目标:掌握MFC的相关知识,学会利用MFC进行文件操作系统的编写。

三、实验设计:

1、建立框架

利用 MFC Exe 模板建立 MFC 的基础界面,其中第 3 步中不选“ActiveX 控件”,在第 5 步中选择“作为静态的 DLL”,其他取默认值,等你熟练后,你再百度或搜狗找办法,定制 所你的喜欢的模式。项目名称为 Lt13DTextFile。建立菜单:我的文件、我的编辑 在“我的文件”下方建:建立文本文件 ID_MENUITEMFILENEW、读取文本文件 ID_MENUITEMFILEREAD、查询单条记录 ID_MENUITEMQUERYONE、查询多条记录 ID_MENUITEMQUERYM 在 “ 我 的 编 辑 ” 下 方 建 : 修 改 ID_MENUITEMEDITMODI、删 除 ID_MENUITEMEDITDEL、插 入 ID_MENUITEMEDITINSERT、排 序 ID_MENUITEMEDITSORT1、排 序 2 ID_MENUITEMEDITSORT2、索 引 ID_MENUITEMEDITINDEX、根

ID_MENUITEMEDITQUERYINDEX。

单击后显示一句话。先建立菜单系统,为每个菜单项的单击事件写上 MeageBox(NULL,“函数名”,“测试 ”,MB_OK),等将来建立相应对话框后,再进行修改。由于保存在 LT13DTextFileView.cpp 即 View 文件中,显

框的命

voidCLt13DTextFileView::OnMenuitemeditqueryindex(){ MeageBox(“根据索引文件快速查询”,“初始代码”,MB_OK);}

2、建立数据结构类 StudScore 在当前项目中建立 StudScore.h,将 LT12B 中同名文件的内容复制过来。再新建 StudScore.cpp,当我将 LT12B::StudScore.cpp 代码贴到当前文件中,再编译时出 现如下错误:studscore.cpp(248): fatal error C1010: unexpected end of file while looking for precompiled header directive,百度一下在最前面加上“#include“stdafx.h””,这是将普通的 DOSAPP 迁移到 MFC 时发生的现象,是正常的!因为不符合 MFC 的规范。

3、建立文件操作类 StudScoreAFile 在当前项目中建立 studScoreAFile.h,将 LT12B 中同名文件的内容复制过来。建立 studScoreAFile.cpp,复制 LT12B 中相关代码,可以要进行修改,加上 include“stdafx.h”后,编译竟然能能通过,不是说 MFC 与 DOSAPP 中 C++的文件读写操作 不一样吧?不再是流媒体 ofstream 或 iftream,而是采用 CStdioFile 吗?先试试看。经实际测试,只需要将以上函数中 stringstream sdata 换成 string&sdata0 就可以了,然 后在各函数内部建立字符串流 stringstream 的输入或输出流,从而在沿用 DOSAPP 的框架基 础上稍作修改,得到 MFC 的体系,真是伟大呀!为了测试方便,建立每次只在 studScoreAFile.h 与 studScoreAFile.cpp 中增加一个函数,然后建立其最终操作作界面,相当于 DOSAPP 即 Lt12A 与 Lt12B 中主控程序,现在采用了 窗体形式。

4、创建文件

在 studScoreAFile.h 中增加函数 intcreateFileText(stringfn, string &sdata);将 Lt12B 项目中相应代码,复制到 studScoreAFile.cpp 中,修改成如下形式,主要是送 来的数据是 string,在函数局部转换为 stringstream 变量(哪些出错的程序,也可以这样处理)还需要在 studScoreAFile.cpp 的最前面增加#include“stdafx.h” 在 DOSAPP 中,数据的输入是通过 CMD 窗体中进行,实际是 cin>>stud 完成的,在 MFC 中需要创建 7 个控件输入相关数据,再建立一个文件文本框,输入文件名,为了一次 性写入多条数据,在右边建立一个多行文本框,在界面的按钮中:确定(保存),取消,保 存到下方区域,将来点“保存”时,将多行文本区域的内容以 stringstream 的形式,发给 studScoreAFile 中的函数。

5、读取文件的内容 在 studScoreAFile.h 中增加如下函数:

intreadFileText(stringfn,string&sdata);将 Lt12B 中 studScoreAFile.cpp 中以上函数代码读过来,稍作修改。

建立输入数据 IDC_EDITFN IDC_EDITRESULT。

6、查询单条记录 在 studScoreAFile.h

intqueryOne(stringfn,stringfieldName,string findVal,string&sdata);将 Lt12B 中 studScoreAFile.cpp 中以上函数代码读过来,稍作修改。

建立输入数据 IDC_EDITFN IDC_EDITFIELDNAME IDC_EDITFINDVAL IDC_EDITRESULT。

7、查询多条记录 在 studScoreAFile.h

intqueryMulti(stringfn,stringfieldName,stringfindVal,string&sdata);将 Lt12B 中 studScoreAFile.cpp 中以上函数代码读过来,稍作修改。建立输入数据 IDC_EDITFN IDC_EDITFIELDNAME IDC_EDITFINDVAL IDC_EDITRESULT。

8、修改记录

在 studScoreAFile.h 中增加如下函数: int modiMulit(string fn,string fieldName,string

findVal,int

&n,string modiField,string modiVal);将 Lt12B 中 studScoreAFile.cpp 中以上函数代码读过来,稍作修改。建立输入数据 IDC_EDITFN IDC_EDITFIELDNAME

IDC_EDITFINDVAL

IDC_EDITN IDC_EDITMODIFIELD IDC_EDITMODIVAL IDC_EDITRESULT。

9、插入记录 在 studScoreAFile.h

intinsertMulti(stringfn,stringfieldName,string findVal,string &sdata);将 Lt12B 中 studScoreAFile.cpp 中以上函数代码读过来,稍作修改。建立输入数据 IDC_EDITFN fieldName,findVal IDC_EDITFIELDNAME

IDC_EDITFINDVAL

IDC_EDITSTUDNO,IDC_EDITSTUDNAME,IDC_EDITCOURSENAME,IDC_EDITPS1,IDC_EDITPS2,IDC_EDITEXAMEND,IDC_EDITTOTALSCORE,IDC_BUTTONSAVEDOWN,IDC_EDITDATAAREA。

10、删除记录 在 studScoreAFile.h

: intdelOne(stringfn,stringfieldName, stringfindVal,int&n,string&sdata);将 Lt12B 中 studScoreAFile.cpp 中以上函数代码读过来,稍作修改。建立输入删除文件名、删除线索值的界面 IDC_EDITFN、IDC_EDITFIELDNAME、IDC_EDITFINDVAL、IDC_EDITN、IDC_EDITRESULT。

11、排序 在 studScoreAFile.h

intsortFile(stringfn,stringfieldName);在 studScoreAFile.cpp 编写以上函数的实现代码。建立排序数据对话框 只需要输入文件名、排序字段名,与显示结果多行区域就可以了 IDC_EDITFN

fieldName,findVal

IDC_EDITFIELDNAME IDC_EDITDATAAREA。

12、索引

由于排序过程中困难,可能索引也不会成功,只能对于二进制文件可能成功,对于二进 制文件我没时间再编码了,已经在 studScoreAFile.cpp 同步对于二进制进行说明,但是没有 具体实施,可能有点小问题。在 studScoreAFile.h 中增加如下函数: intindexFile(stringfn,stringfnIndex,stringfieldName);在 studScoreAFile.cpp 编写以上函数的实现代码。建立索引对话框,它与排序对话框一样 DC_EDITFN fieldName,findVal IDC_EDITFIELDNAME IDC_EDITDATAAREA。

13、基于索引的查询

由于排序过程中困难,可能索引也不会成功,只能对于二进制文件可能成功,对于二进 制文件我没时间再编码了,已经在 studScoreAFile.cpp 同步对于二进制进行说明,但是没有 具体实施,可能有点小问题。在 studScoreAFile.h 中增加如下函数: intqueryIndex(stringfn,stringfnIndex,stringfindVal,string&sdata);在 studScoreAFile.cpp 编写以上函数的实现代码。建立查询页面 IDC_EDITFN

fieldName,findVal

IDC_EDITFNNDX IDC_EDITDATAAREA IDC_EDITFINDVALUE IDC_EDITFIELDNAME。

四、运行结果:

1.文件的创建:

2.二进制文件的读取

3.二进制文件查询(单条记录,多条记录)

4.二进制文件的修改

修改后:

5.二进制文件的删除

删除后:

6.二进制文件的插入

插入后:

7.二进制文件的排序

排序后:

8.二进制文件的索引

9.二进制文件的基于索引的查询

五、总结

本次实验是在二进制文件操作系统的基础上进行的,感觉不是太难,不过也有困惑的地方。MFC还是和以往学的有所区别,MFC可以自定义窗口,定义窗口时要注意属性的设置,在执行语句中需要用到GetDlgItem(IDC_EDITA)->GetWindowText()获取对象,用GetDlgItem(IDC_EDITMJ)->SetWindowText()放置对象。想要执行窗口程序,还要用到类似下列语句:dialogSort1 form1;form1.DoModal();注意要将stringstream 换成string&类型,这样可以避免内存问题。

湖南大学建工专业暑假实验报告

2014年湖南大学建工专业暑假生产实习报告一、实习目的通过暑假期间的实际工作体验,加快实现书本理论与生产实践的对接,培养综合应用能力,为今后的工作实践打下坚实基础。二、实......

湖南大学

湖南大学湖南大学坐落在中国历史文化名城长沙,校区位于湘江之滨、岳麓山下,享有"千年学府,百年名校"之誉。她不仅是国家教育部直属的全国重点综合性大学,也是国家"211工程"......

湖南大学

湖南大学湖南大学是一所理科基础坚实、工科实力雄厚、人文学科独具浓厚文化背景、经济管理学科富有特色的多学科协调发展的全国重点大学,直属国家教育部,是国家“211工程”、......

湖南大学校史

9.湖南大学基本简介湖南大学坐落在中国历史文化名城长沙,校区位于湘江之滨、岳麓山下,享有“千年学府,百年名校”之誉。她不仅是国家教育部直属的全国重点综合性大学,也是国家“......

湖南大学校友

政军界:令计划:中共中央书记处书记,中央办公厅主任。袁纯清:中共中央委员,陕西省省长,省委副书记。傅自应:商务部副部长。蒋超良:现国家开发银行行长,原湖北省副省长。张昌平:福建省委......

下载湖南大学实验报告word格式文档
下载湖南大学实验报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文