📄 library.cpp
字号:
// 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 + -