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

📄 pro_modify.pc

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

 extern bus_modifyMenu();
 int insert_pro(char* tID,char* tName,char* tAddress,char* tTel,char* tIntro);
 void menu_insert_pro();
 extern int error();
 int delete_pro( char* tID );
 void menu_delete_pro();
 int query_pro(char* tID);
 void menu_query_pro();
 void menu_update_pro();
 int update_pro( char* tID,char* tName,char* tAddress,char* tTel,char* tIntro );
 void bus_Menu();
 int query_proID_unique(char* tID);
 extern int query_proID_unique(char* tID);
void menu_insert_pro()
{
	char t,m;
	char ID[10];
	char Name[20];
	char Address[30];
	char Tel[16];
	char Intro[100];

	while(1)
	{
		printf("\t\t添加供应商信息\n\n");
		printf("请录入供应商信息:\n\n");
		printf("\t供应商号->");
		scanf("%s",ID);
		if( query_proID_unique(ID) ){
			printf("供应商号%s已经存在,请选择另外的供应商号或者输入n退出\n",ID);
			fflush(stdin);
			m=getchar();
			if(m=='N'||m=='n')	break;
			else		continue;
		}/*if*/ else{
		printf("\t供应商名->");
		scanf("%s",Name);
		printf("\t地址->");
		scanf("%s",Address);
		printf("\t电话->");
		scanf("%s",Tel);
		printf("\t简介->");
		scanf("%s",Intro);
		printf("\n");
		fflush(stdin);
		if(!insert_pro(ID,Name,Address,Tel,Intro))
			printf("成功添加供应商信息!");	
		else printf("ERROR:(menu_insert_pro)");	
	}/*while*/		
		printf("继续添加?(Y/N)");	
			t=getchar();
			if(t=='N'||t=='n')break;				
		}
	bus_modifyMenu();
}/*menu_insert_pro()*/

int insert_pro(char* tID,char* tName,char* tAddress,char* tTel,char* tIntro)
{
	EXEC SQL BEGIN DECLARE SECTION; 
	char ID[10];
	char Name[20];
	char Address[30];
	char Tel[16];
	char Intro[100];
	EXEC SQL END DECLARE SECTION;	
			
	strcpy(ID,tID);
      	strcpy(Name,tName);
      	strcpy(Address,tAddress);
      	strcpy(Tel,tTel);
      	strcpy(Intro,tIntro);

	EXEC SQL WHENEVER SQLERROR GOTO error;
	EXEC SQL INSERT INTO Provider
		VALUES(:ID,:Name,:Address,:Tel,:Intro);
	EXEC SQL COMMIT;	
	return 0;
error:
	printf("ERROR:(insert_pro)");
	EXEC SQL WHENEVER SQLERROR CONTINUE;    
   	printf("\nORACLE error detected:\n"); 
   	printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc); 
   	EXEC SQL ROLLBACK RELEASE; 
   	return 1; 	
}/*insert_pro()*/


void menu_delete_pro()
{
	char t;
	char ID[10];
	while(1)
		{
		printf("\t\t删除供应商信息\n\n");
		printf("请录入预删除的供应商号:\n\n");
		printf("\t供应商号->");
		scanf("%s",ID);
		fflush(stdin);
		
		if( query_pro( ID ) )		
			printf("WARING:(munu_delete_pro)Provider %s does not exist.\t\n\n",ID);
		else 
			if( !delete_pro( ID ) )
				printf("成功删除供应商号为%s的信息!",ID);	
			else	printf("WARING:(delete_pro)Provider %s does not exist.\t",ID);
/*		else continue;	*/		
		printf("还要删除吗?(Y/N)");	
			t=getchar();
			if(t=='N'||t=='n')break;				
		}
	bus_modifyMenu();
	
}/*menu_delete_pro()*/

