java GUIはATMシステム(3.0版)を実現します。
小さいプロジェクトを書いて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バッグ
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();//
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。