自測題1道

2021-06-23 05:01:26 字數 4160 閱讀 3285

看到這樣一樣題,想想就簡單的寫了寫自測一下,還是有很多收穫。

需求:1.模擬銀行,客戶關係封裝類;

2.客戶到銀行辦理業務需先排隊;

3.銀行根據佇列處理業務,優選選擇金卡客戶;

4.辦理建卡、存款、取錢、銷戶業務。

**思路:

1.定義銀行類,客戶類,佇列類;

2.思考現實例項,銀行、佇列只能有乙個例項,客戶可以有多個例項

3.理清類關係,銀行依賴於佇列決定客戶,銀行依賴客戶資料處理業務,佇列依賴客戶排隊

4.確定主導類為銀行類,主要的業務邏輯在銀行

debug收穫:

1.前向宣告的類,只能用它的成員指標(之前沒有注意這個問題) 

2.物件傳遞盡量用指標,如果用返回值傳遞只能用堆記憶體

需要優化問題:

1.類的private封裝,賬戶資料結構過於簡單

2.銀行客戶賬戶資料儲存用的是陣列,可以用stl

3.銀行賬號,直接累加,可隨機,要確保唯一

4.**清晰易讀,**業務流程簡化

#include #include #include using namespace std;

//常量巨集

#define queue_longth_max 50

#define card_sum_max 10000

#define golden_sum_limit 888

#define illegal_value 0xffff

//日誌巨集

#define log_info(...) do while(0)

//類宣告

class cservicequeue;

class cbank;

class ccustomer;

class cservicequeue;

enum cardtype

;//業務種類

enum service

;//銀行賬戶

struct sbankcustomeraccount

;//客戶卡資訊

struct scard

;//排隊佇列節點

struct sregisternode

;//客戶類

class ccustomer

//需要處理業務資訊

void my_service(int id, char* name, int money, service ser)

//delete掉自己的卡, customerbankcard在cbank類中new

void destorycard()

~ccustomer()

}int customer_id;

char * customer_name;

int customer_money;

service service;

scard *customerbankcard;

int queueno;

};//排號佇列類

class cservicequeue

//排隊

int registerqueue(ccustomer *customer)

p=new sregisternode;

p->num=dealnumber;

dealnumber++;

totalnumber++;

p->customer = customer;

p->next=null;

if (head==null)

else

return p->num;

} //讀取佇列資料,優選讀金卡

ccustomer* readqueue()

}//如果沒有金卡,依次讀佇列

pordinary = pordinary->next;

}return head->customer;

} return null;

} //獲取佇列資訊

void queueinfo()

log_info("deal num amount %d, left num amount %d", dealnumber, totalnumber);

} //刪除佇列節點

sregisternode *deletedata(int value)

//與傳入值不等,繼續遍歷

while ((p->next!=null)&&(p->num!=value))

if (value==p->num)

else

//中間節點與傳入值相等

q->next=p->next;

totalnumber--;

delete p;

}else

log_info("number: %d is not in the queue", value);

return head;

} ~cservicequeue()

} private:

sregisternode *head,*tail,*p, *pordinary, *pinfo;

int dealnumber;//當前處理號

int totalnumber;//當前佇列總共號

};//銀行類

class cbank

//處理業務

void dealservice(ccustomer* customer)

else

//customerinfocheck(customer->customerbankcard->card_number);

break;

//查詢業務

case query:

customerinfocheck(customer->customerbankcard->card_number);

break;

//存錢

case deposite:

depositmoney(customer->customerbankcard->card_number, customer->customer_money);

//customerinfocheck(customer->customerbankcard->card_number);

break;

//取錢

case withdraw:

withdrawmoney(customer->customerbankcard->card_number, customer->customer_money);

//customerinfocheck(customer->customerbankcard->card_number);

break;

//銷卡

case cancelcard:

cancelbankcard(customer->customerbankcard->card_number, customer->customer_money);

customer->destorycard();

log_info("bank card has been cancelled");

break;

default:

log_info("wong service !");

break; }}

//銀行獲取佇列客戶

ccustomer* deal_queue_order(cservicequeue *queue)

//辦卡

scard* newcard(int id_customer, char* name, int moneysum, int cardtype)

return false;

} //存錢

void depositmoney(int card_number,int moneysum)

}//取錢

void withdrawmoney(int card_number,int moneysum)

else

}}

//銷卡

void cancelbankcard(int card_number,int moneysum)

//查詢

void customerinfocheck(int card_number)

課時 1 自測題

kubernetes 並不支援為應用固定 ip,於是我自己通過編寫網路外掛程式把應用 ip 管理在了 etcd 裡,然後上線。請問這破壞了雲原生的理念了嗎?單選題 a.否 b.是 容器啟動後,我會時常 ssh 進入到容器裡然後寫很多檔案。請問這破壞了雲原生理念了嗎?單選題 a.否 b.是 我編寫的容...

自測題目1

1 題目描述 寫出乙個程式,接受乙個由字母和數字組成的字串,和乙個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。輸入描述 第一行輸入乙個有字母和數字以及空格組成的字串,第二行輸入乙個字元。輸出描述 輸出輸入字串中含有該字元的個數。示例1輸入 abcdefa輸出 1public class ...

JS內部函式一道自測題

var add function tmp.tostring function return tem 將子函式返回 方便外部呼叫 求alert add 1 2 3 的輸出值 1.內部函式受其父函式作用域限制不能夠被直接呼叫 2.要想呼叫內部函式,要麼定義全域性變數並且將內部函式賦值給全域性變數,通過呼...