该迷你MyBank,存贮是用对象数组来存贮的,所以比较简单,容易理解,适合新手。。

一.创建chengyuan类,在其中声明所需的成员变量:

 public class chengyuan {

     //该类为定义成员变量
public String account;
public String name ;
public String password;
public String idCard;
public int money; }

二.创建fulei类,就是调用

 public class zhulei {
public static void main(String[] args) {
fulei fu=new fulei();
fu.ShowMenu(); }
}

三.创建zhulei类,在其中创建函数来实现具体的功能

 import java.awt.image.SampleModel;
import java.util.Scanner; public class fulei {
Scanner input=new Scanner(System.in);
// public void Init(){
// chen.account[0]="001";
// chen.name[0]="孙悟空";
// chen.password[0]= chengyuan users []=new chengyuan[10];//此处是声明对象数组 public void Init(){    //此类是先对数组中插入一些值
chengyuan u1=new chengyuan();
u1.account = "001";
u1.name = "sunwukong";
u1.password = "wukong";
u1.idCard = "123412341234123412";
u1.money = 10000;
users[0] = u1;
chengyuan u2 = new chengyuan();
u2.account = "002";
u2.name = "zhubajie";
u2.password = "bajie";
u2.idCard = "123412341234123413";
u2.money = 20000;
users[1] = u2;
chengyuan u3 = new chengyuan();
u3.account = "003";
u3.name = "shawujing";
u3.password = "wujing";
u3.idCard = "123412341234123414";
u3.money = 30000;
users[2] = u3;
} public void ShowMenu() {
// TODO Auto-generated method stub
Init(); //初始化该对象数组
while(true){
System.out.println("======================================");
System.out.println("===============MyBank=================");
System.out.println("=功能菜单如下:========================");
System.out.println("==1:开户 2:存款 3:取款 4:转账 5:查询余额==");
System.out.println("====6:修改密码 7:显示所有信息 0:退出=====");
System.out.println("================请选择================"); if(input.hasNextInt()==true){ //判断系统输入是否为int类型
int select=input.nextInt();
switch (select) {
case 1:
CreatUsers();
break;
case 2:
SaveMoney();
break;
case 3:
OutMoney();
break;
case 4:
MoveMoney();
break;
case 5:
FindMoney();
break;
case 6:
UpdatePwd();
break;
case 7:
ShowInfo();
break;
case 0:
System.out.println("系统退出,谢谢使用");
return;
default:
System.out.println("只能输入0-7的数字!!!");
break;
}
}else {
System.out.println("输入内容中含非法字符,请重新尝试!");
input.next(); //释放资源
} System.out.println(); //换行
System.out.println();
}
//-----------------
} /**
* 修改密码
*/
private void UpdatePwd() {
// TODO Auto-generated method stub
System.out.println("请输入账号:");
String zhang=input.next();
System.out.println("请输入密码:");
String pwd=input.next();
chengyuan u=GetUser(zhang);
if (u==null) {
System.out.println("库中无该账户");
return;
}
if (!u.password.equals(pwd)) {
System.out.println("密码错误,请重新尝试");
return;
}
System.out.println("登录成功,可以修改密码!");
System.out.println();
for (int i = 1; i <= 3; i++) { //三次循环
System.out.println("请输入新密码:");
String pwd_1=input.next();
System.out.println("请再次输入密码:");
String pwd_2=input.next();
if(PwdSame(pwd_1, pwd_2)){
u.password=pwd_1;
System.out.println("账号:"+zhang+";密码修改成功,新密码为"+u.password);
return;
}else {
if(i==2)
System.out.println("两次密码输入不正确,请重新输入!!你还要两次输入机会");
if(i==1)
System.out.println("两次密码输入不正确,请重新输入!!你还要一次输入机会");
}
}
} /**
* 查询余额
* 验证是否登录
*/
private void FindMoney() {
// TODO Auto-generated method stub
System.out.println("请输入账号:");
String zhang=input.next();
System.out.println("请输入密码:");
String pwd=input.next();
chengyuan u=GetUser(zhang);
if (u==null) {
System.out.println("库中无该账户");
return;
}
if (!u.password.equals(pwd)) {
System.out.println("密码错误,请重新尝试");
return;
}
System.out.println("具体信息如下");
System.out.println("账号:"+u.account+"\t用户名:"+u.name+"\t密码:"+u.password+"\t身份证号是:"+u.idCard+"\t账户余额:"+u.money);
} /**
* 转账;;;
* 判断两次账号是否存在!!!
*/ private void MoveMoney() {
// TODO Auto-generated method stub
System.out.println("请输入账号:");
String zhang=input.next();
System.out.println("请输入密码:");
String pwd=input.next();
chengyuan u=GetUser(zhang);
if (u==null) {
System.out.println("库中无该账户");
return;
}
if (!u.password.equals(pwd)) {
System.out.println("密码错误,请重新尝试");
return;
}
System.out.println("账户登录成功!");
System.out.println(); //换行
System.out.println("请输入要转入的账号");
String zhang_move=input.next();
chengyuan u_move=GetUser(zhang_move);
if (u_move==null) {
System.out.println("该账户不存在!!请确认后重新尝试!!!");
}
System.out.print("请输入转账的金额:");
int money=input.nextInt();
if (u.money<money) {
System.out.println("该账户余额不足!无法进行转账!!");
return;
}
u.money-=money;
u_move.money+=money;
System.out.println(zhang+"转账成功!!当前余额为"+u.money);
} /**
* 取款
* 接收输入值
* 注意点:字符串的比较
*/
private void OutMoney() {
// TODO Auto-generated method stub
System.out.println("请输入账号:");
String zhang=input.next();
System.out.println("请输入密码:");
String pwd=input.next();
chengyuan u=GetUser(zhang);
if (u==null) {
System.out.println("库中无该账户");
return;
}
if (!u.password.equals(pwd)) {
System.out.println("密码错误,请重新尝试");
return;
}
System.out.print("请输入取款金额:");
int money=input.nextInt();
if (u.money<money) {
System.out.println("账户的余额不足!!!");
return;
}
u.money-=money;
System.out.println(zhang+"账号取款成功,当前余额为:"+u.money); } /**
* 存款
* 验证
* 对值进行修改
*/
private void SaveMoney() {
//chengyuan u=new chengyuan();
// TODO Auto-generated method stub
System.out.println("请输入账号:");
String zhang=input.next();
System.out.println("请输入密码:");
String pwd=input.next();
chengyuan u=GetUser(zhang);
if (u==null) {
System.out.println("库中无该账户");
return;
}
if (!u.password.equals(pwd)) {
System.out.println("密码错误,请重新尝试");
return;
}
System.out.print("请输入存款金额:");
int money=input.nextInt();
u.money+=money;
System.out.println(zhang+"账号存款成功,当前余额为:"+u.money); } //写一个返回用户对象的函数
private chengyuan GetUser(String zhang) {
// TODO Auto-generated method stub
chengyuan u=new chengyuan();
// for (int i = 0; i < users.length; i++) {
// if (users[i].account.equals(zhang)) {
// u=users[i];
//
// }else if(i==users.length-1){
//
// break;
// }
//
// }
u=null;
for (chengyuan sui : users) {
if (sui !=null) {
if (sui.account.equals(zhang)) {
u=sui;
break;
}
}
}
return u;
} /**
* 显示所有信息
* 循环
*/
private void ShowInfo() {
// TODO Auto-generated method stub
for (int i = 0; i < this.users.length; i++) {
if(users[i]!=null){
System.out.println("账号:"+users[i].account+"\t用户名:"+users[i].name+"\t密码:"+users[i].password+"\t身份证号是:"+users[i].idCard+"\t账户余额:"+users[i].money);
}else {
break;
}
}
}
//---------------- /**
* 增加用户
* 接收输入语句
* 先在对象数组中找到空
* 在空中赋值
*/
private void CreatUsers() {
// TODO Auto-generated method stub
chengyuan u=new chengyuan();
System.out.print("请输入姓名:");
String name1=input.next();
System.out.print("请输入密码:");
String pwd_1=input.next();
System.out.print("请再次输入密码:");
String pwd_2=input.next();
System.out.print("请输入身份证号:");
String cardno=input.next();
System.out.print("请输入开户金额:");
int qian=input.nextInt();
String acc="1010"+(int)(Math.random()*10000);
if(PwdSame(pwd_1,pwd_2)){
System.out.println("\n开户成功,开户信息如下:");
System.out.println("账号:"+acc+"\t用户名:"+name1+"\t密码:"+pwd_1+"\t身份证号是:"+cardno+"\t账户余额:"+qian);
for (int i = 0; i < users.length; i++) { //找到空位,赋值
if(users[i]==null){
u.account=acc;
u.name=name1;
u.idCard=cardno;
u.money=qian;
u.password=pwd_1;
users[i]=u;
return;
}
}
}else {
System.out.println("两次密码输入不一致,请重新尝试!");
return;
}
} /**
* 判断两次密码是否一致的类,返回布尔型
*/
public boolean PwdSame(String pwd_1,String pwd_2 ){
return pwd_1.equals(pwd_2);
}
}

