最近新学习了一个bank系统来和大家分享一下,新人求罩!

破索式之_链子枪_

废话不多说了直接本主题

如果我们要写出bank系统,就要先考虑这个问题:总共需要几个类?

既然是银行系统,那么必不可少的就是银行了,               这里我们就需要一个1.银行类

我们都知道去银行办理业务都是要有一张属于你自己的卡    所以这里就需要一个.卡的类

有了这些类,我们在main方法里进行调用这些就ok了,接下来我就带大家一起来实现一个bank!

首先我们先来个卡的类,因为通篇下来都是要从这里调用他们的初始赋值的;

 class Card
{
private string cardNo;//卡号
private string cardOwner;//持卡人
private string cardPwd;//密码
private double balance;//余额 public double Balance
{
get { return balance; }
set { balance = value; }
}
public string CardPwd
{
get { return cardPwd; }
set { cardPwd = value; }
} public string CardOwner
{
get { return cardOwner; }
set { cardOwner = value; }
} public string CardNo
{
get { return cardNo; }
set { cardNo = value; }
} }

ok!  大家看上去是不是感觉很简单呢? 其实接下来更加的简单哦~

接下来就到了我们的bank模块,大家都知道bank一般都是有好多功能的对吧?

那么这些东东到底是怎么实现的呢?  就让我们一起来走进bank的真相吧!

那么 大家所熟知的bank功能都有什么呢?大致就是下面这些喽!

1.开户  2.存款 3.取款  4.查询余额 5.转账  6.修改密码  7.退出  8.输出所有账户的持卡人以及余额

对吧,    那么我们也就按照步骤来一步步的实现bank中的每一项功能吧>>>>>>>>>>

//开户模块

 Console.WriteLine("欢迎进入开户模块");
Console.WriteLine("请输入卡号");
string cardNo = Console.ReadLine();
Console.WriteLine("请输入密码");
string cardPwd = Console.ReadLine();
Console.WriteLine("请输入用户名");
string cardOwner = Console.ReadLine();
Console.WriteLine("请输入开户后要存储的金额");
double balance = double.Parse(Console.ReadLine());
//将bank里的值重新赋给Card中
Card card = new Card();
card.CardNo = cardNo;
card.CardPwd = cardPwd;
card.CardOwner = cardOwner;
card.Balance = balance; //将card对象赋值给数组第一个为null的项目
for (int i = ; i < cards.Length; i++)
{
if (cards[i]==null)
{
cards[i] = card;
Console.WriteLine("开户成功!");
break;
}
}

 //存款模块

 Console.WriteLine("请输入您的账号");
string cardno = Console.ReadLine();
for (int i = ; i < cards.Length; i++)
{
if (cards[i] != null && cards[i].CardNo == cardno)
{
flag = true;
Console.WriteLine("请输入密码");
string pwd = Console.ReadLine();
if (cards[i].CardPwd == pwd)
{
Console.WriteLine("恭喜您登陆成功!请输入您要存款的金额:");
double GiveMoney = double.Parse(Console.ReadLine());
cards[i].Balance = cards[i].Balance + GiveMoney;
Console.WriteLine("恭喜您存款成功,您的当前余额为:{0}", cards[i].Balance);
break;
}
else
{
Console.WriteLine("您输入的密码有误!");
break;
}
}
}

 //取款模块

 Console.WriteLine("请输入您的账号");
string cardno = Console.ReadLine();
for (int i = ; i < cards.Length; i++)
{
if (cards[i] != null && cards[i].CardNo == cardno)
{
flag1 = true;
Console.WriteLine("请输入密码");
string pwd = Console.ReadLine();
if (cards[i].CardPwd == pwd)
{
Console.WriteLine("恭喜您登陆成功!请输入您要取款的金额:");
double TakeMoney = double.Parse(Console.ReadLine());
cards[i].Balance = cards[i].Balance - TakeMoney;
Console.WriteLine("恭喜您存款成功,您的当前余额为:{0}", cards[i].Balance);
break;
}
else
{
Console.WriteLine("您输入的密码有误!");
break;
}
}
}

