MFC开发学生信息管理系统详细.docx

上传人:b****8 文档编号:12731268 上传时间:2023-06-07 格式:DOCX 页数:23 大小:775.45KB
下载 相关 举报
MFC开发学生信息管理系统详细.docx_第1页
第1页 / 共23页
MFC开发学生信息管理系统详细.docx_第2页
第2页 / 共23页
MFC开发学生信息管理系统详细.docx_第3页
第3页 / 共23页
MFC开发学生信息管理系统详细.docx_第4页
第4页 / 共23页
MFC开发学生信息管理系统详细.docx_第5页
第5页 / 共23页
MFC开发学生信息管理系统详细.docx_第6页
第6页 / 共23页
MFC开发学生信息管理系统详细.docx_第7页
第7页 / 共23页
MFC开发学生信息管理系统详细.docx_第8页
第8页 / 共23页
MFC开发学生信息管理系统详细.docx_第9页
第9页 / 共23页
MFC开发学生信息管理系统详细.docx_第10页
第10页 / 共23页
MFC开发学生信息管理系统详细.docx_第11页
第11页 / 共23页
MFC开发学生信息管理系统详细.docx_第12页
第12页 / 共23页
MFC开发学生信息管理系统详细.docx_第13页
第13页 / 共23页
MFC开发学生信息管理系统详细.docx_第14页
第14页 / 共23页
MFC开发学生信息管理系统详细.docx_第15页
第15页 / 共23页
MFC开发学生信息管理系统详细.docx_第16页
第16页 / 共23页
MFC开发学生信息管理系统详细.docx_第17页
第17页 / 共23页
MFC开发学生信息管理系统详细.docx_第18页
第18页 / 共23页
MFC开发学生信息管理系统详细.docx_第19页
第19页 / 共23页
MFC开发学生信息管理系统详细.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MFC开发学生信息管理系统详细.docx

《MFC开发学生信息管理系统详细.docx》由会员分享,可在线阅读,更多相关《MFC开发学生信息管理系统详细.docx(23页珍藏版)》请在冰点文库上搜索。

MFC开发学生信息管理系统详细.docx

MFC开发学生信息管理系统详细

学生信息管理系统

(一)用microsoftofficeaccess创建一个数据库student.mdb

(图1.1)

 

 

在表中添加字段和数据类型,如下图所示:

(图1.2)

(图1.3)

 

(图1.4)

 

创建ODBC数据源

选择控制面板→管理工具→数据源(ODBC)→系统DSN标签→单击“添加”

出现下图所示的界面。

选择DrivedoMicrosoftAccess(*.mdb),单击“完成”。

输入数据源名,单击“选择、、、”,选择c/student.mdb单击“确定”,将会出现如图(图1.7)所示。

(图1.5)

(图1.6)

(图1.7)

 

(二).MFC图形建立

 

(图2.1)

 

特别注意:

创建的应用程序类型是单文档(singledocument应用程序)

 

(图2.2)

 

将CSTUDXINXIView的基类改为CScrollView然后单击“完成”。

(图2.3)

为数据表创建CRecordSet用户类

按“Ctrl+W”进入“建立类向导(即MFCClasWizard)”单击“AddClass...”选择“New...”如图(图2.4)所示.按照(图2.5)→(图2.6)→(图2.7)的安装顺序。

即可完成创建CRecordSet用户类的工作。

(图2.4)

(图2.5)

(图2.6)

(图2.7)

在stdafx.h文件中添加CRecordSet包含语句:

#include

如图(图2.8)所示

(图2.8)

(三)构建班级信息对话框类

按“Ctrl+R”键,打开“插入资源”,选择dialog(对话框),选择新建。

将名字改为IDD_CLASSINFO,标题为“班级信息输入”。

按照(图3.1)添加控件。

添加的控件

ID号

标题

其他属性

编辑框(班级号)

IDC_EDIT_CLASSNO

默认

编辑框(所在院系)

IDC_EDIT_DEPART

默认

编辑框(专业)

IDC_EDIT_SPECIAL

默认

组合框(学制)

IDC_COMBO_YEAR

默认

日期/时间控件(入学时间)

