MFC学生信息管理系统.docx

上传人:b****2 文档编号:2046028 上传时间:2023-05-02 格式:DOCX 页数:17 大小:268.91KB
下载 相关 举报
MFC学生信息管理系统.docx_第1页
第1页 / 共17页
MFC学生信息管理系统.docx_第2页
第2页 / 共17页
MFC学生信息管理系统.docx_第3页
第3页 / 共17页
MFC学生信息管理系统.docx_第4页
第4页 / 共17页
MFC学生信息管理系统.docx_第5页
第5页 / 共17页
MFC学生信息管理系统.docx_第6页
第6页 / 共17页
MFC学生信息管理系统.docx_第7页
第7页 / 共17页
MFC学生信息管理系统.docx_第8页
第8页 / 共17页
MFC学生信息管理系统.docx_第9页
第9页 / 共17页
MFC学生信息管理系统.docx_第10页
第10页 / 共17页
MFC学生信息管理系统.docx_第11页
第11页 / 共17页
MFC学生信息管理系统.docx_第12页
第12页 / 共17页
MFC学生信息管理系统.docx_第13页
第13页 / 共17页
MFC学生信息管理系统.docx_第14页
第14页 / 共17页
MFC学生信息管理系统.docx_第15页
第15页 / 共17页
MFC学生信息管理系统.docx_第16页
第16页 / 共17页
MFC学生信息管理系统.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MFC学生信息管理系统.docx

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

MFC学生信息管理系统.docx

MFC学生信息管理系统

甘肃政法学院

本科生实验报告

(数据库编程)

姓名:

郭加强

学院:

计算机科学学院

专业:

计算机科学与技术

班级:

计算机科学与技术一班

实验课程名称:

面向对象程序设计

实验日期:

2012年6月20日

指导教师及职称:

金涛老师

实验成绩:

开课时间:

2011-2012学年第二学期

 

甘肃政法学院实验管理中心印制

 

实验题目

ODBC数据库编程

小组合作

姓名

郭加强

班级

计本班

学号

201181110105

一、实验目的

1.学习使用VC++与数据库进行连接,创建数据库编程。

2.熟悉数据库编程的作用和使用方法。

二.实验环境

VisualC++6.0

三、实验内容与步骤

1.创建一个基于Clistview的单文本应用程序Ex_ODBC,用来操作ODBC源“用于MFCODBC的数据库”中指定的score表。

如图1所示:

图1

2.对于大量数据处理,采用数据库更为安全简便。

例如,对于学生成绩管理系统,常常需要处理学生的基本信息、课程成绩及与学生有关的院系、专业情况等,这些信息用数据库表的形式来描述更为清晰。

四、实验过程与分析

1.创建工作文件夹。

2.并建立数据库和数据表。

(1)启动数据库,选择新建文件,单击空数据库,弹出一个对话框,指定数据库名main.mdb。

单击创建按钮。

(2)双击“使用设计器创建表”,出现如图所示的表设计界面,其中单击数据类型框的下拉按钮,可在弹出的列表中选择合适的数据类型。

 (3)保存建立的数据库和数据表。

 (4)在数据库设计窗口中,双击score表,就可向数据表输入记录数据。

如图2所示:

图2

 (5)在Windows“控制面板”的“管理工具”中,找到并运行“数据库(ODBC)”组件,弹出“ODBC数据源管理器”的对话框。

如图3所示:

图3

 (6)加载数据库到VisualC++6.0联系,将实验中的main.mdb数据库导入。

 (7)一直单击确定按钮,刚才创建的用户数据源就会被添加在“ODBC数据源管理器”的“用户数据源”列表中。

如图4所示:

图4

3.

(1)启动VisualC++6.0。

 

(2)用MFC AppWizard创建一个基于CListView的默认单文档应用程序Ex_ODBC。

在向导的第六步对话框中为CEx_ODBCView选定CListView基类。

如图5所示:

图5

(3)添加代码,编译并运行。

得到截图如图6所示:

图6

4.学生信息的添加、修改和删除

(1)添加对话框,创建对话框类CScoreDlg。

如图7所示,将添加的对话框的标题设为“课程成绩信息”,将对话框的字体改为“宋体,9号”。

将“OK”和“Cancel”按钮标题分别改为“确定”和“取消”。

图7

5.添加代码,并运行得到的截图如图8所示:

图8

6.视图类实验代码如下:

#if!

defined(AFX_EX_ODBCVIEW_H__67EB9D2E_5048_4026_880E_A41624015617__INCLUDED_)

#defineAFX_EX_ODBCVIEW_H__67EB9D2E_5048_4026_880E_A41624015617__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

classCEx_ODBCView:

publicCListView

{

protected:

//createfromserializationonly

CEx_ODBCView();

DECLARE_DYNCREATE(CEx_ODBCView)

//Attributes

public:

CEx_ODBCDoc*GetDocument();

//Operations

public:

//Overrides

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CEx_ODBCView)

public:

virtualvoidOnDraw(CDC*pDC);//overriddentodrawthisview

