鏈式ATM使用C語言實現,可以實現文字操作

2021-10-17 08:44:26 字數 4758 閱讀 9870

此atm可以建立多個使用者,每個使用者的資訊包括使用者名稱,賬號,密碼,餘額。

可以文字操作,將自動建立乙個檔案「d:/000/atminfo.txt」。

第一次開啟可能因為建立檔案原因無法開啟,重啟即可。

#define _crt_secure_no_warnings

#include#include#include//唯一乙個小問題,檔案操作中不可加入選單欄,若加入可能導致一些系統意外發生。

#include#include#include/*

前提:基本鍊錶框架和使用者資訊結構

一.總框架;

int id = 0;

int passwd = 0;

int money = 0;

};struct node

;void menu1(struct node* list,struct user data);//選單欄1

void menu2(struct node* list,struct user data,int id);//選單欄2

struct user;

struct node;

struct node* creatlist();//建立鍊錶(表頭)

struct node* creatnode(struct user data);//建立節點

void insetnodebyhead(struct node* headnode, struct user data);//增加

void debeatenode(struct node* headnode, struct user data, int id);//刪除

void searchnode(struct node* headnode, struct user data, int id);//查詢

void changenode(struct node* headnode, struct user data, int id);//修改

void printlist(struct node* headnode,struct user data);//列印鍊錶

void inset(struct node* list, struct user data);//開戶

void debeate(struct node* headnode, struct user data, int id);//銷戶

void denglu(struct node* list, struct user data);//登入

void change(struct node* headnode, struct user data, int id);//修改密碼

void userknow(struct node* list, struct user data);//使用者須知

void readinfofromfile(struct node* headnode, const char* readfile);//讀出檔案

void writeinfofromfile(struct node* headnode, const char* writefile);//寫入檔案

void cun(struct node* headnode, struct user data, int id);//存款

void qu(struct node* headnode, struct user data, int id);//取款

void zhuan(struct node* headnode, struct user data, int id);//轉賬

void chaxun(struct node* headnode, struct user data, int id);//查詢

void qita(struct node* headnode, struct user data, int id);//其他

void clear(struct node* list, struct user data);//清除全部資料

int main()

void menu1(struct node* list, struct user data)

}void menu2(struct node* list,struct user data,int id)

}struct node* creatlist()//建立鍊錶(表頭)

struct node* creatnode(struct user data)//建立節點

void insetnodebyhead(struct node* headnode, struct user data)//增加

void debeatenode(struct node* headnode, struct user data, int id)//刪除

pfrontmove->next = pmove->next;

free(pmove);

} else }

void changenode(struct node* headnode, struct user data, int id)//修改

printf("請輸入新密碼\n");

scanf_s("%d", &pmove->data.passwd); }

void searchnode(struct node* headnode, struct user data, int id)//查詢

else

}printf("請輸入你的密碼\n");

scanf_s("%d", &passwd);

if (passwd == pmove->data.passwd)

else

}}void printlist(struct node* headnode,struct user data)//列印鍊錶

printf("\t按q返回到主介面\n");

while (1) }

}void inset(struct node* list, struct user data)

else

}insetnodebyhead(list,data);

writeinfofromfile(list, "d:\\000\\atminfo.txt");

menu1(list,data); }}

void denglu(struct node* list, struct user data)

void debeate(struct node* headnode, struct user data, int id)

void change(struct node* headnode, struct user data, int id)

void readinfofromfile(struct node* headnode, const char* readfile)

while (fscanf_s(fp, "%s %d %d %d", data.name,sizeof(data.name),&data.id,&data.passwd,&data.money) != eof)

fclose(fp);

}void writeinfofromfile(struct node* headnode, const char* writefile)

fclose(fp);

}void userknow(struct node* list, struct user data) }}

void cun(struct node* headnode, struct user data, int id)

printf("\n\t請輸入存錢金額\n");

scanf_s("%d", &money);

pmove->data.money += money;

printf("存款完畢,餘額為:%d(即將自動返回)\n", pmove->data.money);

writeinfofromfile(headnode, "d:\\000\\atminfo.txt");

sleep(2000);

menu2(headnode, data, id);

}void qu(struct node* headnode, struct user data, int id)

printf("\n\t請輸入取錢金額\n");

scanf_s("%d", &money);

if ((pmove->data.money - money) >= 0)

else }

void zhuan(struct node* headnode, struct user data, int id)

while (pmove2->data.id != idd) }

printf("請輸入你要轉賬的金額\n");

scanf_s("%d", &money);

if ((pmove->data.money-money)>=0)

else }

void chaxun(struct node* headnode, struct user data, int id)

printf("\t使用者名稱\t\t賬號\t\t餘額\n");printf("\t%s\t\t%d\t\t%d\n", pmove->data.name, pmove->data.id, pmove->data.money);

sleep(3500);menu2(headnode, data, id);

}void qita(struct node* headnode, struct user data, int id) }}

void clear(struct node* list, struct user data)

c語言實現鏈式儲存

h ifndef linklist h define linklist h define crt secure no warnings include include include 節點結構體 typedef struct linknode linknode typedef struct link...

C 語言實現鏈式棧

鏈式棧是一種資料儲存結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在於它能夠克服用陣列實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指標空間用來存放指標域。棧是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底 push 最後的資料在棧頂 ...

C語言實現鏈式佇列

鏈式佇列,簡稱 鏈佇列 即使用鍊錶實現的佇列儲存結構。鏈式佇列的實現思想同順序佇列類似,只需建立兩個指標 命名為 top 和 rear 分別指向鍊錶中佇列的隊頭元素和隊尾元素,如下圖所示 所示為鏈式佇列的初始狀態,此時佇列中沒有儲存任何資料元素,因此 top 和 rear 指標都同時指向頭節點。在建...