程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 使用數據庫sqlite3 C語言實現登陸注冊的功能,數據庫sqlite3

使用數據庫sqlite3 C語言實現登陸注冊的功能,數據庫sqlite3

編輯:C++入門知識

使用數據庫sqlite3 C語言實現登陸注冊的功能,數據庫sqlite3


//此代碼為注冊功能


void create_regtable()
{    
	int rc;       //rc為返回值,判斷函數是否執行成功  rc=0函數執行成功,rc !=0函數執行失敗
    sqlite3 *db;  //SQLite數據庫指針 數據庫結構體指針sqlite3為結構體
	char *pFileName = "users.db";  //數據庫文件名
    char *zErr;
   
 
	rc = sqlite3_open(pFileName, &db); /*打開數據庫*/
	if(rc)                             /*假,關閉數據庫*/
	{
		     cleardevice();
			 setmode();
			 outtextxy(170,200,"打開數據庫失敗!");
			 Sleep(1000);
             main();
		     sqlite3_close(db);
	}
	
	char *pSQL="create table users(id int , pwd int ,primary key(id,pwd))";
 
   	rc = sqlite3_exec(db, pSQL, 0,0, &zErr);   /* sqlite執行接口實現表的創建*/
	
	if(rc!=SQLITE_OK)
	{
		if (zErr!=NULL)
		{
		   
			 cleardevice();
			 setmode();
			 outtextxy(170,200,"SQL錯誤!");
			 Sleep(1000);
             main();
			 sqlite3_free(zErr);  /* 釋放錯誤信息所占用的空間*/
		}
	}
    	sqlite3_close(db);
 
}




void reg_Insert() 
{	
    users a;
	int rc;
 	char No_id[10]={0,0,0,0,0,0,0,0,0,0};  
	char code[6]={"12345"};
	char incode[6];
    sqlite3 *db;  //SQLite數據庫指針
    char *pSQL;
    char * zErr;   /* 定義返回錯誤信息的變量*/
 
    char *pFileName = "users.db";  //數據庫文件名  
    rc = sqlite3_open(pFileName, &db); /*打開數據庫*/
 
    if(rc)                             /*假,關閉數據庫*/
	{ 
	         cleardevice();
			 setmode();
			 outtextxy(170,200,"打開數據庫失敗!");
			 voice_name_error();
             main();
             sqlite3_close(db);
	}

       InputBox(incode,6,"驗證注冊編號,非教師人員不允許注冊");

    if(strcmp(incode,code)==0)
	{
	
        InputBox(a.id,10,"請輸入賬號");
	   
     	outtextxy(295,270,a.id);

     if(strcmp(a.id,No_id)==0)
	 {
			 cleardevice();
			 setmode();
			 outtextxy(170,200,"用戶名不能為空,請重新注冊!");
			 voice_name_error();
             main();
		 }
	   else {
 
      
   InputBox(a.pwd,10,"請輸入密碼");

  	  outtextxy(293,339,"********");
   
      Sleep(1000);
 
    pSQL=sqlite3_mprintf("insert into users values('%s','%s')",a.id,a.pwd); 

	  
 	rc = sqlite3_exec(db,pSQL,0,0,&zErr); 
   
     if(rc) //rc=1
		{
		 cleardevice();
		 setmode();
		 outtextxy(220, 200, "帳號注冊失敗!");
		 voice_register_ok();
		 
		 main();
		 sqlite3_close(db);
		}
      else
		{
		  outtextxy(220, 200, rc);
		 cleardevice();
		 setmode();
		 outtextxy(220, 200, "帳號注冊成功!");
		 voice_register_ok();
		 
		 main();
         sqlite3_close(db);
	  }
	}
        
	  } else{ cleardevice();main();}

   }     
  

 

//此代碼為實現賬號密碼登錄驗證


void Login()
{   
    users a;
    int rc;    
    sqlite3 *db;  //SQLite數據庫指針   sqlite3結構體  *db指向sqlite3結構體的指針
   const    char *pFileName = "users.db";   
   char * zErr;   /* 定義返回錯誤信息的變量*/
    rc = sqlite3_open(pFileName, &db); /*打開數據庫*/
    if(rc)                             /*假,關閉數據庫*/
    {
                   cleardevice(); 
                   setmode();
                   settextstyle(30, 0, "楷體"); 
                   settextcolor(RGB(0,500,0)); 
                   outtextxy(220, 200, "打開數據庫失敗!");
                   voice_No_name();
                   main();
                   sqlite3_close(db);
    }
    InputBox(a.id,10,"請輸入賬號");
     outtextxy(295,270,a.id); 
     InputBox(a.pwd,10,"請輸入密碼");  
    outtextxy(293,339,"********");  
    Sleep(1500); 
  char *pSQL=sqlite3_mprintf("insert into users(id,pwd)values('%s','%s')",a.id,a.pwd); 
  //主要是獲取rc返回值,進行判斷
 // id和pwd共同組成一個表的主鍵(聯合主鍵) id/pwd誰都不能插入重復的 rc==1 錯誤 if取反rc==0登陸成功
 //插入的id不同pwd不同 插入成功 rc==0 if取反rc==1登陸失敗
 //相當於用戶名不能有重復的,用戶名跟密碼不能一樣,增強賬號的安全性。
 rc = sqlite3_exec(db, pSQL, NULL, NULL, &zErr);
//!rc==1;  error
        if (!rc)  
        {  //刪除多余的數據
            char *pSQL=sqlite3_mprintf("delete from users where id = '%s' and pwd = '%s' ",a.id,a.pwd); 
            rc = sqlite3_exec(db, pSQL, NULL, NULL, &zErr);
           cleardevice(); 
           setmode();
           settextstyle(30, 0, "楷體");
           settextcolor(RGB(255,0,0)); 
           outtextxy(250, 200, "登錄失敗!");
           Sleep(1000);
           cleardevice();       
           main();      
        }
       else     ///rc=0 ok
      {
            cleardevice(); 
            setmode();
            settextstyle(30, 0, "楷體");
            settextcolor(RGB(0,500,0)); 
            outtextxy(250, 200, "登錄成功,歡迎使用!");
            voice_succeed();
            cleardevice();       
            option_Menu();      
      }
         sqlite3_close(db);
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved