《数据库课程设计报告教务管理系统.pdf》由会员分享,可在线阅读,更多相关《数据库课程设计报告教务管理系统.pdf(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 目 录 华中科技大学教务管理系统.1 设计总说明.1 第1 章 总体设计.2 1.1 系统结构设计.2 第2 章 数据库设计与实施.3 2.1 数据库设计.3 2.1.1 概念分析:.3 2.1.2 逻辑设计:.4 2.1.3 物理设计:.5 2.2 数据库的实施.7 2.2.1 创建数据库.7 2.2.2 创建表.7 第3 章 前台设计与实现.10 3.1 登录模块.10 3.1.1 登录.10 3.1.2 注册新用户.12 3.2 系统的详细设计.13 3.2.1 主界面设计.13 3.2.2 菜单栏设计.14 3.2.3 管理模块设计.20 心得体会.24 参 考 文 献.25 附 录
2、.26 -1-华中科技大学教务管理系统 设计总说明 高校的教务管理工作量大、繁杂,人工处理非常困难。大学教务管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。教务管理系统的开发运用,实现了教务管理的自动化,不仅把广大教务工作者从繁重的教务管理工作中解脱出来、把学校从传统的管理模式中解放出来,而且对教务的判断和整理也更合理、更公正,同时也提供了一个准确、清晰、轻松的教务管理环境。本系统根据我校的实际情况开发,用于对学校教师、学生、课程信息的管理。登录系统时需要访问数据库中的用户信息,从而正确确定登录身份。系统完成了日常的教务工作中的数字化管理。较为系统地对学生
3、信息、成绩信息和课程信息进行管理。查询、增添、修改、删除都变的非常简便,减少了管理的工作量。为了数据的安全性,系统将数据保存在数据库中,以 Visual C+设计前台对系统进行设计。因为教务管理系统是一项很实用的系统,所面对的数据量很大,所以我们要求系统能够高效快速的处理这些数据,并且要保证数据的正确性、相容性和安全性。C+作为前台是将数据库中的数据读取出来,有助于用户对这些数据进行相应的操作,使操作更方便,更符合用户的要求。所以该系统应该要有一个良好的界面,使用户感觉很直观,使用快捷,这就是用 C+所要实现的功能。本课程设计是在学习了数据库系统和 C 语言等有关课程后,通过实际的操作来熟悉数
4、据库和相关软件的应用,培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。教务管理系统登录须有数据库中的账号信息,如无用户可及时注册。系统可以对不同的项目进行查询、添加、修改、删除等操作,方便学校的成绩管理。课程设计,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对 SQL、VC+等软件的实际操作能力。通过这次的课程设计,使我们对已经学习过的数据库课程的进一步的掌握,对知识进行最大程度的消化融汇。因此这次的课程设计对我们来说具有非常重要的作用:为以后学习工作做必要的准备和实践,提高自身对数据库开发的能力。-2-第1 章 总体设计 1
5、.1 系统结构设计 系统登录后进入主界面,主界面菜单栏进行各种查询,而主界面按钮直接进行相关管理。有添加、删除和修改信息功能。功能设计图如图1.1.1.所示。图1.1.1 系统功能结构图 用户登录 院系查询 主界面 信息查询 系别管理 系别查询 班级查询 教研室查询 教师信息 成绩查询 学生信息 课程信息 按班级 按学号 按课程 教研室管理 班级管理 教师管理 学生管理 课程管理 成绩管理 菜单栏 -3-第2 章 数据库设计与实施 2.1数据库设计 2.1.1 概念分析:概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型 设计
6、成绩管理数据库包括系别、教研室、班级、教师、学生、课程、成绩七个关系。E-R 图2.1.1 和图2.1.2 所示。图2.1.1 实体及其属性图 系别 教研室 教师学分 教师号 学时 教师姓名 班级 成绩 学号 课程号 性别 学生 系号 系名 教研室教师 成绩 课程 课程号 姓名 班号 班名 教研室教研室号 课程学号 班号 系号 系号 -4-图2.1.2 完整的实体-联系图 2.1.2 逻辑设计:逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本 E-R 图转化为宜选用的 DBMS 所支持的数据模型相符合的逻辑结构,并对其进行优化。设计教务管理系统数据库,
7、包括系别、教研室、班级、教师、学生、课程、成绩七个关系,考虑到数据库完整性,其关系模式中对每个实体定义的属性如下:系别表 系别:(系号,系名)教研室表 教研室:(教研室号,教研室名)班级表 系 教研室 教师号 学分 教研室号 学时 教师姓名 所属 班级 成绩 学号 课程号 所属 性别 学生 系号 系名 教研室教师 成绩 课程 学习 所属 所属 教课 课程号 姓名 班号 班名 教研室教师号 课程名 学号 班号 系号 系号 -5-班级:(班号,班名,系号)教师表 教师:(教师号,姓名,教研室号)学生表 学生:(学号,姓名,性别,班号)课程表 课程:(课程号,课程名,教师号,学时,学分)成绩表 成绩
8、:(学号,课程号,成绩)为了存放前台用户信息再添加一用户表 用户表 用户:(用户名,密码)2.1.3 物理设计:定义每个表的数据类型以及字段限制,使数据库达到一定的完整性。每个表的物理设计如下:表2.1.1 系别表 字段名 数据类型 字段限制 系号 char(2)Primary key 系名 char(20)Not null 表2.1.1 教研室表 字段名 数据类型 字段限制 教研室号 char(10)Primary key 教研室名 char(20)Not null 系号 char(10)Not null 表2.1.3 班级表 -6-字段名 数据类型 字段限制 班号 char(10)Prim
9、ary key 班名 char(14)Not null 系号 char(10)Not null 表2.1.4 教师表 字段名 数据类型 字段限制 教师号 char(5)Primary key 教师姓名 char(6)Not null 教研室号 char(10)Not null 表2.1.5 学生信息表 字段名 数据类型 字段权限 学号 char(14)Primary key 姓名 char(6)Not null 性别 char(2)Not null 班号 char(10)Not null 表2.1.6 课程表 字段名 数据类型 字段权限 课程号 char(5)Primary key 课程名 c
10、har(20)Not null 教师号 char(5)Not null 学时 Int Not null 学分 char(3)Not null 表2.1.7 成绩表 -7-字段名 数据类型 字段权限 学号 char(14)Primary key 课程号 char(5)Primary key 成绩 char(3)Not null 表2.1.8 用户表 字段名 数据类型 字段权限 用户名 char(20)Primary key 密码 char(20)Not null 2.2数据库的实施 2.2.1 创建数据库 在D 盘建立文件夹“教务管理”,在SQL Server 查询分析器中键入以下代码完成数据库
11、的建立。CREATE DATABASE 教务管理数据库 ON PRIMARY (NAME=教务管理_data,FILENAME=D:教务管理教务管理 dat.mdf,SIZE=5,MAXSIZE=100,FILEGROWTH=10%)LOG ON (NAME=教务管理_log,FILENAME=D:教务管理教务管理 log.ldf,SIZE=5,MAXSIZE=20,FILEGROWTH=20%)2.2.2 创建表 同样在查询分析器中键入如下代码完成表的创建。use 教务管理数据库 go create table 系别(-8-系号 char(2)not null primary key,系名
12、char(20)not null)create table 班级(班号 char(10)not null primary key,班名 char(14)not null,系号 char(10)not null)create table 教研室(教研室号 char(10)not null primary key,教研室名 char(20)not null,系号 char(10)not null)create table 学生(学号 char(14)not null primary key,姓名 char(6)not null,性别 char(2)not null,班号 char(10)not n
13、ull)create table 教师(教师号 char(5)not null primary key,姓名 char(6)not null,教研室号 char(4)not null)create table 课程(课程号 char(5)not null primary key,课程名 char(20)not null,教师号 char(5)not null,学时 int not null,学分 char(3)not null)create table 成绩(-9-学号 char(14)not null,课程号 char(5)not null,成绩 char(3)not null primar
14、y key(学号,课程号)create table 用户(用户名 char(20)not null primary key,密码 char(20)not null)-10-第3 章 前台设计与实现 3.1登录模块 3.1.1 登录 运行程序首先要通过登录,登录的用户名和密码存于数据库中用户表中。如无用户可注册新用户,从而进入程序。当用户名与密码不匹配时提示错误。为了使系统美观,可通过设置背景图片来改变系统样式。实现方法如下:引入一张要加入的图片,在要添加图片的对话框类向导中 Messages 中选择WM_PAINT 对其编辑,在 OnPaint()函数中加入如下代码:CRect rect;Ge
15、tClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP1);/IDB_BITMAP1 是对应图的 ID BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitm
16、ap.bmWidth,bitmap.bmHeight,SRCCOPY);这样设置后静态文本框就显得难看了,于是再在要添加图片的对话框类向导中 Messages 中选择 WM_CTRCOLOR 对其编辑,在 OnCtlColor()函数中加入如下代码:if(nCtlColor=CTLCOLOR_STATIC)/对所有的STATIC 控件的属性进行设定 pDC-SetBkMode(TRANSPARENT);return(HBRUSH):GetStockObject(NULL_BRUSH);-11-如果要使编辑框透明,则添加如下代码,这样编辑框内容会重叠,可以选择性的设置。if(nCtlColor=
17、CTLCOLOR_EDIT)/对所有的Edit 控件的属性进行设定 pDC-SetBkMode(TRANSPARENT);return(HBRUSH):GetStockObject(NULL_BRUSH);图3.1.1 登录界面 登录界面的用户名通过数据库访问代码如下:CDatabase database;database.Open(华中科技大学教务管理,FALSE,FALSE,ODBC;,FALSE);CRecordset rs(&database);UpdateData(TRUE);CString str;str.Format(select*from 用户 where 用户名=%s,m_n
18、ame);CRecordset rs1(&database);rs1.Open(AFX_DB_USE_DEFAULT_TYPE,str);if(rs1.IsEOF()-12-MessageBox(用户名输入错误!);return;str.Format(select*from 用户 where 用户名=%sand 密码=%s,m_name,m_password);rs.Open(AFX_DB_USE_DEFAULT_TYPE,str);if(rs.GetRecordCount()=0)MessageBox(密码输入错误!);else CMainDlg dlg;dlg.DoModal();/进入主
19、界面 CNcistSSMDlg:OnCancel();database.Close();3.1.2 注册新用户 注册用户界面如图所示,新注册的账户存于数据库中的用户表中。通过相关代码设置用户名和密码都不为空,并且弹出提示框。详细代码见附录。图3.1.2 注册新用户 -13-图3.1.3 注册错误提示 3.2系统的详细设计 3.2.1 主界面设计 主界面添加了菜单栏,用于各种信息查询操作和软件帮助信息。通过引入图片设置对话框背景图片。还可以设置静态文本组件让其显示时间。主界面如图 3.2.1 所示。图3.2.1 系统主界面 -14-显示时间方法:添加两个静态文本组件,设置它们大小相同并放置在同一
20、水平位置,第一个文本标题为“时间:”,第二个不设置标题,改变其 ID 为:IDC_STATIC_TIME,然后添加OnTimer()函数,代码设置如下:void CMainDlg:OnTimer(UINT nIDEvent)CDialog:OnTimer(nIDEvent);CString str;CTime theTime=CTime:GetCurrentTime();str.Format(%02d:%02d:%02d,theTime.GetHour(),theTime.GetMinute(),theTime.GetSecond();SetDlgItemText(IDC_STATIC_TIM
21、E,str);CDialog:OnTimer(nIDEvent);适当设置文本框字体颜色、文本颜色和组件背景色就可以做到美观的显示时间了。HBRUSH hbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);if(nCtlColor=CTLCOLOR_STATIC)pDC-SetTextColor(RGB(0,0,0);pDC-SetBkColor(RGB(7,255,246);/文字背景色 HBRUSH b=CreateSolidBrush(RGB(7,255,246);/控件背景色 return b;return hbr;3.2.2 菜单栏设计 菜单栏前三个菜
22、单都为查询菜单,通过SQL 查询语句显示查询结果。初始化状态为显示全部结果,若记录太多可按主码值查询,若要返回初始状态,点击刷新按钮即可。可以为每个窗口设置适当的图片背景。(1)院系查询 院系查询菜单提供系别、教研室和班级的详细信息。单击相应菜单实现对应的查询功能。-15-图3.2.2 院系查询菜单 图3.2.3 系别信息查询界面 图3.2.4 教研室信息查询界面 -16-图3.2.5 班级信息查询界面 (2)信息查询 信息查询菜单提供教师信息、学生信息和课程信息的详细查询。单击相应菜单实现对应的查询功能。图3.2.6 信息查询菜单界面 -17-图3.2.7 教师信息查询界面 图3.2.7 学
23、生信息查询界面 -18-图3.2.8 课程信息查询界面(3)成绩查询 成绩查询菜单提供按不同方式对学生成绩的详细查询。单击相应菜单实现对应的查询功能。图3.2.9 成绩查询菜单 -19-图3.2.10 按班级查询成绩界面 图3.2.11 按学号查询成绩界面 -20-图3.2.12 按课程查询成绩界面 3.2.3 管理模块设计 管理模块在主界面主面板上,用于对各个数据表的更新操作。数据操作部允许控制操作,若有空值则提示错误。(1)系别管理 系别管理可以通过系号来确定系别,从而对系别信息进行操作。不允许有空值操作。图3.2.13 系别管理界面 -21-(2)教研室管理 教研室管理通过教研室号来确定
24、教研室,从而对教研室信息进行操作。不允许有空值操作。图3.2.15 教研室管理界面(3)班级管理 班级管理可以通过班号来确定班级,从而对班级信息进行操作。不允许有空值操作。图3.2.16 班级管理界面 -22-(4)教师管理 教师管理通过教师号来确定教师,从而对教师信息进行操作。图3.2.17 教师管理界面(5)学生管理 学生管理可根据学号唯一确定学生,从而对信息进行添加、删除、修改操作。图3.2.18 学生管理界面 -23-(6)课程管理 课程管理通过课程号来确定课程信息,从而对课程信息进行添加、删除、修改操作。图3.2.18 课程管理界面(7)成绩管理 成绩管理通过学号与课程确定某学生的某
25、门课成绩并可按照学号、课程号来修改成绩。图3.2.19 成绩管理 -24-心得体会 通过一周的时间终于完成了华中科技大学教务管理系统的设计开发,系统的基本的功能已经实现。个人觉得数据库设计比较完美,查询、修改都很方便。系统实现了成绩的管理,教师、课程等的管理。比较完善的实现了教务管理的数字化管理。课程设计之前担心自己想象的系统无法实现预期效果,但是在不断的努力和勇敢的尝试下终于如期待中的那样完成了任务。总结经验就是要明白自己做的是什么,要对自己的系统有一个清晰的概念,这样设计起来才会比较方便。由于时间紧迫,系统功能尚有欠缺,但我已经觉得挺满意了。在这一周做课程设计中,收获了很多。因为这次课程设
26、计设计的知识面非常广。从数据库方面来说,涉及到数据库设计的五个步骤:需求分析、概念结构设计、逻辑结构设计、物理结构设计和运行调试。数据库的设计严重影响着系统的功能,如果数据库设计不够合理,前台操作就不能正常运行。在运行过程中我发现数据库的设计比较合理,查询时特别方便。这为以后的开发积累了很宝贵的经验。从MFC 编程方面来说又对MFC 编程有了进一步的提高,让系统不再单调,通过有关设置使系统更为个性化。通过 MFC 程序来访问并修改数据库,从中体会到了编程的乐趣。看到自己开发的系统实现了一个又一个功能,会有一种特别快乐的感觉。学以致用,这才是学习的目的。当然,系统的开发离不开好的资料和同学的交流
27、。在这次课程设计中深深感受到了同学之间交流合作的重要性。交流不但可以发现新的问题,提高解决问题的效率,而且可以快速的学习到新的知识。最后感谢这次课程设计中给予我帮助的老师和同学,是你们的帮助才使我的系统有了突破性的进展。-25-参 考 文 献 1 王瑞,于速.Visual C+数据库系统开发完全手册 M.北京:人民邮电出版社,2006.2 王珊 萨师煊 数据库系统概论(第四版)高等教育出版社 2006 -26-附 录 源程序清单 1登录控制:void CNcistSSMDlg:OnEnter()CDatabase database;database.Open(华中科技大学教务管理,FALSE,
28、FALSE,ODBC;,FALSE);CRecordset rs(&database);UpdateData(TRUE);CString str;str.Format(select*from 用户 where 用户名=%s,m_name);CRecordset rs1(&database);rs1.Open(AFX_DB_USE_DEFAULT_TYPE,str);if(rs1.IsEOF()MessageBox(用户名输入错误!);return;str.Format(select*from 用户 where 用户名=%sand 密码=%s,m_name,m_password);rs.Open
29、(AFX_DB_USE_DEFAULT_TYPE,str);if(rs.GetRecordCount()=0)MessageBox(密码输入错误!);else CMainDlg dlg;dlg.DoModal();/进入主界面 CNcistSSMDlg:OnCancel();-27-database.Close();2.列表框内容显示(以课程管理为例):BOOL CCouMangDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Add extra initialization here CDatabase database;database.Open
30、(华中科技大学教务管理,FALSE,FALSE,ODBC;,FALSE);m_ListCouMang.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);m_ListCouMang.InsertColumn(0,课程号,LVCFMT_LEFT,60);m_ListCouMang.InsertColumn(1,课程名,LVCFMT_LEFT,160);m_ListCouMang.InsertColumn(2,教师号,L
31、VCFMT_LEFT,80);m_ListCouMang.InsertColumn(3,学时,LVCFMT_LEFT,40);m_ListCouMang.InsertColumn(4,学分,LVCFMT_LEFT,40);show();database.Close();return TRUE;/return TRUE unless you set the focus to a control /EXCEPTION:OCX Property Pages should return FALSE void CCouMangDlg:show()m_ListCouMang.DeleteAllItems(
32、);CDatabase database;database.Open(华中科技大学教务管理,FALSE,FALSE,ODBC;,FALSE);-28-CRecordset set(&database);set.Open(CRecordset:dynaset,_T(select*from 课程);int i=0;while(!set.IsEOF()m_ListCouMang.InsertItem(i,);CString str1,str2,str3,str4,str5;set.GetFieldValue(课程号,str1);m_ListCouMang.SetItemText(i,0,str1);
33、set.GetFieldValue(课程名,str2);m_ListCouMang.SetItemText(i,1,str2);set.GetFieldValue(教师号,str3);m_ListCouMang.SetItemText(i,2,str3);set.GetFieldValue(学时,str4);m_ListCouMang.SetItemText(i,3,str4);set.GetFieldValue(学分,str5);m_ListCouMang.SetItemText(i,4,str5);set.MoveNext();i+;set.Close();3添加记录:UpdateData
34、(true);/确定所有输入有效 CString sWarning=;if(=m_CouNo)sWarning=_T(课程号);else if(=m_CouName)sWarning=_T(课程名);else if(=m_TeaNO)sWarning=_T(教师号);-29-else if(=m_xueshi)sWarning=_T(学时);else if(=m_xuefen)sWarning=_T(学分);if(!=sWarning)sWarning+=_T(不能为空);AfxMessageBox(sWarning,MB_ICONEXCLAMATION);return;CDatabase d
35、atabase;database.Open(华中科技大学教务管理);CString sql;CString item;sql.Format(insert into 课程(课程号,课程名,教师号,学时,学分)values(+m_CouNo+,+m_CouName+,+m_TeaNO+,+m_xueshi+,+m_xuefen+);try database.ExecuteSQL(sql);/执行 sql 语句 MessageBox(添加成功!);catch(CDBException e)MessageBox(添加失败!);return;database.Close();show();UpdateD
36、ata(true);4修改记录:UpdateData(true);CString str,sWarning=;-30-CDatabase database;/CString sWarning=;if(=m_CouNo)sWarning=_T(课程号);else if(=m_CouName)sWarning=_T(课程名);else if(=m_TeaNO)sWarning=_T(教师号);else if(=m_xueshi)sWarning=_T(学时);else if(=m_xuefen)sWarning=_T(学分);if(!=sWarning)sWarning+=_T(不能为空);Afx
37、MessageBox(sWarning,MB_ICONEXCLAMATION);return;database.Open(华中科技大学教务管理);try str.Format(update 课程 set 课程名=+m_CouName+where(课程号=+m_CouNo+);database.ExecuteSQL(str);str.Format(update 课程 set 教师号=+m_TeaNO+where(课程号=+m_CouNo+);database.ExecuteSQL(str);str.Format(update 课程 set 学时=+m_xueshi+where(课程号=+m_Co
38、uNo+);database.ExecuteSQL(str);str.Format(update 课程 set 学分=+m_xuefen+where(课程号=+m_CouNo+);database.ExecuteSQL(str);AfxMessageBox(修改成功!);catch(CDBException e1)-31-AfxMessageBox(修改失败!);database.Close();show();5删除记录:UpdateData(true);CString str,sWarning=;CDatabase database;/CString sWarning=;if(=m_CouN
39、o)sWarning=_T(课程号);if(!=sWarning)sWarning+=_T(不能为空);AfxMessageBox(sWarning,MB_ICONEXCLAMATION);return;database.Open(华中科技大学教务管理);try str.Format(delete from 课程 where(课程号=+m_CouNo+);database.ExecuteSQL(str);AfxMessageBox(删除成功!);catch(CDBException e1)AfxMessageBox(删除失败!);database.Close();show();5查询记录:Up
40、dateData(TRUE);-32-/TODO:Add your control notification handler code here CDatabase database;database.Open(华中科技大学教务管理,FALSE,FALSE,ODBC;,FALSE);CString str;CRecordset set(&database);if(m_CKCouNo.IsEmpty()MessageBox(请输入课程号);return;m_ListCouMes.DeleteAllItems();set.Open(CRecordset:dynaset,_T(select 课程.课
41、程号,课程.课程名,教师.教师姓名,课程.学时,课程.学分 from 课程,教师 where 课程.教师号=教师.教师号 and 课程.课程号=+m_CKCouNo+);int i=0;while(!set.IsEOF()m_ListCouMes.InsertItem(i,);CString str1,str2,str3,str4,str5;set.GetFieldValue(课程号,str1);m_ListCouMes.SetItemText(i,0,str1);set.GetFieldValue(课程名,str2);m_ListCouMes.SetItemText(i,1,str2);se
42、t.GetFieldValue(教师姓名,str3);m_ListCouMes.SetItemText(i,2,str3);set.GetFieldValue(学时,str4);m_ListCouMes.SetItemText(i,3,str4);set.GetFieldValue(学分,str5);-33-m_ListCouMes.SetItemText(i,4,str5);set.MoveNext();i+;set.Close();UpdateData(TRUE);database.Close();6添加背景:void CNcistSSMDlg:OnPaint()CPaintDC dc(t
43、his);/device context for painting CRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_denglu);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.
44、Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);7静态文本和编辑框透明:HBRUSH CNcistSSMDlg:OnCtlColor(CDC*pDC,CWnd*pWnd,UINT nCtlColor)HBRUSH hbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);/TODO:Change any attributes of the DC here if(nCtlColor=CTLCOLOR_STATIC)-34-/对所有的STATIC 控件的属性进行设定 pDC-SetBkMode(TR
45、ANSPARENT);return(HBRUSH):GetStockObject(NULL_BRUSH);if(nCtlColor=CTLCOLOR_EDIT)/对所有的Edit 控件的属性进行设定 pDC-SetBkMode(TRANSPARENT);return(HBRUSH):GetStockObject(NULL_BRUSH);/TODO:Return a different brush if the default is not desired return hbr;8.数据库连接的类NcistDBset.cpp:#include stdafx.h#include NcistSSM.
46、h#include NcistDBset.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILE static char THIS_FILE=_FILE_;#endif /NcistDBset IMPLEMENT_DYNAMIC(NcistDBset,CRecordset)NcistDBset:NcistDBset(CDatabase*pdb):CRecordset(pdb)-35-/AFX_FIELD_INIT(NcistDBset)m_column1=_T();m_column2=_T();m_column3=_T();m_column4=_
47、T();m_column5=_T();m_column6=_T();m_column7=_T();m_column8=_T();m_column9=_T();m_column10=_T();m_column11=_T();m_column12=_T();m_column13=_T();m_column14=_T();m_column15=_T();m_column16=0;m_column17=_T();m_column18=_T();m_column19=_T();m_column20=_T();m_column21=_T();m_column22=_T();m_column23=_T();
48、m_column24=_T();m_column25=_T();m_nFields=25;/AFX_FIELD_INIT m_nDefaultType=snapshot;-36-CString NcistDBset:GetDefaultConnect()return _T(ODBC;DSN=华中科技大学教务管理);CString NcistDBset:GetDefaultSQL()return _T(dbo.班级,dbo.成绩,dbo.教师,dbo.教研室,dbo.课程,dbo.系别,dbo.学生,dbo.用户);void NcistDBset:DoFieldExchange(CFieldEx
49、change*pFX)/AFX_FIELD_MAP(NcistDBset)pFX-SetFieldType(CFieldExchange:outputColumn);RFX_Text(pFX,_T(dbo.班级.班号),m_column1);RFX_Text(pFX,_T(班名),m_column2);RFX_Text(pFX,_T(dbo.班级.系号),m_column3);RFX_Text(pFX,_T(dbo.成绩.学号),m_column4);RFX_Text(pFX,_T(dbo.成绩.课程号),m_column5);RFX_Text(pFX,_T(成绩),m_column6);RF
50、X_Text(pFX,_T(dbo.教师.教师号),m_column7);RFX_Text(pFX,_T(dbo.教师.姓名),m_column8);RFX_Text(pFX,_T(dbo.教师.教研室号),m_column9);RFX_Text(pFX,_T(dbo.教研室.教研室号),m_column10);RFX_Text(pFX,_T(教研室名),m_column11);RFX_Text(pFX,_T(dbo.教研室.系号),m_column12);RFX_Text(pFX,_T(dbo.课程.课程号),m_column13);RFX_Text(pFX,_T(课程名),m_column