MATLAB课程设计报告(绝对完整)

时间:2024.4.20

课程设计任务书

学生姓名:  董航              专业班级:  电信1006班               

指导教师: 阙大顺,李景松       工作单位:   信息工程学院   

课程设计名称:Matlab应用课程设计

课程设计题目:Matlab运算与应用设计5

初始条件

1.       Matlab6.5以上版本软件;

2.       课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”、线性代数及相关书籍等;

3.       先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.       课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成;

2.       本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。具体设计要求包括:

①       初步了解Matlab、熟悉Matlab界面、进行简单操作;

②   MATLAB的数值计算:创建矩阵矩阵运算、多项式运算、线性方程组、数值统计;

③   基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定等;

④   使用文本编辑器编辑m文件,函数调用;

⑤   能进行简单的信号处理Matlab编程;

⑥   按要求参加课程设计实验演示和答辩等。

3.       课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:

①   目录;

②       与设计题目相关的理论分析、归纳和总结;

③       与设计内容相关的原理分析、建模、推导、可行性分析;

④       程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;

⑤       课程设计的心得体会(至少500字);

⑥       参考文献(不少于5篇);

⑦       其它必要内容等。

时间安排:1.5周(分散进行)

参考文献:

[1]     (美)穆尔,高会生,刘童娜,李聪聪.MATLAB实用教程(第二版) . 电子工业出版社,2010.

[2]     王正林,刘明.精通MATLAB(升级版) .电子工业出版社,2011.

[3]     陈杰 . MATLAB宝典(第3版) . 电子工业出版社,2011.

[4]     刘保柱,苏彦华,张宏林 . MATLAB 7.0从入门到精通(修订版) . 人民邮电出版社,2010.

指导教师签名:                                  

系主任(或责任教师)签名:               年    月    日

目录

1 Matlab的简介................................................................................ 1

2课程设计内容..................................................................................... 4

2.1.................................................................................................................................................................... 5

2.2.................................................................................................................................................................... 2

2.3.................................................................................................................................................................... 2

2.4.................................................................................................................................................................... 2

2.5.................................................................................................................................................................... 2

2.6.................................................................................................................................................................... 2

2.7.................................................................................................................................................................... 2

2.8.................................................................................................................................................................... 2

2.9........................................................................................................................................................................... 2

2.10......................................................................................................................................................................... 2

3课程设计心得体会...................................................................... 1

4参考文献.................................................................................................... 1

 

                                                       
1  Matlab 软件简介

1.1 MATLAB产生的历史背景  

 MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
    MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
  MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB 成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

MATLAB的应用:利用MATLAB可以进行以下各种工作

l  数值计算

l  数值和符号计算

l  工程和科学绘图

l  控制系统的设计与仿真

l  数字图像处理

l  数字信号处理

l  通讯系统设计与仿真

l  财务与金融工程

1.2 MATLAB的语言特点和开发环境

   MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。被称为第四代编程语言的MATLAB最大的特点就是简洁开放的程序代码和直观实用的开发环境。具体地说MATLAB主要有以下特点:

 (1)库函数资源丰富

 (2)语言精炼,代码灵活

  (3)运算符多而灵活

 (4)面向对象控制功能优良,使界面编程更方便、自由。

 (5)程序设计自由

 (6)图形功能强大

 (7)程序的兼容性好

 (8)源代码开放

 (9)形形色色的工具箱

 

2.课程设计内容 

 

2.1 已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。

   

2.1.1理论分析

 该函数linspace()为赋值向量函数,还要用到简单的正弦sin()

和绝对值abs()函数。

2.1.2程序代码

t = linspace(0,2*pi,6);    %产生6维的从0到2*pi等分行向量

sin(t)                     %求t的正弦值

abs(sin(t))                %求sin(t)的的绝对值

 

2.1.3程序运行结果

ans =

         0    0.9511    0.5878   -0.5878   -0.9511   -0.0000

ans =

         0   0.9511    0.5878    0.5878    0.9511    0.0000

      

2.1.4总结

在matlab中乘号不能不写,也不能写成‘×’。只能写成‘*’。

2.2 制函数时的曲线。

  

2.2.1理论分析

这是一个简单的函数,但要了解该函数用程序代码书写的正确和规范,以及了解绘制二维曲线的函数。

2.2.2程序代码

x = 0:0.01:1;            %x轴上以0.01的速度从0递增到1的数组

