八皇后课程设计报告

时间:2024.5.2

目录

一  绪论... 1

二 需求分析... 1

三 概要设计... 2

四 详细设计... 3

五 调试分析... 4

六 用户使用说明... 5

七 测试结果... 5

小结... 5

谢辞... 6

参考文献... 6

附录... 6


一  绪论

八皇后问题是一个古老而著名的问题。这个问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。例如:

面对这个问题,要放在以往可能就要耗费大量的时间在纸上画来画去,这样做的耗费了大量的精力,但是效果却不佳。借助计算机就可以很高效的完成这些工作。那么,采用什么样的数据结构和算法,才能在时间和空间复杂度上完成这个问题呢?

二  需求分析

1.问题说明:

   在8X8的方格棋盘上安置8枚棋子(皇后),棋盘的合法布局:对于任何两个棋子必须满足三个约束条件

1不能在同一列 2不能在同一行 3不能在同一个对角线上

2.本程序的目的是将八皇后中满足条件的所有的可能性统计出来, 然后将这些结果输出

3. 测试数据

输入皇后的个数8,程序会输出出可能的结果,以及统计结果.

三  概要设计

1. 算法思想:

算法集中在如何解决棋子之间的冲突问题。

  I.判断每个棋子是否满足规则的方法可以说是如出一辙。因此算法的整体思想是递规调用判断函数chess( )。从i行开始安置各行元素,当i>=8时输出结果.

  II.具体的chess( )函数的思想是: 先在第1行放上一个皇后,然后在第2行合适的位置放上一个皇后,依次类推,如果8行都放满了,说明找到了一个解,如果第好第i行的皇后后,第i+1行找不到合适的位置,这时就回到第i行,把第i行的皇后放到下一个位置,继续尝试下一行。如此反复,知道找到所有的解。注意,这种算法找的解可能有等价的,某些解可由别的解经过旋转棋盘得到。

2. 数据类型的定义:

   I. char Queen[8][8]  表示棋盘.这里定义为char类型的是为了找到满足条件的棋盘时将棋子占据的位置用一个字符代替.以使输出结果美观.

   II. int a[8] 这个表示皇后所放置的列数 a[0]~a[7]表示第一列到第8列

   III. int b[15]  int c[15] 表示棋盘上的对角线左右两边一共两条

3. 主程序

          Void main( )

     {

          初始化;

                     Do{

                                   接受命令(输入皇后的的个数);

                                   处理命令;

                  }while(“命令”!=”退出”);

          }

4. 本程序只有两个模块,调用关系简单

                                   主程序模块

                                         

        判断皇后的位置是否符合规则的模块

四  详细设计

1.主程序以及其他伪码算法

  Void main( )

  {

              //主程序

              Initialization;//棋盘及其他数据的初始化

              Chess(int i);//执行判断函数

   }//main

Void Initialization( )

{

              //系统初始化

              Clrscr;//清屏

              为棋盘初始化,全部置空;

              将对角线标记数组以及列标记数组初始化置零;

}

Chess(int i)

{

for(j=0;j<8;j++) /*第i个皇后在第j行*/
if ((i,j)位置为空)) /*即相应的三个数组的对应元素值为0*/
{

占用位置(i,j)

 /*置相应的三个数组对应的元素值为1*/
   if (i<7)
   为i+1个皇后选择合适的位置;
   else PrintResult()//输出一个解

    /*如果前次的皇后放置导致后面的放置无论如何都不能满足要求,则回溯,重置*/

}

}

PrintResult()

{

输出棋盘;

结果自增一;

}

2.函数的调用关系图

3.    本程序的编程中使用了递规调用的思想.如果采用非递归的方法,使用大量的判断语句这样无疑大大的增加了程序的时间复杂度,而且代码比较拖沓不精练。如果我们使用了数据结构中的算法后,那么程序的时间复杂度,以及相关的代码简化都能取得不错的改进。这个程序,运用到了数据结构中,第三章的栈,第五章的数组,以及第六章的树和回溯法。特别是在第六章,对于树以及二叉树的学习,更是为八皇后的问题提供了科学的解决方案,通过对树的分析,把八皇后的问题看成了树,而在衍生第一个变化后,上面的第一层八个变化就变成了八个结点,而这八个结点再继续的衍生……,这样比较形象的将八皇后的问题简单化了。然后再通过回溯法进行设计,回溯法是设计递归过程的一个重要的方法。它的求解过程实质上是一个先序遍历一棵“状态树“的过程。在这个程序设计中,它先进行判断,棋盘上是否已经得到一个完整的布局(即棋盘是否已经摆上8个棋子),如果是,则输出布局;如果不是则依次先根遍历满足约束条件的各棵子树,流程即是:

