使用java仓库管理系统设计.docx

上传人:b****7 文档编号:9155467 上传时间:2023-02-03 格式:DOCX 页数:29 大小:130.96KB
下载 相关 举报
使用java仓库管理系统设计.docx_第1页
第1页 / 共29页
使用java仓库管理系统设计.docx_第2页
第2页 / 共29页
使用java仓库管理系统设计.docx_第3页
第3页 / 共29页
使用java仓库管理系统设计.docx_第4页
第4页 / 共29页
使用java仓库管理系统设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

使用java仓库管理系统设计.docx

《使用java仓库管理系统设计.docx》由会员分享,可在线阅读,更多相关《使用java仓库管理系统设计.docx(29页珍藏版)》请在冰豆网上搜索。

使用java仓库管理系统设计.docx

使用java仓库管理系统设计

 

使用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)输入模块

N

Y

N

Y

N

Y

Y

(2)插入模块

N

Y

N

Y

(3)保存模块

N

Y

N

Y

 

(4)输出模块

 

Y

 

Y

 

N

 

Y

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指向它,读入该结点数据,同样将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后移一个结点,再输入直至链表尾结点结束。

四、系统源代码

#include/*标准输入/输出头文件*/

#include/*包含绘制图形函数等头文件*/

#include/*包含字符串处理函数头文件*/

#include/*包含动态存储与释放函数头文件*/

#include

#defineLENsizeof(COM)

#definePRINT"%-15ld%-15s%-15d\n",ptr1->num,ptr1->name,ptr1->count

#defineCHECK_COUNTptr1->count<0

#defineCHECK_COUNT2ptr3->count<0

#defineNULL0

typedefstructcom

