⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shopon.c

📁 一个链表操作的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
		printf("请输入商品价格:\n¥");

		scanf("%f",&p->price);

		keycle();

		printf("请输入商品采购数量:\n");

		scanf("%d",&p->quantity);

		keycle();

		p->nowquan=p->quantity;

		p->outquan=0;

		p->front=r;

		r->later=p;

		p->later=NULL;
		  

		return head;
	
}

/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: creat

*参   数: 链表头指针(pcomd head)

*type name[IN]:

*功能描述: 创建数据链表(创建商品数据库)

*返回值: 返回链表头指针

*抛出异常:

*作   者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/

pcomd creat(pcomd head)
{
	pcomd p;
	
	char c;

 	do
		{
		
			p=addcom(head);

			printf("是否继续创建商品?(Y/N)\n");
			
			 c='a';
			
			for(;c!='y' && c!='Y';)
				{
				  scanf("%c",&c);

				  keycle();

				  if(c=='n' || c=='N')
					{
						return p;
					}

				  else if(c=='y' || c=='Y')
				        ;

				  else
				        printf("请输入:(Y/N)\n");
				}
		}while(c=='y' || c=='Y');
	head=p;

	return head;
}

/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: sellcom

*参   数: 指定的结构(pcomd pcom,int num)

*type name[IN]:

*功能描述: 指定构体内用num(减nowquan,加outquan)(对商品的销售量和现有库存进行运算)

*返回值: 此操作的结构

*抛出异常:

*作   者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
pcomd sellcom(pcomd pcom,int num)
{
	if(num>pcom->nowquan)
		{
		printf("没有足够数量的商品\n现在只有%d件商品\n",pcom->nowquan);	

		return pcom;
		}
		
	pcom->outquan+=num;

	pcom->nowquan-=num;

	printf("应付:¥%f\n",pcom->price*num);

	return pcom;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: buycom

*参   数: 指定的结构(pcomd pcom,int num)

*type name[IN]:

*功能描述: 指定构体内用num(加nowquan,加quantity)(对商品的进货总量和现有库存进行运算)

*返回值: 此操作的结构

*抛出异常:

*作   者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/

pcomd buycom(pcomd pcom,int num)
{
	if(num<0 || num>32766){printf("输入的数量有误!!\n");return pcom;}
	
	pcom->quantity+=num;

	pcom->nowquan+=num;

	return pcom;
}

/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: dell

*参   数: 链表头指针(pcomd head)

*type name[IN]:

*功能描述: 清除结构体占用的内存

*返回值: 成功返回0

*抛出异常:

*作   者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
int dell(pcomd head)
{
	pcomd p,q;
	p=head;
	while(p->later != NULL)
	{
		q=p->later;
		free(p);
		p=q;
	}
	free(p);
	return 0;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: _tmain

*参   数: int argc, _TCHAR* argv[]

*type name[IN]:

*功能描述: 销售管理的主程序

*返回值: int

*抛出异常:

*作   者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
int _tmain(int argc, _TCHAR* argv[])
{
	unsigned char leven1='1',leven2a='1',leven2b='1',tem;

	char temname[MAX_NUM_NAME];	
	
	unsigned int comdid;

	int number;

	pcomd head,ptem1,ptem2;

	head=(pcomd)malloc(sizeof(comd));

	head->front=NULL;

	head->later=NULL;
	
	while(leven1!='0')	
		{

		printf("商品销售管理系统\n(1)管理                  (2)销售\n            (0~ESC)退出系统\n");

		tem='1';

		scanf("%c",&tem);

		keycle();
		
		leven1=tem;

		switch(leven1)
		  {

			case'1':
								
				printf("管理菜单\n");

				leven2a='1';

				while(leven2a!='0')
					{
						printf("(1)创建       (2)修改     (3)添加  \n(4)删除               (0~ESC)返回上一级\n");	
						
						tem='1';

						scanf("%c",&tem);

						keycle();

						leven2a=tem;

						switch(leven2a)
						  {

							case'1':

								creat(head);
								
								break;

							case'2':

								printf("请输入要修改商品的ID号:\n");

								scanf("%d",&comdid);

								keycle();

								ptem1=serachid(head,comdid);
								
								if(ptem1==NULL)
								  {
								        printf("没有这件商品\n");
									
									break;
								  }

								ptem2=edit(head,ptem1);

								printcom(ptem2);

								break;

							case'3':

								addcom(head);

								break;

							case'4':

								printf("请输入要删除商品的ID号\n");

								scanf("%d",&comdid);

								keycle();

								ptem1=serachid(head, comdid);

								dellcom(ptem1);

								break;

						    case'0':

								leven2a='0';

								break;

							default :

								if(char(027)==leven2a)
								{
									leven2a='0';

									break;
								}

								printf("请输入(1~2~3~4~(0~ESC))选项标号\n");	

								break;
						  }
					}

				break;

			case'2':

				printf("销售菜单\n");

				leven2b='1';

				while(leven2b!='0')
					{
						printf("(1)销售     (2)采购    (3)显示所有商品\n(4)显示单个商品     (0~ESC)返回上一级\n");	
						 
						tem='1';

						scanf("%c",&tem);

						keycle();
						
						leven2b=tem;

						switch(leven2b)
						  {

						        case'1':

								printf("请输入商品名称:\n");

								scanf("%s",temname);
								
								keycle();

								ptem1=serachname(head,temname);

								if(ptem1==NULL)
								  {
								    printf("没有这件商品!!\n");
								    
								    break;
								  }

								printcom(ptem1);

								printf("请输入销售数量:\n");

								scanf("%d",&number);

								keycle();

								sellcom(ptem1, number);

								break;

							case'2':
								printf("请输入商品名称:\n");

								scanf("%s",temname);

								keycle();

								ptem2=serachname(head,temname);

								if(ptem2==NULL)
								  {
								    printf("没有这件商品!!\n");
								    
								    break;
								  }

								printcom(ptem2);

								printf("请输入购买数量:\n");

								scanf("%d",&number);

								keycle();

								buycom(ptem2, number);

								printcom(ptem2);

								break;

							case'3':

								showall(head);

								break;

							case'4':

								printf("请输入商品名称:\n");

								scanf("%s",temname);

								keycle();

								ptem1=serachname(head,temname);

								if(ptem1==NULL)
								  {
								    printf("没有这件商品!!\n");
								    
								    break;
								  }

								printcom(ptem1);

								break;


							case'0':

								leven2b='0';

								break;

							default:

								if(char(027)==leven2b)
								{
									leven2b='0';

									break;
								}

								printf("请输入(1~2~3~4~(0~ESC)选项标号\n");

								break;
						  }
					}

				
				break;

			case'0':
				
				dell(head);

				printf("已退出系统\n");

				leven1='0';

				break;

			default:

				if(char(027)==leven1)
				{
					leven1='0';

					break;
				}

				printf("请输入(1~2~(0~ESC))选项标号\n");	

				break;
		  }
		}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -