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

📄 advicebussiness.pc

📁 pro C的一个关于零件交易系统的源码
💻 PC
字号:
#include <stdio.h> 
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
#include <process.h>

int query_all_after();
int query_all_supply();

int query_suppy();
int insert_into_agreement(char* tCustomerID,char* tProviderID,char* tPartID,float tfPrice,float tfQuantity);
int delete_after(char* customerID,char* partID);
int update_supply(char* tProviderID,char* tPartID,float tPrice,float tQuantity);

void advice_bussiness();
int advice_supply(char* ,char* ,char* ,char* );
extern void bus_Menu();

int query_all_after()
{
	EXEC SQL BEGIN DECLARE SECTION; 
	char customerID[10];
	char PartID[10];
	char Price[8];
	char Quantity[8];
	EXEC SQL END DECLARE SECTION;
	
	int total_number = 0;
	
	EXEC SQL DECLARE advice_after_cursor CURSOR FOR SELECT * FROM After;  
   	EXEC SQL OPEN advice_after_cursor;

   	while(1)
   	{

   		EXEC SQL WHENEVER NOT FOUND DO break;   		
   		EXEC SQL FETCH advice_after_cursor INTO :customerID,:PartID,:Price,:Quantity;
    		++total_number;
    		if( total_number == 1 )
    		{
    			printf("\n所有的需求信息如下:");
			printf("\n\n--- --------- ------------------- ---------------------------- ----------\n");
			printf("%-4s%-10s%-10s%-8s%-8s\n","N","customerID","PartID","Price","Quantity");
    			printf("--- --------- ------------------- ---------------------------- ----------\n");
    		}/*if*/
   		printf("%-4d%-10s%-10s%-8s%-8s\n",total_number,customerID,PartID,Price,Quantity);
   		printf("--- --------- ------------------- ---------------------------- ----------\n");
   	}/*while*/
   	EXEC SQL CLOSE advice_after_cursor;
	if(!total_number)
   	{	
   		printf("WARING:(query_all_after)There is no after part.\t\n\n");
   		return -1;
   	}else
		return 0;	/*success*/	
	
}/*query_all_after()*/

int query_all_supply()
{
	EXEC SQL BEGIN DECLARE SECTION; 
	char providerID[10];
	char PartID[10];
	char Price[8];
	char Quantity[8];
	EXEC SQL END DECLARE SECTION;
	
	int total_number = 0;
	
	EXEC SQL DECLARE query_supply_cursor CURSOR FOR SELECT * FROM Supply;  
   	EXEC SQL OPEN query_supply_cursor;

   	while(1)
   	{

   		EXEC SQL WHENEVER NOT FOUND DO break;   		
   		EXEC SQL FETCH query_supply_cursor INTO :providerID,:PartID,:Price,:Quantity;
    		++total_number;
    		if( total_number == 1 )
    		{
    			printf("\n所有的供应信息如下:");
			printf("\n\n--- --------- ------------------- ---------------------------- ----------\n");
			printf("%-4s%-10s%-10s%-8s%-8s\n","N","providerID","PartID","Price","Quantity");
    			printf("--- --------- ------------------- ---------------------------- ----------\n");
    		}/*if*/
   		printf("%-4d%-10s%-10s%-8s%-8s\n",total_number,providerID,PartID,Price,Quantity);
   		printf("--- --------- ------------------- ---------------------------- ----------\n");
   	}/*while*/
   	EXEC SQL CLOSE query_supply_cursor;
	if(!total_number)
   	{	
   		printf("WARING:(query_all_supply)There is no supply part.\t\n\n");
   		return -1;
   	}else
		return 0;	/*success*/	
	
}/*query_all_supply()*/


