1、项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 数据库应用系统是在数据库管理系统的支持下运行的计算机数据库应用系统是在数据库管理系统的支持下运行的计算机应用软件。前已述及,开发数据库应用系统不仅要进行数据应用软件。前已述及,开发数据库应用系统不仅要进行数据库的设计,而且还要进行应用程序的设计,这也是前面项目库的设计,而且还要进行应用程序的设计,这也是前面项目7中提到的系统实施阶段的主要任务。为了使读者对在不同的中提到的系统实施阶段的主要任务。为了使读者对在不同的开发环境下进行数据库应用系统编程有个较为全面的认识,开发环境
2、下进行数据库应用系统编程有个较为全面的认识,本项目选择了本项目选择了Visual C+、JSP和和ASP.NET三种不同的开发环三种不同的开发环境来介绍数据库应用程序境来介绍数据库应用程序的开发方法的开发方法。新课导入新课导入:项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 任务描述:任务描述:按照按照开发的基本过程和内容开发的基本过程和内容,将项目分解成以下,将项目分解成以下几个任务几个任务:任务任务10.1 确定学生成绩管理系统的体系结构及其确定学生成绩管理系统的体系结构及其前台开发工具前台开发工具 任务任务10.2 确定系统的数据库访问技术(包括连接确定系统的数据库访问技术
3、(包括连接技术和数据库访问对象)技术和数据库访问对象)任务任务10.3 使用使用Visual C+开发学生成绩管理系统开发学生成绩管理系统 任务任务10.4 使用使用JSP开发学生成绩管理系统开发学生成绩管理系统 任务任务10.5 使用使用ASP.NET开发学生成绩管开发学生成绩管理系统理系统项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 教学目标:教学目标:知识目标:知识目标:(1)掌握掌握3种不同的数据库种不同的数据库系统体系结构及其适用场合系统体系结构及其适用场合;了解;了解常用常用的数据库连接技术的数据库连接技术,以及,以及ODBC、JDBC和和OLE DB三种接口的技术
4、三种接口的技术要点;要点;(2)掌握掌握数据库访问对象数据库访问对象ADO和和ADO.NET的结构及其主要对象;的结构及其主要对象;(3)了解常用的应用程序开发工具了解常用的应用程序开发工具Visual C+、JSP及及ASP.NET的的编程特点编程特点及其主要的编程技术及其主要的编程技术。技能目标:技能目标:(1)会使用会使用常用的数据库连接技术常用的数据库连接技术,能进行,能进行ODBC、JDBC和和OLE DB三种接口的使用;三种接口的使用;(2)能够使用能够使用数据库访问对象数据库访问对象ADO和和ADO.NET进行进行SQL Server数数据操作据操作。项目项目10学生成绩数据库系
5、统的开发学生成绩数据库系统的开发 应用程序设计的一个关键要素是系统的体系结构,体系结构应用程序设计的一个关键要素是系统的体系结构,体系结构决定了应用程序的各个部分如何进行交互,同时也决定了每决定了应用程序的各个部分如何进行交互,同时也决定了每个部分实现的功能。随着信息系统的大型化、复杂化、分布个部分实现的功能。随着信息系统的大型化、复杂化、分布式的发展趋势和变化特点,其体系结构也发生了很大的变化,式的发展趋势和变化特点,其体系结构也发生了很大的变化,从以往基于局域网的客户从以往基于局域网的客户/服务器(服务器(Client/Server,简称,简称C/S)结 构 到 已 广 泛 使 用 的 基
6、 于结 构 到 已 广 泛 使 用 的 基 于 W e b 的 浏 览 器的 浏 览 器/服 务 器服 务 器(Browser/Server,简称,简称B/S)结构,再到目前正得到迅速应)结构,再到目前正得到迅速应用的基于用的基于.NET技术的分布式计算框架。技术的分布式计算框架。1.C/S结构结构 2.B/S结构结构 3.NET框架结构框架结构知识点知识点1:目前常用的数据库应用系统体系结构:目前常用的数据库应用系统体系结构 项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 C/SC/S结构结构 数据库服务器客户机客户机计算机网络图10-1C/S结构模型项目项目10学生成绩数据库
7、系统的开发学生成绩数据库系统的开发 B/SB/S结构结构 Web服务器数据库服务器浏览器浏览器计算机网络图10-2B/S结构模型项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发.NET.NET框架结构框架结构 用户应用表示层数据库平台通用语言运行时(CLR)通信协议(XML、SOAP、UDDI等开放标准)Web服务器浏览器组件库Win Forms图10-3基于.NET的应用程序架构项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 任务任务1:确定学生成绩管理系统的体系结构确定学生成绩管理系统的体系结构【任务描述】试根据项目【任务描述】试根据项目7所描述的应用需求确定学生
8、成绩管理系统的体所描述的应用需求确定学生成绩管理系统的体系结构,并选择合适的前台开发工具。系结构,并选择合适的前台开发工具。【任务实现】根据项目【任务实现】根据项目7所描述的应用需求,现要建立一个基于校园网络所描述的应用需求,现要建立一个基于校园网络应用平台的、面向学校教务部门以及各系部教学管理科室等层次用户的学应用平台的、面向学校教务部门以及各系部教学管理科室等层次用户的学生成绩管理系统,所以本系统应在学校校园网的基础上建立。为了使读者生成绩管理系统,所以本系统应在学校校园网的基础上建立。为了使读者能体会到不同系统体系结构的差别,这里假设有两种不同结构的校园网,能体会到不同系统体系结构的差别
9、,这里假设有两种不同结构的校园网,一种为仅能在学校内部使用的局域网,用户需在客户机上访问学生成绩管一种为仅能在学校内部使用的局域网,用户需在客户机上访问学生成绩管理系统;另一种为与外界连通的理系统;另一种为与外界连通的Internet网络,用户只需在客户机上安装网络,用户只需在客户机上安装一个通用的浏览器软件即可访问校园网。这样,前者情况下学生成绩管理一个通用的浏览器软件即可访问校园网。这样,前者情况下学生成绩管理系统可以选择系统可以选择C/S体系结构,后者情况下则可以使用体系结构,后者情况下则可以使用B/S体系结构或体系结构或.NET框架结构。另外,在系统开发工具的选择上,框架结构。另外,在
10、系统开发工具的选择上,C/S架构使用架构使用Visual C+前前台开发环境;台开发环境;B/S架构使用架构使用JSP脚本环境进行开发;而脚本环境进行开发;而.NET框架结构则使框架结构则使用用ASP.NET开发环境。它们的后台数据库均建立在开发环境。它们的后台数据库均建立在SQL-Server 2000之上。之上。项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 在实际开发中,为了使应用程序能够操作数据库中的数据,在实际开发中,为了使应用程序能够操作数据库中的数据,必须建立一个与数据库管理系统的访问机制,以实现应必须建立一个与数据库管理系统的访问机制,以实现应用程序和数据库之间的
11、互相通信。目前实现这种通信的用程序和数据库之间的互相通信。目前实现这种通信的方式主要有两种:数据库方式主要有两种:数据库API(Application Program Interface,称为,称为“应用程序接口应用程序接口”)和数据访问对象接)和数据访问对象接口。口。数据库数据库API(数据库连接技术)(数据库连接技术):1.ODBC 2.OLE DB 3.JDBC 知识点知识点2:数据库访问技术:数据库访问技术项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 1 1、ODBCODBC ODBC是开放式数据库连接(是开放式数据库连接(Open Database Connectiv
12、ity)的英文缩写。它是微)的英文缩写。它是微软公司为了便于用户在软公司为了便于用户在Windows系统下开发应用系统而制定的一种开放式的、标准系统下开发应用系统而制定的一种开放式的、标准化的应用程序接口。化的应用程序接口。2 2、OLE DBOLE DB OLE DB建立在建立在Microsoft的的COM(组件对象模型,其商业概念的称谓为(组件对象模型,其商业概念的称谓为ActiveX)基础上,它包括一组基础上,它包括一组COM组件程序,组件与组件之间或者组件与客户程序之间通组件程序,组件与组件之间或者组件与客户程序之间通过标准的过标准的COM接口进行通讯,接口进行通讯,COM接口封装了各
13、种数据系统的访问操作,为数据接口封装了各种数据系统的访问操作,为数据使用者(即应用程序)和数据提供者建立了标准。使用者(即应用程序)和数据提供者建立了标准。OLE DB模型主要包括以下一些模型主要包括以下一些COM接口对象:接口对象:(1)数据源)数据源(Data Source)对象对象(2)会话)会话(Session)对象对象(3)命令)命令(Command)对象对象(4)行集)行集(RowSet)对象对象3 3、JDBC JDBC API提供两种主要接口:一是面向开发人员的提供两种主要接口:一是面向开发人员的java.sql程序包,使得程序包,使得java程序程序员能够进行数据库连接,执行
14、员能够进行数据库连接,执行SQL查询,并得到结果集,查询,并得到结果集,java.sql程序包提供了程序包提供了6个个类和类和18个接口;二是面向底层数据库厂商的个接口;二是面向底层数据库厂商的JDBC Drivers,它提供了,它提供了4种类型的数种类型的数据库驱动方式:据库驱动方式:JDBC-ODBC Bridge、JDBC-Native API Bridge、JDBC-middleware和和Pure JDBC Driver。项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 ADO的数据存取结构 ODBC应用程序接口OLE DBADO非SQL DATASQL DATA图10-
15、4在Web环境下ADO的数据存取结构项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 ADO中的对象和集合 Connection对象对象 Command对象对象 Recordset对象对象 Parameters对象及对象及Parameters集合集合 Fields对象及对象及Fields集合集合 Property对象及对象及Property集合集合 Errors对象及对象及Errors集合集合 项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 ADO.NET DataSet组件组件 DataSet包含一个或多个包含一个或多个DataTable对象的集合,对象的集合,这些
16、对象由行、列、主键、外键、约束及其数据的这些对象由行、列、主键、外键、约束及其数据的关系信息组成,由此你可以把关系信息组成,由此你可以把DataSet想象成内存想象成内存中的数据库,不管数据来源于一个关系型的数据库,中的数据库,不管数据来源于一个关系型的数据库,还是来源于一个还是来源于一个XML文档,都可以用一个统一的编文档,都可以用一个统一的编程模型来创建和使用它,从而提高了程序的交互性程模型来创建和使用它,从而提高了程序的交互性和可扩展性,尤其适合于分布式的应用场合。和可扩展性,尤其适合于分布式的应用场合。项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发.NET数据提供程序数据
17、提供程序 Connection对象提供与数据源的连接。对象提供与数据源的连接。Command对象使用户能够访问用于返回数据、修改对象使用户能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库数据、运行存储过程以及发送或检索参数信息的数据库命令。命令。DataReader对象从数据源中提供高性能的数据流。对象从数据源中提供高性能的数据流。DataAdapter对象用于从数据源中检索数据,并填充对象用于从数据源中检索数据,并填充DataSet中的表,并且会将对中的表,并且会将对DataSet作出的更改返回作出的更改返回数据源,从而起到连接数据源,从而起到连接DataSet对象
18、和数据源的桥梁作对象和数据源的桥梁作用。用。项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发.NET数据提供程序Connection事务Command参数DataReaderDataAdapterSelectCommandInsertCommandUpdateCommandDeleteCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionDataRowCollectionDataColumnCollectionXML数据库图10-5 ADO.NET的数据存取结构项目项目10学生成
19、绩数据库系统的开发学生成绩数据库系统的开发 任务任务2:确定系统的数据库访问技术:确定系统的数据库访问技术【任务描述【任务描述】试根据开发学生成绩管理系统不同的体系结构及其采试根据开发学生成绩管理系统不同的体系结构及其采用的前台软件开发工具,确定系统的数据库访问技术用的前台软件开发工具,确定系统的数据库访问技术。【任务实现【任务实现】在本任务中用户可根据不同的系统体系结构和前台软在本任务中用户可根据不同的系统体系结构和前台软件开发工具,选择合适的数据对象接口或件开发工具,选择合适的数据对象接口或API应用程序接口访问应用程序接口访问SQL Server数据库。针对任务数据库。针对任务10.1所
20、采用的所采用的3种系统体系结构及其种系统体系结构及其开发工具可作如下选择:当采用开发工具可作如下选择:当采用Visual C+进行进行C/S结构的系统开结构的系统开发时,可利用发时,可利用ODBC、OLE DB连接技术或连接技术或ADO数据访问对象来访数据访问对象来访问问SQL Server数据库;当采用数据库;当采用JSP进行进行B/S结构的系统开发时,则结构的系统开发时,则利用利用JDBC连接技术;当采用连接技术;当采用ASP.NET进行进行.NET结构的系统开发结构的系统开发时,则采用时,则采用OLE DB、ADO.NET作为数据库的连接和访问技术作为数据库的连接和访问技术。项目项目10
21、学生成绩数据库系统的开发学生成绩数据库系统的开发 1、Visual C+6.0的编程特点的编程特点2、Visual C+的应用程序开发界面的应用程序开发界面3、Visual C+中的应用程序窗口中的应用程序窗口4、Visual C+中的资源中的资源5、事件驱动代码、事件驱动代码6、Microsoft 基本类库(基本类库(MFC)7、Visual C+应用程序的开发步骤应用程序的开发步骤知识点知识点3:Visual C+编程知识编程知识项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 1.Visual C+6.0访问数据库的技术访问数据库的技术(1)ODBC(Open DataBas
22、e Connectivity(2)MFC ODBC(Microsoft Foundation Class ODBC(3)ADO(ActiveX Data Object)2.在在Visual C+6.0中利用中利用MFC ODBC与数据库连接与数据库连接(1)在应用程序中连接数据源)在应用程序中连接数据源(2)在应用程序中断开与数据源的连接)在应用程序中断开与数据源的连接3.在在Visual C+6.0中操作记录集中操作记录集知识点知识点4:在:在Visual C+中访问中访问SQL Server项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(1)纪录集的概念)纪录集的概念(2)记
23、录集的打开)记录集的打开(3)记录集的更新)记录集的更新(4)记录集的滚动)记录集的滚动(5)记录集的定位)记录集的定位(6)记录集的排序)记录集的排序(7)记录集的事务处理)记录集的事务处理(8)记录集的关闭)记录集的关闭项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 1.配置配置ODBC数据源数据源 【任务 描 述】为 数 据 库【任务 描 述】为 数 据 库“Stude ntSc ore”建 立 一 个 名 为建 立 一 个 名 为“Score_ODBC”的系统的系统DSN。【任务实现【任务实现】(1)在)在Windows 2003的控制面板中,双击的控制面板中,双击“管理
24、工具管理工具”中的中的“数数据源(据源(ODBC)”图标,打开图标,打开“ODBC数据源管理器数据源管理器”对话框,对话框,在其中选择在其中选择“系统系统DSN”选项卡,如图选项卡,如图10-17所示。所示。(2)在)在“系统系统DSN”选项卡中,单击选项卡中,单击“添加添加”按钮,打开如图按钮,打开如图10-18所示的所示的“创建新数据源创建新数据源”对话框,在该对话框中选择新建数对话框,在该对话框中选择新建数据源要用的驱动程序据源要用的驱动程序SQL Server,单击,单击“完成完成”按钮。按钮。(3)在打开的如图)在打开的如图10-19所示的所示的“创建数据源向导创建数据源向导”对话框
25、中,输对话框中,输入数据源名、说明信息和连接的入数据源名、说明信息和连接的SQL Server数据库服务器,单数据库服务器,单击击“下一步下一步”按钮。按钮。任务任务3:使用:使用Visual C+开发学生成绩管理系统开发学生成绩管理系统项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 2.学生成绩管理系统中的学生成绩管理系统中的“登录登录”功能模块的设计功能模块的设计 【任务描述】使用【任务描述】使用Visual C+6.0开发学生成绩管理系统中的开发学生成绩管理系统中的“登录登录”功能模块,要求实现不同级别的用户能根据各自的用户名功能模块,要求实现不同级别的用户能根据各自的用户
26、名和口令进入系统,其界面如图和口令进入系统,其界面如图10-24所示。所示。图图10-24 学生成绩管理系统学生成绩管理系统“登陆登陆”功能界面功能界面项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(1)主窗体设计,其主要属性如表)主窗体设计,其主要属性如表10-1所示所示。属性属性设置值设置值IDIDD_DIALOG_LOGINCaption用户登录用户登录项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(2)添加框架控件和其中的文本框控件、组合框控件、标签控件等,各控)添加框架控件和其中的文本框控件、组合框控件、标签控件等,各控件属性的设置如表件属性的设置如表10
27、-2所示。所示。元素名元素名属性属性设置值设置值组框组框IDIDC_STATICCaption用户登录用户登录静态文本静态文本(共(共2个)个)IDIDC_STATICCaption用户名、密码用户名、密码编辑框编辑框(共(共2个)个)IDIDC_EDIT_USER、IDC_EDIT_PASS按钮按钮(共(共2个)个)IDIDOK、IDCANCELCaption登录、退出登录、退出项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(3)编写事件过程程序代码。)编写事件过程程序代码。void CLoginDlg:OnOK()/TODO:Add extra validation here
28、BOOL bLogin=false;CString strUser,strPass;GetDlgItem(IDC_EDIT_USER)-GetWindowText(strUser);GetDlgItem(IDC_EDIT_PASS)-GetWindowText(strPass);if(OpenDB()/执行执行SELECT语句语句CRecordset rsUser(&m_db);rsUser.Open(CRecordset:forwardOnly,select Users_Name,Password from Users);CString strResult;项目项目10学生成绩数据库系统的开
29、发学生成绩数据库系统的开发 while(!rsUser.IsEOF()rsUser.GetFieldValue(Users_Name,strResult);if(strResult=strUser)rsUser.GetFieldValue(Password,strResult);if(strResult=strPass)bLogin=true;rsUser.MoveNext();if(!bLogin)this-MessageBox(用户名或者密码不正确用户名或者密码不正确,错误错误,MB_OK+MB_ICONERROR);return;CloseDB();elseAfxMessageBox(无
30、法打开数据库无法打开数据库);CDialog:OnOK();项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 3.学生成绩管理系统中的学生成绩管理系统中的“学生基本信息管理学生基本信息管理”功能的设计功能的设计 【任务描述】使用【任务描述】使用Visual C+6.0开发学生成绩管理系统中的开发学生成绩管理系统中的“学生基本学生基本信息管理信息管理”功能模块,要求实现学生基本信息的显示、添加、修改和删功能模块,要求实现学生基本信息的显示、添加、修改和删除除4个功能,其界面如图个功能,其界面如图10-26所示。所示。图图10-26 “课程信息录入与维护课程信息录入与维护”功能界面功能
31、界面项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 表表10-3 主窗体的主要属性主窗体的主要属性(1)主窗体设计,其主要属性如表)主窗体设计,其主要属性如表10-3所示。所示。属性属性设置值设置值IDIDD_DIALOG_STUDENT_INFOCaption学生基本信息维护学生基本信息维护项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(2)添加组框、静态文本、编辑框、按钮等元素,各元素属性的设)添加组框、静态文本、编辑框、按钮等元素,各元素属性的设置如表置如表10-4所示。所示。表表10-4 Adodc1控件的主要属性控件的主要属性元素名元素名属性属性设置值设置
32、值MFCgridctrlIDIDC_GRIDCTRLCaptionCustom1按钮按钮(共(共4个)个)IDIDC_BTN_INSERT、IDC_BTN_DELETE、IDC_BTN_MODIFY、IDCANCELCaption添加、删除、登录、退出添加、删除、登录、退出项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(3)编写事件过程程序代码。)编写事件过程程序代码。初始化:初始化:void CStudentInfoDlg:RefreshDB()if(OpenDB()CRecordset rs(&m_db);rs.Open(CRecordset:forwardOnly,Sele
33、ct*from bStudent);int row_all=0;while(!rs.IsEOF()row_all+;rs.MoveNext();rs.Close();/清空清空Gridm_GridCtrl.DeleteAllItems();m_GridCtrl.SetEditable(false);/设置设置Grid的属性的属性m_GridCtrl.SetRowCount(row_all+1);m_GridCtrl.SetColumnCount(5);m_GridCtrl.SetFixedRowCount(1);m_GridCtrl.SetFixedColumnCount(1);m_GridC
34、trl.SetRowResize(FALSE);/加标题行加标题行 row 0int row=0;GV_ITEM Item;项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 Item.row=row;Item.mask=GVIF_TEXT|GVIF_FORMAT;Item.nFormat=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;Item.col=0;Item.szText.Format(序号序号);m_GridCtrl.SetItem(&Item);Item.col=1;Item.szText.Format(学号学号);
35、m_GridCtrl.SetItem(&Item);Item.col=2;Item.szText.Format(姓名姓名);m_GridCtrl.SetItem(&Item);Item.col=3;Item.szText.Format(性别性别);m_GridCtrl.SetItem(&Item);Item.col=4;Item.szText.Format(出生日期出生日期);m_GridCtrl.SetItem(&Item);Item.col=5;Item.szText.Format(班级班级);m_GridCtrl.SetItem(&Item);if(row_all0)rs.Open(CR
36、ecordset:forwardOnly,Select*from bStudent);/加内容加内容 while(!rs.IsEOF()row+;/获取字段值获取字段值 CString str_Stud_Name,str_Stud_Id,str_Stud_Sex,str_Birth,str_Class_Id;rs.GetFieldValue(Stud_Id,str_Stud_Id);rs.GetFieldValue(Stud_Name,str_Stud_Name);rs.GetFieldValue(Stud_Sex,str_Stud_Sex);rs.GetFieldValue(Birth,st
37、r_Birth);rs.GetFieldValue(Class_Id,str_Class_Id);/把当前记录加入到把当前记录加入到Grid中中 GV_ITEM Item;Item.row=row;Item.mask=GVIF_TEXT|GVIF_FORMAT;Item.nFormat=DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发/所在班级所在班级Item.col=5;Item.szText.Format(str_Class_Id);m_GridCtrl.SetItem(&Item
38、);rs.MoveNext();rs.Close();m_GridCtrl.AutoSize();elseAfxMessageBox(打开数据库错误!打开数据库错误!);CloseDB();添加功能:添加功能:void CStudentInfoDlg:OnBtnInsert()m_dlgDetail-SetWindowText(添加学生信息添加学生信息);m_dlgDetail-ReadyToInsert();m_dlgDetail-ShowWindow(SW_SHOW);项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 删除功能:删除功能:void CStudentInfoDlg
39、:OnBtnDelete()int row=m_GridCtrl.GetSelectedCellRange().GetMinRow();CString sID=m_GridCtrl.GetItemText(row,1);CString sName=m_GridCtrl.GetItemText(row,2);if(IDYES=MessageBox(确实要删除确实要删除+sID+sName+吗吗?,删除确认删除确认,MB_YESNO)if(OpenDB()CString sql=Delete from bStudent where Stud_Id=+sID+;m_db.ExecuteSQL(sql
40、);CloseDB();RefreshDB();项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 修改功能:修改功能:void CStudentInfoDlg:OnBtnModify()m_dlgDetail-SetWindowText(修改学生信息修改学生信息);int row=m_GridCtrl.GetSelectedCellRange().GetMinRow();CString sID=m_GridCtrl.GetItemText(row,1);if(sID.IsEmpty()AfxMessageBox(请选择需要修改的记录!请选择需要修改的记录!);return;m_dl
41、gDetail-ReadyToModify(sID);m_dlgDetail-ShowWindow(SW_SHOW);RefreshDB();项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 4.学生成绩管理系统中的学生成绩管理系统中的“课程信息管理课程信息管理”功能的设计功能的设计 【任务描述】使用【任务描述】使用Visual C+6.0开发学生成绩管理系统中的开发学生成绩管理系统中的“课程基本课程基本信息管理信息管理”功能模块,要求实现课程基本信息的显示、添加、修改和删功能模块,要求实现课程基本信息的显示、添加、修改和删除除4个功能,其界面如图个功能,其界面如图10-29所示。
42、所示。图图10-29 “课程信息录入与维护课程信息录入与维护”功能界面功能界面项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 表表10-7 主窗体的主要属性主窗体的主要属性(1)主窗体设计,其主要属性如表)主窗体设计,其主要属性如表10-7所示。所示。属性属性设置值设置值IDIDD_DIALOG_COURSE_INFOCaption课程信息维护课程信息维护项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(2)添加组框、静态文本、编辑框、按钮等元素,各元素属性的设)添加组框、静态文本、编辑框、按钮等元素,各元素属性的设置如表置如表10-8所示。所示。表表10-8 各元素
43、的属性设置各元素的属性设置 元素名元素名属性属性设置值设置值MFCgridctrlIDIDC_GRIDCTRL2CaptionCustom1编辑框编辑框(共(共5个)个)IDIDC_EDT_STU_ID、IDC_EDIT_CID、IDC_EDIT_CNAME、IDC_EDIT_CTYPE、IDC_EDIT_CHOUR按钮按钮(共(共2个)个)IDIDC_BTN_INSERT2、IDC_BTN_DELETE2、IDC_BTN_MODIFY2、IDCANCELCaption添加、删除、登录、退出添加、删除、登录、退出项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发(3)编写事件过程程序
44、代码。)编写事件过程程序代码。初始化:初始化:void CCourseInfoDlg:RefreshDB()if(OpenDB()CRecordset rs(&m_db);rs.Open(CRecordset:forwardOnly,Select*from bCourse);int row_all=0;while(!rs.IsEOF()row_all+;rs.MoveNext();rs.Close();/清空清空Gridm_GridCtrl.DeleteAllItems();m_GridCtrl.SetEditable(false);/设置设置Grid的属性的属性m_GridCtrl.SetR
45、owCount(row_all+1);m_GridCtrl.SetColumnCount(5);m_GridCtrl.SetFixedRowCount(1);项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 m_GridCtrl.SetFixedColumnCount(1);m_GridCtrl.SetRowResize(FALSE);/加标题行加标题行 row=0int row=0;GV_ITEM Item;Item.row=row;Item.mask=GVIF_TEXT|GVIF_FORMAT;Item.nFormat=DT_CENTER|DT_VCENTER|DT_SINGL
46、ELINE|DT_END_ELLIPSIS;Item.col=0;Item.szText.Format(序号序号);m_GridCtrl.SetItem(&Item);Item.col=1;Item.szText.Format(课程代码课程代码);m_GridCtrl.SetItem(&Item);Item.col=2;Item.szText.Format(课程名称课程名称);m_GridCtrl.SetItem(&Item);Item.col=3;Item.szText.Format(课程类别课程类别);m_GridCtrl.SetItem(&Item);Item.col=4;Item.sz
47、Text.Format(课程学时课程学时);m_GridCtrl.SetItem(&Item);项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 if(row_all0)rs.Open(CRecordset:forwardOnly,Select*from bCourse);/加内容加内容 while(!rs.IsEOF()row+;/获取字段值获取字段值 CString str_Course_Id,str_Course_Name,str_Course_Type,str_Hours;rs.GetFieldValue(Course_Id,str_Course_Id);rs.GetFie
48、ldValue(Course_Name,str_Course_Name);rs.GetFieldValue(Course_Type,str_Course_Type);rs.GetFieldValue(Hours,str_Hours);/把当前记录加入到把当前记录加入到Grid中中 GV_ITEM Item;Item.row=row;Item.mask=GVIF_TEXT|GVIF_FORMAT;Item.nFormat=DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 删除功能:删除功
49、能:void CCourseInfoDlg:OnBtnDelete2()int row=m_GridCtrl.GetSelectedCellRange().GetMinRow();CString sID=m_GridCtrl.GetItemText(row,1);CString sName=m_GridCtrl.GetItemText(row,2);if(IDYES=MessageBox(确实要删除确实要删除+sID+sName+吗吗?,删除确认删除确认,MB_YESNO)if(OpenDB()CString sql=Delete from bCourse where Course_Id=+s
50、ID+;m_db.ExecuteSQL(sql);CloseDB();RefreshDB();项目项目10学生成绩数据库系统的开发学生成绩数据库系统的开发 修改功能:修改功能:void CCourseInfoDlg:OnBtnModify2()CString str;GetDlgItem(IDC_BTN_MODIFY2)-GetWindowText(str);if(str=修改修改)int row=m_GridCtrl.GetSelectedCellRange().GetMinRow();GetDlgItem(IDC_BTN_MODIFY2)-SetWindowText(确定确定);m_str