vc++在控制台窗口中输出彩带(河北工业大学)

上传人:第*** 文档编号:32819197 上传时间:2018-02-12 格式:DOC 页数:6 大小:49.50KB
返回 下载 相关 举报
vc++在控制台窗口中输出彩带(河北工业大学)_第1页
第1页 / 共6页
vc++在控制台窗口中输出彩带(河北工业大学)_第2页
第2页 / 共6页
vc++在控制台窗口中输出彩带(河北工业大学)_第3页
第3页 / 共6页
vc++在控制台窗口中输出彩带(河北工业大学)_第4页
第4页 / 共6页
vc++在控制台窗口中输出彩带(河北工业大学)_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《vc++在控制台窗口中输出彩带(河北工业大学)》由会员分享,可在线阅读,更多相关《vc++在控制台窗口中输出彩带(河北工业大学)(6页珍藏版)》请在金锄头文库上搜索。

1、编号: 21第 1 页/共 6 页河北工业大学计算机软件技术基础(VC)课程设计报告Captain_Kidd一、题目:在控制台窗口中输出彩带(21)二、设计思路1、总体设计本程序可以实现在控制台输出水平彩带、垂直彩带、斜向条纹以及任意图形的功能。本程序共包含五个功能模块,分别为主控制模块、输出水平彩带模块、输出垂直彩带模块、输出斜向条纹模块和输出任意图形模块。2、各功能模块的设计主控制模块为主函数,目的在于重复提示用户输入信息并接收用户命令,当用户输入不同的满足条件的命令时,主函数进入其他功能模块实现程序功能,当用户输入不满足条件的命令时,退出,所以主函数为一个永真循环,并且在用户输入不满足条

2、件的命令时跳出循环,跳出循环后程序结束,此为主函数的总体思想,但是在后面的其它功能模块设计中出现对控制台的颜色配置设置,并且在其它功能模块的最后并没有更改回控制台的默认颜色配置,所以在主函数提示用户输入信息前要将控制台的颜色配置更改为默认颜色配置,然后再输出提示信息,这样才能实现设计要求,到此为主控制模块的整体设计思想。下面介绍输出水平彩带模块、输出垂直彩带模块、输出斜向条纹模块和输出任意图形模块的设计思想和实现方法。1)输出水平彩带模块,实现水平彩带的输出,彩带输出的核心原理是对前景色和背景色的输出,可以配置背景颜色为彩带颜色,然后输出多个空格,最后形成彩带,本程序采用此种方法,也可以配置前

3、景颜色和背景颜色为相同颜色作为彩带颜色,此时,所输出的任意字符不会影响最后的视觉效果,仍为一条条彩带。控制台可以显示 25 行 80 列的字符,所以一条条彩带的形成实质为一个个空格拼成的图形,只要配置好每一个空格的背景颜色即可。形成水平彩带的这些空格是有规律的,第一行的背景颜色全部为黑色,对应的颜色控制字符为 0,第二行的背景颜色全部为蓝色,对应的颜色控制字符为 1,以此类推,所以可以使用双重循环来实现,内层循环控制每一行的字符数,外层循环控制行数,在输出空格前进行对空格的颜色配置,然后输出,因为 cout 对象的缓冲现象,所以在输出每一个空格后就应立即对缓冲区刷新,使得这个空格得以立即输出,

4、而对于水平彩带,也可以输出完一行空格后对缓冲区再刷新,输出 24 行空格后就形成了水平彩带。2)输出垂直彩带模块,实现垂直彩带的输出,彩带的核心原理仍然不变,只是每一行空格的颜色发生了有规律的变化。在任务书中要求每一列彩带的宽度为一个汉字的宽度,即两个字符的宽度,所以每次输出为两个空格,且这两个空格的背景颜色配置是一样的。第一行的第一个和第二个的空格的背景颜色为黑色,对应的颜色控制字符为 0,第三个和第四个空格的背景颜色为蓝色,对应的颜色控制字符为 1,以此类推,以后每行的空格背景颜色配置和第一行空格背景颜色配置一样,直到 24 行,所以仍旧使用双重循环来实现,外层循环控制行数,内层循环控制每

