- 项目:储蓄综合业务平台全解析
- 项目简介:开发一套银行储蓄柜台的综合业务平台,包括储蓄柜台最常使用的开户、销户、存款、取款、查询等功能
- 开发工具: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(){
}