判断该子树根的布局是否合法è合法的话,则先根遍历该子树è不合法的话,则剪去该子树的分支。

五  调试分析

1. 程序看起来比较简单其实当中是数据结构的编程思想隐藏在其中。经过数据结构的学习后可以说拓宽了我们的编程视野。不想以前学习C++那样面对题目的时候力不从心。

2.调试:经过编译连接执行以后程序可以正常的显示出92中八皇后可能的结果。

六  测试结果

在测试结果的得到92种可能情况,并且可以正确地输出。

七  用户使用说明

1.本程序的运行环境为DOS操作系统,运行可执行文件queen.exe

2.本程序的源代码运行在VC++6.0以上的语言平台

小结

随着时间的推移,一周的课程设计就要结束了。这次的数据结构的课程设计中,可以具体地说选择编写八皇后的程序的过程中,让我的编程眼界大开。可以说八皇后是一道古老但是相当经典的题目,所以研究它会让你受益颇深。一道寻常的题目用了不寻常的方法也就变得不寻常,同样,解决八皇后问题的方法有很多,就看你选择什么方法了。这里可能使用到大一学习的C++用穷举的方法作题目,但是这样虽然也可以完成要求但是这样的时间复杂度很高。采用回朔的方法就可以节约很时间,这正是数据结构中树的妙用。这是真正感受到了数据结构在整个编写程序过程中的重要性。可以说在很大程度上改变了我们的编程思想,再这个过程中,也感受到程序设计是不能仅仅满足于有思路,更重要得是多多编写,让好的思想变成一个可以运行的程序,并且不断的完善和更新算法才能时刻保持领先。有句话说得好,好的程序员是写出来得。我想,虽然这次的课程设计结束了,但是我们的编程道路才刚刚迈开,在本次的课程设计中,本想作出可视化的动态演示八皇后,但是不是很顺利,最近也看了很多关于VC++MFC编程的书籍,也很顺利的编写出了几个简单的可视化程序,如小型记事本,简易计算器,但是可能还是没有掌握到它精髓所在。但是我不会放弃,我会继续坚持学习下去,尽快让我的八皇后算法在可视化的动态界面下奔腾起来。呵呵,乐观,冷静相信我会不断的前进。

谢辞

     呵呵,谈到谢辞这里当然要感谢我们的尹燕老师,可以说每次我不知所措的时候,总是可以从她身上看到那种编程人的乐观,积极,冷静,可以说她教给我们的不仅仅是编程,更是一种编程人应该具备的品质和思想。还要感谢帮助过我得学长,网友。相信有他们的支持,我一定会继续走在这条道路上。

参考文献

【1】Mark Allen Weiss .《数据结构与算法分析》  机械工业出版社

【2】郑阿奇《Visual  C++实用教程》 电子工业出版社

【3】http://www.programfans.com 编程爱好者网站

【4】

http://www.pconline.com.cn/pcedu/empolder/gj/vc/0607/820674.html  VC++视频教程

附录

Queen.cpp文件


第二篇:八皇后 C++课程设计报告


淮阴工学院

C++程序设计课程设计报告 选题名称: 八皇后 系(院): 计 算 机 工 程 系 专 业: 通信工程 班 级: 通信 XXXX 姓 名: XXXXXX 学 号: XXXXXXXXXX 指导教师: 赵建洋 .余长辉 学年学期: 200X ~ 200X 学年 第 X 学期

年日

设计任务书

八皇后C课程设计报告

指导教师(签章):

年月

