1001-----homework------version first
Posted 风林山火
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1001-----homework------version first相关的知识,希望对你有一定的参考价值。
1 package com.kai.li.atm; 2 3 /** 4 *客户端 5 *@author kaili 6 */ 7 public class Client{ 8 public static void main(String[] args){ 9 new MainView(); //启动主界面 10 } 11 }
1 package com.kai.li.atm; 2 3 import java.io.IOException; 4 import com.kai.li.myutils.MyUtils; 5 6 /** 7 *主界面 8 */ 9 public class MainView{ 10 11 private MainController mainController; //定义主界面控制变量 12 13 /*构造函数初始化主界面*/ 14 MainView(){ 15 mainController = new MainController(); //初始化主界面控制器 16 display(); //显示主界面视图 17 selectView(); //根据用户输入,启动相应视图界面 18 } 19 20 /*显示主界面*/ 21 public void display(){ 22 try{ 23 System.out.println(mainController.getFileContents()); 24 }catch(Exception e){ 25 e.printStackTrace(); 26 } 27 } 28 29 /*根据用户输入,启动相应视图界面*/ 30 public void selectView(){ 31 mainController.selectView(MyUtils.scanner()); 32 } 33 34 }
1 package com.kai.li.atm; 2 3 /** 4 *主界面控制器 5 *根据用户输入进入子界面 6 **/ 7 8 public class MainController{ 9 10 /*定义主界面数据模型变量*/ 11 private MainModel mainModel; 12 13 /*构造方法初始化主界面数据模型对象*/ 14 MainController(){ 15 this.mainModel = new MainModel(); 16 } 17 18 /*根据用户输入进入相应子界面*/ 19 public void selectView(String str){ 20 switch(str){ 21 case "0": 22 new CreatAccountView(); //启动注册账户界面视图 23 break; 24 case "1": 25 new SearchView(); //启动查询账户界面视图 26 break; 27 case "2": 28 new DepositView(); //启动存款界面视图 29 break; 30 case "3": 31 new WithdrawalView(); //启动提款界面视图 32 break; 33 case "4": 34 exit(); //退出应用程序 35 break; 36 default: 37 showMessageAndNew(); //默认提示信息并重新启动主界面视图 38 } 39 } 40 41 /*获取保存在文件中的数据内容*/ 42 public String getFileContents()throws Exception{ 43 return mainModel.getFileContents(); 44 } 45 46 /*退出系统的方法定义*/ 47 public void exit(){ 48 System.out.println("您已经安全退出ATM系统。谢谢使用!"); 49 System.exit(1); 50 } 51 /*信息提示并重新启动主界面视图*/ 52 public void showMessageAndNew(){ 53 System.out.println("\\n\\r你选择的菜单不存在!"); 54 System.out.println("请重新选择:"); 55 new MainView(); 56 } 57 }
1 package com.kai.li.atm; 2 3 import java.io.IOException; 4 import com.kai.li.myutils.MyUtils; 5 6 7 /** 8 *主界面数据模型类 9 */ 10 public class MainModel{ 11 12 /*获取保存在文件中的数据*/ 13 public String getFileContents()throws IOException{ 14 return MyUtils.readFileContents("d:/mainview.txt"); 15 } 16 17 }
1 package com.kai.li.atm; 2 3 import static com.kai.li.myutils.MyUtils.scanner; 4 import com.kai.li.unionpay.ICard; 5 import com.kai.li.abc.Card; 6 7 /** 8 *开户视图类 9 */ 10 public class CreatAccountView{ 11 12 /** 13 *变量定义 14 */ 15 private CreatAccountController creatAccountController; //定义开户控制变量 16 private Card card; //定义银行卡变量 17 18 /** 19 *构造方法完成界面功能 20 *信息提示与接收用户输入 21 */ 22 CreatAccountView(){ 23 24 this.creatAccountController = new CreatAccountController(); //初始化账户控制器 25 display(); //显示开户界面 26 27 showMessageName(); //提示输入姓名信息 28 String name = getName(); //获得用户输入姓名信息 29 30 showMessageId(); //提示输入身份证信息 31 String id = getId(); //获得用户输入的身份证信息 32 checkId(id); //根据用户输入身份信息的合法性完成相应功能 33 34 showMessagePassword(); //提示输入密码信息 35 String password = getPassword(); //获得用户输入的密码信息 36 checkPassword(password); //根据用户输入密码的合法性完成相应功能 37 38 card = new Card(name,id,password); //根据用户输入信息生成银行卡账户 39 40 saveInfo(); //保存银行卡信息到文件 41 42 showMessageSuccess(); //显示开户成功的提示信息 43 44 new MainView(); //返回主界面 45 46 } 47 48 /*从文件获得数据并显示在界面*/ 49 public void display(){ 50 try{ 51 //将从文件获得的数据显示在界面视图中 52 System.out.println(creatAccountController.getFileContents()); 53 }catch(Exception e){ 54 e.printStackTrace(); 55 } 56 } 57 58 /*保存用户信息到文件*/ 59 public void saveInfo(){ 60 creatAccountController.saveInfo(card); //通过Card类传递数据保存到硬盘中的文件 61 } 62 63 /*接收用户输入姓名,身份证,密码信息*/ 64 public String getName(){ //获取用户输入的姓名 65 return scanner(); 66 } 67 public String getId(){ //获取用户输入的身份证号 68 return scanner(); 69 } 70 public String getPassword(){ //获取用户输入的密码 71 return scanner(); 72 } 73 74 /*显示提示性信息*/ 75 public void showMessageName(){ 76 System.out.println("请输入你的姓名:"); //提示姓名输入 77 } 78 public void showMessageId(){ 79 System.out.println("请输入你的身份证号:"); //提示身份证号输入 80 } 81 public void showMessagePassword(){ 82 System.out.println("请输入你的密码:"); //提示密码输入 83 } 84 public void showMessageSuccess(){ 85 System.out.println("开户成功,谢谢使用!"); //开户成功的提示信息 86 } 87 88 /*身份证信息检查*/ 89 public void checkId(String id){ 90 while(!creatAccountController.checkId(id)){ 91 System.out.println("身份证格式无效,请重新输入:"); 92 id = getId(); 93 } 94 } 95 /*密码信息检查*/ 96 public void checkPassword(String password){ 97 while(!creatAccountController.checkPassword(password)){ 98 System.out.println("密码格式无效,请重新输入:"); 99 password = getPassword(); 100 } 101 } 102 103 }
1 package com.kai.li.atm; 2 3 import java.io.IOException; 4 import com.kai.li.abc.Card; 5 import java.util.regex.Matcher; 6 7 /** 8 *开户控制器 9 */ 10 public class CreatAccountController{ 11 12 /*定义开户模型*/ 13 private CreatAccountModel creatAccountModel; 14 15 /*构造方法*/ 16 CreatAccountController(){ 17 this.creatAccountModel = new CreatAccountModel(); 18 } 19 20 /*从文件获取数据*/ 21 public String getFileContents()throws IOException{ 22 return creatAccountModel.getFileContents(); 23 } 24 25 /*检查身份证信息合法性*/ 26 public boolean checkId(String id){ 27 if(id.length()==18&&id.matches("[0-9]+")) 28 return true; 29 else 30 return false; 31 } 32 33 /*检查密码信息合法性*/ 34 public boolean checkPassword(String password){ 35 if(password.length()==6&&password.matches("[0-9]+")) 36 return true; 37 else 38 return false; 39 } 40 41 /*保存用户开户信息*/ 42 public void saveInfo(Card card){ 43 if(card != null) 44 creatAccountModel.saveInfo(card); 45 } 46 }
1 package com.kai.li.atm; 2 3 import java.io.IOException; 4 import com.kai.li.myutils.MyUtils; 5 import com.kai.li.abc.Card; 6 7 /** 8 *开户数据模型类 9 */ 10 public class CreatAccountModel{ 11 12 /*获取文件中的数据*/ 13 public String getFileContents()throws IOException{ 14 return MyUtils.readFileContents("d:/creataccountview.txt"); 15 } 16 17 /*将用户输入的数据保存到硬盘中的文件中*/ 18 public void saveInfo(Card card){ 19 try{ 20 MyUtils.writeToFile("d:/card.txt",card); 21 }catch(Exception e){ 22 e.printStackTrace(); 23 24 } 25 } 26 27 }
1 package com.kai.li.atm; 2 3 import static com.kai.li.myutils.MyUtils.scanner; 4 5 /** 6 *查询视图界面类 7 */ 8 public class SearchView{ 9 10 /*定义查询控制器变量*/ 11 private SearchController searchController; 12 13 /*构造方法完成用户输入及视图展现*/ 14 public SearchView(){ 15 16 searchController = new SearchController(); //实例化查询控制器 17 18 showMessageIndex(); //显示提示信息 19 20 showMessageCardnumber(); //提示用户输入卡号 21 String cardnumber = getCardnumber(); //获取用户输入的卡号 22 checkCardnumber(cardnumber); //根据卡号输入的合法性执行相应功能 23 24 showMessagePassword(); //提示用户输入密码 25 String password = getPassword(); //获取用户输入的密码 26 checkPassword(password); //根据密码输入的合法性执行相应功能 27 } 28 29 /*界面信息提示的相关方法*/ 30 public void showMessageIndex(){ //提示本视图界面功能信息 31 System.out.println("****************"); 32 System.out.println("你选择的为查询功能"); 33 } 34 public void showMessageCardnumber(){ //提示用户输入卡号 35 System.out.println("请输入您要查询的卡号:"); 36 } 37 public void showMessagePassword(){ //提示用户输入密码 38 System.out.println("请输入您的密码:"); 39 } 40 public void showMessageEnd(){ //输出成功查询后的相关信息 41 System.out.println(); 42 System.out.println("你查询的账号信息为:"); 43 System.out.println("*****************************"); 44 System.out.println(searchController.searchModel.card); 45 } 46 47 /*数值合法性检查的相关方法*/ 48 public void checkCardnumber(String cardnumber){ //检测卡号是否存在 49 while(!searchController.checkCardnumber(cardnumber)){ 50 System.out.println("您查询的账户不存在!请重新输入:"); 51 cardnumber = getCardnumber(); 52 } 53 } 54 public void checkPassword(String password){ //检测密码是否正确 55 int i = 1; 56 while(!searchController.checkPassword(password) && i<3){ //循环判断密码是否正确 57 System.out.println("您的密码不正确!请重新输入:"); 58 i++; 59 password = getPassword(); 60 } 61 if(i == 3) 62 new MainView(); //如果3次输入错误,则返回主界面 63 showMessageEnd(); //查询成功后的提示信息 64 new MainView(); //启动主界面 65 } 66 67 /*获取用户输入的相关方法*/ 68 public String getCardnumber(){ //获取用户输入的卡号 69 return scanner(); 70 } 71 public String getPassword(){ //获取用户输入的密码 72 return scanner(); 73 } 74 75 }
1 package com.kai.li.atm; 2 3 4 /** 5 *查询账户的控制器类 6 */ 7 public class SearchController{ 8 9 /*定义查询功能的数据模型变量*/ 10 SearchModel searchModel; 11 12 /*构造方法实例化数据模型类并获取账户信息*/ 13 public SearchController(){ 14 15 this.searchModel = new SearchModel(); 16 17 setCard(); 18 } 19 20 /*检测卡号是否存在*/ 21 public boolean checkCardnumber(String cardnumber){ 22 if(!cardnumber.equals(searchModel.card.getCardnumber().trim())) 23 return false; 24 return true; 25 } 26 27 /*检测密码是否正确*/ 28 public boolean checkPassword(String password){ 29 if(!password.equals(searchModel.card.getPassword().trim())) 30 return false; 31 return true; 32 } 33 34 /*获取账户信息并保存在card对象中*/ 35 public void setCard(){ 36 try{ 37 searchModel.setCard(); 38 }catch(Exception e){