湖濱散記部落格的樹心幽徑[login][主頁]
433:20181107new_cust顧客基本資料編修程式(t16.c)

(1)編譯

treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/mysqlc$ gcc t16.c `mysql_config --cflags --libs` -o t16

(2)執行

treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/mysqlc$ ./t16

顧客基本資料編修
請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=1
1:顧客基本資料新增程式
請輸入顧客編號=201801
can not found cardid: 201801!!

很好,顧客編號(201801)沒有被使用過
請輸入顧客名稱=小新
待寫入的資料:cR.cardid=201801,cR.uname=小新 cR.remain=0.00
SQL指令: [insert into new_cust (inyear,cardid,uname,cid4,remain) values (107,'201801','小新' ,'xxxx',0.00)] 執行成功!


顧客基本資料編修
請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=2
2:顧客儲值程式
請輸入顧客編號=201801
輸入要儲值的金額 moneyadd=5000
SQL指令: [update new_cust set remain=remain+(5000.00) where cardid='201801'] 執行成功!


顧客基本資料編修
請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=4
4:顧客基本資料列表
SQL: [ select cardid,uname,remain from new_cust ] Execute ok!

100001, 王小虎, -70,
121212, 楊小安, 5666,
201801, 小新, 5000,
712003, 王一志, 1770,

顧客基本資料編修
請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=3
3:顧客基本資料刪除程式
請輸入顧客編號=100001
SQL指令: [delete from  new_cust where cardid='100001'] 執行成功!


顧客基本資料編修
請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=4
4:顧客基本資料列表
SQL: [ select cardid,uname,remain from new_cust ] Execute ok!

121212, 楊小安, 5666,
201801, 小新, 5000,
712003, 王一志, 1770,

顧客基本資料編修
請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=0

謝謝使用本編修程式
treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/mysqlc$

(3)程式碼

treehrt@treehrt-BM6AE-BM1AE-BP1AE:~/mysqlc$ cat t16.c
//gcc t16.c `mysql_config --cflags --libs`
#include <my_global.h>
#include <mysql.h>
#define HOST "localhost"
#define USER "treehrt"
#define PWD "abc123abc123"
#define DB "ilvssell"

typedef struct CUSTREC
{
  //char uid[10];
  double remain;
  //char inyear[5];
  //char dept[10];
  //char grade[10];
  //char class[10];
  char cardid[10];
  char uname[10];
  //char pid[10];
  //char addr[80];
  //char tel[15];
  //char oldclass[10];
  //char sno[2];
  //int lostc;
  //char gen_code;
  //char in_use;
  //char cid[4];

} custRec ;
void finish_with_error(MYSQL *con)
{
  fprintf(stderr, "%s\n", mysql_error(con));
  mysql_close(con);
  exit(1);       
}

int  GetCustRecByNo(char *custno, custRec *pv)
{
  char st[280];
  sprintf(st,"select cardid,UName,remain from new_cust where cardid='%s'",custno);

  MYSQL *con = mysql_init(NULL);
  if (con == NULL) finish_with_error(con);

  if (mysql_real_connect(con, HOST, USER, PWD, DB, 0, NULL, 0) == NULL) finish_with_error(con);
  mysql_query(con, "set names utf8");

  if (mysql_query(con, st)) finish_with_error(con);
//  printf("SQL: [ %s ] Execute ok! \n\n", st);

  MYSQL_RES *result = mysql_store_result(con);
  if (result == NULL) finish_with_error(con);

  MYSQL_ROW row;
  row = mysql_fetch_row(result);
  if (row){
    strcpy(pv->cardid,row[0]);
    strcpy(pv->uname,row[1]);
    pv->remain=atof(row[2]);
    mysql_free_result(result);
    return 1;
  }
  else {
    printf("can not found cardid: %s!!\n",custno);
    mysql_free_result(result);
    return 0;
    }
}

void  add_custs_remain(char *custno, double moneyadd)
{
    char st[500];
        sprintf(st,"update new_cust set remain=remain+(%.2f) where cardid='%s'",moneyadd,custno);
    MYSQL *con = mysql_init(NULL);
    if (con == NULL)  finish_with_error(con);
    if (mysql_real_connect(con, HOST , USER, PWD, DB, 0, NULL, 0) == NULL) finish_with_error(con);
    mysql_query(con, "set names utf8");
    if (mysql_query(con, st)) finish_with_error(con);
      printf("SQL指令: [%s] 執行成功! \n\n", st);
      mysql_close(con);
}

