目录
系统开发的必要性及介绍………………………
系统概要设计……………………………………
系统详细设计……………………………………
系统源代码………………………………………
调试分析和测试结果……………………………
系统使用说明书…………………………………
心得体会…………………………………………
参考文献…………………………………………
课程设计题目:仓库货品信息管理系统
一、系统开发的必要性及介绍
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 指向它,读入该结点