摘要:八皇后问题是一个古老而著名的问题。该问题是十九世纪著名数学家高斯1850年提出;在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行,同一列或同一斜线上。问有多少种摆法。此问题是典型的问题,故制作本程序对了解c/c++语言有很大的帮助。本报告介绍了程序的关键技术。针对用户的需求报告对该开发该软件的方法做出介绍。问题关键在于如何判定某个皇后所在的行、列、斜线上是否有别的皇后;可以从矩阵的特点上找到规律,如果在同一行,则行号相同;如果在同一列上,则列号相同;如果同在“/”斜线上的行列值之和相同;如果同在“\”斜线上的行列值之差相同;如果斜线不分方向,则同一斜线上的行列值之差的绝对值与列号之差的绝对值相同。本课程设计用三种不同的方法运用递归、类、数组等方法解决问题。进入界面后,选择不同方法,输入棋盘阶层后即可显示所有摆法。

关键词:矩阵;递归;类;数组

目 录

1课题综述..................................................................................................................... 1

1.1 课题来源与意义 ................................................................................................ 1

1.2 预期目标........................................................................................................... 1

1.3 面对的问题及需解决的关键技术........................................................................ 1 2 系统分析与设计........................................................................................................ 1

2.1涉及的基础知识与解决问题的基本思路 ................................................................ 1

2.2 总体方案和功能模块框图 .................................................................................. 4

2.3实现方法与详细流程 ............................................................................................ 5 3 代码编写.................................................................................................................... 8 4 程序调试与运行...................................................................................................... 13 总结.............................................................................................................................. 17 致 谢 ..................................................................................................................... 18 参考文献...................................................................................................................... 19

<<c++程序设计课程设计报告>>

1课题综述

1.1 课题来源与意义

八皇后问题是一个古老而著名的问题。该问题是十九世纪著名的数学家任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。本课题设计用三种不同的方法运用递归、类、数组等方法解决问题。进入界面后,选择不同方法,输入棋盘阶层后即可显示所有摆法。

1.2 预期目标

进入界面后,输入棋盘阶层,用三种不同方法运算输出所有摆法

1.3 面对的问题及需解决的关键技术

问题关键在于如何判定某个皇后所在的行、列、斜线上是否有别的皇后;可以从矩阵的特点上找到规律,如果在同一行,则行号相同;如果在同一列上,则列号相同;如果同在“/”斜线上的行列值之和相同;如果同在“\”斜线上的行列值之差相同;如果斜线不分方向,则同一斜线上的行列值之差的绝对值与列号之差的绝对值相同。设计中反复运用学过的递归方法,函数与数组的应用及类的知识。

2 系统分析与设计

2.1涉及的基础知识与解决问题的基本思路

C++知识:循环语句、开关语句、选择语句、数组、函数、break语句

1.循环语句

(1)for( )语句

for( )循环语句的一般格式为:

1

<<c++程序设计课程设计报告>>

for(<表达式1>;<表达式2>;<表达式3>)S;

其中,三个表达式都可以是C++中的任一符合语法规则的表达式;语句S可以是任一C++的语句。同样地将语句S称为for( )的内嵌语句,并把称为循环体。

for( )语句的执行过程如下;首先计算“表达式1”(循环初值),且仅计算一次。每一次循环之前计算“表达式2”(循环条件),如果其结果为真,则执行“语句”S,并计算“表达式3”(循环增量)。否则,循环终止。

(2)do?while( )语句

do?while( )语句的一般格式为:

do

while(<表达式>);

do?while( )语句的执行过程如下:先执行语句S,然后再判断表达式的值;若表达式的值不为0,则继续执行循环体,直到表达式的值为0为止。2.开关语句

开关语句switch语句,它也称为多选择语句。它可以根据给定的条件,从多个分支语句序列中选择执行一个分支的语句序列。switch语句的一般格式为:

switch(表达式)

{

case常量表达式1:语句;

case常量表达式2:语句;

??

case常量表达式n:语句;

default:语句;

}

switch语句的执行过程如下:首先计算“表达式”的值,然后,其结果值依次与每一个常量表达式的值进行匹配。如果匹配成功,则执行该常量表达式后的语句系列。当遇到break时,则立即结束switch语句的执行,否则,顺序执行到花括号的最后一条语句。3.选择语句(多分支)

2

<<c++程序设计课程设计报告>>

现实生活中的各种条件是很复杂的,在一定条件下,又需要满足其他的条件才能确定相应的动作。为此,C++提供了if语句能够出现在另一个if语句或if-else语句里。

