您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C++实验报告exp05
本科学生设计性实验报告项目组长____学号_____成员专业____班级____实验项目名称_____实验5数据库程序_______指导教师及职称__________开课学期2015至_2016学年_2_学期上课时间2016年6月19日一、实验设计方案实验名称:数据库程序实验时间:2016.6小组合作:是○否○小组成员:1、实验目的:对于大量数据处理,采用数据库更为安全简便。例如,对于学生信息管理系统,常常需要处理学生的基本信息、课程成绩以及课程信息等,这些信息用数据库表的形式来描述更为清晰。本实验将在列表视图的显示视图中显示学生的基本信息内容。(1)用MicrosoftAccess2003创建一个数据库main.mdb,含有4个数据表:学生基本信息表student、课程信息表course、课程成绩表score和专业数据表special,并建立ODBC联接。(2)创建学生课程成绩表score的CRecordSet派生类CScoreSet。(3)在主菜单中添加“课程成绩(&S)”顶层菜单,在该菜单添加“添加(&A)”、“删除(&D)”和“修改(&C)”子菜单。(4)选择“添加”菜单命令,弹出“学生课程成绩”对话框,单击“添加”按钮,在score表中添加一条记录,并自动更新列表视图显示的内容。如图5.1所示。图5.1学生课程信息输入及显示图5.2学生课程信息修改及显示(5)当选定列表视图中的某个列表项后,选择“删除”菜单命令,弹出消息对话框,询问是否确认删除,单击“确定”后,当前选择的列表项所在的数据表记录被删除,并自动更新列表视图显示的内容。(6)当选定列表视图中的某个列表项后,选择“修改”菜单命令,弹出“学生课程成绩”对话框,对话框的内容就是当前选择的列表项中的内容,修改后,单击“修改”按钮,当前选择的列表项所在的数据表记录被修改,并自动更新列表视图显示的内容。2、实验场地及仪器、设备和材料:H1143、实验思路(实验内容、数据处理方法及实验步骤等):1.创建数据库和数据表这里以MicrosoftAccess2003为例说明数据库和数据表的创建过程。①启动MicrosoftAccess2003。②选择“文件”→“新建”菜单,在右边任务窗格中单击“空数据库”,弹出一个对话框,将文件路径指定到“…\VisualC++程序\实验\实习”,指定数据库名main.mdb。单击“创建”按钮,出现如图5.3所示的数据库设计窗口。图5.3数据库设计窗口③双击“使用设计器创建表”,出现如图5.4所示的表设计界面。其中,单击数据类型框的下拉按钮,可在弹出的列表中选择适当的数据类型。在下方的常规页面中可以设置字段大小、格式等内容。图5.4表设计界面④按表9.1添加字段名和数据类型,关闭表设计界面,弹出一个消息对话框,询问是否保存刚才设计的数据表,单击“是(Y)”按钮,出现如图5.5所示的对话框,在表名称中输入score,单击““确定”按钮。此时出现一个消息对话框,用来询问是否要为表创建主关键词,单击[否(N)”按钮。注意:若单击“是(Y)”按钮,则系统会自动为表添加另一个字段ID。表9.1学生课程成绩表(score)结构序号字段名称数据类型字段大小小数位字段含义1studentno文本8学号2course文本7课程号3score数字单精度1成绩4credit数字单精度1学分⑤在数据库设计窗口中,双击score表,就可向数据表输入记录数据。如图5.6是记录输入的结果。图5.5保存数据表图5.6在score表中添加的记录⑥按照上面的过程,添加学生基本信息表student、课程信息表course和专业数据表special,并输入如图5.7所示的记录。图5.7各数据表添加的记录⑦关闭MicrosoftAccess2003。2.创建ODBC数据源①运行ODBC组件,进入ODBC数据源管理器。②单击“添加”按钮,弹出有一驱动程序列表的“创建新数据源”对话框,在该对话框中选择MicrosoftAccessDriver。③单击“完成”按钮,进入指定驱动程序的安装对话框,数据源名称设为“学生信息管理系统”,单击“选择”按钮将本实验中的main.mdb数据库。④单击“确定”按钮,刚才创建的用户数据源被添加在“ODBC数据源管理器”的“用户数据源”列表中。3.启动VisualC++6.0启动VisualC++6.0系统。4.创建单文档应用程序Ex_Student①用MFCAppWizard创建一个单文档应用程序Ex_Student,在向导的第2步选中“标题文件”,在向导的第六步将CEx_StudentView的基类由CView改为CListView。在CMainFrame类的PreCreateWindow虚函数中添加如下代码,使窗口大小为屏幕大小的一半,且位于屏幕正中间:BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){if(!CFrameWnd::PreCreateWindow(cs))returnFALSE;//TODO:ModifytheWindowclassorstylesherebymodifying//theCREATESTRUCTcsintcx=GetSystemMetrics(SM_CXSCREEN);//获得屏幕大小:宽intcy=GetSystemMetrics(SM_CYSCREEN);//获得屏幕大小:高cs.cx=0.5*cx;//窗口宽cs.cy=0.5*cy;//窗口高cs.x=cx/4;//窗口左上角位置:x坐标(像素)cs.y=cy/4;//窗口左上角位置:y坐标(像素)returnTRUE;}②在CEx_StudentView::PreCreateWindow函数添加下列代码,用来设置列表视图内嵌列表控件的风格:BOOLCEx_StudentView::PreCreateWindow(CREATESTRUCT&cs){cs.style|=LVS_REPORT;//报表风格returnCListView::PreCreateWindow(cs);}在该类的OnInitialUpdate函数中添加如下代码,控制显示报表的样式:voidCEx_StudentView::OnInitialUpdate(){CListView::OnInitialUpdate();//TODO:YoumaypopulateyourListViewwithitemsbydirectlyaccessing//itslistcontrolthroughacalltoGetListCtrl().CListCtrl&m_ListCtrl=GetListCtrl();LONGlStyle;lStyle=GetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE);//获取当前窗口风格lStyle&=~LVS_TYPEMASK;//清除显示方式位lStyle|=LVS_REPORT;//设置报表风格SetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE,lStyle);//设置窗口风格DWORDdwStyle=m_ListCtrl.GetExtendedStyle();dwStyle|=LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用于报表风格的listctrl)dwStyle|=LVS_EX_GRIDLINES;//网格线(只适用与报表风格的listctrl)m_ListCtrl.SetExtendedStyle(dwStyle);//设置扩展风格m_ListCtrl.SetBkColor(RGB(227,239,255));//设置背景颜色m_ListCtrl.SetTextBkColor(RGB(190,219,255));//设置文本背景颜色m_ListCtrl.SetTextColor(RGB(10,10,80));//设置文本颜色}5.为数据表创建CRecordSet用户派生类①在Ex_Student中添加学生基本信息表student、课程信息表course、课程成绩表score和专业数据表special的CRecordSet派生类CStudentSet、CCourseSet、CScoreSet和CSpecialSet。按Ctrl+W调出类向导,添加一个新类,名字叫CScoreSet。点“Change”按钮,把文件名改为ScoreSet.h和ScoreSet.cpp。点击OK,在随之弹出的“DatabaseOptions”窗口中做如下设置(数据源Datasource选“ODBC”,在后面的下拉列表中选“学生信息管理系统”,Recordsettype项选择Snapshot,Bindallcolumns选中):点击“确定”后,在弹出的“SelectDatabaseTables”对话框中选择数据表“score”剩下就是点确定(OK)键了。这样我们就创建好一个跟数据库main.mdb中的表score相关联的记录集类CScoreSet了,可以在工作区的类视图下观察到这个新添加的类。如果需要使用别的表,创建对应记录集类的过程跟上面相同。②在stdafx.h文件中添加CRecordSet头文件包含#includeafxdb.h。(这一步也可以在步骤4.①的应用程序向导的第2步选择“仅标题文件(Headerfilesonly”来完成))6.创建“学生课程成绩”对话框和CScoreDlg类①创建“学生课程成绩”对话框,资源ID设置为IDD_SCORE。如下图所示:②双击对话框中的空白处,为该对话框添加新类CScoreDlg,对话框类文件设为ScoreDlg.h和ScoreDlg.cpp。③将ScoreDlg.cpp文件前面的头文件中添加文件包含指令#includeEx_Student.h。④利用类向导为四个编辑框分别关联成员变量(从上到下):7.实现添加、删除和修改功能①打开菜单资源IDR_MAINFRAME,添加“课程成绩(&S)”顶层菜单,在该菜单添加“添加(&A)”(ID_SCORE_ADD)、“删除(&D)”(ID_SCORE_DEL)和“修改(&C)”(ID_SCORE_CHANGE)子菜单。②在CEx_StudentView类添加成员函数DeleteAllColumn,用来删除列表视图的标题头,以便能再创建标题头显示不同的信息。voidCEx_StudentView::DeleteAllColumn(){CListCtrl&m_ListCtrl=GetListCtrl();intnCount=0;CHeaderCtrl*pHeaderCtrl=m_ListCtrl.GetHeaderCtrl();if(pHeaderCtrl!=NULL)nCount=pHeaderCtrl-GetItemCount();for(inti=0;inCount;i++)控件ID变量类型变量名字含义IDC_EDIT_SNOCStringm_strStuNo学号IDC_EDIT_CNOCStringm_strCourseNo课程号IDC_EDIT_SCOREfloatm_fScore成绩IDC_EDIT_CREDITfloatm_fCredit学分IDC_BTN_UPDATECButtonm_btnOKOK按钮IDC_CANCEL――――取消按钮m_ListCtrl.DeleteColumn(0);}③在CEx_StudentView类添加成员函数DispScoreInfo,用来显示课程成绩信息。参数strFilter作为过滤器来使用,用于筛选记录。voidCEx_StudentView::DispScoreInfo(CStringstrFilter){DeleteAllColumn();//删除表头CListCtrl&m_ListCtrl=GetListCtrl();CStringstrHeader[]={学号,课程号,成绩,学分};for(
本文标题:C++实验报告exp05
链接地址:https://www.777doc.com/doc-4285604 .html