y = x.*exp(-x);           %y关于x的表达式

plot(x,y)                 %以x为横坐标y为纵坐标画出二维曲线

2.2.3程序运行结果

2.2.4总结:

在matlab中两数之间应该用‘*’符号,不能省略,而且注意如果是进行向量的运算得用‘.*’运算。

2.3   已知a=[1,3,0;2,0,1;4,6,5],a1=logical([1 0 1]),a2=logical([1 1 0]),b=a>1,求a(a1,a2)和a(b)。

  

2.3.1理论分析:

   注意矩阵的赋值以及各种运算

2.3.2程序代码

a = [1,3,0;2,0,1;4,6,5];      %定义a的矩阵并赋值

a1 = logical([1 0 1]);        %a1的逻辑值数组

a2 = logical([1 1 0]);        %a2的逻辑值数组

b = a > 1;                    %a,b的逻辑表达式

a(a1,a2)                      %求矩阵a的1,3行和1,2列的子矩阵

a(b)                          %求a中大于1的数

2.3.3程序运行结果

ans =

     1     3

     4     6

ans =

     2

     4

     3

     6

     5

2.3.4总结

  在matlab中矩阵的形式各种各样,还有各种赋值形式,我们要了解矩阵的各种形式以及运算

2.4分析下面每条指令的功能并运行,观察执行结果。

(1)  X=0:0.25:3;

Y=X.*exp(-X);

plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);

(2)      A=zeros(3,5)

A(:)=-4:5

L=abs(A)>4

islogical(L)

X=A(L)

(3)      A=[1:5;6:10]

pow2(A)

(4)      A=zeros(3,2)

A(:)=1:6

A=A*(1+i)

A1=A.’;

B1=A’;

(5)      A=ones(2,3)

B=ones(2)

C=eye(4)

D=diag(C)

E=repmat(C,1,3)

2.4.1理论分析:

该大题是让我们练习编写代码,观察执行结果,根据结果去了解各个函数的功能及用法,所以我们必须熟练了解一些常用函数的用法。

2.4.1.2程序代码

X=0:0.25:3;       %生成数组

Y=X.*exp(-X);     %y1的表达式

plot(X,Y),xlabel('x'), ylabel('y'),title('y=x*exp(-x)');  %标注x,y轴及标题

2.4.1.3程序运行结果

2.4.2.2程序代码

A = zeros(2,5)    %生成一个2×5的全0矩阵

A(:) = -4:5       %将A矩阵赋值

L = abs(A) > 4    %将A中绝对值与4比较后的逻辑值矩阵

islogical(L)      %求L的逻辑值

X = A(L)        %求出L中逻辑值为1的那个元素对应A的值

2.4.2.3程序运行结果

A =

    -4    -2     0     2     4

    -3    -1     1     3     5

L =

     0     0     0     0     0

     0     0     0     0     1

ans =

     1

X =

    

2.4.3.2程序代码

A = [1:5;6:10]            %生成一个二维数组

pow2(A)                   %求该数组的每个元素的平方值

2.4.3.3程序运行结果

A =

     1     2     3     4     5

     6     7     8     9    10

ans =

      2           4           8          16         32

     64         128         256         512        1024

2.4.4.2程序代码

A=zeros(3,2)        %生成一个3行2列的全0 矩阵

A(:)=1:6            %将A从新赋值

A=A*(1+i)           %将A中的每个元素进行运算

A1=A.'              %求A的转置矩阵

B1=A'               %求A的共轭转置矩阵

2.4.4.3程序运行结果

A =

     0     0

     0     0

     0     0

A =

     1     4

     2     5

     3     6

A =

   1.0000 + 1.0000i   4.0000 + 4.0000i

   2.0000 + 2.0000i   5.0000 + 5.0000i

   3.0000 + 3.0000i   6.0000 + 6.0000i

A1 =

   1.0000 + 1.0000i   2.0000 + 2.0000i   3.0000 + 3.0000i

   4.0000 + 4.0000i   5.0000 + 5.0000i   6.0000 + 6.0000i

B1 =

   1.0000 - 1.0000i   2.0000 - 2.0000i   3.0000 - 3.0000i

   4.0000 - 4.0000i   5.0000 - 5.0000i   6.0000 - 6.0000i

2.4.5.2程序代码

A = ones(2,3)               %生成一个2×3的全为1的矩阵

B = ones(2)                 %生成一个2×2的全为1的方阵

