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

📄 library.cpp

📁 用c的API编写的图书管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// library.cpp : Defines the entry point for the application.
//

# include<stdio.h>
#include <iostream.h>
#include <conio.h>
# include<windows.h>
#include "sql.h"             
#include "sqlext.h"         
#include "sqltypes.h"
# include <odbcss.h> 
#include<string.h>



void inserbook(void);
void deletebook(void);
void borrowbook(void);
void returnbook(void);
void findbook(void);
void findborrowbook(void);
void borrower(void);
void administrator(void);
void addborrower(void);




main()
{
	int j;

	

 
////////////////////////////////////


printf("          *****************************\n");
printf("          *   welcom to the library   *\n");
printf("          *****************************\n\n\n");
printf("         -------------------------------------\n");
printf("        | if you are a administrator enter (1)|\n");
printf("         -------------------------------------\n\n");
printf("         -------------------------------------\n");
printf("        | if you are a borrower enter      (2)|\n");
printf("         -------------------------------------\n\n");
printf("Your Choice: ");
scanf("%d",&j);

if(j==1)
{
	administrator();	
return ;	
}



if(j==2)
{
	borrower();
return ;
}

}



void administrator()
{
	int i,j,k;
	SQLHENV henv1;
	SQLHDBC hdbc1;
	SQLHSTMT hstmt1;
	SQLRETURN r;
	char *databasename="lib";
	char *username="sa";
	char *userpswd="loveshe";
	char id[16];
	char password[16];
	char checkpswd[20];
	char stmt_buf[128];
	long word;
	r=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv1);
	if ( r != SQL_SUCCESS ) 
	{ 
		printf( "ERROR:SQLAllocHandle error1!\n") ; 
		exit(1); 
	} 

	
	r = SQLSetEnvAttr ( henv1, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 ); 
	if ( r != SQL_SUCCESS ) 
	{ 
	printf( "ERROR:SQLSetEnvAttr error!" ); 
	exit(1); 
	} 



	r=SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);

	if ( r != SQL_SUCCESS ) { 

	
		printf("ERROR:SQLSetEnvAttr error2!\n") ; 


		exit(1); }
	


	r=SQLConnect(hdbc1,
		(SQLCHAR*)databasename,	SQL_NTS,(SQLCHAR*)username,SQL_NTS,(SQLCHAR*)userpswd,SQL_NTS);
	if(r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO )
	{ 
	printf( "ERROR:SQLAllocHandle4 error!\n") ;
	exit(1); 
	}


	r = SQLAllocHandle ( SQL_HANDLE_STMT, hdbc1, &hstmt1); 
	if ( r != SQL_SUCCESS ) 
	{ 

		printf("ERROR:SQLAllocHandle3 error!\n"); 

		exit(1); 
	} 
	printf("         ~~~~~~~~~~~~~\n");
	printf("        |enter you id:|\n");
	printf("         ~~~~~~~~~~~~~   ");
	scanf("%s",id);
	printf("         ~~~~~~~~~~~~~~~~~~~~~\n");
	printf("         |enter you password:|\n");
	printf("         ~~~~~~~~~~~~~~~~~~~~~   ");
	char p;//储存临时的输入字符
	int pi=0;
	p=getch();//读取键盘输入,不回显
	while(p!=13){//如果输入回车,结束输入,对比密码
		if(p==8){//如果读入退格键,则消除上一输入
			printf("\b");
			printf(" ");
			printf("\b");
			i--;
		}
		else{
			password[pi]=p;
		    printf("*");
		    i++;
		}
		p=getch();
	}
	password[pi]='\0';

	printf("\n\n\n");
	
	strcpy(stmt_buf,"select pswd from administrator where administratorid=\'");
	strcat(stmt_buf,id);
	strcat(stmt_buf,"\'");

	r = SQLExecDirect( hstmt1, (SQLCHAR *)stmt_buf, strlen(stmt_buf) ); 
	if ( r != SQL_SUCCESS )
	{ 
	printf("SQLExecDirect error!\n\n" ) ; 
	return ; 
	} 
	SQLBindCol ( hstmt1,1, SQL_C_CHAR, (SQLPOINTER)checkpswd,20, &word);

	r = SQLFetch ( hstmt1 ); 
	if ( r == SQL_ERROR || r == SQL_SUCCESS_WITH_INFO) 
	{ 
			j=1;
			printf("FETCH ERROE!\n" ); 
		 
		} 
	if ( r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO)
		{
		for(k=0;k<strlen(password);k++)
			if(password[k]!=checkpswd[k])
				break;
		if(k==strlen(password))
		{
		while(1)
			{
			r=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv1);
			if ( r != SQL_SUCCESS ) 
			{ 
			printf( "SQLAllocHandle error1!\n") ; 
				exit(1); 
				} 

	
			r = SQLSetEnvAttr ( henv1, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 ); 
			if ( r != SQL_SUCCESS ) 
			{ 
			printf( "SQLSetEnvAttr error!" ); 
			exit(1); 
			} 



			r=SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);

			if ( r != SQL_SUCCESS ) { 

	
			printf("SQLSetEnvAttr error2!\n") ; 


				exit(1); }
	


			r=SQLConnect(hdbc1,
			(SQLCHAR*)databasename,	SQL_NTS,(SQLCHAR*)username,SQL_NTS,(SQLCHAR*)userpswd,SQL_NTS);
			if(r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO )
			{ 
			printf( "SQLAllocHandle4 error!\n") ;
			exit(1); 
			} 
			r = SQLAllocHandle ( SQL_HANDLE_STMT, hdbc1, &hstmt1); 
			if ( r != SQL_SUCCESS ) 
			{ 

			printf("SQLAllocHandle3 error!\n"); 

			exit(1); 
			} 	
				


			printf("         enter a number to swith what you want to do\n\n");
			printf("         ----------------------------\n");
			printf("        |enter (0) to quit          |\n");
			printf("         ----------------------------\n");
			printf("         ----------------------------\n");
			printf("        |enter (1) to insert book   |\n");
			printf("         ----------------------------\n");
			printf("         ----------------------------\n");
			printf("        |enter (2) to delete book   |\n");
			printf("         ----------------------------\n");
			printf("         ----------------------------\n");
			printf("        |enter (3) to borrow book   |\n");
			printf("         ----------------------------\n");
			printf("         ----------------------------\n");
			printf("        |enter (4) to return book   |\n");
			printf("         ----------------------------\n");
			printf("         ----------------------------\n");
			printf("        |enter (5) to add a borrower|\n");
			printf("         ----------------------------\n");
			printf("Enter Your Choice:");
			scanf("%d",&i);
			if(i==1)
			inserbook();
			else if(i==2)
				deletebook();
	
			else if(i==3)
				borrowbook();
			else if(i==4)
				returnbook();
			else if(i==5)
				addborrower();
			else if(i==0)
					break;
			

			else
				
			{
				printf("      !!!you enter a wrong number.\n\n");
				continue;
			}
			}
			}

		
		} 

SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);
SQLDisconnect(hdbc1);


SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV,henv1);
return  ;

}






void borrower()
{
	int i;

	while(1)
	{

    printf("         -----------------------------------------\n");
	printf("         |enter (0)to quit                       |\n");
	printf("         -----------------------------------------\n");
	printf("         -----------------------------------------\n");
	printf("         |enter (1)to find book by the book name |\n");
	printf("         -----------------------------------------\n");
	printf("         -----------------------------------------\n");
	printf("         |enter (2) to find books that you borrow|\n");
	printf("         -----------------------------------------\n");
	scanf("%d",&i);
	if(i==1)
	findbook();
	if(i==2)
		findborrowbook();
	else if(i==0)
		break;
	}


}








void inserbook()
{
	SQLHENV henv1;
	SQLHDBC hdbc1;
	SQLHSTMT hstmt1;
	char *databasename="lib";
	char *username="sa";
	char *userpswd="loveshe";
	SQLRETURN r;
	char stmt_buf[128];
	char booknum[20];
	char bookname[20];
	char author[20];
	char publish[20];
	char price[10];
	char amount[5];
	char check[128];
	char checkbookname[20];
	char addnum[5];
	char add[128];
	char prestring[128]="insert into bookinf(booknum,bookname,author,publish,price,amount,remain)values( \'";
	long c;
	
	//get information
	printf("put in book-number\n");
		scanf("%s",booknum);



	
	r=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv1);
	if ( r != SQL_SUCCESS ) 
	{ 
		printf( "SQLAllocHandle error1!\n") ; 
		exit(1); 
	} 
	
	r = SQLSetEnvAttr ( henv1, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 ); 
	if ( r != SQL_SUCCESS ) 
	{ 
	printf( "SQLSetEnvAttr error!" ); 
	exit(1); 
	} 

	r=SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);

	if ( r != SQL_SUCCESS ) { 
		printf("SQLSetEnvAttr error2!\n") ; 
		exit(1); }
	
	r=SQLConnect(hdbc1,	(SQLCHAR*)databasename,	SQL_NTS,(SQLCHAR*)username,SQL_NTS,(SQLCHAR*)userpswd,SQL_NTS);
	if(r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO )
	{ 
	printf( "SQLAllocHandle4 error!\n") ;
	exit(1); 
	}


	r = SQLAllocHandle ( SQL_HANDLE_STMT, hdbc1, &hstmt1); 
	if ( r != SQL_SUCCESS ) 
	{ 

		printf("SQLAllocHandle3 error!\n"); 

		exit(1); 
	} 




	
	strcpy(check,"select bookname from bookinf where booknum=\'");
	strcat(check,booknum);
	strcat(check,"\'");