virtualBOOLPreCreateWindow(CREATESTRUCT&cs);

protected:

virtualvoidOnInitialUpdate();//calledfirsttimeafterconstruct

virtualBOOLOnPreparePrinting(CPrintInfo*pInfo);

virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);

virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo);

//}}AFX_VIRTUAL

//Implementation

public:

voidCEx_ODBCView:

:

UpdateListItemData();

virtual~CEx_ODBCView();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

//Generatedmessagemapfunctions

protected:

//{{AFX_MSG(CEx_ODBCView)

afx_msgvoidOnOpAdd();

afx_msgvoidOnOpChange();

afx_msgvoidOnOpDel();

afx_msgvoidOnDblclk(NMHDR*pNMHDR,LRESULT*pResult);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

#ifndef_DEBUG//debugversioninEx_ODBCView.cpp

inlineCEx_ODBCDoc*CEx_ODBCView:

:

GetDocument()

{return(CEx_ODBCDoc*)m_pDocument;}

#endif

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

#endif//!

defined(AFX_EX_ODBCVIEW_H__67EB9D2E_5048_4026_880E_A41624015617__INCLUDED_)

7.资源类代码如下:

//Ex_ODBCView.cpp:

implementationoftheCEx_ODBCViewclass

//

#include"stdafx.h"

#include"Ex_ODBC.h"

#include"Ex_ODBCDoc.h"

#include"Ex_ODBCView.h"

#include"Scoreset.h"

#include"ScoreDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CEx_ODBCView

IMPLEMENT_DYNCREATE(CEx_ODBCView,CListView)

BEGIN_MESSAGE_MAP(CEx_ODBCView,CListView)

//{{AFX_MSG_MAP(CEx_ODBCView)

ON_COMMAND(ID_OP_ADD,OnOpAdd)

ON_COMMAND(ID_OP_CHANGE,OnOpChange)

ON_COMMAND(ID_OP_DEL,OnOpDel)

ON_NOTIFY_REFLECT(NM_DBLCLK,OnDblclk)

//}}AFX_MSG_MAP

//Standardprintingcommands

ON_COMMAND(ID_FILE_PRINT,CListView:

:

OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CListView:

:

OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CListView:

:

OnFilePrintPreview)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CEx_ODBCViewconstruction/destruction

CEx_ODBCView:

:

CEx_ODBCView()

{

//TODO:

addconstructioncodehere

}

CEx_ODBCView:

:

~CEx_ODBCView()

{

}

BOOLCEx_ODBCView:

:

PreCreateWindow(CREATESTRUCT&cs)

{

//TODO:

ModifytheWindowclassorstylesherebymodifying

//theCREATESTRUCTcs

cs.style|=LVS_REPORT;

returnCListView:

:

PreCreateWindow(cs);

}

/////////////////////////////////////////////////////////////////////////////

//CEx_ODBCViewdrawing

voidCEx_ODBCView:

:

OnDraw(CDC*pDC)

{

CEx_ODBCDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:

adddrawcodefornativedatahere

}

voidCEx_ODBCView:

:

OnInitialUpdate()

{

CListView:

:

OnInitialUpdate();

CListCtrl&m_ListCtrl=GetListCtrl();

m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);//LVS_EX_GRIDLINES);

CScoreSetcSet;

cSet.Open();

CODBCFieldInfofield;//创建列表头

for(UINTi=0;i

{

cSet.GetODBCFieldInfo(i,field);

m_ListCtrl.InsertColumn(i,field.m_strName,LVCFMT_LEFT,100);

}

cSet.Close();

UpdateListItemData();//关闭记录集

//TODO:

YoumaypopulateyourListViewwithitemsbydirectlyaccessing

//itslistcontrolthroughacalltoGetListCtrl().

}

/////////////////////////////////////////////////////////////////////////////

//CEx_ODBCViewprinting

BOOLCEx_ODBCView:

:

OnPreparePrinting(CPrintInfo*pInfo)

{

//defaultpreparation

returnDoPreparePrinting(pInfo);

}

voidCEx_ODBCView:

:

OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{

//TODO:

addextrainitializationbeforeprinting

}

voidCEx_ODBCView:

:

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{

//TODO:

addcleanupafterprinting

}

/////////////////////////////////////////////////////////////////////////////

//CEx_ODBCViewdiagnostics

#ifdef_DEBUG

voidCEx_ODBCView:

:

AssertValid()const

{

CListView:

:

AssertValid();

}

voidCEx_ODBCView:

:

Dump(CDumpContext&dc)const

{

CListView:

:

Dump(dc);

}

CEx_ODBCDoc*CEx_ODBCView:

:

GetDocument()//non-debugversionisinline

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx_ODBCDoc)));

return(CEx_ODBCDoc*)m_pDocument;

}

#endif//_DEBUG

/////////////////////////////////////////////////////////////////////////////

//CEx_ODBCViewmessagehandlers

voidCEx_ODBCView:

:

UpdateListItemData()

