服務器接受到客戶端選擇的功能號后,跳轉到每一個功能的相應選項中。
(1)存款:在存款中,數據庫里會改變的有時間,操作職工號,利息,存取金額,剩余金額,由于改動的內容較多,自己便將改動后的信息全部賦給類中變量,然后將數據庫里最新的動態消息刪除,講這些新的內容重新存放到數據庫中,存放的同時一定要同時保存到文件中,這樣每一個操作步驟都會在文件中,方便客戶查看自己的操作記錄,代碼:
int result ; char buff[100]; sPRintf(buff,"select * from kehu where id=%d;",object->cliid); result = MySQL_query(mysql, buff); if (result != 0) { printf("error: %s/n", mysql_error(mysql)); return fail; } MYSQL_RES* mysql_res; MYSQL_FIELD* mysql_field; MYSQL_ROW mysql_row; unsigned int cols; mysql_res = mysql_store_result(mysql); cols = mysql_num_fields(mysql_res); if (mysql_res) { while ((mysql_row = mysql_fetch_row(mysql_res))) { for (unsigned int i=0; i<cols; ++i) { printf("%s/t", mysql_row[i] ? mysql_row[i] : "NULL"); } printf("/n"); if(atoi(mysql_row[5]) == object->cliid) { double sum; sum = atof(mysql_row[9]) + (object->shrmb()); object->setclient((string)mysql_row[1],(string)mysql_row[2],(string)mysql_row[3],(string)mysql_row[4],object->shrmb(),sum); object->cliid = atoi(mysql_row[5]); object->bankname = (string)mysql_row[6]; object->mydate = gettime() ; char buff2[100];//刪除該行 sprintf(buff2,"delete from kehu where id = %d",object->cliid); mysql_query(mysql,buff2); char buff[300];//重新插入 sprintf(buff,"insert into kehu values(%d,'%s','%s','%s','%s',%d,'%s','%s',%lf,%lf)",(object->caozuohao),(object->shcliname()).c_str(),(object->shidentity()).c_str(),(object->shclipassWord()).c_str(),(object->shreclipassword()).c_str(),(object->cliid),(object->bankname).c_str(),(object->mydate).c_str(),(object->shrmb()),(object->shrest())); mysql_query(mysql,buff); table.yuangong = object->caozuohao; strcpy(table.name,(object->shcliname()).c_str()); table.id = object->cliid ; strcpy(table.identity ,(object->shidentity()).c_str()); strcpy(table.bank , (object->bankname).c_str()) ; table.lixi =(object->shrest())*(0.0001); strcpy(table.date , (object->mydate).c_str()); table.cunqu = object->shrmb(); table.rest = object->shrest(); ofstream outfile; char repair[50]; sprintf(repair,"%s的存折賬單.txt",(object->shcliname()).c_str()); outfile.open(repair,ios::binary | ios::app); outfile.write((char *)&table,sizeof(table)); outfile.close(); return success ; } else { return fail ; } } mysql_free_result(mysql_res); }取款和轉賬同存款流程差不多,不過在取款和轉賬需要先對客戶輸入的賬號和密碼經行驗證,驗證對了才能繼續進行操作,否則給個友好提醒,并返回到操作界面讓客戶重新操作,查詢余額時同樣需要對客戶進行驗證密碼,再到數據庫中相應的位置將余額保存到變量里返回給客戶端并打印,查看詳細賬單則需要在服務器驗證之后在客戶端處從本地文件中找出對應客戶的文件,將里面所有的信息都打印出來,接著則是更改密碼,有了上面的思路后,后面的操作就會明了很多,下面是更改密碼的代碼:int result ; char buff[100]; sprintf(buff,"select * from kehu where id=%d;",object->cliid); result = mysql_query(mysql, buff); if (result != 0) { printf("error: %s/n", mysql_error(mysql)); return fail; } MYSQL_RES* mysql_res; MYSQL_FIELD* mysql_field; MYSQL_ROW mysql_row; unsigned int cols; mysql_res = mysql_store_result(mysql); cols = mysql_num_fields(mysql_res); if (mysql_res) { while ((mysql_row = mysql_fetch_row(mysql_res))) { for (unsigned int i=0; i<cols; ++i) { printf("%s/t", mysql_row[i] ? mysql_row[i] : "NULL"); } printf("/n"); // if(atoi(mysql_row[5]) == object->cliid) if(((string)mysql_row[3] == object->shclipassword())&&((string)mysql_row[4] == object->shreclipassword()))//判斷密碼 { object->setclient((string)mysql_row[1],(string)mysql_row[2],object->linshi,object->linshi,atof(mysql_row[8]),atof(mysql_row[9])); object->cliid = atoi(mysql_row[5]); object->bankname = (string)mysql_row[6]; object->mydate = gettime() ; char buff2[100];//刪除該行 sprintf(buff2,"delete from kehu where id = %d",object->cliid); mysql_query(mysql,buff2); char buff3[300];//重新插入 sprintf(buff3,"insert into kehu values(%d,'%s','%s','%s','%s',%d,'%s','%s',%lf,%lf)",(object->caozuohao),(object->shcliname()).c_str(),(object->shidentity()).c_str(),(object->shclipassword()).c_str(),(object->shreclipassword()).c_str(),(object->cliid),(object->bankname).c_str(),(object->mydate).c_str(),(object->shrmb()),(object->shrest())); mysql_query(mysql,buff3); return success ; } else { return fail ; } } mysql_free_result(mysql_res); }最后一個便是銷戶,驗證好客戶的賬號和信息,在數據庫中找到相應的位置,并刪除該內容,給客戶端一個正確的提示,銷戶便完成。
新聞熱點
疑難解答
圖片精選