嵌套if语句有两种形式。一种是嵌套在else分支中,格式为:

if(表达式1)语句1;

else if(表达式2)语句2;

else if ?

else 语句n;

第2种是嵌套在if分支中,格式为:

if(表达式1){

if(表达式2)语句1;

else语句2;

}

else语句3;

4.数组

数组是有限个同类型元素的有序集合,这些元素有一个共同的名字,每个元素以其在数组中的位置来区分,位置用下标表示。

数组有一维数组与多维数组之分,在程序中仅使用了二维数组。

二维数组的定义格式为:

类型说明符 数组名[常量表达式1] [常量表达式2];

“类型说明符“指定数组元素的类型,“数组名”的命名规则与变量一样,方括号中的“常量表达式1”代表了二维数组的行数,“常量表达式2”代表了二维数组的列数。行列下标都是从零开始,其最大下标均比常量表达式的值小1。

5.函数

函数定义的一般形式如下:

返回类型 函数名 ([参数表])

{

3

<<c++程序设计课程设计报告>>

语句块

return;

}

函数定义包括以下一个部分:

函数名:函数名与变量名的定义规则一样,但应尽可能反映函数的功能,常常由几个单词组成。

参数表:用于向函数传送数值或从函数带回数值。每一个参数都有自己的类型。函数可以有一个或多个参数变量,也可以没有参数。如果没有参数,称为:无参“函数。

函数体:花括号中的语句块称为函数体。一个函数的功能,通过函数体中的语句来完成。

返回类型:指定函数用return返回的函数值的类型。如果函数没有返回值,返回类型应为void。

6.break语句的一般格式:

break;

该语句只能用于switch语句或循环语句中,其功能是:第一;在switch语句中,结束开关语句的执行,并把控制转移到该开关语句之后的第一条语句,且开始执行该语句。第二;在循环语句中的作用是,跳出循环,并执行循环语句后的第一个语句。

2.2 总体方案和功能模块框图

运用递归循环来处理,分别一一测试每一种摆法,直到得出正确的答案。主要解决以下几个问题:

冲突:包括行、列、两条对角线:

列:规定每一列放一个皇后,不会造成列上的冲突;

行:当第i行被某个皇后占领后,则同一行上的所有空格都不能再放皇后 对角线:对角线有两个方向。在同一对角线上的所有点不能有冲突。

4

<<c++程序设计课程设计报告>>

2.3实现方法与详细流程 1 定义一个全局的 char broad[8][8];作为棋盘;

2 编写一个初始化函数 fill up();,使得 broad全部初始为X;

3 编写一个检测函数 int check(int x,int y);,检测每一行,每一列,正反对角线上是否有Q; (1) 行: 固定Y,用一个循环编历 broad[i][y];

(2) 列: 固定X,同上broad[x][i];

(3) 对角线:

八皇后C课程设计报告

用一个 while(x>0 && y>0) ,检测broad[x--][y--]是

否有Q;

用一个 while(x<8 && y<8),broad[x++][y++]是否

有Q;

4 编写一个放Q的函数 place();

5

<<c++程序设计课程设计报告>>

(1) 首先确定第一个Q的位置(本程序只用放于第一行!)

(2) 之后的7行,每一行用一个循环来控制(每一行的第一格到第八格)!是用嵌套! 每一个循环调用check(),如果返回一,则放上Q,否则

continue;

(3) 在最里的一个循环,就是第7行,当check()成立,则

表明摆法正确,输出此时的broad!

否则在这个循环里不能放上Q,表明当前摆法不正确,返回上一个循

环的下一个位置!同时使上个循环原先放的Q变为X;

(4) 同理当每一行的循环完后也不用放上Q,则返回上一个循

环的下一个位置!

同时使上一个循环原先放的Q变为X;

5 main()部分

(1)调用fill up,使数组填满X;

......(省略了N步提示信息)

(2)调用place()放置Q

(3)输出结果

QUEEN::QUEEN(int x,int y)

{

loc_x=x;

loc_y=y;

fill_up();

borad[loc_x][loc_y]='Q';

}

void QUEEN::fill_up()

{

int i,j;

for (i=0;i<8;i++)

for (j=0;j<8;j++)

borad[i][j]='x';

return;

}

void QUEEN::printf()

