C语言银行管理系统

news2024/11/18 20:30:52

 程序示例精选

C语言银行管理系统

如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助!

前言

这篇博客针对<<C语言银行管理系统>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


文章目录

        一、所需工具软件

        二、使用步骤

                1. 引入库

                2. 创建结构体

                3. 创建元素操作函数

                4. 运行结果

         三在线协助


一、所需工具软件

          1. Visual Studio

          2. C/C++

二、使用步骤

1.引入库

代码如下(示例):

#include<stdlib.h>  
#include<iostream>
#include <string>
#include<fstream>
using namespace std;
class consumer;

2.创建结构体

代码如下(示例):

class YH //银行类
{
public:
    void set_account();//银行开户功能
    void del_account();//注销账户功能
    void transfer(int);//转账功能
    void enter_account();//进入用户个人信息功能
    void addmoney(int, float);//存款功能
    void exitYH();//退出系统
    void functionshow();
    void save();
    void load();//功能界面
protected:
    consumer* account[20];
    static int acnum;//账户数
};

class consumer :public YH//用户类,继承银行类的属性
{
public:
    friend class YH;
    consumer(int id, string Name, int Number, double IN, string Company, string Address, string PassWord, float m)
    {
        ID = id; name = Name; number = Number; in = IN; company = Company; address = Address; money = m; = PassWord;
    }
    consumer()
    {
        ID = 0; name = '0'; number = 0; in = 0; company = '0'; address = '0'; money = 0; = '0';
    }
    int get_id() { return ID; }
    void savemoney();//取钱
    string () { return ; }//取得密码
    void display();
    void fetchmoney();//取钱
    void ();
    void add_money(float);//计算余额
    void dec_money(float);//计算余额
    float get_money();//卡卡转帐
private:
    int ID;//开户帐号
    string ; //用户密码
    string name; //用户姓名
    float money;//开户金额
    int number; string company; string address; double in;
};

3.创建元素操作函数:

代码如下(示例):

void YH::save()
{
    ofstream outfile("bankdat.txt", ios::out);//以输出方式打开文件bankdat.dat接收从内存输出的数据
    int n = 0;
    outfile << acnum << " ";

    for (n = 0; n < acnum; n++)
    {
        outfile << account[n]->ID << " ";//把信息写入磁盘文件bankdat.dat
        outfile << account[n]->money << " ";
        outfile << account[n]->name << " ";
        outfile << account[n]-><< " ";
        outfile << account[n]->number << " ";
        outfile << account[n]->company << " ";
        outfile << account[n]->address << " ";
        outfile << account[n]->in << " ";
    }

    outfile.close();
}

/*读入用户信息功能实现*/

void YH::load()
{
    ifstream infile("bankdat.txt", ios::in);//以输入方式打开文件
    if (!infile)
    {
        cerr << "读取错误!" << endl;
        return;
    }
    int n = 0;
    int id, m;
    string nam, passw; int number; string company; string address; double in;
    infile >> acnum;
    for (n = 0; n < acnum; n++)//全部读入
    {
        infile >> id;//从磁盘文件bankdat.dat读入信息
        infile >> m;
        infile >> nam;
        infile >> passw;
        infile >> company;
        infile >> number;
        infile >> address;
        infile >> in;
        account[n]->;
        consumer* acc = new consumer(id, nam, number, in, company, address, passw, m); //每读入一个n开辟一段内存

        account[n] = acc; //赋值首地址

    }

    infile.close();

    cout << "系统正在正常运行,您可以办理以下业务:" << endl;

}

/*转账功能实现*/

void YH::transfer(int x)

{
    int id;

    cout << "请输入帐号:";

    cin >> id;

    int flag = 1;

    int i = 0;

    while ((i < acnum) && (flag)) //查找要转入的账号
    {
        if (id == account[i]->get_id()) flag = 0;
        else i++;
    }

    if (flag)
    {
        cout << "帐号不存在!" << endl << endl;
        return;
    }

    float b;
    cout << endl << "请输入你要转帐的金额:";
    cin >> b;
    while (b <= 0)
    {
        cout << "请输入正确的数字!" << endl;
        cout << "→";
        cin >> b;
    }

    if (account[x]->get_money() < b) //调用友元类consumer的公有成员函数
        cout << "对不起,金额不够!!" << endl;
    else { account[x]->dec_money(b); account[i]->add_money(b); }
    cout << "转账成功!!" << endl;
    return;
}