void  list_new_cust()
{
    char st[500];
        sprintf(st,"select cardid,uname,remain from new_cust");
    MYSQL *con = mysql_init(NULL);
    if (con == NULL)  finish_with_error(con);
    if (mysql_real_connect(con, HOST , USER, PWD, DB, 0, NULL, 0) == NULL) finish_with_error(con);
    mysql_query(con, "set names utf8");
    if (mysql_query(con, st)) finish_with_error(con);
    printf("SQL: [ %s ] Execute ok! \n\n", st);

    MYSQL_RES *result = mysql_store_result(con);
    if (result == NULL)  finish_with_error(con);

    int num_fields = mysql_num_fields(result);

      MYSQL_ROW row;
    while ((row = mysql_fetch_row(result))) {
          for(int i = 0; i < num_fields; i++)  printf("%s, ", row[i] ? row[i] : "NULL"); 
          printf("\n");
      }
    mysql_free_result(result);
    mysql_close(con);
}


//   char st[]="insert into new_cust (inyear,cardid,uname,cid4,remain) values (107,712003,'王一志' ,'B301',1000)" ;

void insert_new_cust_rec(custRec cR){
        printf("待寫入的資料:cR.cardid=%s,cR.uname=%s cR.remain=%.2f\n",cR.cardid,cR.uname,cR.remain);
        char st[500];
        sprintf(st,"insert into new_cust (inyear,cardid,uname,cid4,remain) values (107,'%s','%s' ,'xxxx',%.2f)",cR.cardid,cR.uname,cR.remain) ;
    MYSQL *con = mysql_init(NULL);
    if (con == NULL)  finish_with_error(con);
    if (mysql_real_connect(con, HOST , USER, PWD, DB, 0, NULL, 0) == NULL) finish_with_error(con);
    mysql_query(con, "set names utf8");
    if (mysql_query(con, st)) finish_with_error(con);
      printf("SQL指令: [%s] 執行成功! \n\n", st);
}
void del_new_cust_rec(char * custno){
        char st[500];
        sprintf(st,"delete from  new_cust where cardid='%s'",custno) ;
    MYSQL *con = mysql_init(NULL);
    if (con == NULL)  finish_with_error(con);
    if (mysql_real_connect(con, HOST , USER, PWD, DB, 0, NULL, 0) == NULL) finish_with_error(con);
    if (mysql_query(con, st)) finish_with_error(con);
      printf("SQL指令: [%s] 執行成功! \n\n", st);
      mysql_close(con);
}

int main(int argc, char **argv)
{
  char custno[20];
  int sel=0;
  custRec cR;
  while(1){
    printf("\n顧客基本資料編修\n");
      printf("請輸入選擇(1新增 2儲值 3刪除 4列出 0結束) sel=");
      scanf("%d",&sel);
    if (sel==0) {
          printf("\n謝謝使用本編修程式\n");
        exit(1);
        }
    if (sel==1){
          printf("1:顧客基本資料新增程式\n請輸入顧客編號=");
        scanf("%s",custno);
          if(GetCustRecByNo(custno, &cR)!=0){
              printf("\n %s已為[%s]帳戶使用!\n",custno,cR.uname);
            }
        else{
            strcpy(cR.cardid,custno);
            printf("\n很好,顧客編號(%s)沒有被使用過\n請輸入顧客名稱=",custno);
            scanf("%s",cR.uname);
            cR.remain=0;
            insert_new_cust_rec(cR);
            }
        }
    if (sel==2){
          printf("2:顧客儲值程式\n請輸入顧客編號=");
        scanf("%s",custno);
        double moneyadd=0;
        printf("輸入要儲值的金額 moneyadd=");
        scanf("%lf",&moneyadd);
        add_custs_remain(custno, moneyadd);
        }
    if (sel==3){
          printf("3:顧客基本資料刪除程式\n請輸入顧客編號=");
        scanf("%s",custno);
        del_new_cust_rec(custno);
        }
    if (sel==4){
          printf("4:顧客基本資料列表\n");
        list_new_cust();
        }

    }
  exit(0);
}


select id,article_id,topic,text from lt_articles_text where article_id =433; ok. update lt_articles set num_reads=num_reads +1 where id=433; ok.