课程编号:04020027 课程名称:面向对象程序设计(VC++)
总学时:108 总学分:5 实验学时:62 实验学分:2
适应专业:计算机科学与技术、软件工程、网络工程等专业
实验指导书:《Visual C++ 实用教程(第3版)》 第3部分 上机操作指导.
一、本实验课的任务、性质与目的
通过上机实验和课程设计加深对课程知识的理解,提高学生的逻辑思维能力、程序编写调试能力及分析问题与解决问题的能力,培养学生的创新意识和创新能力。
二、实验方式与基本要求
实验方式:本课程的实践教学环节包括上机实验和课程设计两部分。
基本要求:上机实验要根据实验题目,完成实验内容,达到实验目的,编写实验报告。课程设计要求提交课程设计报告,报告内容包括:
⑴需求分析:陈述设计的任务,强调程序要做什么,明确规定:①输入的形式和输入值的范围;②输出的形式;③程序所实现的功能;④测试数据:包括正确的输入输出和错误的输入及其输出。
⑵概要设计:说明采用的数据结构、主程序的流程及各程序模块之间的调用关系。
⑶详细设计:提交带注释的源程序或者用伪代码写出每个操作的算法。
⑷调试分析:①调试中所遇到的问题及解决方法;②算法时空分析;③经验与体会。
⑸用户使用说明:说明如何使用程序,详细列出每一步操作步骤。
⑹测试结果:列出对于给定的输入所产生的输出结果。若可能,测试随输入规模的增长所用算法的实际运行时间的变化。
三、实验项目与内容提要
本课程的实验教学环节包括上机实验和课程设计两部分。
⑴上机实验项目:
序号 |
实验项目名称 |
内容提要 |
实验时数 |
实验类型 |
实验要求 |
1 |
认识VC++开发环境 |
(1)熟悉VC++6.0的开发环境。(2)操作工具栏和项目工作区窗口。(3)用应用程序向导创建一个控制台应用项目Ex_Hello。(4)输入并执行一个C++程序EX_Sample。 |
1 |
基 础 性 |
必 做 |
2 |
基本数据类型、表达式和基本语句 |
(1)测试基本数据类型char、int和short之间的相互转换。(2)测试有自增自减运算符的表达式的结果和运行次序。(3)程序Ex_Prime:输出l~100的素数(用for语句编写)(4)程序Ex_CircleAndBall:设圆半径r=2.5,圆柱h=4,求圆的周长、圆面积、圆球体积、圆柱体积。用cin输入要计算的项目,然后输出计算结果,输入、输出时要有文字提示。 |
1 |
基 础 性 |
必 做 |
3 |
函数和预处理 |
(1)程序Ex_AreaFunc:已知三角形的边长a、b、c,求三角形的面积。三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形,若是,则计算其面积并输出,否则输出“错误:不能构成三角形!”。编写一个完整的程序,其中需要两个函数,一个函数用于判断,另一个函数用于计算三角形面积。(2)在上述内容的基础上,改用带参数的宏编写程序Ex_AreaMacro来求三角形的面积。(3)程序Ex_NumToStr:用递归法将一个整数n转换成字符串,例如输入1234,应输出字符串“1234”。n的位数不确定,可以是任意位数的整数。 |
2 |
基 础 性 |
必 做 |
4 |
构造类型、指针和引用 |
(l)程序Ex_Sort:采用插入排序的方法,输入10个整数按升序排序后输出。要求编写一个通用的插入排序函数Insertsort,它带有3个参数:第1个参数是含有n个元素的数组,这n个元素已按升序排序;第2个参数给出当前数组中元素个数;第3个参数是要插入的整数。该函数的功能是将一个整数插入到数组中,然后进行排序。另外还需要一个用于输出数组元素的函数Print,要求每一行输出5个元素。(2)程序Ex_Student:有5个学生,每个学生的数据结构包括学号、姓名、年龄、C++成绩、数学成绩和英语成绩、总平均分,从键盘输入5个学生的学号、姓名、3门课的成绩,计算3门课的总平均分,最后将5个学生的数据输出。要求各个功能用函数来实现。 |
1 |
基 础 性 |
必 做 |
5 |
类和对象、继承和派生 |
程序Ex_Class:定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入、输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和教师类CTeacher(增加教龄),并实现对学生和教师信息的输入、输出。编写一个完整的测试程序,并将Ex_Class所有的类定义保存在Ex_Class.h,将类的成员函数实现代码保存在Ex_Class.cpp中。 |
1 |
基 础 性 |
必 做 |
6 |
多态和虚函数、运算符重载 |
(1)程序Ex_shape:定义一个抽象类CShape,包含纯虚函数Area(用于计算面积)和SetData(用于重设形状大小),然后派生出三角形CTriangle类、矩形CRect类、圆CCircle类,分别求其面积。最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类构造函数或成员函数来设置,编写一个完整的程序。(2)程序Ex_Complex:定义一个复数类CComplex。通过重载运算符“*”和“/”,直接实现两个复数之间的乘除运算。运算符“*”用成员函数实现重载,而运算符“/”用友元函数实现重载。编写一个完整的程序(包括测试运算符的程序部分)。 |
1 |
基 础 性 |
必 做 |
7 |
输入输出流库 |
程序Ex_File:用文件来实现一个学生记录的添加、查找等操作。 |
1 |
基 础 性 |
必 做 |
8 |
MFC基本应用程序的建立 |
(1)在一个默认的单文档应用程序Ex_SDI中通过映射计时器消息实现这样的功能:无论在EX_SDI应用程序窗口的客户区中单击鼠标左键或右键,都会弹出“消息”对话相,显示鼠标左键或右键的单击次数。(2)使用调试器对上述程序的流程和鼠标单击次数进行调试。 |
1 |
设 计 性 |
必 做 |
9 |
对话框和按钮控件 |
设计一个对话框,用于问卷调查,在教材的实例基础上针对“上网”话题再提出一个问题:“你每天上网的平均时间”,该问题的各选答案是“<1小时”、“<2小时”、“<3小时”和“>3小时”。当回答问题后,单击“确定”按钮,弹出“上网问卷调查”对话框,显示用户选择的内容。 |
1 |
设 计 性 |
必 做 |
10 |
编辑框、列表框和组合框 |
设计一个学生成绩管理对话框应用程序Ex_Input,单击“添加”按钮后,学生成绩记录添加到列表框中,在列表框中单击学生成绩记录,则记录内容显示在左边的相关控件中,单击“删除”按钮,则删除该记录。需要说明的是。当列表框没有记录或没有选定的记录项,则“删除”按钮是灰显的。 |
1 |
设 计 性 |
必 做 |
11 |
进展条、滚动条和滑动条 |
设计一个对话框应用程序Ex_Color,操作滚动条、滑动条和进展条控件可以调整RGB颜色的3个颜色分量:R红色分量)、G(绿色分量)和B(蓝色分量),并根据用户指定的颜色填充控件区域。 |
1 |
设 计 性 |
必 做 |
12 |
菜单、工具栏和状态栏 |
创建一个单文档应用程序Ex_SDI,开始运行时主框架窗口的大小为屏幕的1/4大小,并移动到屏幕的右上角。当单击工具栏上的圆圈按钮,该按钮是按下状态,此时在窗口的客户区的光标为一个圆圈,双击鼠标,则状态栏上显示“你在(x,y)处双击鼠标”(x,y为鼠标在客户区的位置)。若再单击工具栏上的圆圈按钮,该按钮呈正常状态,光标变成原来的箭头形,双击鼠标,状态栏上不再显示任何文本。 |
1 |
设 计 性 |
必 做 |
13 |
框架窗口、文档和视图 |
创建一个基于CListView视图的单文档应用程序Ex_Student,通过对话框来输入一个学生记录,记录包括学生的姓名、学号和3门成绩。然后将记录内容保存到一个对象数组集合类对象中,最后通过文档序列化将记录保存到一个文件中。当添加记录或打开一个记录文件时,还会将数据显示在文档窗口(即视图)中。 |
1 |
设 计 性 |
必 做 |
14 |
图形、文本和位图 |
上机练习教程第7章的例Ex_Draw、Ex_Icon和Ex_Cursor |
1 |
设 计 性 |
必 做 |
15 |
ODBC数据库编程 |
对于大量数据处理,采用数据库更为安全、简便。例如,对于学生成绩管理系统,常常需要处理学生的基本信息、课程成绩以及与学生相关的院系、专业情况等,这些信息用数据库表的形式来描述更为清晰。本次实验按教程练习MFCODBC数据库编程过程。 |
1 |
综 合 性 |
必 做 |
16 |
ADO数据库编程 |
创建一个基于CListView视图的单文档应用程序EX_ADO,主要完成下列任务或实现下列功能。(1)用Access创建一个数据库student.mdb,添加数据表student;(2)在主菜单中添加“学生信息(&S)”顶层菜单,在该菜单添加“添加学生(&U)”子菜单。当选择“添加学生(&U)”子菜单后,出现“学生信息”对话框,单击“添加”按钮后,记录添加到student表中,并自动更新列表视图的列表项。(3)在列表视图的列表项中,单击鼠标右键,弹出“学生信息”对话框,单击“修改”按钮,Student表中相关记录被修改,同时更新列表视图的列表项。(4)若当单击列表视图的列表头(标题头)时,使得列表视图按该列的内容对列表项进行从小到大的排序。 |
1 |
综 合 性 |
必 做 |
⑵课程设计题目:四人一组,合作完成下列必做题,可合作完成下列选做题:(共20学时)
题号 |
项目名称 |
内容提要 |
实验类型 |
实验要求 |
1 |
设计学生成绩管理程序 |
用数据库或数据文件保存学生的基本信息(学号、姓名、性别、生日、专业),课程信息(课程编号、课程名称,课程类型、课时数、学分),学生成绩信息(学号、课程编号,成绩值)。对上述数据能进行添加、删除、修改、查询和排序。能对学生的单科成绩进行统计并形成统计表和统计图。 |
设计性 |
选做 |
2 |
设计科学计算器 |
能完成算术运算(加、减、乘、除、括号)和常用函数运算(指数函数、对数函数、三角函数等)。具有10个以上数据寄存器,具有简单的编程能力(记忆和重现计算过程)。 |
设计性 |
选做 |
3 |
设计一个平面绘图程序 |
能绘制基本的平面图形(点、直线、椭圆、矩形、圆角矩形、贝赛尔曲线等)、能编辑文字、填充区域。具有颜色控制、字型字体控制和线形控制。能保存和重现矢量图形。 |
设计性 |
选做 |
4 |
设计一个日历时钟台历 |
具有年、月、日、时、分、秒、星期的显示和设置功能,能自动与计算机本身的时间系统保持一致。要求时钟具有时针、分针和秒针和数字显示功能。 |
设计性 |
选做 |
5 |
设计一个字处理程序 |
具有页面设置功能,能选择不同的字型字体和颜色在页面内编辑文本信息,具有自动换行换页功能,具有行块选中功能,具有插入和删除功能,具有查找和替换的功能,能保存已编辑好的文本,也能打开已存在的文本文件。 |
设计性 |
选做 |
· 实验类型是指:验证性/设计性/综合性实验;实验要求是指:必做性/选做性实验;
四、考核与评分
考核方式:实验考核方式计入平时成绩,平时成绩占总成绩的20%。课程设计根据程序的完成质量和课程设计报告的质量进行评分(满分100分),在总成绩中占20%。

