MFC开发学生信息管理系统(详细)_第1页
MFC开发学生信息管理系统(详细)_第2页
MFC开发学生信息管理系统(详细)_第3页
MFC开发学生信息管理系统(详细)_第4页
MFC开发学生信息管理系统(详细)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生信息管理系统

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

(图1.1)

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

classinfo:表

字段名称

_►文本班级号

文本

depart所在院系

文本

spedal专北名称

数字

studyyear学制

日和

泄问

entertime入学时间

当Bn木;r

(图1。2)

(aio3)

(图1。4)

创建ODBC数据源

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

出现下图所示的界面。选择DrivedoMicrosoftAccess(*<,mdb),单击"完成”.

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

创建梦数据源

选择您想为其安装数据源的驱动程序6)。

名称

DriverdaMicrosoftparaarquivostext。

DriverdoMicrosoftAccess(*.mdb)

DriverdoMicrosoftdBase(*.dbf)

DriverdoMicrosoftExcel(*.xls)

DriverdoMicrosoftParadox(*.db)

DriverparaoMicrosoftVisualFoxPro

MicrosoftAccessDriver(*.mdb)

Mi_croso£tAccesp-Treiber(*.mdb)______

7]iiiITV

:上一步但)|完成|匚殷消

(图1.5)

选择数据专

数据库名⑥I目录时

student.mdb

student.mdb

Downleads

Intel

□只读®

ProgranFiles口独占国)

temp

文件类型Q)二驱动器W):

Access数据库(*.me▼■c:网络国)..

(图1。6)

(图1。7)

(二)。MFC图形建立

000

(图2。1)

特别注意:创建的应用程序类型是单文档(singledocument应用程序)

MFC应用程序向导,步骤17

您要创建的应用程序类型是:

3单文档母)

「多重文档倒)

「基本对话框Q)

2文档,查看体系结构支持(V)

您的资源使用的语言是:

1市克荷体[中国](APPWZCHSQLLJ三]

<上一步下一步>完成|取消|

(图2.2)

将CSTUDXINXIView的基类改为CScrolIView然后单击“完成

(图2.3)

为数据表创建CRecordSet用户类

按“Ctrl+W”进入“建立类向导(即MFCCIasWizard)”单击"AddCIass。。。”选择“New.・.”

如图(图2。4)所示.按照(图2。5)T(图2。6)T(图2。7)的安装顺序。即可完成创建CRecordSet

用户类的工作。

,FCClasswizard

MessageMapsMemberVariablesAutomationActiveXEvents!ClassInfo

ProjectClassnameAddCiass...▼

|STUDXINXICMainFrame

2JAddFunction

C:\STUDXINXI\MainFrm.h,C:\STUDXINXI\MainFrm.cpp

ObjectIDs:Messages:DeleteFunction

CMainFrame____________________________ActivateFrame

EditCode

ID_APP_ABOUT三CalcWindowRect

ID_APP_EXITCreate

ID_EDlflCOPYDefWindowProc

ID_EDIT_CUTDestroyWindow

ID_EDIT_PASTEDoDataExchange

ID_EDIT_UNDOxzGetActiveDocumcnt*✓

Memberfunctions:

WOnCreateON_WM_CREATE

VPreCreateWindow

Description:

确定|取消

(图24)

(图2⑸

(图2。6)

(图27)

在stdafx.h文件中添加CRecordSet包含语句:#incIude〈afxdb。h)

如图(图2。8)所示

==:=:=:==二二_=:==:"二=喟山三//bLUdrx.11:inuiuuerxierurbLdiiudru

//orprojectspecificincludefilestl

唱工作区‘STUDXINXI,:1工程

//arechangedinfrequently

-£p]STUDXINXIFiles

//

+_jSourceFiles

