int year, month, day;
void input_date(){ scanf("%d-%d-%d",&year,&month,&day); }
void show_date() { printf("%d-%d-%d\n",year,month,day); }
#include
#include
#include
#include
typedef struct date {
}date;
typedef struct product {
char product_name[50];
int total, sales;
date in_date, out_date;
product* next_product;
}product, *List_product;
typedef struct kind {
kind_name[50];
char
kind* next_kind;
List_product head;
}kind, *List_kind;
bool Find_kind(List_kind Q, char* name) {
kind* pk=Q->next_kind;
while(pk!=NULL) {
if(strcmp(pk->kind_name, name)==0) return true;
pk=pk->next_kind;
}
return false;
}
bool Find_product(List_kind Q, char* name) {
kind* pk=Q->next_kind;
while(pk!=NULL) {
product* pp=pk->head;
while(pp!=NULL) {
}
pk=pk->next_kind;
}
if(strcmp(pp->product_name, name)==0) return true;
pp=pp->next_product;
return false;
}
void display_product(kind* pk, product* pp) {
//输出产品信息
puts("产品的信息如下: ");
printf("产品所属类名称:%s\n", pk->kind_name);
printf("产 品 名 称:%s\n", pp->product_name);
printf("产 品 总 量:%d\n", pp->total);
printf("产 品 销 售 量: %d\n", pp->sales);
printf("产品的进货日期:");
pp->in_date.show_date();
printf("产品的销售日期:");
pp->out_date.show_date();
}
void Insert_kind(List_kind &Q) {
//添加产品类
printf("请输入添加产品类的数量: ");
int n, i; scanf("%d",&n);
for(i=1; i<=n; ++i) {
printf("输入添加的第%d 个产品类的名称: ", i);
List_kind pk=(List_kind)malloc(sizeof(kind));
scanf("%s", pk->kind_name);
if(Find_kind(Q, pk->kind_name)) {
puts("产品类名已经存在,无需添加!!");
system("pause");
continue;
}
pk->head=NULL;
pk->next_kind=Q->next_kind;
Q->next_kind=pk;
printf("第%d 个产品类添加成功!\n", i);
system("pause");
}
}
void Insert_product(List_kind &Q) {
//添加产品
printf("请输入添加产品的数量: ");
int n, i; scanf("%d",&n);
for(i=1; i<=n; ++i) {
printf("请输入第%d 个产品所属类名:");
char k_name[50]; scanf("%s", k_name);
if(!Find_kind(Q, k_name)) {
puts("没有找到这个产品类!");
system("pause"); continue;
}
printf("请输入第%d 个产品的名称:");
product* pp=(product*)malloc(sizeof(product));
scanf("%s", pp->product_name);
if(Find_product(Q, pp->product_name)) {
puts("该产品已经存在,不需要添加!");
system("pause"); continue;
}
pp->sales = 0;
printf("请输入产品的进货时期(yyyy-mm-dd):");
pp->in_date.input_date();
printf("请输入产品的进货数量:");
scanf("%d", &pp->total);
kind* pk=Q->next_kind;
while(pk!=NULL) {
if(strcmp(pk->kind_name, k_name)==0) break;
pk=pk->next_kind;
}
pp=pk->head;
pk->head=pp;
printf("第%d 个产品添加成功!\n", i);
system("pause");
}
}
void Add_total(List_kind &Q) {
//增加产品数量
printf("请输入增加的产品名称:");
char p_name[50]; scanf("%s", p_name);
if(!Find_kind(Q, p_name)) {
puts("没有找到该产品!");
system("pause"); return ;
}
printf("请输入需要增加的数量:");
int n; scanf("%d", &n);
bool ok=false;
kind* pk=Q->next_kind;
product* pp;
while(pk!=NULL) {
pp=pk->head;
while(pp!=NULL) {
if(strcmp(pp->product_name, p_name)==0) {
pp->total += n;
ok=true; break;
}
pp=pp->next_product;
}
if(ok) break;
pk=pk->next_kind;
}
puts("产品数量增加成功!");
display_product(pk, pp);
system("pause");
}
void Sale_product(List_kind &Q) {
//销售产品
printf("请输入销售的产品名称:");
char p_name[50]; scanf("%s", p_name);
if(!Find_kind(Q, p_name)) {
puts("没有找到该产品!");
system("pause"); return ;
}
printf("请输入产品销售的数量:");
int n; scanf("%d", &n);
bool ok=false;
kind* pk=Q->next_kind;
product* pp;
while(pk!=NULL) {
pp=pk->head;
while(pp!=NULL) {
if(strcmp(pp->product_name, p_name)==0) {
printf("请输入产品的销售时期(yyyy-mm-dd):");
pp->out_date.input_date();
pp->total -= n;
pp->sales += n;
ok=true; break;
}
pp=pp->next_product;
}
if(ok) break;
pk=pk->next_kind;
}
puts("产品数量销售成功!");
display_product(pk, pp);
system("pause");
}
void Query_product(List_kind &Q) {
//查找产品
printf("请输入查找的产品名称:");
char p_name[50]; scanf("%s", p_name);
if(!Find_kind(Q, p_name)) {
puts("没有找到该产品!");
system("pause"); return ;
}
kind* pk=Q->next_kind;
product* pp;
while(pk!=NULL) {
pp=pk->head;
while(pp!=NULL) {
if(strcmp(pp->product_name, p_name)==0) {
display_product(pk, pp);
system("pause"); return ;
}
pp=pp->next_product;
}
pk=pk->next_kind;
}
}
int menu() {
while(true) {
system("cls");
puts("\n\n\t\t\t1、添 加 产 品 类");
puts("\n\t\t\t2、添 加 产 品");
puts("\n\t\t\t3、增加产品的数量");
puts("\n\t\t\t4、产 品 销 售");
puts("\n\t\t\t5、查 询 产 品");
puts("\n\t\t\t0、退 出 程 序");
printf("\n\n\n\t 请选择应用菜单: ");
int sel; scanf("%d",&sel);
if(sel<0||sel>5) {
puts("输入有误,请重新输入!");
system("pause");
} else return sel;
}
}
int main() {
List_kind Q=(List_kind)malloc(sizeof(kind));
Q->next_kind=NULL;
while(true) {
int sel=menu();
if(sel==1) Insert_kind(Q);
else if(sel==2) Insert_product(Q);
else if(sel==3) Add_total(Q);
else if(sel==4) Sale_product(Q);
else if(sel==5) Query_product(Q);
else return 0;
}
return 0;
}