C語(yǔ)言實(shí)現(xiàn)自動(dòng)存取款機(jī)模擬系統(tǒng)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)自動(dòng)存取款機(jī)模擬系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
/* ? ? c語(yǔ)言課程設(shè)計(jì)項(xiàng)目名稱:自動(dòng)存取款機(jī)模擬系統(tǒng) ?? ?作者:施瑞文? ?? ?專業(yè):軟件工程(商業(yè)智能)? ?? ?時(shí)間:2018.2.27? */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #include<time.h>? #define N sizeof(struct Account) #define M sizeof(struct Money) struct Account ? ? ? //賬戶信息? { ?? ?char name[10]; ? ? ? //賬號(hào)昵稱? ?? ?char password[18]; ? ? ? //密碼? ?? ?struct Account *next; ? //指針域? }; typedef struct Account Acc; typedef Acc *Accp; ? struct Money ? ? //錢(qián)? { ?? ?float money; ?? ?char time[10];//時(shí)間 ?? ?char date[10];//日期? ?? ?struct Money *next; }; typedef struct Money mon; typedef mon *monp; ? //函數(shù)聲明區(qū)? void HideCursor(); ? ? ? ? ?//隱藏光標(biāo) void toxy(int x, int y); ? ?//將光標(biāo)移動(dòng)到X,Y坐標(biāo)處 void color(short x); ? ? //設(shè)置顏色 void menu(); ? ? ? ? ? ? ? //菜單? Accp ff(); ? ? ? ? ? ? ? ? //將文件中的內(nèi)容讀出 ? void signin(); ? ? ? ? ? ? ? //登陸或注冊(cè)? void login(); ? ? ? ? ? ? ? ? // 注冊(cè)賬號(hào)? void logon(); ? ? ? ? ? ? ? ? ?// 賬號(hào)登陸 ?? void amend_password(); ? ? ?//修改密碼 void add_money(); ? ? //存款? void find_money(); ? //查詢? void get_money(); ? ?//取款 void transfer_money(); ? //轉(zhuǎn)賬 void save_account(Accp p); ?//將p所指向的內(nèi)容存入文件中 void save_money(monp p); ? ? //將p所指向的內(nèi)容存入文件中? float Sum(); ? ? ? ? ?//求余額? void over(); ? ? ? ? ? ? ? ? ?//退出系統(tǒng) ? void list(); ? //賬單明細(xì)? monp ss(); ? ? char _name[20],_password[18]; ? ? ? //全局變量記住當(dāng)前登陸賬戶? ? void color(short x) { ?? ?if(x>=0&&x<=15) ?? ?{ ?? ??? ?SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); ?? ?} ?? ?else ?? ?{ ?? ??? ?SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); ?? ?} }? ? void HideCursor() ? ? //隱藏光標(biāo) { ?CONSOLE_CURSOR_INFO cursor_info = {1, 0};? ?SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } ? void toxy(int x, int y) ? ? ?//將光標(biāo)移動(dòng)到X,Y坐標(biāo)處 { COORD pos = { x , y }; HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out, pos);? } ? Accp ff() ? ? ? ? ? ? ? //將存賬號(hào)的文件里的內(nèi)容輸出到鏈表中 { ?? ?FILE *fp; ? ? ? //文件指針? ?? ?int n=0; ?? ?Accp head=NULL; ?? ?Accp p2,p; ?? ?fp=fopen("account","a+"); ? ? //以只讀的方式打開(kāi)文件? ?? ?if(fp==NULL) ?? ?{ ?? ??? ?printf("cannot open file\n"); ?? ?} ?? ?else ?? ?{ ?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾? ?? ??? ?{ ?? ??? ? ? n++; ?? ??? ? ? ?? ?p=(Accp)malloc(N); //向內(nèi)存申請(qǐng)一段空間? ?? ??? ? ? fread(p,N,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p? ?? ??? ? ? if(n==1) ?? ??? ? ? { ?? ??? ? ? ? ?head=p; ?? ??? ? ? ? ?p2=p; ?? ??? ? ? ?} ?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表? ?? ??? ? ? ?{ ?? ??? ? ? ??? ?p2->next=p; ?? ??? ? ? ??? ?p2=p; ?? ??? ??? ?} ?? ? ? ?} ?? ? ? ?p2->next=NULL; ?? ?} ? ? fclose(fp); ? ?//關(guān)閉文件? ? ? return head; ? //返回頭指針? } ? void menu() ? ? //菜單? { ?? ?system("cls"); ? ?//清屏 ? ?? ?do{ ?? ??? ?color(14); ? ? //看著舒服的顏色 ?? ??? ?char t; ?? ??? ?toxy(50,5); ?? ??? ?printf(" 自動(dòng)存取款機(jī)模擬系統(tǒng)"); ?? ??? ?toxy(50,6); ?? ??? ?printf("當(dāng)前賬戶為:%s",_name); ?? ??? ?toxy(48,8); ?? ??? ?printf("| ? ? 1.取款 ? ? ? ? ?|"); ?? ??? ?toxy(48,10); ?? ??? ?printf("| ? ? 2.轉(zhuǎn)賬 ? ? ? ? ?|"); ?? ??? ?toxy(48,12); ?? ??? ?printf("| ? ? 3.余額 ? ? ? ? ?|"); ?? ??? ?toxy(48,14); ?? ??? ?printf("| ? ? 4.明細(xì) ? ? ? ? ?|"); ?? ??? ?toxy(48,16); ?? ??? ?printf("| ? ? 5.存款 ? ? ? ? ?|"); ?? ??? ?toxy(48,18); ?? ??? ?printf("| ? ? 6.修改密碼 ? ? ?|");? ?? ??? ?toxy(48,20); ?? ??? ?printf("| ? ? 7.退出系統(tǒng) ? ? ?|"); ?? ??? ?t=getch(); ? ? ? ? ? ? ? ? ? ?//利用不回顯函數(shù),輸入t,可以不用手動(dòng)按回車(chē)鍵? ?? ??? ?switch(t) ?? ??? ?{ ?? ??? ??? ?case '1':get_money();break;? ?? ??? ??? ?case '2':transfer_money();break; ?? ??? ??? ?case '3':find_money();break; ?? ??? ??? ?case '4':list();break;? ?? ??? ??? ?case '5':add_money();break; ?? ??? ??? ?case '6':amend_password();break; ?? ??? ??? ?case '7':over();break; ?? ??? ??? ?default :;break; ?? ??? ?} ? ? }while(1); ? ? ? //永遠(yuǎn)為真? } ? void signin() ? ? ? //登陸或注冊(cè)? { ?? ?system("cls"); ?? ?color(12);? ?? ?HideCursor(); ? ?//隱藏光標(biāo) ?? ?char t; ?? ?toxy(50,5); ?? ?printf("自動(dòng)存取款機(jī)模擬系統(tǒng)"); ?? ?toxy(44,8); ?? ?printf("----------------------------"); ?? ?toxy(45,10); ?? ?printf("請(qǐng)輸入(1:登陸;2:注冊(cè).)"); ?? ?toxy(44,12); ?? ?printf("----------------------------"); ?? ?while(1) ?? ?{ ?? ??? ?t=getch(); ?? ??? ?switch(t) ?? ??? ?{ ?? ??? ??? ?case '1':logon();break; ?? ??? ??? ?case '2':login();break; ?? ??? ??? ?default :break; ?? ??? ?} ?? ?} } ? void logon() ? ? ?// 賬號(hào)登陸? {? ?? ?system("cls"); ? //清屏? ?? ?color(10); ? ? //設(shè)置顏色? ?? ?Accp p,head; ? ? ?? ?head=ff(); ? ?//調(diào)用函數(shù) ,返回值為頭結(jié)點(diǎn)的指針? ? ? do{ ?? ? ? ?p=head; ?? ? ? ?char t,c,k; ?? ? ? ?int i=0;; ?? ??? ?toxy(50,5); ?? ??? ?printf("自動(dòng)存取款機(jī)模擬系統(tǒng)"); ?? ??? ?toxy(45,6); ?? ??? ?printf("***************************"); ?? ??? ?toxy(45,8); ?? ??? ?printf(" ? ? 登陸狀態(tài) ? ? ? "); ?? ??? ?toxy(45,10); ?? ??? ?printf("* ?請(qǐng)輸入您的賬號(hào):"); ?? ??? ?gets(_name); ?? ??? ?toxy(45,12); ?? ??? ?printf("* ?請(qǐng)輸入您的密碼:"); ?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作? ?? ??? ?{ ?? ??? ??? ?k=getch(); ? ? ? //輸入k? ?? ??? ??? ?if(k=='\r') ? ? ?//如果輸入k為回車(chē),則跳出循環(huán)? ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(k=='\b') ?//如果輸入k為刪除鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?if(i>0) ? ? ? //如若密碼還沒(méi)完全刪除? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?printf(" "); ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?i--; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車(chē)鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?_password[i]=k; ? //把k的值賦給_password[i];? ?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私? ?? ??? ??? ??? ?i++; ? ? ? ? ? ? ?//密碼位數(shù)加1? ?? ??? ??? ?} ?? ??? ?} ?? ??? ?_password[i]='\0'; ?? ??? ?while(p!=NULL&&strcmp(p->name,_name)!=0) ? //遍歷鏈表,尋找當(dāng)前輸入的賬戶的賬號(hào)? ?? ??? ?{ ?? ??? ??? ?p=p->next; ?? ??? ?} ?? ??? ?if(p!=NULL) ? //如果p不為空? ?? ??? ?{ ?? ? ? ??? ?if(strcmp(p->password,_password)==0) ? ? //如果輸入的密碼正確? ?? ??? ??? ?{ ?? ??? ??? ??? ?toxy(48,16); ?? ??? ??? ??? ?printf("正在登陸...."); ?? ??? ??? ??? ?Sleep(500); ? ? ?//暫停0.5秒 ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ?color(10); ?? ??? ??? ??? ?toxy(48,10); ?? ??? ??? ??? ?printf("登陸成功!"); ?? ??? ??? ??? ?break; ? ?//跳出循環(huán) ?? ??? ??? ?} ?? ??? ??? ?else ? ? ?//如果輸入的密碼錯(cuò)誤 ?? ??? ??? ?{? ?? ??? ??? ??? ?toxy(48,16); ?? ??? ??? ??? ?printf("正在登陸...."); ?? ??? ??? ??? ?Sleep(500); ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ?color(10); ?? ??? ??? ??? ?toxy(46,8); ?? ??? ??? ??? ?printf("-------------------------"); ?? ??? ??? ??? ?toxy(46,9); ?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ??? ?toxy(46,10); ?? ??? ??? ??? ?printf("| 密碼錯(cuò)誤!是否繼續(xù)? ?|"); ?? ??? ??? ??? ?toxy(46,12); ?? ??? ??? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |"); ?? ??? ??? ??? ?toxy(46,13); ?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ??? ?toxy(46,14); ?? ??? ??? ??? ?printf("-------------------------"); ?? ??? ??? ??? ?while(1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?t=getch(); ?//輸入t ? ? ?? ??? ??? ??? ??? ?if(t=='1') ? ? ? ? ? ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?system("cls"); ?//清屏? ?? ??? ??? ??? ??? ??? ?color(10);? ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else if(t=='2') ? ? //如果輸入t為n,進(jìn)入開(kāi)始界面? ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?signin();break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?}? ?? ? ? } ?? ? ? else ? ? ? ? ? ? ?//如果p為空,即輸入的賬號(hào)不正確? ?? ? ? { ?? ? ? ?? ? ? ?toxy(48,16); ?? ? ? ?? ? ? ?printf("正在登陸...."); ?? ? ? ?? ? ? ?Sleep(500); ?? ? ? ?? ? ? ?system("cls"); ?? ? ? ?? ? ? ?color(10); ?? ? ? ?? ? ? ?toxy(46,8); ?? ? ? ?? ? ? ?printf("-------------------------"); ?? ? ? ?? ? ? ?toxy(46,9); ?? ? ? ?? ? ? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ? ? ?? ??? ?toxy(46,10); ?? ??? ??? ?printf("| ?賬號(hào)錯(cuò)誤!是否繼續(xù)? |"); ?? ??? ??? ?toxy(46,11); ?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ?toxy(46,12); ?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ?2.否 |");? ?? ??? ??? ?toxy(46,13); ?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ?toxy(46,14); ?? ??? ??? ?printf("-------------------------"); ?? ??? ??? ?while(1) ? ? ?//死循環(huán)防止其他按鍵干擾? ?? ??? ??? ?{ ?? ??? ??? ??? ?c=getch(); ?? ??? ??? ??? ?if(c=='1') ?? ??? ??? ??? ?{ ? ?? ??? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ??? ?color(10); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if(c=='2') ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?signin();break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ? ? } ? ? }while(1); ? ? ?//永遠(yuǎn)為真? ? ?Sleep(500); ? ? ?//暫停0.5秒? ? ?menu(); ? ? ? ? //賬號(hào)密碼均正確,進(jìn)入主菜單? } ? void login() ? ? ? ?//注冊(cè)賬號(hào)? { ?? ? ?? ?system("cls"); ?? ?color(10);? ?? ?Accp p1; ?? ?p1=(Accp)malloc(N); ? ? //向內(nèi)存申請(qǐng)一段空間? ?? ?do{ ?? ??? ?color(10); ?? ??? ?char name[20],password[18],againpassword[18],c,k; ?? ??? ?int i=0;;? ?? ??? ?toxy(50,5); ?? ??? ?printf("自動(dòng)存取款機(jī)模擬系統(tǒng)"); ?? ??? ?toxy(45,6); ?? ??? ?printf("**************************"); ?? ??? ?toxy(45,8); ?? ??? ?printf(" ? 正在注冊(cè)"); ?? ??? ?toxy(45,10); ?? ??? ?printf("* ?請(qǐng)輸入賬號(hào):"); ?? ??? ?gets(name); ?? ??? ?toxy(45,12); ?? ??? ?printf("* ?請(qǐng)輸入密碼:"); ?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作? ?? ??? ?{ ?? ??? ??? ?k=getch(); ? ? ? //輸入k? ?? ??? ??? ?if(k=='\r') ? ? ?//如果輸入k為回車(chē),則跳出循環(huán)? ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(k=='\b') ?//如果輸入k為刪除鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?if(i>0) ? ? ? //如若密碼還沒(méi)完全刪除? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?printf(" "); ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?i--; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車(chē)鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?password[i]=k; ? //把k的值賦給_password[i];? ?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私? ?? ??? ??? ??? ?i++; ? ? ? ? ? ? ?//密碼位數(shù)加1? ?? ??? ??? ?} ?? ??? ?} ?? ??? ?password[i]='\0'; ?? ??? ?i=0; ?? ??? ?toxy(45,14); ?? ??? ?printf("* ?請(qǐng)確認(rèn)您的密碼:"); ?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作? ?? ??? ?{ ?? ??? ??? ?k=getch(); ? ? ? //輸入k? ?? ??? ??? ?if(k=='\r') ? ? ?//如果輸入k為回車(chē),則跳出循環(huán)? ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(k=='\b') ?//如果輸入k為刪除鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?if(i>0) ? ? ? //如若密碼還沒(méi)完全刪除? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?printf(" "); ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?i--; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車(chē)鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?againpassword[i]=k; ? //把k的值賦給_password[i];? ?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私? ?? ??? ??? ??? ?i++; ? ? ? ? ? ? ?//密碼位數(shù)加1? ?? ??? ??? ?} ?? ??? ?} ?? ??? ?againpassword[i]='\0'; ?? ??? ?if(strcmp(password,againpassword)==0) ? ? ? ?//如果輸入的兩次密碼均正確? ?? ??? ?{ ?? ??? ??? ?strcpy(p1->name,name); ?? ??? ??? ?strcpy(p1->password,password); ?? ??? ??? ?toxy(48,16); ?? ??? ??? ?printf("正在注冊(cè)...."); ?? ??? ??? ?Sleep(500); ?? ??? ??? ?system("cls"); ?? ??? ??? ?color(12); ?? ??? ??? ?toxy(48,10); ?? ??? ??? ?printf("注冊(cè)成功!"); ?? ??? ??? ?Sleep(500); ? ? ? ? //暫停0.5秒? ?? ??? ??? ?break; ? ? ? ? ? ? ?//跳出循環(huán)? ?? ??? ?} ?? ??? ?else ? ?//如果輸入的兩次密碼不同? ?? ??? ?{ ?? ??? ??? ?toxy(48,16); ?? ??? ??? ?printf("正在注冊(cè)...."); ?? ??? ??? ?Sleep(500); ?? ??? ??? ?system("cls"); ?? ??? ??? ?color(12); ?? ??? ??? ?toxy(46,8); ?? ??? ??? ?printf("-----------------------------"); ?? ??? ??? ?toxy(46,9); ?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ?toxy(46,10); ?? ??? ??? ?printf("| ?注冊(cè)失??!是否繼續(xù)注冊(cè)? |"); ?? ??? ??? ?toxy(46,11); ?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ?toxy(46,12); ?? ??? ??? ?printf("| ?1.是 ? ? ? ? ? ? ? 2.否 ?|");? ?? ??? ??? ?toxy(46,13); ?? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ??? ?toxy(46,14); ?? ??? ??? ?printf("-----------------------------"); ?? ??? ??? ?while(1) ?? ??? ??? ?{ ?? ??? ??? ??? ?c=getch(); ?? ??? ??? ??? ?if(c=='1') ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ??? ?color(12); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if(c=='2') ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?signin(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ?}while(1); ? ?//永遠(yuǎn)為真? ?? ?save_account(p1); ? ? //調(diào)用函數(shù),將p1所指向的內(nèi)容存儲(chǔ)到文件中? ?? ?toxy(48,12); ?? ?printf("正在自動(dòng)為您登陸...."); ?? ?Sleep(500); ?? ?menu(); ? ?//注冊(cè)成功后進(jìn)入主菜單? } ? ? /*修改密碼 方法比較笨,這里是先將儲(chǔ)存在文件中的賬戶信息 輸出在一個(gè)鏈表中,遍歷鏈表,尋找當(dāng)前登陸的賬戶賬號(hào),修改該節(jié)點(diǎn)的p->password, 再將修改后的鏈表存到文件中,需要注意的是修改之后再存到文件中需要將該文件中的內(nèi)容 清空*/? void amend_password() ? ? ? ?//修改密碼? {? ?? ?system("cls"); ? ? ? ? //清屏? ?? ?color(14); ? ?//看著舒服的顏色? ?? ?HideCursor(); ? ?? ?Accp p,head; ? ? ? //隱藏光標(biāo),看著更舒服? ?? ?head=ff(); ?? ?FILE *fp; ? ? do ? ? { ? ? ?? ?color(14); ? ? ?? ?HideCursor(); ? ? ? //隱藏光標(biāo),看著舒服? ? ? ?? ?p=head; ? ? ?? ?char password[18],newpassword[18],t,k; ? ? ?? ?int i=0; ? ? ?? ?toxy(50,5); ? ? ? ? ?//將光標(biāo)移動(dòng)到坐標(biāo)為(50,5)的位置? ?? ??? ?printf("自動(dòng)存取款機(jī)模擬系統(tǒng)"); ?? ??? ?toxy(50,8); ?? ??? ?printf("修改密碼"); ?? ??? ?toxy(48,10); ?? ??? ?printf("請(qǐng)輸入舊密碼:"); ?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作? ?? ??? ?{ ?? ??? ??? ?k=getch(); ? ? ? //輸入k? ?? ??? ??? ?if(k=='\r') ? ? ?//如果輸入k為回車(chē),則跳出循環(huán)? ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(k=='\b') ?//如果輸入k為刪除鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?if(i>0) ? ? ? //如若密碼還沒(méi)完全刪除? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?printf(" "); ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?i--; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車(chē)鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?password[i]=k; ? //把k的值賦給_password[i];? ?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私? ?? ??? ??? ??? ?i++; ? ? ? ? ? ? ?//密碼位數(shù)加1? ?? ??? ??? ?} ?? ??? ?} ?? ??? ?password[i]='\0'; ?? ??? ?i=0; ?? ??? ?toxy(48,12); ?? ??? ?printf("請(qǐng)輸入新密碼:"); ?? ??? ?for(;;) ? ? ? ? ? ? ?//此處為輸入密碼不回顯操作? ?? ??? ?{ ?? ??? ??? ?k=getch(); ? ? ? //輸入k? ?? ??? ??? ?if(k=='\r') ? ? ?//如果輸入k為回車(chē),則跳出循環(huán)? ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(k=='\b') ?//如果輸入k為刪除鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?if(i>0) ? ? ? //如若密碼還沒(méi)完全刪除? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?printf(" "); ?? ??? ??? ??? ??? ?printf("\b"); ?? ??? ??? ??? ??? ?i--; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ?//如果輸入的k既不是刪除鍵,也不是回車(chē)鍵? ?? ??? ??? ?{ ?? ??? ??? ??? ?newpassword[i]=k; ? //把k的值賦給_password[i];? ?? ??? ??? ??? ?printf("*"); ? ? ?//輸出*號(hào),保護(hù)用戶隱私? ?? ??? ??? ??? ?i++; ? ? ? ? ? ? ?//密碼位數(shù)加1? ?? ??? ??? ?} ?? ??? ?} ?? ??? ?newpassword[i]='\0'; ?? ??? ?while(p!=NULL&&strcmp(p->name,_name)!=0)//遍歷鏈表,尋找當(dāng)前登陸賬戶的賬號(hào)? ?? ??? ?{ ?? ??? ??? ?p=p->next; ?? ??? ?} ?? ??? ?if(p!=NULL) ? ? ? ? ? ? ? ? ? //如果p不為空? ?? ??? ?{ ?? ??? ??? ?if(strcmp(p->password,password)==0) ? ? ? ? ?//如果舊密碼輸入正確? ?? ??? ??? ?{ ?? ??? ??? ??? ?strcpy(p->password,newpassword); ? ? ? ? //將舊密碼改為新密碼? ?? ??? ??? ??? ?break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //跳出循環(huán)? ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //如果舊密碼輸入錯(cuò)誤? ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ?color(12); ?? ??? ??? ??? ?toxy(46,8); ?? ??? ??? ??? ?printf("--------------------------"); ?? ??? ??? ??? ?toxy(46,9); ?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ?|"); ?? ??? ??? ??? ?toxy(46,10); ?? ??? ??? ??? ?printf("| ?密碼錯(cuò)誤!是否繼續(xù)? ?|"); ?? ??? ??? ??? ?toxy(46,11); ?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ?|"); ?? ??? ??? ??? ?toxy(46,12); ?? ??? ??? ??? ?printf("| ?1.是 ? ? ? ? ? 2.否 ? |"); ?? ??? ??? ??? ?toxy(46,13); ?? ??? ??? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ?|"); ?? ??? ??? ??? ?toxy(46,14); ?? ??? ??? ??? ?printf("--------------------------"); ?? ??? ??? ??? ?while(1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?t=getch(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//輸入t? ?? ??? ??? ??? ??? ?if(t=='1') ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ??? ??? ?color(12); ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else if(t=='2') ?? ??? ??? ??? ??? ? ?menu(); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ?}while(1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//永遠(yuǎn)為真? ?? ?p=head->next; ? ? ? ? ? ? ? ? ? ? ? ? ? //使p指向第二個(gè)結(jié)點(diǎn)? ?? ?fp=fopen("account","w"); ? ? ? ? ? ? ? ? ?//先清空原文件內(nèi)容再將修改后的信息寫(xiě)入文件? ?? ?if(fp==NULL) ?? ?{ ?? ??? ?printf("cannot open file\n"); ?? ?} ?? ?if(fwrite(head,N,1,fp)!=1) ? ? ? ? ? ? ? ? //將head所指向的數(shù)據(jù)寫(xiě)入fp所指向的文件? ?? ?{ ?? ??? ?printf("file write error\n"); ?? ?} ?? ?fclose(fp); ? ? ? ? ? ? ? ? ? ? ? ? //關(guān)閉文件? ?? ?fp=fopen("account","a"); ? ? ? ? ?// 打開(kāi)account文件,方式為追加? ?? ?while(p!=NULL) ? ? ? ? ? ? ? ? ? ?//p不為空就執(zhí)行循環(huán)體? ?? ?{ ?? ??? ?if(fwrite(p,N,1,fp)!=1) ? ? ? ? ? ?//將p所指向的1個(gè)大小為N的數(shù)據(jù)結(jié)構(gòu)寫(xiě)入fp所指向的文件? ?? ? ? ?{ ?? ??? ?printf("file write error\n"); ?? ? ? ?} ?? ? ? ?p=p->next; ? ? ? ? ? ? ? ? ? ? //使p指向下一個(gè)結(jié)點(diǎn)? ?? ?} ?? ?fclose(fp); ? ? ? ? ? ? ?//關(guān)閉文件? ?? ?toxy(48,14); ?? ?printf("修改成功!正在跳轉(zhuǎn)..."); ?? ?Sleep(500); ? ? ? //暫停0.5秒? } ? ? void save_account(Accp p1) ? ? //將p1所指向的內(nèi)容存儲(chǔ)到文件中? { ?? ?FILE *fp; ? ? ? //文件指針? ?? ?fp=fopen("account","a"); ? ?//以追加的方式打開(kāi)文件? ?? ?if(fp==NULL) ?? ?{ ?? ??? ?printf("cannot open file\n"); ?? ?} ?? ?if(fwrite(p1,N,1,fp)!=1) ? ?//將p1所指向的1個(gè)大小為N的數(shù)據(jù)結(jié)構(gòu)寫(xiě)入fp所指向的文件中? ?? ?{ ?? ??? ?printf("file write error\n"); ?? ?} ?? ?fclose(fp); ? ? ? ?//關(guān)閉文件? } ? void add_money() ? ? ? //存款? { ?? ?do ?? ?{ ?? ??? ?system("cls"); ? //清屏? ?? ??? ?color(11); ?? ??? ?monp p; ?? ??? ?char t;? ?? ??? ?char time[10],date[10]; ?? ??? ?p=(monp)malloc(M); ? //向內(nèi)存申請(qǐng)一段空間? ?? ??? ?toxy(48,8); ?? ??? ?printf("請(qǐng)輸入您需要存入的金額:"); ?? ??? ?scanf("%f",&p->money); ?? ??? ?getchar(); //吸收回車(chē)鍵? ?? ??? ?_tzset();? ? ? ? ? _strtime(time); ? ? ? ? ? ? ? strcpy(p->time,time); ? ? ? ? _strdate(date); ?? ??? ?strcpy(p->date,date); ?? ?? ??? ?toxy(48,10); ?? ??? ?printf("正在操作,請(qǐng)稍后...."); ?? ??? ?Sleep(500); ?? ??? ?save_money(p); ?? ??? ?system("cls"); ?? ??? ?toxy(46,8); ?? ??? ?printf("-------------------------"); ?? ??? ?toxy(46,9); ?? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ?toxy(46,10); ?? ??? ?printf("| 存入成功!是否繼續(xù)? ?|"); ?? ??? ?toxy(46,12); ?? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |"); ?? ??? ?toxy(46,13); ?? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ?toxy(46,14); ?? ??? ?printf("-------------------------"); ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?t=getch(); ?? ??? ??? ?if(t=='1') ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(t=='2') ?? ??? ??? ?{ ?? ??? ??? ??? ?menu(); ?? ??? ??? ?} ?? ??? ?} ?? ?}while(1); } ? void find_money() ? ? //查詢余額? { ?? ?system("cls"); ?? ?color(13); ?? ?float sum=0; ?? ?sum=Sum(); ?? ?toxy(46,12); ?? ?printf("余額為:%f",sum); ?? ?toxy(46,16); ?? ?printf("按任意鍵回到主菜單"); ?? ?getch(); ?? ?menu();? } ? void get_money() ? ? ?//取款? { ?? ?do ?? ?{ ?? ??? ?system("cls"); ?? ??? ?color(11); ?? ??? ?monp p; ?? ??? ?float money,sum; ?? ??? ?char t; ?? ??? ?char time[10],date[10]; ?? ??? ?toxy(46,12); ?? ??? ?printf("請(qǐng)輸入您要取的金額:"); ?? ??? ?scanf("%f",&money);? ?? ??? ?getchar();//吸收回車(chē)鍵? ?? ??? ?sum=Sum(); ?? ??? ?if(money>sum) ? //如果要取的金額大于余額? ?? ??? ?{ ?? ??? ??? ?toxy(46,14); ?? ??? ??? ?printf("余額不足,請(qǐng)重新輸入!"); ?? ??? ??? ?Sleep(500); ?? ??? ??? ?continue; ? ?//結(jié)束本次循環(huán)? ?? ??? ?} ?? ??? ?p=(monp)malloc(M); ? ?//向內(nèi)存申請(qǐng)一段空間? ?? ??? ?_tzset();? ? ? ? ? _strtime(time); ? ? ? ? ? ? ? strcpy(p->time,time); ? ? ? ? _strdate(date); ?? ??? ?strcpy(p->date,date); ? ?? ??? ?p->money=-money; ?? ??? ?save_money(p); ? ? ? ?? ??? ?toxy(46,14); ?? ??? ?printf("正在操作,請(qǐng)稍后...."); ?? ??? ?Sleep(500); ?? ??? ?system("cls"); ?? ??? ?toxy(46,8); ?? ??? ?printf("-------------------------"); ?? ??? ?toxy(46,9); ?? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ?toxy(46,10); ?? ??? ?printf("| 取款成功!是否繼續(xù)? ?|"); ?? ??? ?toxy(46,12); ?? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |"); ?? ??? ?toxy(46,13); ?? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ?toxy(46,14); ?? ??? ?printf("-------------------------"); ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?t=getch(); ?? ??? ??? ?if(t=='1') ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(t=='2') ?? ??? ??? ?{ ?? ??? ??? ??? ?menu();break; ?? ??? ??? ?} ?? ??? ?} ?? ?}while(1); ?? ? } ? void list() ?//明細(xì)? { ?? ?system("cls"); ?? ?color(10); ?? ?monp head,p; ?? ?int i=10; ?? ?head=ss(); ?? ?p=head; ?? ?toxy(50,5); ?? ?printf(" 自動(dòng)存取款機(jī)模擬系統(tǒng)"); ?? ?toxy(54,6); ?? ?printf("賬單明細(xì)"); ?? ?toxy(30,7); ?? ?printf("-------------------------------------------------------------"); ?? ?toxy(31,8); ?? ?printf("金 ? ? ? 額 ? ? ? ? ? ? ?時(shí) ? ? ? 間 ? ? ? ? ? ? 日 ? ? ?期"); ?? ?toxy(30,9); ?? ?printf("-------------------------------------------------------------"); ?? ?while(p!=NULL) ?? ?{ ?? ??? ?toxy(30,i); ?? ??? ?if(p->money>=0) ?? ??? ?{ ?? ??? ??? ?printf("+%f ? ? ? ? ? ? ? ?%-24s%s",p->money,p->time,p->date); ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?printf("%f ? ? ? ? ? ? ? ?%-24s%s",p->money,p->time,p->date); ?? ??? ?} ?? ??? ?p=p->next; ?? ??? ?i++; ?? ?} ?? ?toxy(50,i); ?? ?printf("請(qǐng)按任意鍵返回主菜單"); ?? ?getch(); ?? ?menu(); } ? void transfer_money() ? ? //轉(zhuǎn)賬? { ?? ?do ?? ?{ ?? ??? ?system("cls"); ?? ??? ?color(10); ?? ??? ?FILE *fp1; ?? ??? ?monp p,head,p1; ?? ??? ?float money,sum=0; ?? ??? ?char name[20],t; ?? ??? ?char time[10],date[10]; ?? ??? ?toxy(46,12); ?? ??? ?printf("請(qǐng)輸入您要轉(zhuǎn)入的賬號(hào):"); ?? ??? ?gets(name); ?? ??? ?toxy(46,14); ?? ??? ?printf("請(qǐng)輸入您要轉(zhuǎn)出的金額:"); ?? ??? ?scanf("%f",&money); ?? ??? ?getchar(); ? //吸收回車(chē)鍵? ?? ??? ?sum=Sum(); ?? ??? ?if(money>sum) ? //如果要轉(zhuǎn)出的金額大于余額? ?? ??? ?{ ?? ??? ??? ?toxy(46,16); ?? ??? ??? ?printf("余額不足!"); ?? ??? ??? ?Sleep(500); ?? ??? ??? ?continue; ? //結(jié)束本次循環(huán)? ?? ??? ? }? ?? ??? ?fp1=fopen(name,"rb"); ? ?//以只讀的方式打開(kāi)名字為name的二進(jìn)制文件 ? ?? ??? ?if(fp1==NULL) ? ?//如果文件不存在? ?? ??? ?{ ?? ??? ??? ?toxy(46,16); ?? ??? ??? ?printf("賬戶不存在!"); ?? ??? ??? ?fclose(fp1); ?? ??? ??? ?Sleep(500); ?? ??? ??? ?continue; ?? ??? ?} ?? ??? ?fp1=fopen(name,"ab"); ? ?//以追加的方式打開(kāi)名字為name的二進(jìn)制文件 ? ?? ??? ?p=(monp)malloc(M); ?//向內(nèi)存申請(qǐng)一段空間? ?? ??? ?p->money=-money; ?? ??? ?_tzset();? ? ? ? ? _strtime(time); ? ? ? ? ? ? ? strcpy(p->time,time); ? ? ? ? _strdate(date); ?? ??? ?strcpy(p->date,date); ? ?? ??? ?save_money(p); ?? ??? ?p1=(monp)malloc(M); ?? ??? ?p1->money=money; ?? ??? ?strcpy(p1->time,time); ?? ??? ?strcpy(p1->date,date); ?? ??? ?if(fwrite(p1,M,1,fp1)!=1) ? ?//將p1所指向的一個(gè)大小為M的節(jié)點(diǎn) 存入fp1所指向的文件中? ?? ??? ?{ ?? ??? ??? ?printf("轉(zhuǎn)賬失敗,請(qǐng)重試!"); ?? ??? ??? ?continue; ?? ??? ?} ?? ??? ?fclose(fp1); ?? ??? ?toxy(46,18); ?? ??? ?printf("正在操作,請(qǐng)稍后...."); ?? ??? ?Sleep(500); ?? ??? ?system("cls"); ?? ??? ?toxy(46,8); ?? ??? ?printf("-------------------------"); ?? ??? ?toxy(46,9); ?? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ?toxy(46,10); ?? ??? ?printf("| 轉(zhuǎn)賬成功!是否繼續(xù)? ?|"); ?? ??? ?toxy(46,12); ?? ??? ?printf("| 1.是 ? ? ? ? ? ? 2.否 |"); ?? ??? ?toxy(46,13); ?? ??? ?printf("| ? ? ? ? ? ? ? ? ? ? ? |"); ?? ??? ?toxy(46,14); ?? ??? ?printf("-------------------------"); ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?t=getch(); ?? ??? ??? ?if(t=='1') ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(t=='2') ?? ??? ??? ?{ ?? ??? ??? ??? ?menu();? ?? ??? ??? ?} ?? ??? ?} ? ?? ?}while(1); } ? float Sum() { ?? ?monp head=NULL,p; ?? ?float sum=0; ?? ?head=ss(); ?? ?p=head; ?? ?while(p!=NULL) ?? ?{ ?? ??? ?sum+=p->money; ? ?//求和? ?? ??? ?p=p->next; ?? ?} ?? ?if(head==NULL) ?? ??? ?sum=0; ?? ?return sum; } ? monp ss() ? ?//求余額? { ?? ?FILE *fp; ? //文件指針? ?? ?monp p,head=NULL,p2,pre=NULL; ?? ?int n=0; ?? ?//float sum=0; ?? ?fp=fopen(_name,"ab+"); ? //以只讀的方式打開(kāi)名字為_(kāi)name的二進(jìn)制文件? ?? ?if(fp==NULL) ?? ?{ ?? ??? ?printf("cannot open file"); ?? ?} ?? ?else ?? ?{ ?? ??? ?while(!feof(fp)) ?//判斷標(biāo)記是否移動(dòng)到文件末尾? ?? ??? ?{ ?? ??? ??? ?n++; ?? ??? ??? ?p=(monp)malloc(M); ? //向內(nèi)存申請(qǐng)一段空間? ?? ??? ??? ?fread(p,M,1,fp); ? ? //將fp所指向的文件中的一段大小為M的 內(nèi)容賦給p? ?? ??? ??? ?if(n==1) ?? ??? ??? ?{ ?? ??? ??? ??? ?head=p; ?? ??? ??? ??? ?p2=p; ?? ??? ??? ?} ?? ??? ??? ?else ? ? ? ? ? ? ? ?//創(chuàng)建鏈表? ?? ??? ??? ?{ ?? ??? ??? ??? ?pre=p2; ?? ??? ??? ??? ?p2->next=p; ?? ??? ??? ??? ?p2=p; ?? ??? ??? ?} ?? ??? ??? ?p2->next=NULL; ?? ??? ?} ?? ?} ?? ?fclose(fp); ? ? //關(guān)閉文件? ?? ?if(pre!=NULL) ?? ??? ?pre->next=NULL; ?? ?return(head); ? ?//返回sum值? } ? void save_money(monp p) ? ?//將p所指向的內(nèi)容存入文件中? { ?? ?FILE *fp; ? ?//文件指針? ?? ?fp=fopen(_name,"ab"); ? //以追加的方式打開(kāi)名字為_(kāi)name的二進(jìn)制文件? ?? ?if(fp==NULL) ?? ?{ ?? ??? ?printf("cannot open file"); ?? ?} ?? ?if(fwrite(p,M,1,fp)!=1) ? //將p所指向的一段大小為M的內(nèi)容存入fp所指向的文件中? ?? ?{ ?? ??? ?printf("write error"); ?? ?} ?? ?fclose(fp); ? ?//關(guān)閉文件 ? } ? void over() ? ? ? //退出軟件? { ?? ?char t; ?? ?toxy(48,11); ?? ?printf("-----------------------"); ?? ?toxy(48,12); ?? ?printf("| ? 您確定要退出嗎? ?|"); ?? ?toxy(48,14); ?? ?printf("| 1.確定 ? ? 2.取消 ? |"); ?? ?toxy(48,15); ?? ?printf("-----------------------"); ?? ?while(1) ?? ?{ ?? ??? ?t=getch(); ? ? ? ? //輸入t ?? ??? ?switch(t) ?? ??? ?{ ?? ??? ??? ?case '1': ?? ??? ??? ?system("cls"); ?? ??? ? ? ?color(6); ?? ??? ??? ?toxy(48,10); ?? ??? ??? ?printf("正在安全退出...."); ?? ??? ??? ?Sleep(1000); ? ? //暫停1秒? ?? ??? ??? ?system("cls"); ?? ??? ??? ?color(8); ?? ??? ??? ?toxy(48,10); ?? ??? ??? ?printf("已安全退出軟件"); ?? ??? ??? ?toxy(48,12); ?? ??? ??? ?printf("謝謝使用!"); ?? ??? ??? ?toxy(48,14); ?? ??? ??? ?printf("by-by^_^"); ?? ??? ??? ?exit(0); ?break; //終止程序? ?? ??? ??? ?case '2': ?? ??? ??? ?menu(); break; ? //調(diào)用函數(shù),進(jìn)入菜單? ?? ??? ??? ?default :break; ?? ??? ?} ?? ?} } ? main() ? ?//簡(jiǎn)潔明了的主函數(shù)~~~? { ?? ?signin(); ? //調(diào)用函數(shù)? }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++中二維map實(shí)現(xiàn)讀和寫(xiě)
在C++中,可以使用std::map來(lái)實(shí)現(xiàn)二維映射,本文主要介紹了C++中二維map實(shí)現(xiàn)讀和寫(xiě),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析
本篇文章是對(duì)橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05c++動(dòng)態(tài)內(nèi)存管理與智能指針的相關(guān)知識(shí)點(diǎn)
為了更容易同時(shí)也更安全地使用動(dòng)態(tài)內(nèi)存,新的標(biāo)準(zhǔn)庫(kù)提供了兩種智能指針(smart pointer)類型來(lái)管理對(duì)象,下面這篇文章主要給大家介紹了關(guān)于c++動(dòng)態(tài)內(nèi)存管理與智能指針的相關(guān)知識(shí)點(diǎn),需要的朋友可以參考下2022-03-03史上最貼心的 VS code C++ 環(huán)境配置超詳細(xì)教程
這篇文章主要介紹了史上最貼心的 VS code C++ 環(huán)境配置超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02C++自動(dòng)析構(gòu)時(shí)的順序問(wèn)題
這篇文章主要介紹了C++自動(dòng)析構(gòu)時(shí)的順序,通過(guò)實(shí)例代碼給大家講解了C++ 構(gòu)造與析構(gòu)的執(zhí)行順序,代碼簡(jiǎn)單易懂,非常不錯(cuò)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03