链表的维护(家电营业系统)

news/2024/11/29 20:38:47/

读入文件List.txt:

名称     品牌     价格     数量
phone     huawei     2000.000000     35
clothes     supreme     900.000000     8
shoes     lining     800.000000     10
fan     haier     500.000000     5 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 15
typedef struct product
{char name[N];char brand[N];int amount;double price;struct product *next;
}PRO;
/*生成一个新的节点,并为该节点赋初值,返回指向新节点的指针*/
PRO *Createnode()
{PRO *p;p=(PRO *)malloc(sizeof(PRO));if(p==NULL){printf("NO enough memory!\n");exit(0);}p->next=NULL;strcpy(p->name," ");strcpy(p->brand," ");p->amount =0;p->price=1;return p;
}
void Insertdata(PRO *head)//用于进货,同时考虑到进同一商品的问题
{PRO *p = head,*s = head,*q;p = Createnode();printf("请输入进货的名称、品牌、价格和数量:\n");scanf("%s %s %lf %d",p->name,p->brand,&p->price,&p->amount);if(head->next ==NULL){head->next = p;}else{while((p->price)<(s->next->price)){s=s->next;if(s->next==NULL){break;}}if(s->next !=NULL){if(strcmp(p->name,s->next->name)==0&&strcmp(p->brand,s->next->brand)==0){s->next->amount+=p->amount;}else{q = s->next;s->next = p;p->next = q;}}else{s->next = p;p->next = NULL;}}
}
void Deletedata(PRO *head)//用于提货,同时考虑到库存不够的问题
{PRO *q = head,*p = head,*s,*r;p = Createnode();printf("请输入取货的名称、品牌、价格、数量:\n");scanf("%s %s %lf %d",p->name,p->brand,&p->price,&p->amount);if(head->next==NULL){printf("暂无库存!\n");}else{while(strcmp(q->next->brand,p->brand)!=0||strcmp(q->next->name,p->name)!=0){q = q->next;if(q->next ==NULL){break;}}if(q->next !=NULL){if(q->next->amount == p->amount){if(q->next->next==NULL){s = q->next;q->next=NULL;free(s);}else{s = q->next->next;r = q->next;q->next = s;free(r);}}else{if(q->next->amount <p->amount)printf("库存不够!请重新选择操作!\n\n");elseq->next->amount -=p->amount;}}else{if(p->amount==q->amount){free(q);}elseq->amount -=p->amount;}}
}
void Printdata(PRO *head)//打印库存商品信息
{PRO *p=head->next;printf("名称\t品牌\t单价\t\t数量:\n");while(p!=NULL){printf("%s\t%s\t%lf\t%d\n",p->name,p->brand,p->price,p->amount);p = p->next;}printf("\n\n");
}
void Updatedata(PRO *head)
{PRO *p,*q=head,*s;p = Createnode();printf("请输入变动产品的名称、品牌、现价和数量:\n");scanf("%s %s %lf %d",p->name,p->brand,&p->price,&p->amount);while(strcmp(q->next->brand,p->brand)!=0||strcmp(q->next->name,p->name)!=0){q=q->next;}if(q->next->next==NULL){s = q->next;q->next = p;p->next = NULL;free(s);}else{s = q->next;p->next = s->next;q->next = p;free(s);}
}
int Menu()
{int x;printf("家电营业系统:\n");printf("1.营业开始\n");printf("2.进货\n");printf("3.提货\n");printf("4.更新信息\n");printf("5.查询信息\n");printf("6.退出系统\n\n");printf("请选择你要执行的操作:\n");scanf("%d",&x);return x;
}
void Readfile(PRO *head)//从List.txt中读入数据
{FILE *fp;PRO *p=head,*q;q=Createnode();char name[N],brand[N];int price=0,amount=0;fp=fopen("List.txt","r");if(fp==NULL){printf("读取文件List.txt失败!\n");exit(0);}fseek(fp,22,0);while(fscanf(fp,"%s",q->name)!=EOF){fscanf(fp,"%s",q->brand);fscanf(fp,"%lf",&q->price);fscanf(fp,"%d\n",&q->amount);p->next=q;p=q;q=Createnode();}p->next=NULL;fclose(fp);
}
int Savefile(PRO *head)//保存数据
{FILE *fp;PRO *p=head->next;fp=fopen("List.txt","w");if(fp==NULL){printf("写入文件List.txt失败!\n");return -1;}fprintf(fp,"名称\t 品牌\t 价格\t 数量\n");while(p!=NULL){fprintf(fp,"%s\t %s\t %lf\t %d\n",p->name,p->brand,p->price,p->amount);p=p->next;}fprintf(fp,"\n");fclose(fp);return 0;
}
void Createlist(PRO *head)
{Readfile(head);printf("营业开始,请继续选择需要执行的操作:\n");
}
int main()
{PRO *head;char ch;head=Createnode();printf("注意:首次进入系统必须选择1号!\n");while(1){ch = Menu();switch(ch){case 1:Createlist(head);break;case 2:Insertdata(head);break;case 3:Deletedata(head);break;case 4:Updatedata(head);break;case 5:Printdata(head);break;case 6:printf("营业结束!数据已保存至文件!");Savefile(head);exit(0);default:printf("请输入正确序号!\n");}}return 0;
}

 


