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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

mfc课程设计报告.docx

1、mfc课程设计报告 课 程 设 计 报 告 课题: 基于MFC学生成绩管理系统 院系: 数学与计算机学院 专业: 软件工程1203 * 学号: * 日期: 2014.12.20 学生信息管理系统一、设计任务与目标 1.了解MFC应用向导所生成应用程序的基本结构; 2.掌握对话框编程的一般方法; 3.学习用类向导添加消息响应函数及控件关联变量; 4.掌握Windows通用控件使用方法; 5.了解Windows通用对话框编程的使用方法 二、方案设计与论证 项目名称: student ,选择对话框应用程序框架。本程序中管理的学生信息包括:学号、 姓名、性别、专业、年级、出生年月。 在第一个对话框里使

2、用控件工具创建控件完成登录界面 1. 设置对话框IDD_STUDENT_DIALOG 调出MFC Wizard在 menber variables设置文本框的类型与成员名称,实现消息映射,实现登录过程中用户名和密码的输入,在创建的button中添加代码实现登录功能。 2.设置对话框IDD_DIALOG1 在对话框中添加四个按钮,分别实现调用对话框实现学生信息的录入、查询、删除和退出程序 3.设置对话框IDD_INFOR_DIALOG1 在对话框中添加控件,调出MFC Wizard在 menber variables设置文本框的类型与成员名称其他对话框的设置也类似。 4.对话框之间使用模态对话框

3、,先将个对话框之间实现互相调用。三、程序框图或流程图,程序清单与调用关系四、全部源程序清单 1.登录模块 在登录对话框的按钮中添加代码 头文件#include stdafx.h#include Student.h#include StudentDlg.h#include infor.h#include /文件void CStudentDlg:OnOK() / TODO: Add extra validation here UpdateData(TRUE); char name50; char pwd50; CString aa; ifstream mf(password.txt); /打开保存