int delete_pro( char* tID)
{

	EXEC SQL BEGIN DECLARE SECTION;
	char seekID[10];
	EXEC SQL END DECLARE SECTION;
		
/*	char ID[10];
	char Name[20];
	char Address[30];
	char Tel[16];
	char Intro[100];*/
	
	strcpy(seekID,tID);
	EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
	EXEC SQL WHENEVER NOT FOUND GOTO notfound;
	EXEC SQL DELETE FROM Provider WHERE ID=:seekID;
	EXEC SQL COMMIT;
	printf("%s dropped.\n",seekID);
	return 0;
	
	notfound:
		printf("WARING:999Provider %s does not exist.\t",seekID);
		return -1;
	
	sqlerr:
		printf("%70s\n",sqlca.sqlerrm.sqlerrmc);
		EXEC SQL WHENEVER SQLERROR CONTINUE;
		EXEC SQL ROLLBACK;
		return -1;
			
/*	EXEC SQL DECLARE del_pro SCROLL CURSOR FOR
		SELECT ID,Name,Address,Tel,Intro FROM Provider WHERE ID=:seekID FOR UPDATE;
	EXEC SQL OPEN del_pro;
	EXEC SQL WHENEVER NOT FOUND DO BREAK;
	EXEC SQL FETCH FIRST  del_pro INTO :ID,:Name,:Address,:Tel,:Intro;
	EXEC SQL DELETE FROM Provider WHERE CURRENT OF del_pro;*/
	
	
/*	EXEC SQL PREPARE stat FROM
			'DELETE Provider WHERE ID=:a';
	EXEC SQL EXECUTE stat USING :ID;*/
/*	EXEC SQL WHENEVER SQLERROR DO error();
	EXEC SQL DELETE FROM Provider
		 WHERE  ID=:ID;*/
/*	EXEC SQL COMMIT;
	EXEC SQL CLOSE del_pro;	
	return 0;	*/
	
}/*delete_pro(...)*/

void menu_query_pro()
{
	char t;
	char ID[10];
	while(1)
	{
		fflush(stdin);
		printf("\n\n\t\t查询供应商信息\n\n");
		printf("请录入要查询的供应商号:\n\n");
		printf("\t供应商号->");
		scanf("%s",ID);
		fflush(stdin);
		
		if( query_pro( ID ) )
			printf("WARING:(menu_query_pro)Provider %s does not exist.\t\n\n",ID);	
		
		printf("还要查询吗?(Y/N)");	
			t=getchar();
			if(t=='N'||t=='n')break;				
	}/*while*/
	bus_modifyMenu();			
}/*menu_query_pro()*/

int query_pro(char* tID)
{
	EXEC SQL BEGIN DECLARE SECTION; 
	char ID[10];
	char Name[20];
	char Address[30];
	char Tel[16];
	char Intro[100];
	
	char seekID[10];
	
	EXEC SQL END DECLARE SECTION;
	int total_number=0;
	
	strcpy(seekID,tID);
/*	EXEC SQL WHENEVER NOT FOUND GOTO notfound; *//*error*/

	EXEC SQL DECLARE pro_cursor CURSOR FOR SELECT * FROM Provider WHERE ID=:seekID ;
   	EXEC SQL OPEN pro_cursor;
   	
 	
				
/*	printf("\n相应的信息如下:");
	printf("\n\n--- --------- ------------------- ---------------------------- ----------\n");
	printf("%-4s%-10s%-20s%-30s%-16s\n","N","ID","Name","Address","Tel");
    	printf("--- --------- ------------------- ---------------------------- ----------\n");*/
   	while(1)
   	{
   		EXEC SQL WHENEVER NOT FOUND DO break;   		
   		EXEC SQL FETCH pro_cursor INTO :ID,:Name,:Address,:Tel,:Intro;
    		++total_number;
    		if( total_number == 1 )
    		{
    			printf("\n相应的信息如下:");
			printf("\n\n--- --------- ------------------- ---------------------------- ----------\n");
			printf("%-4s%-10s%-20s%-30s%-16s\n","N","ID","Name","Address","Tel");
    			printf("--- --------- ------------------- ---------------------------- ----------\n");
    		}
   		printf("%-4d%-10s%-20s%-30s%-16s\n",total_number,ID,Name,Address,Tel);
   		printf("--- --------- ------------------- ---------------------------- ----------\n");
   		printf("%-50s\n","Intro");
    		printf("-------------------------------------------------------------------------\n");
   		printf("%-50s\n",Intro);
   		printf("-------------------------------------------------------------------------\n");
   		printf("--- --------- ------------------- ---------------------------- ----------\n\n\n");
   	}   	
   	EXEC SQL CLOSE pro_cursor;
   	if(!total_number)
   	{	
   		printf("WARING:(query_pro)Provider %s does not exist.\t\n\n",seekID);
   		return -1;
   	}else
		return 0;	/*success*/	
	
	  
		
}/*query_pro()*/

