項目實訓:儲蓄綜合業務平臺全解析(附思路框架+源碼)

  • 項目:儲蓄綜合業務平臺全解析
  • 項目簡介:開發一套銀行儲蓄櫃檯的綜合業務平臺,包括儲蓄櫃檯最常使用的開戶、銷戶、存款、取款、查詢等功能
  • 開發工具:Dev C++
  • 知識點:C語言、數據結構
  • 主要技術:結構體的訪問、文件的讀寫

模塊劃分
在這裏插入圖片描述整個項目的代碼分爲兩部分組成:

  • bank.h: 設置一個頭文件用於函數的聲明與結構體的定義
  • bank.c:主程序

程序執行效果圖
在這裏插入圖片描述

/*
文件名:bank.h
@author:suoyue_zhan
@公衆號:鑰道不止 
函數的聲明與結構體的定義
*/ 

//顯示歡迎信息
void welcome();
 
//系統主菜單
void mainmenu();
 
//開戶
void openAnAccount();
 
//銷戶
void closeAnAcount();
 
//存款
void deposit();
 
//取款
void withdraw();
 
//查詢
void query();
   
//顯示所有賬戶
void queryall();

//轉賬 
void transferAccount();

//退出提示
void close(); 

//查找一個賬戶在數組中的位置
int findAnAccount(int accNumber);
 
//顯示一個賬戶的信息
void dispAnAccount(int i);
 
//生成賬號
int createAccNumber();
 
//把數據從文件中讀到結構體數組中
int readDate();
 
//把結構體數組中的數據寫入文件
int writeDate();
 
//檢查錄入的戶名.密碼.存入金額格式是否合法。返回值: 0:合法;1:非法。
//flag: 0:用戶名;1:密碼;2:存入金額。checkstr: 需要檢查的項目。
int checkInput(int flag, char *checkStr);
 
//去除右空格
char *rightTrim(char *str);
 
//得到鍵盤錄入的戶名
void getaccName(char accName[]);
 
//得到鍵盤錄入的密碼
void getaccPWD(char accPWD[]);
 
//得到鍵盤錄入的金額
double getcash(int flag);
 
//得到鍵盤錄入的賬號
int getaccNumber(int flag);

#define N_MAXREC_NO 100		//文件最大行數
#define MAXLINE 256			//行最大長度
 
//數據文件記錄結構
struct record
{
	int accNumber;		//賬號
	char accName[9];	//戶名
	char accPWD[7];		//密碼
	double balance;		//餘額
	char flag[2];		//銷戶標誌
};
 
//自定義數據類型
typedef struct record RECORD;
 
//結構體數組
RECORD rs[N_MAXREC_NO];
 
//最後一個賬戶在結構體中的位置
int maxAccount = -1;

主程序bank.c,此處只給出框架,由於代碼較多,在未清晰的瞭解程序的框架前不建議查看完整代碼,若只是要應付課設那在下也…( •̀ ω •́ )y
在清晰的瞭解程序的框架後可於微信搜索公衆號“鑰道不止”或“suoyue_zhan”或文末直接掃碼關注並在後臺回覆“儲蓄綜合業務”即可獲取完整代碼

/*
文件名:bank.c 
@author:suoyue_zhan
@公衆號:鑰道不止 
@項目:儲蓄綜合業務平臺
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

#include "bank.h"

//主函數 
int main(){
	char userName[9];		//存儲操作者用戶名"admin" 
	char userPWD[7];		//存儲操作者密碼"admin" 
	int i;
	welcome();
	for(i = 0; i < 3; i++){		//登陸驗證:3次機會 
		printf("\n");
		printf("請輸入您的用戶名:");
		scanf("%s", userName);
		fflush(stdin);			//清空輸入緩衝區 ,確保不影響後面的數據讀取 
		
		printf("\n請輸入您的密碼:");
		scanf("%s",userPWD);
		fflush(stdin);
	
		if ((strcmp(userName,"admin")==0) && (strcmp(userPWD,"admin")==0)){		//用戶名和密碼正確,顯示主菜單
			mainmenu();
		}
		else{
			if (i < 2){	//用戶名或密碼錯誤,提示用戶重新輸入
				printf("用戶名或密碼錯誤,請重新輸入!");
			}
			else{		//連續三次輸錯用戶名或密碼,退出系統
				printf("用戶名或密碼錯誤,退出系統!");
				return 0; 
			}
		}
	}	
	printf("\n感謝使用本系統!!!\n");
	return 0;
}

//顯示歡迎信息
void welcome(){

}

//系統主菜單
void mainmenu(){
	int choice;
	choice = -1;
	do{
		printf("\n");
		printf("+-----------------------------------+\n");
		printf("|  存款 請按:1       銷戶 請按:5  |\n");
		printf("|  取款 請按:2       信息 請按:6  |\n");
		printf("|  查詢 請按:3       轉賬 請按:7  |\n");
		printf("|  開戶 請按:4       退出 請按:0  |\n");
		printf("+-----------------------------------+\n");
		
		printf("請輸入您的選擇:");
		scanf("%d", &choice);		
		fflush(stdin);
	
		switch(choice){
			case 0:
				close(); 
				exit(0);
			case 1:
				deposit();
				break;
			case 2:
				withdraw();
				break;
			case 3:
				query();
				break;
			case 4:
				openAnAccount();
				break;
			case 5:
				closeAnAcount();
				break;
			case 6:			
				queryall();
				break;
			case 7:
				transferAccount();
				break;
			default:
				printf("\n無效選項!");
				break;
			}
	}while(choice != 0);
}

//開戶
void openAnAccount(){
	
}

//顯示一個賬戶的信息
void dispAnAccount(int i){

}

//生成賬號
int createAccNumber(){

}

//獲取鍵盤錄入的賬戶名
void getaccName(char accName[]){

}

//獲取鍵盤錄入的密碼
void getaccPWD(char accPWD[]){

}

//獲取鍵盤錄入的金額
double getcash(int flag){

}	

//檢查錄入的戶名.密碼.存入金額格式是否合法
int checkInput (int flag, char *checkStr){

}

//存款
void deposit(){

}

//得到鍵盤錄入的賬號
int getaccNumber(int flag){
	
} 

//查找一個賬戶在數組中的位置
int findAnAccount(int accNumber){
	
}

//去除右空格
char *rightTrim(char *str){

}

//把數據從文件中讀到結構體數組中
int readDate(){

}

//取款
void withdraw(){

}

//把結構體數組中的數據寫入文件
int writeDate(){

}
 
//查詢
void query(){	

}

//銷戶
void closeAnAcount(){
	
}

//顯示所有賬戶
void queryall(){

}

//轉賬 
void transferAccount(){

}
 
//退出提示
void close(){

}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章