模拟自动售卖机系统,C语言(Linux系统下)

这是一个使用C语言编写的商品购买与管理系统,包括购买界面、管理界面、添加商品、查看商品、修改商品和删除商品等功能。用户可以查看商品信息,作为会员享受优惠价格,并进行支付操作。同时,管理员可以登录进行商品的增删改查操作。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <string.h>
int count=4;
int i,j;
typedef struct commodity
{
	char name[20];
	float price;
	float vip_p;
	int num;
	char bar_codes[10];
}goods,*goods_p;
int purchase_page(goods_p p)//购买界面
{
	int spbm;//记录商品编码
	float money;
	int h;//判断是否为会员
	while(1)
	{
		
		printf("商品编码\t商品名称\t普通价格\t会员价格\t商品数量\n");
		for(i=0 ; i<count ; i++)
		{
			printf("%d\t\t%s\t\t%.2f\t\t%.2f\t\t%d\n",
			i+1,(p+i)->name,(p+i)->price,(p+i)->vip_p,(p+i)->num);
		}
		printf("--------------------------------------------------------------------------\n");
		printf("----------------------------输入0返回上一级!-----------------------------\n");
		printf("请选择要购买商品的商品编码:");
		scanf("%d",&spbm);
		if(spbm == 0)
		{
			return 0;
		}
		printf("你有小店会员吗?有请输入'1'\n");
		getchar();
		scanf("%d",&h);
		if(h == 1)
		{
			printf("%s\t%.2f人民币\n",(p+spbm-1)->name,(p+spbm-1)->vip_p);
			printf("请输入你放入钞票的面值:");
			scanf("%f",&money);
			if(money < (p+spbm-1)->vip_p)
			{
				printf("金额不足,购买失败!");
				return 0;
			}
			printf("本次找零%.2f人民币!\n*********感谢你的消费,欢迎下次光临!*********\n*******如有问题,请拨打售后电话:1238438*******\n\n\n",
		   	money-((p+spbm-1)->vip_p));
		}
		else 
		{
			printf("%s\t%.2f人民币\n",(p+spbm-1)->name,(p+spbm-1)->price);
			printf("请输入你放入钞票的面值:");
			scanf("%f",&money);
			printf("本次找零%.2f人民币!\n感谢你的消费,欢迎下次光临!\n如有任何问题或不满意,请拨打售后电话:1238438\n\n\n",
		    money-(p+spbm-1)->price);
		}
		((p+spbm-1)->num)--;
	}
}
int management_page()//登录管理界面
{
	int error;
	char man_id[]="yyd";
	char man_mm[]="yyd";
	char id[20],mm[20];
	for(error=0 ; error<3 ; error++)
	{
		printf("账号:");
		scanf("%s",id);
		printf("密码:");
		scanf("%s",mm);
		if(strcmp(man_id,id) == 0)
		{
			if(strcmp(man_mm,mm) == 0)
			{
				printf("登录成功!\n");
				return 0;
			}
		}
		else
		{
			printf("账号有误,请重新输入,还有%d输入机会。\n",2-error);
		}
		if(error == 3)
		{
			return -1;
		}
	}
}
void add_goods(goods_p p)//添加商品
{
	printf("请输入要添加商品的信息:\n");
	printf("商品名称:");
	scanf("%s",(p+count)->name);
	printf("普通价格:");
	scanf("%f",&(p+count)->price);
	printf("会员价格:");
	scanf("%f",&(p+count)->vip_p);
	printf("商品数量:");
	scanf("%d",&(p+count)->num);
	printf("商品条码:");
	scanf("%s",(p+count)->bar_codes);
	count++;
}
void cat_goods(goods_p p)//查看商品
{
	printf("商品名称\t商品条码\t普通价格\t会员价格\t商品数量\n");
	for(i=0 ; i<count ; i++)
	{
		printf("%s \t\t%s \t\t%.2f \t\t%.2f \t\t%d\n",
		(p+i)->name,(p+i)->bar_codes,(p+i)->price,(p+i)->vip_p,(p+i)->num);
	}
}
void modify_goods(goods_p p)//修改商品
{
	char txbm[10]={0};
	printf("请输入要修改的商品的条形编码:\n");
	scanf("%s",txbm);
	for(i=0 ; i<count ; i++)
	{
		if(strcmp((p+i)->bar_codes,txbm) == 0)
		{
			printf("该条形编码所对应的商品名称是:%s\n",(p+i)->name);
			printf("商品名称:");
			scanf("%s",(p+i)->name);
			printf("普通价格:");
			scanf("%f",&(p+i)->price);
			printf("会员价格:");
			scanf("%f",&(p+i)->vip_p);
			printf("商品数量:");
			scanf("%d",&(p+i)->num);
			printf("商品条码:");
			scanf("%s",(p+i)->bar_codes);
		}
	}
}
int delete_goods(goods_p p)//删除商品
{
	char txbm[10]={0};
	printf("请输入要删除的商品的条形编码:\n");
	scanf("%s",txbm);
	for(i=0 ; i<count ; i++)
	{
		if(strcmp((p+i)->bar_codes,txbm) == 0)
		{
			for(j=i ; j<count ; j++)
			{
				strcpy((p+j)->name,(p+j+1)->name);
				(p+j)->price=(p+j+1)->price;
				(p+j)->vip_p=(p+j+1)->vip_p;
				(p+j)->num=(p+j+1)->num;
				strcpy((p+j)->bar_codes,(p+j+1)->bar_codes);
			}
		}
		else 
		{
			printf("没有找到该条形编码所对应的商品!\n");
			return 0;
		}
	}
	count--;
}
int choose_function(goods_p p)//选择功能
{
	while(1)
	{
		int a,b,c;
		printf("---------------------------1:购买模式---------------------------\n");
		printf("---------------------------2:管理模式---------------------------\n");
		printf("---------------------------0:退出系统---------------------------\n");
		scanf("%d",&a);
		switch(a)
		{
			case 0:return 0;
				break;
			case 1:
				purchase_page(p);
				break;
			case 2:
				b=management_page();
				if(b == 0)
				{	
					while(1)
					{
						printf("------------------------1:添加商品种类------------------------\n");
						printf("------------------------2:修改商品信息------------------------\n");
						printf("------------------------3:删除商品信息------------------------\n");
						printf("------------------------4:查看商品信息------------------------\n");
						printf("------------------------0:返回上一级  ------------------------\n");
						scanf("%d",&c);
						switch(c)
						{
							case 0:
								break;
							case 1:
								add_goods(p);
								break;
							case 2:
								modify_goods(p);
								break;
							case 3:
								delete_goods(p);
								break;
							case 4:
								cat_goods(p);
								break;
							default :
								break;
						}
						if(c==0) break;
					}
				}
				break;
			default:
				break;
		}
	}
}
int main(int argc, char const *argv[])
{
	goods g_type[20] = {{"可乐",2.5,2.0,10,"00001"},
						{"绿茶",3.0,2.5,10,"00002"},
						{"桶面",4.0,3.5,10,"01003"},
						{"卫生纸",8.5,8.0,16,"02004"}};
	goods_p p= g_type;
	choose_function(p);
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值