课程设计实习指导书计算机高级语言程序设计.docx
- 文档编号:8921135
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:39
- 大小:48.74KB
课程设计实习指导书计算机高级语言程序设计.docx
《课程设计实习指导书计算机高级语言程序设计.docx》由会员分享,可在线阅读,更多相关《课程设计实习指导书计算机高级语言程序设计.docx(39页珍藏版)》请在冰点文库上搜索。
课程设计实习指导书计算机高级语言程序设计
一、课程设计目的
1、使学生对所学理论知识进行一次综合性复习;
2、培养学生对实际问题的分析能力;
3、培养学生独立编程、开发软件的动手能力;
4、培养学生开放思维的创新能力;
5、培养学生熟练掌握VC++调试技能;
6、培养学生规范的编程习惯;
7、培养学生团队协作精神;
8、培养学生撰写课程设计报告的能力;
9、认识MFC开发环境。
(附加)
二、课程设计要求
为了能更好地达到课程设计的目的,要求学生:
1、每次上机前充分做好准备工作,查阅资料,预习相关内容,对课程设计内容进行方案的预设计,编制出源程序代码。
2、充分利用上机时间完成源程序代码的输入、调试及优化。
3、程序代码的编制应按照C++编码规范的要求进行,具体可参考指导书中【附件一】“C++编码规范”。
4、课程设计结束后,按照指导书中【附件二】“课程设计报告格式”的要求撰写出课程设计中期设计报告(要求用A4纸打印)。
5、按题目要求独立完成课程设计,不旷课、不迟到、不早退、遵守机房规定、爱护机房设备。
三、课程设计内容和时间分配
1、课程设计内容分为两个部分:
(1)课程设计基本练习题目:
A组(完成一题)、B组(完成一题)、C组(完成两题);
(2)课程设计中期设计题目:
共1题;
2、实习中,建议每天完成一道题目。
在课程设计中,同学们可以根据自己的实际情况,时间上酌情调整。
3、课程设计题目完成的数量要求:
(1)课程设计基本练习题目(一级)A组、B组、C组,每组任选一题,共三题;
(2)课程序设计基本练习题目(二级)A组、B组,每组任选一题,共两题;
(3)课程设计综合练习题目至少选做一题,多做者可酌情加分。
4、课程设计的成绩与题目完成的数量、质量、创新程度、回答提问、课程设计中期设计报告以及平时表现等有关,具体请看指导书“成绩评定及评分标准”。
四、课程设计题目
、课程设计基本练习题目(18分×4)
【A组】请从以下1-3题中任意选做一题
1、输出1至100之间每位数的乘积大于每位数的和的数,例如对于数字12,有1*2<1+2,故不输出该数;对于27,有2*7>2+7,故输出该数。
2、编写一个程序,求出所有的“水仙花数”。
所谓水仙花数,是指一个三位数,其各位数字的立方和恰好等于该数本身。
例如153=1*1*1+5*5*5+3*3*3,所以153是水仙花数。
3、求任意n个数中的最大数和最小数:
先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。
【B组】请从以下4-6题中任意选做一题
4、对两个有序数组进行合并:
设有如下数组A、B,并假设两个数组的元素都已经有序(从大到小降序排列)。
编程序,合并A、B数组形成一个新的数组C,并使C的元素仍有序(从大到小降序排列)。
intA[10]={123,88,86,86,33,15,7,0,-1,-3};
intB[10]={86,69,51,50,27,19,15,12,5,2};
5、统计若干行(字符串)中的关键字各出现了多少次:
从键盘输入n个字符串(每串为一行最多80个字符,且输入时以回车结束每一行),先存放在一个二维字符数组中。
而后统计全体行中如下10个C++关键字各自出现的次数,并将结果显示在屏幕上。
要统计的关键字有:
int,float,double,if,else,for,while,do,case,break。
6、计算两个日期之间的间隔天数:
从键盘输入两个日期(如以year1,month1,day1以及year2,month2,day2的方式来输入它们),而后计算出这两个日期的间隔天数并在屏幕上显示出结果。
要求编制具有如下原型的函数difs2Date:
longdifs2Date(inty1,intm1,intd1,inty2,intm2,intd2);
它负责计算出两个日期的间隔天数并返回,要求将该函数的代码存放到一个叫做“difs2Date.h”的头文件中,而在main函数的主文件中通过include编译预处理命令将该头文件的内容包含进来,并在main主函数中通过调用difs2Date函数来实现所需的计算。
【C组】请从以下7-10题中任意选做2题
7、编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。
8、以面向对象的概念设计一个类,此类包含3个私有数据:
unlead(无铅汽油)、lead(有铅汽油)以及total(当天总收入)。
无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公升。
请以构造函数方式建立此值。
试输入某天所加的汽油量,本程序将列出加油站当天的总收入。
9、设计一个时间类Time,包括3个数据成员,时(h)、分(m)、秒(s),另外包括存取各数据成员和设置时间的成员函数,按上、下午各12小时或按24小时输出时间的成员函数,以及默认构造函数,默认时间值为0时0分0秒。
10、编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)。
、课程设计中期设计题目(28分×1)
11.求解一元二次方程。
一元二次方程的定义为:
ax2+bx+c=0
(1)如果b2-4ac>0,方程有两个不同的实根,分别是:
(2)如果b2-4ac<0,方程没有实根,但有虚根;
(3)如果b2-4ac=0,方程有一个实根。
请你编写一个程序,使其能求出多个二次方程的根。
该程序要询问用户是否想继续解下一个方程。
用户输入1来继续,输入其它数字,则终止程序。
程序要求用户输入a,b和c,然后根据前面的条件计算,并输出答案。
要求:
使用类实现,
(1)a,b,c为该类的私有成员变量;
(2)求根的实现为该类的成员函数,形式为:
//函数返回值:
实根的个数;
//参数:
x-用以返回实根值的数组;
longCalResult(floatx[]);
(3)该类还包含有参构造函数、析构函数。
(4)使用MFC工程实现,可酌情加分。
五、成绩评定及评分标准
由指导教师根据课程设计任务完成情况、现场提问、观看运行结果、评阅课程设计报告并参考学生平时表现等五方面给出课程设计成绩。
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定义文件的结构
【规则2】引用信息顺序
标准的头文件要放在前面,而且按照字母顺序排列。
标准头文件和自己的头文件之间应该用空行分隔。
【规则3】用#include
【规则4】用#include“filename.h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
【建议1】头文件中只存放“声明”而不存放“定义”
在C++语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数,如果从提高性能角度考虑是可取。
除此之外的选择,建议将成员函数的定义与声明分开,不论该函数体有多么小。
【建议2】不提倡使用全局变量,尽量不要在头文件中出现象externintvalue这类声明。
C、头文件的作用
①通过头文件来调用库功能。
在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。
用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的,编译器会从库中提取相应的代码。
②头文件能加强类型安全检查。
如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
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】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
不再有用的注释要删除。
【规则31】注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。
【规则32】当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。
【规则33】修正bug之后,要加上描述修改状况的注释。
(2)文档注释
【规则34】文档注释
文档注释用/**……*/标识,它对代码的使用说明进行描述,每一个文档注释被放进/**……*/分隔符,每一个类、接口、构造函数,方法和成员变量拥有一个注释,这样的注释应该出现在相应的声明前。
例如:
/**
*Example类提供如下的功能...
*/
classExample
{
……
}
类和接口的文档注释(/**)的第一行不应该缩进,以后的文档注释每行都应有一个空格的缩进(给垂直排列的星号)。
成员函数(包括构造函数),第一行文档注释前有一个Tab缩进,后续的行有一个Tab外加一个空格的缩进。
对于那些不适于文档注释的类、接口、变量、方法的信息,用代码注释进行说明,而不应该在类的文档注释中。
文档注释不应该放在方法或构造函数的定义体内。
(3)源程序文件
【规则35】源程序文件文档注释
每个源程序文件的开头都需要文档注释(参见例1),主要内容有:
①版权声明:
版权声明内容为CopyrightBeijingChinaTechinternationalSoftware,Inc.AllRightsReserved.。
②文件名称:
本文件的名称。
③开发者姓名:
填写最初编写此代码的人。
④创建日期:
本文件的创建日期。
⑤功能目的:
简要描述本文件中代码的功能。
⑥修改历史(修改日期、修改人、修改编号、修改内容)。
其中修改历史可以多次出现,任何对本文件的修改必须增加一条修改历史。
(4)类
【规则36】类注释
每个类的必须有文档注释,其中至少要包括:
功能、版本、最后修改时间、作者、修改历史(修改日期、修改人、修改编号、修改内容)等,其中修改历史可以多次出现,任何对本类的修改必须增加一条修改历史,此外可以根据需要添加其它相关信息或链接。
类注释必须在类的声明之前。
例例如:
/**
*类String
封装了有关字符串的操作,这些操作包括
*单个字符定位、串比较、查找、提取子串、大写/小写转换等
*
*@authorLeeBoynton
*@authorArthurvanHoff
*@version1.130,02/09/01
*/
classString
{
…
}
(5)函数
【规则37】函数注释
所有函数(包括类自定义类型的成员函数)必须有文档注释。
注释在其定义之前,按如下方式书写:
/**
*判断一字符串是否为数字*
*@paramsNum字符串
*@returntrue=是数字false=不是数字
*/
booleanisNumber(StringsNum)
{
...
}
【规则38】构造函数
注释要标明此函数为构造函数。
如果有多个构造函数,用递增的方式书写,参数多的写在后面,如有多组构造函数,每组分别用递增的方式写,并且每一个都要有详细的注释。
(6)变量
【规则39】变量的注释
变量注释出现在变量声明或自定义数据类型成员声明的前一行,用以描述对应变量的作用和含义,变量注释一般占一行。
下列变量必须有注释:
①自定义类型的成员
②全局变量
③其它重要的局部变量
注释必须按如下方式书写:
/**
*包计数器
*/
intiPackets;
(7)语句
【建议7】代码注释风格
代码注释用/*...*/和//标识。
程序可以有四种风格的代码注释:
块注释、单行注释、后缘注释(trailing)、行尾注释(end-of-line)。
块注释。
块注释常用来提供文件、方法、数据结构、算法的说明。
块注释可以被用在每个文件的开头和每个方法的起始,它们也可以被用在其他地方,比如在方法内部等。
块注释在函数或方法的内部应该和它们描述的代码具有同样的缩进格式。
块注释之前应该有一个空行。
单行注释。
短的注释可以出现在单行,和它后面的代码使用同样的缩进。
单行注释前应该有一个空行。
后缘注释(trailing)和行尾注释(end-of-line)。
非常短的注释可以出现在和它说明的代码的同一行中,但应该和被说明的代码相隔足够远。
如果在一个代码块中出现了多于一个的短注释,它们应该有相同的缩进。
【规则40】语句块结束注释
①函数定义的结束必须加如下内容的注释:
//endof函数名。
若程序文件中能够明确指出函数结束的不需加此注释。
②对于包含代码行较多的条件语句,每个条件处理语句块的结束必须加如下内容的注释:
//endof此语句块的条件。
③对于包含代码行较多的循环语句,循环语句块的结束必须如下内容的注释:
//endof循环条件。
4、程序的版式
(1)空白符
A、空行
【规则41】在每个类声明之后、每个函数定义结束之后都要加空行。
【规则42】在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行分隔。
B、空格
【规则43】在if、for、while等关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 实习 指导书 计算机 高级 语言程序设计
文档标签
- 程序设计语言课程设计指导书
- 程序设计上机指导书
- 高级语言程序设计课程设计任务书
- 课程设计程序设计指导书
- 高级程序设计高级程序设计课程设计
- 高级语言程序设计实验练习
- 计算机高级教程计算机高级教程
- 计算机高级语言课程设计
- 计算机程序设计语言课程设计
- 语言课程设计指导书
- 语言程序设计13附录计算机
- 语言程序设计实习指导报告
- 计算机语言课程设计赛车
- 计算机二级语言程序设计习题
- 计算机程序设计语言课程设计报告
- 公务员计算机语言程序设计
- GIS课程设计实习指导书
- 高级语言课程设计数字
- 语言程序设计实践全书习题
- PKPM课程设计指导书
- 课程设计指导书
- 语言程序课程设计数字
- 课程设计指导ysb
- 住宅课程设计设计指导书
- 语言程序设计课程设计小结
- 课程设计语言设计一个