#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _Goods
{
char num[20];//商品编号
char name[20];//商品名
float price;//单价
int hot;//热度
}Goods,*PGoods;
typedef struct _Record
{
Goods good;
int num;//数量
}Rec,*PRec;
void Save_Goods_Info(PGoods stu,int n)
{
int i;
FILE* pFile;
pFile= fopen("goods.dat","w+");
if(pFile==NULL)
{
return;
}
for(i=0;i<n;i++)
{
fwrite(&stu[i],1,sizeof(Goods),pFile);
}
fclose(pFile);
}
int Read_Goods_Info(PGoods stu)
{
int i=0;
FILE* pFile;
pFile= fopen("goods.dat","r+");
if(pFile==NULL)
{
return 0;
}
while(fread(&stu[i++],1,sizeof(Goods),pFile));
fclose(pFile);
if(i>=1)
{
return i-1;
}
return 0;
}
void Save_Rec_Info(PRec stu,int n)
{
int i;
FILE* pFile;
pFile= fopen("record.dat","w+");
if(pFile==NULL)
{
return;
}
for(i=0;i<n;i++)
{
fwrite(&stu[i],1,sizeof(Rec),pFile);
}
fclose(pFile);
}
int Read_Rec_Info(PRec stu)
{
int i=0;
FILE* pFile;
pFile= fopen("record.dat","r+");
if(pFile==NULL)
{
return 0;
}
while(fread(&stu[i++],1,sizeof(Rec),pFile));
fclose(pFile);
if(i>=1)
{
return i-1;
}
return 0;
}
int Main_Menu()
{
int choice;
system("cls");
printf("1:POS开机\n");
printf("2:消费\n");
printf("3:货品录入\n");
printf("4:日结算\n");
printf("5:热销商品\n");
printf("0:退出\n");
printf("请输入选择:");
scanf("%d",&choice);
while(choice>5||choice<0)
{
printf("请重新选择:");
scanf("%d",&choice);
}
return choice;
}
void Print_Good_Info(PGoods arr,int n)
{
int i;
printf("%-10s%-10s%-10s\n","商品号","商品名","单价");
for(i=0;i<n;i++)
{
printf("%-10s%-10s%-10.2f\n",arr[i].num,arr[i].name,arr[i].price);
}
}
int Add_Good_Info(PGoods arr,int n)
{
system("cls");
printf("请输入商品编号:");
scanf("%s",arr[n].num);
printf("请输入商品名:");
scanf("%s",arr[n].name);
printf("请输入商品单价:");
scanf("%f",&arr[n].price);
printf("录入成功!\n");
arr[n].hot=0;
system("pause");
return n+1;
}
int Add_Record_Info(PGoods arr,int g,PRec rec,int n)
{
int i,j;
char temp[20];
int flag=n;
float sum=0;
system("cls");
for(i=0;i<10;i++)
{
printf("请输入购买的商品编号:");
scanf("%s",temp);
for(j=0;j<g;j++)
{
if(!strcmp(temp,arr[j].num))
{
rec[n].good=arr[j];
printf("请输入购买的商品数量:");
scanf("%d",&rec[n].num);
sum += rec[n].num * arr[j].price;
arr[j].hot+=rec[n].num;
n++;
}
}
printf("是否继续?Y/N: ");
scanf("%s",temp);
if(!strcmp(temp,"Y")||!strcmp(temp,"y"))
{
continue;
}
break;
}
printf("共需付款%.2f元\n",sum);
printf("是否付款?Y/N: ");
scanf("%s",temp);
if(!strcmp(temp,"Y")||!strcmp(temp,"y"))
{
printf("付款成功!\n");
system("pause");
return n;
}
printf("取消成功!\n");
system("pause");
return flag;
}
void Print_Record_Info(PRec arr,int n)
{
int i;
system("cls");
printf("%-10s%-10s%-10s%-10s%-10s\n","商品号","商品名","单价","数量","付款");
for(i=0;i<n;i++)
{
printf("%-10s%-10s%-10.2f",arr[i].good.num,arr[i].good.name,arr[i].good.price);
printf("%-10d%-10.2f\n",arr[i].num,arr[i].num*arr[i].good.price);
}
system("pause");
}
void Sort_Good_Hot(PGoods arr,int n)
{
int i,j;
Goods temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i].hot<arr[j].hot)
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
void Print_Hot_Good(PGoods arr,int n)
{
int i;
int count=3>n?n:3;
system("cls");
printf("热销商品:\n");
printf("%-10s%-10s%-10s\n","商品号","商品名","单价");
for(i=0;i<count;i++)
{
printf("%-10s%-10s%-10.2f\n",arr[i].num,arr[i].name,arr[i].price);
}
system("pause");
}
int main()
{
int choice;
Goods goods[100];
Rec rec[100];
int G_NUM=0;
int R_NUM=0;
G_NUM=Read_Goods_Info(goods);
R_NUM=Read_Rec_Info(rec);
do
{
choice=Main_Menu();
switch(choice)
{
case 1:
system("cls");
Print_Good_Info(goods,G_NUM);
system("pause");
break;
case 2:
R_NUM=Add_Record_Info(goods,G_NUM,rec,R_NUM);
break;
case 3:
G_NUM = Add_Good_Info(goods,G_NUM);
break;
case 4:
Print_Record_Info(rec,R_NUM);
break;
case 5:
Sort_Good_Hot(goods,G_NUM);
Print_Hot_Good(goods,G_NUM);
break;
}
}while(choice!=0);
Save_Goods_Info(goods,G_NUM);
Save_Rec_Info(rec,R_NUM);
return 0;
}
模拟POS系统
猜你喜欢
转载自blog.csdn.net/u011256974/article/details/89212796
今日推荐
周排行