(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); } |