C = eye(4)                  %生成一个4阶单位矩阵

D = diag(C)             %取C矩阵中的对角元素作为列向量

E = repmat(C,1,3)           %将C矩阵复制为1×3块的矩阵

2.4.5.3程序运行结果

 A =

     1     1     1

     1     1     1

B =

     1     1

     1     1

C =

     1     0     0     0

     0     1     0     0

     0     0     1     0

     0     0     0     1

D =

     1

     1

     1

     1

E =

1   0   0   0   1   0   0   0   1    0   0    0

     0   1   0   0   0   1   0   0   0   1    0    0

     0   0   1   0   0   0   1   0   0   0    1    0

     0   0   0   1   0   0   0   1   0   0    0    1

2.4.4总结:

在该程序编程题中,有很多函数,要注意他们的用法以及他们之间的联系,比如A(:) = -4 : 5,是给矩阵数组赋值,在之前zeros()是确定A的矩阵形式,所以赋值是应与A数组矩阵有相同多的元素个数,本来原题中是zeros(3,5),但运行时却有错误,是因为zeros(3,5)赋给A,A是3×5矩阵共有15个元素,而后来赋值时又只赋给 -4:5 只有10个元素所以就出错了;当改成zeros(2,5)就可以了。还有各种其他函数的功能和用法。

2.5计算在x=0.1与10处的值。

   

2.5.1理论分析:

该题是简单的二元方程带值求解问题,只需用matlab编写出该方程的表达式,带值即可求解。

2.5.2程序代码

x = 0.1;                      %将x初始化为0.1

y = 2*x^5+0.1*x^3-10;         %y关于x的表达式

y                             %求当x=0.1时y的值

x = 10;                       %将x赋值为10

y = 2*x^5+0.1*x^3-10;         %y关于x的表达式

y                             %求当x=10时y的值

2.5.3程序运行结果

y =

   -9.9999

y =

      200090

2.5.4总结:

在写出表达式之前一定要定义出表达式中的变量

2.6求函数, n=100的值

  

2.6.1理论分析

该题是一道用循环函数编写的数学题

2.6.2程序代码

s = 0;                             %为s变量赋初值为0

for i = 1:100                      %循环函数,从1到100

s = s+1/i^3;                       %s的累加求和表达式

end

s                                  %求s的值

2.6.3程序运行结果

s =

    1.2020

2.6.4总结

在这个题目中应该注意s = s+1/i^3的通式的表达,这是一个累加表达式,但是还要注意等比数列的写法。

2.7求1500个元素的随机数向量A中大于0.5的元素个数。

2.7.1理论分析:

该题看起来很简单,其实涉及到了很多方面,产生1500个元素得用的随机函数,依次比较1500个数得用到循环函数,还要看是否大于0.5,所以得用到if函数,再其次就是要用到累加表达式。

2.7.2程序代码

A = rand(1500);  %随机函数产生1500个随机数向量赋给一维数组A

s = 0;           %给s赋初值0

for i = 1:1500     %循环语句,从1到1500循环1500次

if A(i)>0.5      %判断数组A中1500是否大于0.5

s = s+1;      %如果大于0.5,则将s的值加1,累计个数

end

end

s                %求出s最后的累计值

2.7.3程序运行结果

s =

760

2.7.4总结

要注意随机函数的用法,以及要分析好函数的嵌套,那个rand()是随机函数所以每次产生的数都是不一样的,即每次运行的结果应该是不同的。应该巧妙运用到for函数与if函数的嵌套。

2.8用图形表示连续调制波形,运行下面的程序,观察结果,并简单说明。

t1=(0:11)/11*pi;                                  y1=sin(t1).*sin(9*t1);

t2=(0:100)/100*pi;                                y2=sin(t2).*sin(9*t2);

subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图 (1)')

subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图 (2)')

subplot(2,2,3),plot(t1,y1,t1,y1,'r.')

axis([0,pi,-1,1]),title('子图 (3)')

subplot(2,2,4),plot(t2,y2)

axis([0,pi,-1,1]),title('子图 (4)')

2.8.1理论分析:

这题是用图形表示连续调制函数y=sin(t)sin(9t)的波形,注意比较几个图得到不同。

2.8.2程序代码

t1 = (0:11)/11*pi;            %生成一个0到1/π步距为1/(11*π)的数组

y1 = sin(t1).*sin(9*t1);       %y1关于t1的数学表达式

t2 = (0:100)/100*pi;         %生成一个0到1/π步距为1/(100*π)的数组

y2 = sin(t2).*sin(9*t2);        %y2关于t2的数学表达式

subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图(1)')      %指定分成一个图到指定位置,以r的格式画出t1,y1点图形,x轴从0到π,y轴-1到1,标记为子图(1)

subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图(2)')      %指定分成一个图到指定位置,以r的格式画出t2,y2点图形,x轴从0到π,y轴-1到1,标记为子图(2)

subplot(2,2,3),plot(t1,y1,t1,y1,'r.')                              

axis([0,pi,-1,1]),title('子图(3)')               %指定分成一个图到指定位置,以r的格式画出t1,y1连线的折线图形,x轴从0到π,y轴-1到1,标记为子图(3)

subplot(2,2,4),plot(t2,y2)

axis([0,pi,-1,1]),title('子图(4)')               %指定分成一个图到指定位置,以r的格式画出t2,y2默认的曲线图形,x轴从0到π,y轴-1到1,标记为子图(4)

2.8.4总结:

  在这几个图中,子图(1)描写函数的能力最差,子图(3)也有较大的失真,因为数据太少。对于离散数据,Plot指令默认处理方法是:自动地把这些离散点用直线连接,使之成为连续曲线。Subplot是指定几号子图。Axis设置平面轴的范围、坐标分割线。

2.9已知方程组,用矩阵除法来解线性方程组。

2.9.1理论分析:

   本题是运用矩阵法来求解线性方程组,在matlab中有很简单实用的方法求解线性方程组

2.9.2程序代码

A = sym([3,-1,2;-5,1,3;1,-1,4]);           %将方程组的各个元素的系数定义为符号数组

b = sym([9;5;8]);                          %将方程组等号后的值定义为符号列向量

X = A\b                                     %解出方程组

2.9.4总结:

    将各个方程组的各个元素的的系数赋给A,用到方程组的符号解,矩阵计算是求解线性方程组最简便有效的方法。用sym()符号函数,注意b要用sym(9;5;8),不能用sym(9,5,8)。

2.10已知,其中t的范围是[0 10],计算y的微分和积分并给出曲线图。

2.10.1理论分析:

    这是一个求积分和微分的题,以及也涉及到画图函数。有各种不同的画图函数,注意选择方便的。

2.10.2程序代码以及结果:

syms t,y = exp(-1)*cos(t);   %定义符号变量

df = diff(y,'t')             %将符号t视作变量求y对t的微分

jf = int(y,t)             %将符号t作为变量求y对t的积分

subplot(2,1,1),ezplot(df,[0,10])     %在分成后的指定地方绘制微分在0到10之间的曲线图

subplot(2,1,2),ezplot(jf,[0,10])     %在分成后的指定地方绘制积分在0到10之间的曲线图

2.10.3程序运行结果

2.10.4总结

要了解积分和微分函数的运用,该题用到了符号积分和符号微分,对ezplot()画图函数的运用;

3心得体会

通过这次MATLAB的学习,我对MATLAB有了一个基础的认识,matlab是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到了广泛应用。MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程的特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂程序(M文件)后再一起运行。

 在这短短的一周内从开始的一头雾水,到自己看书学习,到同学讨论,再进行整个题目的理论分析和计算,参考课程上的代码,写出自己的代码。

我们也明白了学无止尽的道理,在我们所查的很多参考书中,很多知识是我们从没有接触过的,我们对它的了解还仅限于皮毛,对它的很多功能以及函数还不是很了解,所以在这个学习的过程中我们穿越在知识的海洋中,一点一点吸取着它的知识。在MATLAB编程中需要很多的参考书,要尽量多的熟悉matlab自带的函数及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数。这一点对程序非常有帮助,可以使程序简单,运行效率高,可以节省很多时间。本次课设中用了很多MATLAB自带的函数,使程序变得很简单。

把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充,编程是一点一点积累的,所以你要需做一些随手笔记什么的。

在编写程序代码时,需要什么函数,需要什么模块就应该去着重看那个知识点,不要一步登天,一步一步学,如果太急于把所有东西都学到,也是不好的,更是实现不了的。所以那时一天一天积累的,慢慢地学通这个软件。

总之,通过这次学习,我了解了一下这个软件总体的功能,以及通过自己编写一些代码也学到了一些用法和知识。更了解到了,我们还有好多东西去学,学无止尽。

4参考文献

