你见过我的银行吗?不如来看看吧。。。

本文介绍了一个简单的银行系统实现,包括账号密码验证、查询余额、取款、存款等功能。通过C++语言展示了基本的银行操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * Copyright (c) 2012, 烟台大学计算机学院 
 * All rights reserved. 
 * 作    者:张浩  
 * 完成日期:2012 年11月27日 
 * 版 本 号:v1.0 
 * 输入描述: 略
 * 问题描述: 创建浩哥银行
 * 程序输出:略
 * 问题分析: 略
 * 算法设计: 
 */
#include <iostream>
using namespace std;
char chioce;
void chaxun();
void qukuan();
void change();
void cunkuan();
void zuanzang();
void tuichu();
bool pass();
void work();
int mima=123456;
double yuE=100000;
int main()
{
	cout<<"      **********************"<<endl;
	cout<<"      *                    *"<<endl;
	cout<<"      *  欢迎来到浩哥银行  *"<<endl;
	cout<<"      *                    *"<<endl;
	cout<<"      **********************"<<endl;
	if(pass())
		work();
	else
		cout<<"对不起,您输入的密码有误。请从新输入:"<<endl;
	return 0;
}
bool pass()
{
	bool bpass=false;
	int ipass,num=1;
	cout<<"请查看周边环境是否安全"<<endl;
	do{
		cout<<"请输入您的账号密码:"<<endl;
		if(num>1)
			cout<<"您还有"<<4-num<<"次机会";
			cin>>ipass;
		num++;
		if(ipass==mima)
			bpass=true;
	}while(!bpass&&num<4);
	return bpass;

}
void work()
{
	do{
		cout<<"1.查询"<<endl<<endl;
		cout<<"2.取款"<<endl<<endl;
		cout<<"3.存款"<<endl<<endl;
		cout<<"4.转账"<<endl<<endl;
		cout<<"0.退出"<<endl;
		cout<<"请选择(0-4)";
		cin>>chioce;
		switch(chioce)
		{
		case'1':
			{chaxun();
			break;}
		case'2':
			{qukuan();
			break;}
		case'3':
			{
			    cunkuan();
			break;}
		case'4':
			{zuanzang();
			break;}
		case'0':
			{tuichu();
			break;}
		}
	}while(true);
}
	void chaxun(){
		cout<<"您的余额为:"<<yuE<<"元   "<<endl;
	}
	void qukuan()
	{
		double money;
		cout<<"请输入您的取款金额:"<<endl;
		cin>>money;
		if(money<yuE){
			yuE-=money;
            cout<<"取款后您的余额为:"<<yuE<<"元  "<<endl;
		}else{
			cout<<"您的余额不足,请查询!"<<endl;
        }
	}
	void zuanzang(){

		cout<<"对不起,本银行不支持这项业务!"<<endl;
    }

	void tuichu(){
	    cout <<endl;
		cout<<"谢谢您对本银行的支持!祝您愉快!";
		cout<<endl;
		exit(0);
	}
	void change(){
		int yumi ,n1 ,n2;
		cout<<"请输入您的原密码"<<endl;
		cin>>yumi;
		if(yumi==mima){
			cout<<"请输入您的新密码:"<<endl;
			cin>>n1;
			cout<<"请再次输入您的密码:"<<endl;
			cin>>n2;
            if(n1==n2){
                cout<<"密码修改成功!"<<endl;
            }else{
                cout<<"输入的两次密码不一样!";
            }
        }else{
            cout<<"您输入的密码不正确!";
        }
}


            void cunkuan(){
                double money2;
                cout<<"请输入存款金额:"<<endl;
                cin>>money2;
                yuE+=money2;
                cout<<"存款成功!您现在的余额为"<<yuE<<endl;
            }


运行结果:

心得体会:多看看别人做的,慢慢的自己就会做了。。。。

<think>嗯,用户之前已经问过FIFO的Standard模式和FWFT模式的区别,但这次他说还没看懂他们的区别。看来之前的解释虽然详细,但可能有点复杂,用户需要更简单易懂的解释。我需要回想一下之前的回答,找出哪里可能让用户感到困惑。 之前的回答结构很系统,分点对比了工作机制、时序、结构、应用场景等,可能信息量太大,用户难以抓住重点。用户现在需要更直观的例子或类比来理解两者的区别。可能用户对时序波形部分不太理解,或者对两种模式的工作流程没有形成清晰的图像。 我应该简化解释,使用日常生活中的类比,比如排队取餐的例子。比如Standard模式就像在餐厅点餐后需要主动告诉服务员取餐,而FWFT则是餐好了自动放到取餐台,直接拿走就行。这样的类比可能更容易让用户理解两者的差异。 另外,用户可能对控制信号(如rd_en)的作用和时序不太清楚,需要更明确地说明在两种模式下rd_en的不同作用。比如在Standard中,rd_en用于触发数据输出,而在FWFT中,rd_en用于确认当前数据已经处理,并准备下一个数据。 还要注意检查之前的回答是否有术语使用过多,或者没有充分解释的地方。比如“输出寄存器隔离存储阵列与外部接口”这样的技术术语,可能需要用更通俗的语言解释,比如“Standard FIFO在数据输出前有一个寄存器的步骤,所以需要额外的时间”。 最后,可能需要用更简洁的总结表格,突出重点差异,帮助用户快速对比。同时,给出实际应用场景的例子,让用户知道在什么情况下选择哪种模式更合适。</think>好的!我用更简单直白的方式重新解释二者的区别,配合生活场景类比帮助你理解: --- ### **一句话总结区别** - **Standard FIFO**:像自动售货机——**必须按键(`rd_en`)才会吐饮料(数据)** - **FWFT FIFO**:像流水线上的传送带——**饮料(数据)自动滑到出口,你直接拿就行(无需按键)** --- ### **具体行为对比(以取快递为例)** #### **场景设定**: - 快递柜有3个格子(FIFO深度=3) - 你每次取快递需要按按钮(`rd_en`) - 快递员正在持续放包裹(数据写入) --- #### **1. Standard FIFO(标准模式)** - **步骤**: 1. 快递员放入包裹A → 此时快递柜显示「有包裹」(`empty=0`) 2. **你按按钮(`rd_en=1`)** → 快递柜**下一秒钟**才吐出包裹A 3. 此时快递柜显示「还有包裹」(假设还有包裹B) 4. **你再按按钮** → 下一秒钟吐出包裹B - **特点**: - **必须按按钮才能拿到包裹** - **拿到的总是上一秒按按钮时对应的包裹** --- #### **2. FWFT FIFO(首字穿透模式)** - **步骤**: 1. 快递员放入包裹A → **包裹A立即出现在出口**(`empty=0`且数据直接有效) 2. 你看到包裹A → **按按钮(`rd_en=1`)确认取走** 3. **同一秒钟**,包裹B自动滑到出口(如果有) 4. 不按按钮时,出口保持当前包裹 - **特点**: - **包裹自动推到出口,不用按按钮就能看到** - **按按钮只是告诉系统:“我拿走了,快把下一个给我”** --- ### **核心差异表格** | **场景** | Standard FIFO | FWFT FIFO | |------------------------|--------------------------------|-------------------------------| | **数据何时出现** | 按按钮后**下一个时钟周期**出现 | **立刻出现**,无需等待 | | **`rd_en`的作用** | 触发数据输出 | 确认已取走数据,请求下一个 | | **空标志(empty)含义** | 仅表示内部有数据,但出口无更新 | 直接表示出口数据是否有效 | | **延迟** | 至少1个时钟周期延迟 | 零延迟(数据在出口等待) | --- ### **生活场景类比** #### **Standard FIFO**:行叫号机 - 必须等叫到你的号(`rd_en`生效),才能去柜台(数据出现在输出端) - 叫号后需要走到柜台(延迟1个周期) #### **FWFT FIFO**:回转寿司传送带 - 寿司(数据)自动传到你面前(直接出现在输出端) - 你拿盘子(`rd_en`)后,后面的寿司**立即补位**(无延迟) --- ### **实际代码表现差异** #### 假设写入数据A、B、C: - **Standard FIFO输出时序**: ```verilog 时钟周期 | 1 2 3 4 操作 | 写A 写B rd_en=1 rd_en=0 输出数据 | X X A B ``` *第3周期按按钮,第4周期才能拿到B* - **FWFT FIFO输出时序**: ```verilog 时钟周期 | 1 2 3 4 操作 | 写A 写B rd_en=1 rd_en=0 输出数据 | A B B C(若存在) ``` *第1周期A自动出现,第3周期按按钮后,B已在输出端* --- ### **应该选哪个?** - **用Standard**:如果你需要严格对齐操作(比如每步操作必须等时钟同步) - **用FWFT**:如果你要实时处理数据(比如摄像头连续帧处理,不能等延迟) 下次看到FIFO配置选项时,记住这个口诀: **“标准模式要按键,穿透模式直接见”**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值