项目实训:储蓄综合业务平台全解析(附思路框架+源码)

2024-02-23 18:58

本文主要是介绍项目实训:储蓄综合业务平台全解析(附思路框架+源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

在这里插入图片描述

这篇关于项目实训:储蓄综合业务平台全解析(附思路框架+源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739615

相关文章

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内