[1] (美)穆尔,高会生,刘童娜,李聪聪 . MATLAB实用教程(第二版)[M] . 北京:电子工业出版社,2010.

[2] 王正林,刘明 . 精通MATLAB(升级版) [M]. 北京:电子工业出版社,2011.

[3] 陈杰 . MATLAB宝典(第3版) [M]. 北京:电子工业出版社,2011.

[4] 刘保柱,苏彦华,张宏林 . MATLAB 7.0从入门到精通(修订版)[M] . 人民邮电出版社,2010.

[5] 张德丰 . MATLAB在电子信息工程中的应用[M].北京:电子工业出版社,2009.

 

 

 

本科生课程设计成绩评定表

               指导教师签字:                

                          

更多相关推荐:
《面向对象程序设计(课程设计)》报告

福建农林大学计算机与信息学院课程名称课题名称姓名学号专业年级指导教师职称计算机类课程设计报告面向对象程序设计课程设计猜数字游戏计算机科学与技术20xx级讲师20xx年11月面向对象程序设计课程设计成绩评定表I目...

java 面向对象程序设计课程设计报告

面向对象程序设计课程设计报告题目门禁系统的设计与实现系(院)计算机科学技术系专业软件技术班级20##级3班学生姓名学号指导教师二〇##年六月十二日团队介绍(一)第六小组成员构成组长:组员:(二)成员的不同分工及…

《面向对象程序设计》课程设计报告

面向对象程序设计课程设计报告题目职工信息管理小型公司工资管理系统院系专业班级学号学生姓名小组成员20xx年9月6日一引言本题对程序有如下要求试建立一个类Worker用于描述职工对象具体要求如下私有数据成员int...

《C++面向对象程序设计》课程设计报告

C面向对象程序设计课程设计报告题目分数计算器设置班级专业计算机科学与技术学号K031241521姓名周林指导教师小组成员周林张齐满二O一三年10月15日一课程设计问题描述分数计算器设计是高等学校教务管理的重要组...

《面向对象程序设计》课程设计报告模板

面向对象程序设计程序设计报告课程设计2020学年第学期设计题目职工工资管理系统设计院系计算机科学与信息工程学院专业班级学号学生姓名设计时间20年1月日20xx年1月日指导教师提交日期20年月日1面向对象程序设计...

面向对象程序设计实验报告

面向对象程序设计之课程设计上海电力学院课题名称院系专业学号姓名时间地点指导教师课程设计报告面向对象程序设计20xx20xx学年第一学期模仿ATM机存取款管理系统设计电子与信息工程学院通信工程20xx年1月12日...

《面向对象程序设计》课程设计报告书(模板)

面向对象程序设计课程设计报告书设计题目成绩管理系统指导老师杨雄学生学号083410148学生姓名张洋洋同组人员崔安超王龙辉魏彦浩时间20xx年11月29日目录第1章选题211题目背景212系统实现的具体分工21...

Java面向对象程序设计课程实验报告1

Java面向对象程序设计第1版Java面向对象程序设计课程实验一报告学号姓名专业学校1Java面向对象程序设计第1版11实验目标查找下载JDK系统文件并正确完成JDK的安装正确安装并使用Eclipse软件完成利...

面向对象课程设计任务书

课程设计报告课程名称课题名称专业班级学号20xx03010308姓名杜云龙指导教师20xx年月日湖南工程学院课程设计任务书课程名称面向对象程序设计课题学生考勤管理系统专业班级计算机0803学号20xx03010...

面向对象程序设计课程设计

课程设计报告课程名称面向对象程序设计课程设计任课教师尹剑伟设计题目网络聊天室所学专业信息管理与信息系统二年制班级学号0916150320学生姓名黄萌萌报告完成日期20xx年01月10日一题目描述及功能要求实现的...

面向对象程序设计实验报告05

课程实验报告课程名称面向对象程序设计实验名称面向对象的整型队列编程院系计算机科学与技术专业班级学号姓名指导教师月日面向对象程序设计实验报告一需求分析1题目要求整型队列是一种先进后出的存储结构对其进行的操作通常包...

面向对象程序设计实验报告

面向对象程序设计实验报告姓名学号班级专业学院实验三函数的应用一实验目的掌握函数的定义和调用方法练习重载函数使用练习函数模板的使用练习使用系统函数二实验步骤编写函数floatConvertfloatTempFer...

面向对象程序设计课程设计报告(29篇)