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包含语句:#includeafxdb.h如图(图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_CLASSNOValueCStringm_strClassNOIDC_EDIT_DEPARTValueCStringm_strDepartIDC_EDIT_SPECIALValueCStringm_strSpecialIDC_COMBO_YEARValueCStringm_strYearIDC_DATETIMEPICKER1ValueCTimem_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)所示输入下面表格的变量类型和名称即可。连续三次。变量类型变量名称LOGFONTm_lfFontCStringm_strClassNOCStringm_strSQL在CSTUDXINXIView::CSTUDXINXIView()添加代码。代码位于附录3.(图4.1)添加一个成员函数如(图4.2)所示。(图4.2)添加代码,位于附录4.在STUDXINXIView.cpp文件的前面添加CClassInfo类的包含语句:#includeClassInfoSet.h打开菜单资源,添加如(图4.3)所示的菜单项。(图4.3)用类向导为CSTUDXINXIView类添加该菜单项的COMMAND消息映射,并添加代码。代码位于附录5在CSTUDXINXIView::OnDraw函数添加代码。代码位于附录6在STUDXINXIView.cpp文件的前面添加ClassInfoDlg类的包含语句:#includeClassInfoDlg.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文件的前面添加包含语句:#includeSeekClassDlg.h(图5.2)运行,编译。附录:1m_strYear=4;//有关于消息映射UpdateData(FALSE);2UpdateData();m_strClassNO.TrimLeft();m_strDepart.TrimLeft();m_strSpecial.TrimLeft();if(m_strDepart.IsEmpty())MessageBox(必须要有所院系!);elseif(m_strSpecial.IsEmpty())MessageBox(必须要有班级!);elseif(m_strClassNO.IsEmpty())MessageBox(必须要有班级号!);else3memset(&m_lfFont,0,sizeof(LOGFONT));m_lfFont.lfHeight=12;m_lfFont.lfCharSet=GB2312_CHARSET;strcpy(m_lfFont.lfFaceName,宋体);m_strClassNO=m_strSQL=;4CFontfont;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;icSet.m_nFields;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,楷体_GB2312);font.DeleteObject();font.CreateFontIndirect(&lf);pDC-SelectObject(&font);}elsepDC-SelectObject(oldFont);//使用原来的字体x=0;y+=nLineHeight;for(UINTi=0;icSet.m_nFields;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);5CClassInfoDlgdlg;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();//重新调用OnDraw6CFontfont;font.CreateFontIndirect(&m_lfFont);CFont*oldFont=pDC-SelectObject(&font);DispClassInfo(pDC,m_strClassNO,m_strSQL);pDC-SelectObject(oldFont);7CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);8UpdateData();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);elsem_strSQL.Format(specia

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功