资源描述
题目一 仓库管理系统
使用链表实现一个仓库管理系统,仓库商品的属性包括(商品编号,商品名称,商品数量),借助计算机来完成如下功能:
(1)入库:可以录入商品信息,包括:商品编号,商品名称,商品数量,商品价格;
(2)出库:可以删除一定数量的指定商品名称的商品,商品不够给出提示。
(3)修改:修改指定商品编号或者商品名称的价格。
(4)删除:可以删除指定商品编号、商品名称的商品记录。
(5)查询:可以查询所有商品信息;或指定商品编号、商品名称的商品信息。
(6)排序:可以根据价格或数量对商品进行排序,并显示排序结果。
#include <iostream>
#include<string>
using namespace std;
typedef struct LNODE //结点类型
{
string name;
int no;
int nu;
int price;
struct LNODE *next;
}LNODE, *LinkList;
int main_L()
{
printf("\n 仓库管理系统 \n\n");
printf(" 1.入库(录入商品信息)\n\n");
printf(" 2.出库(减少商品数量)\n\n");
printf(" 3.修改商品信息\n\n");
printf(" 4.删除商品信息\n\n");
printf(" 5.查询商品信息\n\n");
printf(" 6.排序(根据商品信息排序)\n\n");
printf(" 7.退出\n\n");
printf(" 请输入所要执行操作前编号:");
int n;
scanf("%d",&n);
return n;
}
LinkList CreateList_L(){
LinkList head, s, r;
int i,n;
head= NULL;
r=NULL;
printf("请输入所需录入商品的数目N=");
scanf("%d",&n);
printf("请依次输入商品信息(名称 编号 数量 价格):\n");
for (i = 0; i<n; i ++)
{
s = new LNODE;
string m;
int a,b,c;
cin>>m>>a>>b>>c;
s->name=m; s->no=a; s->nu=b; s->price=c;
if (head == NULL) head = s;
else r->next = s;
r = s;
}
r->next = NULL;
return head;
}
LinkList List_L(string m,int a,int b,int c){
LinkList head, s, r;
head= NULL;
r=NULL;
s = new LNODE;
s->name=m; s->no=a; s->nu=b; s->price=c;
if (head == NULL) head = s;
else r->next = s;
r = s;
r->next = NULL;
return head;
}
int AlterList_L(LinkList &h,int x)
{
LinkList p;
p=h;
while((p->next!=NULL)&&(p->no!=x)) p=p->next;
if(p->no==x)
{
printf("修改前商品信息(名称 编号 数量 价格):");
printf("%c %d %d %d\n",p->name,p->no,p->nu,p->price);
printf("请输入修改后商品信息(名称 编号 数量 价格):");
string m;
int a,b,c;
cin>>m>>a>>b>>c;
p->name=m; p->no=a; p->nu=b; p->price=c;
return 1;
}
else return 0;
}
int OutList_L(LinkList &h,int x)
{
LinkList p;
p=h;
while((p->next!=NULL)&&(p->no!=x)) p=p->next;
if(p->no==x)
{
printf("请输入出库的商品数目:");
int a;
cin>>a;
if(p->nu-a>=0) {p->nu=p->nu-a; return 1;}
else{ printf("\n商品数目不够\n"); return 0;}
}
else return 0;
}
int DeleList_L(LinkList &h,int x)
{
LinkList p, q;
p=h;
if(h==NULL)
return 1;
if(h->no==x)
{return 0;}
else
{
while((p->next!=NULL)&&(p->no!=x)){q=p;p=p->next;}
if(p->no==x){q->next=p->next;return 1;}
else{return 2;}
}
}
void ShowList_L1(LinkList &La)
{
printf("\n 商品信息表\n\n");
printf(" 名称 编号 数量 价格\n");
LinkList Lb;
Lb=La;
while(Lb!=NULL)
{
cout<<" "<<Lb->name<<" "<<Lb->no<<" "<<Lb->nu<<" "<<Lb->price<<endl;
Lb=Lb->next;
}
}
void ShowList_L2(LinkList &h,int x)
{
LinkList p;
p=h;
while((p->next!=NULL)&&(p->no!=x)) p=p->next;
if(p->no==x)
{
printf("\n该编号商品信息(名称 编号 数量 价格): ");
cout<<" "<<p->name<<" "<<p->no<<" "<<p->nu<<" "<<p->price<<endl;
}
else printf("商品编号输入有误\n");
}
LinkList SortList_L(LinkList &h)
{
LinkList p,q;
p=h;
for(;p->next!=NULL;p=p->next)
for(q=p->next;q!=NULL;q=q->next)
{
string m;
int x,y,z;
if(p->nu<=q->nu)
{m=p->name;p->name=q->name;q->name=m;
x=p->no;p->no=q->no;q->no=x;
y=p->nu;p->nu=q->nu;q->nu=y;
z=p->price;p->price=q->price;q->price=z;}
}
return h;
}
void function(LinkList &La,LinkList &Lb)
{
int n,m;
n=main_L();
if(n==1)
{
system("cls");
LinkList Lc;
Lc=CreateList_L();
Lb->next=Lc;
printf("\n数据录入成功\n");
printf("\n1.返回 2.退出\n\n");
printf("请输入所要执行操作前编号:");
int n;
scanf("%d",&n);
if(n==1){system("cls");function(La,Lb);}
else
{
exit(0);
system("exit");}
}
if(n==2)
{
system("cls");
printf("请输入所要出库商品编号:");
scanf("%d",&m);
if(OutList_L(La,m)) printf("\n商品出库成功\n");
printf("\n1.返回 2.退出\n\n");
printf("请输入所要执行操作前编号:");
int n;
scanf("%d",&n);
system("cls");
function(La,Lb);
}
if(n==3)
{
system("cls");
printf("请输入所要修改商品编号:");
scanf("%d",&m);
if(AlterList_L(La,m)) printf("数据修改成功\n");
else printf("商品编号输入有误\n");
printf("\n1.返回 2.退出\n\n");
printf("请输入所要执行操作前编号:");
int n;
scanf("%d",&n);
if(n==1){system("cls");function(La,Lb);}
else system("exit");
}
if(n==4)
{
system("cls");
printf("请输入所要删除商品编号:");
scanf("%d",&m);
if(DeleList_L(La,m)==2) printf("商品编号输入有误\n");
else printf("\n数据删除成功\n");
if(DeleList_L(La,m)==0) La=La->next;
printf("\n1.返回 2.退出\n\n");
printf("请输入所要执行操作前编号:");
int n;
scanf("%d",&n);
if(n==1){system("cls");function(La,Lb);}
else system("exit");
}
if(n==5)
{
system("cls");
printf("\n1.查询所有商品信息\n\n");
printf("\n2.查询指定编号商品信息\n\n");
printf("\n请输入所要执行操作前编号:");
int n;
scanf("%d",&n);
if(n==1) {system("cls");ShowList_L1(La);}
else
{
printf("\n请输入所要查询商品编号:");
scanf("%d",&n);
ShowList_L2(La,n);
}
printf("\n 1.返回 2.退出\n\n");
printf("请输入所要执行操作前编号:");
scanf("%d",&m);
if(m==1)
{system("cls");function(La,Lb);}
else system("exit");
}
if(n==6)
{
system("cls");
printf("\n根据商品数目由多到少排序\n\n");
La=SortList_L(La);
ShowList_L1(La);
printf("\n 1.返回 2.退出\n\n");
printf("请输入所要执行操作前编号:");
scanf("%d",&m);
if(m==1)
{system("cls");function(La,Lb);}
else system("exit");
}
}
int main()
{
LinkList La,Lb,Lc;
La=List_L("a1",1,20,30);
Lb=List_L("b2",2,35,18);
Lc=List_L("c3",3,15,28);
La->next=Lb;
Lb->next=Lc;
function(La,Lc);
return 0;
}
展开阅读全文