java GUIはATMシステム(3.0版)を実現します。

17887 ワード

小さいプロジェクトを書いてGUIを理解してください。java GUIを使って銀行のATM ATMのATMを実現し、ログインインターフェース、ログイン成功インターフェース、各操作機能の実現インターフェースを実現します。
java GUIでATMシステムを実現する(3.0版)
設計の考え方
二つのカバンを設計します。
1、bankバッグ:
(1)、ATM類:ユーザーの各種操作を実現する;
(2)、Data類:userファイルからすべてのユーザ情報を取得し、探しているユーザに戻り、修正後のユーザ情報をuserファイルに書き込みます。
(3)、userファイルはすべてのユーザ情報を格納する。
2、atmJFrameバッグ:
(1)、MyJFrame類:自分で作ったインターフェースの親類。
(2)、LoginJFrame:ログイン画面;
(3)、Working JFrame:登録成功後に表示される機能インターフェース;
(4)、CentreJFrame:中間窓、貯金、引き出し、振替、パスワード画面を修正する親類。
(5)、QuMoneyJFrame:引き出し画面;
(6)、CunMoneyJFrame:貯蓄インターフェース;
(7)、GveMoneyJFrame:振替画面;
(8)、Change Password JFrame:パスワード画面を修正します。
ソース
bankバッグ

package bank;

//ATM 
public class ATM {
 //          
 private Data data = new Data();
 //ATM     
 private String userName;//       
 private String userPassword;//    
 private double userMoney;//       
 private String user;//    ATM        
 private String antherUser;//     

 //    
 public boolean login(String userNameString,String userPassword1){
 boolean b= false;
 String x = data.backUser(userNameString);
 //        
 if(!x.equals("null")){
  user = x;//        
  String[] str = user.split("\\*");//       
  userName = str[0];//   
  userPassword = str[1];//    
  userMoney = Double.parseDouble(str[2]);//    
  //    
  if(userPassword.equals(userPassword1))
  b = true;
 }
 return b;
 }
 //      
 public Double getMoney1(){
 return userMoney;
 }
 //  
 public boolean saveMoney(Double money1){
 boolean b = false;
 if(money1%100 == 0) { //       
  userMoney = userMoney + money1;//  
  b = true;
 }
 return b;
 }
 //  
 public boolean quMoney(Double money1){
 boolean b = false;
 if(money1%100 == 0 && money1 <= userMoney){
  userMoney = userMoney - money1;
  b = true;
 }
 return b;
 }
 //           
 public boolean anotherUser(String userName1){
 boolean b = false;
 String inUserName = userName1;
 String str = data.backUser(inUserName);
 //       
 if(!str.equals("null")) {
  antherUser = str;//           
  b = true;
 }
 return b;
 }
 //    
 public void giveMoney(Double money1){
 String[] str1 = antherUser.split("\\*");//  
 Double x = Double.parseDouble(str1[2]);//         
 x = x + money1;
 userMoney = userMoney - money1;
 antherUser = changeUser(str1[0], str1[1], x);//         
 data.saveData(antherUser,false);//       Data          
 }
 //      
 public void changePassword(String newPassword){
 userPassword = newPassword;
 }
 //           
 private String changeUser(String n,String w,Double d){
 String str = n + "*" + w + "*" + d;
 return str;
 }
 //      
 public void over(){
 user = changeUser(userName,userPassword,userMoney);
 data.saveData(user,true);
 }
}

package bank;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

//       ATM            
public class Data {
 //Map               
 Map<String,String> userData = new HashMap();
 //       
 private String user;

 //             
 public Data(){
 getUsers();
 }

 private void getUsers(){
 String str;
 String[] string;
 File file = new File("src\\bank\\user");
 FileReader fileReader = null;
 BufferedReader bufferedReader = null;
 try{
  fileReader = new FileReader(file);
  bufferedReader = new BufferedReader(fileReader);
  while((str = bufferedReader.readLine())!=null){
  string = str.split("\\*",2);
  userData.put(string[0],string[1]);
  }
 }catch(Exception e){
  e.printStackTrace();
  if((fileReader!=null)&&(bufferedReader!=null)){
  try {
   bufferedReader.close();
   fileReader.close();
  } catch (IOException e1) {
   e1.printStackTrace();
  }
  }
 }
 }

 //     ,             ,     null
 public String backUser(String userName){
 String str = "null";
 if(userData.containsKey(userName))
  str = userName + "*" + userData.get(userName);
 user = str;
 return user;
 }
 //          userData  
 public void saveData(String user,boolean aBoolean){
 String[] string = user.split("\\*",2);
 userData.remove(string[0]);
 userData.put(string[0],string[1]);
 if(aBoolean)//          
  changeUser();
 }

