logo资料库

数据结构课程设计报告-仓库管理系统.doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
目录 系统开发的必要性及介绍……………………… 系统概要设计…………………………………… 系统详细设计…………………………………… 系统源代码……………………………………… 调试分析和测试结果…………………………… 系统使用说明书………………………………… 心得体会………………………………………… 参考文献…………………………………………
课程设计题目:仓库货品信息管理系统 一、系统开发的必要性及介绍 1.必要性 仓库管理是现代物流管理的一个重要组成部分,仓库货物管理信 息系统的设计,可以实现对存储货物信息及统计单据的计算机管 理,简化作业程序,提高作业效率,为企业创造更高的利润。 2.主要功能介绍 本系统有对库存货品信息的输入、插入、删除、查找等功能,并 能将建立和更新的库存信息保存于文件供输出或打印。对于查找、 删除等功能要求能按货品名、货品号分别进行。每个货品的相关 信息包括:货品号、货品名、货品库存量、进货日期、货品生产 厂家及供应商等。 二、系统概要设计 1.系统设计任务 要求系统能实现库存货品信息的输入、插入、删除、查找等 功能,并能将建立和更新的库存信息保存于文件供输出或打印。 对于查找、删除等功能能够按货品名、货品号分别进行。每个货 品的相关信息包括:货品号、货品名、货品库存量、进货日期、 货品生产厂家及供应商等。 2.方案确定 库存货品信息管理系统要求实现许多功能,可遵循结构化程序设 计思想来进行本系统的设计——自顶向下,逐步细化,也就是将 软件设计任务划分成许多容易解决的小的子任务,即分解出许多 子功能模块进行设计。本程序经过分析可划分出 6 个子任务:输 入、输出、插入、删除、查找和保存。 3.模块划分 (1)程序设计模块连接图 库存货品信息管理系统的模块连接结构如下图:
仓库货品信息管理系统 主程序模块 输 入 模 块 输 出 模 块 插 入 模 块 删 除 模 块 查 找 模 块 保 存 模 块 载 入 模 块 4.环境要求 硬件:PC 机 软件:电脑安装有 TC 集成环境 三、系统详细设计 1.数据结构设计 (1)数据结构的选择 选取动态数据结构,本系统是通过双向链表来完成的。 动态存储分配与释放: 申请存储空间函数 malloc( ) 函数首部原型为 void * malloc(unsigned int size) 释放存储空间函数 free( ) 函数首部原型为 void free(void*p) 动态数据结构——双向链表
(2) 数据类型的选择 struct commodity {int number; /*定义双向链表结构体*/ /*货物编号*/ char name[max]; int counter; struct commodity *piror, *next; /*定义两指针,分别指向其 /*货物名称*/ /*货物数量*/ 前驱和后继*/ }; (3)变量函数说明: COM *input( ) 操作结果:输入货品信息 COM *insert_perf( ) 操作结果:插入某货品 COM *del_perf( ) 操作结果:删除某货品 serch( ) 操作结果:查找某货品 print_perf( ) 操作结果:输出某货品 save(COM*head) 操作结果:保存 COM *openfile( ) 操作结果:载入 2.流程框图
查找模块和载入模块的算法框图在此略。 (1)输入模块 开始 申请一个结点空间,使 ptr1 指向它 将 ptr1 指向结点输入货品的信息 N NULL=>ptr1 N N Ptr1=>ptr2->next; ptr2=>ptr1->prior Y ptr1->num!=0 Y ptr1!=NULL Y 是 否 为 第 一 个 数据(n=0) Y ptr1=>head n+1=>n, ptr1=>ptr2 NULL=>ptr2->next 返回 head 结束 (2)插入模块
开始 调入载入模块 Head=NULL 申请一个结点空间,使 ptr3 指向它 给 ptr3 指向结点输入预插入货品的信息 Head=>ptr1 ptr1!=NULL Y ptr1=>ptr2;ptr1->next=>ptr1 ptr2=>ptr1->prior ptr3=>ptr2->next;ptr2=>ptr3->prior NULL=>ptr3->next N N “yes”or “no” Y 返回 head 结束 返回 NULL
(3)保存模块 开始 输入预保存文件的文件名 创建文件成功 Y Head=>ptr1 Ptr1!=NULL Y N N 将 ptr1 指向结点的数据写入文件 Ptr1->next=>ptr1 结束 开始
(4)输出模块 调用载入模块 Head= =NULL Y Head=>ptr1 Y 输出 ptr1 指向结点的货品信息 2030 Y Ptr1->next=>ptr1 N Ptr1!=NULL N 结束 对以上各模块的文字解释说明: (1)输入模块:其实就是一个建立链表的操作模块。建立链表的 具体操作就是逐一输入各结点数据,并建立其前后相链的关系。 首先设三个指针变量:head,ptr1,ptr2。它们都是指向结构体类 型数据的。先使 head 的值为 NULL,这是链表为空的情况。用 malloc 函数开辟一个结点,并使 ptr1,ptr2 都指向它,之后从键盘读入 一个货品的数据给 ptr1 所指向的结点。当输入的 ptr1->num 不为 0 时,令 head=ptr1;ptr2=ptr1,即把 ptr1 的值赋给 head,使 ptr2,ptr1,head 都指向这一新开辟的结点,此结点就成为链表中 的第一个结点。再开辟一个新结点并使 ptr1 指向它,读入该结点 的数据,如果输入的 ptr1->num 不为 0,则应链入这第二个结点, 这时和上一个结点的处理不同,是将 ptr1 的值赋给 ptr2->next, 也就是使第一个结点的 next 成员指向第二个结点,接着将 ptr2 也指向结点 2。再开辟一个新结点并使 ptr1 指向它,读入该结点
分享到:
收藏