mfc实验设计报告.docx
- 文档编号:7757692
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:17
- 大小:128.21KB
mfc实验设计报告.docx
《mfc实验设计报告.docx》由会员分享,可在线阅读,更多相关《mfc实验设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
mfc实验设计报告
《面向对象程序设计》
数学与计算机学院
VC++课程设计
设计题目:
学生信息管理系统
学生学号:
04
学生姓名:
刘正
学生专业:
信息与计算科学
学生班级:
10级信计三班
指导老师:
李建湘
制作时间:
2011年12月14日
前言……………………………………………2
系统需求分析…………………………………3
程序设计思路…………………………………3
模块分析………………………………………5
主要功能图示及代码………………………9
创新内容………………………………………17
存在的问题与不足……………………………17
收获与感想……………………………………18
程序其它重要源代码…………………………19
后记……………………………………………27
十一、参考文献…………………………………28
前言
作为大二的一名学生,我们已经学习汇编语言快一年了,但是自己从来没有做过一个有实用价值的程序。
总是怀疑我们学的c语言,c++以后会有用吗几乎都是编写一些数学计算题。
直到老是教我们MFC编程后,才知道应用程序的设计过程。
说实话,在课程设计之前,我没有听过什么MFC编程,所以在设计的过程中也是困难重重,每走一步都是相当艰难的。
从开始设计到完成设计,我花了两个多星期,中间重做了无数次。
真的难以想象爱迪生发明电灯时是怎么熬过来的。
这个程序虽然不完美,但是花了我不少的心血。
这将是我程序生涯的开始!
学习MFC编程,最重要的就是自学。
刚开始,什么都不懂,为什么要这么做好多函数都不不知道是干什么用的,更不用说使用它们。
因此,不得不借助图书馆和网络了解它们。
MFC函数库很庞大,我这次用到的微乎其微,以后还得不断的学习和熟悉。
一个那么庞大的函数库,我们该如何掌握它呢通过这半个多月的学习,我个人觉得最重要的就是多练习,只有不断的练习,才能掌握它们的规律,帮助我们学好MFC函数库。
接下来,我将把这些天的成果在这里展现出来,与大家一起分享这份来之不易的喜悦!
一、系统需求分析
随着互联网的发展,利用internet技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子备课等方面发挥了重要作用。
服务教学、提高教学水平和效果是校园网建设的核心目标和核心价值,如何利用现有的资源,来更好地服务于学校的教学,服务于学校的管理工作,是摆在我们面前的一个共同的命题。
该系统适用于小学、初中、高中以及大学学生的成绩简单管理。
由于某些学校管理有所不同大或者过于复杂,本系统不能满足其需要,因此本系统也具有一定的局限性。
就目前而言,许多小学、初中和高中的学籍管理方式还停留在手工操作基础上,每个学期和学年,教师需要花费大量的时间来登录学生信息,本来教学任务就繁重的教师,再加上这些学生信息的登录,耗费了教师不少的精力和时间。
而管理人员也需要花费较多的时间来校对管理,这样一来,一个简单的工作的变得相当繁琐了。
同时又形成信息册在教师和教导处之间传递的延时性,遇到学生转入转出,又因为各个学校使用的学籍卡的不同,而造成信息的缺失或者遗漏。
本系统就是为了减轻教师繁复的誊写工作、加强学校学生信息管理的方便性,以及对信息管理的准确性。
二、程序设计思路
本系统是MFC编程中基于单文档的设计。
首先定义类来封装,存储同学信息,及实现各个函数之间的串联,运用指针及数组来实现各个函数的处理功能。
各个函数都是独立存在的,还可以在之基础上增加或减少一些功能,可使整个系统更加适合个人的使用。
该系统主要按班级来完成学生成绩的管理,功能包括添加、输出、删除。
本系统的主界面布局主要以编辑框和按钮组成。
编辑框的主要功能是显示记录信息和录入记录信息,以方便存储基本的信息,按钮可以进行相应的操作。
进入系统时,会弹出一个登录框,只有用户输入正确的密码时才可以进入管理界面,其密码为“1234”。
当用户计入了管理界面后,可以看到菜单栏中有一项为“学生信息管理”,其中有子菜单“信息输入”和“信息输出”,点击“信息输入”功能,将会弹出一个添加学生信息对话框,只有把信息输入完全,才能点击“确定”按钮,此时输入的信息将会保存起来;如果点击的“取消”按钮,那么信息将会自动消失,不会保存。
接下来就是“信息输出”功能。
点击信息输出功能时,将会弹出学生信息管理系统对话框,用户将会看到先前在添加学生信息对话框中输入的内容。
在该对话框的下方,还有“添加”、“删除”、“退出”三个按钮:
(1)添加:
点击添加按钮,将会弹出添加学生信息对话框,输入要添加的内容,确定后就添加成功了,可以在学生信息管理系统输出新添加的信息。
(2)删除:
如果用户想要删除学生信息,只要选定要删除的对象,然后点击删除键,如此便删除成功。
(3)退出:
点击该按钮,便可以退出该对话框,当然也可以点击右上方的关闭按钮。
系统功能模块图。
该系统分为若干模块,每个模块下面又有若干子模块,层层划分直到每一个模块能够作为计算机可执行的单独程序为止。
系统划分的结果最终反映为一张分层的树型结构图,学生成绩管理系统的主要功能结构图如下图所示:
进入学生管理系统
登陆界面
登陆界面
学生信息管理
信息输入
信息输出
添加
删除
退出
系统功能模块图
三、模块分析
该系统分为五个模块,它们是用户登录、信息输入、信息输出、信息添加和信息删除。
每个模块之间相互联系,其中用户登录模块属于一级模块,它控制着用户是否能够进入管理系统。
信息输入和信息输出属于二级模块,是用来给用户实现学生信息管理的。
添加和删除属于信息输出模块中的两个分功能,其中添加与信息输入相关联。
各个模块紧密相连,共同完成该系统的管理功能。
1、用户登录:
此模块功能是用来保护用户信息的,只有输入正确的密码,然后点击“确定”方可进入管理系统。
进入系统后,可以看到学生信息管理界面
2、信息输入:
此模块功能是用来给用户输入学生信息的,同时也是添加功能的模块。
点击菜单栏中的“学生信息管理”就会出现两个子菜单,点击“信息输入”,弹出一个添加学生信息对话框,在里面输入姓名、学号、性别、专业班级、成绩等,填好信息后点击确定。
3、信息输出:
此模块工能是用来显示用户在添加信息对话框中输入的学生信息,可供用户进行数据研究。
在输入完学生信息之后,点击菜单中的“信息输出”,此时将会弹出学生成绩管理系统对话框,在该对话框将会显示在添加信息对话框中输入的全部信息。
6、信息添加:
此模块功能是用来方便用户在主对话框中继续添加学生信息,这就不用关闭主对话框再进入信息输入对框。
点击学生信息管理系统中的添加按钮,将会弹出添加学生信息对话框,如图4所示。
5、信息删除:
此模块功能是用来删除用户输入的错误信息以及不要了的信息,比如某个班级的学生学了或者转专业了,就可以删除他在原来班级的信息。
选定要删除的对象,点击对话框中的“删除”按钮,系统会自动弹出询问信息,如果确认点击确定就可进行删除,程序会自动调用删除函数进行删除。
完毕后可以看到自己所选择删除的项已删除。
四、主要功能视图及代码
1、登录界面,当程序运行时将会出现如下对话框:
当用户输入正确的密码(1234)时,将会成功进入系统;如果输入密码错误将会弹出以下对话框:
点击“确定”按钮后,将会自动退出系统。
此功能的实现是在BOOLCMy04App:
:
InitInstance()里面添加如下代码如下:
BOOLCMy04App:
:
InitInstance()
{
AfxEnableControlContainer();
、、、、、、、、、、、、
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
CPasswordDlgdlg;
if()!
=IDOK)returnfalse;
if!
="1234")
{
AfxMessageBox("密码错误,确认后将退出程序!
");
returnfalse;
}
returnTRUE;
}
然后在添加头文件#include""。
进入成功后,将会出现系统界面,如下图所示:
2、在系统界面中,我们可以看到有“学生信息管理”这一项菜单,点击后将会出现“信息输入”和“信息输出”两个此菜单,分别点击后将会出现以下连个菜单:
一个是输入对话框,另一个是输出对话框,其中输入对话框的代码如下:
classCMy04App:
publicCWinApp
{
public:
CStringZH;
intCYY;
intYY;
intGD;
CStringZYBJ;
CStringXB;
CStringXM;
CStringXH;
CMy04App();
、、、、、、、、、、、、
}
BOOLCAddDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
CEdit*edit1=(CEdit*)GetDlgItem(IDC_EDIT_XH);
edit1->SetWindowText("");
edit1=(CEdit*)GetDlgItem(IDC_EDIT_XM);
edit1->SetWindowText("");
edit1=(CEdit*)GetDlgItem(IDC_EDIT_ZYBJ);
edit1->SetWindowText("");
edit1=(CEdit*)GetDlgItem(IDC_EDIT_GD);
edit1->SetWindowText("");
edit1=(CEdit*)GetDlgItem(IDC_EDIT_YY);
edit1->SetWindowText("");
edit1=(CEdit*)GetDlgItem(IDC_EDIT_CYY);
edit1->SetWindowText("");
CComboBox*combo1=(CComboBox*)GetDlgItem(IDC_COMBO_XB);
combo1->SetCurSel(-1);
combo1=(CComboBox*)GetDlgItem(IDC_COMBO_ZH);
combo1->SetCurSel(-1);
CButton*but1=(CButton*)GetDlgItem(IDOK);
but1->EnableWindow(FALSE);
returnTRUE;
}
以下是输出对话框的代码:
BOOLCMainDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
CStringtempColName[8]={"学号","姓名","性别","专业班级","高代","英语","c语言","综合"};
(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS);
(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE);for(inti=0;i<8;i++)
{(i,tempColName[i],LVCFMT_CENTER,100,1);}
AddItem();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
voidCMainDlg:
:
AddItem()
{
m_Count=-1;
m_Count++;
CMy04App*app=(CMy04App*)AfxGetApp();
(m_Count,"");
(m_Count,0,app->XH);
(m_Count,1,app->XM);
(m_Count,2,app->XB);
(m_Count,3,app->ZYBJ);
CStringTempStr;
("%d",app->GD);
(m_Count,4,TempStr);
("%d",app->YY);
(m_Count,5,TempStr);
("%d",app->CYY);
(m_Count,6,TempStr);
(m_Count,7,app->ZH);
UpdateData(TRUE);
}
3、删除功能,当用户选定一个眼删除的对象后,点击删除按钮时,将会弹出如下对话框:
其实现代码如下:
voidCMainDlg:
:
OnDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(MessageBox("确实要删除吗","删除",MB_YESNO|MB_ICONQUESTION)==IDYES)
{
CStringstr;
for(inti=0;i<();i++)
{
if(i,LVIS_SELECTED)==LVIS_SELECTED)
{
(i);
}
}
}
Edit_SelIndex=-1;
}
五、创新内容
(1)使用密码形式进入系统,使系统更加安全,保证学生信息的安全性;
(2)运用AddItem()函数将添加对话框返回的数据直接显示到列表控件中,方便快捷。
(3)使用了change事件响应函数,要求用户必须输入全部的信息之后,才能点击“确定”按钮,使得系统更加完美。
(4)应用基于MFC单文档的基本技术与方法,使操作更为简单。
六、存在的问题与不足
限于编程者学习的时间尚短而且知识储备的有限,这个程序还存在着许多缺陷与不足之处。
首先,功能相对比较单一,只有添加信息,显示信息,删除信息几个简单的功能;其次,功能的实现也不太完善,与那些真正具有使用价值的应用系统相比,差距实在还很大。
代码的处理也不是很精简,有待进一步改善。
要想达到一定的水平和应用价值,还需要添加很多功能,比如修改、成绩排序以及学生其他信息的管理,而不是单纯的成绩管理。
同时,还可以将其美化,在各个对话框中添加一些背景图案,增加其美观,赢得广大用户的青睐。
总之,要设计出一个比较完美的程序,本人还需要下相当大的功夫,我相信自己,在今后不断的学习和实践中,一定会编出具有一定使用价值的程序。
七、收获与感想
经过一段时间的程序设计和开发,本人的学生信息管理系统基本完成了预想设计。
在本次课程设计中,可谓是困难重重,完全是从零开始,但是至今我还是实现了预期功能,这使得我明白了一个道理:
大学真的要靠自己,老师是一个实实在在的引导者。
开始的时候,查阅了许多相关的书籍,搜索各种网站的相关内容以及网络教程,首先的那一个星期,真的是忙得不亦乐乎。
看了一些书籍和视频教程后,脑子里终于有了一个大概轮廓,但是要自己编写全部代码,还是一件不可能的事情。
只好看书本和视频学习一些需要用到的函数,比如Domodal()、OnInitDialog()、AddItem()等函数。
其中的一些代码也是借用了书上的和网上的。
在这次利用MFC开发简单的应用系统的过程中,我深深体会到了做一个应用程序,进行需求分析的重要性。
如果一个程序员,只是单凭自己的感觉去设计一个程序,而不顾其实用价值,那么即使他的程序编的再好,也没有用。
其实,进行需求分最重要的就是进行市场调查,当然这不属于程序员分内的事。
在一个软件开发公司,这些都是交给其他相关部门去做的,其调查结果直接影响程序开发的必要性。
同时,我还了解了一个应用程序的制作,从功能分析到功能模块分析、与其他系统的关系,再到后台数据存储设计及各功能模块的创建都需要从整体上考虑设计。
这就要求编程人员必须具有相当严密的逻辑思维以及一定的全局观念。
这就要求程序人员要有相当好的综合素质了,而不是简单的编写几个代码。
通过这次小小的实践,我的收获确实不少,使我更加清楚以后学习的侧重点了。
要成为一个优秀的程序人员,必须付出比别人更多!
八、程序的其它重要源代码
添加学生信息对话框中的CHANGE事件响应函数代码:
voidCAddDlg:
:
EditCombo_CHANGE()
{
CStringXH,XM,XB,ZYBJ,GD,YY,CYY,ZH;
CEdit*edit1=(CEdit*)GetDlgItem(IDC_EDIT_XH);
edit1->GetWindowText(XH);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_XM);
edit1->GetWindowText(XM);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_ZYBJ);
edit1->GetWindowText(ZYBJ);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_GD);
edit1->GetWindowText(GD);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_YY);
edit1->GetWindowText(YY);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_CYY);
edit1->GetWindowText(CYY);
CComboBox*combo1=(CComboBox*)GetDlgItem(IDC_COMBO_XB);
combo1->GetWindowText(XB);
combo1=(CComboBox*)GetDlgItem(IDC_COMBO_ZH);
combo1->GetWindowText(ZH);
CButton*but1=(CButton*)GetDlgItem(IDOK);
but1->EnableWindow(XH!
=""&&XH!
=""&&XM!
=""&&XB!
=""&&ZYBJ!
=""&&GD!
=""&&YY!
=""&&CYY!
=""&&ZH!
="");
}
voidCAddDlg:
:
OnChangeEditXh()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnChangeEditXm()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnSelchangeComboXb()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnChangeEditZybj()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnChangeEditGd()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnChangeEditYy()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnChangeEditCyy()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnSelchangeComboZh()
{
EditCombo_CHANGE();
、、、、、、、、、、、、
}
voidCAddDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
CStringXH,XM,XB,ZYBJ,GD,YY,CYY,ZH;
CMy04App*app=(CMy04App*)AfxGetApp();
CEdit*edit1=(CEdit*)GetDlgItem(IDC_EDIT_XH);
edit1->GetWindowText(XH);
app->XH=XH;
edit1=(CEdit*)GetDlgItem(IDC_EDIT_XM);
edit1->GetWindowText(XM);
app->XM=XM;
edit1=(CEdit*)GetDlgItem(IDC_EDIT_ZYBJ);
edit1->GetWindowText(ZYBJ);
app->ZYBJ=ZYBJ;
edit1=(CEdit*)GetDlgItem(IDC_EDIT_GD);
edit1->GetWindowText(GD);
app->GD=atoi(GD);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_YY);
edit1->GetWindowText(YY);
app->YY=atoi(YY);
edit1=(CEdit*)GetDlgItem(IDC_EDIT_CYY);
edit1->GetWindowText(CYY);
app->CYY=atoi(CYY);
CComboBox*combo1=(CComboBox*)GetDlgItem(IDC_COMBO_XB);
combo1->GetWindowText(XB);
app->XB=XB;
combo1=(CComboBox*)GetDlgItem(IDC_COMBO_ZH);
combo1->GetWindowText(ZH);
app->ZH=ZH;
CDialog:
:
OnOK();
}
以下是文件保存的代码:
voidCMy04Doc:
:
Serialize(CArchive&ar)
{
DWORDdwFlag=0;
CMy04App*app=NULL;
if())
{
dwFlag=~0;
POSITIONpos=();
while(app!
=NULL)
{
app=(CMy04App*)(pos);
(pos);
ar< (app,sizeof(CMy04App)); } dwFlag=0; ar< } //TODO: addstoringcodehere Else { ar>>dwFlag; while(dwFlag! =0) { app=newCMy04App; memset(app,0,sizeof(CMy04App)); (app,sizeof(CMy04App)); (app); ar>>dwFlag; } //TODO: addloadingcodehere } UpdateAllViews(NULL,0L,NULL); } 为添加学生信息对话框创建的模态对话框,代码如下: voidCMy04View: : OnInputDialog() { CAddDlgdlg; (); } 为输出学生信息创建模态对话框,代码如下: voidCMy04View: : OnOutputDialog() { CMainDlgdlg; (); } 学生信息管理系统对话框中的添加按钮,代码如下: voidCMainDlg: : OnAdd() { CAddDlgdlg; if()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mfc 实验设计 报告