//转账模块

注意!注意!

上面的对于大家来说基本上就是过家家~    那么接下来我要讲的就是本文的真正的藏金殿了!

对于转账相信对于我这样的初学者也是被搞得头晕脑胀的吧?

 

 Console.WriteLine("请输入您的账号");
string cardno = Console.ReadLine();
for (int i = ; i < cards.Length; i++)
{
if (cards[i] != null && cards[i].CardNo == cardno)
{
flag2 = true;
Console.WriteLine("请输入密码");
string pwd = Console.ReadLine();
if (cards[i].CardPwd == pwd && cards[i].Balance!=)
{
if (cards[i].Balance!=)
{
Console.WriteLine("恭喜您登陆成功!请输入您要转账的对象账户:");
string Target = Console.ReadLine();
for (int j = ; j < cards.Length; j++)
{
if (cards[j].CardNo.Equals( Target) || cards[j].CardNo!=null )
{
Console.WriteLine("请输入您的操作金额:");
double Transform = double.Parse(Console.ReadLine());
if (Transform < cards[i].Balance && Transform != )
{
cards[i].Balance -= Transform;
cards[j].Balance += Transform;
Console.WriteLine("恭喜您转账成功!您的当前余额为:{0}", cards[i].Balance);
break;
}
else
{
Console.WriteLine("请输入正确的操作金额:");
}
}
break;
}
break;
}
else
{
Console.WriteLine("您当前的余额不足!不能进行转账!");
}
}
else
{
Console.WriteLine("您输入的密码有误!");
break;
}
}
}
return flag2;
} //查询余额
public bool SelectMoney()
{
bool flag3 = false;
Console.WriteLine("===================");
Console.WriteLine("这里是查询余额模块");
Console.WriteLine("==================="); Console.WriteLine("请输入您的账号");
string cardno = Console.ReadLine();
for (int i = ; i < cards.Length; i++)
{
if (cards[i] != null && cards[i].CardNo == cardno)
{
flag3 = true;
Console.WriteLine("请输入密码");
string pwd = Console.ReadLine();
if (cards[i].CardPwd == pwd)
{
Console.WriteLine("恭喜您登陆成功!您的当前余额为:{0}:",cards[i].Balance);
Welcome();
break;
}
else
{
Console.WriteLine("您输入的密码有误!");
break;
}
}
}

怎么样?   看到这么调理清晰的把转账给大家呈现出来,是不是有点小惊讶?  

//修改密码

 Console.WriteLine("请输入您的账号");
string cardno = Console.ReadLine();
for (int i = ; i < cards.Length; i++)
{
if (cards[i] != null && cards[i].CardNo == cardno)
{
flag4= true;
Console.WriteLine("请输入你的密码");
string pwd = Console.ReadLine();
if (cards[i].CardPwd == pwd)
{
Console.WriteLine("请输入您的新密码:");
string pwd3=Console.ReadLine();
Console.WriteLine("请再次输入您的新密码:");
string pwd2=Console.ReadLine();
if (pwd2==pwd3)
{
cards[i].CardPwd = pwd3;
}
Console.WriteLine("恭喜您密码修改成功!您的新密码是{0}",cards[i].CardPwd);
Welcome();
break;
}
else
{
Console.WriteLine("您输入的密码有误!");
break;
}
}
}

//退卡   略....

其实在写这样的项目时,小编总结出来个方法,在这里分享给大家:就是每次拿到一个项目时,不要感觉头大,首先总体的把内容过一下,

梳理出思路,这样在接下来的编程中就会感觉涛涛不绝~~!

感谢大家的耐心观看!关注我,给你最好的呈现~

fresh_bank、、的更多相关文章

  1. 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]

    [本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...

  2. Java程序,基本数据类型、、数据类型转换、变量和常量、常用运算符

    一.基本数据类型 整数类型:byte.short. int(常用).long(较常用)     定义某个变量          int  a=10: 浮点类型(小数):float.double(常用) ...

  3. C#中 ??、 ?、 ?: 、?.、?[ ]

    1. 可空类型修饰符(?)引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:string str=null; 是正确的,int i=null; 编译器就会报错. 为了使值类型 ...

  4. shell中各种括号的作用()、(())、[]、[[]]、{}

    一.小括号,圆括号() 1.单小括号 ()    ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有 ...

  5. angularjs 指令—— 绑定策略(@、=、&)

    angularjs 指令—— 绑定策略(@.=.&) 引入主题背景:angular 的指令配置中的template可以直接使用硬编码写相应的代码,不过也可以根据变量,进行动态更新.那么需要用到 ...

  6. 转<%%>、<%=%>、<%$%>、<%@%>的区别

    1. 未定义的命名空间前缀“xsd” 上周在项目开发中遇到这样的一个问题,在一个页面用到了自定义的Picker控件,在IE6.7.8.9以及IE10兼容模式下都没有任何问题,但是一换到IE10时已选择 ...

  7. 在Java中>、>>、>>>三者的区别

    Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力 ...

  8. &&、||、?:、,四个运算符的求值顺序

    C语言中只有四个运算符(&&.||.?:.,)存在规定的求值顺序. 运算符&&和运算符||首先对左侧操作数求值,只在需要时才对右侧操作数求值. 运算符?:有三个操作数: ...

  9. fg、bg、jobs、&、ctrl + z

    原文地址:fg.bg.jobs.&.ctrl + z 作者:china-yuan http://blog.chinaunix.net/uid-22433093-id-1774026.html ...

  10. 转:C的|、||、&、&&、异或、~、!运算

    转自:C的|.||.&.&&.异或.~.!运算 位运算     位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位 ...

随机推荐

  1. java 反射运用

    一,获取私有的属性,方法,构造器(俗名:暴力反射) 现有一个类,属性,方法,构造器均为私有的,如何创建实例对象,更该属性值,调用方法? public class Student { private S ...

  2. ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 Scores

    #1236 : Scores 时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 Kyle is a student of Programming Monkey Element ...

  3. 【BZOJ4514】数字配对(费用流)

    题意: 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci× ...

  4. 另一套备用的代码,通过service调用和登陆用户交互

    结合这两个东东,应该差不多可以搞定我需要的事情啦. 因为更改不了service代码,所以希望从service调用的代码里,争脱出来,和本地登陆用户进行交互启动. #include <window ...

  5. SIGSEGV 和 SIGBUS & gdb看汇编

    参考这篇文章: http://blog.chinaunix.net/uid-24599332-id-2122898.html SIGBUS和SIGSEGV也许是我们在平时遇到的次数最多的两个内存错误信 ...

  6. 开源软件Review Board

    开源软件, Review Board 代码审查的. https://www.reviewboard.org/

  7. 数据结构——算法之(027)( 在O(1)时间内删除链表结点)

    [申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:Mr_chenping@163.com] 题目:在O(1)时间内删除链表结点.且不知道链表头 题目分析: 1.把要删除节点的下 ...

  8. Win7 无法安装Office source engine 足够的权限安装系统服务怎么办

    运行CMD,输入命令:sc delete ose 重试即可.

  9. 第16章 ASP.NET MVC 日志篇

    本章主要介绍MVC中内置的错误处理.日志以及用来提升性能的监控工具 一.错误处理 当该网站忙于处理HTTP请求时,很多内容都会出错.幸运的是,MVC让错误处理工作变得相对简单了很多,因为MVC应用是运 ...

  10. The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)

    The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题目链接 没去现场.做的网络同步赛.感觉还能够,搞了6题 A:这是签到题,对于A堆除掉.假设没剩余 ...