 //     , userData            
 private void changeUser(){
 String str,string="";
 Set<String> keys = userData.keySet();
 for(String key : keys){
  str = key + "*" + userData.get(key);
  string = string + str + "
"; } File file = new File("src\\bank\\user"); FileWriter out = null; try { out = new FileWriter(file); out.write(string); out.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

//user  
//        "src\\bank\\user"
  *234*7500.0
  *123*13100.0
  *123*1100.0
atmJFrameバッグ

package atmJFrame.myJFrame;

import bank.ATM;

import javax.swing.*;
import java.awt.*;

//          
public class MyJFrame extends JFrame {
 //         
 public static final Font FONT_SIZE_10 = new Font("  ",Font.PLAIN,18);
 public static final Font FONT_SIZE_20 = new Font("  ",Font.PLAIN,20);
 public static final Font FONT_SIZE_25 = new Font("  ",Font.PLAIN,25);
 //            ATM      ,     
 public static final ATM atm = new ATM();
 //    
 public MyJFrame(String title){
 super(title);
 //        
 setResizable(false);
 //      
 setSize(600,600);
 //      
 setLocationRelativeTo(null);
 }
 //    ,       
 public MyJFrame(){
 this("");
 }
 //           (         )
 protected void showMessageDialog(String str){
 JOptionPane.showMessageDialog(this,str);
 }
}

package atmJFrame.myJFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//      MyJFrame
public class LoginJFrame extends MyJFrame {
 public LoginJFrame(){
 super("    ATM ");
 //       
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 //    
 init();
 //     
 setVisible(true);
 }
 //     
 private void init(){
 //      ,       
 JPanel jp = new JPanel(null);
 //    
 JLabel jl1 = new JLabel("  :");
 JLabel jl2 = new JLabel("  :");
 //      
 jl1.setFont(FONT_SIZE_20);
 jl2.setFont(FONT_SIZE_20);
 //           
 jl1.setBounds(100,100,70,70);
 jl2.setBounds(100,250,70,70);
 //     
 JTextField jtf = new JTextField(20);
 //       
 JPasswordField jpf = new JPasswordField(20);
 //       
 jtf.setBounds(200,115,200,40);
 jpf.setBounds(200,265,200,40);
 //    
 JButton jb = new JButton("  ");
 //        
 jb.setFont(FONT_SIZE_20);
 //         
 jb.setBounds(250,400,100,50);
 //        
 jp.setBackground(Color.YELLOW);
 //         
 jb.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
  //          
  String userName = jtf.getText();
  String userPassword = new String(jpf.getPassword());
  //      
  boolean aBoolean = atm.login(userName,userPassword);
  if(aBoolean){
   //    
   dispose();//      
   //      
   new WorkingJFrame();
  }
  else
   showMessageDialog("       ");//        
  }
 });
 //    
 jp.add(jl1);
 jp.add(jtf);
 jp.add(jl2);
 jp.add(jpf);
 jp.add(jb);
 //      
 add(jp);
 }
 public static void main(String[] args) {
 new LoginJFrame();//       
 }
}

package atmJFrame.myJFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//    
public class WorkingJFrame extends MyJFrame {
 public WorkingJFrame(){
 super("    ");
 init();
 setVisible(true);
 }
 //       
 private void init(){
 //         
 JPanel jp1 = new JPanel();
 //    ,            
 JLabel jb = new JLabel("         :");
 jb.setFont(FONT_SIZE_25);//        
 jp1.add(jb);
 jp1.setBackground(Color.CYAN);
 //             (JFrame       )
 add(jp1, BorderLayout.NORTH);

 //         (   ,           ),       
 JPanel jp2 = new JPanel(null);
 //             ,          
 String[] str = {"1、    ","2、  ","3、  ","4、  ","5、    ","6、    "};
 //int                 ,    
 int[][] xy = new int[][]{{50,100,200,50},{350,100,200,50},{50,200,200,50},{350,200,200,50},{50,300,200,50},{350,300,200,50}};
 for(int i = 0;i < str.length;i ++){
  JButton jButton = new JButton(str[i]);//    
  jButton.setFont(FONT_SIZE_20);//        
  jButton.setBounds(xy[i][0],xy[i][1],xy[i][2],xy[i][3]);//         
  jButton.addActionListener(listener);//       
  jp2.add(jButton);//     
 }
 //  jp2    
 jp2.setBackground(Color.GRAY);
 //           (JFrame    )
 add(jp2);
 }
 //       
 private ActionListener listener = new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {
  String actionCommand = e.getActionCommand();//       
  //switch    ,            ,           
  switch(actionCommand){
  case "1、    ":
   getMoney();
   break;
  case "2、  ":
   quMoney();
   break;
  case "3、  ":
   cunMoney();
   break;
  case "4、  ":
   giveMoney();
   break;
  case "5、    ":
   changePassword();
   break;
  case "6、    ":
   over();
   break;
  }
 }
 };
 //      
 private void getMoney(){
 showMessageDialog("       :" + atm.getMoney1());//        
 }
 //    
 private void quMoney(){
 new QuMoneyJFrame();//      
 dispose();//     
 }
 //    
 private void cunMoney(){
 new CunMoneyJFrame();
 dispose();
 }
 //    
 private void giveMoney(){
 new GiveMoneyJFrame();
 dispose();
 }
 //      
 private void changePassword(){
 new ChangePasswordJFrame();
 dispose();
 }
 //      
 private void over(){
 atm.over();//        
 dispose();
 }
}

