大数据结构课程设计-进销存货物管理系统.doc_第1页
大数据结构课程设计-进销存货物管理系统.doc_第2页
大数据结构课程设计-进销存货物管理系统.doc_第3页
大数据结构课程设计-进销存货物管理系统.doc_第4页
大数据结构课程设计-进销存货物管理系统.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

实用标准文案 精彩文档 数据结构与算法数据结构与算法 课程设计说明书课程设计说明书 题题 目 目 进销存货物管理系统进销存货物管理系统 学学 院 院 计算机科学与工程学院计算机科学与工程学院 专专 业业 姓姓 名名 学学 号号 指导教师 指导教师 张瑞霞张瑞霞 2014 年年 10 月月 11 日日 实用标准文案 精彩文档 目 录 引言 3 1 系统概述 3 2 需求分析 3 2 1 系统需求 3 2 2 开发环境 4 3 详细设计 4 4 所遇到的问题和分析解决 17 5 系统特色及关键技术 20 6 结论 21 参考文献 22 实用标准文案 精彩文档 引言 随着计算机技术的发展 经济大环境的变化使得规模经济的优势不再突出 固定的 硬设备 人员数量 大量资金等资源投入占企业效益的比重变少 而软投入如管理 人 力资源价值 服务 品牌附加值 渠道等要素资源的投入却能增加企业的效益 速度冲 击规模 的速度经济概念已经向企业提出 计算机技术已经渗透到各个领域 成为各个 行业必不可少的工具 特别是 internet 技术的推广和信息高速公路的建立 使 IT 产业 在市场竞争中越发显示独特的优势 步入信息化的时代 有巨大的数据信息等待加工处 理和传输 这使得对数据的进一步开发和利用显得尤为迫切 仓库作为一总货品资源的集散地 货品的种类繁多 包含很多的信息数据管理 据 调查得知 以前仓库进行信息管理的方式主要是基于文本 表格等纸介质的手工处理 对于货品的出入库情况的统计和核实等往往采用对账本的的人工检查 对管理者的管理 权限的不受约束 任何人都可以查看 引起资料外泄 另外 数据信息处理工作量大 容易出错 不宜查找 而且 一般储存情况是记录在账本上的 仓库货物管理人员也只 是当时记得比较清楚 时间长了进行查询会造成费事 费时 费力 如对很长时间的货 物以及大量货物进行管理就更加困难了 因此我们很有必要建立一个仓库进销存货物管 理系统 使货物管理工作更加规范化 系统化 程序化 提高信息处理的速度和准确性 1 系统概述 进销存货物管理系统主要运用了数据结构中线性表的链式存储 链式存储空间的可 扩展性大 将链表中的数据以文件的形式保存 程序功能包括初始化 创建表 插入 删除和查找等 以最少的内存使用和最高的效率为原则 实现客户的需求 进入主菜单 选择相应的功能按照提示即可进入相应的操作 本系统的主要功能如下 1 用户自行注册登录 保证仓库货物信息的保密性 2 仓库各种货物信息的输入 主要包括货物标号 名称 产地 入库价格 入库 时间 现存货物数量 已经销售数量 平均销售价格等 3 仓库各种货物信息的查询 修改和维护 4 对仓库中损坏货物信息的删除 5 仓库货物信息列表的生成显示 6 实现货物信息对文本中的保存 2 需求分析 2 1 系统需求 为了能够提高内存的利用及各功能的实现 程序主要使用了 实用标准文案 精彩文档 1 线性表的链式存储 分配存储空间 空间可扩展性强 方便频繁的录入 插入 查 找 删除和排序等而不占用多余的内存 主要应用 2 文件文本的读取与写入 为了方便用户更加快速的执行管理操作 3 结构体的定义 定义了货物结构体 4 登录用户时的字符串读取及验证 进销存货物管理系统主要实现以下函数模块功能 1 录入货物信息函数 LinkList CreateList void 运用链式存储 货物信息写入文件的函数 void file write ListNode p 文件中的信息读出的函数 LinkList file read 2 查找货物函数 vvoid FindNode 3 修改信息函数 void ModNode 4 插入货物函数 void InsertNode 5 删除货物函数 void DelNode 6 货物信息排序函数 void goodsrank 7 统计货物信息函数 void goods count 8 密码登陆系统函数 void apply int load void key 系统能够实现初始化 创建表 插入 删除和查找等功能 使得货物管理更加规范 化 系统化 程序化 方便货物管理员对仓库进行科学高效管理 2 2 开发环境 系统主要在 Microsoft Visual C 6 0 的环境下开发 Visual C 6 0 简称 VC 或者 VC6 0 是微软推出的一款 C 编译器 将 高级语言 翻译为 机器语言 低级语言 的程序 Visual C 是一个功能强大的可视化软件开发 工具 自 1993 年 Microsoft 公司推出 Visual C 1 0 后 随着其新版本的不断问世 Visual C 已成为专业程序员进行软件开发的首选工具 虽然微软公司推出了 Visual C NET Visual C 7 0 但它的应用的很大的局限性 只适用于 Windows 2000 Windows XP 和 Windows NT4 0 所以实际中 更多的是以 Visual C 6 0 为平台 Visual C 6 0 不仅是一个 C 编译器 而且是一个基于 Windows 操作系统的可视化 集成开发环境 integrated development environment IDE Visual C 6 0 由许多组 件组成 包括编辑器 调试器以及程序向导 AppWizard 类向导 Class Wizard 等开发工 具 3 详细设计 3 1 设计框架设计框架 实用标准文案 精彩文档 图 3 1 设计框架图 3 2 程序主要流程图程序主要流程图 实用标准文案 精彩文档 图 3 2 程序主要流程图 3 3 主要函数设计主要函数设计 3 3 1 登陆函数登陆函数 启动系统 进入界面 会有两个选项 1 新用户注册 2 新用户登陆 新用户注册 执行此函数 程序会在工程目录下自动生成一个 key txt 文件 用于保存新用户申请 的账号和密码 void apply 新用户注册 int i flag 1 FILE fp char name 20 key 20 flushall printf n 新用户注册 n printf t t t 用户名 不能为空 scanf s name flushall printf t t t 密码 不能为空 for i 0 i 20 i key i getch if key i 13 key i 0 break printf fp fopen key txt w if fp NULL printf the file can not open flag 0 exit 1 fprintf fp s s name key fclose fp 新用户登陆 函数通过读取 key txt 文件获取新用户之前申请的账号和密码 以验证输入是否正确 从而是否允许用户进入系统 int load 用户登录 实用标准文案 精彩文档 FILE fp int i char name 20 key 20 char name1 20 key1 20 fp fopen key txt r fscanf fp s s name key fclose fp printf n 新用户登陆 n printf t t t 用户名 不能为空 scanf s name1 flushall printf t t t 密码 不能为空 for i 0 idata NO 输入货物标号 scanf s p data name 输入货物名称 scanf s p data area 输入货物产地 scanf f 输入货物入库价格 scanf s p data time 输入货物入库时间 scanf d 输入货物入库数量 scanf d 输入货物已经销售数量 scanf f 输入货物销售价格 rear next p 新结点连接到尾结点之后 rear p 尾指针指向新结点 rear next NULL 终端结点指针置空 file write head 保存输入的货物信息 建立货物信息界面 实用标准文案 精彩文档 图 3 5 建立货物信息界面 1 图 3 5 建立货物信息界面 2 3 3 43 3 4 货物信息的插入货物信息的插入 本系统设置了货物一共有八个属性 分别是货物的标号 货物名称 货物产地 入 库价格 入库时间 现存货物数量 已经销售货物数量 销售平均单价 在进行货物信 息的插入时应该按照上面的顺序依次插入 插入的位置也可以自由选择 插入完成后系 实用标准文案 精彩文档 统会提醒文件需要保存的位置 在进行货物信息的插入前 系统会提示用户输入插入点 根据以下函数可以找到相 应的插入点 while p2 k k 1 i 为货物插入的点 p1 ListNode malloc sizeof ListNode 节点申请成功后输入货物的信息 p1 节点将保存货物的信息 p1 next p2 next p2 next p1 将新节点插入 货物信息插入的界面 图 3 6 货物信息插入的界面 1 实用标准文案 精彩文档 图 3 6 货物信息插入的界面 2 3 3 53 3 5 货物信息的查询货物信息的查询 查找货物是信息管理的基本功能 当数据很多时怎么快速找到货物对管理员来说很 重要 系统调用查找函数模块 显示查找菜单 根据提示输入需要查找的 货物标号 或者 货物名称 进行查找 查找成功 用户会看到查找货物的详细信息 如没有该货 物 则查找失败 查找的主要函数设计 p p0 file read 读取文件 p p next scanf s 输入查找的方式 a 为按照货物的标号查找 b 为按照货物 的名称查找 设计两种方式查找货物的信息 更利于管理员对货物进行管理 getchar if pp a pp A printf 请输入要查找的货物标号 scanf s while p else 按照货物的名称查找 if pp b pp B 实用标准文案 精彩文档 printf 请输入要查找的货物名称 scanf s while p 以上函数是找到货物的储存位置 而找到货物之后将货物打印出来 用户就可以看 到所要查找的货物的相应信息了 货物查询的界面 图 3 7 货物查询的界面 3 3 63 3 6 货物信息的删除货物信息的删除 删除是一项对数据管理的功能 将过期的货物信息删除 以免影响仓库管理 删除 函数的原理和查找函数原理一样 只是在输入 货物标号 找到对应的货物后删除该结 点 就会删除该货物的所有详细信息 并提示用户保存 p0 file read 调用此函数读取所要删除的文件信息 while p NULL if strcmp p data NO no 0 找到相应的结点 p1 next p next free p 删除链表中的结点 flag 1 break p1 p p p next flag 0 删除成功后 新的货物信息会打印出来 并提示用户保存 货物信息删除的界面 实用标准文案 精彩文档 图 3 8 货物信息删除的界面 3 3 73 3 7 货物信息的输出货物信息的输出 软件的此功能能够使用户获得货物的全部信息 利于管理员对货物的管理 p0 file read p0 p0 next printf 货物标号 货物名称 货物产地 入库价格 入库时间 现存数量 已售数量 销售均价 n while p0 NULL printf 7s 10s 10s 8 2f 10s 10d 10d 8 2f p0 data NO p0 data name p0 data area p0 data price p0 data time p0 data number1 p0 data number2 p0 data sellprice p0 p0 next 货物信息输出界面 图 3 9 货物信息输出界面 实用标准文案 精彩文档 3 3 83 3 8 货物信息的修改货物信息的修改 软件的此项功能限制用户只能修改货物的标号 货物名称 货物产地 入库价格 入库时间 不能修改货物的已售数量和销售平均单价两个属性 如需要修改此两项信息 需要进入 货物管理的销售更新 选项进行操作 对货物的信息修改 就是对链表的操作 首先需要找到所要修改的结点 根据函数 scanf s snum 系统提示用户输入所要修改货物的标号 while p1 NULL if strcmp p1 data NO snum 0 flag 1 break p1 p1 next 货物信息的修改界面 图 3 10 货物信息修改界面 3 3 93 3 9 货物信息的销售更新货物信息的销售更新 对货物的销售更新 需要对其销售数量和销售均价进行更新 在输入的时候 系统 会提示用户输入销售的数量和后面销售的均价 完成这两个输入后 系统会自动更新货 物的已经销售数量 现存数量和销售均价 p1 data sellprice p1 data number2 p1 data sellprice num1 price1 p1 data number2 num1 更新货物的销售均价 p1 data number1 p1 data number1 num1 更新货物的现存数量 p1 data number2 p1 data number2 num1 更新货物的已经销售数量 货物信息的更新界面 实用标准文案 精彩文档 图 3 11 货物信息更新界面 3 3 103 3 10 货物信息的排序货物信息的排序 货物信息排序 为了可以更清楚的了解到货物库存量的多少 方便于管理者对仓库 货物的销售政策和对即将过期货物的多少有所了解 使仓库管理员更直观的了解到仓库 库存 该函数找到货物的记录信息按照货物数量从小到大重新排序 排序完后 返回主 菜单并提示用户保存 在对货物排序时 用户可以根据货物的现存数量 货物的入库价 格 货物的已经销售价格 货物的销售均价进行排序 在对货物的现存数量进行排序时 应用了冒泡排序的方法 大体算法如下 while p next 冒泡排序 k p q p next while q if k data number1 q data number1 k q q q next if p k t p p k k t t next p next p next k next k next t next flag 1 p p next 对货物的入库价格进行排序时 应用了直接插入的排序方法 充分利用数据结构与 算法的内容进行设计系统 实用标准文案 精彩文档 ListNode ptr1 ptr2 q L ptr2 ptr1 p next 待排序链表 p next NULL while ptr1 while p if p data price ptr1 data price ptr2 ptr1 next 记录无序链表下一个节点 q next ptr1 ptr1 next p ptr1 ptr2 ptr1 指向下一个节点 break else q p p p next if p NULL ptr2 ptr1 next 从无序链表取出节点元素 q next ptr1 ptr1 next NULL ptr1 ptr2 无序链表节点后移 q L p L next 有序链表 货物信息的排序界面 实用标准文案 精彩文档 图 3 12 货物信息排序界面 3 3 113 3 11 货物信息的统计货物信息的统计 对货物的信息统计时 系统会自动计算出仓库里的剩余货物件数 已经销售的件数 利润总数 当货物的总数量少于 200 件时 会提示 仓库里的货物偏少 请适当进货 当货物的总数量大于 1100 件时 会提示 仓库里积压的货物太多 请及时清仓 当货物的 数量在 200 到 1100 件之间时 系统会提示 仓库里总件数大于 200 件 小于 1100 件 无 需进货 清仓 通过对链表的操作 可以实现上面的功能 货物信息的统计界面 实用标准文案 精彩文档 图 3 13 货物信息统计界面 4 所遇到的问题和分析解决 在进行系统设计开始时 我花了一段时间思索设计了系统的主体框架 本次课程设 计 重要的是将已学的算法应用到自己的设计当中 因此在构建完系统主体框架之后 我又花了很长的时间去思考系统的算法 整个系统应用了链表的内容 通过对链表的操 作 可以对数据进行输入 修改 查询 和更新等 软件的设计应用了流文件 在操作流文件时 程序出现了各式各样的问题 刚开始 在建立文件的时候 文件不能写入 经过后面的调试 发现是文件的写入格式不对 将 货物的入库价格和销售平均价格由 double 型改为 float 型 原来的问题就不会再出现了 软件的货物信息录入 插入 更新 统计等功能都是在链表的基础上操作 在写系 统之前就应该对这方面做足了功课 否则将无从下手 货物的信息录入 也就是链表的 创建 在设计软件之初时 我利用尾插法进行创建 正确的算法大概为 LinkList head ListNode malloc sizeof ListNode rear head p ListNode malloc sizeof ListNode rear next p rear p 刚开始时在写创建链表的代码时可能因为粗心 忘记为节点申请新空间 导致后 面的货物信息写入总是出现错误 软件在对货物的信息进行更新时 用户只需要输入后面货物的销售数量和销售平均 价格 而软件需要自动更新文件的现存数量 已经销售数量和销售平均价格 虽然这个 算法不是太难 但如果不够细心去写的话 也可能会导致系统的更新失败 比如刚开始 的时候我就把它们之间的代码顺序搞乱 结果出现了更新错误 实用标准文案 精彩文档 p1 data sellprice p1 data number2 p1 data sellprice num1 price1 p1 data number2 num1 p1 data number1 p1 data number1 num1 p1 data number2 p1 data number2 num1 上面的三行代码是正确的排列顺序 如果将第一行代码跟第二行代码或者第三行代 码交换 就会出现更新错误 在写货物的信息插入的代码时候也遇到过问题 软件刚开始的时候会提示用户输入 插入的位置 但在调试软件的时候老是出现插入位置不对的情况 经过检查发现是查找 i 的位置不对 正确的算法为 while p2k k 1 而开始写代码的 时候居然写成了 knext 冒泡排序算法 k p q p next while q if k data number1 q data number1 k q q q next if p k t p p k k t t next p next p next k next k next t next flag 1 实用标准文案 精彩文档 p p next 直接插入的主要算法为 ListNode ptr1 ptr2 q L ptr2 ptr1 p next 待排序链表 p next NULL while ptr1 while p if p data price ptr1 data price ptr2 ptr1 next 记录无序链表下一个节点 q next ptr1 ptr1 next p ptr1 ptr2 ptr1 指向下一个节点 break else q p p p next if p NULL ptr2 ptr1 next 从无序链表取出节点元素 q next ptr1 ptr1 next NULL

温馨提示

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

评论

0/150

提交评论