面向对象课程设计实习指导书.docx

上传人:b****4 文档编号:3812173 上传时间:2023-05-06 格式:DOCX 页数:48 大小:70.99KB
下载 相关 举报
面向对象课程设计实习指导书.docx_第1页
第1页 / 共48页
面向对象课程设计实习指导书.docx_第2页
第2页 / 共48页
面向对象课程设计实习指导书.docx_第3页
第3页 / 共48页
面向对象课程设计实习指导书.docx_第4页
第4页 / 共48页
面向对象课程设计实习指导书.docx_第5页
第5页 / 共48页
面向对象课程设计实习指导书.docx_第6页
第6页 / 共48页
面向对象课程设计实习指导书.docx_第7页
第7页 / 共48页
面向对象课程设计实习指导书.docx_第8页
第8页 / 共48页
面向对象课程设计实习指导书.docx_第9页
第9页 / 共48页
面向对象课程设计实习指导书.docx_第10页
第10页 / 共48页
面向对象课程设计实习指导书.docx_第11页
第11页 / 共48页
面向对象课程设计实习指导书.docx_第12页
第12页 / 共48页
面向对象课程设计实习指导书.docx_第13页
第13页 / 共48页
面向对象课程设计实习指导书.docx_第14页
第14页 / 共48页
面向对象课程设计实习指导书.docx_第15页
第15页 / 共48页
面向对象课程设计实习指导书.docx_第16页
第16页 / 共48页
面向对象课程设计实习指导书.docx_第17页
第17页 / 共48页
面向对象课程设计实习指导书.docx_第18页
第18页 / 共48页
面向对象课程设计实习指导书.docx_第19页
第19页 / 共48页
面向对象课程设计实习指导书.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

面向对象课程设计实习指导书.docx

《面向对象课程设计实习指导书.docx》由会员分享,可在线阅读,更多相关《面向对象课程设计实习指导书.docx(48页珍藏版)》请在冰点文库上搜索。

面向对象课程设计实习指导书.docx

面向对象课程设计实习指导书

中国地质大学(武汉)信息工程学院空间信息系

面向对象课程设计实习指导书

 

使用班级:

114111~3

实习指导老师:

2012-5-14

一、课程设计目的

1、使学生对所学理论知识进行一次综合性复习;

2、培养学生对实际问题的分析能力;

3、培养学生独立编程、开发软件的动手能力;

4、培养学生开放思维的创新能力;

5、培养学生熟练掌握VC++调试技能;

6、培养学生规范的编程习惯;

7、培养学生团队协作精神;

8、培养学生撰写课程设计报告的能力。

二、课程设计要求

为了能更好地达到课程设计的目的,要求学生:

1、每次上机前充分做好准备工作,查阅资料,预习相关内容,对课程设计内容进行方案的预设计,编制出源程序代码。

2、充分利用上机时间完成源程序代码的输入、调试及优化。

3、程序代码的编制应按照C++编码规范的要求进行,具体可参考指导书中【附件一】“C++编码规范”。

4、课程设计结束后,按照指导书中【附件二】“课程设计报告格式”的要求撰写出课程设计报告(要求用A4纸打印,报告格式的电子文档由指导教师提供)。

5、按题目要求独立完成课程设计,不旷课、不迟到、不早退、遵守机房规定、爱护机房设备。

三、课程设计内容和时间分配

1、课程设计内容分为四部分:

(1)课程设计基本练习题目(一级);

(2)课程设计基本练习题目(二级):

A组、B组;

(3)课程设计基本练习题目(三级);

(4)课程设计综合题;

2、实习中,建议对上述四部分内容的时间分配为:

1:

2:

3:

4。

0.5个上机时

完成一级题目

1.5次上机时

完成二级题目

3次上机时(第3~5次)

完成三级题目

3次上机时(第6~8次)

完成综合题

在课程设计中,同学们可以根据自己的实际情况,时间上酌情调整。

3、课程设计题目完成的数量要求:

(1)课程设计基本练习题目(一级)A组、B组、C组,每组任选一题,共三题;

(2)课程序设计基本练习题目(二级)A组、B组,每组任选一题,共两题;

(3)课程设计综合练习题目至少选做一题,多做者可酌情加分。

4、课程设计的成绩与题目完成的数量、质量、创新程度、回答提问、课程设计报告以及平时表现等有关,具体请看指导书“成绩评定及评分标准”。

四、课程设计题目

、课程设计基本练习题目(一级,10分×1)

请从以下1-3题中任意选做一题(建议使用MFC设计程序界面)

1、有1、2、3、4、5、6六个数,能组成多少个互不相同且无重复数字的三位数?

都是多少?

2、福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:

ABCDE*?

=EDCBA。

他对华生说:

“ABCDE应该代表不同的数字,问号也代表某个数字!

”华生:

“我猜也是!

”。

于是,两人沉默了好久,还是没有算出合适的结果来。

请你利用编程技术,找到破解的答案。

3、假定你有一张信用卡,卡上已经产生应还金额为500元,假定你一直不还款,那么在多少个月之后,这张卡的应还金额会超过1000元?

每月的应还额假定会增长2%,即第一个月应还50元,第二个月应还500+500*0.02=510元,第三个月应还510+510*0.02=520.20……,货币计算保留2位有效小数,编程给出问题的答案。

、课程设计基本练习题目(二级,12分×2)

【A组】请从以下4-5题中任意选做一题(鼓励使用MFC设计程序界面)

4、统计学生成绩

从文本文件中读某班学生的学号、姓名和成绩,进行分析给出平均分、最高分、最低分、最大分数差、标准差、各学生的名次,把结果输出到文件中。

其中:

最大分数差=最高分-最低分

5、文本文件中有一组整数,以空格分隔,要求排序后输出到另一个文件中。

【B组】请从以下6-8题中任意选做一题(鼓励使用MFC设计程序界面)

6、计算正方体、球体和圆柱体的表面积和体积(要求使用虚函数)。

7、假设d:

\a.txt文件中存储着一个10行6列的矩阵整型数据,数据之间用空格隔开的。

编写一个程序实现从d:

\a.txt文件中读入数据到一个二维整型数据矩阵中,并求解每一行最大值和每一列最小值,输出到屏幕显示。

8、定义一个Stud类,含学号、姓名、成绩和班号数据成员。

建立若干个Stud类对象,并将它们存储到文件data.dat中,最后输出文件内容。

、课程设计基本练习题目(三级,18分×2)

请从以下9-13题中至少选做两题,其中第9题为必选题(要求使用MFC设计程序界面)

9、定义复数的类Complex并测试其功能:

(1)复数由实部、虚部两个部分组成,在类的定义中应包含保存这两部分信息的内容。

(2)在类中定义构造函数,使用户能够在构造对象的同时为对象赋初值。

(3)在类中定义复数的加法、减法、乘法三个二元操作符来完成复数间的加、减、乘的功能。

(4)通过重载“<<”,使得Complex类的对象能够显示其自身信息。

(5)通过显示定义一个成员函数完成对象的赋值操作,使用户能够对Complex类的对象进行赋值。

(6)编写一段主程序(main函数),使用户能够通过这段主程序输入复数并进行复数的计算。

10、设计实现一个猜数字的小游戏。

游戏开始时在程序内部随机生成一个4位数字(每一位上的值不同,例如3795),用户通过若干轮的尝试试图猜出该数字,猜测次数不能超过8次,第八次如果仍未猜对则提示用户下次继续努力,程序退出。

每一轮猜测过程包括:

(1)用户输入一个猜测的四位数字,每一位值不同,例如输入3456;

(2)程序比较用户输入的数字和程序内部随机生成的数字,如果值对但位置不对则一个计数变量B累加,如果值对位置也对则计数变量A累加。

(3)输出A和B的累加信息以提示用户后续的猜测,例如输入3456,则输出1A1B;输入1268,则输出0A0B;输入5973,则提示0A4B;输入3795,则提示猜测成功。

要求用类来实现该小游戏。

11、栈模板及其实例的使用:

(1)利用类模板实现一个通用的栈模板。

要求这个栈模板能够完成一般栈的基本操作(栈元素为基本数据类型,不包括指针、数组以及对象):

向栈中压入一个元素(push)、取栈顶元素的值(top)、弹出栈顶元素(pop)、清空栈(empty)、判断栈是否为空(isEmpty)。