{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"};

charstring2[]={"goodsname"};

charstring3[]={"goodscount"};

charjudge[10];

clrscr();

gotoxy(18,10);

printf("Pleaseinputinsertedgoods'fliename:

");

head=openfile();

if(head==NULL)

return(NULL);

else

do

{clrscr();

printf("Pleaseinputinsertedgoods'goodsmessage:

\n");

if((ptr3=(COM*)malloc(LEN))==NULL)

{printf("Noenoughmemory,failtocreatnode!

");

getch();

}

do

{printf("Pleaseinputgoods'%s(>0):

\n",string1);scanf("%ld",&ptr3->num);

flushall();

if(ptr3->num<=0)

{printf("Errorinputting!

pleasechoosetheinsertedgoodsagain\n");

getch();return;

}

printf("Pleaseinputgoods'%s:

\n",string2);scanf("%s",&ptr3->name);flushall();

printf("Pleaseinputgoods'%s:

\n",string3);scanf("%d",&(ptr3->count));flushall();

if(CHECK_COUNT2)

printf("Pleaseinputtherightgoodscount(>0)!

\n");

}while(CHECK_COUNT2);

ptr1=head;

while(ptr1!

=NULL)

{ptr2=ptr1;

ptr1=ptr1->next;

ptr1->prior=ptr2;

}

ptr2->next=ptr3;

ptr3->prior=ptr2;

ptr3->next=NULL;

printf("\nInsertingsuccess!

Cotinuetoinsert?

(yesorno):

");

scanf("%s",judge);

clrscr();

}while(!

strcmp(judge,"yes"));

gotoxy(20,10);

printf("Insertingsuccess!

\n");

gotoxy(18,11);

printf("PressanykeytobacktolastMenu\n");

gotoxy(16,12);

printf("AndmakesuretoSave(6)themoryouwilllosethem!

\n");

getch();

return(head);

}

/*删除模块*/

COM*delet()

{charname[10];

charjudge[10];

intsel;

intdel_num;

clrscr();

gotoxy(20,10);

printf("Pleaseinputdelectedgoods'fliename:

");

head=openfile();

clrscr();

if(head==NULL)

return(NULL);

else

do

{do

{clrscr();

gotoxy(3,4);

printf("Pleaseinputdelectedgoods'message:

");

gotoxy(1,9);

printf("*1.Deldependongoodsnumber\n");

gotoxy(1,10);

printf("*2.Deldependongoodsname\n");

gotoxy(10,22);

printf("pleasechooseanumberbetween1and2:

");

scanf("%d",&sel);

switch(sel)

{case1:

clrscr();

gotoxy(6,6);

printf("Pleaseinputgoodsnumber:

");

scanf("%d",&del_num);

break;

case2:

clrscr();

gotoxy(6,6);

printf("Pleaseinputgoodsname:

");

scanf("%s",&name);

break;

}

}while(sel!

=1&&sel!

=2);

ptr1=head;

if(ptr1->num==del_num||(strcmp(ptr1->name,name)==0))

{head=ptr1->next;

printf("Successtodelectgoodsmessage!

\n");

}

else/*判断是否是目标结点*/

{while(ptr1!

=NULL&&ptr1->num!

=del_num&&strcmp(ptr1->name,name)!

=0)

{ptr2=ptr1;

ptr1=ptr1->next;

ptr1->prior=ptr2;

}

if(ptr1->num==del_num||(strcmp(ptr1->name,name)==0))

{ptr2->next=ptr1->next;

ptr1->next->prior=ptr1->prior;

free(ptr1);

printf("\nSuccesstodelectgoodsmessage!

\n\n");

}

elseprintf("\nCan'tfindthisgoodsmessage!

\n\n");

}

printf("Cotinuetodelect?

(yesorno):

");

scanf("%s",judge);

}while(!

strcmp(judge,"yes"));

clrscr();

gotoxy(20,10);

printf("Delectingsuccess!

\n");

gotoxy(18,11);

printf("PressanykeytobacktolastMenu\n");

gotoxy(16,12);

printf("AndmakesuretoSave(6)themoryouwilllosethem!

\n");

getch();

return(head);

}

/*查找模块*/

voidsearch()

{charname[10];

charjudge[10];

intsel;

longintsel_num;

clrscr();

gotoxy(18,10);

printf("Pleasepresssearchedgoods'fliename:

");

head=openfile();

if(head==NULL)

return;

else

do

{do

{clrscr();

gotoxy(5,4);

printf("Pleasechoosethewaytosearch:

");

gotoxy(1,9);

printf("*1.Searchdependongoodsnumber\n");

printf("*1.Searchdependongoodsname\n");

gotoxy(10,22);

printf("pleasechooseanumberbetween1and2:

");

scanf("%d",&sel);

switch(sel)

{case1:

clrscr();

printf("Pleaseinputgoodsnumber:

");

scanf("%ld",&sel_num);

break;

case2:

clrscr();

printf("Pleaseinputgoodsname:

");

scanf("%s",name);

break;

}

}while(sel!

=1&&sel!

=2);

ptr1=head;

while(ptr1!

=NULL&&ptr1->num!

=sel_num&&strcmp(ptr1->name,name)!

=0)

ptr1=ptr1->next;

if((ptr1->num==sel_num)||(strcmp(ptr1->name,name)==0))

{printf("\nSuccesstosearchgoodsmessage!

\n");

printf("goodsnumbergoodsnamegoodscount\n\n");

printf(PRINT);

}

else

printf("\nCan'tfindthisgoodsmessage!

\n\n");

printf("Cotinuetosearch?

(yesorno):

");

scanf("%s",judge);

}while(!

strcmp(judge,"yes"));

gotoxy(10,24);

printf("PleasepressanykeytobacktolastMenu:

");

getch();

}

/*输出模块*/

voidprint()

{inti=1;

clrscr();

gotoxy(18,10);

printf("Pleaseinputprintedgoods'filename:

");

head=openfile();

if(head==NULL)

return;

else

clrscr();

printf("Theprintedresultasfollows:

\n");

printf("goodsnumbergoodsnamegoodscount\n\n");

ptr1=head;

do

{printf(PRINT);

ptr1=ptr1->next;

if(i/10==1)/*超过十行换页*/

{i=0;

printf("Pressanykeytochangepage:

");

getch();

clrscr();

gotoxy(0,6);

printf("goodsnumbergoodsnamegoodscount\n\n");

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1