如何使用C语言实现超市信息管理系统
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了如何使用C语言实现超市信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下设计要求:设计一个超市信
千家信息网最后更新 2025年01月21日如何使用C语言实现超市信息管理系统
这篇文章主要介绍了如何使用C语言实现超市信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体内容如下
设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购买商品的信息,并使用链表保存购物车信息,
能够完成建立库存信息以及文件自动建立库存信息,对购物车添加商品、结算并修改库存等操作,可以将库存信息保存在文件中,并且可以对文件中的库存信息进行读取与显示。
程序代码如下:
/*ifndef/define/endif"主要目的是防止头文件的重复包含和编译*/#ifndef MARKET_H#define MARKET_H #include#include #include #include #include #include #define N 5 struct mar//该结构体为存储货物信息 { char ID[10];//货号 char brand[20];//品名 double inprice;//进价 double outprice;//售价 int storage;//存储量 }; struct node//该结构体为存储购物车中的信息 { struct mar buy;//货物信息 int number;//购物的数量 struct node *next; //指向下一个购物节点 }; struct mar goods[N];//结构体数组 struct node *cart;//购物车头结点 int menu();//打印主菜单函数 void WenJianKucun();//文件建立库存信息 void ShouJianKucun();//手动建立库存信息void DisKucun();//显示库存信息函数void ShopCart();//对购物车进行操作int ShopCartMenu();//打印购物车菜单void XianShi();//显示购物列表void add();//在购物车里添加商品 void UpdateKu();//更新购物车信息函数 void calculate();//计算所购商品价格并修改保存 #endif int main(){//主函数 printf("*********************************************************\n"); printf(" 欢迎进入超市信息管理系统\n"); printf("*********************************************************\n"); int find=0; while(1) { switch(menu()) {//menu()函数为输入选项 case 1: WenJianKucun(); find=1; break;//选项1 文件建立库存信息 case 2: if(find==0) ShouJianKucun(); else printf("库存信息已存在\n"); break;//选项2 手动建立库存信息 case 3: DisKucun(); break;//选项3 显示库存信息函数 case 4: ShopCart(); break;//选项4 对购物车进行操作 case 5: calculate(); break;//选项5 计算所购商品价格并修改保存 case 6: system("cls"); printf("感谢您的使用,再见!\n"); Sleep(2000); exit(0); } } return 0;} int menu(){//打印主菜单函数 char s[5];//输入的选项 int n;//选项为整数 printf("\n\n请选择下面的数字进行操作:\n"); printf("--------------------------------------------\n"); printf("1. 文件建立库存信息\n"); printf("2. 手动建立库存信息\n"); printf("3. 显示所有商品信息\n"); printf("4. 购物车\n"); printf("5. 结算\n"); printf("6. 退出程序\n"); printf("--------------------------------------------\n"); printf("请选择对应数字1~6(1,2选其一)\n"); printf("本程序制作人: 2017物联网工程 胡斌、刘萌欣、陈俊飞\n"); while(1) { fflush(stdin);//清空输入流 gets(s);//输入一串字符串 n=atoi(s);//字符串转化为整数 if(n<1||n>6)//判断输入的选项是否正确 printf("输入错误,请重新输入:\n"); else//输入正确,结束循环 break; } return n;//返回输入选项 } void WenJianKucun(){//文件建立库存信息 FILE *fp;//定义文件指针 if((fp=fopen("kucun.txt","w"))==NULL) {//创建文件 printf("创建文件失败\n"); return ; } //向文件中写入信息 fprintf(fp,"69011111 飘柔日常护理 12.00 15.00 30\n"); fprintf(fp,"69021111 优酸乳 1.50 2.00 200\n"); fprintf(fp,"69031111 红富士苹果 2.50 3.50 300\n"); fprintf(fp,"69041111 晨光笔芯 0.70 1.00 150\n"); fprintf(fp,"69051111 胡医生面膜 12.00 16.50 100\n"); fclose(fp);//关闭文件 printf("成功导入信息\n"); return ;} void ShouJianKucun(){//手动建立库存信息 FILE *fp;//定义文件指针 int i; printf("请依次输入货物信息:\n"); printf("--------------------------------------------\n"); for(i=0;i 3)//判断输入的选项是否正确 printf("输入错误,请重新输入: \n"); else//输入正确,结束循环 break; } return n;//返回输入选项 } void XianShi(){//显示购物列表 struct node *p; //定义节点指针 p=cart;//把购物车链表赋给p FILE *fp1;//定义文件指针 if((fp1=fopen("cart.txt","r"))==NULL) {//判断是否打开了文件 printf("打开文件失败\n"); //return ; } if(p==NULL) {//购物车为空 printf("目前购物车为空:"); return ; } else {//购物车不为空 while(p!=NULL) {//把购物车物品不断减一,直到为空 printf("--------------------------------------------\n"); printf("货号 品名 单价 数量\n"); printf("%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number); //输出物品信息 p=p->next; } } fclose(fp1);//关闭文件 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 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);//输出所需物品信息 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 UpdateKu(){ FILE *fp; struct node *p; if((fp=fopen("cart.txt","w"))==NULL) {//判断文件是否创建失败 printf("创建文件失败。\n"); return ; } p=cart;//把购物车链表赋给p2 while(p!=NULL) { // fprintf(fp1,"货号 品名 单价 库存量\n"); //把货物信息写进文件 fprintf(fp,"%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number); p=p->next;//指向下一个节点 } fclose(fp);//关闭文件 return ; } void calculate(){//计算所购商品价格并修改保存 struct node *p; p=cart;//把购物车(cart)链表赋给p double sum=0;//购买商品应付钱数 double pay;//购买商品实付钱数 FILE *fp;//定义文件指针 int i; printf("以下是购物清单:\n"); XianShi();//调用函数显示购物列表信息 if((fp=fopen("kucun.txt","r"))==NULL) {//打开文件 printf("打开文件失败\n"); return ; } for(i=0;i buy.outprice*p->number;//计算应付钱数 for(i=0;i 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 感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用C语言实现超市信息管理系统"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
信息
文件
输入
购物
商品
购物车
库存
函数
品名
数量
物品
节点
指针
货物
循环
输出
单价
字符
字符串
菜单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
以太网计算机网络技术
想学软件开发有哪些网站
网络安全责任制考核评价实施办法
hp服务器怎么分区
下列不属于网络安全法条例
数据库是一门研究数据管理的技术
安卓软件开发体会
运营商的网络安全压力
21年国家网络安全周交接西安
y数据库采血
网络安全求职简历模板
ERCM软件开发流程
网络安全法法施行时间
腾诚软件开发有限公司
如何降低软件开发中的缺陷密度
病毒攻击网络安全经典案例
嵌入式设计与软件开发哪个好
select连接多个服务器
服务器3306端口
网络技术与宣传部
网络安全防范 网络安全教育
广州应用软件开发如何收费
iphone软件开发培训机构
主流应用服务器有哪些
南京盛华网络技术有限公司武汉
湛江卫星软件开发销售厂
数控机床软件开发很难吗
网络平台服务器
免费帮你检查网络安全
用友数据库访问方法