(2)编写一段主程序,要求主程序中生成整型、浮点型、字符型的栈实例各一个并分别测试其功能。

12、编写一个字符串类,要求该类可以实现以下功能:

(1)取字符串长度GetLength,判断字符串是否为空IsEmpty,取特定字符在字符串中位置GetAt。

(2)实现+和=的重载。

(3)实现插入一字符(或子串)Insert、删除一字符(或子串)Delete、替换一字符(或子串)Replace。

13、图形绘制与拾取。

具体要求如下:

【主要功能】

绘制并拾取线图元,修改拾取的线图元信息。

【要求】

(1)通过鼠标点击在视图区域输入线图元;

(2)通过鼠标点击拾取线图元;

(3)提供线图元信息对话框,用户可以修改所选图元信息;

(4)将绘制信息保存至文本文件,第二次打开文件,程序可以显示正确的绘制。

、课程设计综合练习题目(30分×1)(要求使用MFC设计程序界面)

14、设计一个程序用于管理自己的个人资金软件。

其中有3个类,CBC、CICBC和CCash,分别为中国银行类、工商银行类和现金类。

每个类都包含一个私有数据balance,用于存放自己在该类帐号中的余额数,每个类还有转帐(tranfer)、收入(income)、支出(consume)、统计(Statistic)等操作功能。

类结构如图4-2所示。

(1)界面的形式如图4-3~4-5所示。

界面上需要实现的功能包括:

1、记帐功能:

记录某个帐户中的资金变化的明细。

写入到磁盘文件。

2、统计功能:

本月总支出;

3、帐单查看:

各个帐号的查看;(直接调用文件显示)

类CCash

intbalance

类CICBC

intbalance

 类CBC

intbalance

图4-2银行类结构图

图4-3记账功能菜单设计

图4-4帐单查看菜单设计

图4-5记账功能界面设计

 

(2)基类CMyAccount的定义如下:

classCMyAccount

{

public:

//参数说明:

ptSourceA[in]-转帐源方;

//ptDestA[in]-转帐目的方;

//sum[in]-转帐金额

//ptNote[in]-备注

//功能举例:

从银行取钱时,就需要执行转帐操作:

从某个银行帐号转入到现金帐号中。

virtuallongtransfer(CMyAccount*ptSourceA,CMyAccount*ptDestA,doublesum,char*ptNote=NULL);

//参数说明:

inType[in]-收入类型:

例如奖学金、勤工俭学、父母支助等。

可根据实际情况添加。

virtuallongincome(CMyAccount*ptSourceA,shortinType,doublesum,char*ptNote=NULL);

//参数说明:

conType[in]-支出类型:

食物、衣物、学费、书籍等。

可根据实际情况添加。

virtuallongconsume(CMyAccount*ptSourceA,shortconType,doublesum,char*ptNote=NULL);

//参数说明:

conType[in]-支出类型:

食物、衣物、学费、书籍等。

可根据实际情况添加。

//功能说明:

统计某个时间段内的收支情况,结果有收支总体情况和各种子类的具体数据。

virtuallongstatistic(TimeStamp_STRU&timeStart,TimeStamp_STRU&timeEnd);

private:

doublebalance;

}

(3)其他说明:

在实现的过程中可根据自己的实际情况增加软件的实用性。

实用性强的软件可酌情加分。

五、成绩评定及评分标准

由指导教师根据课程设计任务完成情况、现场提问、观看运行结果、评阅课程设计报告并参考学生平时表现等五方面给出课程设计成绩。

1、具体评分标准(见表5-1),成绩等级分为:

A(100分)、B(80分)、C(70分)、D(60分)、E(<60分)五档或折合成百分制给出成绩。

表5-1VC++课程设计评分暂行标准

项目

评定内容

评分标准(ABCDE)

评分

A

D

课堂

检查

完成设计题目的数量与质量(X1)

超额完成设计题目,达到较高的程序设计水平,具有一定的创新性、实用性。

基本完成课程设计要求

提问检查基础理论掌握情况(X2)

回答问题准确合理,概念表达清楚、有条理。

基本符合问题要求

调试能力和软件运行检查(X3)

具有较强的调试程序的能力,操作熟练,程序运行结果正确,界面友好,界面结构合理。

程序运行结果基本符合要求

课程

设计

报告

课程设计报告情况检查(X4)

严格按照课程设计报告格式的要求,设计文档规范;书写清晰有条理,图文并貌,能够总结算法或设计的优缺点,附有改进意见、设计体会或心得。

基本达到课程设计报告的要求

平时

表现

出勤记载(X5)

严格遵守机房规定,不迟到不早退,不做与课程设计无关的事情

基本能按要求进行课程设计

总分

总分=(X1+X2+X3+X4+X5)/5

2、指导老师按优秀、良好、中等、及格、不及格五档提交成绩,成绩等级如下:

优秀:

90-100;

良好:

80-89;

中等:

70-79;

及格:

60-69;

不及格:

<60,成绩不合格者需要重修。

附件一、C++编码规范

1、文件组织

(1)文件结构

A、版权和版本的声明

版权和版本的声明位于头文件和定义文件的开头(参见例1),主要内容有:

①版权信息。

②文件名称,标识符,摘要。

③当前版本号,作者/修改者,完成日期。

④版本历史信息。

//Copyright(c)2002-2005,中国地质大学

//Allrightsreserved.

//

//文件名称:

输入文件名,如filename.h

//文件标识:

见配置管理计划书

//摘要:

简要描述本文件的内容

//

//当前版本:

1.1

//作者:

输入作者(或修改者)名字

//完成日期:

2002年7月20日

//

//取代版本:

1.0

//原作者:

输入原作者(或修改者)名字

//完成日期:

2002年5月10日

例1版权和版本的声明

B、头文件的结构

头文件由三部分内容组成:

①头文件开头处的版权和版本声明(参见例1)。

②预处理块。

③函数和类结构声明等。

假设定义文件的名称为box.h,定义文件的结构参见例2。

//版权和版本声明见例1,此处省略。

#include“graphics.h”//引用头文件

//全局函数的声明

voidFunction1(…);

;

//类的声明

classCBox{

public:

longGetSize();

private:

longm_lWidth;

….

};

例2C++/C定义文件的结构

【规则1】防止头文件内容被重复包含

为了防止头文件内容被重复包含,所有头文件必须用ifndef/define/endif结构产生预处理块。

例如:

对于文件mystring.h,其文件内容应按照如下方式编写(例3):

#ifndefMYSTRING_H

#defineMYSTRING_H

#include//引用标准库的头文件

#include“myheader.h”//引用非标准库的头文件

voidFunction1(…);//全局函数声明

classBox//类结构声明

{

};

#endif

例3文件的内容定义

【规则2】引用信息顺序

标准的头文件要放在前面,而且按照字母顺序排列。

标准头文件和自己的头文件之间应该用空行分隔。

【规则3】用#include格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

【规则4】用#include“filename.h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

【建议1】头文件中只存放“声明”而不存放“定义”

在C++语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数,如果从提高性能角度考虑是可取。

除此之外的选择,建议将成员函数的定义与声明分开,不论该函数体有多么小。

【建议2】不提倡使用全局变量,尽量不要在头文件中出现象externintvalue这类声明。

C、头文件的作用

①通过头文件来调用库功能。

在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。

用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的,编译器会从库中提取相应的代码。

②头文件能加强类型安全检查。

如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

(2)目录结构

如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。

例如,可将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)。

如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。

为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。

【规则5】统一目录结构

项目开始时,规定好项目相关文件在磁盘上的存储目录结构。

2、命名规则

比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。

例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p,如果一个变量由ppch开头,则表明它是指向字符指针的指针。

在程序体中应基本遵循匈牙利命名规则。

(1)总则

【规则6】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

标识符应该采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。

【规则7】标识符长度应当尽量符合“min-length&&max-information”原则。

单字符的名字也是有用的,常见如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。

【规则8】程序中不要出现仅靠大小写区分的相似的标识符。

例如:

intx,X;//变量x与X容易混淆

voidfoo(intx);//函数foo与FOO容易混淆

voidFOO(floatx);

【规则9】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。

而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。

别把这两类风格混在一起用。

【建议3】尽量避免名字中出现数字编号,如Var1,Var2等,除非逻辑上的确需要编号。

【建议4】尽量使用公认的无异义的缩写,缩写一般不超过4个字母。

例如:

HTMLHypertextMarkupLanguage

URLUniformResourceLocator

cmdcommand

initinitialize

【规则10】程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

【规则11】变量的名字应当使用“名词”或者“形容词+名词”。

例如:

floatvalue;

floatoldValue;

floatnewValue;

【规则12】函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。

类的成员函数省掉表示对象本身的“名词”。

例如:

DrawBox();//全局函数

box->Draw();//类的成员函数

【规则13】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

例如:

intminValue;

intmaxValue;

intSetValue(…);

intGetValue(…);

(2)文件

【规则14】通用文件命名规则

①类的声明文件(.h)和实现文件(.cpp):

类名.h类名.cpp

②常量定义文件:

项目名称缩写(大写)+_Const.h例:

DI_Const.h

③全局变量、函数声明文件:

项目名称缩写(大写)+_GlobalDef.h例:

DI_GlobalDef.h

④错误代码定义文件:

项目名称缩写(大写)+_ErrorDef.h例:

DI_ErrorDef.h

(3)变量

【规则15】变量名由范围前缀+类型前缀+限定词组成。

【规则16】变量和参数用小写字母开头的单词组合而成。

例如:

BOOLflag;

intdrawMode;

【规则17】变量的范围前缀

①全局变量加上g_(表示global)

例如:

intg_howManyPeople;//全局变量

intg_howMuchMoney;//全局变量

②静态变量加上s_

例如:

voidInit(…)

{

staticints_initValue;//静态变量

}

③局部变量范围前缀为空

【规则18】变量的类型前缀

类型名称

表示符号

范例

整型

n

m_nTotalNum

长整型

l

g_lOpenDate

无符号整型

u

uMsgID

无符号长整型

dw

dwCardNo

字符

ch

chChar

布尔量

b

m_bOK

浮点数

f

m_fPrice

双精度浮

d

g_dRate

字符数组

sz

m_szPath

指针

p

pProgress

字节指针

pb

m_pbSendData

无符号指针

pv

g_pvParam

字符指针

lpsz

lpszNameStr

整型指针

lpn

lpnSysDoomType

文件指针

fp

m_fpFile

结构体

st

stMyStruct

【规则19】方法参数名

使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字。

例如:

voidsetTopic(StringstrTopic)

{

this.strTopic=strTopic;

...

}

【建议5】循环变量

可以用i,j,k做循环变量,用p,q做位移变量。

【规则20】常量名全用大写,用下划线分割单词

例如:

constintMAX=100;

constintMAX_LENGTH=100;

(4)自定义类型

【规则21】类名

必须由大写字母开头的单词或缩写组成,只用英文字母,禁用数字、下划线等符号。

【规则22】typedef定义的类型

利用typedef创建类型名为以“S”加单词或缩写组成,只用英文字母。

【规则23】枚举类型

枚举类型名以“E”加单词或缩写组成,只用英文字母。

枚举类型的成员遵循常量命名约定,使用大写字母和下划线,名称要有含义。

【规则24】结构(struct)和联合(union)

结构(struct)和联合(union)名同类名。

(5)函数

【规则25】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

【规则26】函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。

【规则27】类方法名必须用一个小写字母的动词开头,后面的单词用大写字母。

例如:

getName(),setHTML()

【建议6】方法名前缀

根据需要使用get/set存取属性值,is/has/should存取布尔值。

推荐使用下列方法前缀,按下列组合配对使用:

add/remove,create/destroy,old/new,insert/delete,increment/decrement,start/stop,

begin/end,first/last,up/down,next/previous,min/max,open/close,show/hide

3、注释

(1)总则

【规则28】程序可以有两种注释:

代码注释(implementationcomments)和文档注释(documentationcomments)。

代码注释主要删除注释(注释掉目前不需要的代码)和说明注释(对代码进行说明),文档注释是指专门用来形成文档用的注释。

【规则29】注释是Why而不是What。

程序中的注释不可喧宾夺主,注释的花样要少。

【规则30】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

不再有用

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2