1. 程式人生 > 其它 >C語言課程設計

C語言課程設計

技術標籤:c語言

C語言課程設計作業
大約有500行程式碼,運用了檔案,結構,函式等知識,僅供參考。
我學習C語言時間也不是很長,可能其中有些錯誤,請小夥伴們多注意哦。
C語言是學習其他語言的基礎,下學期學習C++也會有課程設計,完成之後會發出來給小夥伴們參考一下的。
程式碼函式我都做了註釋,方便理解。

```/*銀行儲蓄業務系統*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Welcome();                   /*歡迎介面*/
void Login();                     /*登入*/
void Mainmenu(); /*主選單*/ void Query(); /*查詢餘額*/ void DisplayAccount(int count); /*賬戶狀態*/ void OpenAccount(); /*開戶*/ void CloseAccount(); /*銷戶*/ void Deposit(); /*存款*/ void Withdraw(); /*取款*/ void Losecard(); /*掛失*/
void Opencard(); /*解掛*/ void TransferAccounts(); /*轉賬*/ struct user { int id; char userName[10];//使用者名稱 char userPassword[10];//密碼 float money; int status;// 狀態 1:正常 2. 掛失 0:銷戶 } users[60]; //結構陣列(所有使用者的個人資訊) //全域性變數 int number=0; // 記錄編號和已經新增的使用者人數 FILE *fp; int main(void) { int choose,
n=5; //歡迎介面 Welcome(); //登入 Login(); do { /*主選單*/ Mainmenu(); printf("請選擇您要辦理的業務:"); scanf("%d",&choose); switch(choose) { case 1: Deposit(); break;//存款 case 2: Withdraw(); break;//取款 case 3: Query(); break;//查詢 case 4: OpenAccount(); break;//開戶 case 5: CloseAccount(); break;//銷戶 case 6: TransferAccounts(); break;//轉賬 case 7: Losecard(); break;//掛失 case 8: Opencard(); break;//解除掛失 } } while(choose!=0); if(choose==0) { printf("感謝您使用銀行儲蓄業務管理系統,歡迎下次繼續使用!\n"); } } //展示賬戶狀態 void DisplayAccount(int count) { printf("\t|------------------------------------|\n"); printf("\t|-**********************************-|\n"); printf("\t\t賬號:%d\n",users[count].id); printf("\t\t使用者名稱:%s\n",users[count].userName); printf("\t\t密碼:%s\n",users[count].userPassword); printf("\t\t餘額:%.2f\n",users[count].money); printf("\t\t賬戶狀態:"); if(users[count].status == 1) printf("正常\n"); if(users[count].status == 2) printf("掛失\n"); else if(users[count].status == 0) printf("銷戶\n"); printf("\t|-**********************************-|\n"); printf("\t|------------------------------------|\n"); } //歡迎介面 void Welcome() { printf("\t|------------------------------------|\n"); printf("\t|-¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥-|\n"); printf("\t|----------銀行儲蓄業務系統----------|\n"); printf("\t|************************************|\n"); printf("\t|------------版本:V1.0--------------|\n"); printf("\t|--------開發時間:2020-12-3---------|\n"); printf("\t|-¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥-|\n"); printf("\t|------------------------------------|\n"); } //登入 void Login() { int count=0; char username[10],password[10]; do { printf("請輸入管理員名:"); gets(username); printf("請輸入管理員密碼:"); gets(password); if(((strcmp(username,"admin")))==0&&((strcmp(password,"123456"))==0)) { printf("        正在登陸,請稍等\n"); printf("■■■■■■■■■■■■■■■■■■■■\n"); printf("登入成功!\n"); break; } else { printf("管理員名或密碼錯誤.\n"); printf("請重新輸入管理員名或密碼.\n"); count++; } } while(count<=3); if(count>3) { printf("登入失敗,請及時聯絡銀行工作人員!"); } } /*主選單*/ void Mainmenu() { printf("\t|------------------------------------|\n"); printf("\t|-**********************************-|\n"); printf("\t|---------------主選單---------------|\n"); printf("\t|--存款<1>--&--開戶<4>--&--掛失<7>---|\n"); printf("\t|------------------------------------|\n"); printf("\t|--取款<2>--&--銷戶<5>--&--解掛<8>---|\n"); printf("\t|------------------------------------|\n"); printf("\t|--查詢<3>--&--轉賬<6>--&--退出<0>---|\n"); printf("\t|------------------------------------|\n"); printf("\t|-**********************************-|\n"); printf("\t|------------------------------------|\n"); } //查詢餘額 void Query() { int id; printf("請輸入所要查詢的使用者賬戶:"); scanf("%d",&id); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[id].id,users[id].userName,users[id].userPassword,&users[id].money,&users[id].status)==5) { if(id==users[id].id) { break; } } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(users[id].status==0) { //判斷使用者狀態 printf("該賬號已銷戶,無法進行查詢操作.\n"); } else { //不是銷戶狀態下 char pwd1[10]; printf("請輸入所要查詢的賬戶名所對應密碼:"); scanf("%s",pwd1); if(strcmp(pwd1,users[id].userPassword)==0)//比較密碼與使用者名稱是否匹配 DisplayAccount(id); else printf("您的賬號或密碼有誤,無法進行查詢,請重新進行操作\n"); } } //存款 void Deposit() { FILE *temp; int i=0; printf("請輸入所要存款的賬號:"); int id; scanf("%d",&id); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[id].id,users[id].userName,users[id].userPassword,&users[id].money,&users[id].status)==5) { if(id==users[id].id) { break; } } if(users[id].status == 1) { char um[10]; printf("請輸入所要存款的使用者名稱:"); scanf("%s",um); char pwd[10]; printf("請輸入所要存款賬號的密碼:"); scanf("%s",pwd); if(strcmp(um,users[id].userName)==0&&strcmp(pwd,users[id].userPassword)==0) { printf("請輸入存款金額:"); float money,money2; scanf("%f",&money); users[id].money+=money; money2=users[id].money; temp=fopen("temp.txt","w"); rewind(fp);//回到fp所指檔案內容開頭 while(fscanf(fp,"%d %s %s %f %d",&users[i].id,users[i].userName,users[i].userPassword,&users[i].money,&users[i].status)==5) { if(strcmp(um,users[i].userName)==0&&strcmp(pwd,users[i].userPassword)== 0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,money2,users[i].status); users[id].money=money2; } else fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,users[i].status); i++; } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(fclose(temp)) { printf("Can not close the file!\n"); exit(0); } remove("users.txt");//刪除users檔案 rename("temp.txt","users.txt");//重新命名temp檔案 printf("存款已完成!\n"); DisplayAccount(id); } else printf("您的使用者名稱或密碼有誤,無法存款,請重新進行操作\n"); } else if(users[id].status==2) { printf("該賬號已掛失,無法進行存款操作!\n"); } else if(users[id].status==0) { printf("該賬號已銷戶,無法進行存款操作!\n"); printf("您是否選擇開戶操作:Yes<1> No<2>\n"); int choose; scanf("%d",&choose); if(choose==1) { OpenAccount(); } } } //取款 void Withdraw() { FILE *temp; int i=0; printf("請輸入所要取款的賬號:"); int id; scanf("%d",&id); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[id].id,users[id].userName,users[id].userPassword,&users[id].money,&users[id].status)==5) { if(id==users[id].id) { break; } } if(users[id].status == 1) { char um[10]; printf("請輸入所要取款的使用者名稱:"); scanf("%s",um); char pwd[10]; printf("請輸入所要取款賬號的密碼:"); scanf("%s",pwd); if(strcmp(um,users[id].userName)==0&&strcmp(pwd,users[id].userPassword)==0) { printf("請輸入取款金額:"); float money,money2; scanf("%f",&money); if(users[id].money>=money) { users[id].money-=money; money2=users[id].money; temp=fopen("temp.txt","w"); rewind(fp);//回到fp所指檔案內容開頭 while(fscanf(fp,"%d %s %s %f %d",&users[i].id,users[i].userName,users[i].userPassword,&users[i].money,&users[i].status)==5) { if(strcmp(um,users[i].userName)==0&&strcmp(pwd,users[i].userPassword)== 0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,money2,users[i].status); users[id].money=money2; } else fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,users[i].status); i++; } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(fclose(temp)) { printf("Can not close the file!\n"); exit(0); } remove("users.txt");//刪除users檔案 rename("temp.txt","users.txt");//重新命名temp檔案 printf("您取款後的狀態為:\n"); DisplayAccount(id); } else printf("您的金額已不足!\n"); } else printf("您的使用者名稱或密碼有誤,無法存款,請重新進行操作\n"); } else if(users[id].status==2) { printf("該賬號已掛失,無法進行取款操作\n"); } else if(users[id].status==0) { printf("該賬號已銷戶,無法進行取款操作\n"); } } //開戶 void OpenAccount() { int i,flag=0; char pwd1[7],pwd2[7]; char name[10]; if((fp=fopen("users.txt","r+"))==NULL) { fp=fopen("users.txt","w+"); //printf("File open error!\n"); //exit(0); } while(fscanf(fp,"%d %s %s %f %d",&number,name,pwd1,&users[number].money,&users[number].status)==5) { number++; } printf("歡迎使用開戶模組!\n"); printf("請輸入您的使用者名稱:"); scanf("%s",name); for(i=1; i<number; i++) { if(strcmp(users[i].userName,name)==0) { printf("您輸入的使用者名稱已經存在,請重新輸入:"); scanf("%s",name); break; } } if(i==number) { printf("您申請的使用者名稱成功!\n"); } strcpy(users[number].userName,name); printf("請輸入您的密碼(6位數字):"); scanf("%s",pwd1); printf("請再次輸入您的密碼進行確認:"); scanf("%s",pwd2); if(strcmp(pwd1,pwd2)==0) { printf("開戶成功!\n"); strcpy(users[number].userPassword,pwd1); printf("請輸入您要存款的金額:"); scanf("%f",&users[number].money); users[number].status=1; fprintf(fp,"%d %s %s %f %d\n",number,name,pwd1,users[number].money,users[number].status); if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } printf("您的賬戶資訊為:\n"); users[number].id=number; DisplayAccount(number); } else { printf("開戶失敗,請檢查錯誤後,重新進行操作\n"); number--; } return; } //銷戶 void CloseAccount() { FILE *temp; int i=0,t; int num,account; char um[10],pwd[10]; printf("請輸入所要銷戶的賬號:"); scanf("%d",&account); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[account].id,users[account].userName,users[account].userPassword,&users[account].money,&users[account].status)==5) { if(account==users[account].id) { break; } } if(users[account].status == 0) { printf("該賬號已銷號!\n"); printf("請輸入所要銷戶賬號對應的密碼:"); } else if(users[account].status==1||users[account].status==2) { printf("請輸入所要銷戶的賬戶名:"); scanf("%s",um); printf("請輸入所要銷戶賬號所對應的密碼:"); scanf("%s",pwd); if(strcmp(um,users[account].userName)== 0 && strcmp(pwd,users[account].userPassword)== 0) { temp=fopen("temp.txt","w"); rewind(fp);//回到fp所指檔案內容開頭 while(fscanf(fp,"%d %s %s %f %d",&users[i].id,users[i].userName,users[i].userPassword,&users[i].money,&users[i].status)==5) { if(strcmp(um,users[i].userName)== 0 && strcmp(pwd,users[i].userPassword)== 0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,0); users[i].status=0; t=i; } else fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,users[i].status); i++; } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(fclose(temp)) { printf("Can not close the file!\n"); exit(0); } remove("users.txt");//刪除users檔案 rename("temp.txt","users.txt");//重新命名temp檔案 DisplayAccount(t); } else { printf("賬號名或密碼輸入錯誤!\n"); printf("請重新輸入:\n"); } } } //轉賬 void TransferAccounts() { FILE *temp; int id1,i=0,t; printf("請輸入您的賬號:"); scanf("%d",&id1); printf("請輸入您的賬戶名:"); char um1[10],pwd1[10]; scanf("%s",um1); printf("請輸入您的密碼:"); scanf("%s",pwd1); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[id1].id,users[id1].userName,users[id1].userPassword,&users[id1].money,&users[id1].status)==5) { if(id1==users[id1].id) { break; } } if(strcmp(um1,users[id1].userName)==0&&strcmp(pwd1,users[id1].userPassword)==0&&users[id1].status == 1) { int id2; printf("請輸入您所要轉入金額的賬號:"); scanf("%d",&id2); printf("請輸入您所要轉入金額的使用者名稱:"); char um2[10]; scanf("%s",um2); while(fscanf(fp,"%d %s %s %f %d",&users[id2].id,users[id2].userName,users[id2].userPassword,&users[id2].money,&users[id2].status)==5) { if(id2==users[id2].id) { break; } } if(strcmp(um2,users[id2].userName)== 0) { float money,m1,m2; printf("請輸入您要轉賬的金額:"); scanf("%f",&money); if(users[id1].money>money) { users[id1].money-=money; users[id2].money+=money; m1=users[id1].money; m2=users[id2].money; temp=fopen("temp.txt","w"); rewind(fp);//回到fp所指檔案內容開頭 while(fscanf(fp,"%d %s %s %f %d",&users[i].id,users[i].userName,users[i].userPassword,&users[i].money,&users[i].status)==5) { if(strcmp(um1,users[i].userName)==0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,m1,users[i].status); users[i].money=m1; } else if(strcmp(um2,users[i].userName)==0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,m2,users[i].status); users[i].money=m2; } else fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,users[i].status); i++; } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(fclose(temp)) { printf("Can not close the file!\n"); exit(0); } remove("users.txt");//刪除users檔案 rename("temp.txt","users.txt");//重新命名temp檔案 DisplayAccount(id1); DisplayAccount(id2); } else { DisplayAccount(id1); printf("您的金額已不足!\n"); } } else printf("您輸入的收款人姓名錯誤!\n"); } else printf("您輸入的使用者名稱或密碼錯誤!\n"); } //掛失 void Losecard() { FILE *temp; int i=0,t; int num,account; char um[10],pwd[10]; printf("請輸入所要掛失的賬號:"); scanf("%d",&account); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[account].id,users[account].userName,users[account].userPassword,&users[account].money,&users[account].status)==5) { if(account==users[account].id) { break; } } if(users[account].status== 2) { printf("該賬號已掛失!\n"); } else if(users[account].status == 0) { printf("該賬號已銷號!\n"); } else if(users[account].status == 1) { printf("請輸入所要掛失的賬戶名:"); scanf("%s",um); printf("請輸入所要掛失賬號對應的密碼:"); scanf("%s",pwd); if(strcmp(um,users[account].userName)== 0 && strcmp(pwd,users[account].userPassword)== 0) { temp=fopen("temp.txt","w"); rewind(fp);//回到fp所指檔案內容開頭 while(fscanf(fp,"%d %s %s %f %d",&users[i].id,users[i].userName,users[i].userPassword,&users[i].money,&users[i].status)==5) { if(strcmp(um,users[i].userName)== 0 && strcmp(pwd,users[i].userPassword)== 0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,2); users[i].status=2; t=i; } else fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,users[i].status); i++; } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(fclose(temp)) { printf("Can not close the file!\n"); exit(0); } remove("users.txt");//刪除users檔案 rename("temp.txt","users.txt");//重新命名temp檔案 DisplayAccount(t); } else { printf("賬號名或密碼輸入錯誤!\n"); printf("請重新輸入:\n"); } } } //取消掛失 void Opencard() { FILE *temp; int i=0,t; int num,account; char um[10],pwd[10]; printf("請輸入所要掛失的賬號:"); scanf("%d",&account); if((fp=fopen("users.txt","r+"))==NULL) { printf("File open error!"); exit(0); } while(fscanf(fp,"%d %s %s %f %d",&users[0].id,users[0].userName,users[0].userPassword,&users[0].money,&users[0].status)==5) { if(account==users[0].id) { break; } } if(users[0].status==1) { printf("該賬號狀態正常!\n"); } else if(users[0].status == 0) { printf("該賬號已銷號!\n"); } else if(users[0].status == 2) { printf("請輸入所要掛失的賬戶名:"); scanf("%s",um); printf("請輸入所要掛失賬號對應的密碼:"); scanf("%s",pwd); if(strcmp(um,users[0].userName)== 0 && strcmp(pwd,users[0].userPassword)== 0) { temp=fopen("temp.txt","w"); rewind(fp);//回到fp所指檔案內容開頭 while(fscanf(fp,"%d %s %s %f %d",&users[i].id,users[i].userName,users[i].userPassword,&users[i].money,&users[i].status)==5) { if(strcmp(um,users[i].userName)== 0 && strcmp(pwd,users[i].userPassword)== 0) { fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,1); users[i].status=1; t=i; } else fprintf(temp,"%d %s %s %f %d\n",users[i].id,users[i].userName,users[i].userPassword,users[i].money,users[i].status); i++; } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } if(fclose(temp)) { printf("Can not close the file!\n"); exit(0); } remove("users.txt");//刪除users檔案 rename("temp.txt","users.txt");//重新命名temp檔案 DisplayAccount(t); } else { printf("賬號名或密碼輸入錯誤!\n"); printf("請重新輸入:\n"); } } }