欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言銀行系統(tǒng)課程設(shè)計(jì)

 更新時(shí)間:2018年01月18日 10:28:17   作者:白___  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言銀行系統(tǒng)課程設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了C語(yǔ)言銀行系統(tǒng)課程設(shè)計(jì),供大家參考,具體內(nèi)容如下

main.c

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <conio.h> 
#include <windows.h> 
#define MaxNum 200 
#define N_P 6 
typedef struct 
{ 
 int AccountNumber[3]; 
 char name[20]; 
 char password[N_P+1]; 
 unsigned long amount; 
 int state; 
} Account; 
void Load(FILE *,Account *); 
void ShowMenu(int ); 
int MakeChoice(int ); 
void EnterPassword(char *); 
void CreatAccount(unsigned char *,Account *,int); //第一個(gè)參數(shù)為加密關(guān)鍵字,第二個(gè)參數(shù)為賬戶序號(hào) 
int JudgePassword(char *,char *); 
int decrypt(int *,unsigned char *); 
void LogIn(unsigned char *,Account *,int); //第二個(gè)參數(shù)為當(dāng)前賬戶數(shù)目,登陸成功返回1,失敗返回0 
int EnterAccountNumber(unsigned char *,int ); 
void EnterNum(char *,int ); 
void Operate(unsigned char *,Account *,int ,int ); 
void ShowSubMenu(char *); 
void AdministratorMode(unsigned char *,unsigned char *,Account *,char *,int); 
void ShowAdministratorMenu(); 
void WriteToFile(FILE *,unsigned char *,Account*,char *,int); 
int main() 
{ 
 FILE *fp; 
 int i,total; 
 unsigned char key[4],key_en[4]; 
 char administrator_password[10]; 
 Account *user; 
 user=(Account *)malloc(sizeof(Account)*MaxNum); 
 fp=fopen("bank.txt","r+"); 
 if(fp==NULL) 
 { 
  printf("銀行數(shù)據(jù)庫(kù)無(wú)法打開,按任意鍵結(jié)束程序!\n"); 
  getch(); 
  exit(1); 
 } 
 fscanf(fp,"%d\n%s\n%s",&total,administrator_password,key); 
 for(i=0;i<3;++i)//用key_en保存key的值 
  key_en[i]=key[i]; 
 key_en[0]=(key_en[0]<<3)|(key_en[0]>>(sizeof(key_en[0])*8-3)); 
 key_en[2]=(key_en[2]>>3)|(key_en[2]<<(sizeof(key_en[2])*8-3)); 
 Load(fp,user);//將數(shù)據(jù)存入數(shù)組user中 
 while(1) 
 { 
  system("cls"); 
  ShowMenu(total); 
  switch(MakeChoice(4)) 
  { 
  case 1: 
   system("cls"); 
   LogIn(key_en,user,total); 
   break; 
  case 2: 
   system("cls"); 
   CreatAccount(key_en,user,total++); 
   break; 
  case 3: 
   system("cls"); 
   AdministratorMode(key,key_en,user,administrator_password,total); 
   break; 
  default: 
   system("cls"); 
   WriteToFile(fp,key,user,administrator_password,total); 
   return 0; 
  } 
 } 
 return 0; 
} 


