学生信息管理程序.docx
《学生信息管理程序.docx》由会员分享,可在线阅读,更多相关《学生信息管理程序.docx(12页珍藏版)》请在冰豆网上搜索。
学生信息管理程序
MFC应用程序开发
------学生信息管理
设计人:
张燕
指导老师:
刘老师
时间:
2010-12-27
◆设计思想:
鉴于数据库的应用,对刚做完学生学籍管理系统的数据库设计的报告的同时,我想对于这一方面的社会需求也是必然的,本程序的主要功能是实现学生的相关信息的查询,修改,删除,添加等的操作。
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍的增长。
面对庞大的信息量需要有学生管理系统来提高学生管理工作的效率。
通过这样的系统可以做到信息的规范管理、科学统计和快速查询,修改、增加、删除等,从而减少管理方面的工作量。
本系统主要用于学校学生信息管理,总体认为是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生的各种信息进行日常管理,如查询、修改、删除等。
针对这些要求设计了学生信息管理系统的程序。
本程序没有建立数据库,就基于一般的应用程序编辑来实现相关的功能需求,
◆编程思路:
(1)创建一个新的工程,工程名为MfcDesign,利用建立工程向导生成一个单文档的应用程序。
(2)鉴于在本工程中要实现不同的学生信息的相关操作,所以在工程中必然要更具实际的需求去新建一些让功能实现的相关类,如对话框类等。
(3)对对应的类编写代码,使得所需的功能能一一实现。
即分别实现各个区域的功能。
(4)在程序的设计过程中,再根据具体的需要,可以再添加一些功能。
◆实际操作步骤:
(1)新建一个单文档的应用程序,命名为MfcDesign,生成一个单文档的应用程序。
(2)为了满足需要,需要新建几个类,如几个对话框类(添加,删除,查询,修改,以及全部信息)的学生信息的对话框类,以及成绩类和学生基本信息记录类。
1新建添加学信息类,修改信息类,查询信息类,删除信息类,分别命名为CAddDlg类,CAlterDlg类,CFindDlg类,CDelDlg类,他们都基类为对话框类,在新建的这个对话框中,一一对应对话框,添加需要的学生信息的相关控件,并对对应的控件进行消息映射,定义对应的变量。
2新建CStudent类和CScore类以及CPerson类,用来编辑学生信息的实现函数。
(3)编写相应的代码,使得功能得以实现,如对话框中的相应的按钮的消息响应函数代码的编译。
(4)调试程序。
◆添加代码:
第一部分:
CAddDlg类功能的实现代码:
在这个添加记录类中,主要添加了如下图所示的控件:
图1(对话框设计图)
对图1中相应的编辑控件声明相应的变量,如图2所示:
图2
对对话框中的【OK】按钮添加消息相应,实现其功能的代码如下所示:
voidCAddDlg:
:
OnOK()
{
CStudent*pCStudent=newCStudent;
pCStudent->m_strName=this->m_strEditName;
pCStudent->m_strSex=this->m_strEditSex;
pCStudent->m_nAge=this->m_nEditAge;
pCStudent->m_strTel=this->m_strEditTel;
pCStudent->m_strStuNum=this->m_strEditStuNum;
pCStudent->m_strEducation=this->m_strEditEducation;
pCStudent->m_csScore.m_nComputer=this->m_nEditComputer;
pCStudent->m_csScore.m_nEnglish=this->m_nEditEnglish;
pCStudent->m_csScore.m_nEthic=this->m_nEditEthic;
CMfcDesignDoc*pDoc=theApp.GetDocPointer();
pDoc->m_StudentList.AddTail(pCStudent);
MessageBox("增加成功");
}
第二部分:
CAlterDlg类功能的实现代码:
在这个修改记录类中,主要添加了如下图所示的控件:
图3
对图3中相应的编辑控件声明相应的变量,如图4所示:
(只有一部分)
对话框初始化函数:
BOOLCAlterDlg:
:
OnInitDialog()
{
this->m_Pos=NULL;
}
对对话框中的【OK】按钮添加相应映射,实现其功能的代码如下所示:
voidCAlterDlg:
:
OnOK()
{
if(this->m_Pos==NULL)
{AfxMessageBox("请先确定要修改的记录");}
else
{CMfcDesignDoc*pDoc=theApp.GetDocPointer();
CStudent*pCStudent=newCStudent;
GetData(this,pCStudent);
pDoc->m_StudentList.SetAt(this->m_Pos,pCStudent);
}
}
按钮【先查后改】添加消息响应函数,添加代码如下所示:
voidCAlterDlg:
:
OnFind()
{intn_Status=0;
CStringsz_StuNum;
this->m_nEditStuNum.GetWindowText(sz_StuNum);
CMfcDesignDoc*pDoc=theApp.GetDocPointer();
POSITIONpos=pDoc->m_StudentList.GetHeadPosition();
while(pos!
=NULL)
{CStudent*pCStudent=pDoc->m_StudentList.GetAt(pos);
if(pCStudent->m_strStuNum==sz_StuNum)
{this->m_Pos=pos;
SetData(this,pCStudent);
n_Status=1;
break;
}
else
{pDoc->m_StudentList.GetNext(pos);}
}
if(n_Status==0)
{MessageBox("没有此记录");}
}
第三部分:
CDelDlg类功能的实现代码:
在这个删除记录类中,主要是按学号来查询到学生的相关信息,并删除其记录,主要添加了如下图所示的控件:
对对应的控件添加消息映射
编写【OK】按钮的消息相应函数,添加代码如下:
voidCDelDlg:
:
OnOK()
{
intn_Status=0;
CDialog:
:
OnOK();
CStringsz_StuNum;
sz_StuNum=this->m_strEditStuNum;//取出要删除记录的学号
CMfcDesignDoc*pDoc=theApp.GetDocPointer();
POSITIONpos=pDoc->m_StudentList.GetHeadPosition();
while(pos!
=NULL)
{CStudent*pCStudent=pDoc->m_StudentList.GetAt(pos);
if(pCStudent->m_strStuNum==sz_StuNum)
{pDoc->m_StudentList.RemoveAt(pos);//删除记录
n_Status=1;
break;
}
else
{pDoc->m_StudentList.GetNext(pos);}
}
if(n_Status==0)
{MessageBox("删除失败!
");}
else
{MessageBox("删除成功!
");}
}
第四部分:
CFindDlg类功能的实现代码:
在这个查询记录类中,查询学生信息:
添加变量:
添加代码如下所示:
voidClearListBox(CListBox*List)//清空列表筐
{intnum;
num=List->GetCount();
for(inti=0;i{List->DeleteString(i);}
}
voidCFindDlg:
:
OnOK()
{ClearListBox(&this->m_ResultList);
intn_Status=0;
charsz_Buffer[200];
CStringsz_StuNum;
this->m_strEditStuNum.GetWindowText(sz_StuNum);//取出要删除记录的学号
CMfcDesignDoc*pDoc=theApp.GetDocPointer();
POSITIONpos=pDoc->m_StudentList.GetHeadPosition();
while(pos!
=NULL)
{CStudent*pCStudent=pDoc->m_StudentList.GetAt(pos);
if(pCStudent->m_strStuNum==sz_StuNum)
{ShowRecord(sz_Buffer,pCStudent);
this->m_ResultList.AddString(sz_Buffer);
n_Status=1;
break;
}
else
{pDoc->m_StudentList.GetNext(pos);}
}
if(n_Status==0)
{this->m_ResultList.AddString("没有此记录");}
}
第五部分:
CMainDlg类功能的实现代码:
在这个信息显示记录类中,主要是显示学生的主要信息,对话框设计如下所示:
对应的控件列表中声明成员变量:
对话框变量初始化函数:
BOOLCMainDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
CMfcDesignDoc*pDoc=theApp.GetDocPointer();
//ar<POSITIONpos=pDoc->m_StudentList.GetHeadPosition();
while(pos!
=NULL)
{charsz_Buffer[200];
CStudent*pCStudent=pDoc->m_StudentList.GetAt(pos);
ShowRecord(sz_Buffer,pCStudent);
this->m_MainList.AddString(sz_Buffer);
pDoc->m_StudentList.GetNext(pos);
}
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
显示信息函数:
voidShowRecord(charBuffer[200],CStudent*pCStudent)
{
intj=0;
j=sprintf(Buffer,"%-6s",pCStudent->m_strStuNum);
j+=sprintf(Buffer+j,"%-6s",pCStudent->m_strName);
j+=sprintf(Buffer+j,"%-3s",pCStudent->m_strSex);
j+=sprintf(Buffer+j,"%-3d",pCStudent->m_nAge);
j+=sprintf(Buffer+j,"%-6s",pCStudent->m_strEducation);
j+=sprintf(Buffer+j,"%-3d",pCStudent->m_csScore.m_nComputer);
j+=sprintf(Buffer+j,"%-3d",pCStudent->m_csScore.m_nEnglish);
j+=sprintf(Buffer+j,"%-3d",pCStudent->m_csScore.m_nEthic);
j+=sprintf(Buffer+j,"%-9s",pCStudent->m_strTel);
}
第六部分:
文档类的序列化函数:
voidCMfcDesignDoc:
:
Serialize(CArchive&ar)
{
if(ar.IsStoring())//保存
{//保存链表所有节点
ar<POSITIONpos=m_StudentList.GetHeadPosition();
while(pos!
=NULL)
{
CStudent*pCStudent=m_StudentList.GetAt(pos);
ar<m_StudentList.GetNext(pos);
}
}
else//打开
{CFile*pFile=ar.GetFile();
m_strFileName=pFile->GetFileName();
AfxMessageBox(m_strFileName);
//释放链表所有节点
m_StudentList.RemoveAll();
//加载链表所有节点
intnNodeCount=0;
ar>>nNodeCount;//节点个数
for(inti=0;i{
CStudent*pCStudent=NULL;
ar>>pCStudent;//加载
m_StudentList.AddTail(pCStudent);
}
MessageBox(NULL,"dd","dd",MB_OK);
//CMainDlgMainDisplay;
//MainDisplay.DoModal();
}
}
第七部分:
学生信息(姓名,性别,年龄,电话)的序列化函数:
voidCPerson:
:
Serialize(CArchive&ar)
{
//对象序列化保存
if(ar.IsStoring())
{ar<else
{ar>>m_strName>>m_strSex>>m_nAge>>m_strTel;}
}
第八部分:
学生信息(计算机,英语,素质)序列化函数
voidCScore:
:
Serialize(CArchive&ar)
{//对象序列化保存
if(ar.IsStoring())
{ar<else
{ar>>m_nComputer>>m_nEnglish>>m_nEthic;}
}
第九部分:
学生信息(成绩,学历,学号)序列化函数:
voidCStudent:
:
Serialize(CArchive&ar)
{//对象序列化保存
if(ar.IsStoring())
{ar<m_strEducation<m_strStuNum;}
else
{ar>>this->m_strEducation>>this->m_strStuNum;}
CPerson:
:
Serialize(ar);
this->m_csScore.Serialize(ar);
}
第十部分:
在CMainFrame类中添加函数:
voidCMainFrame:
:
OnAdd()
{
CAddDlgAddDlg;
AddDlg.DoModal();
}
voidCMainFrame:
:
OnDelete()
{
CDelDlgDelDlg;
DelDlg.DoModal();
}
voidCMainFrame:
:
OnDisplay()
{
CMainDlgMainDisplay;
MainDisplay.DoModal();
}
voidCMainFrame:
:
OnModify()
{
CAlterDlgAlterDlg;
AlterDlg.DoModal();
}
voidCMainFrame:
:
OnSearch()
{
CFindDlgFindDlg;
FindDlg.DoModal();
}
◆总结:
本程序主要是实现学生信息的相关操作,添加,删除,查询,修改等信息的实现,以及显示添加了的信息显示对话框中,本程序的缺陷就是操作较为繁琐,但是还是比较实用的一个应用程序。
本程序的设计过程中,参考了很多的资料,教材和网上查询相关的应用,使得我更加的了解到编程这个东西是一个要慢慢去体会和摸索的。
当然还有一定的构思。
其实这个程序如果用数据库的知识来设计这个应用程序,会更加的实用,鉴于时间的限制,我希望下次再做改进,使得更加的完善,希望到时候老师多多的点评。