级VC++教学大纲Word下载.docx
- 文档编号:16512893
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:36
- 大小:55.45KB
级VC++教学大纲Word下载.docx
《级VC++教学大纲Word下载.docx》由会员分享,可在线阅读,更多相关《级VC++教学大纲Word下载.docx(36页珍藏版)》请在冰豆网上搜索。
课程设计课程集中安排在第一周。
每个同学都要提交初期、中期和最后的文档,提交课程设计报告,要求在规定时间内提交文档。
最后验收时,若文档不全,成绩受到一定影响。
七、学时分配表
总学时数16(上机16)
周次
实践、实验课
作业题
测验学时
题目名称和内容
学时
10
布置题目
要求每个学生认真阅读本VC语言课程设计说明书
要求学生通过自学理解和掌握本说明书附录2中给出的程序实例
读懂其中程序的设计功能,设计思想,设计结构等内容,
2
11
确定题目
根据自己的实际情况选择一个题目,实际动手完成这个题目,每个同学选择一个题目,或者选两个题目,允许两名学生共同选择第二部分的综合题目,并共同完成。
2
12
题目算法的确定和设计功能模块
要求每个学生理解掌握所选题目的算法,写出相应的算法
要求每个学生认真设计出题目的功能和结构
13
题目的功能代码
要求学生独立完成代码的实现,要求学生写出时间表
14
要求学生独立完成代码的实现,并检查学生完成的程序进展情况
15
学生独立完成代码的实现
并按要求撰写程序设计报告书
16
要求学生独立完成代码的实现
17
题目的验收
课程设计结束对每个学生进行验收,要求每个学生提交合格的课程设计报告,要保证程序能够运行,能够讲清楚自己的工作。
2013年9月6日
VC++程序课程设计说明书
一、设计任务与要求
《VC++程序课程设计》是计算机科学与技术各专业本科生在完成《VC++程序设计》课程学习后进行的一门专业实践课程,是培养学生综合运用所学知识解决专业相关问题的重要环节,是对学生实际工作能力的具体训练和考察过程。
本次课程设计的题目均采用VC语言来开发。
希望题目简单到学生可以独立完成,又可以达到锻炼学生编写复杂程序的课程设计目的。
最重要的是希望能避免抄袭,让学生真正锻炼自我。
要求每个学生必须参加,并完成如下各项课程设计任务:
1.要求每个学生认真阅读本VC语言课程设计说明书,理解课程设计的目的和任务。
2.要求学生通过自学理解和掌握本说明书附录2中给出的程序实例,读懂其中程序的设计功能,设计思想,设计结构,设计技巧,设计的不足等情况,提高阅读较大并且较为复杂程序源代码的能力,也可以通过实例理解本次课程设计要求的设计任务的规模和难度。
3.要求每个学生根据自己的实际情况选择2个题目,实际动手完成这个题目,编写出程序代码,并调试通过。
4.每个同学选择的2个题目,原则上不允许多名同学选择同一个题目。
多名同学选择同样题目时,独立完成,程序代码不可相同。
5.要求每个学生完成课程设计后撰写《VC++课程设计报告》,可以按照任务书后面附带的课程设计报告模版的格式实际撰写。
6.要求每位学生必须在上机前做好充分准备,每次上机必须目的明确,必须事先编写好程序代码,然后在规定的时间和地点上机调试。
二、学生选题原则
1.学生根据自身情况选择其中题目,抽取其中两道题目,原则不得选择同一类题目,作为课程设计选题,最终确定题目。
2.允许学生在给出可供选择题目之外自己选择题目,但要经指导教师同意。
3.允许两名学生共同选择第二部分及第三部分的综合题目,并共同完成。
4.题目不可为同一类题目,应有算法和应用不同的题目。
三、课程设计实施过程
1.在课程设计开始时,公布此课程设计说明书。
2.教师根据需要安排合适的时间、地点进行答疑。
3.教师要认真检查学生完成的程序进展情况。
4.教师要指导学生撰写符合规范的《VC++课程设计报告书》。
5.每个学生必须参加课程设计答辩,针对课程设计的内容回答提问。
四、检查考核办法
首先检查完成后的程序能否正常运行和得出希望的结果,程序检查通过后再检查所撰写的《VC++课程设计报告书》,最后参加课程设计答辩,根据报告的质量及面试的结果给出学生课程设计的成绩。
五、考核评分标准:
1.完成质量较好,即可评定为优秀;
完成质量尚可但有明显不足,可以评为良好;
完成质量一般,成绩为中等;
完成质量较差,成绩为及格;
没有完成,成绩为不及格。
2.成绩评定由指导教师提出初步建议;
成绩评为优秀和不及格的,要参加由系组织的统一答辩,答辩组给出最后成绩。
3.如果发现两名或更多同学的课程设计相同部分过多,特别是程序的源代码相同部分达到或超过90%,则认定为抄袭,成绩评定为不及格。
如果发现与现有技术书籍或网上资料相同部分过多,特别是程序的源代码相同部分达到或超过80%,也认定为抄袭,成绩评定为不及格。
允许参考同学的工作,允许参考现有技术书籍或网上的资料,但要有自己的不同或改进之处,可以利用已有程序的代码,但要自己重新组织,调试通过并对程序理解正确。
4.附录1中第四部分为加分题,每道题目可加10分。
附录1供选择的C语言程序课程设计题目
(一)算法设计类题目
1.横向绘制余弦曲线
在屏幕上用‘*‘横向显示0~360度的cos(x)曲线。
此题关键在于余弦曲线在0~360度的范围内,一行要显示两个点。
考虑到cos的对称性,将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形是左右对称的。
若将图形的总宽度定义为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就应为62-m。
程序中利用反余弦函数acos计算坐标(x,y)的对应关系。
2.绘制余弦曲线和直线
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(x-1)+31的迭加图形。
其中cos图形”*”表示,f(x)用”+”表示,在两个图形交叉点处则用f(x)图形的符号。
图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。
为此,可以先判定图形的交点,再分别控制打印不同的图形。
3.模拟人工洗牌
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。
使用结构card来描述一张牌,用随机函数来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。
对每个人的牌要按桥牌的规则输出。
即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、…、3、2牌的大小顺序排列。
另发牌应按四个人的顺序依次分发。
注:
C++随机数函数有:
voidsrand(unsignedseed)
4.用户猜测藏物位置:
计算机在n行n列(行号为0到n-1,列号为0到n-1)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);
用户通过输入行列号来“寻找”该物件;
若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。
5.编程序,让计算机来猜测用户“暗记”的某张扑克牌:
计算机从一副扑克牌(54张)中任意抽出27张,摆放在不同的三行上(每行9张),用户“暗记”某张纸牌,而后告诉计算机所“暗记”的那张纸牌处于哪一行中;
之后计算机再两次将纸牌重新摆放,并让用户再回答两次相同的提问(那张纸牌在重新摆放后又处在哪一行上);
此时计算机会将用户所“暗记”的那张纸牌给挑出来。
例如,程序执行后的屏幕显示结果可设计为(其中的前缀a、b、c、d代表四种不同的花色):
-------------------------------------------------------------
Line1:
c-9
d-3
a-7
d-9
a-9
c-3
b-8
a-A
d-7
Line2:
b-10
a-Q
d-6
b-4
a-3
b-9
b-K
c-A
d-8
Line3:
KING2
d-A
b-A
a-4
a-2
b-7
d-5
c-7
a-8
Rememberacard,andtellmewhatlineitresidein(1/2/3):
3
d-6KING2
b-A
b-7
d-7
d-8
Whatlinethecardyourememberedresideinnow(1/2/3):
1
b-10KING2
d-5
c-7
Yourrememberedcardis:
KING2
6.编写程序求解骑士巡游问题:
在n行n列的棋盘上(如n=5),假设一位骑士(按象棋中“马走日”的行走法)从初始坐标位置(x1,y1)出发,要遍访(巡游)棋盘中的每一个位置一次。
请编一个程序,为骑士求解巡游“路线图”(或告诉骑士,从某位置出发时,无法遍访整个棋盘—问题无解)。
当n=5时,意味着要在5行5列的棋盘的25个“点”处,按骑士行走规则,依次将1至25这25个“棋子”(数码)分别摆放到棋盘上(摆满25个位置则成功,否则失败问题无解)。
例如,当n=5且初始坐标位置定为(1,1)—即最左上角的那个点时,如下是一种巡游“路线图”。
程序执行后的输出结果为:
(x1,y1)?
=>
(1=>
5,1=>
5):
11
1
6
15
10
21
14
9
20
5
16
19
2
7
22
11
8
13
24
17
4
25
18
3
12
23
提示:
(1)“棋盘”可用二维数组B表示。
(2)编制一个具有如下原型的递归函数solve,用于完成任务:
从(i,j)点出发,做第k至第n*n(即n的平方)次的移动—将k直到n的平方这些数码按规则分别摆放到棋盘即数组B中,若成功则通过引用参数ok返回true,否则返回false。
voidsolve(inti,intj,intk,bool&
ok);
(3)编制主函数,让用户输入作为巡游起点的初始坐标位置(x1,y1),在该处摆放“棋子”(数码)1,而后进行调用“solve(x1,y1,2,ok);
”来完成所求任务。
7.编写程序对八皇后问题进行求解:
在8行8列的棋盘上放置8个皇后,使任一个皇后都不能吃掉其他的7个皇后(注:
皇后可吃掉与她处于同行或同列或同一对角线上的其他棋子),并将结果以某种方式显示出来。
例如,当求出下述的一个解时,可输出如下信息来表示该解(输出了表示摆放皇后的坐标位置以及“棋盘状态”—棋盘中有皇后的位置放一个“Q”字符,其他位置为“+”字符)。
(1,1)(5,2)(8,3)(6,4)(3,5)(7,6)(2,7)(4,8)
Q+++++++
++++++Q+
++++Q+++
+++++++Q
+Q++++++
+++Q++++
+++++Q++
++Q+++++
提示:
(1)通过“intLineNum[9];
boola[9],b[15],c[15];
”说明具有全局作用域的4个数组。
其中的:
LineNum[i]表示第i列的皇后要放的行位置(只用其中的列号1到8);
a[i]为true(i=1,2,…,8)表示第i行上尚未放皇后;
b[i]为true(i=0,1,2,…,14)表示第i条斜对角线上尚未放皇后(斜对角线指的是“/”状对角线,该对角线上各点的行列号之和i+j为一个常数);
c[i]为true(i=0,1,2,…,14)表示第i条反斜对角线上尚未放皇后(反斜对角线指的是“\”状对角线,该对角线上各点的行列号之差i-j为一个常数)。
从而当使用语句“if(a[j]&
&
b[i+j-2]&
c[i-j+7])LineNum[i]=j;
”时,可用于判断并实现:
如果在第j行的第i列上放置皇后安全的话,则将一枚皇后放置到那儿。
(2)编制一个具有如下原型的递归函数solve,它负责往第i列开始的连续8-i+1列上均放上皇后,若成功则通过引用参数ok返回true(否则返回false)。
voidsolve(inti,bool&
ok);
摆放皇后之后,若i=8即已放满时则递归出口;
否则通过solve(i+1,ok);
进行递归调用。
(3)编制主函数,首先初始化一个“空棋盘”,即将a、b、c数组的各元素均置为true(表示当前棋盘的8个行、15条斜对角线以及15条反斜对角线上都尚未摆放皇后)。
而后执行调用语句“solve(1,ok);
”,它负责往第1列开始的连续8列上均放上皇后,若成功则通过引用参数ok返回true(否则返回false)。
8.编一迷宫游戏程序,迷宫生成有用户输入和程序自动生成两种方式(迷宫以矩阵表示),要求输出迷宫和走出迷宫的路径。
9.编一棋盘游戏程序,人为一方,计算机为一方,人下时字符*将放在所指定的位置,而计算机下时字符@将放在某一空格位置。
行、列、或两对角线有连续三个相同字符一方为胜方,也有平局情况。
要求能动态演示。
*
@
10.调车头
下面铁路线A段中,有n个车头,按图中所示的顺序编号为1,2,...,n。
每个车头都可以在铁路上独立行驶,但约定,当B段或C段已有车头时,新进入这二段的车头号必须比该段中已有的车头号小。
设计一个程序,调用递归过程,将A段中车头的顺序颠倒过来。
B段
C段
A段
...
1
n
n-1
11.地图着色
地图上有不同国家(不同区域),每个国家都与其他一些国家邻接。
现要求对地图着色,使所有的国家与它的邻接的国家有不同的颜色。
通常由四种颜色就已足够。
可采取试探的方法逐步逼近最后解,即按某种模式生成一个部分解,检查它是否合格。
如为合格,在扩展这个部分解向最后解逼近,否则为不合格,不管如何扩展这个部分解都不会得到最后解。
这时必须放弃已生成的部分解中的某些结果,“回朔”到先前的部分解,在生成一个部分解,直到获得最后解。
这种算法称为回朔算法。
以着色一个六个区域的地图为例。
区域邻接关系
区域
邻接区域
3
4
5
6
表中数据正是所需输入的数据,可以用一个n×
n的矩阵来存放(n为区域数目)。
0表示邻接区域的结束。
设着色的颜色次序为红、蓝、绿、黄。
对于区域起首先着成红色。
对于区域2,因与区域1邻接,所以不能再着红色,而只能着第二种颜色,即蓝色。
同理区域3着绿色,区域4着黄色,区域5着蓝色,区域6由于与区域1、3、4和5邻接,所以四种颜色都不合适。
这时,必须回溯到区域5,它不能是已着好的蓝色,也不能着蓝色的下一种颜色绿色,因为这会使它与区域3同色,再选下一种颜色,即黄色,它与区域1和3不同色。
所以区域5退去蓝色,改着黄色。
此后,区域6可着蓝色。
最后,得到的解为各区域的颜色依次为红、蓝、绿、黄、黄、蓝。
12.设计一文件阅读器,可以一次一屏(20或22行)显示文件内容,每次显示完一屏内容后,提示使用者键入一控制字符以控制屏幕翻滚。
如字符'
n'
显示下一屏,字符'
p'
返回上一屏,字符'
q'
结束阅读。
13.编写程序,从键盘读入一个文本文件名字(可带路径),为该文件中的所有单词建立一个词汇索引。
按字母顺序显示所有单词(仅一次),后面紧跟着它们所在的行号。
大写与小写字母被认为是相同的。
例如,对于下列的输入文件:
Tobeor
nottobe,
thatisthequestion.
产生的词汇索引如下:
be12
is3
not2
or1
question3
that3
the3
to12
(二)综合类题目
14.有理数运算
问题描述
有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。
在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。
对有理数的各种操作都可以用重载运算符来实现。
基本要求
定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。
写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。
此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
测试数据
在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。
实现提示
设有两个有理数a/b和c/d,则有:
(1)有理数相加分子=a*d+b*c;
分母=b*d
(2)有理数相减分子=a*d-b*c;
(3)有理数相乘分子=a*c;
分母=b*d
(4)有理数相除分子=a*d;
分母=b*c
优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。
对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。
15.通讯录管理
编写一个简单的通讯录管理程序。
通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
程序应提供的基本基本管理功能有:
1)添加:
即增加一个人的记录到通信录中
2)显示:
即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:
即将通讯录信息保存在一个文件中。
4)装入:
即将文件中的信息读入程序。
5)查询:
可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6)修改:
可修改一个人的除姓名外其它信息。
程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链表的遍历可以操作这些数据。
16.商品销售统计
编写商品销售统计程序,商品的信息有:
商品的名称,计量单位(重量或件),单价。
所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。
客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。
程序分为两个部分:
第一部分用于输入商品的信息并允许修改和删除;
第二部分实现销售统计。
程序运行时由用户选择进入哪一部分功能,并能在运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 教学大纲