{

int i,j;

for (i=0;i<8;i++)

{ for (j=0;j<8;j++)

cout<<borad[i][j];

cout<<endl;

6

<<c++程序设计课程设计报告>>

}

return;

}

int QUEEN::check(int x,int y)

{

int x1=x,y1=y;

int i;

for (i=0;i<8;i++)

if (borad[x][i]=='Q' || borad[i][y]=='Q') return 0; //判断行OR列上是未有Q while (x1<8 && y1<8)

{

if (borad[x1+1][y1+1]=='Q' )

return 0;

else {

x1++;

y1++;

}

}

x1=x;

y1=y;

while (x1>0 && y1>0)

{

if (borad[x1-1][y1-1]=='Q' )

return 0;

else {

x1--;

y1--;

}

}

x1=x;

y1=y;

while (x1>0 && y1<8)

{

if (borad[x1-1][y1+1]=='Q' )

return 0;

else {

x1--;

y1++;

}

}

x1=x;

7

<<c++程序设计课程设计报告>>

y1=y;

while (x1<8 && y1>0)

{

if (borad[x1+1][y1-1]=='Q' )

return 0;

else {

x1++;

y1--;

}

}

return 1;

}

(1) 首先确定第一个Q的位置(本程序只用放于第一行!)

(2) 之后的7行,每一行用一个循环来控制(每一行的第一格到第八格)!是用嵌套! 每一个循环调用check(),如果返回一,则放上Q,否则

continue;

(3) 在最里的一个循环,就是第7行,当check()成立,则

表明摆法正确,输出此时的broad!

否则在这个循环里不能放上Q,表明当前摆法不正确,返回上一个循

环的下一个位置!同时使上个循环原先放的Q变为X;

(4) 同理当每一行的循环完后也不用放上Q,则返回上一个循

环的下一个位置!

同时使上一个循环原先放的Q变为X;

3 代码编写

#include<iostream>

using namespace std;

void display()

{

cout<<"----------------------------------------"<<endl;

cout<<" 八皇后 "<<endl;

cout<<" ============ "<<endl;

cout<<" 1.方法一 "<<endl;

cout<<" 2.方法二 "<<endl; cout<<" 3.方法三 "<<endl;

cout<<" 请选择(1、2或3,0:退出): "<<endl;

cout<<"----------------------------------------"<<endl;

}

#define q 8

8

<<c++程序设计课程设计报告>>

int x[q];

int place(int k)

{

int i=1; //第几列;可也是列;x[i]表示行;

while(i<k)

{

if((x[i]==x[k])||(x[i]-x[k]==i-k)||(x[i]-x[k]==k-i)||i==k)

{

return 0;

}

i=i+1; //往后移一位

}

return 1; //while不成立时跳出while循环

}

void fun()

{

int p=0;

int i=1;

x[i]=0;

int k=1;

while(k>0)

{

x[k]=x[k]+1; //行数+1

while(x[k]<=q&&!place(k)) //place(k)返回0时while成立,返回1时while不成立;

{

x[k]=x[k]+1; //证明皇后放错,在下移一位;

}

if(x[k]<=q)

{

if(k==q)

{

p=p+1; //p是多少情况;

for(int j=1;j<=q;j++)

{

cout<<"("<<j<<","<<x[j]<<")"<<" "; //输出所有情况;

}

cout<<"第"<<p<<"种结果"<<endl;

}

else

{

k=k+1; //再次带入while(k>0)的循环;

x[k]=0; //每次都从第一行开始;

}

9

<<c++程序设计课程设计报告>>

}

else

{

k=k-1; //如果超过了八皇后的第八个格子就要往前重新往前回一位; }

}

}

#include <stdio.h >

#include <conio.h >

#include <math.h >

#define QUEENS 8

int iCount = 0;

int Site[QUEENS];

void Queen(int n);

void Output();

int IsValid(int n);

//Main:主函数。

//Queen:递归放置第n个皇后

void Queen(int n)

{

int i;

if(n==QUEENS)

{

Output();

return;

}

for(i=1;i<=QUEENS;i++)

{

Site[n]=i;

if(IsValid(n))

Queen(n+1);

}

}

//IsValid:判断第n个皇后放上去之后,是否合法,即是否无冲突。 int IsValid(int n)

{

int i;

for(i = 0 ;i<n;i++)

{

if(Site[i]==Site[n])

return 0;

if(abs(Site[i]-Site[n])==(n-i))

10

<<c++程序设计课程设计报告>>

return 0;

}

return 1;

}

//Output:输出一个解,即一种没有冲突的放置方案。 void Output()

{

int i;

printf("No.%-5d",++iCount); //左对齐5位十进制整数 for(i=0;i<QUEENS;i++)

printf("%d",Site[i]);

printf("\n"); //换行

}

int *data=new int[10000]; //最多支持100*100的棋盘

long count; //用来记解的个数

void Init() //数据初始化

{

count=0;

for(int k=0;k<10000;k++) data[k]=0;

}

bool Check(int i,int j,int n) //检查第I部期是否符合要求 {

int k,l;

for(k=i-1;k>0;k--)

{

if(data[(k-1)*n+j-1]>0)

return false;

}

for(k=i-1,l=j-1;k>0&&l>0;)

{

if(data[(k-1)*n+l-1]>0)

return false;

k--;

l--;

}

for(k=i-1,l=j+1;k>0&&l<=n;)

{

if(data[(k-1)*n+l-1]>0)

return false;

k--;

l++;

}

11

<<c++程序设计课程设计报告>>

return true;

}

