《《软件设计基础-C++》课程设计报告书(共17页).doc》由会员分享,可在线阅读,更多相关《《软件设计基础-C++》课程设计报告书(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上河北联合大学2011-2012第2学期 软件设计基础-C+课程设计报告设计名称: 趣味矩阵 姓 名: 柴珊珊 学 号: 1 专业班级: 给水排水工程一班 学 院: 建筑工程学院 设计时间: 5月1号6月5号 设计地点: 学校机房 成绩:指导教师评语: 指导教师签字: 年 月 日专心-专注-专业目 录1.课程设计目的32.课程设计任务与要求33.课程设计说明书34.课程设计成果75.程序调试过程146.设计问题的不足和改进方案147.课程设计心得158.参考文献151课程设计目的软件设计基础-C+课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程
2、设计既覆盖C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用软件设计基础-C+课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报
3、告任务:本课程设计题目涉及到四种矩阵的生成,四种矩阵的特点如下:第一种矩阵的特点是从左上角开始,在围着一个“正方形”绕圈。正方形越来越大,直到充满整个矩阵。第二种矩阵是一个蛇形矩阵,不过这个蛇盘旋路线是沿着与对角线平行的方向来回地绕行。第三种矩阵是一个回旋阵,从外到里是连续的。也可以看作是一个从外向内绕的蛇形矩阵。第四种矩阵也是一个回旋阵,从里到外是连续的。可以看作是一个从里向外绕的蛇形矩阵。3课程设计说明书概要设计模块说明:在我设计的程序中一共包括了六个模块,分别是:定义矩阵类模块、正方形旋转矩阵模块、蛇形对角线盘旋矩阵模块、回旋阵矩阵模块、从里到外回旋阵矩阵模块以及结束模块。定义一个矩阵类
4、,分别用四个成员函数来实现四种不同的矩阵。 模块结构图:定义一个5行5列的矩阵四种不同形式的矩阵结束语详细设计 总体流程图:定义矩阵类从里到外回旋阵回旋阵正方形旋转蛇形对角线盘旋 结束程序 各功能模块流程图:定义矩阵类:定义一个二维数组,各维长度为5。 i=0,j=0,tempNUMNUM=0,0,0正方形旋转矩阵: 根据For循环函数的条件下移一步右移i+1步下移i+1步右移一步上移i+1步左移i+1步正方形旋转矩阵i=0,j=0,k=0,tempNUMNUM=0,0,0蛇形对角线盘旋分别满足不同for循环条件左下移上移步右上移左移蛇形对角线盘旋矩阵temp0NUM-1=NUM*NUM回旋阵
5、矩阵:分别满足不同for循环条件右移上移左移下移回旋阵矩阵temp0NUM-1=NUM*NUM从里到外回旋阵:分别满足不同for循环条件右移下移上移左移从里到外回旋阵矩阵4课程设计成果#include using namespace std;const int NUM = 5;/趣味矩阵类的声明;class FunnyMatrixpublic: FunnyMatrix(); void GetSqure(); void GetSnake(); void GetCircleExToIn(); void GetCircleInToEx(); void PrintElem();private: int
6、 elemNUMNUM;/类构造函数FunnyMatrix:FunnyMatrix() int i = 0,j = 0; for(i=0;iNUM;i+) for(j=0;jNUM;j+) elemij=i*NUM+j+1;void FunnyMatrix:PrintElem() coutnOut the Matrix:n; int i=0,j=0; for(i=0;iNUM;i+) for(j=0;jNUM;j+) coutelemij ; coutendl; void FunnyMatrix:GetSqure() int i=0,j=0,tempNUMNUM=0,0,0; for(i=0;
7、iNUM-1;i+) temp00=1; if(i%2=0) /右移一步 temp0i+1=temp0i+1; /下移i+1步 for(j=1;j=0;j-) tempi+1j=tempi+1j+1+1; else /下移一步 tempi+10=tempi0+1; /右移i+1步 for(j=1;j=0;j-) tempji+1=tempj+1i+1+1; for(i=0;iNUM;i+) for(j=0;jNUM;j+) elemij=tempij;void FunnyMatrix:GetSnake() int i=0,j=0,k=0,tempNUMNUM=0,0,0; temp00=1;
8、tempNUM-1NUM-1=NUM*NUM; for(i=0;i=0;j-,k+) tempkj=tempk-1j+1+1; else /下移一步 tempi+10=tempi0+1; /右上移 for(j=i,k=1;j=0;j-,k+) tempjk=tempj+1k-1+1; for(i=NUM-1;i1;i-) if(NUM-1-i)%2=0) /左移 tempNUM-1i-1=tempNUM-1i-1; /右上移 for(k=NUM-2,j=i;j=NUM-1;j+,k-) tempkj=tempk+1j-1-1; else /上移一步 tempi-1NUM-1=tempiNUM-
9、1-1; /左下移 for(k=NUM-2,j=i;j=NUM-1;k-,j+) tempjk = tempj-1k+1-1; for(i=0;iNUM;i+) for(j=0;jNUM;j+) elemij=tempij;void FunnyMatrix:GetCircleExToIn() int i=0,j=0,k=0,tempNUMNUM=0,0,0; temp00=1; for(i=0;iNUM/2;i+) if(i!=0) tempii=tempii-1+1; /右移 for(j=i+1;jNUM-i;j+) tempij=tempij-1+1; /下移 for(j=i+1;j=i;
10、j-) tempNUM-1-ij=tempNUM-1-ij+1+1; /上移 for(j=NUM-2-i;ji;j-) tempji=tempj+1i+1; if(NUM%2=1) tempNUM/2NUM/2=NUM*NUM; for(i=0;iNUM;i+) for(j=0;jNUM;j+) elemij=tempij;void FunnyMatrix:GetCircleInToEx() int i=0,j=0,k=0,tempNUMNUM=0,0,0; temp0NUM-1=NUM*NUM; for(i=0;iNUM/2;i+) if(i!=0) tempiNUM-i-1=tempi-1
11、NUM-i-1-1; /下移 for(j=i+1;j=i;j-) tempNUM-1-ij=tempNUM-1-ij+1-1; /上移 for(j=NUM-2-i;j=i;j-) tempji=tempj+1i-1; /右移 for(j=i+1;jNUM-i-1;j+) tempij=tempij-1-1; if(NUM%2=1) tempNUM/2NUM/2=1; for(i=0;iNUM;i+) for(j=0;jNUM;j+) elemij=tempij;int main(void) FunnyMatrix fm; coutn矩阵初始化信息:; fm.PrintElem(); coutn
12、第一种矩阵: ; fm.GetSqure(); fm.PrintElem(); coutn第二种矩阵: ; fm.GetSnake(); fm.PrintElem(); coutn第三种矩阵: ; fm.GetCircleExToIn(); fm.PrintElem(); coutn第四种矩阵: ; fm.GetCircleInToEx(); fm.PrintElem(); coutnn!Hello World,kutpbpb!; /* prints !Hello World! */ return 0;5.程序调试过程调试程序一般有两个条件:一是通过了编译而且没有产生运行时错误,二是运行结果不
13、符合预期的结果。刚开始的时候把头文件写成了#include,所以程序出现错误,后来发现应该是#include。 而且在一个后边忘输入了一个;,使程序无法正常运行。6.设计问题的不足和改进方案该程序不能由用户自己在调试过程中选择矩阵的行数和列数,只有在源代码中修改程序才能改变矩阵的行列数,所以这个不太方便。根据所学的来定义一个数组,行数和列数都是变量,用for循环函数来根据n的输入确定矩阵的行数和列数。7.课程设计心得刚开始,一接触到C+感觉很迷茫,因为原来对这科没有系统的概念.后来,随着C+课程的进行,我对C+有了一定的了解和感悟。首先,编程就是把一件事的步骤分拆开来,用源代码教计算机去做。在编程的前要从整体上把握,在编程过程中要注意排版,一定要会使用,调试要有耐心。通过课程设计,我学会了用程序编写矩阵,并且矩阵的形式有很多种。这个程序模块的设计,让我懂得了一些小型程序,让我对程序有了更多地了解和认识。8.参考文献1、钱能主编,C+程序设计教程,清华大学出版社,19992、郑人杰主编,软件工程,清华大学出版,19993、陈光明主编,实用Visual C+编程大全,西安电子科技大学出版社,20004、艾德才主编,C+程序设计简明教程,中国水利水电出版社,20005、李宁主编,C+语言程序设计,中央广播电视大学出版社