问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用动态链表完成一个简单的商品库存信息管理系统

发布网友 发布时间:2022-04-21 20:02

我来回答

1个回答

热心网友 时间:2023-08-14 07:25

#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct goods)
struct goods
{
int codeID;
char name[50];
int mount;
struct goods *next;
};
int n;
struct goods *createlist(void)
{
struct goods *head;
struct goods *p1,*p2;
n=0;
p1=p2=(struct goods*)malloc(LEN);
printf("\ninput codeID,name and mount:\n");
scanf("%ld %s %d",&p1->codeID,p1->name,&p1->mount);
head=NULL;
while (p1->codeID!=0)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct goods*)malloc(LEN);
printf("\ninput codeID,name and mount:\n");
scanf("%ld %s %d",&p1->codeID,p1->name,&p1->mount);
}
p2->next=NULL;
free(p1);
return head;
}
void list(struct goods *head)
{
struct goods *p;
p=head;
printf("\n codeID name mount \n");
while(p!=NULL)
{
printf("%ld %s %d",p->codeID,p->name,p->mount);
p=p->next; printf("\n");
}
printf("\n");
}

struct goods *del(struct goods *head,long codeID)
{
struct goods *p1,*p2;
if(head==NULL)
{
printf("\n list null!\n");return NULL;
p1=head;
while (codeID!=p1->codeID && p1->next!=NULL)
{
p2=p1;p1=p1->next;
}
if(p1==head) head=p1->next;
else
p2->next=p1->next;
free(p1);
printf("delete:%ld\n",codeID);
n=n-1;
}
else printf("%ld not been found!\n",codeID);
return head;
}

struct goods *destorylist(struct goods* head)
{
char word;
struct goods *p1,*p2;
p1=p2=head;
do
{
getchar();//用来接收菜单选择时的回车键
printf("\n Do you really want to destory the goods system y/n\n?");
scanf("%c",&word);//对于是否清空系统进行确认
}while(word!='y'&&word!='n');
if(word=='y')
{
if(p1)
do
{
p2=p1;
p1=p1->next;
free((void*)p2);
}while(p1);//清空系统并释放存储单元
printf("\n The goods system have been destoried!\n");
return NULL;
}
else printf("\n The operation of destory have been canceled.\n");
return head;
}

struct goods *sell(long codeID,int mount,struct goods*head)
{
struct goods *p1;
if(head==NULL)
{
printf("\nerror! the system is null!\n");
return NULL;
}//如果系统什么也没有就提示错误
for(p1=head;p1!=NULL;p1=p1->next)
if(p1->codeID==codeID) break;//找要卖的货物
if(p1)//如果找到了
{
if(p1->mount<mount)//如果货物不足就提示错误并且返回原样
{
printf("The count is too less!\n");
return head;
}
else p1->mount-=mount;//足够的话就卖出去
}
else printf("error! cannot find %ld's name\n",codeID);//找不到就提示
for(p1=head;p1!=NULL;p1=p1->next)
if(p1->mount==0) head=del(head,codeID);//查找货物为0的并把它的接点删掉
return head;
}

struct goods *stock(struct goods *head,struct goods *stu)
{
struct goods *p0,*p1,*p2;
p1=head;
p0=stu;
/*printf("input codeID and numbers:\n");
scanf("%ld %d",&p0->codeID,&p0->mount);*/

if(head==NULL)
{
head=p0;p0->next=NULL;
}

else
{
while ((p0->codeID!=p1->codeID)&&(p1!=NULL))
{
p2=p1;
p1=p1->next;
}
/*if(p0->codeID<=p1->codeID)
{
if(head==p1) head=p0;
else p2->next=p0;
p0->next=p1;
}*/
//else
if(p1==NULL)
{
p2->next=p0;p0->next=NULL;
}
else p1->mount=p1->mount+p0->mount;
}

return head;

}

void main()
{
int choose;
struct goods* head=NULL,*stu,*p0;//让head初始值为0
do//菜单选择
{
int codeID,mount;
printf("1. 输入商品信息\n2. 销售\n3. 进货\n4. 列举商品信息\n5. 清除所有商品\n6. 退出\n\n");
printf("input choose:\n");
scanf("%d",&choose);
if(choose==1)
head=createlist();
else if(choose==2)
{
printf("input codeID and mount:\n");
scanf("%ld %d",&codeID,&mount);
head=sell(codeID,mount,head);
}
else if(choose==3)
{

printf("input codeID and numbers:\n");
stu=(struct goods*) malloc(LEN);
p0=stu;
scanf("%ld %d",&p0->codeID,&p0->mount);
while(stu->codeID!=0)
{
head=stock(head,stu);
list(head);
printf("input codeID and numbers:\n");
stu=(struct goods*) malloc(LEN);
p0=stu;
scanf("%ld %d",&p0->codeID,&p0->mount);
}

}
else if(choose==4)
list(head);
else if(choose==5)
head=destorylist(head);
}
while(choose!=6);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
水笔在手上画画会不会被衣服搽掉下来 老人每天大便次数很多量不多也不稀,每天还会拉三四次水应经三个月了... 从大连飞机场怎么去大连经济开发区5彩城K区的大连金港大酒店 除了打 ... 请问从大连周水子国际机场到经济技术开发区怎么走最省钱? 中国古代名刀总录中国古代十大名刀 怎样把qq安装到iphone里面 苏科大什么梗 苏科大叫什么名字 lol苏科大是苏州科技大学的吗 lol苏州科技大学为什么这么厉害 优尔精医用降温贴是不是保健品? C语言课程设计,商品库存管理系统怎么做啊? 商品库存管理系统的c语言源代码 库存管理系统 库存管理系统有哪些? 便利店都用什么系统管理商品库存和价格 库存管理系统有哪些主要功能 想入手个100元以内的二手智能手机? 100元左右的智能手环,有什么推荐? 求100元内的智能手环推荐 求推荐一款一百元内的智能手机,二手也可。 智能手环100元内都有那些 那款智能手环好用?一百元以内的 100多元的智能手机,可打游戏就行了 什么智能手机100元以下 推荐小型智能手机,能耐用,一百~二百左右? 100元的手机哪个好?求推荐 什么智能手环便宜点,质量还可以的100元以下 想买个1100元以内的智能手机,不知道哪个品牌的哪... 1100元以下的智能手机有哪些?推荐一下 100元以下的智能手机推荐 用java编写的商品库存管理系统的设计思路以及源代... 怎么把库存录入erp系统? 什么是仓库管理系统? 求推荐一个商品库存管理软件 如何进行商品的库存管理? 电商仓库采购库存管理的系统办法有哪些 怎么做一个库存管理系统 进销存 库存 系统 有区别吗。软件领域有经验的来说... 汉代的重要音乐形式之一是 Java产品库存管理系统怎么做? 汉代重要的音乐形式之一是什么? 服装店应该如何进行库存管理? 汉代重要的音乐形式之一 要做一个商品库存管理系统,最好库存不多的时候能... 汉代主要音乐形式之一是什么 汉代最重要的音乐形式之一是什么曲 汉代重要的音乐形式之一是什么它最初的表演形式 汉代重要的音乐形式 邯郸中药的音乐形式之一是什么 汉代的一种由北方边境地区传入的音乐形式是什么?