23.08.06周末作业

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;
}

 

 

你可能感兴趣的:(c语言)