/*账户金额计算*/

void consumer::add_money(float x)
{
    money = x + money;
}
void consumer::dec_money(float x)
{
    money = money - x;
}
void YH::addmoney(int x, float y)
{
    account[x]->money = account[x]->money - y;
}
float consumer::get_money()
{
    return money;
}

int main()
{
    YH yh;
    yh.functionshow();
    return 0;
}

/*主界面显示*/

void YH::functionshow()
{
    int n;
    do
    {
        system("cls");
        load();
        cout << " ___________________________________________________________" << endl;
        cout << "|                                                           |" << endl;
        cout << "|                        1:开户                            |" << endl;
        cout << "|                                                           |" << endl;
        cout << "|                        2:账户登录                        |" << endl;
        cout << "|                                                           |" << endl;
        cout << "|                        3:账户注销                        |" << endl;
        cout << "|                                                           |" << endl;
        cout << "|                        4:退出系统                        |" << endl;
        cout << "|___________________________________________________________|" << endl;

        cout << endl << "请您输入你要进行的相应操作前的数字:" << endl;
        cout << "→";
        cin >> n;
        while (n < 1 || n>4)
        {
            cout << "您输入的数字有误!请重新输入!" << endl;
            cout << "→";
            cin >> n;
        }
        switch (n)
        {
        case 1:set_account();//开户
            break;
        case 2:enter_account();//登录
            break;
        case 3:del_account();//注销
            break;
        case 4:exitYH();//退出      
            break;
        }
        cin.get();//输入流类istream的成员函数
    } while (true);
}

void YH::enter_account()
{
    int id;
    cout << "请输入帐号:";
    cin >> id;
    int flag = 1;
    int i = 0;//__page_break__
    while ((i < acnum) && (flag)) //循环查找
    {
        if (id == account[i]->get_id()) flag = 0; else i++;
    }
    if (flag)
    {
        cout << "帐号不存在!" << endl;
        return;
    }
    cout << "请输入密码:";
    string passw;
    cin >> passw;
    if (passw != account[i]->()) return;//返回到登录界面
    account[i]->display(); cin.get(); cin.get();
    int n;
    do {
        system("cls");
        cout << "请选择下列操作:" << endl;
        cout << " ________________________________________________" << endl;
        cout << "|                                                |" << endl;
        cout << "|                1.查看账户信息                  |" << endl;
        cout << "|                                                |" << endl;
        cout << "|                2.取款                          |" << endl;
        cout << "|                                                |" << endl;
        cout << "|                3.存款                          |" << endl;
        cout << "|                                                |" << endl;
        cout << "|                4.修改密码                      |" << endl;
        cout << "|                                                |" << endl;
        cout << "|                5.转账                          |" << endl;
        cout << "|                                                |" << endl;
        cout << "|                6.返回                          |" << endl;
        cout << "|________________________________________________|" << endl;
        cout << "→";
        cin >> n;
        switch (n)
        {
        case 1: account[i]->display(); break;
        case 2: account[i]->fetchmoney(); save(); break;//从2-5功能,每执行一次调用一次save函数,重新写入数据
        case 3:account[i]->savemoney(); save(); break;
        case 4:account[i]->(); save(); break;
        case 5:transfer(i); save(); break;
        case 6:return;
        }cin.get(); cin.get();
    }

    while (1);

}

void YH::set_account()
{
    int id;
    string nam;
    string passw;
    float m;
    string company; string address; int number; double in;
    cout << "请输入开户账号:" << endl;
    cin >> id;
    cout << "请输入开户人姓名:" << endl;
    cin >> nam;
    cout << "请输入开户密码:" << endl;
    cin >> passw;
    cout << "请输入存入金额:" << endl;
    cin >> m;
    cout << "请输入开户人电话:" << endl;
    cin >> number;
    cout << "请输入开户人公司:" << endl;
    cin >> company;
    cout << "请输入开户人地址:" << endl;
    cin >> address;
    cout << "请输入开户人身份证号码:" << endl;
    cin >> in;
    while (m <= 0)
    {
        cout << "请输入正确的数字!" << endl;
        cin >> m;
    }

    consumer* acc = new consumer(id, nam, number, in, company, address, passw, m);
    account[acnum] = acc;
    cout << "您好,你已开户成功,请牢记您的账号和密码,注意账号安全!" << endl << endl;
    acnum++;
    save();
    cin.get();
    return;
}

void YH::del_account()
{
    int id;
    cout << endl << "请输入您要注销的帐户号:";
    cin >> id;
    int flag = 1;
    int i = 0;
    while ((i < acnum) && (flag)) //循环查找
    {
        if (id == account[i]->get_id())
        {
            flag = 0;
        }
        else
        {
            i++;
        }
    }
    if (flag)
    {
        cout << "对不起,你输入的该帐号不存在或有误,请重新输入!" << endl;
        return; //返回到登陆界面
    }
    for (int j = i; j < acnum; j++) //所有被删号后的数据重新存储
    {
        account[j] = account[j + 1];
    }
    account[acnum - 1] = NULL;
    acnum--; //账号总数自减一次
    cout << "您好,您的账号已成功注销!" << endl << endl;
    save();
    cin.get();
    return;
}

void consumer::()
{
    string pwd, repwd;
    cout << "请输入新密码:";
    cin >> pwd;
    cout << "请确认新密码:";
    cin >> repwd;
    if (pwd != repwd)
        cout << "对不起,您输入的两次密码不一致,按输入键返回上一层菜单!" << endl;
    else
        cout << "您好,您的密码已修改成功,请牢记并注意账号安全!" << endl; cin.get();
}

void consumer::fetchmoney()
{
    float m;
    char ch;
    do
    {
        cout << endl << "请输入您的取款金额:" << "¥>" << endl;
        cin >> m;
        while (m <= 0)
        {
            cout << "请您输入正确的金额!" << endl;
            cout << "→";
            cin >> m;
        }
        if (money < m)
        {
            cout << "对不起,您的余额不足!" << endl;
        }
        else
        {
            money = money - m;
            cout << endl << "操作成功,请拿好您的钱!" << endl;
        }
        cout << "是否要继续该项操作:(Y/N) "
            << endl;
        cout << "→";
        cin >> ch;
        while (ch != 'n' && ch != 'N' && ch != 'Y' && ch != 'y')//选择错误时判定
        {
            cout << "→";
            cin >> ch;
        }
    } while (ch == 'y' || ch == 'Y');
}

void consumer::savemoney()//存钱函数功能实现
{
    float c;
    char ch;
    do
    {
        cout << endl << "请输入要存入的金额:" << "¥>" << endl;
        cin >> c;
        while (c <= 0)
        {
            cout << "对不起您输入的金额错误,请重新输入!" << endl;
            cout << "→";
            cin >> c;
        }
        money = money + c;
        cout << "操作已成功!" << endl;
        cout << "是否要继续该项操作:(Y/N) " << endl;
        cout << "→";
        cin >> ch;
        while (ch != 'n' && ch != 'N' && ch != 'Y' && ch != 'y')
        {
            cout << "→";
            cin >> ch;
        }
    } while (ch == 'y' || ch == 'Y');
}

int YH::acnum = 0;
void consumer::display()//用户信息界面
{
    system("cls");
    cout << "_____________________________________________" << endl;
    cout << "|                                            |" << endl;
    cout << "|          用户姓名:" << name << endl;
    cout << "|                                            |" << endl;
    cout << "|          帐号:" << ID << endl;
    cout << "|                                            |" << endl;
    cout << "|          余额:" << money << endl;
    cout << "|                                            |" << endl;
    cout << "|          返回(Enter键)                   |" << endl;
    cout << "|                                            |" << endl;
    cout << "|____________________________________________|" << endl;
    cout << "→";
}

void YH::exitYH()//退出系统
{
    cout << endl << "感谢您对银行的支持,欢迎下次光临!" << endl;
    exit(0);
}

4.运行结果如下: 

 

三、在线协助: 

如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指针进阶版☞(超easy~)

回顾初级指针&#xff1a;http://t.csdn.cn/5tCSr &#xff08;其中包含指针和指针数组&#xff09; 接下来的内容是进阶新知识点哟 (&#xff3e;&#xff35;&#xff3e;)ノ~&#xff39;&#xff2f;一.字符指针o(*&#xffe3;▽&#xffe3;*)ブ1.常量字符的指针。对于常…

STL-vector容器和string容器

目录 一、STL的基本概念 二、vector容器 1.遍历 2.vector存放自定义数据类型 3.容器嵌套容器 4.构造函数 5.容量和大小 6.插入和删除 7.容器互换 三、string容器 1.string和char的区别 2.string的构造函数 3.赋值操作 4.字符串拼接 5.查找和替换 6.比较 7.字符串的存取和单个字…

Linux应用编程---5.多线程的创建以及线程间数据共享

Linux应用编程—5.多线程的创建以及线程间数据共享 5.1 多线程的创建 ​ 创建多线程&#xff0c;则多次调用pthread_create()函数。创建两个线程&#xff0c;线程1每隔一秒打印字符串&#xff1a;Hello world&#xff01;&#xff0c;线程2每隔一秒打印字符串&#xff1a;Goo…

【目标检测】Casecade R-CNN论文讲解(超详细版本)

目录&#xff1a;Casecade R-CNN论文讲解一、背景二、简单回顾R-CNN结构2.1 Training阶段2.2 Inference阶段三、论文摘要四、介绍五、关于mismatch问题六、关于单纯增大训练时IoU阈值问题七、相关工作7.1 two-stage7.2 one-stage7.3 multi-stage八、Cascade R-CNN讲解九、总结论…

【NI Multisim 14.0原理图设计基础——元器件分类】

目录 序言 一、元器件分类 &#x1f349;1.电源库 &#x1f349;2.基本元器件库 &#x1f349;3.二极管库 &#x1f349; 4.晶体管库 &#x1f349;5.模拟元器件库 &#x1f349; 6.TTL库 &#x1f349;7.CMOS库 &#x1f349;8.其他数字元器件库 &#x1f349;9.混合…

白帽子VPS 选购指南

本文长期更新&#xff0c;用于记录价格便宜&#xff0c;可以支持个人代码审计测试/部署资产监控任务/hw临时使用等。因为国内云服务器的一些限制&#xff0c;所以文章推荐服务器均为国外服务器&#xff0c;且不需要进行实名认证 PS&#xff1a;不要进行未授权非法活动&#xf…

2、HDFS 入门

一、概述 ​ HDFS&#xff08;Hadoop Distributed File System&#xff09;是分布式文件存储系统&#xff0c;主要用来解决海量数据的存储问题。HDFS比较适合一次写入&#xff0c;多次读出的场景。 NameNode&#xff08;NN&#xff09; 管理HDFS的namespace维护副本策略管理Bl…

黑马学ElasticSearch(二)

目录&#xff1a; &#xff08;1&#xff09;初始ES-安装IK分词器 &#xff08;2&#xff09;IK分词器的拓展和停用词典 &#xff08;3&#xff09;操作索引库-mapping属性 &#xff08;4&#xff09;操作索引库-创建索引库 &#xff08;5&#xff09;操作索引库-查询-删除…

2023浙大MPA项目复试参考

今年浙大MPA项目复试是否会恢复线下面试呢&#xff1f;从形式上来说&#xff0c;常规批复试无论是采取钉钉线上还是现场&#xff0c;似乎都可以顺利完成这一项研究生录取前的必要环节。但在2021年浙大MBA和MPA两个项目顶着风险组织了一次现场面试&#xff0c;只不过是放在了西溪…

EEG-SEED数据集作者的---基线论文阅读和分析

《Investigating Critical Frequency Bands and Channels for EEG-based Emotion Recognition with Deep Neural Networks》 方法&#xff1a; A.预处理根据被试的反应&#xff0c;只选择诱发目标情绪的实验时期进行进一步分析。 将原始脑电图数据降采样至200Hz采样率。目视…

【C语言课堂】 函数精讲

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 上期我们详细讲了分支和循环语句&#xff0c;这次我们来讲解函数。说到函数&#xff0c;大家应该不陌生。C语言中的函数是什么样的呢&#xff1f;听我娓娓道来 ~ 目录 ❤️1.何为函数 &a…

目标检测:YOLO V1 思想总结

目标检测&#xff1a;YOLO V1 思想总结YOLO V1Introduction&#xff08;模型介绍&#xff09;Network Design&#xff08;网络设计&#xff09;Backbone&#xff08;骨干网络&#xff09;Grid Cell&#xff08;单元格&#xff09;Loss Function&#xff08;损失函数&#xff09…

信息系统项目管理师考点之进度与成本常见计算

信息系统项目管理师考点之进度与成本常见计算总时差和自由时差区别PERT技术进度管理常见问题解决方案挣值分析成本控制主要工作内容参考链接总时差和自由时差区别 总时差 指一项工作在不影响总工期的前提下所具有的机动时间 总时差 LS - ES LF - EF 自由时差 指一项工作在不…

【STL标准库 范型编程】学习笔记(1):C++学习网站、STL六大部件介绍

目录 简介C++学习网站STL六大部件学习来源结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国…

YUTU

FE: Cortex-R4 处理器 第一个基于 ARMv7-R 体系结构的深层嵌入式实时处理器 BE : Cortex-M3处理器 基于 ARMv7-M体系结构 The YuTu SoC is a Flash memory controller chip, which provides a PCIe Gen 3x4 host interface and 4 channels (up to 8 CEs per channel) Flash in…

【自学C++】C++变量赋值

C变量赋值 C变量赋值教程 变量 的赋值就是给已经定义的变量进行重新设置值的过程&#xff0c;C 中变量的赋值可以单独为单个变量赋值&#xff0c;也可以同时为多个变量赋值。 C变量赋值详解 语法 varname1 value1;参数 参数描述varname1需要赋值的变量。value1需要给变量…

【MySQL系列】Java的JDBC编程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、JCBD背景知识引入 二、安装MySQL数据库驱动包&#xff0c;并且导入到项目中 三、JDBC的使用 3.1 JDBC插入数据操作 3.2 JDBC修改数据操作…

哈希(C++)

C语言总结在这常见八大排序在这作者和朋友建立的社区&#xff1a;非科班转码社区-CSDN社区云&#x1f496;&#x1f49b;&#x1f499;期待hxd的支持哈&#x1f389;&#x1f389;&#x1f389;最后是打鸡血环节&#xff1a;想多了都是问题&#xff0c;做多了都是答案&#x1f…

计算机网络复习之运输层

文章目录ARQ协议停等式ARQ回退n帧的ARQ&#xff08;GBN&#xff09;选择性重传ARQ&#xff08;SR&#xff09;UDP协议TCP协议TCP协议的特点TCP报文段首部格式TCP连接管理TCP可靠传输TCP的流量控制TCP拥塞控制参考拥塞&#xff1a;若对网络中某一资源的需求超过了该资源所能提供…

Jenkins安装

Jenkins安装1、Jenkins简介2、Jenkins安装2.1 安装条件2.2 安装JDK2.2.1 检索可用包2.2.2 安装2.3 下载Jenkins的war包2.4 启动jenkins并测试3、安装maven1、Jenkins简介 Jenkins是一款开源 CI&CD 软件&#xff0c;用于自动化各种任务&#xff0c;包括构建、测试和部署软件…