石大远程在线考试数据结构课程设计8541854054813.docx

上传人:b****7 文档编号:23470649 上传时间:2023-05-17 格式:DOCX 页数:15 大小:245.21KB
下载 相关 举报
石大远程在线考试数据结构课程设计8541854054813.docx_第1页
第1页 / 共15页
石大远程在线考试数据结构课程设计8541854054813.docx_第2页
第2页 / 共15页
石大远程在线考试数据结构课程设计8541854054813.docx_第3页
第3页 / 共15页
石大远程在线考试数据结构课程设计8541854054813.docx_第4页
第4页 / 共15页
石大远程在线考试数据结构课程设计8541854054813.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

石大远程在线考试数据结构课程设计8541854054813.docx

《石大远程在线考试数据结构课程设计8541854054813.docx》由会员分享,可在线阅读,更多相关《石大远程在线考试数据结构课程设计8541854054813.docx(15页珍藏版)》请在冰豆网上搜索。

石大远程在线考试数据结构课程设计8541854054813.docx

石大远程在线考试数据结构课程设计8541854054813

 

中国石油大学(北京)远程教育学院

期末考试

《数据结构》课程设计

1.课程设计题目

从下面四个题目中任选一题完成。

1.1通讯录的制作

C或者C++语言基本知识,编写一个班级的通讯录管理

用单链表作为数据结构,结合系统。

系统包括下面几方面的功能:

第1:

输入信息:

输入某同学的信息;

第2:

显示信息:

显示全部通讯录中学生的信息;

第3:

查找功能:

实现按姓名进行查找,并给出查找信息;

第4:

删除功能:

实现按姓名进行删除,并给出操作结果;

第5:

每名同学的信息包括:

姓名、性别、电话、城市;

第6:

界面友好,每步给出适当的操作提示;

第7:

系统具有一定的容错能力。

1.2图书管理系统

设计一个计算机管理系统完成图书管理几本业务。

系统要满足下面基本要求:

第1:

每种图书的登记内容包括:

书名、书号、作者、出版社、现存量和库存量;

第2:

采编入库:

新购图书,确定书号后,登记到图书账目表中,如果表中存在该书,则只将库存量增加;

第3:

借阅:

如果该书的库存量大于0,则借出一本,登记借阅者的书证号和归还期限,

改变库存量;

第4:

归还:

注销对借阅者的登记,改变该书的库存量;

第5:

界面友好,每步给出适当的操作提示;

第6:

系统具有一定的容错能力。

1.3产品进销管理系统

针对某个行业的库房产品进销存情况进行管理,系统要求具有下列功能:

第1:

采用一定的存储结构对库房的货品及其数量进行分类管理;

第2:

可以进行产品类的添加、产品的添加、产品数量的添加;

第3:

能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;

第4:

库存量;

第5:

每种产品至少包含信息:

产品名、进货日期、进货数量、销出数量、销售时间、

界面友好,每步给出适当的操作提示;

第6:

系统具有一定的容错能力。

2.校园导航问题

设计中国石油大学(北京)的校园平面图,至少包括10个场所,可以实现任意两个场

所的最短路径。

1.4课程设计报告书写规范

 

减法、乘法以及矩阵

部分内容。

下面以“稀疏矩阵运算器”为例说明如何写课程设计报告。

题目要求:

设计一个稀疏矩阵计算器,实现两个稀疏矩阵的加法、

相减、相乘以及矩阵转速运算

2.1需求分析

1.稀疏矩阵是指稀疏因子小于等于0.5的矩阵。

利用“稀疏”特点进行存储和计算可以

大大节省存储空间,提高计算效率。

实现一个能进行稀疏矩阵基本运算的运算器。

2.以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现矩阵转置,以及两个

矩阵的加、减、乘的运算。

稀疏矩阵的输入形式采用三元组表示,运算结果以阵列形式列出。

3.演示程序以用户和计算机的对话方式进行,数组的建立方式为边输入边建立。

首先输入矩阵的行数和列数,并判别给出的两个矩阵的行列数是否与所要求的运算相匹配。

4.程序可以对三元组的输入属性不加以限制;根据对矩阵的行列,三元组作之间插入排序,从而进行运算时,不会产生错误。

5.在用三元组表示稀疏矩阵时,相加、相减和相乘所产生的结果矩阵另外生成。

6.运行环境:

VC6.0++。

2.2概要设计

稀疏矩阵元素用三元组表示:

typedefstruct{

inti;//非零元的行下标

intj;//非零元的列下标

inte;//矩阵非零元

}Triple;

稀疏矩阵采用三元组顺序表存储:

#defineMSXSIZE12500//假设非零元个数的最大值为200

#defineMAXRC10II假定矩阵的最大行数为10

typedefstruct

{

图1程序调用模块示意图

3.详细设计

1.5主函数设计

 

II*矩阵运算主函数

II*****************************************

主函数中,实现用户菜单菜单的打印,

简洁、清晰。

voidmain()

{

num=Menu();//打印主菜单

while(num)

{

switch(num)

{

case1:

Multi_Matrix();//矩阵相乘

break;

case2:

TransposeMatrix();//矩阵转置

break;

case3:

Add_Matrix();//矩阵加法

break;

case4:

Sub_Matrix();//矩阵减法

case0:

break;

"/switch

num=Menu();

}//while

}

4.主菜单设计

主控菜单是用来输出提示信息和处理输入,此函数返回用户的选项,提供给main函数

中的switch语句。

对于不符合要求的选项,提示输入错误并要求用户重新输入。

将此函数

与main函数合在一起,编译运行程序,即可检查并验证菜单选项是否正确。

主菜单如下:

 

//*打印主控菜单函数

 

intmenu()

printf("\n主菜单");

printf("\n

矩阵乘法");矩阵转置");矩阵加法");矩阵减法");

退出");

printf("\n

scanf("%d",&num);

while(num<0||num>4)//输入非法,重新输入

scanf("%d",&num);

returnnum;

}

5.矩阵乘法运算函数

〃*****************************************

//*矩阵乘法运算算法*

//*****************************************

ctemp[ccol]+=a.data[p].e*b.data[q].e;

}/*forq*/

}//forp

for(ccol=1;ccolv=c.nu;ccol++)

if(ctemp[ccol])/*压缩存储该行非零元*/

{

if((c.tu)>MAXSIZE)

exit⑴;

c.tu++;

c.data[c.tu].i=arow;

c.data[c.tu].j=ccol;c.data[c.tu].e=ctemp[ccol];

}/*endif*/

}/*forarrow*/

}/*if*/

Print_matrix(a);

Print_matrix(b);Print_matrix(c);

}

6.矩阵转置算法

//*****************************************

//*矩阵转置算法*

//*****************************************

voidTransposeMatrix(){

lnput_Matrix(&a);//输入矩阵a

b.mu=a.nu;

b.nu=a.mu;

b.tu=a.tu;

if(b.tu){

q=1;/*b.data的下标*/

for(col=1;colv=a.nu;col++)//对a的每一列

for(p=1;pv=a.tu;p++)/*p为a的下标*/

if(a.data[p].j==col){//寻找矩阵a中列为col的非零元

b.data[q].i=a.data[p].j;

b.data[q].j=a.data[p].i;

b.data[q].e=a.data[p].e;

q++;

}//if(p)

}//if(b.tu)

Print_matrix(b);//输出a的转置矩阵

}

7.矩阵加法算法

//*****************************************

//*

矩阵加法运算函数*

//*

c=a+b

*

//*****************************************

StatusAdd_Matrix(){

Input_Matrix(&a);//输入矩阵

a

Input_Matrix(&b);//输入矩阵

b

if(a.mu!

=b.mu||a.nu!

=b.nu)

//不满足矩阵加法条件

returnERROR;

c.mu=a.mu;

c.nu=a.nu;

ta=1;tb=1;tc=1;

if(a.tu*b.tu!

=0){

while((ta<=a.tu)&&(tb<=b.tu)){

if(a.data[ta].i==b.data[tb].i){if(a.data[ta].j==b.data[tb].j){temp=a.data[ta].e+b.data[tb].e;if(temp!

=0){

c.data[tc].i=a.data[ta].i;

c.data[tc].j=a.data[ta].j;

c.data[tc].e=temp;

tc++;

}//endif(temp)

ta++;tb++;

}//endif

else{

if(a.data[ta].j

c.data[tc].i=a.data[ta].i;

c.data[tc].j=a.data[ta].j;c.data[tc].e=a.data[ta].e;ta++;tc++;

}//endofelseif

else{

c.data[tc].i=b.data[tb].i;c.data[tc].j=b.data[tb].j;c.data[tc].e=b.data[tb].e;tb++;tc++;

}//

}

}//endifelse{

if(a.data[ta].i

tc++;ta++;

}

else{

c.data[tc].i=b.data[tb].i;

c.data[tc].j=b.data[tb].j;c.data[tc].e=b.data[tb].e;tc++;tb++;

}

}

}//while

while(ta<=a.tu){//处理a中剩余非零元

c.data[tc].i=a.data[ta].i;

c.data[tc].j=a.data[ta].j;

c.data[tc].e=a.data[ta].e;

tc++;ta++;

}

while(tb<=b.tu){//处理b中剩余非零元

c.data[tc].i=b.data[tb].i;

c.data[tc].j=b.data[tb].j;

c.data[tc].e=b.data[tb].e;

tc++;tb++;

}

}//

c.tu=tc;

Print_matrix(c);

}

8.矩阵输入算法

用于输入矩阵的行数、列数、非零元个数,以及每个非零元素。

输入算法如下:

//*****************************************

//*矩阵输入算法*

//*****************************************

Statuslnput_Matrix(Tabletype*t)

{

scanf(t->mu,t->nu,t->tu);//获得矩阵行列数、非零元个数

for(i=1;iv=tu;i++)

scanf(t->data[i].i,t->data[i].j,t->data[i].e);returnOK;

}

9.矩阵输出算法

将三元组以矩阵方式输出在屏幕上,算法如下:

//*****************************************

//*矩阵输出函数*//*****************************************

StatusPrint_matrix(Tabletypem){

k=1;

for(i=1;i<=m.mu;i++){

for(j=1;jv=m.nu;j++){/*非零元素*/

if((m.data[k].i==i)&&(m.data[k].j==j)){printf(m.data[k].e);

k++;

}

else

printf(0”;/*零元素*/

}printf("\n");

}

}

10.Cal_matrix函数

算法如下:

在矩阵乘法运算时,需要统计矩阵每行第一个非零元在三元组表中的位序号,

voidcal_matrix(Tabletype*m){

//计算矩阵中每一行中第一个非零元的位序号

for(row=1;rowv=m->mu;row++)num[row]=0;

for(t=1;t<=m->tu;t++)

num[m->data[t].i]++;

m->rpos[1]=1;

for(row=2;row<=m->mu;row++)

m->rpos[row]=m->rpos[row-1]+num[row-1];

}

1.6程序测试

在这部分给出程序运行结果的屏幕截图,以及测试分析

1.7感想与体会

这部分给出算法设计过程中的问题、程序调试过程的问题与收获

2.3要求

源程序没有语法错误,运行结果正确;设计报告按照规范书写。

课程设计最后提交内容包括:

源程序与课程设计报告。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1