数据结构课程设计仓库管理系统源程序参考模板Word下载.docx
《数据结构课程设计仓库管理系统源程序参考模板Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计仓库管理系统源程序参考模板Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
intmain()
{
intt=1,flag=1,f=1;
charn;
Node*p;
LinkKu;
while(t)
{
printf("
\n\n\n\n\n"
);
printf("
\n\t\t\t**********************************"
\n\t\t\t* XXX仓库管理系统 *"
\n\t\t\t*1---存储货物*"
\n\t\t\t*2---查询货物信息*"
\n\t\t\t*3---取出货物*"
\n\t\t\t*4---显示仓库内所有货物信息*"
\n\t\t\t*0---退出仓库管理系统*"
\n\t\t\t请选择菜单号(0--4):
"
f=1;
while(f==1)
{
cin>
>
n;
if(n<
'
0'
||n>
4'
)
{
printf("
输入有误,请重新输入(0--4):
f=1;
}
else
f=0;
}
\n\n"
switch(n)
case'
1'
:
**********************************\n"
*存储货物*\n"
//printf("
货物编号货物名称货物数量\n"
inta=1;
while(a==1)
{
a=Ku.Insert();
Ku.Fprintf();
//将单链表里的数据写入文件。
}
break;
2'
***********************************\n"
*查询货物信息*\n"
flag=1;
charyn;
while(flag==1)
p=Ku.Search();
if(p)
{
printf("
\n货物编号货物名称货物数量\n"
---------------------------\n"
%5s%9s%8d\n"
p->
data.no,p->
data.name,p->
data.count);
}
else
仓库中没有该货物!
\n"
printf("
是否继续查询?
(y/n):
yn=Ku.Yn();
if(yn=='
y'
||yn=='
Y'
flag=1;
n'
N'
flag=0;
3'
*取出货物*\n"
Ku.Delete();
是否继续取货?
//调用输入y/n函数
Ku.show();
确定退出仓库管理系统吗?
yn=Ku.Yn();
if(yn=='
谢谢使用...\n"
t=0;
t=1;
}
return0;
}
Link:
Link()
first=newNode;
first->
next=NULL;
real=first;
FILE*fp=NULL;
fp=fopen("
d:
\\file01.txt"
"
a"
fclose(fp);
//Fprintf();
Fscanf();
intLink:
Insert()
charyn;
charno[10],name[30];
intcount,t;
\n货物编号货物名称(30)货物数量(5)\n"
-----------------------------------------------\n"
\n请输入货物编号(10个字符以内):
strcpy(no,No());
\n输入货物名称(30个字符以内):
cin>
name;
t=1;
输入货物数量(整数):
"
cin>
count;
if(count<
=0)
t=1;
printf("
货物数量必须大于0,请重新"
else
t=0;
p=first;
real=first;
p=p->
next;
while(p)
if(strcmp(p->
data.no,no)==0&
&
strcmp(p->
data.name,name)==0)
//printf("
仓库中已有该货物%d件\n"
p->
data.count=p->
data.count+count;
添加成功!
仓库中现有该货物%d件\n是否继续存货?
yn=Yn();
if(yn=='
)return1;
)return0;
data.name,name)!
该货物的名称输入有误,应为%s\n请重新输入(y)或取消存货(n):
data.name);
data.no,no)!
=0&
该货物的编号输入有误,应为%s\n请重新输入(y)或取消存货(n):
data.no);
real=p;
p=p->
if(p==NULL)
Node*s=newNode;
strcpy(s->
data.no,no);
data.name,name);
s->
data.count=count;
real->
next=s;
real=s;
real->
yn=Yn();
if(yn=='
Node*Link:
Search()
charab;
intf;
==================\n"
a.按货物编号查询\n"
b.按货物名称查询\n"
请选择(a/b):
f=1;
while(f==1)
ab;
if(ab=='
a'
||ab=='
A'
b'
B'
f=0;
if(ab=='
\n请输入货物编号(10个字符内):
strcpy(no,No());
while(p&
p=p->
\n请输入货物名称(30个字符内):
cin>
f=1;
输入有误,请重新输入(a/b):
returnp;
voidLink:
Delete()
Node*q,*p;
p=Search();
else
\n仓库中有该货物%d件。
intflag=1;
while(flag==1)
\n请输入要取出的货物数量(整数):
while(t==1)
if(count<
0)
取货数量不能为负数,请重新输入取货数量(整数):
else
if(count>
p->
data.count)
{
\n输入的取货数量超过库存,是否要重新输入取货数量?
yn=Yn();
)flag=1;
)flag=0;
flag=0;
p->
data.count-count;
Fprintf();
//修改文件里的数据。
\n取货成功!
仓库中还有该货物%d件\n"
\n是否继续取出该货物?
yn=Yn();
q=first;
while(q!
=NULL&
q->
next!
=p)
q=q->
q->
next=p->
deletep;
该货物已被全部取出!
show()
if(first->
next==NULL)
仓库内没有货物!
货物编号货物名称货物数量\n"
-----------------------------------------------------------------------------\n"
p=first->
while(p)
%15s%23s%23d\n"
p=p->
charLink:
Yn()
intf=1;
yn;
returnyn;
输入有误,请重新输入(y/n):
char*Link:
No()
intt=1,i;
char*no=NULL,no1[10];
t=0;
no1;
no=no1;
for(i=0;
no[i];
i++)
if(no[i]<
||no[i]>
9'
t=1;
货物编号只能由0-9的字符组成,请重新输入货物编号(10个字符内):
returnno1;
Fprintf()
w"
p=first->
while(p!
=NULL)
fprintf(fp,"
%10s%30s%10d\n"
Fscanf()
Node*s;
r"
if(fp==NULL)
cout<
<
不能打开文件!
endl;
exit(0);
while(feof(fp)==0)
s=newNode;
fscanf(fp,"
%s%s%d\n"
s->
data.no,s->
data.name,&
s->
if(s->
data.count>
p=s;
p->
---精心整理,希望对您有所帮助