数据结构课程设计基于栈的商品货架管理的设计_第1页
数据结构课程设计基于栈的商品货架管理的设计_第2页
数据结构课程设计基于栈的商品货架管理的设计_第3页
数据结构课程设计基于栈的商品货架管理的设计_第4页
数据结构课程设计基于栈的商品货架管理的设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

学号学号1308010108 数据结构数据结构 课程设计报告课程设计报告 题目 题目 基于栈的商品货架管理的设计基于栈的商品货架管理的设计 专业 专业 计算机科学与技术计算机科学与技术 班级 班级 姓名 姓名 学号 学号 指导教师 指导教师 成绩 成绩 计算机与信息工程系 2014 2015 学年学年 第一学期第一学期 2014 年 11 月 22 日 计算机与信息工程系 数据结构 课程设计报告 目目 录录 1 1 设计分析设计分析 2 1 1 设计内容 2 1 2 设计任务及具体要求 2 2 2 概要设计概要设计 2 2 1 系统的功能简介 2 2 2 总体程序框图 3 3 3 设计过程和程序代码设计过程和程序代码 3 3 1 数据结构的设计 3 3 1 1 商品信息 3 3 1 2 商品货架 栈 3 3 1 3 商品种类 4 3 2 算法设计 4 3 2 1 初始化空栈 4 3 2 2 上货的算法设计 4 3 2 3 出货 即当天的销售 的算法设计 4 3 2 4 补货的算法设计 4 3 2 5 倒货 4 3 2 6 将货架上摆放的货物打印出来 5 3 2 7 模块结构及功能 5 3 2 8 主要模块算法描述 5 4 4 运行结果运行结果 9 5 5 小结小结 10 参考文献参考文献 11 附录 源程序附录 源程序 12 计算机与信息工程系 数据结构 课程设计报告 0 1 1 设计分析设计分析 1 11 1 设计内容设计内容 商店货架以栈的方式摆放商品 商品货架可以看成一个栈 栈顶商品的生 产日期最早 栈底商品的生产日期最近 生产日期越接近的越靠栈底 出货时 从栈顶取货 一天营业结束 如果货架不满 则需上货 入货直接将商品摆放 到货架上 则会使生产日期越近的商品越靠近栈顶 这样就需要倒货架 使生 产日期越近的越靠近栈底 请编写程序模拟商品销售 上架倒货架等操作 设有 5 种商品 每种商品至少有商品名和生产日期两个属性 1 21 2 设计任务及具体要求设计任务及具体要求 设计任务 一天营业的开始 首先店主要把各个商品货架 栈 上满货物 商店内总共有 5 种商品 商品名为 a b c d e 补货时 店主输入第一种 需要补货的商品的商品名和今天销售出去的数量 然后 输入要补上货架的商 品名和生产日期并将要补上货架的商品与在货架上未销售出去的货物进行生产 日期的比较 若是要补上货架的货物日期比较早就直接上货架 否则进行倒货 再补货 这样就能将日期比较近的放在栈底 用另外申请的一个空栈来存储倒 出的货物 第一种商品补完货后 再问店主是否还有其他商品需要补货 如需 补货按第一种商品补货的程序来进行 以此类推进行补货 要求 明确课程设计的目的 能根据课程设计的要求 查阅相关文献 为 完成设计准备必要的知识 提高撰写技术文档的能力 并学习了解 C 语言程序 设计的要求和方法 利用数据结构的相关算法和原理进行系统的设计分析 提 高计算机语言编程的能力 2 2 概要设计概要设计 2 12 1 系统的功能简介系统的功能简介 商品货架管理系统可以看成是栈的设计管理 栈顶的产品的日期最早 栈 底的商品日期最近 上货时需要进行倒货架以实现该功能 通过基于栈的原理 实现设计商品货架管理系统 使得该系统的主要功能是实现对商品货架中产品 计算机与信息工程系 数据结构 课程设计报告 1 进行合理有效的管理的实现 该系统包括对商品货架进行商品的上货 出货 补货 到货等功能 实现对商品货架信息上货 出货 补货功能的管理 2 22 2 总体程序框图总体程序框图 图 2 2 程序的总体框图 3 3 设计过程和设计代码设计过程和设计代码 3 13 1 数据结构的设计数据结构的设计 3 1 1 商品信息 typedef struct char b 存储商品名 商品日期年 月 日 int year int month int day Data 3 1 2 商品货架 栈 define max 5 typedef struct Data a max 0 为栈底位置 主函数 栈初始化上货出货 补货 卸货打印栈中货 物信息 计算机与信息工程系 数据结构 课程设计报告 2 int top 栈顶 Stack 3 1 3 商品种类 Stack s 5 5 种商品 3 23 2 算法设计算法设计 3 2 1 初始化空栈 利用 for 循环为每个 商品货架 栈申请空间 并进行判断是否有申请到 空间 若没有申请到空间就输出提示 空间不足 若是有申请到空间 top 指向栈顶 初始值为 1 栈底是 0 的位置 3 2 2 上货的算法设计 先定义四个变量分别是字符型的 k1 整型的 k2 k3 k4 用来存储商品名 和商品的生产日期 再赋值给栈元素的各个属性 即将商品上货 再赋值前先 判断 top 是否是最大值 若是就输出提示 栈满 并结束该上货程序 当货物 上满后输出提示表示商品的货架上满了并输出此时货架上货物的数量 利用 for 循环进行下一个商品的上货 直至将 5 个商品的货架全部上满 3 2 3 出货 即当天的销售 的算法设计 一天的营业结束了 店主需要为有销售出去的商品进行补货 因此需要知 道是哪个商品有销售出去以及其销售的数量 让店主输入今天有销售出去的一 种商品的商品名 若是店主输入此商店没有的商品名就输出提示 并让店主再 次输入商品名 接着要输入销售的数量 程序要对销售的数量进行判断是否超 出了栈的最大值 即货架上所能容纳货物的最大数量 若是超出输出提示 并请店主再次输入销售的数量 3 2 4 补货的算法设计 在此子函数中先定义四个变量分别是字符型的 k1 整型的 k2 k3 k4 用 来存储要补上货架的商品名和商品的生产日期 另外再初始化一个空栈 L 用 来存储倒出来的货物 将要补上货架的商品的生产日期与在货架上未销售出去 的商品进行比较 若是日期比较早则可直接上货 否则要进行倒货再上货 每 入一件货物都要进行这样的程序 3 2 5 倒货 计算机与信息工程系 数据结构 课程设计报告 3 为避免发生入货直接将商品摆放到货架上 会使生产日期越近的商品越靠 近栈顶这样的事发生 因此需要倒货 将比要补上货架的货物的生产日期要早 的货物倒出放入栈 L 直至将要补上货架的货物入货 则可再把栈 L 内的货物 再放回原栈 3 2 6 将货架上摆放的货物打印出来 补货完成后 要将各个商品栈内的货物的商品名以及其生产日期打印出来 这样可以检验补货时是否有将日期比较近的放在栈底 3 2 7 模块结构及功能 int main void 主程序 Stack initstack 初始化空栈 Stack onput Stack S 上货 void outpush Stack S 出货 void backstack Stack S int x 补货 Stack outstack Stack S Stack L 倒货 void Print Stack S 打印商品栈内货物信息 3 2 8 主要模块算法描述 1 上货 Stack onput Stack S int j char k1 储存商品名 int k2 k3 k4 储存商品生产日期年 月 日 for j 0 jtop max 1 判断栈满 printf 栈满 n 栈满不能入栈 return S S top printf 栈数 d S top 打印货物所在的栈数 输入商品名和生产日期 fflush stdin 清除缓存区 计算机与信息工程系 数据结构 课程设计报告 4 scanf c d d d 输入商品信息 S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 该商品的货架满了 n printf 此时该商品的货架上共有 d 个商品 n n S top 1 return S 2 出货 void outpush Stack S printf 请店主输入今天 c 这个商品销售出去的数量 S a S top b int x i fflush stdin 清除缓存区 do fflush stdin scanf d if x max printf 该货架上没有这么多商品 请重输 n while x max for i 1 itop printf 此时 c 这个商品的货架的数量剩下 d 件需要补上货架的数量 为 d n n S a S top b S top 1 x backstack S x 补货 3 补货 void backstack Stack S int x int i ii int temp char k1 储存商品名 int k2 k3 k4 储存生产日期分别对应年月日 Stack L L initstack 重新申请一个空栈用来倒货时存放货物 printf 请输入要补上货架的商品名 一个字符 空一格并输入该商品生产日期 计算机与信息工程系 数据结构 课程设计报告 5 年 月 日 每上货一件以回车键结束 n for i 1 itop 1 此时货架上无商品可以直接上货 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top else if k2a S top year 若生产年份要补上货架的比货架上的早则直接上货架 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top temp 1 else for ii S top ii 1ii temp 0 用来标记是否有货物上架 if k2 S a S top year 若生产年份要补上货架的与货架上的一样则比较月份 if k3a S top month 若生产月份要补上货的比货架上的早则直接上货 计算机与信息工程系 数据结构 课程设计报告 6 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top temp 1 if temp 1 break else if k3 S a S top month 若生产月份要补上货架的与货架上的一样则比较生产当天日期 if k4a S top day 若生产当天日期要补上货的比货架上的早或是相 同则直接上货否则要倒货重新上货架 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top temp 1 if temp 1 break else L outstack S L 倒货 else L outstack S L 倒货 if k2 S a S top year 此时生产年份要补上货架的比货架上的近 L outstack S L 倒货 if temp 0 计算机与信息工程系 数据结构 课程设计报告 7 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top while L top 1 将存储在 L 栈中的商品上架 S top S a S top L a L top L initstack printf 补货完成 n n Print S 4 倒货 Stack outstack Stack S Stack L L top L a L top S a S top S top printf 此时的栈顶数为 d n S top printf 倒货一次 n n return L 4 4 运行结果运行结果 程序测试数据如下 1 上货 图 1 上货程序测试 计算机与信息工程系 数据结构 课程设计报告 8 2 补货及出货 图 2 补货及出货测试 5 5 小结小结 通过此次课程设计 我更深刻地体会到编写一个程序之前首先要分析它 知道它的功能 要做什么等等 如何实现它 这些需要我们认真的思考 分析 划分整体成各个模块 再逐一的实现它是一种很好的解决方法 在调试程序 的过程中我们需要细心和耐心 通过这次商品货架管理的上机实习 我对于栈 有了更多的认识 对栈的运用更加的熟练 对于栈的具体进出有了很深入的认 识 尤其在输出栈的具体的进出操作过程中 在输出形式上费了很大的功夫 还有在插入新商品时 比较商品日期 开始的时候没有考虑全面 只考虑到新 商品日期比所有的旧商品日期近 最后经过完善 又增加了比所有的商品日期 早 和新商品日期在旧商品中间 最后才得到比较满意的结果 总之 经过本次专业课程设计 让我掌握了开发应用软件的基本流程 运 用所学编程技能的基本技巧 也让我初步了解了软件设计的基本方法 提高进 行工程设计的基本技能及分析 解决实际问题的能力 为以后毕业设计和工程 实践等打下良好的基础 相信通过这次的课程设计 我对所学的 数据结构 C 语言版 和各种编程语言都有了一个全新的认识 我也会积极吸取本次 课程设计的经验 继续研究数据结构和所学的各种编程语言 计算机与信息工程系 数据结构 课程设计报告 9 参考文献参考文献 1 苏小红等 C 语言大学实用教程 第二版 M 北京 北京工业出版 社 2008 2 吴文虎 程序设计基础 第二版 M 北京 清华大学出版社 2004 3 谭浩强 C 程序设计教程 M 北京 清华大学出版社 2008 4 严蔚敏 吴伟民著 数据结构 C 语言版 北京 清华大学出版社 2007 计算机与信息工程系 数据结构 课程设计报告 10 附录 源程序附录 源程序 include include include define max 5 typedef struct char b 存储商品名 商品日期年 月 日 int year int month int day Data typedef struct Data a max 0 为栈底位置 int top 栈顶 Stack 初始化空栈 Stack initstack Stack S S Stack malloc sizeof Stack 申请空间 判断是否申请到栈空间 if S printf 空间不足 n return NULL else S top 1 return S 将货架上摆放的货物打印出来 void Print Stack S printf 这个商品的货架上摆放了 d 个货物 n S a S top b S top 1 while S top 1 计算机与信息工程系 数据结构 课程设计报告 11 printf c d d d n S a S top b S a S top year S a S top month S a S top day S top 上货 Stack onput Stack S int j char k1 int k2 k3 k4 for j 0 jtop max 1 printf 栈满 n 栈满不能入栈 return S S top printf 栈数 d S top 输入商品名和生产日期 fflush stdin 清除缓存区 scanf c d d d S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 该商品的货架满了 n printf 此时该商品的货架上共有 d 个商品 n n S top 1 return S 倒货 Stack outstack Stack S Stack L L top L a L top S a S top S top printf 此时的栈顶数为 d n S top 计算机与信息工程系 数据结构 课程设计报告 12 printf 倒货一次 n n return L 补货 void backstack Stack S int x int i ii int temp char k1 储存商品名 int k2 k3 k4 储存生产日期分别对应年月日 Stack L L initstack 重新申请一个空栈用来倒货时存放货物 printf 请输入要补上货架的商品名 一个字符 空一格并输入该商品生产日期 年 月 日 每上货一件以回车键结束 n for i 1 itop 1 此时货架上无商品可以直接上货 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top else if k2a S top year 若生产年份要补上货架的比货架上的早则直接上货架 S top S a S top b k1 计算机与信息工程系 数据结构 课程设计报告 13 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top temp 1 else for ii S top ii 1ii temp 0 用来标记是否有货物上架 if k2 S a S top year 若生产年份要补上货架的与货架上的一样则比较月份 if k3a S top month 若生产月份要补上货的比货架上的早则直接上货 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top temp 1 if temp 1 break else if k3 S a S top month 若生产月份要补上货架的与货架上的一样则比较生产当天日期 if k4a S top day 若生产当天日期要补上货的比货架上的早或是相同则直接上货否则要倒货重 新上货架 S top S a S top b k1 计算机与信息工程系 数据结构 课程设计报告 14 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top temp 1 if temp 1 break else 倒货 L outstack S L else 倒货 L outstack S L if k2 S a S top year 此时生产年份要补上货架的比货架上的近 L outstack S L 倒货 if temp 0 S top S a S top b k1 S a S top year k2 S a S top month k3 S a S top day k4 printf 补货成功第 d 件 n i printf 此时的栈顶数为 d n S top while L top 1 将存储在 L 栈中的商品上架 S top S a S top L a L top L initstack printf 补货完成 n n

温馨提示

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

评论

0/150

提交评论