{

CListCtrl&m_ListCtrl=GetListCtrl();

m_ListCtrl.DeleteAllItems();

CScoreSetcSet;

cSet.m_strSort="studentno,courseno";

cSet.Open();//添加列表项

intnItem=0;

CStringstr;

while(!

cSet.IsEOF())

{

for(UINTi=0;i

{

cSet.GetFieldValue(i,str);

if(i==0)

m_ListCtrl.InsertItem(nItem,str);

else

m_ListCtrl.SetItemText(nItem,i,str);

}

nItem++;

cSet.MoveNext();

}

cSet.Close();

}

voidCEx_ODBCView:

:

OnOpAdd()

{

//TODO:

Addyourcommandhandlercodehere

CScoreDlgdlg;

if(dlg.DoModal()==IDOK)

{//先查找是否有同学号同课程的记录

CScoreSetcSet;

cSet.m_strFilter.Format("studentno='%s'ANDcourseno='%s'",dlg.m_strStuNO,dlg.m_strCourseNO);

cSet.Open();

if(!

cSet.IsEOF())

{

MessageBox("有相同的记录存在!

");

cSet.Close();

return;

}

cSet.AddNew();

cSet.m_studentno=dlg.m_strStuNO;

cSet.m_courseno=dlg.m_strCourseNO;

cSet.m_score=dlg.m_fScore;

cSet.m_credit=dlg.m_fCredit;

cSet.Update();

cSet.Requery();

cSet.Close();

MessageBox("记录已添加!

");

UpdateListItemData();

}

}

voidCEx_ODBCView:

:

OnOpChange()

{

//TODO:

Addyourcommandhandlercodehere

MessageBox("双击要修改的列表项即可!

");

}

voidCEx_ODBCView:

:

OnOpDel()

{

//TODO:

Addyourcommandhandlercodehere

CListCtrl&m_ListCtrl=GetListCtrl();

POSITIONpos;

pos=m_ListCtrl.GetFirstSelectedItemPosition();

if(pos==NULL)

{

MessageBox("你还没有选中列表项!

");

return;

}

intnItem=m_ListCtrl.GetNextSelectedItem(pos);

CStringstrItem,str;

strItem=m_ListCtrl.GetItemText(nItem,0);

str.Format("你确实要删除%s列表项(记录)吗?

");

if(IDOK!

=MessageBox(str,"删除确认",MB_ICONQUESTION|MB_OKCANCEL))

return;

CStringstrStuNO=m_ListCtrl.GetItemText(nItem,0);

CStringstrCourseNO=m_ListCtrl.GetItemText(nItem,1);

CScoreSetinfoSet;

infoSet.m_strFilter.Format("studentno='%s'ANDcourseno='%s'",strStuNO,strCourseNO);

infoSet.Open();

if(!

infoSet.IsEOF())

{

CRecordsetStatusstatus;

infoSet.GetStatus(status);

infoSet.Delete();

if(status.m_lCurrentRecord==0)

infoSet.MoveNext();

else

infoSet.MoveFirst();

}

if(infoSet.IsOpen())

infoSet.Close();

MessageBox("当前指定的记录已删除!

");

UpdateListItemData();

}

voidCEx_ODBCView:

:

OnDblclk(NMHDR*pNMHDR,LRESULT*pResult)

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CListCtrl&m_ListCtrl=GetListCtrl();

POSITIONpos;

pos=m_ListCtrl.GetFirstSelectedItemPosition();

if(pos==NULL)

{

MessageBox("应双击要修改的列表项!

");

return;

}

intnItem=m_ListCtrl.GetNextSelectedItem(pos);

CStringstrStuNO=m_ListCtrl.GetItemText(nItem,0);

CStringstrCourseNO=m_ListCtrl.GetItemText(nItem,1);

CScoreSetsSet;

sSet.m_strFilter.Format("studentno='%s'ANDcourseno='%s'",strStuNO,strCourseNO);

sSet.Open();

CScoreDlgdlg;

dlg.m_strCourseNO=sSet.m_courseno;

dlg.m_strStuNO=sSet.m_studentno;

dlg.m_fScore=sSet.m_score;

dlg.m_fCredit=sSet.m_credit;

if(IDOK!

=dlg.DoModal())

{

if(sSet.IsOpen())sSet.Close();

return;

}

sSet.Edit();

sSet.m_score=dlg.m_fScore;//只能修改学分

sSet.m_credit=dlg.m_fCredit;//只能修改成绩

sSet.Update();

sSet.Requery();

if(sSet.IsOpen())sSet.Close();//更新列表视图

MessageBox("当前只能修改成绩和学分,修改成功!

");

UpdateListItemData();

*pResult=0;

}

8.实验添加学生信息对话框截图,如图9所示:

图9

五、实验总结

1,在建立数据库与数据表是应注意名称还有格式及其他选项。

2,在数据库与VC之间建立连接时,要注意类的添加还有选项的选择。

3,在建立对话框时要注意美观和功能的全面,信息的详细等。

4,编写代码时要注意头文件的使用,还有其他的一下小错误,如大小写,标点符号等。

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

当前位置:首页 > 临时分类 > 批量上传

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

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