第一篇:銀行ATM機工作流程模擬編程(鏈表)
程序設計基礎
(一)綜合作業(yè)
銀行ATM機工作流程模擬編程
班級學號姓名
[綜合作業(yè)目的]
1、通過編程及上機調(diào)試,掌握函數(shù)、文件、結構及鏈表的綜合應用;
2、掌握查找、排序等基本算法;
3、掌握模塊化程序設計的方法。
[綜合作業(yè)內(nèi)容]
編程,模擬一個ATM(Automatic Teller Machine,自動取款機)的工作流程。依據(jù)帳戶信息:姓名、帳號、密碼、余額,完成ATM機功能:登錄、顯示余額、取款、修改密碼。具體要求:
1、合理規(guī)劃數(shù)據(jù)結構,以保存儲戶信息;
2、使用鏈表結構記錄有關數(shù)據(jù),使用鏈表完成相關操作;
3、使用文件記載儲戶信息,程序啟動時加載儲戶信息,程序退出時保存儲戶信息;
4、程序工作流程:
? 顯示登錄界面:帳號:
密碼:
接受用戶輸入。
? 若為非法用戶,提示出錯,并重新登錄,3次出錯后退出;
? 若為合法用戶,則顯示操作菜單,提供下述服務:
① 顯示基本信息
② 修改密碼
③ 查詢余額
④ 存款
⑤ 取款(每次取款額度為¥5000元)
⑥ 退出
5、* 用戶一次登錄后的取款總數(shù)超過¥50000者,則程序自動產(chǎn)生一個明細記錄,記載該用戶的登錄時間、地點(登錄時間、地點假設已知,并用字符串表示)??紤]此種情況較少出現(xiàn),為節(jié)省存儲空間,不宜在描述儲戶信息的數(shù)據(jù)結構中直接分配字符數(shù)組(建議在其數(shù)據(jù)結構中添加一個指向字符串數(shù)組的指針,…);
6、提交設計文檔及源代碼清單。
[綜合作業(yè)要求]
1、獨立、按時完成綜合作業(yè);
2、進行需求分析,完成相關數(shù)據(jù)結構的規(guī)劃與設計;
3、實現(xiàn)菜單所列功能。具體要求:
每個功能為一個獨立的函數(shù);所有的輸入之前都要有提示。
4、在程序的調(diào)試中,應用所學的計算機知識,完成大批數(shù)據(jù)的輸入。并列出完整、嚴格的測試結果(包括輸入和輸出);
5、提交完整的C代碼及設計文檔(包括設計方案、具體功能及實現(xiàn)、特點小結等)。1
第二篇:模擬ATM機流程
模擬ATM機流程
package com.igeekhome.demo2;
import java.util.Scanner;
//銀行帳戶類
public class Account { // 屬性
private int id;private String name;private String pass;private double balance;private static int currentID = 1;// 記錄當前的卡
// get/set public int getId(){
return this.id;}
public String getName(){
return this.name;}
public String getPass(){
return this.pass;}
public double getBalance(){
return this.balance;}
//構造函數(shù)
public Account(String name,String pass,double money){
this.name = name;
this.pass = pass;
this.balance = money;
this.id = currentID++;}
/*******業(yè)務方法*********/
//存款
public void saveMoney(){ Scanner in = new Scanner(System.in);//接收存款的金額
System.out.print(“請輸入存款的金額:”);int money = in.nextInt();
//修改余額
this.balance+=money;
//給出提示
System.out.println(“存款成功,當前的余額是:”+this.balance);}
//取款
public void drawMoney(){ Scanner in = new Scanner(System.in);//接收取款的金額
System.out.print(“請輸入取款的金額:”);int money = in.nextInt();//判斷余額是否大于取款金額,如果滿足上面的條件,則修改余額,并給出提示
if(this.balance>money){
this.balance-=money;
System.out.println(“取款成功,當前的余額是:”+this.balance);}else{//如果不滿足,則給出取款 失敗的動提示
System.out.println(“余額不足,取款失敗”);}
}
//修改密碼
public void modifyPass(){ Scanner in = new Scanner(System.in);//接收原密碼
System.out.print(“請輸入原密碼:”);String oldPass = in.nextLine();//判斷密碼是否正確,如果不正確,則給出提示,結束方法
if(this.pass.equals(oldPass)==false){
System.out.println(“原密碼不正確,修改密碼失敗”);
return;//返回,不再往下執(zhí)行
}
//如果正確,則接收新密碼
System.out.print(“請輸入新密碼:”);String newPass1 = in.nextLine();
//再次接收新密碼
System.out.print(“請再次輸入新密碼:”);
String newPass2 = in.nextLine();
//判斷兩次新密碼是否一致,如果一致,修改密碼,給出提示
if(newPass1.equals(newPass2)){
this.pass = newPass1;
System.out.println(“修改密碼成功”);
}else{ //如果不一致,給出修改密碼失敗提示
System.out.println(“兩次新密碼不一致,修改密碼失敗”);
}
}
}
package com.igeekhome.demo2;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
//創(chuàng)建一個帳戶對象,進行模擬操作
Account a = new Account(“張三”,“888888”,1000);
//System.out.println(a.getId()+“,”+a.getPass());
//調(diào)用登錄方法,并得到返回結果
boolean flag = Test.login(a.getId(), a.getPass());
if(flag){//如果返回值為true,才進行到主菜單進行相關的操作
Test.showMenu(a);
}
}
//進行登錄操作,如果成功,則返回true,否則返回false /*
* 用戶在ATM機進行操作時,可以有三次輸入密碼的機會,如果三次中任何一次輸入正確,可以進入到主界面進行相關操作,如果三次都不正確,則輸出“請與管理員聯(lián)系”
*/ public static boolean login(int id,String pass){//id,pass現(xiàn)有卡的卡號和密碼
Scanner in = new Scanner(System.in);
for(int i=1;i<=3;i++){
System.out.print(“請輸入卡號:”);
String s = in.nextLine();
int curID = Integer.parseInt(s);
System.out.print(“請輸入密碼:”);
String curPass = in.nextLine();
//如果卡號和密碼都正確,則返回 true
if(id==curID && pass.equals(curPass))
return true;
if(i<3)
System.out.println(“卡號或密碼不正確,請重新輸入!”);
else
System.out.println(“三次輸入錯誤,請與管理員進行聯(lián)系”);}
return false;}
//顯示菜單,進行相關操作
public static void showMenu(Account a){ Scanner in = new Scanner(System.in);
System.out.println(“歡迎使用ATM取款機”);while(true){
System.out.println(“請選擇:1.查詢余額;2.取款;3.存款;4.修改密碼;5.退出:”);
int choose = in.nextInt();//接收用戶的選擇
if(choose==5)
break;
switch(choose){
case 1:System.out.println(“您的余額是:”+a.getBalance());break;
case 2:a.drawMoney();break;
case 3:a.saveMoney();break;
case 4:a.modifyPass();break;
default:System.out.println(“您的輸入有誤,請重新輸入”);break;
} }
System.out.println(“感謝您再次使用!”);} }
第三篇: 《ATM模擬銀行》設計報告
《C/S項目實訓》
課程設計報告
題 目: ATM模擬銀行
學生姓名(學號): 代小龍(20***1)安梓瑋(20***7)侯碩(20***5)
專 業(yè): 信息管理與信息系統(tǒng)
班 級: 18信管(一)班
指導教師: 申晨
信息管理與工程系
2019年01月02日
基于Java的ATM模擬銀行開發(fā)與設計
摘要:
自動取款機又稱ATM,意思是自動柜員機,因大部分用于取款,又稱自動取款機。它是一種利用磁性代碼卡或智能卡實現(xiàn)金融交易的自助服務,代替銀行柜面人員的工作??商崛‖F(xiàn)金、查詢存款余額、進行賬戶之間資金轉(zhuǎn)賬、余額查詢等工作;還可以進行現(xiàn)金存款(實時入賬)、中間業(yè)務等工作。持卡人可以根據(jù)密碼辦理自動取款、查詢余額、轉(zhuǎn)賬、現(xiàn)金存款,更改密碼,繳納手機話費等業(yè)務。我們在這次課程設計上運用了JAVA以及 SQL Server 2012進行設計。.該系統(tǒng)是站在用戶的角度來實現(xiàn)取款,存款,轉(zhuǎn)賬,修改密碼,定期存款,查詢余額多個頁面的實現(xiàn),頁面的實現(xiàn)滿足了銀行基本的業(yè)務需求,使銀行工作規(guī)范化,自動化,在系統(tǒng)頁面設計方面,我們使得系統(tǒng)的功能操作簡單,用戶體驗較好。
窗體底端
關鍵字:ATM模擬機,用戶,管理員,頁面設計,JAVA,sql server,Eclipse集成開發(fā)環(huán)境下開發(fā)系統(tǒng)
目 錄 項目簡介與分工 1
1.1 項目簡介 1
1.1.1 系統(tǒng)開發(fā)需求 1
1.1.2系統(tǒng)具體事務 1
1.1.3 系統(tǒng)開發(fā)環(huán)境要求 1
1.2 項目分工 2 項目設計方案 3 項目功能實現(xiàn) 4
3.1數(shù)據(jù)庫的實現(xiàn) 4
3.2主要功能實現(xiàn) 5
3.2.1主界面 5
3.2.2普通用戶存款界面 9
3.2.3用戶轉(zhuǎn)賬 11
3.2.4手機繳費 16
3.2.5用戶取款 19
3.2.6凍結 24
3.2.7開戶 26
3.2.8銷戶 30項目總結及展望 33 心得體會 34
參 考 文 獻 35 項目簡介與分工
1.1 項目簡介
本系統(tǒng)采用JAVA語言編寫測試完成,基本上在字符界面下模擬了ATM系統(tǒng)的相關實現(xiàn)。主要模擬銀行ATM機系統(tǒng)功能,主要有查閱、轉(zhuǎn)賬、取款、存款、添加用戶、刪除用戶、修改密碼、凍結用戶,管理員解凍、手動手機費繳費等功能
1.1.1 系統(tǒng)開發(fā)需求
隨著市場經(jīng)濟的發(fā)展,經(jīng)濟信息化程度的不斷深入,銀行的傳統(tǒng)業(yè)務己愈來
愈不能滿足銀行客戶的需要。同時,隨著國內(nèi)銀行機構的大量增加,我國的銀行業(yè)面臨更加激烈的同業(yè)競爭,如何提供更多的金融產(chǎn)品和更優(yōu)質(zhì)的服務,如何吸引更多的客戶,如何利用計算機技術加強銀行帳戶信息管理,提高銀行的工作效率和業(yè)務竟爭能力是擺在各家銀行面前的一個迫切需要解訣的問題。隨著信息技術對銀行業(yè)的滲透和促進,銀行卡業(yè)務近年來得到“迅猛發(fā)展,銀行卡發(fā)卡量、交易量大幅激增,ATM設備數(shù)量也隨之增加。
1.1.2系統(tǒng)具體事務
用戶:用戶存款、取款、轉(zhuǎn)賬、余額信息查詢、修改密碼、手機話費的繳費并與數(shù)據(jù)庫實時同步。
管理員:對用戶賬號的凍結以及解凍并詢問是否修改密碼、開戶與銷戶、與數(shù)據(jù)庫實時同步。
1.1.3 系統(tǒng)開發(fā)環(huán)境要求?.操作系統(tǒng):Windows系統(tǒng)
?.開發(fā)語言:Java、SQL server
?.數(shù)據(jù)庫:SQLServer2012
?.軟件:eclipse
1.2 項目分工
代小龍:管理員的開戶,銷戶,凍結,用戶明細,JDBC的連接
安梓瑋:存款,轉(zhuǎn)賬,查詢余額,電話繳費,撰寫報告
侯碩:取款,用戶界面美化,撰寫報告 項目設計方案
實現(xiàn)ATM機的基本功能,包括:查詢余額、存款、取款、轉(zhuǎn)賬、用戶明細、手機繳費以及管理員開戶、銷戶等操作,等基本功能;
查詢余額:連接數(shù)據(jù)庫,根據(jù)與數(shù)據(jù)庫內(nèi)數(shù)據(jù)相同的正確的用戶名和密碼登錄查詢對應的余額;轉(zhuǎn)賬,存取款的金額必須為100或者是100的整數(shù)倍,操作完成后會實時更新數(shù)據(jù)庫內(nèi)相應的內(nèi)容。
修改密碼:在舊密碼相同的情況下,新密碼和確認密碼也相同的情況下,密碼修改完成。
轉(zhuǎn)賬:可以轉(zhuǎn)賬任何金額,但是當轉(zhuǎn)賬金額小于余額時,轉(zhuǎn)賬失敗。
手機繳費:需要繳費的手機號需時已經(jīng)存在的,可以存任意金額。
管理員操作的基本功能包括對銀行卡開戶、銷戶、凍結、解凍、修改管理員密碼等的操作,并在數(shù)據(jù)庫內(nèi)實時更新。項目功能實現(xiàn)
3.1數(shù)據(jù)庫的實現(xiàn)
card表:主要是用戶銀行卡的信息,包括賬號、密碼、余額、是否被凍結、存款余額,其中account是varchar型的主鍵。
details表:主要是戶主名account,日期和資金明細。
GLY表:包含所有管理員的信息。并對管理員的account設為主鍵。
3.2主要功能實現(xiàn)
3.2.1登錄界面package atm_client;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import comm.Card;
import comm.CardGLY;
public class Login extends JFrame {
JTextField tfAccount;
JPasswordField tfPwd;
JButton btOK,btCancel,btGLY;
Card currCard;
CardGLY currCardGLY;
private int count=0;
public void init(){
//界面
JLabel IAccount,IPwd,Itag;
IAccount= new JLabel(”賬號:“);
IPwd= new JLabel(”密碼:“);
Itag=new JLabel(”歡迎登錄ATM系統(tǒng)“);
tfAccount = new JTextField();
tfPwd =new JPasswordField();
btOK=new JButton(”普通登錄“);
btGLY=new JButton(”管理員登錄“);
btCancel =new JButton(”取消“);
Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20));
btGLY.setFont(new Font(”“,Font.CENTER_BASELINE, 12));
btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12));
btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12));
IAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
tfAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
tfPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
IPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18));
JPanel panelOne = new JPanel(null);
panelOne.setOpaque(false);
Itag.setBounds(120,15,350,30);
btOK.setBounds(40, 270, 100, 40);
btGLY.setBounds(160,270,100,40);
btCancel.setBounds(280,270,100,40);
tfAccount.setBounds(160,100,160,40);
IAccount.setBounds(90,105,80,40);
IPwd.setBounds(90, 165,80, 40);
tfPwd.setBounds(160,160,160,40);
panelOne.add(Itag);
panelOne.add(IPwd);
panelOne.add(IAccount);
panelOne.add(btCancel);
panelOne.add(btGLY);
panelOne.add(btOK);
panelOne.add(tfAccount);
panelOne.add(tfPwd);
this.add(panelOne);
this.setTitle(”精神小伙銀行“);
this.setBounds(700, 250, 450, 400);
this.setVisible(true);
//監(jiān)聽
//普通用戶登錄
btOK.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
String account=tfAccount.getText();
String pwd=new String(tfPwd.getPassword());
BufferedReader br=null;
PrintWriter pw=null;
String strEcho=”“;
try {
Socket s=new Socket(InetAddress.getByName(”127.0.0.1“), 8009);
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream());
pw.write(”Loginrn“);
pw.write(account+”rn“);
pw.write(pwd+”rn“);
pw.flush();
strEcho=br.readLine();
if(strEcho.equals(”1“)){
JOptionPane.showMessageDialog(Login.this, ”對不起,您的賬號有誤!“);
tfAccount.setText(”“);
tfPwd.setText(”“);
}else if(strEcho.equals(”2“)){
float money =Float.parseFloat(br.readLine());
String dongjie=br.readLine();
String name=br.readLine();
currCard=new Card(account,pwd,money,dongjie,name);
JOptionPane.showMessageDialog(Login.this, ”歡迎登錄河北金苑銀行!“);
Login.this.dispose();
new MainFrame(br,pw,currCard).init();
}else if(strEcho.equals(”3“)){
count++;
if(count==3){
JOptionPane.showMessageDialog(Login.this, ”對不起,密碼錯誤3次,您的卡已被凍結!請聯(lián)系管理員“);
pw.write(”dongjiern“);
pw.flush();
Login.this.dispose();
}else {
JOptionPane.showMessageDialog(Login.this,”密碼錯誤,請重新輸入“);
String c=String.valueOf(count);
pw.write(c+”rn“);
pw.flush();
}
}else if(strEcho.equals(”4“)){
JOptionPane.showMessageDialog(Login.this,”對不起,您的卡已被凍結,請聯(lián)系管理員“);
Login.this.dispose();
}
} catch(UnknownHostException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//管理員登錄
btGLY.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
String account=tfAccount.getText();
String pwd=new String(tfPwd.getPassword());
BufferedReader br=null;
PrintWriter pw=null;
String strEcho=”“;
try {
Socket s=new Socket(InetAddress.getByName(”127.0.0.1“), 8009);
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream());
pw.write(”GLYrn“);
pw.write(account+”rn“);
pw.write(pwd+”rn“);
pw.flush();
strEcho=br.readLine();
if(strEcho.equals(”9“)){
JOptionPane.showMessageDialog(Login.this, ”對不起,您的賬號有誤!“);
tfAccount.setText(”“);
tfPwd.setText(”“);
}else if(strEcho.equals(”8“)){
JOptionPane.showMessageDialog(Login.this,”您已經(jīng)以管理員身份登錄!“);
Login.this.dispose();
new MainFrameGLY(br,pw,currCardGLY).init();
}else if(strEcho.equals(”7“)){
JOptionPane.showMessageDialog(Login.this,”您的密碼錯誤“);
}
} catch(UnknownHostException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
btCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
Login.this.dispose();
}
});
}
public static void main(String[] args){
new Login().init();
}
}
3.2.2普通存款界面package atm_client;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
import atm_client.Take;
public class Save extends JFrame implements ActionListener{
// 存款界面按鈕
JTextField tfmoney;
private JButton bt000,bt001,bt002,bt003,bt004,bt005,bt006,bt007,bt008,bt009;
private JButton bt100,bt200,bt300,bt500,bt1000;
private JButton btOK,btCancel,btRetry;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Save(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTake = new JPanel(null);
panelTake.setBackground(new Color(119,119,253));
JLabel lblqukuan = new JLabel(”請輸入您的存款數(shù):“);
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 20, 150, 30);
lblqukuan=new JLabel(”提示:只能是100元或100元的整數(shù)倍?!?;
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 50, 300, 30);
tfmoney=new JTextField(12);
tfmoney.setEnabled(false);
panelTake.add(tfmoney);
tfmoney.setBounds(115,90,200,30);
bt100=new JButton(”100“);
panelTake.add(bt100);
bt100.addActionListener(this);
bt100.setBounds(45,190,60,30);
bt200=new JButton(”200“);
panelTake.add(bt200);
bt200.addActionListener(this);
bt200.setBounds(115,190,60,30);
bt300=new JButton(”300“);
panelTake.add(bt300);
bt300.addActionListener(this);
bt300.setBounds(185,190,60,30);
bt500=new JButton(”500“);
panelTake.add(bt500);
bt500.addActionListener(this);
bt500.setBounds(255,190,60,30);
bt1000=new JButton(”1000“);
panelTake.add(bt1000);
bt1000.addActionListener(this);
bt1000.setBounds(325,190,65,30);
bt001=new JButton(”1“);
panelTake.add(bt001);
bt001.addActionListener(this);
bt001.setBounds(45,230,60,30);
bt002=new JButton(”2“);
panelTake.add(bt002);
bt002.addActionListener(this);
bt002.setBounds(115,230,60,30);
bt003=new JButton(”3“);
panelTake.add(bt003);
bt003.addActionListener(this);
bt003.setBounds(185,230,60,30);
bt004=new JButton(”4“);
panelTake.add(bt004);
bt004.addActionListener(this);
bt004.setBounds(255,230,60,30);
bt005=new JButton(”5“);
panelTake.add(bt005);
bt005.addActionListener(this);
bt005.setBounds(325,230,65,30);
bt006=new JButton(”6“);
panelTake.add(bt006);
bt006.addActionListener(this);
bt006.setBounds(45,270,60,30);
bt007=new JButton(”7“);
panelTake.add(bt007);
bt007.addActionListener(this);
bt007.setBounds(115,270,60,30);
bt008=new JButton(”8“);
panelTake.add(bt008);
bt008.addActionListener(this);
bt008.setBounds(185,270,60,30);
bt009=new JButton(”9“);
panelTake.add(bt009);
bt009.addActionListener(this);
bt009.setBounds(255,270,60,30);
bt000=new JButton(”0“);
panelTake.add(bt000);
bt000.addActionListener(this);
bt000.setBounds(325,270,65,30);
btOK=new JButton(”確定“);
panelTake.add(btOK);
btOK.addActionListener(this);
btOK.setBounds(70,140,80,30);
btRetry=new JButton(”重輸“);
panelTake.add(btRetry);
btRetry.addActionListener(this);
btRetry.setBounds(175,140,80,30);
btCancel=new JButton(”返回“);
panelTake.add(btCancel);
btCancel.addActionListener(this);
btCancel.setBounds(280,140,80,30);
this.setTitle(”存款!“);
this.add(panelTake);
this.setSize(435,350);
this.setVisible(true);
this.setLocation(500, 250);
}
@Override
public void actionPerformed(ActionEvent arg0){
// TODO Auto-generated method stub
if(arg0.getSource()==bt100||arg0.getSource()==bt200||arg0.getSource()==bt300||arg0.getSource()==bt500||arg0.getSource()==bt1000)
tfmoney.setText(arg0.getActionCommand());
else if(arg0.getSource()==bt000||arg0.getSource()==bt001||arg0.getSource()==bt002||arg0.getSource()==bt003||arg0.getSource()==bt004||arg0.getSource()==bt005||arg0.getSource()==bt006||arg0.getSource()==bt007||arg0.getSource()==bt008||arg0.getSource()==bt009){
tfmoney.setText(tfmoney.getText()+arg0.getActionCommand());
}else if(arg0.getSource()==btOK){
int saveMoney=Integer.parseInt(tfmoney.getText());
if(saveMoney%100!=0){
JOptionPane.showMessageDialog(Save.this, ”對不起,您輸入的金額不符合規(guī)定!“);
tfmoney.setText(”“);
}
else{
//發(fā)送新的賬戶信息給服務器
pw.write(”savern“);
pw.write(saveMoney+”rn“);
pw.flush();
//等待響應,更新當前登錄賬號
String strEcho=”“;
try {
strEcho = br.readLine();
if(strEcho.equals(”Success“)){
currCard.setMoney(currCard.getMoney()+saveMoney);
JOptionPane.showMessageDialog(null, ”恭喜你成功存款“+saveMoney+”元n當前賬戶余額為:“+currCard.getMoney());
tfmoney.setText(”“);
} else if(strEcho.equals(”Failure“)){
JOptionPane.showMessageDialog(Save.this,”存款失敗“);
}
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else if(arg0.getSource()==btCancel){
Save.this.dispose();
new MainFrame(br,pw,currCard).init();
}else if(arg0.getSource()==btRetry){
tfmoney.setText(”“);
}
}
}
3.2.3用戶轉(zhuǎn)賬界面package atm_client;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
public class Trans extends JFrame {
JTextField Taccount,Tmoney;
JButton btOk,btCancel;
JLabel lAccount,lMoney;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Trans(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTrans=new JPanel(null);
panelTrans.setLayout(new GridLayout(3,2));
lAccount =new JLabel(”賬戶:“);
lMoney =new JLabel(”金額:“);
btOk = new JButton(”確定“);
btCancel = new JButton(”取消“);
Taccount=new JTextField();
Tmoney = new JTextField();
panelTrans.add(lAccount);
panelTrans.add(Taccount);
panelTrans.add(lMoney);
panelTrans.add(Tmoney);
panelTrans.add(btOk);
panelTrans.add(btCancel);
this.add(panelTrans);
this.setTitle(”轉(zhuǎn)賬!“);
this.setSize(300,160);
this.setLocation(500, 250);
this.setVisible(true);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btOk.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(Taccount.getText().equals(”“)){
JOptionPane.showMessageDialog(Trans.this, ”請輸入賬號“);
}else if(Tmoney.getText().equals(”“)){
JOptionPane.showMessageDialog(Trans.this, ”請輸入金額“);
}else {
pw.write(”transrn“);
pw.write(Taccount.getText()+”rn“);
pw.write(Tmoney.getText()+”rn“);
pw.flush();
String strEcho=”“;
try {
strEcho=br.readLine();
if(strEcho.equals(”Success“)){
currCard.setMoney(currCard.getMoney()-Float.parseFloat(Tmoney.getText()));
JOptionPane.showMessageDialog(Trans.this, ”轉(zhuǎn)賬成功“);
}else if(strEcho.equals(”1“)){
JOptionPane.showMessageDialog(Trans.this, ”賬號不存在“);
}else if(strEcho.equals(”2“)){
JOptionPane.showMessageDialog(Trans.this,”不能向自己轉(zhuǎn)賬“);
}else if(strEcho.equals(”3“)){
JOptionPane.showMessageDialog(Trans.this,”余額不足“);
}else if(strEcho.equals(”Fuilure“)){
JOptionPane.showMessageDialog(Trans.this,”轉(zhuǎn)賬失敗“);
}
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
btCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
Trans.this.dispose();
}
});
}
}
3.2.4手機繳費package atm_client;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
public class Communi extends JFrame{
JTextField TNumber,Tmoney;
JButton btOk,btCancel;
JLabel INumber,lMoney;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Communi(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTrans=new JPanel(null);
panelTrans.setLayout(new GridLayout(3,2));
INumber =new JLabel(”賬戶:“);
lMoney =new JLabel(”金額:“);
btOk = new JButton(”確定“);
btCancel = new JButton(”取消“);
TNumber=new JTextField();
Tmoney = new JTextField();
panelTrans.add(INumber);
panelTrans.add(TNumber);
panelTrans.add(lMoney);
panelTrans.add(Tmoney);
panelTrans.add(btOk);
panelTrans.add(btCancel);
this.add(panelTrans);
this.setTitle(”手機繳費!“);
this.setSize(300,160);
this.setLocation(500, 250);
this.setVisible(true);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btOk.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(TNumber.getText().equals(”“)){
JOptionPane.showMessageDialog(Communi.this, ”請輸入手機號“);//導入類——消息對話框
}else if(Tmoney.getText().equals(”“)){
JOptionPane.showMessageDialog(Communi.this, ”請輸入金額“);
}else {
pw.write(”communirn“);
pw.write(TNumber.getText()+”rn“);
pw.write(Tmoney.getText()+”rn“);
pw.flush();
String strEcho=”“;
try {
strEcho=br.readLine();
if(strEcho.equals(”Success“)){
currCard.setMoney(currCard.getMoney()-Float.parseFloat(Tmoney.getText()));
JOptionPane.showMessageDialog(Communi.this, ”充值成功“);
Communi.this.dispose();
}else if(strEcho.equals(”1“)){
JOptionPane.showMessageDialog(Communi.this, ”手機號不存在“);
}else if(strEcho.equals(”2“)){
JOptionPane.showMessageDialog(Communi.this,”余額不足“);
}else if(strEcho.equals(”Fuilure“)){
JOptionPane.showMessageDialog(Communi.this,”充值失敗“);
}
} catch(IOException e1){
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
btCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
Communi.this.dispose();
}
});
}
}
3.2.5用戶取款package atm_client;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import comm.Card;
import atm_client.Take;
public class Take extends JFrame implements ActionListener{
// 取款界面按鈕
JTextField tfmoney;
private JButton bt000,bt001,bt002,bt003,bt004,bt005,bt006,bt007,bt008,bt009;
private JButton bt100,bt200,bt300,bt500,bt1000;
private JButton btOK,btCancel,btRetry;
BufferedReader br;
PrintWriter pw;
Card currCard;
public Take(BufferedReader br,PrintWriter pw,Card currCard){
this.br=br;
this.pw=pw;
this.currCard=currCard;
}
public void init(){
JPanel panelTake = new JPanel(null);
panelTake.setBackground(new Color(119,119,253));
JLabel lblqukuan = new JLabel(”請輸入您要取的錢數(shù):“);
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 20, 150, 30);
lblqukuan=new JLabel(”提示:只能是100元或100元的整數(shù)倍?!?;
panelTake.add(lblqukuan);
lblqukuan.setBounds(115, 50, 300, 30);
tfmoney=new JTextField(12);
tfmoney.setEnabled(false);
panelTake.add(tfmoney);
tfmoney.setBounds(115,90,200,30);
bt100=new JButton(”100“);
panelTake.add(bt100);
bt100.addActionListener(this);
bt100.setBounds(45,190,60,30);
bt200=new JButton(”200“);
panelTake.add(bt200);
bt200.addActionListener(this);
bt200.setBounds(115,190,60,30);
bt300=new JButton(”300“);
panelTake.add(bt300);
bt300.addActionListener(this);
bt300.setBounds(185,190,60,30);
bt500=new JButton(”500“);
panelTake.add(bt500);
bt500.addActionListener(this);
bt500.setBounds(255,190,60,30);
bt1000=new JButton(”1000“);
panelTake.add(bt1000);
bt1000.addActionListener(this);
bt1000.setBounds(325,190,65,30);
bt001=new JButton(”1“);
panelTake.add(bt001);
bt001.addActionListener(this);
bt001.setBounds(45,230,60,30);
bt002=new JButton(”2“);
panelTake.add(bt002);
bt002.addActionListener(this);
bt002.setBounds(115,230,60,30);
bt003=new JButton(”3“);
panelTake.add(bt003);
bt003.addActionListener(this);
bt003.setBounds(185,230,60,30);
bt004=new JButton(”4“);
panelTake.add(bt004);
bt004.addActionListener(this);
bt004.setBounds(255,230,60,30);
bt005=new JButton(”5“);
panelTake.add(bt005);
bt005.addActionListener(this);
bt005.setBounds(325,230,65,30);
bt006=new JButton(”6“);
panelTake.add(bt006);
bt006.addActionListener(this);
bt006.setBounds(45,270,60,30);
bt007=new JButton(”7“);
panelTake.add(bt007);
bt007.addActionListener(this);
bt007.setBounds(115,270,60,30);
bt008=new JButton(”8“);
panelTake.add(bt008);
bt008.addActionListener(this);
bt008.setBounds(185,270,60,30);
bt009=new JButton(”9“);
panelTake.add(bt009);
bt009.addActionListener(this);
bt009.setBounds(255,270,60,30);
bt000=new JButton(”0“);
panelTake.add(bt000);
bt000.addActionListener(this);
bt000.setBounds(325,270,65,30);
btOK=new JButton(”確定“);
panelTake.add(btOK);
btOK.addActionListener(this);
btOK.setBounds(70,140,80,30);
btRetry=new JButton(”重輸“);
panelTake.add(btRetry);
btRetry.addActionListener(this);
btRetry.setBounds(175,140,80,30);
btCancel=new JButton(”返回“);
panelTake.add(btCancel);
btCancel.addActionListener(this);
btCancel.setBounds(280,140,80,30);
this.setTitle(”取款!“);
this.add(panelTake);
this.setSize(435,350);
this.setVisible(true);
this.setLocation(500, 250);
}
@Override
public void actionPerformed(ActionEvent arg0){
// TODO Auto-generated method stub
if(arg0.getSource()==bt100||arg0.getSource()==bt200||arg0.getSource()==bt300||arg0.getSource()==bt500||arg0.getSource()==bt1000)
tfmoney.setText(arg0.getActionCommand());
else if(arg0.getSource()==bt000||arg0.getSource()==bt001||arg0.getSource()==bt002||arg0.getSource()==bt003||arg0.getSource()==bt004||arg0.getSource()==bt005||arg0.getSource()==bt006||arg0.getSource()==bt007||arg0.getSource()==bt008||arg0.getSource()==bt009){
tfmoney.setText(tfmoney.getText()+arg0.getActionCommand());
}else if(arg0.getSource()==btOK){
int takeMoney=Integer.parseInt(tfmoney.getText());
if(currCard.getMoney() JOptionPane.showMessageDialog(Take.this, ”對不起,您的余額不足!“); tfmoney.setText(”“); }else if(takeMoney%100!=0){ JOptionPane.showMessageDialog(Take.this, ”對不起,您輸入的金額不符合規(guī)定!“); tfmoney.setText(”“); } else{ //發(fā)送新的賬戶信息給服務器 pw.write(”takern“); pw.write(takeMoney+”rn“); pw.flush(); //等待響應,更新當前登錄賬號 String strEcho=”“; try { strEcho = br.readLine(); if(strEcho.equals(”Success“)){ currCard.setMoney(currCard.getMoney()-takeMoney); JOptionPane.showMessageDialog(null, ”恭喜你成功取款“+takeMoney+”元n當前賬戶余額為:“+currCard.getMoney()); tfmoney.setText(”“); } else if(strEcho.equals(”Failure“)){ JOptionPane.showMessageDialog(Take.this,”取款失敗“); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } }else if(arg0.getSource()==btCancel){ Take.this.dispose(); }else if(arg0.getSource()==btRetry){ tfmoney.setText(”“); } } } } 3.2.6凍結 package atm_client; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import comm.CardGLY; public class DongJie extends JFrame implements ActionListener{ JButton btOK,btCancel; JTextField Account,Name; BufferedReader br; PrintWriter pw; CardGLY currCardGLY; public DongJie(BufferedReader br,PrintWriter pw,CardGLY currCardGLY){ this.br=br; this.pw=pw; this.currCardGLY=currCardGLY; } public void init(){ JLabel IAccount,IName,Itag; IAccount =new JLabel(”賬號“); IName=new JLabel(”用戶名“); Itag=new JLabel(”請輸入要凍結的賬號及用戶名“); Account =new JTextField(); Name =new JTextField(); btOK=new JButton(”確定“); btCancel=new JButton(”取消“); Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20)); btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); IAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Account.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Name.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); IName.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); JPanel panelOne = new JPanel(null); panelOne.setOpaque(false); Itag.setBounds(80,15,350,30); btOK.setBounds(80, 270, 100, 40); btCancel.setBounds(240,270,100,40); Account.setBounds(160,100,160,40); IAccount.setBounds(90,105,80,40); IName.setBounds(90, 165,80, 40); Name.setBounds(160,160,160,40); btCancel.addActionListener(this); btOK.addActionListener(this); panelOne.add(Itag); panelOne.add(IName); panelOne.add(IAccount); panelOne.add(btCancel); panelOne.add(btOK); panelOne.add(Account); panelOne.add(Name); this.add(panelOne); this.setTitle(”代小龍+安梓瑋+侯碩“); this.setBounds(700, 250, 450, 400); this.setVisible(true); } @Override public void actionPerformed(ActionEvent arg0){ // TODO Auto-generated method stub if(arg0.getSource()==btOK){ if(Account.getText().equals(”“)||Name.getText().equals(”“)){ JOptionPane.showMessageDialog(DongJie.this,”用戶名和賬號不能為空“); }else { pw.write(”dongjiern“); pw.write(Account.getText()+”rn“); pw.write(Name.getText()+”rn“); pw.flush(); System.out.println(Name.getText()+Name.getText()); try { String strEcho=br.readLine(); if(strEcho.equals(”9“)){ JOptionPane.showMessageDialog(DongJie.this, ”賬號不存在,請重新輸入“); Account.setText(”“); Name.setText(”“); }else if(strEcho.equals(”7“)){ JOptionPane.showMessageDialog(DongJie.this, ”凍結成功“); DongJie.this.dispose(); new Ask(br, pw, currCardGLY).init(); }else if(strEcho.equals(”5“)){ JOptionPane.showMessageDialog(DongJie.this, ”用戶名錯誤“); Name.setText(”“); }else if(strEcho.equals(”6“)){ JOptionPane.showMessageDialog(DongJie.this, ”您的賬號已被凍結“); DongJie.this.dispose(); }else if(strEcho.equals(”8“)){ JOptionPane.showMessageDialog(DongJie.this, ”凍結失敗“); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } }else if(arg0.getSource()==btCancel){ DongJie.this.dispose(); } } } package atm_client; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import comm.CardGLY; public class Open extends JFrame implements ActionListener{ JTextField tfname;//文本框 JTextField tfmoney; JPasswordField tfpwd;//密碼框 JPasswordField tfpwd1; JButton btOK,btCancel; CardGLY currCardGLY; BufferedReader br; PrintWriter pw; public Open(BufferedReader br,PrintWriter pw,CardGLY currCardGLY){ this.br=br; this.pw=pw;//文本字節(jié)流寫入 this.currCardGLY=currCardGLY; } //初始化 public void init(){ JLabel Iname;//標簽組件 JLabel Imoney; JLabel Ipwd,Ipwd1; JLabel Itag=new JLabel(”請輸入要開戶用戶的基本信息“); Ipwd=new JLabel(”密碼:“); Ipwd1=new JLabel(”確認密碼“); Iname=new JLabel(”姓名:“); Imoney=new JLabel(”預存金額“); tfname=new JTextField(); tfmoney=new JTextField(); btOK=new JButton(”確定“); btCancel=new JButton(”取消“); tfpwd=new JPasswordField(); tfpwd1=new JPasswordField(); Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20)); Iname.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfmoney.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfname.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfpwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfpwd1.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Ipwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Ipwd1.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); Imoney.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); JPanel panelOne = new JPanel(null); panelOne.setOpaque(false);//設置控件透明 Itag.setBounds(80,15,350,30); Iname.setBounds(70,85,80,40); tfname.setBounds(200,80,160,40); Ipwd.setBounds(70, 135, 80, 40); tfpwd.setBounds(200, 130, 160, 40); Ipwd1.setBounds(70, 185,80, 40); tfpwd1.setBounds(200, 180, 160, 40); Imoney.setBounds(70, 235, 80, 40); tfmoney.setBounds(200, 230, 160, 40); btOK.setBounds(80, 280, 100, 40); btCancel.setBounds(240,280,100,40); btOK.addActionListener(this); btCancel.addActionListener(this); panelOne.add(Itag); panelOne.add(Iname); panelOne.add(Ipwd); panelOne.add(Ipwd1); panelOne.add(Imoney); panelOne.add(tfname); panelOne.add(tfpwd); panelOne.add(tfpwd1); panelOne.add(tfmoney); panelOne.add(btCancel); panelOne.add(btOK); this.add(panelOne); this.setTitle(”代小龍+安梓瑋+侯碩“); this.setBounds(700, 250, 450, 400); this.setVisible(true); } //監(jiān)聽button.@Override //socket編程,client發(fā)出消息,在Server中接收,并且在接收時采用readline()方法時需要注意,//readline()方法要讀到分隔符才會完成讀取操作,用pw.write,或者pw.println public void actionPerformed(ActionEvent arg0){ // TODO Auto-generated method stub if(arg0.getSource()==btOK){ //如果事件源始按鈕OK,則進行下面操作 if(tfname.getText().equals(”“)||tfpwd.getText().equals(”“)||tfpwd.getText().equals(”“)){ JOptionPane.showMessageDialog(Open.this,”賬號密碼不能為空“);//導入類——消息對話框 }else if(!tfpwd.getText().equals(tfpwd1.getText())){ JOptionPane.showMessageDialog(Open.this,”兩次輸入的密碼不相同“); tfpwd.setText(”“); tfpwd1.setText(”“); }else if(tfmoney.getText().equals(”“)){ JOptionPane.showMessageDialog(Open.this,”若不需要存錢,請輸入0“); }else if(tfpwd.getText().equals(tfpwd1.getText())&&!tfname.getText().equals(”“)&&!tfmoney.getText().equals(”“)){ pw.write(”openrn“);//在服務器獲取輸入流寫入一段字符 pw.write(tfname.getText()+”rn“); pw.write(tfpwd.getText()+”rn“); pw.write(tfmoney.getText()+”rn“); pw.flush(); try { String strEcho=br.readLine(); if(strEcho.equals(”1“)){ JOptionPane.showMessageDialog(Open.this,”開戶失敗!有用戶名重復的可能!“); }else if(strEcho.equals(”2“)){ String account=br.readLine(); JOptionPane.showMessageDialog(Open.this,”開戶成功!您的賬號為“+account+”,請牢記您的賬號“); Open.this.dispose(); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } }else if(arg0.getSource()==btCancel){ Open.this.dispose(); } } } package atm_client; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import comm.CardGLY; public class Close extends JFrame implements ActionListener { BufferedReader br; PrintWriter pw; CardGLY currCardGLY; private JButton btOK,btCancel; private JTextField tfAccount; private JPasswordField tfPwd; public Close(BufferedReader br,PrintWriter pw,CardGLY currCardGLY){ this.br=br; this.pw=pw; this.currCardGLY=currCardGLY; } public void init(){ JLabel IAccount,IPwd,Itag; IAccount= new JLabel(”賬號:“); IPwd= new JLabel(”密碼:“); Itag=new JLabel(”請輸入要銷戶的賬號及密碼“); tfAccount=new JTextField(); tfPwd=new JPasswordField(); btOK=new JButton(”確定“); btCancel=new JButton(”取消“); Itag.setFont(new Font(”“,Font.CENTER_BASELINE, 20)); btOK.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); btCancel.setFont(new Font(”“,Font.CENTER_BASELINE, 12)); IAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfAccount.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); tfPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); IPwd.setFont(new Font(”“,Font.CENTER_BASELINE, 18)); JPanel panelOne = new JPanel(null); panelOne.setOpaque(false); Itag.setBounds(120,15,350,30); btOK.setBounds(80, 270, 100, 40); btCancel.setBounds(240,270,100,40); tfAccount.setBounds(160,100,160,40); IAccount.setBounds(90,105,80,40); IPwd.setBounds(90, 165,80, 40); tfPwd.setBounds(160,160,160,40); btCancel.addActionListener(this); btOK.addActionListener(this); panelOne.add(Itag); panelOne.add(IPwd); panelOne.add(IAccount); panelOne.add(btCancel); panelOne.add(btOK); panelOne.add(tfAccount); panelOne.add(tfPwd); this.add(panelOne); this.setTitle(”代小龍+安梓瑋+侯碩“); this.setBounds(700, 250, 450, 400); this.setVisible(true); } @Override public void actionPerformed(ActionEvent arg0){ // TODO Auto-generated method stub if(arg0.getSource()==btOK){ String account=tfAccount.getText(); String pwd=new String(tfPwd.getPassword()); pw.write(”closern“); pw.write(account+”rn“); pw.write(pwd+”rn“); pw.flush(); String strEcho; try { strEcho=br.readLine(); if(strEcho.equals(”7“)){ JOptionPane.showMessageDialog(Close.this, ”銷戶成功“); }else if(strEcho.equals(”9“)){ JOptionPane.showMessageDialog(Close.this, ”您輸入的賬號不存在“); tfAccount.setText(”“); tfPwd.setText(”“); }else if(strEcho.equals(”8“)){ JOptionPane.showMessageDialog(Close.this, ”銷戶失敗“); }else if(strEcho.equals(”6“)){ JOptionPane.showMessageDialog(Close.this, ”您的密碼錯誤“); tfPwd.setText(”"); } } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } }else if(arg0.getSource()==btCancel){ Close.this.dispose(); } } }項目總結及展望 本次課程設計主要做的是模擬ATM機,在實現(xiàn)傳統(tǒng)的ATM機基礎功能的情況下,我們還增添新的內(nèi)容,用戶明細以及話費繳費。實現(xiàn)了普通用戶與管理員登錄。管理員對用戶賬號的凍結,解凍。連接數(shù)據(jù)庫并實時更新。將普通用戶和管理員的信息分別放在兩個表中。 在實現(xiàn)過程中,由于考慮和實現(xiàn)不充分,表的結構過于簡單。在實現(xiàn)話費充值上號碼預存實現(xiàn)的不人性化,我們后續(xù)會加以完善。在接下來的學習中,我們想更加完善ATM功能,并增加新的特色,完善界面。心得體會 通過這次的c/s程序設計,從了解用戶需求,到設計數(shù)據(jù)庫,編寫代碼,連接數(shù)據(jù)庫,調(diào)試程序,實現(xiàn)功能我們都得到了很大的進步,我們遇到過很多Bug,我們請教別人,上網(wǎng)查詢,最終可以說是得到解決,把老師在課上所授的知識應用到實踐中去。c/s程序設計中,是java與連接數(shù)據(jù)庫的統(tǒng)一。為了防止開戶生成的賬號重復,我們在數(shù)據(jù)庫中對相應的表設置主鍵,以免重復,在明細中,我們修復了很多問題,克服了很多困難,最終得以實現(xiàn),感謝申晨老師的幫助,讓我們更加深入了解Java語言設計并應用到實踐中去。感受到了Java語言編程的魅力,在接下來的時間中,我們不會停止對Java網(wǎng)絡項目編程的探索和學習。 參 考 文 獻 [1] Eric.Java編程思想[M].第4版.機械工業(yè)出版社, 機械工業(yè)出版社 [2] JAVA從入門到精通[M].北京:清華大學出版社, 2005.4 [3]薩師煊,王珊.《數(shù)據(jù)庫系統(tǒng)概論》.高等教育出版社,2002.2 [4] Brown.JAVA編程指南(第二版)[M].電子工業(yè)出版社,2003.3 [5] 清宏計算機工作室.JAVA編程技巧[M].機械工業(yè)出版社,2004.5 [6] 耿祥義,張躍平.JAVA實用教程[M].清華大學出版社,2003.5.1 值機日常工作流程 一、準備工作 1核對航班機型、飛機號、到達站; 2準備行李牌、VIP行李牌、頭等艙行李牌及標貼; 3清理工作臺面,檢查電腦、磅秤、和行李轉(zhuǎn)盤,登機牌數(shù)量; 二、辦理值機手續(xù) 1、輸入離港系統(tǒng)工作號; 2、檢查離港系統(tǒng)中航班的飛機號、座位布局; 3、值機查驗:旅客證件、客票、客票姓名與證件姓名; 如行李超重則應收取逾重行李費; 詢問旅客是否購買托運行李保險,填寫保險單,收取相應的保險費;檢查行李牌上的目的地是否正確,并正確栓掛在旅客的托運行李上;將旅客的行李票粘貼或附在旅客客票的空白處;如旅客的托運行李包裝不符和要求或有破損,以及所托運行李為易碎易損物品,應填寫免責行李牌,請旅客簽名,并將免責行李牌號抄于旅客乘機聯(lián)背面空白處,在此托運行李上拴掛免責行李牌;VIP旅客及公務艙、頭等艙旅客的托運行李則應拴掛相應的行李牌 如旅客行李上有舊的行李牌,應予以清除; 在離港系統(tǒng)中提取旅客姓名,如旅客有托運行李,還應輸入行李件數(shù)、重量,接受旅客,在規(guī)定范圍內(nèi),盡量按旅客要求安排座位,并打印登機牌;頭等艙旅客及公務艙旅客應填寫相應的休息牌交給旅客,并通知中轉(zhuǎn)柜臺; 在旅客客票乘機聯(lián)及旅客聯(lián)相應欄目復寫旅客接收的離港序號、座位號,正確、完整的撕下客票的乘機聯(lián) ;將旅客的證件、客票未使用的乘機聯(lián)、客票旅客聯(lián)、行李票及旅客的登機牌唱交旅客;如旅客有行李托運,則應請旅客在行李通過安檢機后再離開;如在辦理過程中遇特殊情況應及時上報;航班預計起飛時間前30分鐘停止辦理乘機手續(xù);并初始關閉(CI)航班;嚴格控制在航班離港時間前25分鐘截止辦理乘機手續(xù),如仍有較多旅客未辦理乘機手續(xù),及時報帶班主任安排人員接替;如航班延誤,須增加柜臺開放時間; 三、報載 將該航班所有乘機聯(lián)集中清點,并與離港系統(tǒng)中的人數(shù)、行李件數(shù)、行李重量相核對,用對講機與行李房核對行李件數(shù);(如貨運收運了團隊行李,應將件數(shù)和重量通知該航班值機員,值機員應及時將行李件數(shù)、重量加入離港電腦中,以便配載員配載以及核對) 正常航班預計起飛前25分鐘,至遲應于20分鐘前、不正常航班在航班飛機落地時間向結算室報載; 填寫《出港航班業(yè)務交接單》; 做好送航班的準備工作,帶齊乘機聯(lián)、對講機、該航班行李牌和《出港業(yè)務交接單》到結算室; 將《出港航班業(yè)務交接單》交結算控制員簽字; 四、送飛機 了解飛機停機位,核對飛機號,領取該航班艙單、業(yè)務袋及隨機業(yè)務文件,送飛機;不正常航班在航班飛機到達旅客下完前到達飛機上,觀查是否能上客,如能上客,及時通知上客; 在艙門口檢查登機旅客有無攜帶超大行李,如有說服旅客將行李交運,在行李上拴掛行李牌后,將行李交行李房人員送入貨艙后,將行李票交給旅客; 將艙單交給機長簽字,業(yè)務袋交給乘務長,并請乘務長在《出港航班業(yè)務交接單》上簽名; 與結算和第二驗票口核對人數(shù),待旅客到齊后用對講機通知結算;如有旅客未登機,查找出旅客姓名后,用對講機通知結算室廣播,并將該旅客乘機聯(lián)找出,查看該旅客是否有托運行李,如未到旅客有托運行李,將行李號報給行李房人員將行李找出;若旅客在離港時間前三分鐘仍未找到,請示結算室是否將未到旅客及其行李拉下,結算同意后用對講機通知行李房將該行李拉下,減去未到旅客后與結算和第二驗票口重新核對旅客人數(shù),通知機組減人后確切人數(shù)(及貨郵行的增減)并在艙單上做相應的修改,人數(shù)到齊后通知結算; 經(jīng)結算同意后方可放飛機; 將簽過字的艙單和交接單送回結算室; 五、回到值機室后,清理值機柜臺,收回補加乘機聯(lián),(如有未登機旅客,將未登機旅客乘機聯(lián)交給中轉(zhuǎn)柜臺),根據(jù)實際乘機聯(lián)做帳,并做好記錄工作。 住院部藥房擺藥機工作流程 一、擺藥機開關機管理(工作時間為早8:00—晚24:0) 1、開機:當日負責擺藥的藥師啟動擺藥機 ① 打開設備前方的主電源開關; ② 打開電腦電源開關(注意加熱輥溫度需達到70℃); ③ 打開藥房管理和擺藥機程序,并檢查連接是否正常; ④ 擺藥機在沒有進行開機檢查前不得進行擺藥工作。 2、關機:夜班藥師準時關閉擺藥機 ① 點擊屏幕右上角“關閉”按鈕或右下角“退出”按鈕,關閉程序; ② 點擊桌面開始菜單退出系統(tǒng); ③ 打開主機艙柜將電腦電源開關向左擰至“off”位置; ④ 再將主電源開關向左擰至“off”位置。 二、擺藥機運行管理 1、擺藥機操作人員應熟悉《擺藥機操作手冊》內(nèi)容,并嚴格按照該手冊要求使用擺藥機,未經(jīng)培訓的人員不得私自操作擺藥機。 2、操作流程 ① 設備接收到醫(yī)囑單后自動進行配藥工作,如果未自動配藥,請點擊“填充”按鈕; ② 如果有需要STS托盤配藥的醫(yī)囑,設備會自動識別并在觸摸屏提示,此時打開STS托盤; ③ STS托盤打開后,根據(jù)打印出來的配藥單進行STS托盤手工配藥(藥師首先進行手部消毒); ④ 手工配藥結束后,重新核對清單的藥品信息確保藥品擺放的正確性,關閉STS托盤。⑤ STS托盤收回后設備將自動繼續(xù)擺藥工作; ⑥ 擺藥中有的藥盒藥品用量多,會出項提示缺藥,找出相應的藥盒進行藥品填充,放回原位后,點擊觸摸屏顯示屏上“重試”選項; ⑦ 當整個配藥工作完成后,檢查藥包打印信息和裝藥情況是否正確。 3、常見問題 ① 擺藥機運行過程中出現(xiàn)一些常見問題,操作人員應及時處理并詳細記錄、跟蹤處理,填寫《擺藥機使用情況登記本》,簽名確認后留存?zhèn)洳椤"?需要其他部門協(xié)同解決的問題上報科室,由專業(yè)人員負責維修,個人不得隨意拆卸維修擺藥機。 三、藥盒的管理 1、當日負責擺藥的藥師在擺藥機使用前檢查藥盒中藥品數(shù)量,對于不足的應及時進行補充,并仔細核對藥名、規(guī)格、劑型、廠家,不得將不匹配的藥品加入擺藥機藥盒,補充完畢后雙人核對可裝回擺藥機,并有擺藥機拆零記錄,備查。 2、填充藥品時,為了保證藥品質(zhì)量,填藥量不宜過多,夠當日用即可,藥品距離藥盒頂端不小于1cm。 四、擺藥機的耗材管理 1、當日負責擺藥的藥師在包裝袋用盡后和墨帶一并更換,在進行更換時,嚴格按照擺藥機上面的標示圖進行更換,非擺藥機操作人員不得進行此項工作。 2、擺藥人員應隨時關注耗材使用情況,需要請領時,及時上報藥房負責人,由藥房負責人請領并留存耗材出庫單。 五、擺藥機的日常維護 1、嚴禁私自移動擺藥機,以免出現(xiàn)數(shù)據(jù)紊亂或硬件損壞的現(xiàn)象。 2、每日在擺藥工作結束后,做好擺藥機的清潔工作。 3、擺藥機應由工程師每6個月對機器內(nèi)部零件進行一次全面維護檢查。 六、擺藥機的清潔制度 擺藥機各部位清潔時間嚴格按照以下時間執(zhí)行,清潔時使用無毛屑脫落的專用抹布噴淋95%酒精擦拭,并填寫清潔記錄。 1、每日檢查清潔項目:末端藥斗的清潔;加熱輥的清潔。(當日擺藥藥師) 2、每周清潔項目:配藥罐的清潔;內(nèi)部藥柜藥斗的清潔;STS托盤的清潔。(當日擺藥藥師) 3、每兩周清潔項目:雙擋板的清潔;主藥斗的清潔;STS藥斗的清潔。(當日擺藥藥師) 4、每半年清潔項目:前端藥柜的清潔;內(nèi)部藥柜的清潔(廠家工程師負責)第四篇:航班值機工作流程(右3)
第五篇:住院部藥房擺藥機工作流程