//执行sql
	r = SQLExecDirect( hstmt1, (SQLCHAR *)check, strlen(check) ); 
	if ( r != SQL_SUCCESS )
	{ 
	printf("SQLExecDirect error!\n" ) ; 
	return ; 
	} 

//取出书名
	SQLBindCol ( hstmt1,1, SQL_C_CHAR, (SQLPOINTER)checkbookname,20, &c);

	r = SQLFetch ( hstmt1 ); 
//该书存在		
	if ( r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO)
	{ 	
		printf("the book exist \n\nhow many books do you want to addnum\n\n");

		scanf("%s",addnum);

		strcpy(add,"update  bookinf set amount=amount+");
		strcat(add,addnum);
		strcat(add,",remain=remain+");
		strcat(add,addnum);



	r=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv1);
	if ( r != SQL_SUCCESS ) 
	{ 
		printf( "SQLAllocHandle error1!\n") ; 
		exit(1); 
	} 
	
	r = SQLSetEnvAttr ( henv1, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 ); 
	if ( r != SQL_SUCCESS ) 
	{ 
	printf( "SQLSetEnvAttr error!" ); 
	exit(1); 
	} 

	r=SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);

	if ( r != SQL_SUCCESS )
	{ 
		printf("SQLSetEnvAttr error2!\n") ; 
		exit(1); 
	}
	
	r=SQLConnect(hdbc1,	(SQLCHAR*)databasename,	SQL_NTS,(SQLCHAR*)username,SQL_NTS,(SQLCHAR*)userpswd,SQL_NTS);
	if(r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO )
	{ 
	printf( "SQLAllocHandle4 error!\n") ;
	exit(1); 
	}


	r = SQLAllocHandle ( SQL_HANDLE_STMT, hdbc1, &hstmt1); 
	if ( r != SQL_SUCCESS ) 
	{ 

		printf("SQLAllocHandle3 error!\n"); 

		exit(1); 
	} 


		r = SQLExecDirect( hstmt1, (SQLCHAR *)add, strlen(add) ); 
		if ( r != SQL_SUCCESS )
		{ 
		printf("SQLExecDirect error!\n" ) ; 
		return ; 
		} 
		printf("add successfully\n\n");
		return;


			
	} 

	

//该书不存在


	printf("put in book-name\n");
		scanf("%s",bookname);
	printf("put in author\n");
		scanf("%s",author);
	printf("put in publish\n");
		scanf("%s",publish);
	printf("put in price\n");
		scanf("%s",price);
	printf("put in amount\n");
		scanf("%s",amount);






	r=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv1);
	if ( r != SQL_SUCCESS ) 
	{ 
		printf( "SQLAllocHandle error1!\n") ; 
		exit(1); 
	} 
	
	r = SQLSetEnvAttr ( henv1, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 ); 
	if ( r != SQL_SUCCESS ) 
	{ 
	printf( "SQLSetEnvAttr error!" ); 
	exit(1); 
	} 

	r=SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);

	if ( r != SQL_SUCCESS ) { 
		printf("SQLSetEnvAttr error2!\n") ; 
		exit(1); }
	
	r=SQLConnect(hdbc1,	(SQLCHAR*)databasename,	SQL_NTS,(SQLCHAR*)username,SQL_NTS,(SQLCHAR*)userpswd,SQL_NTS);
	if(r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO )
	{ 
	printf( "SQLAllocHandle4 error!\n") ;
	exit(1); 
	}


	r = SQLAllocHandle ( SQL_HANDLE_STMT, hdbc1, &hstmt1); 
	if ( r != SQL_SUCCESS ) 
	{ 

		printf("SQLAllocHandle3 error!\n"); 

		exit(1); 
	} 



	strcpy(stmt_buf,prestring);
	strcat(stmt_buf,booknum);
	strcat(stmt_buf,"\',\'");
	strcat(stmt_buf,bookname);
	strcat(stmt_buf,"\',\'");
	strcat(stmt_buf,author);
	strcat(stmt_buf,"\',\'");
	strcat(stmt_buf,publish);
	strcat(stmt_buf,"\',");
	strcat(stmt_buf,price);
	strcat(stmt_buf,",");
	strcat(stmt_buf,amount);
	strcat(stmt_buf,",");
	strcat(stmt_buf,amount);
	strcat(stmt_buf,")");

	//execute sql
	r = SQLExecDirect( hstmt1, (SQLCHAR *)stmt_buf, strlen(stmt_buf) ); 
	if ( r != SQL_SUCCESS ) { 
	printf("SQLExecDirect error!\n\n" ) ; 
	return; 
	} 
	printf("insert successfully!\n\n");
	SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);
	SQLDisconnect(hdbc1);


SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV,henv1);
return  ;

}

⌨️ 快捷键说明

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