亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言銀行系統課程設計

2020-01-26 13:47:41
字體:
來源:轉載
供稿:網友

本文為大家分享了C語言銀行系統課程設計,供大家參考,具體內容如下

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); //第一個參數為加密關鍵字,第二個參數為賬戶序號 int JudgePassword(char *,char *); int decrypt(int *,unsigned char *); void LogIn(unsigned char *,Account *,int); //第二個參數為當前賬戶數目,登陸成功返回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("銀行數據庫無法打開,按任意鍵結束程序!/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);//將數據存入數組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 //賬戶狀態 0為正常 1為掛失 2為凍結 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); //第一個參數為加密關鍵字,第二個參數為賬戶序號 int JudgePassword(char *,char *); int decrypt(int *,unsigned char *); void LogIn(unsigned char *,Account *,int); //第二個參數為當前賬戶數目,登陸成功返回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;  //將文件中的用戶信息存到數組中  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("****中國銀行煙大計163-1分行****/n");  printf("目前共有%d名注冊用戶*****/n",total);  printf("1.登陸*************************/n");  printf("2.開戶*************************/n");  printf("3.進入管理員模式***************/n");  printf("4.退出*************************/n"); } int MakeChoice(int n) {  int judge;  printf("請輸入1~%d/n",n);  scanf("%d",&judge);  while(judge<1||judge>n)//確保輸入的是1~n  {   printf("輸入不合法,請輸入1~%d/n",n);   fflush(stdin);//如果不加這句,輸入一些字母會導致函數無限循環   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')//執行退格刪除操作   {    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("銀行用戶數量已達到上限!/n按任意鍵返回主界面");   getch();   return;  }  int i,flag,num_de[3];  int num_en[3];  char temp_password[N_P],password[N_P];  //將num的個位十位和百位分解,num_de[2]存個位,以此類推  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("請輸入用戶姓名:");   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("您的賬號是:");  for(i=0; i<3; ++i)   printf("%03d ",num_en[i]);  while(1)  {   printf("/n請設置密碼:");   EnterPassword(password);   printf("/n請再次確認密碼:");   EnterPassword(temp_password);   if(JudgePassword(temp_password,password))    printf("/n兩次輸入不相等,密碼設置失敗!");   else   {    strcpy(user[num].password,password);    user[num].password[N_P]='/0';    break;   }  }  user[num].amount=0;  user[num].state=0;  printf("/n賬戶創建成功!/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)//輸入賬號  {   printf("請輸入賬號:");   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則賬號輸入錯誤    printf("/n賬號輸入錯誤!/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);  //判斷賬戶狀態  if(user[num].state==3)  {   printf("該賬戶已銷戶,無法使用!/n");   printf("按任意鍵返回操作界面");   getch();   return;  }  else if(user[num].state==2)  {   printf("該賬戶因輸入密碼錯誤次數達三次,已凍結!/n請進入管理員模式解除異常狀態!/n");   printf("按任意鍵返回操作界面");   getch();   return;  }  //判斷結束  i=0;  while(1)//輸入密碼  {   printf("/n請輸入密碼:");   EnterPassword(password);   if(JudgePassword(password,user[num].password)&&(++i<3))    printf("/n密碼輸入錯誤,您還有%d次機會/n",3-i);   else if(i>=3)   {    user[num].state=2;    printf("/n密碼錯誤次數過多,賬戶已凍結!/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.轉賬*************************/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) //計算最大存款額max   max*=2;  while(1)  {   system("cls");   ShowSubMenu(user[num].name);   switch(MakeChoice(8))   {   case 1:    system("cls");    while(1)    {     printf("請輸入存款金額:");     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("該賬戶已掛失,無法執行取款操作!/n");     printf("按任意鍵返回操作界面");     getch();     break;    }    while(1)    {     printf("請輸入取款金額:");     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("賬戶狀態:");    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("該賬戶已掛失,無法執行轉賬操作!/n");     printf("按任意鍵返回操作界面");     getch();     break;    }    num_t=EnterAccountNumber(key,total);    while(1)    {     printf("請輸入轉賬金額:");     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");     else if(amount_t>=max-user[num_t].amount)      printf("/n對方總金額超出上限,轉賬失?。?n");     else     {      user[num].amount-=amount_t;      user[num_t].amount+=amount_t;      printf("/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("您確定要銷戶嗎?銷戶后所有功能都將無法實現,賬戶內的存款將凍結!/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請輸入原密碼:");     EnterPassword(password);     if(JudgePassword(password,user[num].password))      printf("/n原密碼輸入錯誤!/n");     else      break;    }    while(1)    {     printf("/n請輸入新密碼:");     EnterPassword(password);     printf("/n請再次確認密碼:");     EnterPassword(temp_password);     if(JudgePassword(temp_password,password))      printf("/n兩次輸入不相等,密碼設置失敗!");     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("請輸入管理員密碼密碼:");   EnterPassword(password);   if(JudgePassword(password,administrator_password))    printf("密碼輸入錯誤!/n");   else    break;  }  printf("/n登陸成功!按任意鍵繼續");  getch();  while(1)  {   system("cls");   ShowAdministratorMenu();   switch(MakeChoice(6))   {   case 1:    system("cls");    num=EnterAccountNumber(key,total);    printf("請設置密碼:");    EnterPassword(password);    printf("您設置的密碼是:");    puts(user[num].password);    printf("/n按任意鍵返回操作界面");    getch();    break;   case 2:    system("cls");    num=EnterAccountNumber(key,total);    printf("您確定要解除此用戶的掛失狀態嗎?/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您確定要解除此用戶的凍結狀態嗎?/n");    printf("1.確定 2.取消/n");    if(MakeChoice(2)==1)    {     user[num].state=0;     printf("解除凍結成功!/n按任意鍵返回主界面");     getch();    }    break;   case 4:    system("cls");    while(1)    {     printf("請輸入新密碼:");     EnterPassword(password);     printf("/n請再次確認密碼:");     EnterPassword(temp_password);     if(JudgePassword(temp_password,password))      printf("/n兩次輸入不相等,密碼設置失敗!/n");     else     {      strcpy(administrator_password,password);      break;     }    }    printf("/n管理員密碼修改成功!/n按任意鍵返回操作界面");    getch();    break;   case 5:    system("cls");    printf("當前的賬號生成關鍵字為“%s”,更改之后所有之前創建的賬戶將無法打開!/n",key_orig);    printf("您確定要更改賬號生成關鍵字嗎?/n");    printf("1.確定 2.取消/n");    if(MakeChoice(2)==1)    {     printf("請輸入新的關鍵字:");     scanf("%3s",key_orig);     printf("當前的關鍵字已更改為“%s”/n按任意鍵返回操作界面",key_orig);     getch();    }    break;   default:    return;   }  } } void ShowAdministratorMenu() {  printf("****中國銀行煙大計163-1分行****/n");  printf("**********管理員模式***********/n");  printf("1.修改用戶密碼*****************/n");  printf("2.解除掛失*********************/n");  printf("3.解除凍結*********************/n");  printf("4.修改管理員密碼***************/n");  printf("5.修改賬號生成關鍵字***********/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); } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美中文字幕| 97免费中文视频在线观看| 一区二区三区四区精品| 欧美性猛交xxxx免费看漫画| 久久久久一本一区二区青青蜜月| 日韩av影片在线观看| 欧美孕妇毛茸茸xxxx| 欧美激情精品在线| 欧美在线视频播放| zzijzzij亚洲日本成熟少妇| 亚洲人成在线电影| 亚洲丝袜av一区| 日韩国产欧美区| 久久久噜噜噜久久| 亚洲天堂av高清| 亚洲欧美成人在线| 成人久久久久爱| 国产精品老牛影院在线观看| 日韩高清人体午夜| 91中文精品字幕在线视频| 奇米一区二区三区四区久久| 国产精品色悠悠| 亚洲电影免费观看高清完整版在线观看| 国内免费久久久久久久久久久| 国产视频精品xxxx| 98午夜经典影视| 成人av资源在线播放| 欧美精品videossex性护士| 亚洲第一区第一页| 亚洲午夜性刺激影院| 久久激情五月丁香伊人| 欧美性xxxx极品hd欧美风情| 国内精品美女av在线播放| 欧美精品福利视频| 热99精品只有里视频精品| 亚洲a成v人在线观看| 韩国国内大量揄拍精品视频| 久久久久久伊人| 日韩黄在线观看| 中文字幕日韩欧美精品在线观看| 38少妇精品导航| 欧美成人三级视频网站| 久久久久国产一区二区三区| 日韩精品视频中文在线观看| 久久久久国产一区二区三区| 欧美猛男性生活免费| 欧美极品少妇xxxxx| 国产69精品久久久| 久久久久成人精品| 久久成人18免费网站| 中文字幕久热精品在线视频| 亚洲男人天堂久| 26uuu亚洲国产精品| 日日噜噜噜夜夜爽亚洲精品| 亚洲国产中文字幕久久网| 亚洲美女又黄又爽在线观看| 91国产精品电影| 91精品视频在线| 欧美激情a∨在线视频播放| 91av网站在线播放| 亚洲精品美女免费| 日韩av中文字幕在线| 日韩一区二区在线视频| 亚洲国产欧美日韩精品| 国产精品欧美一区二区三区奶水| 九九久久久久久久久激情| 亚洲999一在线观看www| 国产区亚洲区欧美区| 国产精品日韩欧美| 亚洲电影免费观看高清完整版| 欧美大片在线看免费观看| 亚洲欧美中文日韩在线| 一区二区三区久久精品| 欧美电影免费播放| 亚洲国产精彩中文乱码av在线播放| 久久精品人人爽| 欧美精品videosex极品1| 欧美高清在线观看| 亚洲free性xxxx护士白浆| 亚洲视频一区二区三区| 国精产品一区一区三区有限在线| 欧美日韩在线看| 久久影视电视剧免费网站清宫辞电视| 色综合视频一区中文字幕| 日韩av最新在线观看| 欧洲午夜精品久久久| 亚洲图中文字幕| 亚洲欧美激情精品一区二区| 成人久久18免费网站图片| 亚洲国产精品成人av| 欧美高清在线观看| 久久久久久久久亚洲| 国产亚洲视频在线| 欧美色视频日本高清在线观看| 亚洲第一中文字幕在线观看| 影音先锋日韩有码| 亚洲国产一区二区三区四区| 久久久女人电视剧免费播放下载| 亚洲一区亚洲二区亚洲三区| 国产精品扒开腿做爽爽爽男男| 国产在线一区二区三区| 浅井舞香一区二区| 国产精品成人观看视频国产奇米| 欧美国产在线电影| 亚洲欧美日韩国产中文| 精品成人国产在线观看男人呻吟| 亚洲成人国产精品| 日韩av在线免费观看一区| 91亚洲国产成人久久精品网站| 国产又爽又黄的激情精品视频| 精品亚洲夜色av98在线观看| 亚洲网站在线播放| 亚洲xxx自由成熟| 超碰97人人做人人爱少妇| 欧洲成人在线视频| 欧美另类极品videosbest最新版本| 欧美一区二区三区免费视| 伊人男人综合视频网| 国内精品美女av在线播放| 精品久久久久久久久久| 亚洲a在线播放| 亚洲另类xxxx| 亚洲欧美国产制服动漫| 欧美成人中文字幕| 91人人爽人人爽人人精88v| 国产精品视频免费在线| 日韩一区二区精品视频| 亚洲精品456在线播放狼人| 欧美性猛交视频| 日韩av观看网址| 国产一区二区激情| 日本中文字幕不卡免费| 国内揄拍国内精品少妇国语| 69**夜色精品国产69乱| 欧美性理论片在线观看片免费| 亚洲成色999久久网站| 亚洲欧美制服中文字幕| 91性高湖久久久久久久久_久久99| 国产视频精品久久久| 亚洲色图激情小说| 茄子视频成人在线| 欧美夫妻性生活视频| 国产精品久久久久久久午夜| 欧美美最猛性xxxxxx| 亚洲全黄一级网站| 国产亚洲精品综合一区91| 日本精品一区二区三区在线播放视频| 欧美一级片久久久久久久| 欧美丰满片xxx777| 性欧美暴力猛交69hd| 欧美大片免费观看| 国产精品久久二区| www国产亚洲精品久久网站| 欧美性生交xxxxxdddd| 久久韩国免费视频| 欧美激情视频一区二区三区不卡| 亚洲精品国产综合区久久久久久久| 国产精品久久久久久久久久小说| 国内精品免费午夜毛片| 久久久久久久国产| 国产精品久久久久7777婷婷| 欧美午夜久久久| 在线观看精品自拍私拍| 亚洲伊人久久大香线蕉av|