仅供参考,无需同意,随意转载。

迷你MyBank的更多相关文章

  1. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程

    从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...

  2. [LeetCode] Mini Parser 迷你解析器

    Given a nested list of integers represented as a string, implement a parser to deserialize it. Each ...

  3. 循序渐进做项目系列(4)迷你QQ篇(2)——视频聊天!(附源码)

    一·效果展示 源码派送:MiniQQ1.1 文字聊天的实现参见:循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天 二·服务端设计 对于实现视频聊天而言,服务端最核心的工作就是要构造多媒 ...

  4. 循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天

    <循序渐进做项目系列迷你QQ篇>将陆续介绍客户端聊天,文件传输,加好友,群聊,包括语音聊天,视频聊天,远程桌面等等需求如何实现,感兴趣的朋友可以持续关注.考虑到某些需求较为复杂,本系列采用 ...

  5. 迷你MVVM框架 avalonjs 入门教程

    新官网 请不要无视这里,这里都是链接,可以点的 OniUI组件库 学习教程 视频教程: 地址1 地址2 关于AvalonJs 开始的例子 扫描 视图模型 数据模型 绑定 作用域绑定(ms-contro ...

  6. 自用迷你版的Deferred

    啥也不说贴代码,项目用 /** * 迷你版的deferred */ function Deferred(func) { if (this instanceof Deferred === false) ...

  7. 迷你版jQuery——zepto核心源码分析

    前言 zepto号称迷你版jQuery,并且成为移动端dom操作库的首选 事实上zepto很多时候只是借用了jQuery的名气,保持了与其基本一致的API,其内部实现早已面目全非! 艾伦分析了jQue ...

  8. 利用epoll写一个"迷你"的网络事件库

    epoll是linux下高性能的IO复用技术,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.另一点原因就是获取 ...

  9. 不可错过的javascript迷你库

    最近看着下自己的github star,把我吓坏了,手贱党,收藏癖的我都收藏了300+个仓库了,是时候整理一下了. Unix主张kiss,小而美被实践是最好用的,本文将介绍笔者收集的一些非常赞的开源库 ...

随机推荐

  1. java线程安全问题原理性分析

    1.什么是线程安全问题? 从某个线程开始访问到访问结束的整个过程,如果有一个访问对象被其他线程修改,那么对于当前线程而言就发生了线程安全问题:如果在整个访问过程中,无一对象被其他线程修改,就是线程安全 ...

  2. 清除canvas画布内容--点擦除+线擦除

    清空canvas画布内容 1.重置宽或高 由于canvas每当高度或宽度被重设时,画布内容就会被清空,因此可以用以下方法清空:(此方法仅限需要清除全部内容的情况) var c=document.get ...

  3. Node 的fs模块

    这个fs.readdir路径要加上__dirname  找到绝对路径  否则会报错 { Error: ENOENT: no such file or directory, scandir '/User ...

  4. javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作

    树型结构是一类非常重要的非线性结构.直观地,树型结构是以分支关系定义的层次结构. 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构:在数据库系统中,可用树来组织信息:在分 ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步

    1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——问题集:如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题(转载)

    Geodatabase中中文标注编码乱码一直是一个比较头疼的问题之前也不知道问题出在哪里?在百度后发现园子里的zssai已经对这个问题原因做了一个详细说明.这里将原文引用如下: 说明:此文转载自htt ...

  7. 基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击

    攻击原理:     CFS攻击(Cross Frame Script(跨框架脚本)攻击)是利用浏览器允许框架(frame)跨站包含其它页面的漏洞,在主框架的代码 中加入scirpt,监视.盗取用户输入 ...

  8. March 14 2017 Week 11 Tuesday

    Thinking will not overcome fear but action will. 空想终日惶恐,行动方可无惧. As the deadline comes closer and clo ...

  9. Jmeter入门1 官网下载及安装

    1  Jmeter运行需要java环境.首先需要安装JDK. 图标是这样的:  2 下载apache-jmeter包. jmeter官网:http://jmeter.apache.org/ 3  解压 ...

  10. Android(java)学习笔记27:TextView属性大全

    TextView属性大全: android:autoLink       设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/ph ...