4、密码的文件 mf.getline (name,sizeof(name); /获取 mf.getline (pwd,sizeof(pwd); aa=name; if(m_name.IsEmpty() /假如名字为空弹出窗口 MessageBox(用户名不能为空,请输入用户名!,注意); return; else if(m_password.IsEmpty() AfxMessageBox(密码不能为空,请输入密码!); return; ifstream f(password.txt); while(!f.eof() /直到0结束 /for(int i=1;i30;i+) / f.getline (

5、name,sizeof(name); f.getline (pwd,sizeof(pwd) if(m_name=name&m_password=pwd) /假如用户名密码正确,showwindow UpdateData(FALSE); ofstream mf(password.txt); mfm_namenm_passwordn; m_jdt.ShowWindow(SW_SHOW); mf.close (); for(int kk=0;kkm_strName = m_sName; stu-m_strMajor = m_sMajor; stu-m_strGrade = m_sGrade; stu

6、-m_strDate = m_sBirthday; string temp; if(m_cMale.GetCheck() temp = 男; else temp = 女; ofstream ou; /是从内存到硬盘 ou.open(record.txt, ios:app); / 选择附加模式。以追加的方式打开文件 ou left; ou setw(20) m_strID; ou setw(20) m_strName; if(m_cMale.GetCheck() temp = 男; else temp = 女; ou setw(20) temp; ou setw(20) m_strMajor;

7、ou setw(20) m_strGrade; ou setw(20) m_strDate; ou m_strID = m_sNum; string temp; ifstream in(record.txt); while(in temp) if(temp = stu-m_strID) flag = 1; MessageBox(该学号已存在!, 注意); in.close(); m_sNum = ; UpdateData(false); / 只将学号清空,其余信息保留 return; in.close(); / 说明该学生信息还没存档,以下将其信息存档 write(stu); delete s

8、tu; MessageBox(录入完毕!, 成功); clean(); / 清空表格 / TODO: Add extra validation here / CDialog:OnOK();void Cluru:clean() m_sNum = ; m_sName = ; m_sMajor = ; m_sGrade = ; m_sBirthday = ; m_cMale.SetCheck(0); m_cFemale.SetCheck(0); UpdateData(false);void Cluru:write(CStud* stu) stu-m_strName = m_sName; stu-m_

9、strMajor = m_sMajor; stu-m_strGrade = m_sGrade; stu-m_strDate = m_sBirthday; string temp; if(m_cMale.GetCheck() temp = 男; else temp = 女; ofstream ou; ou.open(record.txt, ios:app); / 选择附加模式 ou left; ou setw(20) m_strID; ou setw(20) m_strName; if(m_cMale.GetCheck() temp = 男; else temp = 女; ou setw(20)

10、 temp; ou setw(20) m_strMajor; ou setw(20) m_strGrade; ou setw(20) m_strDate; ou temp) str = m_sNum; if(temp = str) flag = 1; / 说明找到了 in temp; m_sName = temp.c_str(); / 类型转换 in temp; if(temp = 男) m_cMale.SetCheck(1); else m_cFemale.SetCheck(1); in temp; m_sMajor = temp.c_str(); in temp; m_sGrade = t

11、emp.c_str(); in temp; m_sBirthday = temp.c_str(); UpdateData(false); in.close(); break; in.ignore(1024, n); in.close(); if(!flag) MessageBox(该学生信息不存在!, 注意); m_sNum = ; UpdateData(false); 删除模块void Cdelete:OnButton1() / TODO: Add your control notification handler code here find = false; / 该变量表示是否找到 se

12、arched = true; / 该变量表示是否进行过查询 UpdateData(); clean(); / 清空上次查询结果,仅保留现在输入的学号 if(m_sNum = ) MessageBox(学号为空,无法查询!, 错误); searched = false; return; index = 0; / 表示要查找的学生信息在哪一行,作为删除的索引 ifstream in(record.txt); string temp, str; while(in temp) index+; str = m_sNum; if(str = temp) find = true; / 找到了 in temp

13、; m_sName = temp.c_str(); in temp; if(temp = 男) m_cMale.SetCheck(1); else m_cFemale.SetCheck(1); in temp; m_sMajor = temp.c_str(); in temp; m_sGrade = temp.c_str(); in temp; m_sBirthday = temp.c_str(); UpdateData(false); in.close(); break; in.ignore(1024, n); in.close(); if(!find) MessageBox(该学生信息不存

14、在!, 注意); m_sNum = ; UpdateData(false); searched = false;void Cdelete:clean() m_sMajor = ; m_sGrade = ; m_sBirthday = ; m_cMale.SetCheck(0); m_cFemale.SetCheck(0); UpdateData(false);背景添加 引入位图,为对话框添加一个变量用来设定对话框背景图片在对话框类中加入代码 CBitmap* pBitmap = new CBitmap; ASSERT(pBitmap); pBitmap-LoadBitmap(引入位图的ID);

15、 m_Brush.CreatePatternBrush(pBitmap);为对话框添加映射WM_CTLCOLOR消息。并加入代码HBRUSH Cluru:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor); if (nCtlColor = CTLCOLOR_DLG ) return (HBRUSH)m_Brush.GetSafeHandle(); return CDialog:OnCtlColor(pDC,pWnd,nCtlColor); 五

16、、程序运行的测试与分析 登陆界面,实现登录。 主菜单 信息录入界面,能够实现信息的录入查询界面,能够实现查询功能删除界面,能够实现信息的删除六、结论与心得通过做这个系统,我巩固和运用了很多课上学过的知识,也学会了很多课上没有讲过的知识,感受到了解课外知识的重要性,可谓是受益匪浅。调试过程中经常出现错误,刚开始检查了代码好几遍发现没有问题,后来才知道这与头文件有关,这期间也用了很长的时间。在文本框的数据输入中也碰见了问题,不知道数据怎么传递,后来文全刚老师帮我理了一下思路。是在对话框的MFC class Wizard的menber variable中为各个框添加类型和成员名称,实现消息的映射。进

17、入界面设计。其中又遇到了很多困难。在插入背景图时,使用,这是我不知道的,通过参考书和讨论终于完成这一步。从中,我更加坚定了讨论的重要作用。 其次,代码部分很多很复杂,但是结构确是很清晰的。我想这应该是MFC的一个很大的优点。根据参考书上的讲解和自己的揣摩,我明白了整个算法的灵魂。编程很多时候要用到函数,但由于上课时学的知识很多没有认真去体会,就要花时间去找那个函数,或者说自己写代码来实现那个函数的功能。所以,从现在开始,我会认真面对每一次编程,即使是小程序,也一样能锻炼人。这个系统还有很多可以改进的地方,例如添加修改密码功能,添加注册功能,添加修改功能。所以在以后我还会继续完善这个程序。把它做得更好。

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

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