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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

3实验步骤.docx

1、3实验步骤实验三使用EVC编程实现“文件系统管理”1实验目的:1. 熟悉Win CE中文件的基本操作;2. 熟悉在EVC4.0调试嵌入式应用程序的基本方法;3. 掌握控件(Combo box)的使用方法;4. 掌握Edit Box(编辑框)、Combo Box(组合框)与成员变量的关联的方法;5. 掌握MFC类库中的CFile类的使用方法。2实验任务:1. 使用CFile类来实现对一个学生数据文件的操作 移动学生记录 添加一条学生信息 编辑一条学生信息 删除一条学生信息3实验步骤:1. 使用EVC向导(File-New)新建一个项目在Projects选项卡选择“WCE Pocket PC 20

2、03 MFC AppWizard(exe)”项,在右侧的Project name和Location输入栏中分别输入项目的名称和项目的存储路径,如图1所示,这里项目名称设为FileExam。图1 新建项目对话框输入项目名和路径后,单击OK按钮,进入如图2所示的向导界面的第一步。在该界面中的应用程序类型中选择Dialog based(对话框类型),单击Next按钮,进入向导的第2步。在该界面中输入应用程序的标题,我们直接按照默认操作完成向导即可。图2 向导界面2. 设置工具栏如下图3所示图3工具栏(用于设置工程名SDK编译类型目标机器)3. 设计对话框样式。 首先在工作区(WorkSpace)点“

3、ResourceView”标签,双击打开对话框窗体(IDD_FILEEXAM _DIALOG)。如图4。 图4 打开的对话框窗体 设计对话框窗体如图5所示。可以通过右键单击控件,选择“Properties”设置控件的“ID”属性和“Caption”属性。对话框上的主要控件及其属性设置如表1。图5文件综合操作示例界面 表1文件综合操作示例界面的控件及其属性设置控件ID说明IDC_EDTXSBHEdit Box(编辑框),用于显示和输入学生编号IDC_EDTXSXMEdit Box(编辑框),用于显示和输入学生姓名IDC_CMBXSXBCombo Box(组合框),用于显示和设置学生性别。设置Ty

4、pe属性为Drop down,用户只可以进行选择,并将Data属性设置成”male|female”(先填入male,然后“ctrl+Enter”换行填入female)IDC_EDTCSRQEdit Box(编辑框),用于显示和输入出生日期IDC_EDTBJMCEdit Box(编辑框),用于显示和输入班级名称IDC_BTNFIRSTButton(按钮) ,标题Caption设为”First”,用于将记录指针移到首部IDC_BTNPRIORButton(按钮) ,标题Caption设为”Prior”,用于将记录指针向前移动一个IDC_BTNNEXTButton(按钮) ,标题Caption设为”

5、Next”,用于将记录指针向后移动一个IDC_BTNLASTButton(按钮) ,标题Caption设为”Last”, 用于将记录指针移到尾部IDC_BTNADDButton(按钮) ,标题Caption设为”Add”, 用于添加新记录IDC_BTNEDITButton(按钮) ,标题Caption设为”Edit”, 用于编辑旧记录IDC_BTNCANCELButton(按钮) ,标题Caption设为”Cancel”,用于恢复所作的添加或修改IDC_BTNSAVEButton(按钮) ,标题Caption设为”Save”, 用于保存所作的添加或修改IDC_BTNDELETEButton(按

6、钮) ,标题Caption设为”Delete”,删除当前记录4. 为4个Edit Box(编辑框)和一个Combo Box(组合框)关联成员变量。在编辑框上点右键,选择“ClassWizard”,如图6。图6 “Class Wizard” 在打开的类向导编辑框,点击“Member Variables”标签,为4个Edit Box(编辑框) 和一个Combo Box(组合框)关联成员变量,如图7所示。 关联方法:双击控件的”Control IDs”,打开对话框,按照下表2输入类型和成员变量名称。表2 关联列表ID名称类型变量名IDC_EDTXSBHCString m_xsbhIDC_EDTXSX

7、MCStringm_xsxmIDC_CMBXSXBCStringm_xsxbIDC_EDTCSRQCStringm_csrqIDC_EDTBJMCCStringm_bjmc图7 对应关联5. 定义学生基本信息结构。 在对话框头文件(FileExamDlg.h)中定义学生基本信息结构,定义的结构如下(此段代码添加到对话框类CFileExamDlg定义之前): #pragma pack(push,1)/定义学生基本信息结构typedef struct _CStudentData TCHAR xsbh7; /学生编号 TCHAR xsxm21; /学生姓名 TCHAR xb10; /学生性别 TCH

8、AR csrq11; /出生日期 TCHAR bjmc21; /班级名称CStudentData;#pragma pack(pop)接着再定义一个全局常量来表示存储学生信息的文件名(此段代码添加到对话框类CFileExamDlg定义之前)。const LPCTSTR STUDENTFILEPATH = _T(My Documentsstudent.dat);6. 定义私有变量。定义一个列表以存储学生的基本信息,因此在对话框类中添加如下代码以定义私有变量 (添加到类CFileExamDlg的定义文件FileExamDlg.h,注意:放到类CFileExamDlg的里面)private: /定义存

9、储学生数据表的队列 CList m_lstStudent; /定义操作标识, 0 - 代表添加; 1 - 代表编辑 int m_operID ; /存储指针位置 int m_iCurPos; 7. 添加头文件。在对话框头文件(FileExamDlg.h)中加上#include 这句代码,因为我们声明的列表变量用到了标准模板库。(放在”#endif / _MSC_VER = 1000”之后)8. 定义私有方法。为对话框类添加两个私有方法SetControlEnable和SetNavigatorButton,分别用于设置窗体上控件的有效性和指针移动按钮的有效性,他们的声明代码如下:(添加到类CFi

10、leExamDlg的定义文件FileExamDlg.h,注意:放到类CFileExamDlg的里面)private:/设置控件有效性void SetControlEnable(bool aValue);/设置指针移动按钮的有效性void SetNavigatorButton(int aValue);以上两个方法的实现代码如下:(添加到FileExamDlg.cpp中)/*函数介绍:设置控件有效性*入口参数:aValue代表控件的有效性*出口参数:(无)*返回值:(无)*/void CFileExamDlg:SetControlEnable(bool aValue) /*设置输入框的有效性*/

11、(CEdit*)GetDlgItem(IDC_EDTXSBH)-EnableWindow(aValue); (CEdit*)GetDlgItem(IDC_EDTXSXM)-EnableWindow(aValue); (CEdit*)GetDlgItem(IDC_CMBXSXB)-EnableWindow(aValue); (CEdit*)GetDlgItem(IDC_EDTCSRQ)-EnableWindow(aValue); (CEdit*)GetDlgItem(IDC_EDTBJMC)-EnableWindow(aValue); /*设置指针移动按钮的有效性*/ (CButton*)Get

12、DlgItem(IDC_BTNFIRST)-EnableWindow(!aValue); (CButton*)GetDlgItem(IDC_BTNPRIOR)-EnableWindow(!aValue); (CButton*)GetDlgItem(IDC_BTNNEXT)-EnableWindow(!aValue); (CButton*)GetDlgItem(IDC_BTNLAST)-EnableWindow(!aValue); /*设置操作按钮的有效性*/ (CButton*)GetDlgItem(IDC_BTNADD)-EnableWindow(!aValue); (CButton*)Ge

13、tDlgItem(IDC_BTNEDIT)-EnableWindow(!aValue); (CButton*)GetDlgItem(IDC_BTNCANCEL)-EnableWindow(aValue); (CButton*)GetDlgItem(IDC_BTNSAVE)-EnableWindow(aValue); (CButton*)GetDlgItem(IDC_BTNDELETE)-EnableWindow(!aValue);/*函数介绍:设置指针移动按钮的有效性*入口参数:aValue代表当前记录位置*出口参数:(无)*返回值:(无)*/void CFileExamDlg:SetNavi

