MyBankgon功能
.帐户类 User 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyBank
{
/// <summary>
/// 帐户类
/// </summary>
public class User
{
#region 成员变量
/// <summary>
/// 帐户姓名
/// </summary>
private string _name; public string Name
{
get { return _name; }
set { _name = value; }
} /// <summary>
/// 密码
/// </summary>
private string _password; public string Password
{
get { return _password; }
set { _password = value; }
} /// <summary>
/// 身份证号
/// </summary>
private string _identityNum; public string IdentityNum
{
get { return _identityNum; }
set { _identityNum = value; }
} /// <summary>
/// 帐户余额
/// </summary>
private double _balance; public double Balance
{
get { return _balance; }
set { _balance = value; }
} /// <summary>
/// 帐号
/// </summary>
private string _account; public string Account
{
get { return _account; }
set { _account = value; }
}
#endregion #region 取款
/// <summary>
/// 取款操作
/// </summary>
/// <param name="money">要取的金额</param>
/// <returns>返回余额,输入有误返回-1</returns>
public double MinusMoney(double money)
{
if (money > )
{
if (money <= _balance)
{
_balance -= money;
return _balance;
}
else
{
return -;
} }
else
{
return -;
}
}
#endregion #region 存款
/// <summary>
/// 存款
/// </summary>
/// <param name="money">存款金额</param>
public double SaveMoney(double money)
{
if (money > )
{ _balance += money;
return _balance;
}
else
{
return -;
}
}
#endregion }
}
复制代码
.银行类 Bank 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyBank
{
public class Bank
{
#region 成员变量的定义
User user = new User(); //实例化User对象并赋值
User[] _userGroup = new User[];
const string MESSAGE = "操作成功!";
#endregion #region 初始化三个帐户
/// <summary>
/// 初始化三个帐户
/// </summary>
public void Initial()
{
_userGroup[] = new User();
_userGroup[].Account = "";
_userGroup[].Name = "王丽丽";
_userGroup[].Password = "";
_userGroup[].IdentityNum = "";
_userGroup[].Balance = 1000.1111; _userGroup[] = new User();
_userGroup[].Account = "";
_userGroup[].Name = "张颖颖";
_userGroup[].Password = "";
_userGroup[].IdentityNum = "";
_userGroup[].Balance = ; _userGroup[] = new User();
_userGroup[].Account = "";
_userGroup[].Name = "刘华";
_userGroup[].Password = "";
_userGroup[].IdentityNum = "";
_userGroup[].Balance = ;
}
#endregion #region 显示所有帐户信息
/// <summary>
/// 显示所有帐户的帐号、姓名、密码、身份证号、帐户余额
/// </summary>
public void ShowAllUser()
{
foreach (User userItem in _userGroup)
{
Console.WriteLine("帐户姓名:" + userItem.Name + " 帐号:" + userItem.Account + " 存款余额:" + userItem.Balance + " 密码:" + userItem.Password + " 身份证号:" + userItem.IdentityNum);
}
}
#endregion #region 显示菜单
/// <summary>
/// 显示菜单
/// </summary>
public void ShowCustomMenu()
{
string option = "";
do
{
Console.WriteLine();
Console.WriteLine("==================欢迎使用自动银行服务==================");
Console.WriteLine("1:开户 2:存款 3:取款 4:转帐 5:查询余额 6:修改密码 0:退出");
Console.WriteLine("========================================================");
option = Console.ReadLine();
switch (option)
{
case "":
CreateAccount();
continue;
case "":
Deposit();
continue;
case "":
WithDraw();
continue;
case "":
InputTransferData();
continue;
case "":
ShowBalance();
continue;
case "":
ModifyPwd();
continue;
case "":
break; //结束switch
default:
Console.WriteLine("输入无效!");
continue;
} break; //结束do-while循环
} while (true);
}
#endregion #region 开户
/// <summary>
/// 开户
/// </summary>
public void CreateAccount()
{
//接受输入的数据
Console.WriteLine("请输入帐户名");
user.Name = Console.ReadLine();
user.Account = "";
Console.WriteLine("请输入帐户密码");
user.Password = Console.ReadLine();
Console.WriteLine("请输入帐户身份证号");
user.IdentityNum = Console.ReadLine();
Console.WriteLine("请输入帐户存款金额");
user.Balance = double.Parse(Console.ReadLine()); Console.WriteLine("帐户:{0},帐户名:{1},存款金额:{2}创建成功!", user.Account, user.Name, user.Balance);
//Console.ReadLine();
}
#endregion #region 取款
/// <summary>
/// 取款
/// </summary>
public void WithDraw()
{
string account = ""; //帐号
string pwd; //密码 Console.WriteLine("请输入帐号:");
account = Console.ReadLine();
if (account.Length == )
{
Console.WriteLine("输入的帐号不正确!");
return;
}
// 新增:在3个帐户中查找指定的帐户
User user = CheckUserByAccount(account);
if (user == null)
{
Console.WriteLine("输入的帐号不正确!");
return;
} //接收帐户密码,并验证
Console.WriteLine("请输入帐户密码:");
pwd = Console.ReadLine(); if (user.Password != pwd)
{
Console.WriteLine("密码有误!");
return;
} Console.WriteLine("请输入取款金额");
double money = double.Parse(Console.ReadLine());
double result = user.MinusMoney(money);
if (result == -)
{
Console.WriteLine("取款失败");
}
else
{
Console.WriteLine("取款成功!当前余额:" + result);
}
}
#endregion #region 存款
/// <summary>
/// 存款
/// </summary>
public void Deposit()
{
string account = ""; //帐号
double money = ; //存款金额 Console.WriteLine("请输入帐号:");
account = Console.ReadLine();
Console.WriteLine("请输入存入金额:");
money = double.Parse(Console.ReadLine()); User user;
if ((user = CheckUserByAccount(account)) == null)
{
Console.WriteLine("您输入的帐号不存在!");
} if (user.SaveMoney(money) > )
{
Console.WriteLine(MESSAGE + "当前余额:" + user.Balance);
}
else
{
Console.WriteLine("存款失败!");
} }
#endregion #region 判断帐户是否存在
/// <summary>
/// 通过帐号判断帐户是否存在
/// </summary>
/// <param name="account">帐号</param>
/// <returns>存在返回user对象,不存在返回null</returns>
private User CheckUserByAccount(string account)
{
foreach (User user in _userGroup)
{
if (user.Account == account)
{
return user;
}
}
return null;
} /// <summary>
/// 根据帐号和密码判定帐户是否存在
/// </summary>
/// <param name="account">帐号</param>
/// <param name="pwd">密码</param>
/// <returns>User & null</returns>
private User CheckUser(string account,string pwd)
{
foreach (User user in _userGroup)
{
if (user.Account == account && user.Password ==pwd)
{
return user;
}
}
return null;
}
#endregion #region 转帐
/// <summary>
/// 转帐输入输出信息
/// </summary>
public void InputTransferData()
{
Console.WriteLine("请输入转出帐号:");
string fromAccount = Console.ReadLine();
Console.WriteLine("请输入转出帐户密码:");
string fromPwd = Console.ReadLine();
Console.WriteLine("请输入转入帐号:");
string toAccount = Console.ReadLine();
Console.WriteLine("请输入转帐金额:");
double money = double.Parse(Console.ReadLine());
double fbalance = , tbalance = ; // 执行转帐操作
int iRet = Transfer(fromAccount, fromPwd, toAccount, money, ref fbalance, ref tbalance);
if (iRet == )
{
Console.WriteLine("转帐成功,转出帐号{0}的余额为:{1},转入帐号{2}的余额为:{3}", fromAccount, fbalance, toAccount, tbalance);
}
else if (iRet == -)
{
Console.WriteLine("转出帐户的帐号或密码输入错误!");
}
else if (iRet == -)
{
Console.WriteLine("转入帐号不正确!");
}
else if (iRet == -)
{
Console.WriteLine("转帐操作失败!");
} } /// <summary>
/// 执行转帐操作
/// </summary>
/// <param name="fAccount">当前帐号</param>
/// <param name="fPwd">帐号密码</param>
/// <param name="tAccount">转帐帐号</param>
/// <param name="money">转帐金额</param>
/// <param name="fBalance">当前帐号余额</param>
/// <returns>-1:帐号或密码输入错误;1:转帐成功;0:转帐帐号不存在</returns>
private int Transfer(string fAccount, string fPwd, string tAccount, double money, ref double fBalance, ref double tBalance)
{
//检查转出帐号和密码
User userfrom = CheckUser(fAccount, fPwd);
if (userfrom == null) //转出帐户和密码不正确
{
return -;
}
//检查转入帐号
User userTo = CheckUserByAccount(tAccount);
if (userTo == null) //转入帐号不正确
{
return -;
} //取款
if (userfrom.MinusMoney(money) == -) //转帐操作失败
{
return -;
}
//取得余额
fBalance = userfrom.Balance; //存款
if (userTo.SaveMoney(money) == -) //转帐操作失败
{
return -;
} tBalance = userTo.Balance; return ; }
#endregion #region 显示帐户余额
/// <summary>
/// 显示帐户余额
/// </summary>
public void ShowBalance()
{
string accountName = ""; //当前帐号
string password = ""; //当前帐户密码
Console.WriteLine("请输入帐号");
accountName = Console.ReadLine();
Console.WriteLine("请输入密码");
password = Console.ReadLine();
User user = CheckUser(accountName, password);
if (user == null)
{
Console.WriteLine("当前帐号不存在");
}
else
{
Console.WriteLine("帐户的余额是:" + user.Balance.ToString ("0.00"));
}
}
#endregion #region 修改密码
public void ModifyPwd()
{
string accountName = ""; //当前帐号
string password = ""; //当前帐户密码
Console.WriteLine("请输入帐号");
accountName = Console.ReadLine();
Console.WriteLine("请输入原密码");
password = Console.ReadLine(); string newPwd1, newPwd2;
Console.WriteLine("请输入新密码");
newPwd1 = Console.ReadLine();
Console.WriteLine("请再次输入新密码");
newPwd2 = Console.ReadLine(); if(CheckPwd(accountName, password, newPwd1, newPwd2)==true)
Console.WriteLine("帐户密码修改成功!");
else
Console.WriteLine("帐户密码修改失败!"); } public bool CheckPwd(string accountName, string password, string newPwd1, string newPwd2)
{
User user = CheckUser(accountName, password);
if (user == null)
{
Console.WriteLine("当前帐号不存在");
return false;
} if (newPwd1 != newPwd2)
{
Console.WriteLine("两只输入的帐户密码不一致!");
return false;
}
else
{
user.Password = newPwd1;
return true;
}
}
#endregion
} }
复制代码 .最关键的也是最后的了,Program类, 关于系统运行 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyBank
{
class Program
{
static void Main(string[] args)
{
Bank myBank = new Bank(); //开户
//myBank.CreateAccount(); //初始化数据
myBank.Initial(); //显示所有帐户
myBank.ShowAllUser(); //显示菜单
myBank.ShowCustomMenu(); //取款
//myBank.WithDraw();
}
}
}
MyBankgon功能的更多相关文章
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- PHP搭建大文件切割分块上传功能
背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...
- SQL Server2014 SP2新增的数据库克隆功能
SQL Server2014 SP2新增的数据库克隆功能 创建测试库 --创建测试数据库 create database testtest use testtest go --创建表 )) --插入数 ...
- SQL Server 数据加密功能解析
SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
- Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...
- TinyWeb v1.0 正式完成第一个Release版本(功能基于 libuv 跨平台库)
使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中 ...
- Java 8五大主要功能为开发者提供了哪些便利?
两年前当Java 8发布后,立即受到了业界的欢迎,因为它大大提高了Java的性能.它独特的卖点是,顾及了编程语言的每一个方面,包括JVM(Java虚拟机)和编译器,并且改良了其它帮助系统. Java是 ...
- Vue + Webpack + Vue-loader 系列教程(1)功能介绍篇
原文地址:https://lvyongbo.gitbooks.io/vue-loader/content/ Vue-loader 是什么? vue-loader 是一个加载器,能把如下格式的 Vue ...
- .Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加
在asp或asp.net中为了方便网站的结构清晰,通常把具有类似功能的页面放到一个文件夹中,用户管理功能都放在Admin文件夹下,用户功能都放在Member文件夹下,在MVC中,通常使用区域(Area ...
随机推荐
- TypeScript 迭代器(iterator)和生成器(generator)
⒈迭代器(iterator) 1.可迭代性 当一个对象实现了Symbol.iterator属性时,我们认为它是可迭代的. 一些内置的类型如 Array,Map,Set,String,Int32Arra ...
- golang设置运行的核数
package main import ( "fmt" "runtime" ) //设置golang运行的核数 //1.8 版本以上的会自动设置 func ma ...
- MacBook使用HHKB键盘设置
问题: macbook上使用hhkb的时候,很纠结档位4要不要开,开启4号DIP开关后,虽然会使HHKB键盘上减少一个“◇(Win键)”键,但是会在键盘左侧多出一个“FN”键.多出来的左“FN”键,不 ...
- (六)Redis之数据结构之Set
一.常用方法 和List类型不同的是,Set集合中不允许出现重复的元素 添加/删除元素 获取集合中的元素 集合中的差集运算 集合中的交集运算 集合中的并集元算 扩展命令 1和2 添加/删除元素和获取集 ...
- MySQL INNER JOIN子句介绍
MySQL INNER JOIN子句介绍 MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录. INNER JOIN子句是SELECT语句的可 ...
- C#的@标志的使用情况—本篇blog采用Markdown编写
@(C# 参考--出自官方文档入口) 1.使 C# 关键字用作标识符. @ 字符可作为代码元素的前缀,编译器将把此代码元素解释为标识符而非 C# 关键字. 下面的示例使用 @ 字符定义其在 for 循 ...
- ASP.NET Core 入门(4)(IIS 部署前后端站点)
.NET Core发布部署的文章园内有很多了,大家可以自行百度,该篇主要想总结需要注意的地方,列举前后端(比如前段 Vue,后端 WebAPI)在同一台服务器上的主要两种方式. 两种方式: 1. 前后 ...
- mysql 添加省市编码表
省表格: --省级 Provincial create table Provincial(pid int,Provincial varchar(50),primary key (pid)) inser ...
- maven项目打包和编译跳过单元测试和javadoc
代码中可能由于单元测试.注释(方法中的参数)或者maven javadoc插件的问题导致无法打包,影响工作,为避免这两种情况可以在打包时输入命令: mvn clean install -Dmaven. ...
- nuxt中全局引入element-ui
介绍 对于一个前端小白来说,使用一套已有的框架作为基础,可以达到事半功倍的效果,在这里我们选择Element.Element,一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库( ...