void Trial(int i,int n)

{

if(i>n)

{

for(int s=0;s<n;s++)

{

for(int j=0;j<n;j++)

cout<<data[s*n+j]<<" "; cout<<endl;

}

cout<<endl;

count++;

}

else

for(int j=1;j<=n;j++)

{

data[(i-1)*n+j-1]=1;

if(Check(i,j,n))

Trial(i+1,n);

data[(i-1)*n+j-1]=0;

}

}

void King(int n)

{

Init();

Trial(1,8);

cout<<count<<endl;

delete[] data; //释放堆内存 }//

int main()//主函数.

{

display();

char choice;

cin>>choice;

switch(choice)

{

case '1':

{

fun();

12

<<c++程序设计课程设计报告>>

return main();

}

case '2':

{

Queen(0);

getch();

return main();

}

case '3':

{

int n;

cout<<"Input N:"; //N=8

cin>>n;

King(n);

cout<<count<<endl;

return main();

}

}

}

4 程序调试与运行

程序写出来之后,便对其进行了调试。主要是对系统规定非法的输入进行测试,以检测软件的性能。同时对一些边界数据进行了测试,其中发现了不少问题,这对系统功能的完善,和最终的成型都有莫大的帮助。

其中常出现的就是,在调试的时候会出现只有一种方案的情况,仔细研究却是计数的问题,改进后的程序则不会出现此问题。这使我更深的了解C++语言。

13

<<c++程序设计课程设计报告>>

八皇后C课程设计报告

14

八皇后C课程设计报告

<<c++程序设计课程设计报告>>

八皇后C课程设计报告

15

八皇后C课程设计报告

<<c++程序设计课程设计报告>>

八皇后C课程设计报告

16

<<c++程序设计课程设计报告>>

总结

第一次做课程设计,因此感到期待而又非常紧张,一个星期,短暂而忙碌,但却又充实、兴奋。

这次我们是按照学号来选课题,我选到的是“八皇后“,开始的我是无从下手,从网上搜了一气后一无所获,一味地依赖网上现成地答案使我毫无进展。后来,在同组同学地影响下,我开始静下心来回忆学过的知识 。终于,经过反复调试后,我终于找到了思路,经过同组同学的帮助与网上资料,我逐渐将程序设计成型,虽然还有许多缺陷,比如,设计后还是不能人性化地满足要求。虽然与想象中的还有很大差距,但我看我已经尽了自己的努力,我终于知道了作为编程人员的他要付出的努力。

一个星期的程序设计虽然就要结束的,但是它带给我的将会影响我今后的学习。在这次程序设计中,我不仅提高了编程的能力,也增加了我对这门课程的兴趣,虽然一周的程序设计很忙,但过得的很充实、很有意义。但也有许多不足的地方,如界面设计的还不够完美、还有一些最基本的知识没有完全掌握等等。这为我以后的学习提出了要求。

17

<<c++程序设计课程设计报告>>

在这一次的课程设计中,首先要感谢的是淮阴工学院计算机工程系提供给我们这次实习的机会,并给我们提供了设有空调的机房,让我们在一个好的环境下学习。

其次要感谢的是我们的指导老师,谢谢他们的悉心指导,在做程序上机时老师总能陪在我们身旁,为我们调试程序、帮我们修改错误,并为我们讲解编程序过程中所遇到的问题与撰写实验报告的格式。

同样,在这里还要感谢我的同学,谢谢他们在遇到问题时,帮我一起找出程序中的错误,教我如何修改,在他们帮助我的同时,我发现自己在基础知识上有很多没有真正弄明白,但是他们能够热心的帮助我,不管我是多么的烦,在此,我很感动,出自内心的感谢他们。

18

<<c++程序设计课程设计报告>>

参考文献

[1] 于永彦,刘作军,于长辉.C++程序设计.淮安市淮海路小学印刷厂.2007(1):301~333.

[2] 钱能. C++程序设计教程(第二版).清华大学出版社,2005(9):75~86.

[3] 张铭泽.C++语言核心.中国电力出版社2001.1

[4] 黄明.Visual C++信息系统开发实例.华中理工大学出版社.2005(7):108~121.

[5] 徐孝凯,贺桂英. 数据结构(C语言描述). 清华大学出版社.2004(9):98~112.

[6] 龚沛曾,杨志强.C/C++程序设计教程.高等教育出版社.2005(5):99~109.

[7] 刘显君,刘本发.习题解答与实验指导.清华大学出版社2006(12).

19

<<c++程序设计课程设计报告>>

指导教师评语

八皇后C课程设计报告

20

更多相关推荐:
课程设计报告

1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是船舶总体设计的重要组成部分通过课程设计的训练力求使学生实现从学生到船舶设计师的角...

课程设计报告内容

一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3掌握迪杰斯特拉以及Prim等基本算法思想4掌握if语句及switch语句的运用方...

课程设计报告

中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名1000301232廖壁波指导老师20xx年12月13日中国计量学院信息工程学院课程设计报...

课程设计报告模板

信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年月目录目录1设计任务12需求分析121基础功能122扩展功能13系统概要设计13...

课程设计报告

扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题问题描述若要在扬州大学的八个居民区A区B区C区D区E区F区G区H区之间架设自来水...

课程设计报告

系统软件课程设计时钟中断与进程调度学号姓名指导教师11070319许明秀金雪云20xx年12月一报告摘要进程调度是操作系统十分重要的一个部分在操作系统的设计过程中进程调度和时钟中断形成了密不可分的关系系统时钟定...

计算机高级语言课程设计报告—学生成绩管理系统

计算机高级语言课程设计报告学生成绩管理系统班级:学号:姓名:日期:20##年1月18日一.课程设计题目与要求实习题目:学生成绩管理系统【实习内容】C++语言,面向对象的分析与设计。【基本要求】学生成绩管理是高等…

JAVA_课程设计报告

JAVA程序设计课程设计报告设计题目学院名称专业班级姓名学号1目录一需求分析3二概要设计3三详细设计331数据库设计332模块及窗体设计3321数据库模块设计3322用户登录识别模块5323用户信息管理模块61...

软件课程设计报告

中南民族大学软件课程设计报告电子信息工程09级题目学生吴雪学号指导教师王锦程电子工程0907100220xx年4月25日简易网络聊天系统摘要计算机网络通信技术已经深入我们的生活并给我们即使通信带来了很大的方随着...

软件课程设计报告

任务书北京信息科技大学计算机软件基础课程设计题目从某个源点到其余各顶点的最短路径学院专业学生姓名班级学号指导老师起止时间任务书1摘要摘要本次课程设计的问题假设西安北京沈阳武汉4个城市构成小型交通网4个城市表示图...

计算机网络课程设计报告

计算机网络课程设计报告一.课程设计的题目、目的及要求.........................................................2二.课程设计的内容(分析和设计).....…

Java课程设计报告模板

Java程序设计课程设计报告20xx20xx年度第1学期Hannio塔专业学生姓名班级学号指导教师完成日期计算机科学技术网络工程马千里B计算机1021010704213徐森20xx年1月8日Hannoi塔目录目...

课程设计报告(33篇)