




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学学 号号201410137214 武武 汉汉 科科 技技 大大 学学 城城 市市 学学 院院 课课 程程 设设 计计 报报 告告 课程名称课程名称 数据结构课程设计数据结构课程设计 题题 目目 商店存货管理系统商店存货管理系统 学学 部部 信息工程学部信息工程学部 专专 业业 计算机科学与技术计算机科学与技术 班班 级级 计科二班计科二班 姓姓 名名 刘威刘威 指导教师指导教师 林晓丽林晓丽 2015年年6月月28日日 目 录 1 1 课程设计目的 3 1 2 课程设计内容和要求 3 1 2 2 要求 3 1 2 3 运行环境 4 1 3 课程设计分析 4 1 4 算法描述 4 1 5 源代码 7 1 6 运行结果分析 17 小 结 24 参考文献 24 课程设计评分表 25 1 1 课程设计目的 通过实习 了解并初步掌握设计 实现较大系统的完整过程 包括系统分 析 编码设计 系统集成 以及调试分析 熟练掌握数据结构的选择 设计 实现以及操作方法 为进一步的应用开发打好基础 通过实习巩固并提高实习者的 C 语言知识 并初步了解 Visual C 的知识 提高其编程能力与专业水平 1 2 课程设计内容和要求 1 2 1 课程设计内容 建立一商店存货管理系统 要求每次出货时取进货时间最早且最接近保质 期中止时间的货物 分步实施 1 初步完成总体设计 搭好框架 确定人机对话的界面 确定函数个数 2 完成最低要求 建立一个文件 包括 5 个种类的货物情况 能对商品信 息进行扩充 追加 修改和删除以及简单的排序 3 进一步要求 扩充商品数量 以及完成系统查询功能 有兴趣的同学可 以自己扩充系统功能 1 2 2 要求 1 界面友好 函数功能要划分好 2 总体设计应画一流程图 3 程序要加必要的注释 4 要提供程序测试方案 5 程序一定要经得起测试 宁可功能少一些 也要能运行起来 不能运行 的程序是没有价值的 1 2 3 运行环境 该程序的运行环境为 Windows xp 系统 Microsoft Visual C 6 0 版本 1 3 课程设计分析 1 需要定义一个结构体数组 其中 name 表示商品的名称 time 表示商品 的进货时间 year 表示商品的生产日期 no 表示商品的保质期 2 利用冒泡法 对商品进行排序 3 选择需要的功能 其中功能包括商品的最原始添加 商品的插入 删除 查找 将数据写入文件中 从文件中读出数据等操作 4 选择输入 0 9 10 个数的其中一个数 进行相应的操作 5 进行完所的操作之后 选择保存功能 将数据保存到文件中 6 退出程序 1 4 算法描述 1 先定义一个商品的结构体数组 typedef struct 定义结构体数组 char name 20 商品名称 int time 进货时间 int year 生产日期 int no 保质期 goods 2 建立一个菜单函数 显示 10 个功能 供用户选择 进行人机对话 3 设置一个排序的函数 int shuru shangp gs int n 利用冒泡法先对商品 按进货的时间排序 对进货时间一样的货物 再按离保质期最近排序 4 设置一个输入的函数 int Input goods gs int n 这个函数是最初商品 输入函数 当选择了这个功能后 如果是第一次运行这个程序 保存 输入 那将在 D 盘产生一个名为 商品 doc 的文件 如果已经运行 过了 并保存输入 那输入的商品信息将代替原有的信息 数据输入 使用交互输入 进行人机对话 确定是否进行下一个数据的添加 并 且调用了上面的排序函数 对输入的数据进行排序 5 设置一个显示的函数 void shuchu goods gs int n 显示上面输入的所 有数据 或者是从文件中读取的数据 6 设置一个插入的函数 int charu goods gs int n 每次插入一组数据 如果要再插入 则再选择这个功能进行操作 并且在插入的同时 已 经排好序 把数据插入适合的位置 7 设置一个查找删除的函数 intchazhaoxianshi goods gs int n 输入要 查找的商品名称 如果不存在 则输出失败信息 如果存在 则用下 一个信息代替原有信息的位置 8 设置一个查找显示的函数 void chazhaoxianshi goods gs int n 输入要 查找的商品名称 如果不存在 则输出失败信息 如果存在 则显示 信息 9 设置一个写入文件的函数 void xiewenjian goods gs int n 设置文件 指针 先判断文件是否能打开并且能进行写操作 不能则输出失败信 息 能则循环写入数据 写完关闭文件 10 设置一个读文件的函数 int duwenjian goods gs int n 设置文件指针 判断文件是否能打开而且能进行读操作 能则先读出总的数据量 接 着循环读出数据 最后关闭文件 11 进入最后一步 main 函数 判断选择的操作 根据用户选择的操作 利用 switch 语句进行相应的函数调用 12 选择保存功能 对数据进行保存 然后选择结束程序退出功能 退出程 序 paixu gs n 初始条件 数据已经存在 操作结果 数据进行排序 shuru gs n 初始条件 没有任何数据存在 或者要替换原文件中的所有数据 操作结果 数据进行输入 shuchugs n 初始条件 数据已经存在 操作结果 数据显示 charu gs n 初始条件 数据已经存在 操作结果 数据插入 chanchu gs n 初始条件 数据已经存在 操作结果 数据删除 chazhaoshanchu i gs n 初始条件 数据已经存在 操作结果 数据统计 xiewenjian gs n 初始条件 数据已经存在 操作结果 写入文件中 duwenjian gs n 初始条件 文件已经存在 操作结果 从文件中读出 1 4 流程图 退出程序 写入文件 排序数据 统计数据 添加数据 查找数据 删除数据 显示数据 新数据 重新选择功能 读文件 Main 函数 功能 8功能 1 功 能 2 功 能 3 功 能 4 功 能 5 功 能 6 功 能 9 功能 7 功能 0 1 5 源代码 include 引用库函数 include include include typedef struct 定义结构体数组 char name 20 商品名称 int time 进货时间 int year 生产日期 int no 保质期 goods goods gs 80 结构体数组变量 int menu select 菜单函数 char c do system cls 运行前清屏 printf t t 商品系统 n 菜单选择 printf t t 1 输入数据 n printf t t 2 显示数据 n printf t t 3 插入数据 n printf t t 4 删除数据 n printf t t 5 查找数据 n printf t t 6 统计并显示进货时间最早且最接近保质期中止时间的货物 n printf t t 7 写入文件 n printf t t 8 读文件 n printf t t 9 对读入的文件进行排序 n printf t t 0 退出 n printf t t n printf t t t 请选择 0 9 c getchar 读入选择 while c 9 return c 0 返回选择 void Sort by time goods gs int n 按进货时间排序 int i j a b c p q s m k d e f char t 10 for i 0 i n 1 i 冒泡法排序 for j 0 jgs j 1 time a b c a a b b c strcpy t gs j 1 name strcpy gs j 1 name gs j name strcpy gs j name t p q s p p q q s m k d m m k k d else if gs j time gs j 1 time p a b q e p b 10000 f a q 10000 if e f a b c a a b b c strcpy t gs j 1 name strcpy gs j 1 name gs j name strcpy gs j name t p q s p p q q s m k d m m k k d int Input goods gs int n 输入若干条记录 int i 0 char sign x 10 while sign n 交互输入 scanf t t t s gs n i name printf t t t 进货时间 例 20070201 scanf t t t d printf t t t 生产日期 例 20070201 scanf t t t d printf t t t 保质期 年 scanf t t t d gets x 清除多余的输入 printf t t t 继续输入 Y N scanf t t t c 输入判断 i Sort by time gs n i 调用排序函数 return n i void Display goods gs int n 显示所有记录 int i printf t t n 格式头 printf t t 商品名称 进货时间 生产日期 保质期 年 n printf t t n for i 1 i1 格式 printf t t t system pause printf t t t n printf t t t system pause 按任何键继续 int Insert a record goods gs int n 插入一条记录 char x 10 清除多余输入所用 printf t t t 商品名称 交互输入 scanf t t t s gs n name printf t t t 进货时间 scanf t t t d printf t t t 生产日期 scanf t t t d printf t t t 保质期 scanf t t t d gets x n Sort by time gs n 调用排序函数 printf t t t 插入成功 n 返回成功信息 return n int Delete a record goods gs int n 按商品名字查找 删除一条记录 char s 20 int i 0 j printf t t t 商品名称 scanf s s while strcmp gs i name s 0 查找判断 if i n printf t t t 没找到 n 返回失败信息 return n for j i j n 1 j 删除操作 strcpy gs j name gs j 1 name gs j time gs j 1 time gs j year gs j 1 year gs j no gs j 1 no printf t t t 删除成功 n 返回成功信息 return n 1 void Query a record goods gs int n 查找并显示一个记录 char s 20 int i 0 printf t t t 输入要查找的商品名称 scanf t t t s s while strcmp gs i name s 0 查找判断 if i n printf t t t 没找到 n 输入失败信息 return printf t t t 进贷时间 d n gs i time 输出该商品信息 printf t t t 生产日期 d n gs i year printf t t t 保质期 d n gs i no void WritetoText goods gs int n 将所有记录写入文件 int i 0 FILE fp 定义文件指针 if fp fopen d 商品 doc wb NULL 打开文件 printf t t tcann t open the file n system pause return fprintf fp d n n 循环写入数据 while i n fprintf fp 5s d d d n gs i name gs i time gs i year gs i no i fclose fp 关闭文件 printf t t tSuccessed n 返回成功信息 int AddfromText goods gs int n 从文件中读入数据 int i 0 num FILE fp 定义文件指针 if fp fopen d 商品 doc rb NULL 打开文件 printf t t tcann t open the file n 打开失败信息 printf t t t system pause return n fscanf fp d 读入总记录量 while i num 循环读入数据 fscanf fp s d d d gs n i name i n num fclose fp 关闭文件 printf t t tSuccessed n printf t t t system pause return n void main 主函数 int n 0 for switch menu select 选择判断 case 1 printf t t t 输入最初商品 n 输入若干条记录 n Input gs n break case 2 printf t t t 显示所有商品 n 显示所有记录 Display gs n break case 3 printf t t t 插入 n n Insert a record gs n 插入 printf t t t system pause break case 4 printf t t t 删除 n n Delete a record gs n 按商品名称查找 删除 printf t t t system pause break case 5 printf t t t 查找并显示 n Query a record gs n 查找并显示 printf t t t system pause break case 6 printf t t t 统计并显示进货时间最早且最接近保质期中止时间的货 物 n printf t t t 共有 d 件商品 n n 总共记录数 printf t t t 进货时间最早且最接近保质期中止时间的货物 n printf t t t 商品名称 r s n gs 0 name printf t t t 进货时间 d n gs 0 time printf t t t 生产日期 d n gs 0 year printf t t t 保质期 d n n gs 0 no printf t t t system pause break case 7 printf t t t 写到文件中 n WritetoText gs n 循环写入数据 printf t t t system pause break case 8 printf t t t 文件中读数据 n n AddfromText gs n printf t t t 文件中读数据 break case 9 printf t t t n Sort by time gs n printf t t t 对读入的文件进行排序 break case 0 printf t t t 结束退出 n 结束程序 printf t t t system pause exit 0 1 6 运行结果分析 1 初始界面 从 D 盘读入已准备好的文件数据 2 选择功能 8 并选择功能 2 显示最初的数据 3 对读出的文件进行排序 选功能 9 再选功能 2 进行显示 4 选择功能 3 进行插入操作 选择功能 2 进行显示 5 选择功能 4 进行删除操作 第一种情况为找不到要删除的商品数据 接下去这个是另一种情况 即找到要删除的商品数据并按功能 2 显示 6 选择功能 5 第一种情况为找不到要查找的数据 第二种为存在情况 7 选择功能 6 8 选择功能 7 9 选择功能 0 退出程序 目目 录录 题目一 一种排序一种排序 一 难度 3 1 1 题目要求 1 2 算法设计思路及步骤 1 3 算法描述 2 4 结果分析 3 小 结 3 参考文献 4 题目一 一种排序一种排序 难度 3 1 题目要求题目要求 1 1 问题描述 描述 现在有很多长方形 每一个长方形都有一个编号 这个编号可以重复 还知道这个长方形的宽和长 编号 长 宽都是整数 现在要求按照一 下方式排序 默认排序规则都是从小到大 1 按照编号从小到大排序 2 对于编号相等的长方形 按照长方形的长排序 3 如果编号和长都相同 按照长方形的宽排序 4 如果编号 长 宽都相同 就只保留一个长方形用于排序 删除多余的 长方形 最后排好序按照指定格式显示所有的长方形 输入 第一行有一个整数 0 n 10000 表示接下来有 n 组测试数据 每一组第一行有一个整数 0 m 1000 表示有 m 个长方形 接下来的 m 行 每一行有三个数 第一个数表示长方形的编号 第二个和第三个数值大的表示长 数值小的表示宽 相等 说明这是一个正方形 数据约定长宽与编号都小于 10000 输出 顺序输出每组数据的所有符合条件的长方形的 编号 长 宽 样例输入 1 8 1 1 1 1 1 1 1 1 2 1 2 1 1 2 2 2 1 1 2 1 2 2 2 1 样例输出 1 1 1 1 2 1 1 2 2 2 1 1 2 2 1 2 算法设计思路及步骤算法设计思路及步骤 2 1 设计思路 先做一个输入函数 输入 m 组数据进行排序 优先按照编号来排序 当编 号相等时再优先按照长度排序 当编号 长度相等时再排序宽度 当三个数值 都相等时 只输出一个出来 2 2 步骤 输入数据 m 要进行的组数 采用 while 循环判断组数执行的条件 然后在使用 for 循环接受长方体的编号 长度 宽度 然后调用快速排序函数 CMP 进行排 序 用一个 for 循环来删除相同数据的输出 最后把排序将结果输出数来后用 break 跳出循环程序结束 3 算法描述算法描述 4 结果分析结果分析 通过这程序感觉大大的简化了曾经的函数用法 这快速排序做的也不错 整体 来说程序的可读性 稳定性都很好 感觉做的不错 源代码源代码 include include define MAX 1000 define jh a b t a a b b t int t typedef struct int no length width ac ac all MAX int cmp const void a const void b 快 速 排 序 法 ac ac a ac a ac ac b ac b if ac a no ac b no if ac a length ac b length return ac a width ac b width else return ac a length ac b length else return ac a no ac b no int main while 1 int m i printf 请 问 你 要癮输 入 几 个 长 方 体 的 数簓据 Y 阰 scanf d for i 0 i m i printf 请 以 此 输 入 长 方 体 的 编括 号 长 度 长 度 用 空 格 分 开 a 回 车 表括 示 一 组哩 数簓据 Y 输 入 结 束 n scanf d d d if all i length all i width jh all i length all i width qsort all
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人创业者的财务规划与管理
- 临床实验室仪器维修技术
- 2025年植物原药项目合作计划书
- 互联网行业品牌建设与推广
- 企业在线直播营销的模式与技巧
- 2025年小学安全宣传教育活动计划
- 企业声誉管理与品牌塑造
- 企业宣传与品牌推广的演讲方法
- 营养咨询中患者参与安全管理流程
- 企业年度计划与预算制定技巧
- 图解《弘扬教育家精神》全文课件
- 2025年中国电信山东分公司招聘笔试参考题库含答案解析
- JJG 1204-2025电子计价秤检定规程(试行)
- 2024年计算机二级WPS考试题库(共380题含答案)
- 汉字的奥秘探索
- 《海上风电设备运输规范》
- 2024年江苏省徐州市中考数学真题卷及答案解析
- 湖北省七市2025届高三下学期第五次调研考试数学试题含解析
- 2024年太阳能电池片产业海外专利预警分析报告
- 2023河南专升本英语真题及答案
- 河流沿岸护栏安装工程协议
评论
0/150
提交评论