📄 bankmain.java
字号:
{ l_account=Long.parseLong(account);
l_p=Long.parseLong(password);
//打开一个数据流
try
{file_read=new RandomAccessFile(file_name,"rw");
//写入数据
try
{
long len=file_read.length();//获得文件长
long filePoint=0;
file_read.seek(0);
file_read.readUTF();
while(filePoint<len)
{accNumber=file_read.readUTF();
name=file_read.readUTF();
/*设计有点个性化了*/
passNumber=file_read.readUTF();passNumber=file_read.readUTF(); //移动指针以便读取密码
type=file_read.readUTF();type=file_read.readUTF(); //移动指针以便读取存款类型
type=file_read.readUTF();type=file_read.readUTF();
oldtime=file_read.readUTF();//获得上次存储时间
oldMoney=file_read.readDouble();//获得上次的钱
if((account.equals(accNumber))&&passNumber.equals(password))
{
StringTokenizer fenxi=new StringTokenizer(oldtime,"/");
olddate=fenxi.nextToken();oldmonth=fenxi.nextToken();oldyear=fenxi.nextToken();
Date date=new Date();
String temp1=date.toString();
newmonth=temp1.substring(4,7);//截取月份
newdate=temp1.substring(8,10);//截取日期
newyear=temp1.substring(24,28);//截取年份
if(newmonth.equals("Jan")) //将月份转化为数字字符
newmonth="1";
else if(newmonth.equals("Feb"))
newmonth="2";
else if(newmonth.equals("Mar"))
newmonth="3";
else if(newmonth.equals("Apr"))
newmonth="4";
else if(newmonth.equals("May"))
newmonth="5";
else if(newmonth.equals("Jun"))
newmonth="6";
else if(newmonth.equals("Jul"))
newmonth="7";
else if(newmonth.equals("Aug"))
newmonth="8";
else if(newmonth.equals("Sep"))
newmonth="9";
else if(newmonth.equals("Oct"))
newmonth="10";
else if(newmonth.equals("Nov"))
newmonth="11";
else if(newmonth.equals("Dec"))
newmonth="12";
amountDay=Integer.parseInt(newdate)-Integer.parseInt(olddate)+
(Integer.parseInt(newmonth)-Integer.parseInt(oldmonth))*(30+31)/2+
(Integer.parseInt(newyear)-Integer.parseInt(oldyear))*12*(30+31)/2;
newtime=newdate+"/"+newmonth+"/"+newyear;
tempOldMoney=oldMoney;
if(type.equals("定期存款"))
for(int i=1;i<=amountDay;i++)//得到原有存款加上利息后的金额
/*算法不太正确,只能用于模仿*/
{oldMoney+=oldMoney*2/36500;
}
if(type.equals("活期存款"))
for(int i=1;i<=amountDay;i++)//得到原有存款加上利息后的金额
/*算法不太正确,只能用于模仿*/
{oldMoney+=oldMoney*1/36500;
}
interest=oldMoney-tempOldMoney;
withdrawMoneyFr.moneyPanel.initial(name,String.valueOf(accNumber),type,
String.valueOf(oldMoney),interest,newtime);
t1.setText("");
t2.setText("");
setVisible(false);
withdrawMoneyFr.setVisible(true);
break;
}
filePoint=file_read.getFilePointer();
if(filePoint==len) //当客户记录在最后一行时会出现filePoint=len
{acc_PasswordNotExistDlg.setVisible(true);
}
}
file_read.close();
}
catch(IOException e11){readFailedDlg.setVisible(true);}
}
catch(FileNotFoundException e1){readFailedDlg.setVisible(true);}
}
catch(NumberFormatException event){check_numberExceptDlg.setVisible(true);}
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==b1)
{ Check();
}
else if(e.getSource()==b2)
{ t1.setText("");
t2.setText("");
setVisible(false);
}
else if(e.getSource()==withdrawMoneyFr.b2)
{setVisible(true);
}
}
}
class Check_numberExceptDlg extends Dialog implements ActionListener
//输入关键字不为数字对话框
{Button b;Label label;
Check_numberExceptDlg(Frame F,String s,boolean p)
{super(F,s,p);
setLayout(new GridLayout(4,1));
b=new Button("确定");label=new Label("请在文本框内填入数字!");
Panel panel=new Panel();
panel.setLayout(new GridLayout(1,5));
b.addActionListener(this);
add(new Panel());add(label);
panel.add(new Label());panel.add(new Label());
panel.add(b);panel.add(new Label());panel.add(new Label());
add(panel);
add(new Panel());
addWindowListener(new WindowAdapter()//窗口添加适配器
{public void windowClosing(WindowEvent e)
{setVisible(false);System.exit(0);}
});
pack();
setBounds(300,200,300,200);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==b)
{setVisible(false);
}
}
}
class AccNotExistDlg extends Dialog implements ActionListener//帐户不存在
{Button b;Label label;
AccNotExistDlg(Frame F,String s,boolean p)
{super(F,s,p);
setLayout(new GridLayout(4,1));
b=new Button("确定");label=new Label("该账户不存在,请检查输入!");
Panel panel=new Panel();
panel.setLayout(new GridLayout(1,5));
b.addActionListener(this);
add(new Panel());add(label);
panel.add(new Label());panel.add(new Label());
panel.add(b);panel.add(new Label());panel.add(new Label());
add(panel);
add(new Panel());
addWindowListener(new WindowAdapter()//窗口添加适配器
{public void windowClosing(WindowEvent e)
{setVisible(false);System.exit(0);}
});
pack();
setBounds(300,200,300,200);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==b)
{setVisible(false);
}
}
}
class ReadFailedDlg extends Dialog implements ActionListener//读取客户信息文件失败
{Button b;Label label;
ReadFailedDlg(Frame F,String s,boolean p)
{super(F,s,p);
setLayout(new GridLayout(4,1));
b=new Button("确定");label=new Label("读取客户信息失败,请重试!");
Panel panel=new Panel();
panel.setLayout(new GridLayout(1,5));
b.addActionListener(this);
add(new Panel());add(label);
panel.add(new Label());panel.add(new Label());
panel.add(b);panel.add(new Label());panel.add(new Label());
add(panel);
add(new Panel());
addWindowListener(new WindowAdapter()//窗口添加适配器
{public void windowClosing(WindowEvent e)
{setVisible(false);System.exit(0);}
});
pack();
setBounds(300,200,300,200);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==b)
{setVisible(false);
}
}
}
class Acc_PasswordNotExistDlg extends Dialog implements ActionListener
//客户帐号或密码不对窗口
{Button b;Label label;
Acc_PasswordNotExistDlg(Frame F,String s,boolean p)
{super(F,s,p);
setLayout(new GridLayout(4,1));
b=new Button("确定");label=new Label("账号或密码不正确,请检查输入!");
Panel panel=new Panel();
panel.setLayout(new GridLayout(1,5));
b.addActionListener(this);
add(new Panel());add(label);
panel.add(new Label());panel.add(new Label());
panel.add(b);panel.add(new Label());panel.add(new Label());
add(panel);
add(new Panel());
addWindowListener(new WindowAdapter()//窗口添加适配器
{public void windowClosing(WindowEvent e)
{setVisible(false);System.exit(0);}
});
pack();
setBounds(300,200,300,200);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==b)
{setVisible(false);
}
}
}
/* ***************************************************************** */
//下面为取款窗口
class WithdrawMoneyFr extends Frame implements ActionListener//取款窗口
{ RandomAccessFile file_write;
String file_name="custom.txt";
WriteFailedDlg writeFailedDlg;
WithdLargeDepositDlg withdLargeDepositDlg;
WithdrawTableFr withdrawTableFr;
Check_numberExceptDlg check_numberExceptDlg;
MoneyPanel moneyPanel;
Button b1,b2;
Label l_information;
Panel panel1;
WithdrawMoneyFr(String s)
{ super(s);
writeFailedDlg=new WriteFailedDlg(this,"错误",true);
writeFailedDlg.setVisible(false);
check_numberExceptDlg=new Check_numberExceptDlg(this,"错误",true);
check_numberExceptDlg.setVisible(false);
withdrawTableFr=new WithdrawTableFr();
withdrawTableFr.setVisible(false);
withdLargeDepositDlg=new WithdLargeDepositDlg(this,取款额过大,true);
withdLargeDepositDlg.setVisible(false);
b1=new Button("取款");
b2=new Button("取消");
l_information=new Label("请填写客户取款金额信息:");
panel1=new Panel();
moneyPanel=new MoneyPanel();
panel1.add(b1);panel1.add(b2);
add("North",l_information);add("Center",moneyPanel);add("South",panel1);
add("West",new Panel());add("East",new Panel());
b1.addActionListener(this);
b2.addActionListener(this);
setBounds(300,200,400,350);
setResizable(false);
addWindowListener(new WindowAdapter()//窗口添加适配器
{public void windowClosing(WindowEvent e)
{setVisible(false);System.exit(0);}
});
}
private void InWithdraw()
{ String interest,inMoneyAmount;
String name,account,oldMoney,
balance,type;
String temp1,accNumber;
double d_inMoneyAmount,d_oldMoney,d_interest,d_balance;
long l_account;
try
{inMoneyAmount=moneyPanel.t_inMoneyAmount.getText();
name=moneyPanel.l_name2.getText();
account=moneyPanel.l_account2.getText();
type=moneyPanel.l_type2.getText();
oldMoney=moneyPanel.l_oldMoney2.getText();
l_account=Long.parseLong(account);
d_oldMoney=Double.valueOf(oldMoney).doubleValue();
d_interest=moneyPanel.interest;
d_inMoneyAmount=Double.valueOf(inMoneyAmount).doubleValue();
d_balance=d_oldMoney-d_inMoneyAmount;
balance=String.valueOf(d_balance); ///////////取款数额大于存款额怎么办?????????
/*得到存款日期*/
temp1=moneyPanel.l_date2.getText();
if(d_balance<=1)
{withdLargeDepositDlg.setVisible(true);
}
if(d_balance>1)
{try
{try{file_write=new RandomAccessFile(file_name,"rw");}
catch(FileNotFoundException e1){writeFailedDlg.setVisible(true);}
long len=file_write.length();//获得文件长
long filePoint=0;
file_write.seek(0);
file_write.readUTF();
while(filePoint<len)
{
accNumber=file_write.readUTF();
/*设计有点个性化了*/
if(account.equals(accNumber))
{file_write.readUTF();//只为了移动指针
file_write.readUTF();file_write.readUTF();//只为了移动指针
type=file_write.readUTF();type=file_write.readUTF(); //只为了移动指针
type=file_write.readUTF();type=file_write.readUTF();//只为了移动指针
file_write.writeUTF(temp1);//获得上次存储时间
file_write.writeDouble(d_balance);
withdrawTableFr.initial(name,account,oldMoney,
String.valueOf(d_interest),inMoneyAmount,balance,temp1);
moneyPanel.t_inMoneyAmount.setText("");
withdrawTableFr.setVisible(true);
setVisible(false);
break;
}
else
{//只为了移动指针
file_write.readUTF();file_write.readUTF();file_write.readUTF();file_write.readUTF();
file_write.readUTF();file_write.readUTF();file_write.readUTF();file_write.readUTF();
file_write.readDouble();
}
/////
filePoint=file_write.getFilePointer();
}
file_write.close();
}
catch(IOException e11){writeFailedDlg.setVisible(true);}
}
}
catch(NumberFormatException event){check_numberExceptDlg.setVisible(true);}
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==b1)
{InWithdraw();
}
if(e.getSource()==b2)
{setVisible(false);
moneyPanel.t_inMoneyAmount.setText("");
}
}
}
class MoneyPanel extends Panel//嵌入WithdrawMoneyFr的面板
{ double interest;
TextField t_inMoneyAmount;
Panel p;
Label l_inMoneyInfoLabel;
Label l_name1,l_name2,l_account1,l_account2,
l_type1,l_type2,l_oldMoney1,l_oldMoney2,l_date1,l_date2;
MoneyPanel()
{ t_inMoneyAmount=new TextField(30);
p=new Panel();
l_name1=new Label("姓名:");
l_name2=new Label();
l_account1=new Label("帐号:");
l_account2=new Label();
l_type1=new Label("账户类型:");
l_type2=new Label();
l_oldMoney1=new Label("现有金额:");
l_oldMoney2=new Label();
l_inMoneyInfoLabel=new Label("请输入取款金额:");
l_date1=new Label("取款日期");
l_date2=new Label();
//下面将添加组件
setLayout(new GridLayout(10,2));
add(l_name1);add(l_name2);
add(l_account1);add(l_account2);
add(l_type1);add(l_type2);
add(l_oldMoney1);add(l_oldMoney2);
add(l_date1);add(l_date2);
add(l_inMoneyInfoLabel);add(new Label());
add(t_inMoneyAmount);add(new Label());
}
void initial(String name,String account,String type,String oldMoney,double interest,String date)
{ l_name2.setText(name);
l_account2.setText(account);
l_type2.setText(type);
l_oldMoney2.setText(oldMoney);
l_date2.setText(date);
this.interest=interest;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -