石大远程在线考试——《数据结构课程设计》-85201441854054813_第1页
石大远程在线考试——《数据结构课程设计》-85201441854054813_第2页
石大远程在线考试——《数据结构课程设计》-85201441854054813_第3页
石大远程在线考试——《数据结构课程设计》-85201441854054813_第4页
石大远程在线考试——《数据结构课程设计》-85201441854054813_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国石油大学 北京 远程教育学院中国石油大学 北京 远程教育学院 期期 末末 考考 试试 数据结构数据结构 课程设计课程设计 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 系统具有一定的容错能力 1 4 校园导航问题校园导航问题 设计中国石油大学 北京 的校园平面图 至少包括 10 个场所 可以实现任意两个场 所的最短路径 2 课程设计报告书写规范课程设计报告书写规范 课程设计报告包括该题目的需求分析 概要设计 详细设计 程序测试 感想与体会 几部分内容 下面以 稀疏矩阵运算器 为例说明如何写课程设计报告 题目要求 设计一个稀疏矩阵计算器 实现两个稀疏矩阵的加法 减法 乘法以及矩 阵的转置运算 采用菜单为应用程序的界面 用户通过对菜单进行选择 分别实现矩阵的 相加 相减 相乘以及矩阵转速运算 2 1 需求分析需求分析 1 稀疏矩阵是指稀疏因子小于等于 0 5 的矩阵 利用 稀疏 特点进行存储和计算可 以大大节省存储空间 提高计算效率 实现一个能进行稀疏矩阵基本运算的运算器 2 以 带行逻辑链接信息 的三元组顺序表表示稀疏矩阵 实现矩阵转置 以及两个 矩阵的加 减 乘的运算 稀疏矩阵的输入形式采用三元组表示 运算结果以阵列形式列 出 3 演示程序以用户和计算机的对话方式进行 数组的建立方式为边输入边建立 首先 输入矩阵的行数和列数 并判别给出的两个矩阵的行列数是否与所要求的运算相匹配 4 程序可以对三元组的输入属性不加以限制 根据对矩阵的行列 三元组作之间插入 排序 从而进行运算时 不会产生错误 5 在用三元组表示稀疏矩阵时 相加 相减和相乘所产生的结果矩阵另外生成 6 运行环境 VC6 0 2 2 概要设计概要设计 稀疏矩阵元素用三元组表示 typedef struct int i 非零元的行下标 int j 非零元的列下标 int e 矩阵非零元 Triple 稀疏矩阵采用三元组顺序表存储 define MSXSIZE 12500 假设非零元个数的最大值为 200 define MAXRC 10 假定矩阵的最大行数为 10 typedef struct int mu 矩阵的行数 int nu 矩阵的列数 int tu 矩阵的非零元素个数 Triple data MAXSIZE 1 非零元三元组表 data 0 没有用 int rpos MAXRC 1 各行第一个非零元素的位置表 Tabletype 系统主要函数及功能如下 Menu 主控菜单 接收用户的选项 Input Matrix 输入矩阵 Print matrix 输出矩阵 Cal matrix 计算矩阵每行第一个非零元在三元组中的位序号 TransposeMatrix 矩阵转置 Add Matrix 矩阵加法运算 Sub Matrix 矩阵减法运算 Multi Matrix 矩阵乘法运算 模块的调用关系如图 1 所示 Multi Matrix main Add MatrixSub MatrixTransposeMatrix Cal Matrix Input MatrixPrint Matrix 图 1 程序调用模块示意图 2 3 详细设计详细设计 1 主函数设计主函数设计 矩阵运算主函数 主函数中 实现用户菜单菜单的打印 并根据用户的选项执行相应的功能 主函数力 求简洁 清晰 void main num Menu 打印主菜单 while num switch num case 1 Multi Matrix 矩阵相乘 break case 2 TransposeMatrix 矩阵转置 break case 3 Add Matrix 矩阵加法 break case 4 Sub Matrix 矩阵减法 case 0 break switch num Menu while 2 主菜单设计主菜单设计 主控菜单是用来输出提示信息和处理输入 此函数返回用户的选项 提供给 main 函数 中的 switch 语句 对于不符合要求的选项 提示输入错误并要求用户重新输入 将此函数 与 main 函数合在一起 编译运行程序 即可检查并验证菜单选项是否正确 主菜单如下 打印主控菜单函数 int menu printf n 主菜单 printf n printf n 1 矩阵乘法 printf n 2 矩阵转置 printf n 3 矩阵加法 printf n 4 矩阵减法 printf n 0 退出 printf n scanf d while num4 输入非法 重新输入 scanf d return num 3 矩阵乘法运算函数矩阵乘法运算函数 矩阵乘法运算算法 Status Multi Matrix Input Matrix 输入矩阵 a Input Matrix 输入矩阵 b Cal matrix 计算矩阵 a 每行第一个非零元的位序号 Cal matrix 计算矩阵 b 每行第一个非零元的位序号 if a nu b mu 不符合矩阵乘法条件 不能相乘 return ERROR c mu a mu 对矩阵 c 初始化 c nu b nu c tu 0 if a tu b tu 0 for arow 1 arow a mu arow 处理矩阵 a 的每一行 for p 1 p MAXRC 1 p 当前行各元素累加器清零 ctemp p 0 c rpos arow c tu 1 if arow a mu tp a rpos arow 1 else tp a tu 1 for p a rpos arow p tp p 求得 c 中第 crow 行的非零元 brow a data p j if brow b nu t b rpos brow 1 else t b tu 1 for q b rpos brow q t q ccol b data q j 乘积元素在矩阵 c 中的列号 ctemp ccol a data p e b data q e for q for p for ccol 1 ccolMAXSIZE exit 1 c tu c data c tu i arow c data c tu j ccol c data c tu e ctemp ccol end if for arrow if Print matrix a Print matrix b Print matrix c 4 矩阵转置算法矩阵转置算法 矩阵转置算法 void TransposeMatrix Input Matrix 输入矩阵 a b mu a nu b nu a mu b tu a tu if b tu q 1 b data 的下标 for col 1 col a nu col 对 a 的每一列 for p 1 p 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 的转置矩阵 5 矩阵加法算法矩阵加法算法 矩阵加法运算函数 c a b Status Add Matrix Input Matrix 输入矩阵 a Input Matrix 输入矩阵 b if a mu b mu a nu b nu 不满足矩阵加法条件 return ERROR c mu a mu c nu a nu ta 1 tb 1 tc 1 if a tu b tu 0 while ta a tu 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 end if temp ta tb end if else if a data ta j b data tb 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 end of else if 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 end if else if a data ta i b data tb i 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 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 tbmu t nu t tu 获得矩阵行列数 非零元个数 for i 1 idata i i t data i j t data i e return OK 7 矩阵输出算法矩阵输出算法 将三元组以矩阵方式输出在屏幕上 算法如下 矩阵输出函数 Status Print matrix Tabletype m k 1 for i 1 i m mu i for j 1 j m nu j 非零元素 if m data k i i k else printf 0 零元素 printf n 8 Cal matrix 函数函数 在矩阵乘法运算时 需要统计矩阵每行第一个非零元在三元组表中的位序号 算法如 下 void cal matrix Tabletype m 计算矩阵中每一行中第一个非零元的位序号 for row

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论