14、gatorButton(int aValue) /如果学生队列数据小于2 if (m_lstStudent.GetCount() EnableWindow(FALSE); (CButton*)GetDlgItem(IDC_BTNPRIOR)-EnableWindow(FALSE); (CButton*)GetDlgItem(IDC_BTNNEXT)-EnableWindow(FALSE); (CButton*)GetDlgItem(IDC_BTNLAST)-EnableWindow(FALSE); return; /指针移到首部 if (aValue = 0) (CButton*)GetDlg

15、Item(IDC_BTNFIRST)-EnableWindow(FALSE); (CButton*)GetDlgItem(IDC_BTNPRIOR)-EnableWindow(FALSE); if (m_lstStudent.GetCount() =2) (CButton*)GetDlgItem(IDC_BTNNEXT)-EnableWindow(TRUE); (CButton*)GetDlgItem(IDC_BTNLAST)-EnableWindow(TRUE); /如果指针移到末尾 else if (aValue = m_lstStudent.GetCount() - 1) (CButto

16、n*)GetDlgItem(IDC_BTNNEXT)-EnableWindow(FALSE); (CButton*)GetDlgItem(IDC_BTNLAST)-EnableWindow(FALSE); if (m_lstStudent.GetCount() =2) (CButton*)GetDlgItem(IDC_BTNFIRST)-EnableWindow(TRUE); (CButton*)GetDlgItem(IDC_BTNPRIOR)-EnableWindow(TRUE); else (CButton*)GetDlgItem(IDC_BTNFIRST)-EnableWindow(TR

17、UE); (CButton*)GetDlgItem(IDC_BTNPRIOR)-EnableWindow(TRUE); (CButton*)GetDlgItem(IDC_BTNNEXT)-EnableWindow(TRUE); (CButton*)GetDlgItem(IDC_BTNLAST)-EnableWindow(TRUE); 9. 添加指针移动按钮的单击事件代码。在对话框窗体上直接双击按钮,EVC便会自动创建它的单击方法声明。其中”First”、 ”Prior”、 ”Next” 、 ”Last”按钮的单击事件实现代码如下:/*函数介绍:将指针移到首部*入口参数:(无)*出口参数:(无)

18、*返回值:(无)*/void CFileExamDlg:OnBtnfirst() CStudentData studentData = m_lstStudent.GetHead(); m_iCurPos = 0; /更新显示 m_xsbh = studentData.xsbh; m_xsxm = studentData.xsxm; m_xsxb = studentData.xb; m_csrq = studentData.csrq; m_bjmc = studentData.bjmc; UpdateData(false); /设置指针移动按钮有效性 SetNavigatorButton(m_i

19、CurPos);/*函数介绍:将指针移向前移动*入口参数:(无)*出口参数:(无)*返回值:(无)*/void CFileExamDlg:OnBtnprior() m_iCurPos-; POSITION pos = m_lstStudent.FindIndex(m_iCurPos); CStudentData studentData = m_lstStudent.GetAt(pos); /更新显示 m_xsbh = studentData.xsbh; m_xsxm = studentData.xsxm; m_xsxb = studentData.xb; m_csrq = studentDat

20、a.csrq; m_bjmc = studentData.bjmc; UpdateData(false); /设置指针移动按钮有效性 SetNavigatorButton(m_iCurPos);/*函数介绍:将指针向后移动*入口参数:(无)*出口参数:(无)*返回值:(无)*/void CFileExamDlg:OnBtnnext() m_iCurPos+; POSITION pos = m_lstStudent.FindIndex(m_iCurPos); CStudentData studentData = m_lstStudent.GetAt(pos); /更新显示 m_xsbh = st

21、udentData.xsbh; m_xsxm = studentData.xsxm; m_xsxb = studentData.xb; m_csrq = studentData.csrq; m_bjmc = studentData.bjmc; UpdateData(false); /设置指针移动按钮有效性 SetNavigatorButton(m_iCurPos);/*函数介绍:将指针移到尾部*入口参数:(无)*出口参数:(无)*返回值:(无)*/void CFileExamDlg:OnBtnlast() CStudentData studentData = m_lstStudent.GetT

22、ail(); m_iCurPos = m_lstStudent.GetCount() - 1; /更新显示 m_xsbh = studentData.xsbh; m_xsxm = studentData.xsxm; m_xsxb = studentData.xb; m_csrq = studentData.csrq; m_bjmc = studentData.bjmc; UpdateData(false); /设置指针移动按钮有效性 SetNavigatorButton(m_iCurPos);10. 添加“添加”、“编辑”、“恢复”、“保存”、“删除”按钮的单击事件代码。在对话框窗体上直接双击

23、按钮,EVC便会自动创建它的单击方法声明。其中”Add”、 ”Edit”、 ”Cancel” 、 ”Save” 、 ”Delete”按钮的单击事件实现代码如下:/*函数介绍:添加新记录*入口参数:(无)*出口参数:(无)*返回值:(无)*/void CFileExamDlg:OnBtnadd() m_operID = 0 ; /表示添加操作 m_xsbh = _T(); m_xsxm = _T(); m_xsxb = _T(); m_csrq = _T(); m_bjmc = _T(); UpdateData(FALSE); SetControlEnable(TRUE);/*函数介绍:编辑旧记

24、录*入口参数:(无)*出口参数:(无)*返回值:(无)*/void CFileExamDlg:OnBtnedit() if (m_lstStudent.IsEmpty() AfxMessageBox(_T(No record can be Edited!); return; m_operID = 1 ; /表示编辑操作 SetControlEnable(TRUE);/*函数介绍:保存修改或添加*入口参数:(无)*出口参数:(无)*返回值:(无)*/void CFileExamDlg:OnBtnsave() CStudentData studentData; CFile stuFile; Upd

25、ateData(TRUE); switch (m_operID ) case 0 : /*添加操作*/ /*将添加的东西写入文件*/ ZeroMemory(&studentData,sizeof(studentData); wcscpy(studentData.xsbh,m_xsbh); wcscpy(studentData.xsxm,m_xsxm); wcscpy(studentData.xb,m_xsxb); wcscpy(studentData.csrq,m_csrq); wcscpy(studentData.bjmc,m_bjmc); stuFile.Open(STUDENTFILEP

26、ATH,CFile:modeRead | CFile:modeWrite); stuFile.SeekToEnd(); stuFile.Write(&studentData,sizeof(studentData); stuFile.Close(); /更新内存队列 m_lstStudent.AddTail(studentData); SetControlEnable(FALSE); /设置指针移动按钮有效性 m_iCurPos = m_lstStudent.GetCount()-1; SetNavigatorButton(m_iCurPos); break; case 1: /*编辑操作*/

27、/*将添加的东西写入文件*/ ZeroMemory(&studentData,sizeof(studentData); wcscpy(studentData.xsbh,m_xsbh); wcscpy(studentData.xsxm,m_xsxm); wcscpy(studentData.xb,m_xsxb); wcscpy(studentData.csrq,m_csrq); wcscpy(studentData.bjmc,m_bjmc); stuFile.Open(STUDENTFILEPATH,CFile:modeRead | CFile:modeWrite); stuFile.Seek(

28、sizeof(studentData)*(m_iCurPos) ,CFile:begin); stuFile.Write(&studentData,sizeof(studentData); stuFile.Close(); /更新内存队列 m_lstStudent.SetAt(m_lstStudent.FindIndex(m_iCurPos),studentData); SetControlEnable(FALSE); /设置指针移动按钮有效性 SetNavigatorButton(m_iCurPos); break; /*函数介绍:取消修改或添加*入口参数:(无)*出口参数:(无)*返回值:

29、(无)*/void CFileExamDlg:OnBtncancel() POSITION pos = m_lstStudent.FindIndex(m_iCurPos); CStudentData studentData = m_lstStudent.GetAt(pos); /更新显示 m_xsbh = studentData.xsbh; m_xsxm = studentData.xsxm; m_xsxb = studentData.xb; m_csrq = studentData.csrq; m_bjmc = studentData.bjmc; UpdateData(false); SetControlEnable(FALSE); /设置指针移动按钮有效性 SetNavigatorButto

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

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