- 項目:儲蓄綜合業務平臺全解析
- 項目簡介:開發一套銀行儲蓄櫃檯的綜合業務平臺,包括儲蓄櫃檯最常使用的開戶、銷戶、存款、取款、查詢等功能
- 開發工具: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(){
}