IDC_DATETIMEPICKER1

默认

对于学制框:

使用Data页面来添加数据项,按Ctrl+Enter换行。

(图3.1)

完成控件添加后,选择“建立类向导”,创建一个新类、即CClassInfoDlg,如图(3.2)所示。

然后按照下图,为控件添加成员变量。

(图3.2)

(图3.3)

控件ID号

变量类别

变量类型

变量名

IDC_EDIT_CLASSNO

Value

CString

m_strClassNO

IDC_EDIT_DEPART

Value

CString

m_strDepart

IDC_EDIT_SPECIAL

Value

CString

m_strSpecial

IDC_COMBO_YEAR

Value

CString

m_strYear

IDC_DATETIMEPICKER1

Value

CTime

m_tEnter

(图3.4)

使用类向导为CClassInfoDlg类添加WM_INITDIALOG消息映射。

代码位于附录1。

见(图3.5)

使用类向导为CClassInfoDlg类添加IDOK按钮的BN_CLICKED消息映射。

代码位于附录2。

见(图3.6)

(图3.5)

(图3.6)

鉴于添加代码都是从类向导找到相应的代码区域,以后就不详细截图了。

 

(四)实现班级基本信息添加和显示功能

为CSTUDXINXIView类添加一个LOGFONT型成员变量m_lfFont

选择AddMemberVariable...出现(图4.1)所示输入下面表格的变量类型和名称即可。

连续三次。

变量类型

变量名称

LOGFONT

m_lfFont

CString

m_strClassNO

CString

m_strSQL

在CSTUDXINXIView:

:

CSTUDXINXIView()添加代码。

代码位于附录3.

(图4.1)

添加一个成员函数

如(图4.2)所示。

(图4.2)

添加代码,位于附录4.

在STUDXINXIView.cpp文件的前面添加CClassInfo类的包含语句:

#include"ClassInfoSet.h"

打开菜单资源,添加如(图4.3)所示的菜单项。

(图4.3)

用类向导为CSTUDXINXIView类添加该菜单项的COMMAND消息映射,并添加代码。

代码位于附录5

在CSTUDXINXIView:

OnDraw函数添加代码。

代码位于附录6

在STUDXINXIView.cpp文件的前面添加ClassInfoDlg类的包含语句:

#include"ClassInfoDlg.h"

(五)查询班级信息

添加一个新的对话资源框,名字改为ID_SEEKCLASS标题定为“查询班级信息”。

按照下面的表格添加控件。

布局如(图5.1所示)

添加的控件

ID号

标题

其他属性

单选按钮(按所在院系)

IDC_RADIO1

默认

单选按钮(按专业)

IDC_RADIO2

默认

编辑框

IDC_EDIT1

默认

(图5.1)

建立新类,为IDC_EDIT1添加一个CString型变量m_strSeek

为CSeekClassDlg类添加消息映射,代码位于附录7

为CSeekClassDlg类添加CString型成员变量m_strSQL

用类向导为IDOK按钮添加消息映射。

代码位于附录8

打开菜单资源,添加菜单项如(图5.2)所示。

用类向导添加消息映射。

代码位于附录9

在STUDXINXIView.cpp文件的前面添加包含语句:

#include"SeekClassDlg.h"

(图5.2)

运行,编译。

附录:

1

m_strYear="4";//有关于消息映射

UpdateData(FALSE);

2

UpdateData();

m_strClassNO.TrimLeft();

m_strDepart.TrimLeft();

m_strSpecial.TrimLeft();

if(m_strDepart.IsEmpty())

