您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > java仓库管理系统
目录系统开发的必要性及介绍………………………系统概要设计……………………………………系统详细设计……………………………………系统源代码………………………………………调试分析和测试结果……………………………系统使用说明书…………………………………心得体会…………………………………………参考文献…………………………………………课程设计题目:仓库货品信息管理系统一、系统开发的必要性及介绍1.必要性仓库管理是现代物流管理的一个重要组成部分,仓库货物管理信息系统的设计,可以实现对存储货物信息及统计单据的计算机管理,简化作业程序,提高作业效率,为企业创造更高的利润。2.主要功能介绍本系统有对库存货品信息的输入、插入、删除、查找等功能,并能将建立和更新的库存信息保存于文件供输出或打印。对于查找、删除等功能要求能按货品名、货品号分别进行。每个货品的相关信息包括:货品号、货品名、货品库存量、进货日期、货品生产厂家及供应商等。二、系统概要设计1.系统设计任务要求系统能实现库存货品信息的输入、插入、删除、查找等功能,并能将建立和更新的库存信息保存于文件供输出或打印。对于查找、删除等功能能够按货品名、货品号分别进行。每个货品的相关信息包括:货品号、货品名、货品库存量、进货日期、货品生产厂家及供应商等。2.方案确定库存货品信息管理系统要求实现许多功能,可遵循结构化程序设计思想来进行本系统的设计——自顶向下,逐步细化,也就是将软件设计任务划分成许多容易解决的小的子任务,即分解出许多子功能模块进行设计。本程序经过分析可划分出6个子任务:输入、输出、插入、删除、查找和保存。3.模块划分(1)程序设计模块连接图库存货品信息管理系统的模块连接结构如下图:4.环境要求硬件:PC机软件:电脑安装有TC集成环境三、系统详细设计1.数据结构设计(1)数据结构的选择选取动态数据结构,本系统是通过双向链表来完成的。动态存储分配与释放:申请存储空间函数malloc()函数首部原型为void*malloc(unsignedintsize)释放存储空间函数free()函数首部原型为voidfree(void*p)动态数据结构——双向链表仓库货品信息管理系统主程序模块输入模块输出模块插入模块删除模块查找模块保存模块载入模块(2)数据类型的选择structcommodity/*定义双向链表结构体*/{intnumber;/*货物编号*/charname[max];/*货物名称*/intcounter;/*货物数量*/structcommodity*piror,*next;/*定义两指针,分别指向其前驱和后继*/};(3)变量函数说明:COM*input()操作结果:输入货品信息COM*insert_perf()操作结果:插入某货品COM*del_perf()操作结果:删除某货品serch()操作结果:查找某货品print_perf()操作结果:输出某货品save(COM*head)操作结果:保存COM*openfile()操作结果:载入2.流程框图查找模块和载入模块的算法框图在此略。(1)输入模块NYNYNYY(2)插入模块申请一个结点空间,使ptr1指向它将ptr1指向结点输入货品的信息ptr1-num!=0ptr1!=NULL是否为第一个数据(n=0)ptr1=headn+1=n,ptr1=ptr2NULL=ptr2-next返回head结束开始NULL=ptr1Ptr1=ptr2-next;ptr2=ptr1-priorNYNY开始调入载入模块Head=NULL申请一个结点空间,使ptr3指向它给ptr3指向结点输入预插入货品的信息Head=ptr1ptr1!=NULLptr1=ptr2;ptr1-next=ptr1ptr2=ptr1-priorptr3=ptr2-next;ptr2=ptr3-priorNULL=ptr3-next“yes”or“no”返回head结束返回NULL(3)保存模块NYNY开始输入预保存文件的文件名创建文件成功Head=ptr1Ptr1!=NULL将ptr1指向结点的数据写入文件Ptr1-next=ptr1结束开始(4)输出模块YYNYN对以上各模块的文字解释说明:(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指向它,读入该结点调用载入模块Head==NULLHead=ptr1输出ptr1指向结点的货品信息Ptr1-next=ptr1Ptr1!=NULL结束2030的数据,同样将ptr1的值赋给ptr2-next,也就是使第三个结点链接到第二个结点之后,并接着将ptr1的值赋给ptr2,使ptr2指向结点3。再开辟一个新结点,并使ptr1指向它,输入该结点的数据,如果输入ptr1-num为0,则是输入结束标志,此结点不被链接到链表中,就将NULL赋给ptr2-next。建立链表过程至此结束,ptr1最后所指结点并未链入链表中。(2)插入模块:要完成的是链表的插入操作,即将一个新结点插入到一个已有的链表中,对刚刚建立的链表,首先新设一个指针变量ptr0,并开辟一个结点使ptr3指向它,输入该结点的数据,即新货的有关数据,接下来查找要插入位置结点,找到后只需修改此结点和ptr0指向结点指针域的值即可,链表中所有元素位置均不需移动,这就体现了链表的优点。(3)删除模块:要完成的是链表的删除操作,只需修改链表中要删除结点的前一个结点的链指针。使之指向被删除结点的后面一个结点即可。(4)保存模块:将最终想要保留的数据信息保存于文件中。(5)输出模块:要完成的是依次输出链表中各结点的数据的操作。首先找到链表头结点的地址,也就是head的值,然后设一个指针变量ptr1,先指向第一个结点,输出ptr1所指的结点,然后使ptr1后移一个结点,再输入直至链表的尾结点结束。四、系统源代码#includestdio.h/*标准输入/输出头文件*/#includeconio.h/*包含绘制图形函数等头文件*/#includestring.h/*包含字符串处理函数头文件*/#includestdlib.h/*包含动态存储与释放函数头文件*/#includegraphics.h#defineLENsizeof(COM)#definePRINT%-15ld%-15s%-15d\n,ptr1-num,ptr1-name,ptr1-count#defineCHECK_COUNTptr1-count0#defineCHECK_COUNT2ptr3-count0#defineNULL0typedefstructcom{longintnum;charname[10];intcount;structcom*prior,*next;}COM;/*定义结构体*/COM*input();/*输入货品信息*/COM*insert();/*插入货品信息*/COM*delet();/*删除货品信息*/voidsearch();/*查找货品信息*/voidsave(COM*head);/*保存货品信息*/COM*openfile();/*从文件将货品信息载入链表*/voidprint();/*输出货品信息*/FILE*fp;/*定义指向文件的指针变量*/COM*head=NULL;COM*ptr1=NULL,*ptr2=NULL;charfilename1[10];/*定义字符数组,用来存放文件名*/charfilename2[]={.dat};/*文件扩展名.dat*//*输入模块*/COM*input(){charstring1[]={number};charstring2[]={name};charstring3[]={count};intn=1;if((ptr1=(COM*)malloc(LEN))==NULL)/*申请空间函数*/{printf(Noenoughmemory,failtocreatlinklist!);getch();/*无回显的从键盘读取任意一个字符*/}clrscr();printf(Pleaseinputdependontheemply(goodsnumber==0over):\n);do{printf(PleaseinputtheNo.%dgoods'%s:\n,n,string1);scanf(%ld,&ptr1-num);flushall();if(ptr1-num==0){printf(PleasepressanykeytobacktolastMenu:);getch();free(ptr1);return(0);}printf(PleaseinputtheNo.%dgoods'%s:\n,n,string2);scanf(%s,&ptr1-name);flushall();/*刷新缓冲区函数*/printf(PleaseinputtheNo.%dgoods'%s:\n,n,string3);scanf(%d,&ptr1-count);flushall();if(CHECK_COUNT)printf(Pleaseinputtherightgoodscount!\n);}while(CHECK_COUNT);while(ptr1-num!=NULL){if(n==1)head=ptr1;elseptr2-next=ptr1;ptr1-prior=ptr2;n=n+1;ptr2=ptr1;if((ptr1=(COM*)malloc(LEN))==NULL){printf(Noenoughmemory,failtocreatlinklist!);getch();}do{printf(PleaseinputtheNo.%dgoods'%s:\n,n,string1);scanf(%ld,&ptr1-num);flushall();if(ptr1-num==0){ptr1-num=NULL;break;}printf(PleaseinputtheNo.%dgoods'%s:\n,n,string2);scanf(%s,&ptr1-name);flushall();printf(PleaseinputtheNo.%dgoods'%s:\n,n,string3);scanf(%d,&ptr1-count);flushall();if(CHECK_COUNT)printf(Pleaseinputtherightgoodscount!\n);}while(CHECK_COUNT);}ptr2-next=NULL;gotoxy(1,24);printf(Finishtheinputtingofgoods'message,pressanykeytobacktolastMenu,pleasesave:);getch();return(head);}/*插入模块*/COM*insert(){COM*ptr3;charstring1[]={goodsnumber};charst
本文标题:java仓库管理系统
链接地址:https://www.777doc.com/doc-6496130 .html