T^HeaderFilesttif?deFined(AFX_STDAFX_H_BCAD3C54_FD0:

[g|ClassInFoSet,h"defineAFX_STDAFX_H_BCAD3C54_FD03_4B9:

f]MainFrm.h

E|Resource.httiF_MSC_UER>1000

[g||stdftfxJ?■pragmaonce

ttendiF//_MSC_UER>1000

g)STUDXINXI.h

|g|STUDXINXIDoc.h

itdefineUC_EXTRALEAN//Excludei

[g|STUDXINXIUiew.hlitiin:I(i(1p<<it-x(lh.

-^ResourceFilesttinclude<aFxwin.h>//MFCcore

图STUDXINXI.ico^include<afxext-h>//MFCextei

国STUDXINXI.rc2Itinclude<afxdisp.h>//MFCAutoi

[g|STUDXINXIDoc.icottinclude<aFxdtctl.h>//MFCsupp(

圄Toolbar.bmpItiFndeF_AFX_NO_AFXCMN_SUPPORT

ttinclude<aFxcnn.h>MFCsupp(

圜ReadMe.txt//

ttendiF//AFX^NOAFXCMN_SUPPORT

■»r,人r-uacc人nr,ca・、、

(图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对话

\翦

叫级号:隔而4

abdl

所在院系:巴

取消|

区(«

专业:国

学制:。

I3回

(日

入学时间:12013/11/30

ZJ网

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

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

Automation

(图3c2)

(图3。3)

控件ID号变量类别变量类型变量名

IDC_EDIT_CLASSNOVaIueCStringm_strClassNO

IDC_EDIT_DEPARTVaIueCStringm_strDepart

IDC_EDIT_SPECIALVaIueCStringm_strSpeciaI

IDC_COMBO_YEARVaIueCStringm_strYear

IDC_DATETIMEPICKER1VaIuedimem_tEnter

(图3.4)

使用类向导为CCIassInfoDIg类添加WM_INITDIALOG消息映射.

代码位于附录1.见(图3。5)

使用类向导为CCIassInfoDIg类添加ID0K按钮的BN_CLICKED消息映射.

代码位于附录2.见(图3。6)

BOOLCCIassInfoDIg::OnInitDialog()

<

CDialog::OnInitDialog();

e^trainitializationhere

X>_strVear="4";、〃有关于消息映射

|UpdateData(FALSE);

returnTRUE;//returnTRUEunlessyousettheFocustoac(

//EXCEPTION:OCXPropertyPagesshouldreturn

(图3.5)

uoidCClassInfoDlg::0n0K()

<

//TODO:Addextraualidationhere

UpdateData();

nstrClassNO.TrimLeft();

mstrDepart.TrinLeft();

m_strSpecial.TrimLeFt();

if(n_strDepart.IsEmpty())

iiessageBox(,,必须要宥所院系?”);

elseif(n_strSpecial.IsEnpty())

MessageBox,必须要有班级,”);

else

if(n_strClassNO.IsEnpty())

HessageBox(“必须要有班级号?・,);

else

CDialoq::0n0K():

(图3.6)

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

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

为CSTUDXINXIView类添加一个LOGFONT型成员变量m」fFont

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

连续三次。

变量类型变量名称

LOGFONTm_IfFont

CStringm_strClassNO

CStringm_strSQL

在CSTUDXINXIView::CSTUDXINXIView()添加代码。

代码位于附录3.

(图4.1)

添加一个成员函数

如(图4。2)所示。

(S4o2)

添加代码,位于附录4。

在STUDXINXIView。cpp文件的前面添加CCIassInf。类的包含语句:#include”ClassInfoSet。h

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

文件⑹编蚩⑥查看⑨帮助(H)信息城入①厂……

班级信息嘘入©

(图4。3)

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

代码位于附录5

在CSTUDXINXIView::OnDraw函数添加代码。

代码位于附录6

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

#incIude"ClassInfoDIg.h"

(五)查询班级信息

添加一个新的对话资源框,名字改为ID.SEEKCLASS标题定为“查询班级信息,按照下面的表格添加控件.

布局如(图5O1所示)

添加的控件ID号标题其他属性

单选按钮(按所在院系)IDC_RADIO1默认

单选按钮(按专业)IDC_RADIO2默认

编辑框IDC_EDIT1默认

Aa

HE]

1O-1

a

(图5.1)

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

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

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

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

代码位于附录8

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

用类向导添加消息映射.

代码位于附录9

在STUDXINXIView。cpp文件的前面添加包含语句:#incIude"SeekCIassDIgoh"

工■▼掺幽!Hl四

0帮助口信息域入(D信息宜洵⑼

查询班级信息⑤

(图5.2)

运行,编译。

附录:

1

m_strYear二"4”;〃有关于消息映射

UpdateData(FALSE);

2

UpdateData();

m_strCIassNO.TrimLeft();

m_strDepartoTrimLeft();

m_strSpeciaI.TrimLeft();

if(m_strDepartoIsEmpty())

MessageBox("必须要有所院系!”);

eIseif(m_strSpecial。IsEmpty())

MessageBox("必须要有班级!”);

eIse

if(m_strCIassNO.IsEmpty())

MessageBox("必须要有班级号!");

eIse

3

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

m_IfFont.lfHeight=12;

m_IfFont.IfCharSet=GB2312_CHARSET:

strcpy(m_lfFontoIfFaceName,”宋体”);

m_strCIassN0=m_strSQL="w;

4

CFontfont;

LOGFONTlf=m_lfFont;

IfoIfWeight=700;

strcpy(If.IfFaceName,"幼圆");

font.CreateFontIndirect(&lf);

TEXTMETRICtm;

pDC—〉GetTextMetrics(&tm);

intnLineHeight=(int)((tm0tmHeight+tm.tmExternaILeading)*1o5);

〃行高为1o5倍字符高度

intx=0,y=0,nWidth;

CFont*oIdFont=pDC—>SeIectObject(&font);//使用新字体

〃揄出表头

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

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

CCIassInfoSetcSet;

cSet.m_strFilter=strSQL;

cSetoOpen();

for(UINTi=0;i<cSetomnFields:i++)

(-

〃计笄每一个字段所需的长度

nWidth=tm.tniAveCharWidlh*nStrWidth[i];

pDC—>Text0ut(x,y,strHeader[i]);

x+二nWidth;

1

pDC—〉SelectObject(oldFont);

〃显示具体内容

CStringstr;

while(!cSet0IsEOF())

(

if(strClass-cSetom_clsssno)

{

〃这是要强调显示的班级

If.IfWeight=0;

strcpy(IfoIfFaceNane,v楷体_GB2312”);

fontoDeIeteObject0;

font.CreateFontIndirect(&If);

pDC-)SeIectObject(&font);

)

eIse

pDC->SeIectObject(oIdFont);〃使用原来的字体

x=0;y+=nLineHeight;

for(UINTi=0;i<cSet.m_nFields;i++)

(

cSetoGetFieldValue(i,str);

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

nWidth=tm.tmAveCharWidth*nStrWidth[i];

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

x+=nWidth;

}

cSetoMoveNext();

]

cSetoClose();

〃设置视图滚动大小

CSizesizeTotaI;

sizeTotaI<>ex=x+nWidth;sizeTotaI.cy=y+nLineHeight;

SetScroIISizes(MM_TEXT,sizeTotaI);

5

CCIassInfoDIgdig;

if(dIgoDoModaI()!=lDOK)return;

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

CClassInfoSetinfoSet;

infoSet.m_strFiI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论