product.h
#ifndef _PRODUCT_H_
#define _PRODUCT_H_
#include
#include
#include
#define MAX 100 //定义商品的最大容量
typedef char datatype1;
typedef int datatype2;
//定义顺序表类型 商品的属性
typedef struct
{
datatype1 name[20];
datatype2 price;
datatype1 positon[20];//产地
datatype2 inventory;
}Pro,*Pro_ptr;
typedef struct
{
Pro data[MAX];
int len;
}DataList,*DataList_ptr;
//申请空间
DataList_ptr list_create();
//判满,成功返回真,失败返回假
int list_full(DataList_ptr P);
//判空
int list_empty(DataList_ptr P);
//创建商品
//int pro_creat(DataList_ptr P,datatype1 n,datatype2 m);
//添加商品
//int addProduct(DataList_ptr P,const char* a,datatype2 b,const char* c,datatype2 d);
int addProduct(DataList_ptr P);
//遍历商品
void list_show(DataList_ptr P);
//查找指定位置的商品信息
Pro *list_search_pos(DataList_ptr P, int pos);
//以单价高低给商品进行排序
int list_sort(DataList_ptr P);
#endif
product.c
#include "product.h"
//申请空间
DataList_ptr list_create()
{
//堆区申请空间
DataList_ptr P=(DataList_ptr)malloc(sizeof(DataList));
//判断申请是否成功
if(NULL==P)
{
printf("顺序表创建失败\n");
return NULL;
}
//创建成功
memset(P->data,0,sizeof(P->data)); //清空数组
P->len=0;//初始化数组长度为0
printf("商品顺序表创建成功\n");
return P;
}
//判满,成功返回真,失败返回假
int list_full(DataList_ptr P)
{
//判断逻辑
if(NULL == P)
{
printf("所给顺序表不合法\n");
return 0;
}
//合法,则返回是否已经满了
return P->len == MAX;
}
//判空
int list_empty(DataList_ptr P)
{
if(NULL == P)
{
printf("所给顺序表不合法\n");
return 0;
}
//合法返回是否空
return P->len == 0;
}
/*
//创建商品
int pro_creat(DataList_ptr P,const datatype1 n,const datatype2 m)
{
//判断逻辑
if(NULL == P||list_full(P))
{
printf("所给顺序表不合法\n");
return 0;
}
strcpy(P->data[P->len].name,"n");
P->data[P->len].price=m;
P->len++;
printf("创建商品成功\n");
return 1;
}*/
//添加商品
/*int addProduct(DataList_ptr P,Pro e,const char* a,datatype2 b,const char* c,datatype2 d)
{
//判断逻辑
if(NULL==P || list_full(P))
{
printf("添加失败\n");
return 0;
}
strcpy(e.name,a);
e.price=b;
strcpy(e.pos,c);
e.inventory=d;
P->data[P->len]=e;
P->len++;
printf("添加商品成功\n");
return 1;
}*/
//获取商品信息
//添加商品
int addProduct(DataList_ptr P)
{
//判断逻辑
if(NULL==P || list_full(P))
{
printf("添加失败\n");
return 0;
}
printf("请输入商品名\n");
scanf("%s",P->data[P->len].name);
getchar();
printf("请输入商品单价\n");
scanf("%d",&P->data[P->len].price);
getchar();
printf("请输入商品产地\n");
scanf("%s",P->data[P->len].positon);
getchar();
printf("请输入商品库存\n");
scanf("%d",&P->data[P->len].inventory);
// strcpy(P->data[P->len].name,a);
// P->data[P->len].price=b;
// strcpy(P->data[P->len].positon,c);
// P->data[P->len].inventory=d;
P->len++;
printf("添加商品成功\n");
return 1;
}
//遍历商品
void list_show(DataList_ptr P)
{
//判断逻辑
if(NULL==P || list_empty(P))
{
printf("遍历失败\n");
return ;
}
printf("商品列表为\n");
// printf("%d\n",P->len);
// printf("%d\n",P->data[0].price);
printf("商品名\t单价\t产地\t库存\n");
for(int i=0;ilen;i++)
{
printf("%s\t%d\t%s\t%d\n",P->data[i].name,P->data[i].price,P->data[i].positon,P->data[i].inventory);
}
}
//查找指定位置的商品信息
Pro *list_search_pos(DataList_ptr P, int pos)
{
//判断逻辑
if(NULL==P || list_empty(P)||pos<0||pos>=P->len)
{
printf("添加失败\n");
return NULL;
}
if(NULL != list_search_pos)
{
printf("第%d个商品的信息为\n",pos);
printf("商品名\t单价\t产地\t库存\n");
printf("%s\t%d\t%s\t%d\n",P->data[pos-1].name,P->data[pos-1].price,P->data[pos-1].positon,P->data[pos-1].inventory);
}
return &P->data[pos-1];
}
//以单价高低给商品进行排序
int list_sort(DataList_ptr P)
{
//判断逻辑
if(NULL==P || list_empty(P))
{
printf("添加失败\n");
return -1;
}
int flag;
printf("价格降序输入1,升序输入0\n");
getchar();
scanf("%d",&flag);
//开始排序
for(int i=1;ilen;i++)
{
for(int j=0;jlen-i;j++)
{
if(flag==0 && P->data[j].price>P->data[j+1].price)
{
Pro temp=P->data[j];
P->data[j]=P->data[j+1];
P->data[j+1]=temp;
}
else if(flag==1 && P->data[j].price < P->data[j+1].price)
{
Pro temp=P->data[j];
P->data[j]=P->data[j+1];
P->data[j+1]=temp;
}
}
}
printf("价格排序成功\n");
printf("商品名\t单价\t产地\t库存\n");
for(int i=0;ilen;i++)
{
printf("%s\t%d\t%s\t%d\n",P->data[i].name,P->data[i].price,P->data[i].positon,P->data[i].inventory);
}
return 1;
}
main.c
#include "product.h"
int main(int argc, const char *argv[])
{
//申请空间
DataList_ptr P=list_create();
int n;
char answer;
do{
printf("************************功能菜单***********************\n");
printf("1)添加新商品\n");
printf("2)查看所有商品\n");
printf("3)查找指定位置的商品信息\n");
printf("4)以单价高低排序商品\n");
printf("*******************************************************\n");
printf("请选择您需要的功能\n");
scanf("%d",&n);
switch (n)
{
case 1:
printf("实现功能1\n");
addProduct(P);
break;
case 2:
printf("实现功能2\n");
list_show(P);
break;
case 3:
printf("实现功能3\n");
list_search_pos(P,3);
break;
case 4:
printf("实现功能4\n");
list_sort(P);
break;
default:
printf("无效选项请重新选择\n");
break;
}
printf("是否继续执行其他功能y/n:\n");
getchar();
scanf("%c",&answer);
}while(answer=='y' || answer=='Y');
return 0;
}