http://www.ppmy.cn/news/363349.html

相关文章

2021-2025年中国家用电器行业市场供需与战略研究报告

家用电器市场的企业竞争态势 该报告涉及的主要国际市场参与者有Bosch、Electrolux、General Electric、Gree Electric、Haier、Hitachi、LG Electronics、Panasonic、Samsung Electronics、Sharp Corporation、Siemens、Tiger、Toshiba Corporation、V-Guard、Whirlpool等。这些…

家用电器行业数智化供应链系统:高效整合供应链,提升家电企业核心竞争力

近些年&#xff0c;家电企业大多陷入到存量市场的搏杀&#xff0c;疫情的冲击、房市的低迷、原材料的上涨以及裁员降薪的浪潮更是让整个家电行业雪上加霜&#xff0c;在大环境困顿之下&#xff0c;有部分家电企业另辟蹊径&#xff0c;把眼光放在了供应链上。但如何通过供应链的…

华为OD机试真题 JavaScript 实现【寻找密码】【2023Q1 100分】,附详细解题思路

一、题目描述 小王在进行游戏大闯关&#xff0c;有一个关卡需要输入一个密码才能通过&#xff0c;密码获得的条件如下&#xff1a; 在一个密码本中&#xff0c;每一页都有一个由 26 个小写字母组成的若干位密码&#xff0c;从它的末尾开始依次去掉一位得到的新密码也在密码本…

LabVIEW中英文虚拟键盘源程序 可输入数字、字母、汉字,能在 XP系统和Win7系统下检测并切换电脑里安装的输入法

LabVIEW中英文虚拟键盘源程序 可输入数字、字母、汉字&#xff0c;能在 XP系统和Win7系统下检测并切换电脑里安装的输入法。 在使用触摸屏电脑的时候可方便的输入所需内容。 有些输入法不同版本对应的编号不一样&#xff0c;可在程序里查看、修改界面显示的输入法名称。 YID:6…

#转行JAVA# i18n文件打开乱码

修改前&#xff1a; 改idea设置 解决完&#xff1a;

XP日文输入法IME/文件打包下载

WINXP的日语输入法不正常的解决方法及相关文件下载 问题&#xff1a;如果你的WINXP的日语输入法不正常&#xff1a;安装好微软自带的输入法后,只能输入英文无法输入日文,也是只见光标在闪怎么按罗马音敲键盘就是没反映, 问题分析&#xff1a; 这时请检查你自己的X:/WINDOWS/ime…

手机打开PDF文档中文英文支持(乱码问题)解决攻略

手机打开PDF文档中文英文支持&#xff08;乱码问题&#xff09;解决攻略 参考文章&#xff1a; &#xff08;1&#xff09;手机打开PDF文档中文英文支持&#xff08;乱码问题&#xff09;解决攻略 &#xff08;2&#xff09;https://www.cnblogs.com/Seachal/p/5205502.html …