package atmJFrame.myJFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//    ,  、  、  、         
public class CentreJFrame extends MyJFrame {
 //     ,           
 protected JPanel jp = new JPanel(null);
 //      
 protected JLabel jl = new JLabel("     :");
 //       
 protected JTextField jtf = new JTextField(20);
 //  、    
 protected JButton jb1 = new JButton("  ");
 protected JButton jb2 = new JButton("  ");

 //         
 protected JLabel jLabel = new JLabel("       :");
 //          
 protected JTextField jTextField = new JTextField(20);

 //          
 protected JLabel jLabelCP = new JLabel("      (     ):");
 //           
 protected JTextField jTextFieldCP = new JTextField(20);

 //         100   
 private JLabel jle = new JLabel("(   :    100    )");

 public CentreJFrame(String str){
 super(str);
 //        
 if(str.equals("  "))
  init1();
 else if(str.equals("    "))
  init2();
 else
  init();
 one();//      
 }
 //         
 private void init(){
 //      ,    ,     
 jl.setFont(FONT_SIZE_25);
 jl.setBounds(100,100,200,100);
 //       
 jtf.setBounds(300,250,200,50);
 //                
 jp.add(jl);
 jp.add(jtf);
 setJLE();
 }
 //      
 private void init1(){
 init();
 //      
 jLabel.setFont(FONT_SIZE_25);
 jLabel.setBounds(100,10,200,40);
 //      
 jTextField.setBounds(300,80,200,50);
 //               
 jp.add(jLabel);
 jp.add(jTextField);
 }
 //        
 private void init2(){
 //       
 jLabelCP.setFont(FONT_SIZE_25);
 jLabelCP.setBounds(50,100,400,70);
 //        
 jTextFieldCP.setBounds(300,215,200,40);
 //                  
 jp.add(jLabelCP);
 jp.add(jTextFieldCP);
 }
 //       
 private void one(){
 //    
 jb1.setFont(FONT_SIZE_20);
 jb2.setFont(FONT_SIZE_20);
 jb1.setBounds(300,350,100,50);
 jb2.setBounds(450,350,100,50);
 jp.add(jb1);
 jp.add(jb2);
 jp.setBackground(Color.GREEN);
 jb1.addActionListener(listener);
 jb2.addActionListener(listener);
 //     
 add(jp);
 setVisible(true);
 }

 //    
 private void setJLE(){
 jle.setFont(FONT_SIZE_10);
 jle.setBounds(100,180,300,50);
 jp.add(jle);
 }

 //     
 private ActionListener listener = new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {//      
  String actionCommand = e.getActionCommand();//       
  switch(actionCommand){
  case "  ":
   change();
   break;
  case "  ":
   new WorkingJFrame();//      
   dispose();//     
   break;
  }
 }
 };
 //           ,            
 protected void change(){
 }

 //              
 protected boolean isNumber(String str){
 Pattern pattern = Pattern.compile("[0-9]*");
 Matcher isNum = pattern.matcher(str);
 if(!isNum.matches())
  return false;
 return true;
 }
}

package atmJFrame.myJFrame;

//    
public class QuMoneyJFrame extends CentreJFrame {
 public QuMoneyJFrame(){
 super("  ");
 }
 protected void change(){
 String s = jtf.getText();
 if(isNumber(s)){
  Double money = Double.parseDouble(s);
  boolean b = atm.quMoney(money);
  if(b){
  showMessageDialog("      
:" + atm.getMoney1()); } else showMessageDialog(" " ); } else showMessageDialog(" " ); jtf.setText(""); } }

package atmJFrame.myJFrame;

//    
public class CunMoneyJFrame extends CentreJFrame {
 public CunMoneyJFrame(){
 super("  ");
 }
 protected void change(){
 String s = jtf.getText();
 if(isNumber(s)){
  Double money = Double.parseDouble(s);
  boolean b = atm.saveMoney(money);
  if(b)
  showMessageDialog("       
:" + atm.getMoney1()); else showMessageDialog(" " ); } else showMessageDialog(" " ); jtf.setText(""); } }

package atmJFrame.myJFrame;

//    
public class GiveMoneyJFrame extends CentreJFrame {
 public GiveMoneyJFrame(){
 super("  ");
 }
 protected void change(){
 String s = jTextField.getText();
 boolean b = atm.anotherUser(s);
 if(b){
  //      
  String s1 = jtf.getText();
  if(isNumber(s1)){//       
  Double money = Double.parseDouble(s1);
  atm.giveMoney(money);
  showMessageDialog("    
:" + atm.getMoney1()); } else showMessageDialog(" " ); } else showMessageDialog(" " ); new WorkingJFrame();// dispose();// } }

package atmJFrame.myJFrame;

//      
public class ChangePasswordJFrame extends CentreJFrame{
 public ChangePasswordJFrame(){
 super("    ");
 }

 protected void change(){
 String s = jTextFieldCP.getText();
 if(isNumber(s)){
  atm.changePassword(s);
  showMessageDialog("      ");
 }
 else
  showMessageDialog("     " );
 new WorkingJFrame();//      
 dispose();//     
 }

}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。