function.c

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <conio.h> 
#include <windows.h> 
#define MaxNum 200 
#define N_P 6 
//賬戶狀態(tài) 0為正常 1為掛失 2為凍結(jié) 3為銷戶 
typedef struct 
{ 
 int AccountNumber[3]; 
 char name[20]; 
 char password[N_P]; 
 unsigned long amount; 
 int state; 
} Account; 
void Load(FILE *,Account *); 
void ShowMenu(int ); 
int MakeChoice(int ); 
void EnterPassword(char *); 
void CreatAccount(unsigned char *,Account *,int); //第一個(gè)參數(shù)為加密關(guān)鍵字,第二個(gè)參數(shù)為賬戶序號(hào) 
int JudgePassword(char *,char *); 
int decrypt(int *,unsigned char *); 
void LogIn(unsigned char *,Account *,int); //第二個(gè)參數(shù)為當(dāng)前賬戶數(shù)目,登陸成功返回1,失敗返回0 
int EnterAccountNumber(unsigned char *,int ); 
void EnterNum(char *,int ); 
void Operate(unsigned char *,Account *,int,int ); 
void ShowSubMenu(char *); 
void AdministratorMode(unsigned char *,unsigned char *,Account *,char *,int); 
void ShowAdministratorMenu(); 
void WriteToFile(FILE *,unsigned char *,Account*,char *,int); 
void Load(FILE *fp,Account *user) 
{ 
 int count=0; 
 //將文件中的用戶信息存到數(shù)組中 
 while(fscanf(fp,"\n%d%d%d %s %s %lu %d\n",&user[count].AccountNumber[0],&user[count].AccountNumber[1],\ 
     &user[count].AccountNumber[2],user[count].name,\ 
     user[count].password,&user[count].amount,&user[count].state)!=EOF) 
  ++count; 
} 
void ShowMenu(int total) 
{ 
 printf("****中國(guó)銀行煙大計(jì)163-1分行****\n"); 
 printf("目前共有%d名注冊(cè)用戶*****\n",total); 
 printf("1.登陸*************************\n"); 
 printf("2.開戶*************************\n"); 
 printf("3.進(jìn)入管理員模式***************\n"); 
 printf("4.退出*************************\n"); 
} 
int MakeChoice(int n) 
{ 
 int judge; 
 printf("請(qǐng)輸入1~%d\n",n); 
 scanf("%d",&judge); 
 while(judge<1||judge>n)//確保輸入的是1~n 
 { 
  printf("輸入不合法,請(qǐng)輸入1~%d\n",n); 
  fflush(stdin);//如果不加這句,輸入一些字母會(huì)導(dǎo)致函數(shù)無(wú)限循環(huán) 
  scanf("%d",&judge); 
 } 
 return judge; 
} 
void EnterPassword(char *password) 
{ 
 int i; 
 char t; 
 for(i=0; i<N_P; ++i) 
 { 
  t=getch(); 
  if(t=='\b')//執(zhí)行退格刪除操作 
  { 
   printf("\b \b"); 
   i-=2; 
   continue; 
  } 
  while(t<'0'||t>'9') 
   t=getch(); 
  password[i]=t; 
  putchar('*'); 
 } 
} 
void EnterNum(char *s,int n) 
{ 
 int i=0; 
 char t; 
 while(i<n) 
 { 
  t=getch(); 
  if(t=='\b') 
  { 
   printf("\b \b"); 
   --i; 
   continue; 
  } 
  else if(t=='\r'||t=='\n') 
   break; 
  while(t<'0'||t>'9') 
   t=getch(); 
  s[i]=t; 
  putchar(t); 
  ++i; 
 } 
} 
int JudgePassword(char *temp_password,char *password) 
{ 
 int i; 
 for(i=0; i<N_P; ++i) 
 { 
  if(temp_password[i]!=password[i]) 
   break; 
 } 
 if(i==N_P) 
  return 0; 
 else 
  return 1; 
} 
void CreatAccount(unsigned char *key,Account *user,int num) 
{ 
 if(num>=MaxNum) 
 { 
  printf("銀行用戶數(shù)量已達(dá)到上限!\n按任意鍵返回主界面"); 
  getch(); 
  return; 
 } 
 int i,flag,num_de[3]; 
 int num_en[3]; 
 char temp_password[N_P],password[N_P]; 
 //將num的個(gè)位十位和百位分解,num_de[2]存?zhèn)€位,以此類推 
 for(i=0; i<3; ++i) 
  num_de[i]=0; 
 for(i=0; i<3; ++i) 
  num_en[i]=0; 
 if(num<10) 
  num_de[2]=num; 
 else if(num<100) 
 { 
  num_de[2]=num%10; 
  num_de[1]=num/10; 
 } 
 else 
 { 
  for(i=0; i<3; ++i) 
  { 
   num_de[i]=num%10; 
   num/=10; 
  } 
 } 
 //分解完成 
 while(1) 
 { 
  flag=0; 
  printf("請(qǐng)輸入用戶姓名:"); 
  fflush(stdin); 
  scanf("%19[^\n]",user[num].name); 
  for(i=0; i<strlen(user[num].name); ++i) 
  { 
   if(user[num].name[i]==' ') 
   { 
    printf("用戶名中不能包含空格!\n"); 
    flag=1; 
    break; 
   } 
  } 
  if(flag==0) 
   break; 
 } 
 for(i=0; i<3; ++i) 
  num_en[i]=num_de[i]^key[i]; 
 for(i=0; i<3; ++i) 
  user[num].AccountNumber[i]=num_en[i]; 
 printf("您的賬號(hào)是:"); 
 for(i=0; i<3; ++i) 
  printf("%03d ",num_en[i]); 
 while(1) 
 { 
  printf("\n請(qǐng)?jiān)O(shè)置密碼:"); 
  EnterPassword(password); 
  printf("\n請(qǐng)?jiān)俅未_認(rèn)密碼:"); 
  EnterPassword(temp_password); 
  if(JudgePassword(temp_password,password)) 
   printf("\n兩次輸入不相等,密碼設(shè)置失敗!"); 
  else 
  { 
   strcpy(user[num].password,password); 
   user[num].password[N_P]='\0'; 
   break; 
  } 
 } 
 user[num].amount=0; 
 user[num].state=0; 
 printf("\n賬戶創(chuàng)建成功!\n按任意鍵返回主菜單"); 
 getch(); 
} 
int decrypt(int *num_en,unsigned char *key) 
{ 
 int i,num,num_de[3]; 
 for(i=0; i<3; ++i) 
  num_de[i]=num_en[i]^key[i]; 
 num=num_de[0]*100+num_de[1]*10+num_de[2]; 
 return num; 
} 
int EnterAccountNumber(unsigned char *key,int total) 
{ 
 int i,num; 
 int num_en[3]; 
 char num_en_char[3]; 
 while(1)//輸入賬號(hào) 
 { 
  printf("請(qǐng)輸入賬號(hào):"); 
  for(i=0;i<3;++i) 
  { 
   EnterNum(num_en_char,3); 
   num_en[i]=atoi(num_en_char); 
  } 
  num=decrypt(num_en,key); 
  if(num>total)//若num大于total則賬號(hào)輸入錯(cuò)誤 
   printf("\n賬號(hào)輸入錯(cuò)誤!\n"); 
  else 
   break; 
 } 
 return num; 
} 
void LogIn(unsigned char *key,Account *user,int total) 
{ 
 int num,i; 
 char password[N_P]; 
 num=EnterAccountNumber(key,total); 
 //判斷賬戶狀態(tài) 
 if(user[num].state==3) 
 { 
  printf("該賬戶已銷戶,無(wú)法使用!\n"); 
  printf("按任意鍵返回操作界面"); 
  getch(); 
  return; 
 } 
 else if(user[num].state==2) 
 { 
  printf("該賬戶因輸入密碼錯(cuò)誤次數(shù)達(dá)三次,已凍結(jié)!\n請(qǐng)進(jìn)入管理員模式解除異常狀態(tài)!\n"); 
  printf("按任意鍵返回操作界面"); 
  getch(); 
  return; 
 } 
 //判斷結(jié)束 
 i=0; 
 while(1)//輸入密碼 
 { 
  printf("\n請(qǐng)輸入密碼:"); 
  EnterPassword(password); 
  if(JudgePassword(password,user[num].password)&&(++i<3)) 
   printf("\n密碼輸入錯(cuò)誤,您還有%d次機(jī)會(huì)\n",3-i); 
  else if(i>=3) 
  { 
   user[num].state=2; 
   printf("\n密碼錯(cuò)誤次數(shù)過(guò)多,賬戶已凍結(jié)!\n"); 
   printf("即將返回主界面 "); 
   for(i=0; i<3; ++i) 
   { 
    printf("%d",i); 
    Sleep(1000); 
    printf("\b"); 
   } 
   return ; 
  } 
  else 
  { 
   printf("登陸成功!\n"); 
   break; 
  } 
 } 
 Operate(key,user,num,total); 
} 
void ShowSubMenu(char *name) 
{ 
 printf("****歡迎%s登陸本行********\n",name); 
 printf("1.存款*************************\n"); 
 printf("2.取款*************************\n"); 
 printf("3.查詢*************************\n"); 
 printf("4.轉(zhuǎn)賬*************************\n"); 
 printf("5.掛失*************************\n"); 
 printf("6.銷戶*************************\n"); 
 printf("7.改密*************************\n"); 
 printf("8.返回主菜單*******************\n"); 
} 
void Operate(unsigned char *key,Account *user,int num,int total) 
{ 
 int i,num_t; 
 unsigned long amount_t,max=1; 
 char password[N_P],temp_password[N_P],amount_judge[6]; 
 for(i=0; i<(sizeof(unsigned long)*8-1); ++i) //計(jì)算最大存款額max 
  max*=2; 
 while(1) 
 { 
  system("cls"); 
  ShowSubMenu(user[num].name); 
  switch(MakeChoice(8)) 
  { 
  case 1: 
   system("cls"); 
   while(1) 
   { 
    printf("請(qǐng)輸入存款金額:"); 
    for(i=0;i<6;++i) 
     amount_judge[i]='\0'; 
    EnterNum(amount_judge,5); 
    amount_t=atol(amount_judge); 
    if(amount_t>99999) 
     printf("\n單次存款金額為0~99999元,存款失敗!\n"); 
    else if(amount_t>=max-user[num].amount) 
     printf("總金額超出上限,存款失?。n"); 
    else 
    { 
     user[num].amount+=amount_t; 
     printf("\n存款成功!按任意鍵返回操作界面"); 
     getch(); 
     system("cls"); 
     break; 
    } 
   } 
   break; 
  case 2: 
   system("cls"); 
   if(user[num].state==1) 
   { 
    printf("該賬戶已掛失,無(wú)法執(zhí)行取款操作!\n"); 
    printf("按任意鍵返回操作界面"); 
    getch(); 
    break; 
   } 
   while(1) 
   { 
    printf("請(qǐng)輸入取款金額:"); 
    for(i=0;i<6;++i) 
     amount_judge[i]='\0'; 
    EnterNum(amount_judge,5); 
    amount_t=atol(amount_judge); 
    if(amount_t>99999) 
     printf("\n單次存款金額為0~99999元,存款失??!\n"); 
    else if(amount_t>user[num].amount) 
     printf("\n賬戶余額不足,取款失敗!\n"); 
    else 
    { 
     user[num].amount-=amount_t; 
     printf("\n取款成功!按任意鍵返回操作界面"); 
     getch(); 
     system("cls"); 
     break; 
    } 
   } 
   break; 
  case 3: 
   system("cls"); 
   printf("用戶姓名:%s",user[num].name); 
   printf("賬戶余額:%lu\n",user[num].amount); 
   printf("賬戶狀態(tài):"); 
   if(user[num].state==1) 
    printf("已掛失\n"); 
   else 
    printf("正常\n"); 
   printf("按任意鍵返回操作界面"); 
   getch(); 
   system("cls"); 
   break; 
  case 4: 
   system("cls"); 
   if(user[num].state==1) 
   { 
    printf("該賬戶已掛失,無(wú)法執(zhí)行轉(zhuǎn)賬操作!\n"); 
    printf("按任意鍵返回操作界面"); 
    getch(); 
    break; 
   } 
   num_t=EnterAccountNumber(key,total); 
   while(1) 
   { 
    printf("請(qǐng)輸入轉(zhuǎn)賬金額:"); 
    for(i=0;i<6;++i) 
     amount_judge[i]='\0'; 
    EnterNum(amount_judge,5); 
    amount_t=atol(amount_judge); 
    if(amount_t>99999) 
     printf("\n單次存款金額為0~99999元,存款失??!\n"); 
    else if(amount_t>user[num].amount) 
     printf("賬戶金額不足,轉(zhuǎn)賬失敗!\n"); 
    else if(amount_t>=max-user[num_t].amount) 
     printf("\n對(duì)方總金額超出上限,轉(zhuǎn)賬失?。n"); 
    else 
    { 
     user[num].amount-=amount_t; 
     user[num_t].amount+=amount_t; 
     printf("\n轉(zhuǎn)賬成功!按任意鍵返回操作界面"); 
     getch(); 
     system("cls"); 
     break; 
    } 
   } 
   break; 
  case 5: 
   system("cls"); 
   printf("您確定要掛失嗎?\n"); 
   printf("1.確定 2.取消\n"); 
   if(MakeChoice(2)==1) 
   { 
    user[num].state=1; 
    printf("掛失成功!\n按任意鍵返回主界面"); 
    getch(); 
   } 
   system("cls"); 
   break; 
  case 6: 
   system("cls"); 
   printf("您確定要銷戶嗎?銷戶后所有功能都將無(wú)法實(shí)現(xiàn),賬戶內(nèi)的存款將凍結(jié)!\n"); 
   printf("1.確定 2.取消\n"); 
   if(MakeChoice(2)==1) 
   { 
    user[num].state=3; 
    printf("銷戶成功!\n按任意鍵返回主界面"); 
    getch(); 
    system("cls"); 
    return; 
   } 
   else 
    break; 
  case 7: 
   system("cls"); 
   while(1) 
   { 
    printf("\n請(qǐng)輸入原密碼:"); 
    EnterPassword(password); 
    if(JudgePassword(password,user[num].password)) 
     printf("\n原密碼輸入錯(cuò)誤!\n"); 
    else 
     break; 
   } 
   while(1) 
   { 
    printf("\n請(qǐng)輸入新密碼:"); 
    EnterPassword(password); 
    printf("\n請(qǐng)?jiān)俅未_認(rèn)密碼:"); 
    EnterPassword(temp_password); 
    if(JudgePassword(temp_password,password)) 
     printf("\n兩次輸入不相等,密碼設(shè)置失??!"); 
    else 
    { 
     strcpy(user[num].password,password); 
     break; 
    } 
   } 
   printf("\n密碼修改成功!\n按任意鍵返回操作界面"); 
   getch(); 
   system("cls"); 
   break; 
  default: 
   return; 
  } 
 } 
} 
void AdministratorMode(unsigned char *key_orig,unsigned char *key,Account *user,char *administrator_password,int total) 
{ 
 int num; 
 char password[N_P],temp_password[N_P]; 
 while(1)//輸入密碼 
 { 
  printf("請(qǐng)輸入管理員密碼密碼:"); 
  EnterPassword(password); 
  if(JudgePassword(password,administrator_password)) 
   printf("密碼輸入錯(cuò)誤!\n"); 
  else 
   break; 
 } 
 printf("\n登陸成功!按任意鍵繼續(xù)"); 
 getch(); 
 while(1) 
 { 
  system("cls"); 
  ShowAdministratorMenu(); 
  switch(MakeChoice(6)) 
  { 
  case 1: 
   system("cls"); 
   num=EnterAccountNumber(key,total); 
   printf("請(qǐng)?jiān)O(shè)置密碼:"); 
   EnterPassword(password); 
   printf("您設(shè)置的密碼是:"); 
   puts(user[num].password); 
   printf("\n按任意鍵返回操作界面"); 
   getch(); 
   break; 
  case 2: 
   system("cls"); 
   num=EnterAccountNumber(key,total); 
   printf("您確定要解除此用戶的掛失狀態(tài)嗎?\n"); 
   printf("1.確定 2.取消\n"); 
   if(MakeChoice(2)==1) 
   { 
    user[num].state=0; 
    printf("解除掛失成功!\n按任意鍵返回主界面"); 
    getch(); 
   } 
   break; 
  case 3: 
   system("cls"); 
   num=EnterAccountNumber(key,total); 
   printf("\n您確定要解除此用戶的凍結(jié)狀態(tài)嗎?\n"); 
   printf("1.確定 2.取消\n"); 
   if(MakeChoice(2)==1) 
   { 
    user[num].state=0; 
    printf("解除凍結(jié)成功!\n按任意鍵返回主界面"); 
    getch(); 
   } 
   break; 
  case 4: 
   system("cls"); 
   while(1) 
   { 
    printf("請(qǐng)輸入新密碼:"); 
    EnterPassword(password); 
    printf("\n請(qǐng)?jiān)俅未_認(rèn)密碼:"); 
    EnterPassword(temp_password); 
    if(JudgePassword(temp_password,password)) 
     printf("\n兩次輸入不相等,密碼設(shè)置失敗!\n"); 
    else 
    { 
     strcpy(administrator_password,password); 
     break; 
    } 
   } 
   printf("\n管理員密碼修改成功!\n按任意鍵返回操作界面"); 
   getch(); 
   break; 
  case 5: 
   system("cls"); 
   printf("當(dāng)前的賬號(hào)生成關(guān)鍵字為“%s”,更改之后所有之前創(chuàng)建的賬戶將無(wú)法打開!\n",key_orig); 
   printf("您確定要更改賬號(hào)生成關(guān)鍵字嗎?\n"); 
   printf("1.確定 2.取消\n"); 
   if(MakeChoice(2)==1) 
   { 
    printf("請(qǐng)輸入新的關(guān)鍵字:"); 
    scanf("%3s",key_orig); 
    printf("當(dāng)前的關(guān)鍵字已更改為“%s”\n按任意鍵返回操作界面",key_orig); 
    getch(); 
   } 
   break; 
  default: 
   return; 
  } 
 } 
} 
void ShowAdministratorMenu() 
{ 
 printf("****中國(guó)銀行煙大計(jì)163-1分行****\n"); 
 printf("**********管理員模式***********\n"); 
 printf("1.修改用戶密碼*****************\n"); 
 printf("2.解除掛失*********************\n"); 
 printf("3.解除凍結(jié)*********************\n"); 
 printf("4.修改管理員密碼***************\n"); 
 printf("5.修改賬號(hào)生成關(guān)鍵字***********\n"); 
 printf("6.返回主界面*******************\n"); 
} 
void WriteToFile(FILE *fp,unsigned char *key,Account *user,char *administrator_password,int total) 
{ 
 int i,j; 
 rewind(fp); 
 fprintf(fp,"%d\n%6s\n%3s\n",total,administrator_password,key); 
 for(i=0; i<total; ++i) 
 { 
  for(j=0; j<3; ++j) 
   fprintf(fp,"%03d ",user[i].AccountNumber[j]); 
  fprintf(fp,"%s %6s %lu %d\n",user[i].name,user[i].password,\ 
    user[i].amount,user[i].state); 
 } 
 fclose(fp); 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言二維數(shù)組應(yīng)用之掃雷游戲

    C語(yǔ)言二維數(shù)組應(yīng)用之掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言二維數(shù)組應(yīng)用之掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C/C++中#define的妙用分享

    C/C++中#define的妙用分享

    本文主要介紹了C++/C關(guān)于#define的一些妙用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C++ Qt開發(fā)之CheckBox多選框組件的用法詳解

    C++ Qt開發(fā)之CheckBox多選框組件的用法詳解

    Qt是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹CheckBox單行輸入框組件的使用方法,需要的朋友可以參考下
    2023-12-12
  • C++遞歸刪除一個(gè)目錄實(shí)例

    C++遞歸刪除一個(gè)目錄實(shí)例

    這篇文章主要介紹了C++遞歸刪除一個(gè)目錄的實(shí)現(xiàn)方法,涉及到目錄的操作及遞歸算法的應(yīng)用,需要的朋友可以參考下
    2014-10-10
  • C++面向?qū)ο笾惡蛯?duì)象那些你不知道的細(xì)節(jié)原理詳解

    C++面向?qū)ο笾惡蛯?duì)象那些你不知道的細(xì)節(jié)原理詳解

    C++是面向?qū)ο缶幊痰?這也是C++與C語(yǔ)言的最大區(qū)別,下面這篇文章主要給大家介紹了關(guān)于C++面向?qū)ο笾惡蛯?duì)象的細(xì)節(jié)原理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • C++分析如何用虛析構(gòu)與純虛析構(gòu)處理內(nèi)存泄漏

    C++分析如何用虛析構(gòu)與純虛析構(gòu)處理內(nèi)存泄漏

    虛析構(gòu)和純虛析構(gòu)共性:可以解決父類指針釋放子類對(duì)象,都需要有具體的函數(shù)實(shí)現(xiàn);虛析構(gòu)和純虛析構(gòu)區(qū)別:如果是純虛析構(gòu),該類屬于抽象類,無(wú)法實(shí)例化對(duì)象
    2022-08-08
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之單鏈表存儲(chǔ)詳解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之單鏈表存儲(chǔ)詳解

    鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文將和大家一起聊聊C語(yǔ)言中單鏈表的存儲(chǔ),感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • C語(yǔ)言?隊(duì)列的實(shí)現(xiàn)全解析

    C語(yǔ)言?隊(duì)列的實(shí)現(xiàn)全解析

    隊(duì)列(Queue)與棧一樣,是一種線性存儲(chǔ)結(jié)構(gòu),它具有如下特點(diǎn):隊(duì)列中的數(shù)據(jù)元素遵循“先進(jìn)先出”(First?In?First?Out)的原則,簡(jiǎn)稱FIFO結(jié)構(gòu)。在隊(duì)尾添加元素,在隊(duì)頭刪除元素
    2022-04-04
  • OpenCV實(shí)現(xiàn)特征檢測(cè)和特征匹配方法匯總

    OpenCV實(shí)現(xiàn)特征檢測(cè)和特征匹配方法匯總

    一幅圖像中總存在著其獨(dú)特的像素點(diǎn),這些點(diǎn)我們可以認(rèn)為就是這幅圖像的特征,成為特征點(diǎn),本文主要介紹了OpenCV實(shí)現(xiàn)特征檢測(cè)和特征匹配方法,感興趣的可以了解一下
    2021-08-08
  • c語(yǔ)言枚舉類型enum的用法及應(yīng)用實(shí)例

    c語(yǔ)言枚舉類型enum的用法及應(yīng)用實(shí)例

    enum是C語(yǔ)言中的一個(gè)關(guān)鍵字,enum叫枚舉數(shù)據(jù)類型,枚舉數(shù)據(jù)類型描述的是一組整型值的集合,這篇文章主要給大家介紹了關(guān)于c語(yǔ)言枚舉類型enum用法及應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2021-07-07

最新評(píng)論