MessageBox("必须要有所院系!

");

elseif(m_strSpecial.IsEmpty())

MessageBox("必须要有班级!

");

else

if(m_strClassNO.IsEmpty())

MessageBox("必须要有班级号!

");

else

3

memset(&m_lfFont,0,sizeof(LOGFONT));

m_lfFont.lfHeight=12;

m_lfFont.lfCharSet=GB2312_CHARSET;

strcpy(m_lfFont.lfFaceName,"宋体");

m_strClassNO=m_strSQL="";

4

CFontfont;

LOGFONTlf=m_lfFont;

lf.lfWeight=700;

strcpy(lf.lfFaceName,"幼圆");

font.CreateFontIndirect(&lf);

TEXTMETRICtm;

pDC->GetTextMetrics(&tm);

intnLineHeight=(int)((tm.tmHeight+tm.tmExternalLeading)*1.5);

//行高为1.5倍字符高度

intx=0,y=0,nWidth;

CFont*oldFont=pDC->SelectObject(&font);//使用新字体

//输出表头

CStringstrHeader[]={"班级号","所在院系","专业名称","学制","入学时间"};

intnStrWidth[]={10,25,25,8,10};

CClassInfoSetcSet;

cSet.m_strFilter=strSQL;

cSet.Open();

for(UINTi=0;i

{

//计算每一个字段所需的长度

nWidth=tm.tmAveCharWidth*nStrWidth[i];

pDC->TextOut(x,y,strHeader[i]);

x+=nWidth;

}

pDC->SelectObject(oldFont);

//显示具体内容

CStringstr;

while(!

cSet.IsEOF())

{

if(strClass==cSet.m_classno)

{

//这是要强调显示的班级

lf.lfWeight=0;

strcpy(lf.lfFaceName,"楷体");

font.DeleteObject();

font.CreateFontIndirect(&lf);

pDC->SelectObject(&font);

}

else

pDC->SelectObject(oldFont);//使用原来的字体

x=0;y+=nLineHeight;

for(UINTi=0;i

{

cSet.GetFieldValue(i,str);

//计算每一个字段需要的长度

nWidth=tm.tmAveCharWidth*nStrWidth[i];

pDC->TextOut(x,y,str);

x+=nWidth;

}

cSet.MoveNext();

}

cSet.Close();

//设置视图滚动大小

CSizesizeTotal;

sizeTotal.cx=x+nWidth;sizeTotal.cy=y+nLineHeight;

SetScrollSizes(MM_TEXT,sizeTotal);

5

CClassInfoDlgdlg;

if(dlg.DoModal()!

=IDOK)return;

//向classinfo表添加新的记录,为了防止添加相同的记录,这里先来判断

CClassInfoSetinfoSet;

infoSet.m_strFilter.Format("classno='%s'ANDdepart='%s'",dlg.m_strClassNO,dlg.m_strDepart,dlg.m_strSpecial);

infoSet.Open();

if(!

infoSet.IsEOF())

{

MessageBox(dlg.m_strClassNO+"班级记录已被添加过!

!

!

");//if(infoSet.IsOpen())infoSet.Close();

return;

}

if(infoSet.IsOpen())

infoSet.Close();

CClassInfoSetaddSet;

if(addSet.Open())

{

//添加一个新的记录

addSet.AddNew();

addSet.m_classno=dlg.m_strClassNO;

addSet.m_depart=dlg.m_strDepart;

addSet.m_special=dlg.m_strSpecial;

addSet.m_studyyear=(float)atof(dlg.m_strYear);

addSet.m_entertime=dlg.m_tEnter;

addSet.Update();

addSet.Requery();

}

if(addSet.IsOpen())

addSet.Close();

//更新视图

m_strClassNO=dlg.m_strClassNO;m_strSQL="";

MessageBox("稍等几分钟后,单击“确定”按钮!

O(∩_∩)O谢谢","特别提示",MB_OK|MB_ICONINFORMATION);

Invalidate();//重新调用OnDraw

6

CFontfont;

font.CreateFontIndirect(&m_lfFont);

CFont*oldFont=pDC->SelectObject(&font);

DispClassInfo(pDC,m_strClassNO,m_strSQL);

pDC->SelectObject(oldFont);

7

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);

8

UpdateData();

m_strSeek.TrimLeft();

if(m_strSeek.IsEmpty())

{

MessageBox("查询内容不能为空!

");

return;

}

intnID=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);

if(nID==IDC_RADIO1)

m_strSQL.Format("depart='%s'",m_strSeek);

else

m_strSQL.Format("special='%s'",m_strSeek);

9

CSeekClassDlgdlg;

if(dlg.DoModal()==IDOK){

m_strClassNO="";

m_strSQL=dlg.m_strSQL;

Invalidate();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2