MFC学生信息管理系统详解

上传人:jin****ng 文档编号:110349795 上传时间:2022-06-18 格式:DOC 页数:12 大小:318KB
返回 下载 相关 举报
MFC学生信息管理系统详解_第1页
第1页 / 共12页
MFC学生信息管理系统详解_第2页
第2页 / 共12页
MFC学生信息管理系统详解_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
面向对象程序课程设计报告题目:学生信息管理系统班级:学号:姓名:成绩:指导教师日期: 2012 年 6 月 21 日报告内容、程序功能1) 学生基本信息录入功能(输入的学生信息用磁盘文件保存)2) 学生信息查询功能3) 学生信息排序功能4) 学生信息的删除与修改学生信息包括:姓名、性别、学号、出生年月、手机号码、班级、已经获得学分等、课题分析设计一个基于MFC对话框的C+应用程序开发,因此要 创建一个主对话框,和一些必要的子对话框。在主对话框中 添加列表控件用来显示学生的基本信息,并且列表控件有较 强的数据处理函数。因此选择列表控件。对于学生信息的录 入,查询,排序,删除与修改都用按钮控件,并为每个按钮 添加消息响应函数用来处理学生的信息操作。对于录入功能, 可以为它设置一个子对话框来填写学生基本信息。综上所述,必须先掌握按钮控件,列表控件,新对话框 的构建,编辑控件和消息的响应与处理原理!以上就是设计思路!接下来就是要把学生的基本信息能够保存下来,因此要 用到文件的操作, fstream 可以满足要求。三、设计中的问题与解决方法问题1:在录入学生信息时,当已经存在此学生能够识别的来。由于要在子窗口中调用父窗口的数据成员,他们是不同的对话框 类,因此操作起来不容易。解决方法:可以在子窗口中得到父窗口的指针,这样就能得到父 窗口的成员。CMyDlg *dlga=(CMyDlg*)GetParent();/得到主对话框的指针问题 2:删除与修改操作时怎么得到要删除与修改的学生信息解决方法:由于列表控件有强大的数处理函数,当点击那一条记 录时,会有一个被选中的消息,这样就可以用它来判断要修改和删除 的是哪个学生。问题 3:怎么进行排序操作,因为数据是放在列表控件的,并且 每一个学生都有较多的信息。解决方法:用到结构体来存放学生的信息,排序的话可以通过结 构体的冒泡排序实现。过程是先从列表控件中得到所有学生的信息存 放在结构体数组里,然后进行冒泡排序,最后再放回列表控件中。四、测试数据组(含数据测试及结果)导入操作:姓名I性别I班级I学号I出生年月I手机号码 I已菽学分 |华友雄驰 籍鹏学林均星 刘子张定梁周男男男女男女O1a 一回回回回骨信 g1g1g1g1e1gi TIT TIT HT TH TH TH3110002982 311000888 1202 3110009993110002984 1111111991-99-1660129.92030-2-2999911-1111162010-11-111061991-11-911111-11-119090909091录入操作:输入学生信息学生信息 姓名 性别 班级 学号岀生年月 手机号码 已获学分I男22222手机号码6601299911111101305442490909090输入学生信息不全!确圭取消|已菽学分:姓名性别班级学号311111211221确运取消确定区I学生信息管理系境 删刪作:输入学生信息学生信息删除成绩排序学生信息出生年月手机号码己获学分909090909此学生记录已经存在!学生信息修改诘先选挥要删除的学生!学生信息管理系编选中就可以删除了学生信息删除eio ( 4)linn修改操作:先选中学生接着按下修改按钮排序操作:按下排序就可以根据学分进行排序学生信息保存:学生信息查询:成功查询结果已获学分:卩出生年月:|1991-11-9对LiH控件的初始化操作mMessageBox(系统提示:请先専人竽生信息?亍;list.InsertColumn(0, list.InsertColumn(1 list.InsertColumn(2 list.InsertColumn(3 list.InsertColumnfU, list.InsertColumn(5 list.InsertColumn(6班级:囘訶五、感想和心得通过这次的 C+ 课程设计,了解了 windows 的消息机制。学会通过MFC的对话框设计学生信息管理系统。其中也包 含了许多知识,文件操作,按键的消息响应处理,对话框的 创建,对话框的消息传递。排序算法。以及强大的列表控件 的使用。六、参考文献Visual C+ 6.0 使用教程 附录:源程序代码(含注释) 初始化列表控件:list.SetExtendedStyle(LUS_EX_GRIDLINES|LUS_EX_FULLROWSELECT)妊名,LUCFMT_LEFT ,80,-1)?性别.LUCFMTZLEFT,40,-1); 班 .LUCFMT-LEFT,90,-1); ,LyCFMT_LEFT,120,-1); 由星年月,LUCFMT_LEFT,100,-1); 手机守稿“,LUCFMT_LEFT 己获学分,LUCFMT_LEFT,80,-1);学生信息录入:sex): grade); number); birthday); telephone); getpoint);uoid CMDlg: :0nBUTT0Nluru()学生信息、录入/ TODO: Add you广 control notification handler code here Inputrecord dig;if(IDOK=dlg.DoModal()每次都在第一个记录处插入list - InsertItem(0,dig-m name);list-SetItemText(0,1vdlg.m list-SetItemText(0,2,dig-m list-SetItemText(0,3,dig-m list-SetItemText(0,4,dig-m list-SetItemText(0,5,dig-m list-SetItemText(0,6,dig-m删除学生信息:uoid CMyDlg:OnBUTTONdelete()删除所选择的学生记录/ TODO: Add your control notification handler code here int i;BOOL Findok=FflLSE;for(i=0;i退出本系统操作:uoid CMyDlg: :0nBUTT0Nexit()退出系统/ TODO: Add your control notification handler code here MessageBox(谢使用本系统(版权所有)?);EndDialog(0);学生信息保存:uoid CMyDlg: :0nBUTT0Nsaue()学生信息保存/ TODO: Add your control notification handler code hereString str;fstream outfilefstudent .txt ,ios: :out);输出方式打开,内存输出到文件每次都会覆盖原有内容 int count=m_list tEnEount();for(int i=count-1;i=0;i-)For(int j=0;j7;j+)str=n_list.GetltenTextfi,j);str+=v ;outfilestr;outFileendl;把字符串写进文件outfile closef);MessageBox(文祚保存成功?);学生信息导入:uoid CMyDlg: :0nBUTT0Ndaoru()学生信息导入/ TODO: Add your control notification handler code hereBOOL end=FALSE;是否已经读到末尾了char p100;定义数组存敢缓冲数组int row=0,colunin=0;Fstream inFilefstudent.txt,ios:in|ios:nocreate); 打开文件 iF(tinFile)MessageBox(您没有保存过信息?“);return;while(1)m list. Insertlteni(i_list .GetltemCountO ,NULL,NULL);For(colunin=0;coluin7 ;colunin+) iF(?(inFilep)每遇到空格停一下判断是否为读到文件的末尾end=TRUE;break;结束For循坏m list .SetIteniText(row,coluin ,p);row+;iF(TRUE=end)break;结束while循坏inFile.close();学生信息查找:查找学生记录uoid CMi/Dlg : zOnBUTTONFindO/ TODO: Add iour control notification handler code here int i;BOOL temp=FALSE;用来标识找到匹配学生没有UpdateData(TRUE);窗口更新到变量for(i=0;im_list .GetltemCountO ;i+)/得到总学生数目if(m Fname=m list.GetItemText(i,0)当查找匹配是就输出到编辑框m_Fsex=m_list.Get ItemText(i,1); m_Fgrade=m_list.GetItemText(i,2); m_Fnumber=n_list .GetltemText(i ,3);m_Fbirthday=m_list.GetItemText(i,4); m_Ftelephone=n_list .GetltemText(i ,5); m_Fgetpoint=m_list.GetItemText(i,6);UpdateData(FALSE); temp=TRUE;break;if(temp=FALSE)/找不到就输出消息框Fsex=; Fgrade=; Fnumber=; Fbirthday=; Ftelephone=;Fgetpoint= UpdateData(FALSE);MessageBox(没有此学生的记录计);ITmmmmm排序实现函数:uoid paixu(student_recordn)排序实现函数student record t; studentrecord *p;For(int pass=0;passn-1 ;pass+)毛冒泡排序过程P=st;For(int i=0;igetpoint,(p+1)-getpoint)P+;成绩排名实现:uoid CMyDlg : :0nBUTT0Npaixu()成绩排名/ TODO: Add your control notification handler code here int number;student_record *pt:结构体指针存放第一条记录的地址number=m_list.GetItemCount();student_record stud2O0;Forint i=0;inunber;i+) 先把所有学生信息放到结构体数组中 studi.name=m_list.GetItemText(i,0);studi.sex=m_list.GetItemText(i,1);studi.grade=m_list.GetItemText(i,2);studi.number=m_list.GetItemText(i,3);studi.birthday=m_list.GetItemText(i,4);studi.telephone=m_list.GetItemText(i,5);studi.getpoint=m_list.GetItemText(i,6);pt=stud;paixu(pt,number);调用冒泡排序函数m_list .DeleteAllItemsO ;Forint j = 0;jnunber;j+)再输岀到列表控件中 m_list.Insertltem(j,studj.name);m_list.SetItemText(j,1,studj.sex);m_list.SetItemText(j,2,studj.grade);m_list.SetItemText(j,3,studj.number); m_list.SetItemText(j,4,studj.birthday);m_list.SetItemText(j,5,studj.telephone); m_list.SetItemText(j,6,studj.getpoint);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!