void advice_bussiness()
{
	EXEC SQL BEGIN DECLARE SECTION; 
	char customerID[10];
	char partID[10];
	char Price[8];
	char Quantity[8];
	EXEC SQL END DECLARE SECTION;
	char t;
	int total_number = 0;
	
	EXEC SQL DECLARE advice_bussiness_cursor CURSOR FOR SELECT * FROM After;  
   	EXEC SQL OPEN advice_bussiness_cursor;
   	
	puts("\t\t推荐交易\n");
/*	puts("\n\n以下为所有需求信息:\n");*/
	
	if( query_all_after() ){
		printf("WARING:(advice_bussiness)There is no after part.\t\n\n");
		puts("没有任何需求信息,返回上级菜单\n");
		bus_Menu();
	}/*if*/
/*	puts("\n\n以下为所有供应信息:\n");*/
	if( query_all_supply() ){
		printf("WARING:(advice_bussiness)There is no supply part.\t\n\n");
		puts("没有任何供应信息,返回上级菜单\n");
		bus_Menu();
	}/*if*/
	
	printf("\n需要为每项需求推荐供应信息吗?(y/n)>");
	t = getchar();
	if( t=='n' || t=='N' ){
		printf("\n不做处理,点击任意键直接返回上级菜单\n");
		getchar();
	}else{
		while(1)
   		{

   			EXEC SQL WHENEVER NOT FOUND DO break;   		
   			EXEC SQL FETCH advice_bussiness_cursor INTO :customerID,:partID,:Price,:Quantity;
    			++total_number;
    			printf("\n第%d条需求信息如下:\n",total_number);
			printf("\n\n--- --------- ------------------- ---------------------------- ----------\n");
			printf("%-4s%-10s%-10s%-8s%-8s\n","N","customerID","partID","Price","Quantity");
    			printf("--- --------- ------------------- ---------------------------- ----------\n");
   			printf("%-4d%-10s%-10s%-8s%-8s\n",total_number,customerID,partID,Price,Quantity);
   			printf("--- --------- ------------------- ---------------------------- ----------\n");
			if( t = advice_supply(customerID,partID,Price,Quantity) ) {
				printf("为%s对于%s的需求共推荐了%d条供应信息\n",customerID,partID,t);
				delete_after(customerID,partID);
				printf("点击任意键开始下一个推荐\n");
				getchar();
			}/*if*/
		}/*while*/
	
	printf("交易推荐完毕,点击任意键返回上一级菜单!\n");
	getchar();
	}/*else*/
	bus_Menu();
}/*advice_bussiness()*/

int advice_supply(char* tCustomerID,char* tPartID,char* tPrice,char* tQuantity) 
{/*成功,返回推荐个数,否则,0*/
	EXEC SQL BEGIN DECLARE SECTION; 
	char customerID[10];
	char cPartID[10];
	char cPrice[8];
	char cQuantity[8];
	
	char providerID[10];
	char pPartID[10];
	char pPrice[8];
	char pQuantity[8];
	EXEC SQL END DECLARE SECTION;
	int total_number = 0;
	int doN = 0;
	float cfPrice;
	float pfPrice;
	float cfQuantity;
	float pfQuantity;
	char t;
	
	strcpy(customerID,tCustomerID);
	strcpy(cPartID,tPartID);
	strcpy(cPrice,tPrice);
	strcpy(cQuantity,tQuantity);
	cfPrice = (float)atof(tPrice);
	cfQuantity = (float)atof(tQuantity);
	/*printf("%-10s%-10s%-8s%-8s\n",tCustomerID,tPartID,tPrice,tQuantity);	
	printf("%-10s%-10s%-8s%-8s\n",customerID,cPartID,cPrice,cQuantity);*/
	
	EXEC SQL DECLARE advice_supply_cursor CURSOR FOR SELECT * FROM Supply WHERE PartID = :cPartID;/* AND QUANTITY >= :fQuantity ; */
   	EXEC SQL OPEN advice_supply_cursor;/*PROVIDERID,PARTID,PRICE,QUANTITY*/
   	
   	while(1)
   	{

   		EXEC SQL WHENEVER NOT FOUND DO break;   		
   		EXEC SQL FETCH advice_supply_cursor INTO :providerID,:pPartID,:pPrice,:pQuantity;
   		pfQuantity = (float)atof(pQuantity);
   		if(pfQuantity >= cfQuantity ){
    			++total_number;
    		
    			printf("\n第%d条符合零件%s需求的供应信息为:\n",total_number,tPartID);
			printf("\n\n--- --------- ------------------- ---------------------------- ----------\n");
			printf("%-4s%-10s%-10s%-8s%-8s\n","N","providerID","PartID","Price","Quantity");
    			printf("--- --------- ------------------- ---------------------------- ----------\n");
    		
   			printf("%-4d%-10s%-10s%-8s%-8s\n",total_number,providerID,pPartID,pPrice,pQuantity);
   			printf("--- --------- ------------------- ---------------------------- ----------\n");
   		
   			printf("推荐本笔交易吗?(y/n)>");
   			fflush(stdin);
   			t = getchar();
   			if( t=='n' || t=='N'){
   				puts("\n本供应信息不做推荐!\n");
   			
   			}else{
   				if( !insert_into_agreement(customerID,providerID,cPartID,cfPrice,cfQuantity) ){
   					printf("本供应信息已推荐,点击任意键开始下条供应信息.\n");   
   					getchar();				
   					++doN;
   					pfPrice = (float)atof(pPrice);
   					
   					update_supply(providerID,cPartID,pfPrice,pfQuantity-cfQuantity);
   				}else    printf("ERROR:(advice_supply(...))\n");
   			}/*else*/
   		}/*if*/
   	}/*while*/
   	EXEC SQL CLOSE query_supply_cursor;
	if(!total_number)
   	{	
   		printf("WARING:(advice_supply)There is no supply part.\t\n\n");
   		return 0;
   	}else
		return doN;	/*success*/	
	
}/*advice_supply(...)*/

