/*小型书店进销存管理系统
基本功能
1. 针对小型书店的日常进销业务特点以及其经营的灵活性而开发。
2. 主要功能包括:进书,销售,盘点。内存不足提示,财务统计。
3. 查询包括:进书查询与管理,存书查询,销售查询,库存不足查询。
4. 财务统计可能包括:当日销售额统计,当月销售额统计,图书销售名,图书分类销售排名。
5. 图书销售支持折扣优惠促销活动。
6. 系统界面清爽,操作简便。
7. 具有独特的功能。*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 10000
int num=0;//图书种类
double daysale=0;//日销售额
typedef struct bookinfo{//重定义结构体
char name[20];
int n; //该种书的数量
int jinshu;//进书量
int sale;//销售量
double price;//价格
int cx;//0表示不促销 1表示促销
}inf;
inf a[maxsize];
void jinshu(char *bookname,int m)//进书函数
{
int i;
for(i=0;i<num;i++)
{
if(strcmp(bookname,a[i].name)==0)
{
a[i].n+=m;
a[i].jinshu+=m;
break;
}
}
if(i==num)
{
printf("*************************************************\n");
printf("请输入书的进价\n");
printf("*************************************************\n");
scanf("%lf",&a[num].price);
strcpy(a[num].name,bookname);
a[i].n+=m;
a[i].jinshu+=m;
num++;
}
}
//保存退出系统
void Exit()
{
exit(0);
}
void shoushu(char *bookname,int k)//售书
{
int i;//k表示需要的数量,C表示折扣量
double c;
for(i=0;i<num;i++)
{
if(strcmp(a[i].name,bookname)==0)
{
if(a[i].n<k)
{
printf("*************************************************\n");
printf("库存不足\n");
printf("*************************************************\n");
}
else
{
printf("*************************************************\n");
printf("库存充足\n");
printf("*************************************************\n");
a[i].n=a[i].n-k;
if(a[i].cx)
{
printf("*************************************************\n");
printf("请输入打折的折扣率(0.0-1.0)\n");
printf("*************************************************\n");
scanf("%lf",&c);
daysale+=k*a[i].price*c;
}
else
daysale+=k*a[i].price;
a[i].sale+=k;
}
break;
}
}
if(i==num)
{
printf("*************************************************\n");
printf("没有找到你要的这种书本\n");
printf("*************************************************\n");
}
printf("\n");
}
void jsearch(char *bookname)//进书量查询
{
int i;
for(i=0;i<num;i++)
{
if(strcmp(bookname,a[i].name)==0)
{
printf("%d\n",a[i].jinshu);
break;
}
}
if(i==num)
{
printf("*************************************************\n");
printf("没有找到你要查询这种书本\n");
printf("*************************************************\n");
}
}
void ssearch(char *bookname)//销售量查询
{
int i;
for(i=0;i<num;i++)
{
if(strcmp(bookname,a[i].name)==0)
{
printf("*************************************************\n");
printf("该书还剩%d\n",a[i].n);
printf("该书今天共卖出%d\n",a[i].sale);
printf("*************************************************\n");
break;
}
}
if(i==num)
{
printf("*************************************************\n");
printf("没有找到你要查询这种书本\n");
printf("*************************************************\n");
}
printf("\n");
}
void ksearch(char *bookname)//库存查询
{
int i;
for(i=0;i<num;i++)
{
if(strcmp(bookname,a[i].name)==0)
{
if(a[i].n==0)
{
printf("*************************************************\n");
printf("库存不足\n");
printf("*************************************************\n");
}
else
{
printf("*************************************************\n");
printf("还有库存:%d本!\n",a[i].n);
printf("*************************************************\n");
}
break;
}
}
if(i==num)
{
printf("*************************************************\n");
printf("没有找到你要查询这种书本\n");
printf("*************************************************\n");
}
}
void salesort()//按销售量进行排序
{
int i,j,max,max1;
inf t;
for(i=0;i<num;i++)
{
max=a[i].sale;
max1=i;
for(j=i+1;j<num;j++)
{
if(a[j].sale>max)
{
max=a[j].sale;
max1=j;
}
}
t=a[i];
a[i]=a[max1];
a[max1]=t;
}
}
void saleprint()//输出按销售量进行排序
{
int i;
printf("*************************************************\n");
printf(" 图书名 销售量\n");
for(i=0;i<num;i++)
{
if(a[i].sale)
printf("%10s%4d\n",a[i].name,a[i].sale);
}
printf("*************************************************\n");
}
void main()
{
int i,chose;
int k,chose1;
int i1;
char bookname[20];
for(i=0;i<maxsize;i++)
{
a[i].jinshu=0;
a[i].sale=0;
a[i].n=0;
}
printf("**********************************\n");
printf("**********************************\n");
printf("******小型书店进销存管理系统********\n");
printf("**********************************\n");
printf("**********************************\n\n\n\n");
begin:
i1=1;
printf("*************************************************\n");printf("*************************************************\n");printf("*************************************************\n");
printf("*****请输入要选择的功能*****\n");
printf("****请输入对应的功能序号:1-5\n");
printf("****1,进书****\n");
printf("****2,售书(支持折扣)****\n");
printf("****3,查询(库存量/进书/售书)****\n");
printf("****4,财务统计****\n");
printf("****5,保存并退出****\n");
printf("*************************************************\n");
while(1)//一直成立
{
scanf("%d",&chose);
switch(chose)
{
case 1:
while(i1)
{
printf("*************************************************\n");
printf("请输入所进书的书名\n");
printf("*************************************************\n");
scanf("%s",bookname);
printf("*************************************************\n");
printf("请输入所进书的数量\n");
printf("*************************************************\n");
scanf("%d",&k);
jinshu(bookname,k);
printf("记录完毕\n\n");
printf("*************************************************\n");
printf("继续进书请输入1,结束进书请输入0\n");
printf("*************************************************\n");
scanf("%d",&i1);
}
break;
case 2:
i1=1;
while(i1)
{
printf("*************************************************\n");
printf("请输入顾客想要的书的书名\n");
printf("****************************************