删除货物信息C语言程序,c语言仓库货物信息管理系统

#include#include//头文件

#includetypedef struct information//定义结构体

{

int number;

char name[100];

float price;

int count;

struct information *next;

}inf;

inf *head;

inf *found() //创建信息

{

int n;

inf *p=NULL,*pre=NULL; //定义指针变量

pre=head=(inf *)malloc(sizeof(inf)); //申请内存

while(1)

{

p=(inf*)malloc(sizeof (inf));

printf("输入货物的编号、名称、价格、数量:\n");

printf("编号:");

scanf("%d",&p->number);

printf("名称:");

scanf("%s",&p->name);

printf("价格:");

scanf("%f",&p->price);

printf("数量:");

scanf("%d",&p->count);

printf("\n");

pre->next=p;

pre=p;

printf("============================================\n");

printf("是否退出创建货物信息 退出:输1 继续: 输2\n");

scanf("%d",&n);

if(n==1)

{

pre->next=NULL;

p=NULL;

return head;

}

printf("\n");

if(n>2)

{

printf("输入错误!\n");

system("pause");

}

}

pre->next=NULL;

free(p);

p=NULL;

return head;

}

void baocun(inf *head) //保存信息

{

int h=0;

inf *p=NULL;

FILE *fp;

p=head->next;

if(p==NULL)

{

printf("头结点创建失败!");

}

else

{

p=head->next;

if((fp=fopen("货物信息.txt","w"))==NULL) //打开‘货物信息.txt’文件

{

printf("不能打开这个文件\n");

exit(0);

}

fprintf(fp,"编号:%d\t名称:%s\t价格:%f\t数量:%d\n",p->number,p->name,p->price,p->count);//读取信息

while(p!=NULL)

{

fprintf(fp,"编号:%d\t",p->number);

fprintf(fp,"名称:%s\t",p->name); //输出信息

fprintf(fp,"价格:%f\t",p->price);

fprintf(fp,"数量:%d\n",p->count);

p=p->next;

h++; //记录信息数

}

printf("保存成功一共%d个货物!\n",h);

fclose(fp);

}

}

void find(inf *head) //查询信息

{

inf *p=NULL;

int d,n;

int number1;

char name1[100];

printf("\t\t 请选择方式查找 \n");

printf("\t\t 1.通过编号查找 2.通过名称查找\n"); //查询方式

p=head->next;

if(p==NULL)

{

printf("没有货物信息,请先保存货物信息!\n");

}

printf("===========================\n");

printf("请输入要选择的内容 1 或 2 \n");

scanf("%d",&n);

switch(n)

{

case 1:

printf("请输入要查找的货物的编号:\n");

scanf("%d",&number1);

while(p!=NULL)

{

if(number1==p->number)

{

printf("货物的编号、名称、价格、数量是:\n");

printf("编号=%d\n",p->number);

printf("名称=%s\n",p->name);

printf("价格=%f\n",p->price);

printf("数量=%d\n",p->count);

break;

}

printf("\n");

p=p->next;

}

printf("对编号的查找成功!\n");

break;

case 2:

printf("请输入要查找的货物名称:\n");

scanf("%s",&name1);

while(p!=NULL)

{

if(strcmp(p->name,name1)==0)

{

printf("货物的编号、名称、价格、数量是:\n");

printf("编号=%d\n",p->number);

printf("名称=%s\n",p->name);

printf("价格=%f\n",p->price);

printf("数量=%d\n",p->count);

break;

}

printf("\n");

p=p->next;

}

printf("对名称的查找成功!\n");

break;

default:printf("查找有错误!\n");

}

}

void tianjia (inf *head) //添加信息

{

inf *p=NULL,*p1=NULL;

p=head;

while(p->next!=NULL)

{

p=p->next;

}

p1=(inf*)malloc(sizeof(inf));

printf("请输入你所想添加的信息:\n");

printf("编号:");

scanf("%d",&p1->number);

printf("名称:");

scanf("%s",&p1->name);

printf("价格:");

scanf("%f",&p1->price);

printf("数量:");

scanf("%d",&p1->count);

p->next=p1;

p1->next=NULL;

baocun(head);

}

void xiugai(inf *head) //修改信息

{

inf *p=NULL;

int b;

int number2;

char name2[100];

float price2;

int count2;

p=head->next;

if(p==NULL)

{

printf("没有货物信息,请先保存货物信息!\n");

}

printf("\t\t 请输入要修改的内容\n");

printf("\t\t 1.修改编号 2.修改名称\n");

printf("\t\t 3.修改价格 4.修改数量\n");

printf("请选择 \n");

scanf("%d",&b);

switch(b)

{

case 1 :

printf("请输入被修改的货物编号:\n");

scanf("%d",&number2);

while(p!=NULL)

{

if(number2==p->number)

{

printf("请输入新的编号:\n");

scanf("%d",&p->number);

break;

}

p=p->next;

}

printf("对编号的修改成功!\n");

break;

case 2 :

printf("请输入被修改的名称:\n");

scanf("%s",&name2);

while(p!=NULL)

{

if(strcmp(p->name,name2)==0)

{

printf("请输入新的名称:\n");

scanf("%s",&p->name);

break;

}

p=p->next;

}

printf("对名称的修改成功!\n");

break;

case 3 :

printf("请输入被修改的价格:\n");

scanf("%f",&price2);

while(p!=NULL)

{

if(price2==p->price)

{

printf("请输入新的价格:\n");

scanf("%f",&p->price);

break;

}

p=p->next;

}

printf("对价格的修改成功!\n");

break;

case 4 :

printf("请输入被修改的数量:\n");

scanf("%d",&count2);

while(p!=NULL)

{

if(count2==p->count)

{

printf("请输入新的数量:\n");

scanf("%d",&p->count);

break;

}

p=p->next;

}

printf("对数量的修改成功!\n");

break;

default:printf("修改内容有错误!\n");

}

printf("\n");

}

