数据结构课程设计

发布 2022-10-01 21:34:28 阅读 3473

东华理工大学长江学院。

课程设计报告。

课程设计题目。

学生姓名: 周小舟

专业: 计算机科学与技术。

班级: 083212

学号: 08321239

指导教师: 吴建东

2024年 5 月 28日。

封面 1目录 2

一、需求分析 3

1.1编写目的 3

1.2需求概述 3

1.3需求说明 3

二、总体设计 3

2.1编写目的 3

2.2总体设计 4

三、详细设计及模块 6

3.1 界面模块 7

3.2 加法模块 7

3.3 减法模块 8

3.4 乘法模块 8

3.5 转置模块 9

3.6 功能选择模块 9

3.7 主函数模块 10

四、程序运行结果及截图 12

4.1 开始运行时菜单的截图 12

4.2 输入矩阵后的截图 13

4.3 选择加法运算后的截图 14

4.4 选择减法运算后的截图 14

4.5 选择乘法后的截图 15

4.6 选择转置后的截图 15

五、参考文献 15

六、心得体会 16

通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的手册。

设计一个关于特殊矩阵的程序,能够实现以下功能:

将下三角矩阵压缩存储在一个一维数组中;

实现矩阵的加运算;

实现矩阵的减法运算;

实现矩阵乘法运算;

实现矩阵的转置运算;

下三角矩阵的压缩存储要先输入下三角矩阵的阶数,然后输入下三角矩阵,然后对其进行压缩存储。

然后选择1实现加法运算。

选择2实现减法运算。

选择3实现乘法运算。

选择4实现转置运算,把转置前和转置后矩阵分别输出来,所设计的程序应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。

根据目的需求而分析,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细设计做准备。

1.系统功能模块划分,其模块图如下:

系统模块总图。

其中:1) 下三角矩阵的压缩存储要先输入下三角矩阵的阶数,然后输入下三角矩阵各个值,然后对其进行压缩存储。

2) 矩阵的加法运算就是对所压缩后两个矩阵进行其加运算。

3) 矩阵的减法运算就是对所压缩后两个矩阵进行其减运算。

4) 矩阵的乘法运算就是对压缩后两个矩阵进行其乘运算。

5) 矩阵的转置就是对下三角矩阵压缩前后转置互换。

2.数据结构。

本系统中主要的数据就是矩阵的数值,其中就包括矩阵的阶数和矩阵中具体的数值。在处理过程中都可以作为相同的结构进行运算。

3.流程图。

根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。

对应于总体设计时各个模块及功能,其具体如下:

此模块的函数void list_munu()用于输出界面。

相应**如下:

void list_munu()

printfwelcom to usen");

printf<< made in zhou xiao zhou >>n");

printf<1>.addn");

printf<2>.substractn");

printf<3>.multiplen");

printf<4>.transposen");

printf<5>.exit(0n");

printfn");

printfn");

此模块的功能实现压缩后两矩阵相加,并且存放在一个一维数组里面。

函数 add()定义一个参数 int k ,k为一维数组变量,后面的模块的k与这模块相同,函数无返回值。

相应**:void add()

int k;

for(k=0;ktc[k]=ta[k]+tb[k];

printf("after add the matrix is tc[k]:");

for(k=0;kprintf("%6d",tc[k]);

printf("");

此模块的功能实现压缩后两矩阵相减,并且存放在一个一维数组里面。

函数substract()无返回值。

相应**:void substract()

int k;

for(k=0;ktc[k]=ta[k]-tb[k];

printf("after substract the matrix is tc[k]:");

for(k=0;kprintf("%6d",tc[k]);

printf("");

此模块实现两压缩矩阵的相乘,结果以数字输出。

函数multiple()也无返回值。

相应**如下:

void multiple()

int k;

int t=0;

int tc;

for(k=0;k<=n*(n+1)/2-1;k++)

t+=ta[k]*tb[k];

tc=tprintf("after multipled is tc:");

printf("%6d",tc);

printf("");

此模块能够实现压缩前和压缩后的转置。

函数 transpose()也无返回值。定义的参数int i,j;分别为矩阵的行数和列数。

相应**如下:

void transpose()

int i,j,k;

printf("after transpose the matrix is a[n][n]:");

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

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

printf("%4d",a[i][j]);

printf("");

printf("after transpose the matrix is b[n][n]:");

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

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

printf("%4d",b[i][j]);

printf("");

printf("after transpose the array is ta[k]:");

for(k=n*(n+1)/2-1;k>=0;k--)

printf("%4d",ta[k]);

printf("");

printf("after transpose the array is tb[k]:");

for(k=n*(n+1)/2-1;k>=0;k--)

printf("%4d",tb[k]);

printf("");

此模块的函数int choice()用于各操作的选择。

函数的参数有一个 int c

c 表示选择的要实现的功能。

返回值是整型有一个为c ,c可取 中的一个。1表示实现加法功能,2表示实现减法功能,3表示实现乘法功能,4表示实现转置功能,5为退出。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...