void menu_update_pro()
{
	char t;
	char ID[10];
	char Name[20];
	char Address[30];
	char Tel[16];
	char Intro[100];
		
	while(1)
	{
		fflush(stdin);
		printf("\n\n\t\t更新供应商信息\n\n");
		printf("请录入要更新的供应商号:\n\n");
		printf("\t供应商号->");
		scanf("%s",ID);
		/*fflush(stdin);*/
		
		if( query_pro( ID ) )
			printf("WARING:(menu_update_pro)Provider %s does not exist.\t\n\n",ID);
		else{	
			printf("请录入更改的信息:(0 to give up update)\n");	
			printf("\t供应商名->");
			scanf("%s",Name);
			if(!strcmp(Name,"0")){
				puts("\tExit to abort menu!");break;
			}else{
				printf("\t地址->");
				scanf("%s",Address);
				printf("\t电话->");
				scanf("%s",Tel);
				printf("\t简介->");
				scanf("%s",Intro);
				printf("\n");
			}/*else*/	
		
		
			if( update_pro( ID,Name,Address,Tel,Intro ) )
				printf("WARING:(menu_update_pro)Provider %s does not exist.\t",ID);	
			else printf("成功更新%s的信息!",ID);
		}/*else*/	
			fflush(stdin);		
			printf("还要更新其他的吗?(Y/N)");	
			t=getchar();
			if(t=='N'||t=='n')break;				
		
	}/*while*/
	bus_modifyMenu();
}/*menu_update_pro()*/

int update_pro( char* tID,char* tName,char* tAddress,char* tTel,char* tIntro )
{
	
	EXEC SQL BEGIN DECLARE SECTION; 
	char ID[10];
	char Name[20];
	char Address[30];
	char Tel[16];
	char Intro[100];
	EXEC SQL END DECLARE SECTION;
	
	strcpy(ID,tID);
      	strcpy(Name,tName);
      	strcpy(Address,tAddress);
      	strcpy(Tel,tTel);
      	strcpy(Intro,tIntro);
      		
	EXEC SQL WHENEVER SQLERROR GOTO sqlerr;
	EXEC SQL WHENEVER NOT FOUND GOTO notfound;
	EXEC SQL UPDATE  Provider SET Name=:Name,Address=:Address,Tel=:Tel,Intro=:Intro
		 WHERE ID=:ID;
	EXEC SQL COMMIT;
	printf("%s updated.\n",ID);
	return 0;
	
	notfound:
		printf("WARING:(update_pro)Provider %s does not exist.\t",ID);
		return -1;
	
	sqlerr:
		printf("%70s\n",sqlca.sqlerrm.sqlerrmc);
		EXEC SQL WHENEVER SQLERROR CONTINUE;
		EXEC SQL ROLLBACK;
		return -1;
	
}/*update_pro( ... )*/

 int query_proID_unique(char* tID)
 {
 	EXEC SQL BEGIN DECLARE SECTION; 
 	char seekID[10];
	char temp[10];
	EXEC SQL END DECLARE SECTION;
	int total_number=0;
	
	strcpy(seekID,tID);
/*	EXEC SQL WHENEVER NOT FOUND GOTO notfound;*/

	EXEC SQL DECLARE pro_proID_cursor CURSOR FOR SELECT ID FROM Provider WHERE ID=:seekID ;
   	EXEC SQL OPEN pro_proID_cursor;
   	while(1)
   	{
   		EXEC SQL WHENEVER NOT FOUND DO break;   		
   		EXEC SQL FETCH pro_proID_cursor INTO :temp;
    		++total_number;
    	}
    	if( total_number )
   		return 1;
   	else 	return 0;
/*   notfound:
   	printf("WARING(query_proID_unique)%s does not exist!",seekID);
   	return 0;*/
 }/*query_cusID_unique(...)*/

⌨️ 快捷键说明

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