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");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言编程银行ATM存取款系统实现源码

    目录 一.课程设计的目的 二.课程设计的题目 三.设计内容 银行ATM存取款系统 实现的效果 源码 业务流程 1.用户开户 2.登录流程 3.密码修改 这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借鉴. 一.课程设计的目的 掌握C语言程序设计的基础知识.基本理论.原理和实现技术. 二.课程设计的题目 银行ATM存取款系统 三.设计内容 (主要技

  • C语言实现银行管理系统(文件操作)

    本文实例为大家分享了C语言实现银行管理系统的具体代码,供大家参考,具体内容如下 银行管理系统主要有五个模块组成: 1.查询账户信息2.存钱3.取款4.转账5.退出系统 测试文件:(首先在cpp文件所在目录下添加这个文件,运行程序会自动添加文件,但是需要输入这些数据) 代码: #include<stdio.h>    /*I/O函数*/ #include<stdlib.h>  /*其它说明*/ #include<string.h>  /*字符串函数*/ #define m

  • C语言银行系统课程设计

    本文为大家分享了C语言银行系统课程设计,供大家参考,具体内容如下 main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> #define MaxNum 200 #define N_P 6 typedef struct { int AccountNumber[3]; char name[20];

  • C语言银行储蓄系统源码

    本文为大家分享了C语言银行储蓄系统源码,实现银行的各项功能,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> void openaccount();//开户 void save();//存款 void withdraw();//取款 void showAccount();//查询 void transferAccounts();

  • C语言实现银行管理系统

    本文实例为大家分享了C语言实现银行管理系统的具体代码,供大家参考,具体内容如下 /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:main.cpp * 作 者:赵志君 * 完成时间:2016年6月30日 * 版 本 号:v1.0 * * 问题描述:银行管理系统 */ #include<stdio.h> #include<string.h> int mingyan(); //用户名验证 int g

  • C语言实现模拟银行系统

    本文实例为大家分享了C语言实现银行系统的具体代码,供大家参考,具体内容如下 1.实现要求 生成一个1000-1000000之间的随机数来代表账户余额(要求每次生成的数不一样):实现登录功能:用户有三次输入密码的机会,输入正确的密码才能登录,如果输入错误超过了三次 之后密码还是错,则提示账户被冻结,退出程序.实现查询账户余额功能:查询账户余额并输出.实现取款功能:提示用户输入相应的金额,并取款.实现存款功能:提示用户输入存款金额,并存款.实现修改密码功能:提示用户输入新的密码,密码修改成功后,退出

  • Java利用多线程模拟银行系统存钱问题

    目录 多线程6(模拟银行系统存钱) 1.题目 2.解题思路 3.代码详解 多线程6(模拟银行系统存钱) 1.题目 模拟一个简单的银行系统,使用两个不同的线程向同一个账户存钱. 实现:使用synchronized关键字,将存钱的方法修改成同步的. 2.解题思路 创建一个类:SynchronizedBankFrame,继承JFrame类 写一个内部类Bank 定义一个account变量,来表示账户. deposit():一个存钱的方法 getAccount():显示账户余额的方法. 写一个内部类Tr

  • Java多线程模拟银行系统存钱问题详解

    目录 一.题目描述 二.解题思路 三.代码详解 多学一个知识点 一.题目描述 题目:模拟一个简单的银行系统,使用两个不同的线程向同一个账户存钱. 实现:使用特殊域变量volatile实现同步. 二.解题思路 创建一个类:SynchronizedBankFrame,继承JFrame类 写一个内部类Bank 定义一个account变量,来表示账户. deposit():一个存钱的方法 getAccount():显示账户余额的方法. 写一个内部类Transfer,实现Runnable接口 在run方法

  • Go语言单元测试模拟服务请求和接口返回

    目录 前言 httptest gock 安装 使用示例 总结 前言 这是Go单元测试从入门到放弃系列教程的第1篇,介绍了如何使用httptest和gock工具进行网络测试. 在上一篇<Go单元测试从入门到放弃—0.单元测试基础>中,我们介绍了Go语言编写单元测试的基础内容. 而实际工作中的业务场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是我们依赖别人提供的网络服务(调用别人提供的API接口)的场景,我们通常都不想在测试过程中真正的建立网络连接.本文就专门介绍如何在上

  • 使用Go语言简单模拟Python的生成器

    def demo_input_and_output(): input = yield 'what is the input?' yield 'input is: %s' % input gen = demo_input_and_output() print(gen.next()) print(gen.send(42)) 这段代码演示了 python generator 的功能.可以看到 yield 同时做了两个操作,一个是往外发数据 "waht is the input",同时做的操作

  • 易语言通过模拟的方式实现对微信的视频图片消息发送的代码

    微信后台视频图片消息发送的代码 此功能需要加载精易模块5.6 .版本 2 .支持库 spec .支持库 internet .程序集 程序集1 .子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码 _临时子程序 () 返回 (0) .子程序 _临时子程序 .局部变量 handle, 整数型, , "0" .局部变量 i, 整数型 ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中.

  • C语言实现模拟USB对8bit数据的NRZI编码输出

    USB的NRZI编码方式,将原数据进行处理,原数据为0时,编码成电平翻转,原数据为1时,编码成电平不翻转,USB要发送数据的时候,硬件把数据流转化成为NRZI编码,然后经过USB的差分线D+和D-将数据发送出去,接收方在接收数据的后做逆处理,要注意的是,在没有数据传输的时候,也就是空闲的时候,数据线是保持高电平的,这点一定要注意,很多书上就是一笔代过,根本不知道为什么! 在USB的头部有一个同步域,由7个0组成,当编码成NRZI的时候,就是一串0101010的方波了,而方波的频率就是发送的波特率

  • C语言 数据结构之数组模拟实现顺序表流程详解

    目录 线性表和顺序表 线性表 顺序表 静态顺序表 动态顺序表 代码已经放在Gitee上,需要可以小伙伴可以去看看 用C语言数组模拟实现顺序表 Gitee 线性表和顺序表 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列,这是我们广泛使用的数据结构. 线性表在逻辑上是线性结构,也就说是连续的一条直线.但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储. 常见的线性表:顺序表.链表.栈.队列.字符串- 顺序表 顺序表是用一段物理地址连

  • C语言详解数据结构与算法中枚举和模拟及排序

    目录 枚举 连号区间数 递增三元组 二分 双指针 前缀和 模拟 特别数的和 错误票据 排序 快速排序 归并排序 枚举 连号区间数 来源:第四届蓝桥杯省赛C++B组,第四届蓝桥杯省赛JAVAB组 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1∼N 的某个排列中有多少个连号区间呢? 这里所说的连号区间的定义是: 如果区间 [L,R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 R−L+1 的“连续”数列,则称这个区间连号区间. 当 N 很小的时候,小明可以

  • Java 动态模拟操作系统进程调度算法

    目录 实验目的 设备与环境 实验内容 实验结果及分析 部分代码展示  实验目的 通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程.调度算法的理解. 设备与环境 硬件设备:PC机一台 软件环境:安装Windows操作系统,并安装相关的程序开发环境,如C \C++\Java 等编程语言环境. 实验内容 实验采用了java语言编程模拟N个进程采用动态高优先权优先进程调度算法.该算法就是按照优先权的大小运行进程,如果一个时间片内未运行完,则将优先权数减3后再插入到链表

随机推荐