MFC课程设计以及对xm文件的操作
2016-08-31 16:42
218 查看
废话不说,进入正题,为了简便请调整项目属性为使用多字节字符集
tinyxml文件下载地址,(操作xml文件的)
http://sourceforge.net/projects/tinyxml/(如无法下载微信找我)
一些函数功能
ValueStr //返回元素名称
SetValue //设置元素名称
Parent //返回父节点对象
FirstChild //返回第一个子节点
LastChild //返回最后一个子节点
IterateChildren //返回下一个子节点
InsertEndChild //在最后一个子节点后插入子节点
InsertBeforeChild //在指定的子节点前插入子节点
InsertAfterChild //在指定的子节点后插入子节点
ReplaceChild //替换指定的子节点
RemoveChild //删除指定的子节点
Clear //删除所有的子节点
PreviousSibling //返回同级中前一个节点
NextSibling //返回同级中后一个节点
NextSiblingElement //返回同级中后一个元素
FirstChildElement //返回第一个子元素节点
Attribute //返回元素中的属性值
QueryValueAttribute //返回元素中的属性值
SetAttribute //设置元素中的属性值
FirstAttribute //返回元素中第一个属性对象
LastAttribute //返回元素中最后一个属性对象
RemoveAttribute //删除元素中指定的属性对象
tinyxml的添加
首先,将下载的文件解压复制到原项目目录,
然后,在解决方案中头文件添加现有项,添加进去。
接下来,在stdafx.h中包含两个头文件。
mfc中xml文件的使用
第一步:建立对话框,添加CString变量(与编辑框关联起来).
第二步,(信息录入)添加按钮处理消息(双击按钮即可),利用UpdataeData()更新数据,将数据录入xml文件。
第二步,(信息显示)先添加list control 控件,选择report(报表)属性,同时添加变量m_ctllist1选择control类型(默认)。
然后在OnInitDialog(void)函数中添加如下代码
然后添加刷新按钮事件处理程序
第三步,(信息查找及修改)添加查找对话框,编辑框添加变量,本例为m_Number 。查找代码如下
修改效果如下
第四步,信息删除,本例为查找账号名m_Number对该用户进行删除
至于统计什么的,就是查找与显示的变异。
第一次写,希望可以帮到一些读者。谢谢~
如有疑问咨询微信li9800914
推荐博文
http://blog.csdn.net/alan_chen_2011/article/details/7347276
tinyxml文件下载地址,(操作xml文件的)
http://sourceforge.net/projects/tinyxml/(如无法下载微信找我)
一些函数功能
ValueStr //返回元素名称
SetValue //设置元素名称
Parent //返回父节点对象
FirstChild //返回第一个子节点
LastChild //返回最后一个子节点
IterateChildren //返回下一个子节点
InsertEndChild //在最后一个子节点后插入子节点
InsertBeforeChild //在指定的子节点前插入子节点
InsertAfterChild //在指定的子节点后插入子节点
ReplaceChild //替换指定的子节点
RemoveChild //删除指定的子节点
Clear //删除所有的子节点
PreviousSibling //返回同级中前一个节点
NextSibling //返回同级中后一个节点
NextSiblingElement //返回同级中后一个元素
FirstChildElement //返回第一个子元素节点
Attribute //返回元素中的属性值
QueryValueAttribute //返回元素中的属性值
SetAttribute //设置元素中的属性值
FirstAttribute //返回元素中第一个属性对象
LastAttribute //返回元素中最后一个属性对象
RemoveAttribute //删除元素中指定的属性对象
tinyxml的添加
首先,将下载的文件解压复制到原项目目录,
然后,在解决方案中头文件添加现有项,添加进去。
接下来,在stdafx.h中包含两个头文件。
mfc中xml文件的使用
第一步:建立对话框,添加CString变量(与编辑框关联起来).
第二步,(信息录入)添加按钮处理消息(双击按钮即可),利用UpdataeData()更新数据,将数据录入xml文件。
TiXmlDocument *pDoc = new TiXmlDocument();//文件指针 const char *FileName = "res\\Number.xml";//文件名 if(!pDoc->LoadFile(FileName)) { UpdateData(TRUE); TiXmlElement *RootElement = NULL;//根节点 TiXmlElement *PersonElement = NULL;//子节点 TiXmlDeclaration *pTd = new TiXmlDeclaration("1.0", "gb2312", "yes" ); pDoc->LinkEndChild(pTd); RootElement = new TiXmlElement("账号数据"); pDoc->LinkEndChild(RootElement); } else{ RootElement = pDoc->RootElement(); } PersonElement = new TiXmlElement("用户"); RootElement->LinkEndChild(PersonElement); TiXmlElement *NameElement = new TiXmlElement("账号"); PersonElement->LinkEndChild(NameElement); TiXmlText *Number = new TiXmlText([要存的数据]);//存的数据可为CString类型 NameElement->LinkEndChild(Number); TiXmlElement *PassWordElement = new TiXmlElement("密码"); PersonElement->LinkEndChild(PassWordElement); TiXmlText *PassWord = new TiXmlText([要存的数据]);//存的数据可为CString类型 PassWordElement->LinkEndChild(PassWord); //你有几项就弄几段上面的代码,本例为两项数据 pDoc->SaveFile(FileName);效果如下
第二步,(信息显示)先添加list control 控件,选择report(报表)属性,同时添加变量m_ctllist1选择control类型(默认)。
然后在OnInitDialog(void)函数中添加如下代码
DWORD dwStyle = m_ctllist1.GetExtendedStyle(); //添加列表框的网格线!!! dwStyle |= LVS_EX_FULLROWSELECT; dwStyle |= LVS_EX_GRIDLINES; m_ctllist1.SetExtendedStyle(dwStyle); //list control 的初始化 m_ctllist1.InsertColumn(0,"车牌",LVCFMT_CENTER,80); m_ctllist1.InsertColumn(1,"进入时间",LVCFMT_CENTER,120); m_ctllist1.InsertColumn(2,"停车时间",LVCFMT_CENTER,120); m_ctllist1.InsertColumn(3,"应缴费用",LVCFMT_CENTER,100); m_ctllist1.InsertColumn(4,"备注",LVCFMT_CENTER,220);数值为长度,如未发现此函数,请在类向导中虚函数添加该函数。运行效果如下
然后添加刷新按钮事件处理程序
TiXmlDocument * myDocument = new TiXmlDocument(); if (!myDocument->LoadFile("res\\Number.xml")) { return ; } TiXmlElement *RootElement = myDocument->RootElement(); TiXmlElement *FirstElement = RootElement->FirstChildElement(); //循环遍历 for (int i=0;FirstElement;i++) { TiXmlElement *NameElement = FirstElement->FirstChildElement(); m_ctllist1.InsertItem(i,NameElement->GetText());//设置列表框第0行第0列数据 //显示进车时间 TiXmlElement *DateElement = NameElement->NextSiblingElement(); const char *temp = DateElement-><pre name="code" class="html">GetText();m_ctllist1.SetItemText(i,1,temp);//设置列表框第0行第1列数据FirstElement = FirstElement->NextSiblingElement();}
第三步,(信息查找及修改)添加查找对话框,编辑框添加变量,本例为m_Number 。查找代码如下
const char *FileNmae = "res\\Number.xml"; TiXmlDocument *pDoc = new TiXmlDocument(); if (pDoc->LoadFile(FileNmae)) { TiXmlElement *RootElement = pDoc->RootElement(); TiXmlElement *SonElement = RootElement->FirstChildElement(); TiXmlElement *NumberElement = NULL; TiXmlElement *passWordElement = NULL; while (SonElement) { NumberElement = SonElement->FirstChildElement(); if (NumberElement->GetText() == m_Number)//查找成功判断之后 { } SonElement=SonElement->NextSiblingElement(); }信息查找修改代码如下,本例为查找用户名为m_Number修改密码为m_PassWord.两个变量都为编辑框CString类型
const char *FileNmae = "res\\Number.xml"; TiXmlDocument *pDoc = new TiXmlDocument(); if (pDoc->LoadFile(FileNmae)) { TiXmlElement *RootElement = pDoc->RootElement(); TiXmlElement *SonElement = RootElement->FirstChildElement(); TiXmlElement *NumberElement = NULL; TiXmlElement *passWordElement = NULL; while (SonElement) { NumberElement = SonElement->FirstChildElement(); if (NumberElement->GetText() == m_Number) { if (IDYES == MessageBox("该账号已存在,继续操作将覆盖","是否继续?",MB_YESNO|MB_ICONWARNING)) { passWordElement = NumberElement->NextSiblingElement(); TiXmlNode *PassWord = passWordElement->FirstChild(); PassWord->SetValue(m_PassWord); pDoc->SaveFile(FileNmae); MessageBox("密码修改成功,下次登录生效"); } goto end; } SonElement=SonElement->NextSiblingElement(); } }
修改效果如下
第四步,信息删除,本例为查找账号名m_Number对该用户进行删除
const char *FileName = "res\\Number.xml"; TiXmlDocument *pDoc = new TiXmlDocument(); if (!pDoc->LoadFile(FileName)) { MessageBox("Number.xml文件损坏","加载失败",MB_OK | MB_ICONWARNING); return ; } else { TiXmlElement *RootElement = pDoc->RootElement(); TiXmlElement *PersonElement = RootElement->FirstChildElement(); TiXmlElement *NumberElement = PersonElement->FirstChildElement(); TiXmlElement *PassWordElement = NumberElement->NextSiblingElement(); while (PersonElement) { NumberElement = PersonElement->FirstChildElement(); if (NumberElement->GetText() == m_Number) { RootElement->RemoveChild(PersonElement); MessageBox("删除成功"); break; } else { PersonElement = PersonElement->NextSiblingElement();//节点后移 } } pDoc->SaveFile(FileName); }
至于统计什么的,就是查找与显示的变异。
第一次写,希望可以帮到一些读者。谢谢~
如有疑问咨询微信li9800914
推荐博文
http://blog.csdn.net/alan_chen_2011/article/details/7347276
相关文章推荐
- MFC 对文件以及文件夹操作
- MFC 中打开 文件,文件夹,以及删除文件,文件夹操作
- python课程设计通讯录txt文件操作
- MFC 中打开 文件,文件夹,以及删除文件,文件夹操作
- MFC 中打开 文件,文件夹,以及删除文件,文件夹操作
- mfc 操作,添加menu资源,默认为IDR_MENU1...要修改为其他的名字则,在资源里头文件resourse.h中 加 #define IDR_OPEN_SHAP 130,然后打开资源文件shp_show.rc->查看代码,把menu1修改为IDR_OPEN_SHAP
- 操作系统课程设计(二)简单文件系统实现
- MFC对文件的操作
- RHCE课程-RH033Linux基础笔记三之文件以及文件权限 推荐
- 系列4:文件操作以及读写文件
- 简单的linux下的文件以及目录操作封装
- zz:MFC文件操作CFile
- 用JS读取.txt文件方法以及一个操作.txt文件通用类方法【深海原创】
- MFC中文件及目录操作
- MFC文件操作
- Winform中多国语言窗体的设计以及.NET中资源文件的使用
- Winform中多国语言窗体的设计以及.NET中资源文件的使用
- 初步认识freemarker以及文件的操作
- Winform中多国语言窗体的设计以及.NET中资源文件的使用
- 利用application,cookies,sessino以及文件文件操作制作计数器和投票的综合实例(按学习进程更新)