使用java仓库管理系统设计Word文档格式.docx
- 文档编号:22291571
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:130.96KB
使用java仓库管理系统设计Word文档格式.docx
《使用java仓库管理系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《使用java仓库管理系统设计Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
三、系统详细设计
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
Y
Y
(2)插入模块
(3)保存模块
(4)输出模块
Y
对以上各模块文字解释说明:
(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<
stdio.h>
/*标准输入/输出头文件*/
conio.h>
/*包含绘制图形函数等头文件*/
string.h>
/*包含字符串处理函数头文件*/
stdlib.h>
/*包含动态存储与释放函数头文件*/
graphics.h>
#defineLENsizeof(COM)
#definePRINT"
%-15ld%-15s%-15d\n"
ptr1->
num,ptr1->
name,ptr1->
count
#defineCHECK_COUNTptr1->
count<
#defineCHECK_COUNT2ptr3->
#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*/
/*输入模块*/
{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
PleaseinputtheNo.%dgoods'
%s:
n,string1);
scanf("
%ld"
&
ptr1->
num);
flushall();
if(ptr1->
num==0)
PleasepressanykeytobacktolastMenu:
free(ptr1);
return(0);
n,string2);
scanf("
%s"
name);
flushall();
/*刷新缓冲区函数*/
n,string3);
%d"
count);
if(CHECK_COUNT)
Pleaseinputtherightgoodscount!
}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("
{ptr1->
num=NULL;
break;
}
ptr2->
next=NULL;
gotoxy(1,24);
Finishtheinputtingofgoods'
message,pressanykeytobacktolastMenu,pleasesave:
getch();
return(head);
/*插入模块*/
COM*insert()
{COM*ptr3;
charstring1[]={"
goodsnumber"
goodsname"
goodscount"
charjudge[10];
gotoxy(18,10);
Pleaseinputinsertedgoods'
fliename:
head=openfile();
if(head==NULL)
return(NULL);
else
{clrscr();
goodsmessage:
if((ptr3=(COM*)malloc(LEN))==NULL)
Noenoughmemory,failtocreatnode!
Pleaseinputgoods'
%s(>
0):
string1);
ptr3->
if(ptr3->
num<
=0)
Errorinputting!
pleasechoosetheinsertedgoodsagain\n"
return;
string2);
flushall();
string3);
(ptr3->
count));
if(CHECK_COUNT2)
Pleaseinputtherightgoodscount(>
0)!
}while(CHECK_COUNT2);
ptr1=head;
while(ptr1!
{ptr2=ptr1;
ptr1=ptr1->
next;
ptr2->
next=ptr3;
ptr3->
\nInsertingsuccess!
Cotinuetoinsert?
(yesorno):
judge);
}while(!
strcmp(judge,"
yes"
));
gotoxy(20,10);
Insertingsuccess!
gotoxy(18,11);
PressanykeytobacktolastMenu\n"
gotoxy(16,12);
AndmakesuretoSave(6)themoryouwilllosethem!
/*删除模块*/
COM*delet()
{charname[10];
intsel;
intdel_num;
Pleaseinputdelectedgoods'
{do
gotoxy(3,4);
message:
gotoxy(1,9);
*1.Deldependongoodsnumber\n"
gotoxy(1,10);
*2.Deldependongoodsname\n"
gotoxy(10,22);
pleasechooseanumberbetween1and2:
sel);
switch(sel)
{case1:
clrscr();
gotoxy(6,6);
Pleaseinputgoodsnumber:
del_num);
case2:
Pleaseinputgoodsname:
}while(sel!
=1&
&
sel!
=2);
num==del_num||(strcmp(ptr1->
name,name)==0))
{head=ptr1->
Successtodelectgoodsmessage!
else/*判断是否是目标结点*/
{while(ptr1!
=NULL&
=del_num&
strcmp(ptr1->
name,name)!
{ptr2->
next=ptr1->
next->
prior=ptr1->
prior;
\nSuccesstodelectgoodsmessage!
\n\n"
elseprintf("
\nCan'
tfindthisgoodsmessage!
Cotinuetodelect?
strcmp(judge,"
Delectingsuccess!
/*查找模块*/
voidsearch()
{charname[10];
longintsel_num;
Pleasepresssearchedgoods'
return;
gotoxy(5,4);
Pleasechoosethewaytosearch:
*1.Searchdependongoodsnumber\n"
*1.Searchdependongoodsname\n"
sel_num);
name);
=sel_num&
if((ptr1->
num==sel_num)||(strcmp(ptr1->
\nSuccesstosearchgoodsmessage!
goodsnumbergoodsnamegoodscount\n\n"
printf(PRINT);
Cotinuetosearch?
gotoxy(10,24);
/*输出模块*/
voidprint()
{inti=1;
Pleaseinputprintedgoods'
filename:
Theprintedresultasfollows:
{printf(PRINT);
if(i/10==1)/*超过十行换页*/
{i=0;
Pressanykeytochangepage:
gotoxy(0,6);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 java 仓库 管理 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)