当前位置:文档之家› mfc实验设计报告Word版

mfc实验设计报告Word版

《面向对象程序设计》数学与计算机学院VC++课程设计设计题目:学生信息管理系统学生学号:1007020304学生姓名:刘正学生专业:信息与计算科学学生班级: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)时,将会成功进入系统;如果输入密码错误将会弹出以下对话框:点击“确定”按钮后,将会自动退出系统。

此功能的实现是在BOOL CMy1007020304App::InitInstance()里面添加如下代码如下:BOOL CMy1007020304App::InitInstance(){AfxEnableControlContainer();、、、、、、、、、、、、m_pMainWnd->ShowWindow(SW_SHOW);m_pMainWnd->UpdateWindow();CPasswordDlg dlg;if(dlg.DoModal()!=IDOK) return false;if(dlg.m_password!="1234"){AfxMessageBox("密码错误,确认后将退出程序!");return false;}return TRUE;}然后在添加头文件#include "PasswordDlg.h"。

进入成功后,将会出现系统界面,如下图所示:2、在系统界面中,我们可以看到有“学生信息管理”这一项菜单,点击后将会出现“信息输入”和“信息输出”两个此菜单,分别点击后将会出现以下连个菜单:一个是输入对话框,另一个是输出对话框,其中输入对话框的代码如下:class CMy1007020304App : public CWinApp{public:CString ZH;int CYY;int YY;int GD;CString ZYBJ;CString XB;CString XM;CString XH;CMy1007020304App();、、、、、、、、、、、、}BOOL CAddDlg::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);return TRUE;}以下是输出对话框的代码:BOOL CMainDlg::OnInitDialog(){CDialog::OnInitDialog();// TODO: Add extra initialization hereCString tempColName[8]={" 学号","姓名","性别","专业班级","高代","英语","c语言","综合"};m_ListCtrlx.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_ SHOWSELALWAYS);m_ListCtrlx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_E X_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVA TE); for(int i=0;i<8;i++){m_ListCtrlx.InsertColumn(i,tempColName[i],LVCFMT_CENTE R,100,1); }AddItem();return TRUE; // return TRUE unless you set the focusto a control//EXCEPTION: OCX Property Pages should return FALSE}void CMainDlg::AddItem(){m_Count=-1;m_Count++;CMy1007020304App *app=(CMy1007020304App*)AfxGetApp();m_ListCtrlx.InsertItem(m_Count,"");m_ListCtrlx.SetItemText(m_Count,0,app->XH);m_ListCtrlx.SetItemText(m_Count,1,app->XM);m_ListCtrlx.SetItemText(m_Count,2,app->XB);m_ListCtrlx.SetItemText(m_Count,3,app->ZYBJ);CString TempStr;TempStr.Format("%d",app->GD);m_ListCtrlx.SetItemText(m_Count,4,TempStr);TempStr.Format("%d",app->YY);m_ListCtrlx.SetItemText(m_Count,5,TempStr);TempStr.Format("%d",app->CYY);m_ListCtrlx.SetItemText(m_Count,6,TempStr);m_ListCtrlx.SetItemText(m_Count,7,app->ZH);UpdateData(TRUE);}3、删除功能,当用户选定一个眼删除的对象后,点击删除按钮时,将会弹出如下对话框:其实现代码如下:void CMainDlg::OnDelete(){// TODO: Add your control notification handler code here if(MessageBox("确实要删除吗?","删除",MB_YESNO|MB_ICONQUESTION)==IDYES){CString str;for(int i=0; i<m_ListCtrlx.GetItemCount(); i++){if(m_ListCtrlx.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED ){m_ListCtrlx.DeleteItem(i);}}}Edit_SelIndex=-1;}五、创新内容(1)使用密码形式进入系统,使系统更加安全,保证学生信息的安全性;(2)运用AddItem()函数将添加对话框返回的数据直接显示到列表控件中,方便快捷。

相关主题