void shanchu(inf *head) //删除信息

{

int k;

inf *p=NULL,*pr=NULL;

char name4[100];

int number4;

p=pr=head->next;

printf("\t\t 1.按编号删除 2.按名称删除\n");

printf("请选择 :\n");

scanf("%d",&k);

switch(k)

{

case 1:

{

printf("请输入要删除的货物的编号:\n");

scanf("%d",&number4);

break;

}

case 2:

{

printf("请输入要删除的货物的名称:\n");

scanf("%s",&name4);

break;

}

}

while(p!=NULL)

{

if(number4==p->number)

{

pr->next=p->next;

free(p);

p=NULL;

break;

}

if(strcmp(p->name,name4)==0)//比较

{

pr->next=p->next;

free(p);

p=NULL;

break;

}

pr=p;

p=p->next;

}

printf("删除成功!\n");

}

void output(inf *head) //显示信息

{

inf *p=NULL;

p=head->next;

while(p!=NULL)

{

printf("__________________________________________\n");

printf("|编号\t|名称\t|价格\t\t|数量\t |\n");

printf("|========================================|\n");

printf("|%d\t|%s\t|%f\t|%d\t |\n",p->number, p->name,p->price,p->count);

printf("|_______|_______|_______________|________|\n");

p=p->next;

}

}

void menu1()//页面

{

system("color 3E");

printf("\t\t****************************************\n");

printf("\t\t\t欢迎进入货物信息管理系统\n");

printf("\t\t****************************************\n");

printf("\n");

printf("\t\t按enter键继续!\n");

}

void menu2()//目录

{

system("color 3E");

printf("\t\t|----------------------------------------------------|\n");

printf("\t\t|______________________基本信息______________________|\n");

printf("\t\t| 1.创建货物信息 | 2.保存货物信息 |\n");

printf("\t\t| 3.查找货物信息 | 4.修改货物信息 |\n");

printf("\t\t| 5.删除货物信息 | 6.输出货物信息 |\n");

printf("\t\t| 7.退出系统 | 8.添加货物信息 |\n");

printf("\t\t|_________________________|__________________________|");

printf("\n\t\t\t请输入你的选项(1---8):\n");

}

inf *read()

{

FILE *fp;

inf *head,*q,*p;

if((fp=fopen("货物信息.txt","r")) == NULL) //打开文件

{

printf("不能打开文件!\n");

}

head=(inf *)malloc(sizeof(inf)); //申请空间

head->next=NULL;

p=(inf *)malloc(sizeof(inf));

int m=0;

while(fread(p,sizeof(inf),1,fp)==1) //读取文件信息

{

m=m+1;

p->next=NULL;

printf("编号:%d\t名称:%s\t价格%f\t数量:%d\t\n",p->number, p->name,p->price,p->count);

getchar();

if(m==1)

{

head->next=p;

}

else

{

q->next=p;

}

q=p;

p=(inf *)malloc(sizeof(inf));

}

fclose(fp);

return head;

}

int main()

{

FILE *fp;

int n,m;

menu1();

getchar();

if((fp=fopen("货物信息.txt","r"))!=NULL)

{

head=read();

}

else

{

printf("文件中没有保存货物信息!\n");

}

while(1)

{

system("cls");

menu2();

scanf("%d",&n);

switch(n)

{

case 1 :

head=found();break;

case 2 :

baocun(head);break;

case 3 :

find(head);break;

case 4 :

xiugai(head);output(head);break;

case 5 :

shanchu(head);break;

case 6 :

output(head);break;

case 7:break;

case 8:tianjia(head);break;

default:

printf("选择功能错误!\n");

}

printf("\n");

printf("************************************************************\n");

printf("是否继续对该货物信息的操作,如果继续操作 输:1 退出输: 2 \n");

printf("-—————————————————————————————-\n");

scanf("%d",&m);

getchar();

if(m==2)

{

break;

}

}

return 0;

}

1、 主界面的显示

1

1292118690191450112.htm

2

1292118690191450112.htm

2、 创建信息的执行

1292118690191450112.htm

1292118690191450112.htm

3、 保存信息的执行

保存:

1292118690191450112.htm

输出:

1292118690191450112.htm

4、 查找函数的执行

1.按编号:

1292118690191450112.htm

2.按名称:

1292118690191450112.htm

5、 修改函数的执行

1.修改编号

1292118690191450112.htm

2.修改名称

1292118690191450112.htm

3.修改价格

1292118690191450112.htm

4.修改数量

1292118690191450112.htm

保存

1292118690191450112.htm

显示

1292118690191450112.htm

6、 删除信息的执行

1.编号删除

1292118690191450112.htm

显示

1292118690191450112.htm

2、按名称删除

1292118690191450112.htm

显示

1292118690191450112.htm

保存

1292118690191450112.htm

7、添加函数的执行

1292118690191450112.htm

显示

1292118690191450112.htm

8、输出函数的执行

1292118690191450112.htm

9、退出

1292118690191450112.htm

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值