5、一行的双空格数,每一个双空格的颜色配置随着这个双空格在这一行的位置而发生变化,每次输出一个双空格后就应立即对缓冲区刷新,因为和它水平相邻的双空格的背景颜色配置发生了变化。输出 24 行空格后就形成了垂直彩带。编号: 21第 2 页/共 6 页3)输出斜向条纹模块,实现斜向条纹的输出,经过前两个函数的设计并且实现后发现斜向条纹只不过是每一个空格的背景颜色配置和这个空格所在的行数和列数有更复杂的关系,从中只要找到这个关系即可解决此问题,外层循环和内层循环分别控制行数和列数,每个空格的颜色配置和行数列数有一定的关系,给空格配置好背景颜色后立即输出即可,其他在此不再赘述。4)输出任意图形模块,实现任意

6、图形的输出,控制台输出的 24 行 80 列空格可以看做是一个二维数组,只需将图形的每一个空格的背景颜色配置存放到一个二维数组里面,在输出每一个空格之前,将空格的颜色配置设置为二维数组中对应的元素,输出后立即对缓冲区刷新,这样就可以在控制台输出这个图形。本程序中,自定义了一个“C+”图形,首先对这个二维数组中的每一个元素进行赋值,完成了这个图形的底色的颜色配置,然后寻找到这个“C+”图形所对应的那些二维数组元素,把这些元素进行再次赋值,使这些元素当前所赋的值覆盖了第一遍所赋的值,从而完成了“C+”这个图形的颜色配置数组,最后使用二重循环完成每一个空格的输出,每一个空格对应的背景颜色配置为二维数

7、组里面对应的值,即第一行第一个空格的背景颜色控制字符为二维数组中第一行第一个元素的值,第一行第二个空格的背景颜色控制字符为二维数组中第一行第二个元素的值,以此类推,输出每一个空格后立即对缓冲区刷新,这样就实现了任意图形的输出。3、设计中的主要困难及解决方案程序设计初期,运行的程序出现多行、隔行现象。通过上机调试,发现多写了一些语句,最终修改过来,完成了课程设计。4、设计的程序最终完成的功能本程序可以实现在控制台输出水平彩带、垂直彩带、斜向条纹以及任意图形的功能。测试数据及运行结果如下:运行程序,当用户在控制台输入 0 时,控制台显示如下:当用户在控制台输入 1 时,控制台显示如下:当用户在控制

8、台输入 2 时,控制台显示如下:当用户在控制台输入 3 时,控制台显示如下:当用户在控制台输入 4 时,控制台显示如下:三、程序清单本程序包含rainbow_main.cpp、rainbow_rp.cpp、rainbow_cp.cpp、rainbow_lp.cpp、rainbow_c.cpp、rainbow_setcolor.cpp 和 rainbow.h 七个文件。1、rainbow_main.cpp 文件清单#include rainbow.hvoid main ()int a;while(1)编号: 21第 3 页/共 6 页setcolor(15,0); /为控制台设置默认背景前景颜色

9、配置。couta; /输入 aif(a=0) rp(); /判断 a 的值后,分别进入函数或跳出循环。else if (a=1) cp();else if (a=2) lp(); else if (a=3) c();else break;2、rainbow_rp.cpp 文件清单#include rainbow.hvoid rp()int k;for (int i=0;i15)k=i-16;setcolor(3,k); /输出空格前为控制台设置好背景颜色配置。for(int j=0;j#include void rp();void cp();void lp();void c();void se

10、tcolor(unsigned short,unsigned short);四、对该设计题目有何更完善的方案1、程序自我评价。完成了课程设计任务书的基本要求和创新要求。2、对课题提出更完善的方案可以将源程序中的一些语句删除,比如设置颜色配置前为了得到颜色的一些语句,这样使得程序更加精炼。五、收获及心得体会通过本次课程设使自己在函数的调用、函数的分文件处理上的能力得到提高。编写程序的思维编号: 21第 6 页/共 6 页方式上比以前也有所提高。通过对程序的编写,加深了对 C+的认识,更进一步了解了它的运行环境,同时也提高了自己的编程水平,也使我认识到对于这门课的学习要做到理论联系实际,在实践中才能真正检验学习的效果,提高自己的能力。日期: 2009 年 6 月 20 日

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号