C语言实现模拟银行系统
作者:toMontain 发布时间:2022-01-17 08:40:27
标签:C语言,银行系统
本文实例为大家分享了C语言实现银行系统的具体代码,供大家参考,具体内容如下
1.实现要求
生成一个1000-1000000之间的随机数来代表账户余额(要求每次生成的数不一样);
实现登录功能:用户有三次输入密码的机会,输入正确的密码才能登录,如果输入错误超过了三次 之后密码还是错,则提示账户被冻结,退出程序。
实现查询账户余额功能:查询账户余额并输出。
实现取款功能:提示用户输入相应的金额,并取款。
实现存款功能:提示用户输入存款金额,并存款。
实现修改密码功能:提示用户输入新的密码,密码修改成功后,退出系统,提示重新登录。
实现退出系统功能。
2.示例代码:
//示例代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu();
int changePwd();
int drawDeposit() ;
void getDeposit() ;
void judgePwd();
void Print();
long saveDeposit();
long deposit;//存款
int password=123456;//密码
//随机生成一个1000-1000000之间的整数来代表存款
void getDeposit() {
do {
deposit=rand()%1000000+1;
} while(deposit<1000);
}
//打印菜单选择项
void menu() {
printf("\t ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\t☆※※※※※※※※欢迎使用银行系统※※※※※※※※☆\n");
printf("\t ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("银行业务有以下几种:\n");
printf("按键1:查看账户余额\n");
printf("按键2:取款\n");
printf("按键3:存款\n");
printf("按键4:修改密码\n");
printf("按键5:退出系统\n");
}
//判断密码是否正确
void judgePwd() {
int input;
int count=0;//输入密码的次数,初值为0
printf("请输入您的密码:");
scanf("%d",&input);
count++;//每输入一次密码,次数加一
//如果密码密码输入错误,就提示重新输入,直到输入正确的密码或者次数用完
while(input!=password) {
if(count==3) {//当count=3时,表示输入了3次错误的密码,退出程序
printf("你的次数已用完,账户已被冻结!\n");
printf("正在退出系统......\n");
exit(0);
}
printf("密码输入错误,请重新输入:(您还有%d次机会)\n请输入您的密码:",3-count);
scanf("%d",&input);
count++;
}
printf("密码输入正确,登录成功!\n");
printf("\n \n");
}
//打印账户余额
void Print() {
printf("您的账户余额为:%ld\n",deposit);
}
//取款
int drawDeposit() {
long draw;//取款金额
do {
printf("请输入您的取款金额(本机只能提取100元面值的钞票):");
scanf("%ld",&draw);
if(draw>deposit) {//如果输入的金额大于余额,提示余额不足
while(draw>deposit) {
printf("您的余额不足,请重新输入取款金额:");
scanf("%ld",&draw);
}
}
if(draw<100||draw%100!=0) {//输入的金额不合法,提示重新输入
printf("输入的取款金额有误,请重新输入取款金额:\n");
}
} while(draw<100||draw%100!=0);
deposit=deposit-draw;//计算余额(原来的余额-取款金额)
return draw;
}
//存款
long saveDeposit() {
long save;//存款金额
printf("存款时只接受面值为100的钞票。\n") ;
printf("请输入您的存款金额:");
scanf("%ld",&save);
//存款金额不能为负,且只能存百元钞
while(save<=0||save%100!=0) {
printf("存款金额不符合规定,请重新输入存款金额:");
scanf("%ld",&save);
}
deposit=deposit+save;//账户余额=原来的余额+存款金额
return save;
}
//修改密码
int changePwd() {
int change_pwd,change;
char ch;
printf("您确定要修改密码吗?(Y/y)");
scanf("%c",&ch);
ch=getchar();
if(ch=='y'||ch=='Y') {
judgePwd();
printf("请输入新的密码:");
scanf("%d",&change_pwd);
printf("请确认新的密码:") ;
scanf("%d",&change);
if(change_pwd!=change) {
printf("两次密码输入不一致,即将返回主页面...\n");
// menu();
return password;
} else {
password=change_pwd;
printf("密码修改成功......\n");
printf("请重新登录:\n");
judgePwd();
return change_pwd;
}
} else {
return password;
}
}
int main() {
srand((unsigned)time(NULL));//使每次生成的随机金额不同
getDeposit();//调用函数生成账户余额
menu();//调用函数,打印菜单
// int password=123456;//设置初始密码
judgePwd();//判断输入的密码是否正确
int ch,statu=0;
//程序主体:登录之后,只有等到用户自己选择退出时才退出系统, 否则就一直执行下去
while(1) {
printf("--------------------------------------------------------------------------------\n\n");
menu();
printf("请选择你的业务:\n");
scanf("%d",&ch);
//根据用户输入选择执行相应的操作
switch(ch) {
case 1:
Print();
break;
case 2:
printf("取款成功,金额为:%ld\n",drawDeposit());
break;
case 3:
printf("存款成功,金额为:%ld\n",saveDeposit());
break;
case 4:
password=changePwd();
break;
case 5:
statu=-1;
break;
default:
printf("输入有误,请重新输入......\n");
}
if(statu==-1) {
break;
}
}
printf("\n欢迎下次光临,再见\3\3\3\3\3...\n");
}
来源:https://blog.csdn.net/qq_43884946/article/details/121564384


猜你喜欢
- 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题。本篇主要从实例的角度分享下CORS
- 1 场景调用多个平级服务,按照服务优先级返回第一个有效数据。具体case:一个页面可能有很多的弹窗,弹窗之间又有优先级。每次只需要返回第一个
- 背景SpringBoot bean 加载顺序如何查看,想看加载了哪些bean, 这些bean的加载顺序是什么?实际加载顺序不受控制,但会有一
- 1. ObsoleteAttributeObsoleteAttribute 适用于除组件、模块、参数和返回值以外的所有程序元素。将元素标记为
- gRPCgRPC是由 google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多
- Unsupported major.minor version 51.0解决办法今天偶然间同事遇到一个问题,也加深了自己对eclipse中b
- 在Java编程过程中,我们常常会遇到比较基本类型或者对象之间的大小关系,下面我们来看看怎么去比较。源码如下:package object;c
- 前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。
- 之前从他人的博文,还有一些书籍中了解到 常量是放在常量池 中,细节的内容无从得知,总觉得面前的东西是一个几乎完全的黑盒,总是觉得不舒服,于是
- 照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影。它的设计思路其实也非常简单,用一个GridView控件当作“墙
- 一、单线程扫描1.代码using System;using System.Windows.Forms;using System.Net;us
- 一、解码流程解码流程大致分为以下三个部分,以FFmpge源码下的ffmpeg\doc\examples\decode_audio.c为参考。
- 指定相关的测试代码首先,写一个用于测试的关于Main(String[] args)参数输入有关的代码类,如下:using System;pu
- 一、前言WPF没有内置IP地址输入控件,因此我们需要通过自己定义实现。我们先看一下IP地址输入控件有什么特性:输满三个数字焦点会往右移键盘←
- Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用sc
- Spring是一个非常流行的Java Web开发框架,它提供了强大的依赖注入、面向切面编程、声明式事务管理等功能,为开发者提供了高效、快速地
- 1、使用步骤1)构建请求网址A、确定端点:每个GIS服务都有一个端点。例如,ArcGIS Server上Demographics文件夹下名为
- jax-ws handler 的详解及简单实例aop技术一般用于某个对象的函数调用的日志,认证等。webservice是远程的函
- NavMesh(导航网格)是3D游戏世界中用于动态物体实现自动寻路的技术。NavMesh系统是人工智能的一种,它使用一个添加在游戏对象上或者
- #define只加一个参数 的解释<stdio.h> 里有:#ifndef __STDIO_H #define &n