MFC新手学生成绩系统 查询功能 求救 急

guanxuan577800 2015-11-04 07:09:21
本人是一名大二的小白 因为要完成课设刚刚接触MFC 想做一个学生信息系统管理
我使用的是LISTCONTROL做信息列表显示 已经完成了列表信息的添加和删除功能的实现 但是不懂怎么做查询功能
我想要在(FIND)的DIALOG里面输入_学号 然后点击按钮 就能够在编辑框_弹出他的其他信息(姓名、性别、成绩等等)是调用回LISTCONTROL中显示出来我在(ADDINFO)DIALOG里输入的信息
整个程序是从网上找教程 扒帖子 看书 慢慢做起来 在论坛里扒了很多帖子都不是太懂,去看了别人程式 真心想学东西 没有抄袭 但是也看不太懂别人程序里这样写的意思 有很多不同的说法 例如使用GETITEMTEXT 可以查询 貌似整个程序不涉及到数据库的使用 所以应该不是很复杂 但是我不懂究竟应该怎么做虽然这个是老题目了 但希望能有大神给我指点一下 到底具体应该怎么做
...全文
872 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tom毛毛 2018-01-16
还可以。 。
回复
xiaoshidelucao 2017-09-07
请问这段代码在哪个下面编辑呢?我在查询按钮的函数下编辑一直显示都是查无此记录,查不到啊?
回复
guanxuan577800 2015-11-07
感谢上面两位的热心解答 抱歉今天去兼职了 结贴晚了 真的不好意思 最后 我使用了 X攻城狮 大神给的建议 尝试了几次 终于成功了 先分享一下这部分的运行代码
int iRow = List.GetItemCount();//假设你已经设了List Control变量
	CString szId;; //获取输入的学号,假设你的学号是字符串类型
 GetDlgItem(IDC_EDIT1)->GetWindowText(szId); 
for(int i=0; i<iRow; i++) 
{ CString str =List.GetItemText(i,2);//获得每一行的第二列的内容,也就是学号 
if(szId == str)//表示查找到 
{ GetDlgItem(IDC_EDIT2)->SetWindowText(List.GetItemText(i,0));
 GetDlgItem(IDC_EDIT3)->SetWindowText(List.GetItemText(i,1)); 
 GetDlgItem(IDC_EDIT1)->SetWindowText(List.GetItemText(i,2)); 
 GetDlgItem(IDC_EDIT4)->SetWindowText(List.GetItemText(i,3)); 
 GetDlgItem(IDC_EDIT5)->SetWindowText(List.GetItemText(i,4)); 
 GetDlgItem(IDC_EDIT6)->SetWindowText(List.GetItemText(i,5)); } 
if(szId != str)//表示查找到 
	this->MessageBox(L"查无此记录",L"Error");
		return;
} 
刚开始拿到 X攻城狮大神给的参考并不懂 稍作解释一下 可能有错 还请指正 查找的编辑框必须与Listctrl要在同一个Dialog下 不然会报错 运行失败 再次真心感谢 X攻城狮以及回帖的各位 也希望这部分能够对其他用MFC做学生成绩系统 查找部分的同学有所帮助 拜谢!
回复
guanxuan577800 2015-11-05
看不太懂 GetDlgItem(控件ID)->SetWindowTextW(显示的内容);这个应该怎么写 控件的ID是指LISTCTRL的ID 还是显示信息编辑框的ID (显示的内容)呢?这个应该怎么填 查了msdn里面没有这个项 真的急 求解答
回复
笨笨仔 2015-11-05
如果批件变量是m_List1,那么可试试 GetParent()->m_List1 方式调用
回复
笨笨仔 2015-11-05
如果你的查询窗口是使用DoModal调用的模态窗口,那么你可以在查询中使用主窗口的指针调用ListCtrl控件进行数据查询,可以先为ListCtrl控件建立一个Public的控件变量。
回复
guanxuan577800 2015-11-05
3L的说法 能不能具体一点 我的LISTCTRL 已将其定义了变量为List 然后如何能够使用指针查询 希望能够提供关键字 或者源代码参考一下 万分感谢
回复
我是黄老邪 2015-11-04
1. 获取List Control的行数,方法GetItemCount() 2. 循环获取每一行要查询的关键值所在的那一列的值(行列值),方法GetItemText(行,列),与你要查的值作比较 3. 如果相等,就把这一行的输出到对应的编辑框中显示,GetDlgItem(控件ID)->SetWindowTextW(显示的内容); 4. 如果不相等,就继续查询下一行。
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2015-11-04 07:09
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……