数据结构课程设计仓库管理系统源程序.docx
《数据结构课程设计仓库管理系统源程序.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计仓库管理系统源程序.docx(15页珍藏版)》请在冰豆网上搜索。
![数据结构课程设计仓库管理系统源程序.docx](https://file1.bdocx.com/fileroot1/2022-11/18/6fc8de10-2873-4f87-96ed-f5147729fb27/6fc8de10-2873-4f87-96ed-f5147729fb271.gif)
数据结构课程设计仓库管理系统源程序
#include
usingnamespacestd;
typedefstruct{
charno[10];
charname[30];
intcount;
}DataType;
structNode{
DataTypedata;
Node*next;
};
classLink{
public:
Link();//构造函数,建立单链表
intInsert();//插入节点,即添加货物
Node*Search();//查找某个节点
voidDelete();//删除节点或更改节点的数据
voidshow();//输出节点信息
charYn();//输入(y/n)函数
char*No();//输入货物编号函数
voidFprintf();//将单链表数据写到文件中
voidFscanf();//读取文件中的数据
private:
Node*first,*real,*p,*q;
};
intmain()
{
intt=1,flag=1,f=1;
charn;
Node*p;
LinkKu;
while(t)
{
printf("\n\n\n\n\n");
printf("\n\t\t\t**********************************");
printf("\n\t\t\t* XXX仓库管理系统 *");
printf("\n\t\t\t*1---存储货物*");
printf("\n\t\t\t*2---查询货物信息*");
printf("\n\t\t\t*3---取出货物*");
printf("\n\t\t\t*4---显示仓库内所有货物信息*");
printf("\n\t\t\t*0---退出仓库管理系统*");
printf("\n\t\t\t**********************************");
printf("\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;
}
printf("\n\n");
switch(n)
{
case'1':
{
printf("**********************************\n");
printf("*存储货物*\n");
printf("**********************************\n");
//printf("货物编号货物名称货物数量\n");
//printf("**********************************\n");
inta=1;
while(a==1)
{
a=Ku.Insert();
Ku.Fprintf();//将单链表里的数据写入文件。
}
break;
}
case'2':
{
printf("***********************************\n");
printf("*查询货物信息*\n");
printf("***********************************\n");
flag=1;
charyn;
while(flag==1)
{
p=Ku.Search();
if(p)
{
printf("\n货物编号货物名称货物数量\n");
printf("---------------------------\n");
printf("%5s%9s%8d\n",p->data.no,p->data.name,p->data.count);
printf("---------------------------\n");
}
else
printf("仓库中没有该货物!
\n");
printf("是否继续查询?
(y/n):
");
yn=Ku.Yn();
if(yn=='y'||yn=='Y')
flag=1;
if(yn=='n'||yn=='N')
flag=0;
}
break;
}
case'3':
{
printf("***********************************\n");
printf("*取出货物*\n");
printf("***********************************\n");
flag=1;
charyn;
while(flag==1)
{
Ku.Delete();
printf("是否继续取货?
(y/n):
");
yn=Ku.Yn();//调用输入y/n函数
if(yn=='y'||yn=='Y')
flag=1;
if(yn=='n'||yn=='N')
flag=0;
}
break;
}
case'4':
{
Ku.show();
break;
}
case'0':
{
charyn;
printf("确定退出仓库管理系统吗?
(y/n):
");
yn=Ku.Yn();//调用输入y/n函数
if(yn=='y'||yn=='Y')
{
printf("谢谢使用...\n");
t=0;
}
if(yn=='n'||yn=='N')
{
t=1;
}
break;
}
}
}
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;
printf("\n货物编号货物名称(30)货物数量(5)\n");
printf("-----------------------------------------------\n");
printf("\n请输入货物编号(10个字符以内):
\n");
strcpy(no,No());
printf("\n输入货物名称(30个字符以内):
\n");
cin>>name;
t=1;
while(t)
{
printf("输入货物数量(整数):
");
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=p->data.count+count;
printf("添加成功!
仓库中现有该货物%d件\n是否继续存货?
(y/n):
",p->data.count);
yn=Yn();
if(yn=='y'||yn=='Y')return1;
if(yn=='n'||yn=='N')return0;
}
if(strcmp(p->data.no,no)==0&&strcmp(p->data.name,name)!
=0)
{
printf("该货物的名称输入有误,应为%s\n请重新输入(y)或取消存货(n):
",p->data.name);
yn=Yn();
if(yn=='y'||yn=='Y')return1;
if(yn=='n'||yn=='N')return0;
}
if(strcmp(p->data.no,no)!
=0&&strcmp(p->data.name,name)==0)
{
printf("该货物的编号输入有误,应为%s\n请重新输入(y)或取消存货(n):
",p->data.no);
yn=Yn();
if(yn=='y'||yn=='Y')return1;
if(yn=='n'||yn=='N')return0;
}
real=p;
p=p->next;
}
if(p==NULL)
{
Node*s=newNode;
strcpy(s->data.no,no);
strcpy(s->data.name,name);
s->data.count=count;
s->next=NULL;
real->next=s;
real=s;
printf("添加成功!
仓库中现有该货物%d件\n是否继续存货?
(y/n):
",real->data.count);
yn=Yn();
if(yn=='y'||yn=='Y')return1;
if(yn=='n'||yn=='N')return0;
}
return0;
}
Node*Link:
:
Search()
{
charab;
charno[10],name[30];
intf;
p=first;
printf("==================\n");
printf("a.按货物编号查询\n");
printf("b.按货物名称查询\n");
printf("==================\n");
printf("请选择(a/b):
");
f=1;
while(f==1)
{
cin>>ab;
if(ab=='a'||ab=='A'||ab=='b'||ab=='B')
{
f=0;
if(ab=='a'||ab=='A')
{
printf