C语言实现超市管理系统
更新时间:2020年7月24日 15:42 点击:2127
本文实例为大家分享了C语言实现超市管理系统的具体代码,供大家参考,具体内容如下
超市管理系统
1.包括管理员和顾客
2.管理员有登入,录入商品信息,显示所有商品信息功能
3.顾客有购物车和结算功能
4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能
函数
void UpdateKu();//更新购物车信息函数 void calculate();//计算所购商品价格并修改保存int menu1();//打印主菜单函数 int menu2();//打印管理员菜单函数 int menu3();//打印顾客函数 void CreateGoods();//录入商品信息函数 void ShowGoods();//显示库存信息函数 void ShopCart();//对购物车进行操作 int ShopCartMenu();//打印购物车菜单 void ShowCart();//显示购物列表 void add();//在购物车里添加商品
建立库存函数
void CreateGoods() {//手动建立库存信息 FILE *fp;//定义文件指针 int i; printf("请输入需要录入的商品个数:\n"); scanf("%d",&n);//输入数量 printf("请依次输入货物信息:\n"); printf("--------------------------------------------\n"); for(i=0;i<n;i++) {//向文件中写入信息 printf("第%d个商品:\n",i+1); printf("货号:"); fflush(stdin);//清空输入流 gets(goods[i].ID);//输入货号 printf("品名:"); fflush(stdin);//清空输入流 gets(goods[i].brand);//输入品名 printf("进价: "); fflush(stdin);//清空输入流 scanf("%lf",&goods[i].inprice);//输入进价 printf("售价:"); fflush(stdin);//清空输入流 scanf("%lf",&goods[i].outprice);//输入售价 printf("数量:"); fflush(stdin);//清空输入流 scanf("%d",&goods[i].storage);//输入数量 printf("保质期:"); fflush(stdin);//清空输入流 gets(goods[i].date);//输入货号 printf("\n"); } if((fp=fopen("kucun.txt","w"))==NULL) {//判断文件是否创建失败 printf("创建文件失败。\n"); return ; } //fprintf(fp,"货号 品名 单价 库存量 保质期\n"); for(i=0;i<n;i++) {//把货物信息写进文件 fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-11d%-11s\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage,goods[i].date); } //fwrite(goods,sizeof(struct mar),N,cun);二进制文件输出 fclose(fp);//关闭文件 printf("信息导入成功\n"); return ; }
在购物车里添加商品
void add() {//在购物车里添加商品 FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件 struct node *p1,*p,*p2;//定义节点指针 int i,n;//n表示商品数量 char s[20];//表示货号或者品名 char choice1[20],choice2[20];//选择项(y继续,n继续) do{ printf("输入所需物品的名称或货号:\n"); fflush(stdin);//清空输入流 gets(s);//输入货号或者品名 if((fp=fopen("kucun.txt","r"))==NULL) {//打开文件 printf("打开文件失败\n"); continue; } for(i=0;i<N;i++) {//循环N次 fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//从文件中读取货物信息 if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找输入对应的商品 { printf("已找到所需商品:\n"); printf("--------------------------------------------\n"); printf("货号 品名 单价 数量\n"); printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage,goods[i].date);//输出所需物品信息 printf("请输入所需商品数量: "); scanf("%d",&n);//商品数量 if(n>goods[i].storage) {//判断是否还可以购买不 printf("该商品库存不足\n"); break; } printf("\n是否购买此商品?(Y/N)\n"); fflush(stdin);//清空输入流 scanf("%s",choice1);//输入一个选项 if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0) {//输入y/Y表示购买此商品 p=new node;//生成新节点 if(p==NULL) {//分配内存失败 printf("内存申请失败!\n"); exit(1);//退出 } p->number=n;//商品数量 p->buy=goods[i];//货物信息 p->next=NULL; p1=cart;//把头结点赋给p1 if(cart==NULL)//头结点为空 cart=p;//把节点赋值给头结点 else { while(p1->next!=NULL) p1=p1->next;//把链表循环到尾部 p->next=p1->next; p1->next=p;//把新节点p挂在链表尾部 } } else printf("输入错误\n"); break;//找到商品结束循环 } } if(i==N)//循环完毕还没找到对应商品 printf("未找到所需物品\n"); fclose(fp);//关闭文件 UpdateKu();//更新库存信息函数 printf("是否继续购物?(Y/N)\n"); fflush(stdin);//清空输入流 scanf("%s",choice2);//输入选项 if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0) printf("放弃购买,返回菜单!\n"); }while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y继续循环 return ; }
计算所购商品价格并修改保存
void calculate() {//计算所购商品价格并修改保存 struct node *p; p=cart;//把购物车(cart)链表赋给p double sum=0;//购买商品应付钱数 double pay;//购买商品实付钱数 FILE *fp;//定义文件指针 int i; printf("以下是购物清单:\n"); ShowCart();//调用函数显示购物列表信息 if((fp=fopen("kucun.txt","r"))==NULL) {//打开文件 printf("打开文件失败\n"); return ; } for(i=0;i<N;i++) {//从文件中读取信息 fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage); } fclose(fp);//关闭文件 while(p!=NULL) {//当链表不为空时 sum=sum+p->buy.outprice*p->number;//计算应付钱数 for(i=0;i<N;i++) {//找出对应商品库存量 if(strcmp(goods[i].ID,p->buy.ID)==0) {//找到对应商品 goods[i].storage=goods[i].storage-p->number;//库存量变化 break; } } p=p->next;//指向下一个节点 } printf("总计:%-8.3f\n",sum);//输出购买物品共需多少钱 printf("输入实付金额:"); scanf("%lf",&pay); printf("实付: %-8.3f 找零: %8.3f\n",pay,pay-sum); if((fp=fopen("kucun.txt","w"))==NULL) {//打开文件 printf("写入文件失败\n"); return ; } for(i=0;i<N;i++) {//向文件中写入信息 fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage); } fclose(fp);//关闭文件 return ; }
全部代码下载链接:点击前往下载链接
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
上一篇: 基于C++实现读取指定路径文件
下一篇: C语言实现学生信息管理系统(文件版)
相关文章
- 这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
- 本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下...2020-04-25
- 这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- 这篇文章主要介绍了C语言中计算正弦的相关函数总结,包括正弦和双曲线正弦以及反正弦的函数,需要的朋友可以参考下...2020-04-25
详解C语言中的rename()函数和remove()函数的使用方法
这篇文章主要介绍了详解C语言中的rename()函数和remove()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-10
- 本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
- 这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
- 今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了C语言中memcpy 函数的用法详解的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下...2020-04-25
- 很多同学在学习c语言的时候是不是会碰到a++和++a都有甚么作用啊。今天我们就来探讨下...2020-04-25
- 这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
- 下面小编就为大家带来一篇C语言实现时间戳转日期的算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了C语言之整数划分问题(递归法)实例代码的相关资料,需要的朋友可以参考下...2020-04-25
C语言正则表达式详解 regcomp() regexec() regfree()用法详解
C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(),这里就为大家介绍一下,需要的朋友可以参考一下啊...2020-04-25- 本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。...2020-04-25
- 这篇文章主要介绍了c语言实现找最大值最小值位置查找,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-04