int insert_into_agreement(char* tCustomerID,char* tProviderID,char* tPartID,float tfPrice,float tfQuantity)
{
	EXEC SQL BEGIN DECLARE SECTION; 
	char customerID[10];
	char PartID[10];
	float Price;
	float Quantity;	
	char providerID[10];
	EXEC SQL END DECLARE SECTION;
	
	strcpy(customerID,tCustomerID);
      	strcpy(providerID,tProviderID);
      	strcpy(PartID,tPartID);
      	Price = tfPrice;
      	Quantity = tfQuantity;

	EXEC SQL WHENEVER SQLERROR GOTO error;
	EXEC SQL INSERT INTO Agreement
		VALUES(:customerID,:providerID,:PartID,:Price,:Quantity,'no','01-1月-01','no','01-1月-01');
	EXEC SQL COMMIT;	
	return 0;
error:
	printf("ERROR:(insert_into_agreement)\n");
	EXEC SQL WHENEVER SQLERROR CONTINUE;    
   	printf("\nORACLE error detected:\n"); 
   	printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc); 
   	/*EXEC SQL ROLLBACK RELEASE; */
   	return 1; 	
	
}/*insert_into_agreement(...)*/

int delete_after(char* tCustomerID,char* tPartID)
{
	/*puts("delete_after(char* customerID,char* partID)\n");*/
	
	EXEC SQL BEGIN DECLARE SECTION; 
	char CustomerID[10];
	char PartID[10];
	EXEC SQL END DECLARE SECTION;
	
	strcpy(CustomerID,tCustomerID);
	strcpy(PartID,tPartID);
	/*printf("%s\t%s\t%s\n",CustomerID,PartID);*/
	EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
	EXEC SQL WHENEVER NOT FOUND GOTO notfound;
	EXEC SQL DELETE FROM After WHERE CustomerID =:CustomerID AND PartID=:PartID;
	EXEC SQL COMMIT;
	printf("\n%s,%s dropped.\n",CustomerID,PartID);
	
	return 0;
	
	notfound:
		printf("\nWARING:(delete_after)The agreement %s,%s, does not exist.\t",CustomerID,PartID);
		return -1;
	
	sqlerr:
		printf("\n(delete_after)删除不成功!\n");
		printf("%70s\n",sqlca.sqlerrm.sqlerrmc);
		EXEC SQL WHENEVER SQLERROR CONTINUE;
		EXEC SQL ROLLBACK;
		return -1;
}/*delete_after(...)*/

int update_supply(char* tProviderID,char* tPartID,float tPrice,float tQuantity)
{
	/*puts("alter_supply_quantity(char* customerID,char* partID,char* fQuantity)\n");*/
	EXEC SQL BEGIN DECLARE SECTION; 
	char ProviderID[10];
	char PartID[10];
	float Price;
	float Quantity;
	EXEC SQL END DECLARE SECTION;
	
	strcpy(ProviderID,tProviderID);
      	strcpy(PartID,tPartID);
	Price=tPrice;
	Quantity=tQuantity;
      		
	EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
	EXEC SQL WHENEVER NOT FOUND GOTO notfound;
	EXEC SQL UPDATE  supply SET ProviderID=:ProviderID,PartID=:PartID,Price=:Price,Quantity=:Quantity
		 WHERE ProviderID=:ProviderID AND PartID=:PartID;
	EXEC SQL COMMIT;
	printf("\n%s,%s updated.\n",ProviderID,PartID);
	return 0;
	
	notfound:
		printf("WARING:(update_supply)supply %s,%s does not exist.\t",ProviderID,PartID);
		return -1;
	
	sqlerr:
		printf("ERROR:(update_supply(...))");
		printf("%70s\n",sqlca.sqlerrm.sqlerrmc);
		EXEC SQL WHENEVER SQLERROR CONTINUE;
		EXEC SQL ROLLBACK;
		return -1;
	
}/*update_supply(...)*/

⌨️ 快捷键说明

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