strType nOpen nHours fCredit
= type; = term; = hours; = credit;
}
void CCourseInfo::Display(int y, CDC *pDC) {
CString str;
str.Format(\ %s %s %s %d %d %4.1f\ strSpecial, strType, nOpen, nHours, fCredit); pDC->TextOut(0, y, str);
}
IMPLEMENT_SERIAL(CCourseInfo, CObject, 1) // 序列化实现 void CCourseInfo::Serialize(CArchive &ar) { }
if (ar.IsStoring())
ar< ar>>strNO>>strName>>strSpecial>>strType>>nOpen>>nHours>>fCredit; ⑤ 编译。 7.实现课程信息文档序列化 ① 在Ex_MDIDoc.h文件的class CEx_MDIDoc前面,添加包含CCourseInfo类的头 文件。 #include \ ② 为CEx_MDIDoc类添加下列成员变量,用来保存添加的CCourseInfo类对象数据: public: CObArray m_courseObArray; // 对象集合类对象 ③ 为CEx_MDIDoc类添加成员函数CCourseInfo* GetCourseInfoAt(int nIndex),用来获取m_courseObArray中指定索引号的CCourseInfo类指针,其代码如下: CCourseInfo* CEx_MDIDoc::GetCourseInfoAt(int nIndex) { } if ((nIndex < 0) || nIndex > m_courseObArray.GetUpperBound()) return NULL; // 超界处理 return (CCourseInfo *)m_courseObArray.GetAt(nIndex); ④ 为CEx_MDIDoc类添加成员函数int GetCourseRecNum(void),用于获取集合类中对象的个数其代码如下: int CEx_MDIDoc::GetCourseRecNum() { } return m_courseObArray.GetSize(); ⑤ 在CEx_MDIDoc类析构函数~CEx_MDIDoc添加下列删除并释放对象的代码: CEx_MDIDoc::~CEx_MDIDoc() 30 { } int nIndex = GetCourseRecNum(); while (nIndex--) delete m_courseObArray.GetAt(nIndex); m_courseObArray.RemoveAll(); // 删除并释放对象的内存空间 ⑥ 在CEx_StudentDoc::Serialize函数中添加下列代码: void CEx_MDIDoc::Serialize(CArchive& ar) { } if (ar.IsStoring()) { m_courseObArray.Serialize(ar); } else { m_courseObArray.Serialize(ar); } ⑦ 在Ex_MDIDoc.cpp文件的开始处,添加包含CCourseDlg类的头文件包含: #include \#include \ ⑧ 在菜单资源IDR_EX_MDITYPE中添加顶层菜单项“课程信息(&S)”,在该顶层菜单项中添加子菜单“添加(&A)”(ID_COURSEINFO_ADD)。 ⑨ 用MFC ClassWizard为CEx_MDIDoc类添加处理菜单项ID_COURSEINFO_ADD的COMMAND消息,并添加下列代码: void CEx_MDIDoc::OnCourseinfoAdd() { } CCourseDlg dlg; if (dlg.DoModal() != IDOK) return; // 添加记录 CCourseInfo *pCourse = new CCourseInfo(dlg.m_strNO, dlg.m_strName, dlg.m_strSpecial, dlg.m_strType, dlg.m_nOpen, dlg.m_nHours, dlg.m_fCredit); m_courseObArray.Add(pCourse); SetModifiedFlag(); // 设置文档更改标志 UpdateAllViews(NULL); // 更新视图 ⑩ 修改CEx_MDIView::OnDraw代码,用来将所有的课程信息记录显示在视图中: void CEx_MDIView::OnDraw(CDC* pDC) { } CEx_MDIDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); int y = 0; for (int nIndex = 0; nIndex < pDoc->GetCourseRecNum(); nIndex++) { } pDoc->GetCourseInfoAt(nIndex)->Display(y, pDC); y += 16; 编译并运行。 31 六、实验运行结果 写出程序的运行结果。 实验十二:图形和文本 一、实验目的与要求 1、编写一个画直线程序。要求在坐标为(300,50)的位置显示文字\画线\。在坐标为(12,20)到(100,120)的位置画一条红色、线的宽度为4的实线。画完后恢复原来的画笔。 2、编写使用纯绿色画刷绘制矩形和显示文字的程序。矩形的左上角坐标为(100,30),右下脚坐标为(230,130)。在坐标为(20,50)的位置显示文字\画矩形\。 3、编写使用红色画刷画圆形和显示文字的程序。圆心(50,50),半径为40.在坐标为(100,60)的位置显示文字\\画红色圆形\\。 二、实验类型 验证型 三、实验原理及说明 掌握文本输出和图形函数的使用方法。 四、实验仪器 序 号 1 名 称 计算机 主要用途 编写程序 五、实验内容和步骤 1.启动Visual C++ 6.0 打开计算机,启动Visual C++ 6.0系统。 2.创建一个单文档应用程序 3.编写代码。 (1)void CYutuView::OnDraw(CDC* pDC) { CPen *pPenOld, PenNew; PenNew.CreatePen(PS_SOLID,4,RGB(255,0,0)); pPenOld=pDC->SelectObject(&PenNew); pDC->TextOut(300,50,\画线\ pDC->MoveTo(12,20); pDC->LineTo(200,120); pDC->SelectObject(pPenOld); PenNew.DeleteObject(); } (2)void CDrawpictView::OnDraw(CDC* pDC) 32 { CBrush *pold, brushnew(RGB(0,255,0)); pold=(CBrush*)pDC->SelectObject(&brushnew); pDC->Rectangle(100,30,230,130); pDC->TextOut(10,50,\画绿色矩形\brushnew.DeleteObject(); pDC->SelectObject(pold); } (3)void CDrawpictView::OnDraw(CDC* pDC) { CDrawpictDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CBrush *pold, brushnew(RGB(255,0,0)); pold=(CBrush*)pDC->SelectObject(&brushnew); pDC->Ellipse(10,10,90,90); pDC->TextOut(100,60,\画红色圆形\brushnew.DeleteObject(); pDC->SelectObject(pold); } 4. 编译运行。 六、实验运行结果 写出程序的运行结果。 实验十三:数据库(1) 一、实验目的与要求 本实验要求创建一个数据库及数据表,完成记录的显示及查找功能。 二、实验类型 设计型 三、实验原理及说明 掌握创建数据库和数据表的方法和ODBC编程方法。 四、实验仪器 序 号 名 称 主要用途 33 1 计算机 编写程序 五、实验内容和步骤(下面以学生管理为例) 1.创建数据库和数据表 这里以Microsoft Access 2003为例说明数据库和数据表的创建过程。 ① 启动Microsoft Access 2003。 ② 选择“文件”→“新建”菜单,在右边任务窗格中单击“空数据库”,弹出一个对话框,指定数据库名main.mdb。单击“创建”按钮,出现如图13.2所示的数据库设计窗口。 图13.2 数据库设计窗口 ③ 双击“使用设计器创建表”,出现如图13.3所示的表设计界面。其中,单击数据类型框的下拉按钮,可在弹出的列表中选择适当的数据类型。在下方的常规页面中可以设置字段大小、格式等内容。 图13.3 表设计界面 ④ 按表13.1添加字段名和数据类型,关闭表设计界面,弹出一个消息对话框,询问是否保存刚才设计的数据表,单击“是(Y)”按钮,出现如图13.4所示的对话框,在表名称中输入score,单击““确定”按钮。此时出现一个消息对话框,用来询问是否要为表创建主关键词,单击[否(N)”按钮。注意:若单击“是(Y)”按钮,则系统会自动为表添加另一个字段ID。 表13.1 学生课程成绩表(score)结构 序 号 1 字 段 名 称 studentno 数 据 类 型 文本 字 段 大 小 8 小 数 位 字 段 含 义 学号 34