Java中银行系统的实现

这里写自定义目录标题


1.已实现功能:
1.查询余额,转账,取款,存款,修改密码,贷款,结束进程。
2.管理员增加与删除账户。
3.多客户端同时登陆。
4.将数据存入文件。
5.服务器端显示所有账户信息。
6.以抛出异常的方式实现程序运行。
2.拓展功能:
1.贷款功能。
2.用户界面背景。
3.难点:
1.jtable在增加和删除账户后对管理员界面进行更新。
2.客户端进行页面跳转时需要对页面进行刷新。
3.在用户修改密码之后重新登录服务器。
4.客户端增加背景
Ps:
1.由于在服务器端实现多客户登录之时使用了static类型的内部类,导致程序服务器端的界面无法做到实时更新。
2.图片和文件都应该放在D盘里面。

首先启动服务器,服务器会读出d盘中Bank.txt(如果没有该文件,service_hw中的57行注释符号取消,则可以自动生成该文件,但是之后要再次将该行注释掉,以免重复生成文件)文件中的数据,然后存入数组中,转入jtable中。

点击增加按钮,输入要增加的账户,点击确认增加按钮。
可以看到管理员界面已经完成了该账户的增加。

点击删除按钮,进入删除界面,输入要删除的账户密码和余额,就可以直接删除账户。

多客户端实现。

启动客户端进入客户界面(客户界面需要的图片的路径是D:\kkk.jpg),点击登录若密码正确则开始登录,若想退出则直接点击关闭。

登陆之后选择您要进行的活动。

查询账户余额。点击返回则返回第二个界面

取款之后显示。

存款之后的显示

转账之后的界面

修改密码之后需要重新登陆

贷款超过50000会被拒绝。
贷款界面。

最后点击结束按钮。会将所有的数据写入文件之中。

public class client_gui {
	
	//与服务器交互参数
	private PrintWriter out;
	private BufferedReader in;
	//账户参数
	client_card client;
	
	//主界面参数0
	private JFrame mainframe=new JFrame("北冥银行");
	private JButton denglu=new JButton("登录");
	private JButton guanbi=new JButton("关闭");
	//第二界面参数
	private JFrame secondframe=new JFrame("欢迎来到北冥银行");
	private JTextField id=new JTextField(35);
	private JPasswordField password=new JPasswordField(35);
	private JButton yue=new JButton("余额");
	private JButton qukuan=new JButton("取款");
	private JButton cunkuan=new JButton("存款");
	private JButton zhuanzhang=new JButton("转账");
	private JButton xgmm=new JButton("修改密码");
	private JButton frozen=new JButton("贷款");
	private JButton end=new JButton("结束");
	//余额界面参数1
	private JFrame frame1=new JFrame("余额");
	private JTextField frame1_id=new JTextField(35);
	private JTextField frame1_password=new JTextField(35);
	private JTextField frame1_balance=new JTextField(35);
	private JButton back1=new JButton("返回");
	//取款界面参数2
	private JFrame frame2=new JFrame("取款");
	private JTextField frame2_id=new JTextField(35);
	private JTextField frame2_password=new JTextField(35);
	private JTextField frame2_balance=new JTextField(35);
	private JTextField frame2_withdraw=new JTextField(35);
	private JButton frame2_withdrawb=new JButton("确定取款");
	//存款界面3
	private JFrame frame3=new JFrame("存款");
	private JTextField frame3_id=new JTextField(35);
	private JPasswordField frame3_password=new JPasswordField(35);
	private JTextField frame3_balance=new JTextField(35);
	private JTextField frame3_deposit=new JTextField(35);
	private JButton frame3_depositb=new JButton("确定存款");
	//转账界面参数4
	private JFrame frame4=new JFrame("转账");
	private JTextField frame4_id=new JTextField(35);
	private JTextField frame4_idtransfer=new JTextField(35);
	private JTextField frame4_idtransferm=new JTextField(35);
	private JTextField frame4_password=new JTextField(35);
	private JButton frame4_transferb=new JButton("确认转账");
	//修改密码界面参数5
	private JFrame frame5=new JFrame("修改密码");
	private JTextField frame5_password1=new JTextField(35);
	private JTextField frame5_password2=new JTextField(35);
	private JTextField frame5_password3=new JTextField(35);
	private JButton frame5_changeb=new JButton("确认修改密码");
	//贷款界面参数7
	private JFrame frame7=new JFrame("贷款");
	private JTextField frame7_id1=new JTextField(35);
	private JTextField frame7_balance=new JTextField(35);
	private JTextField frame7_password3=new JTextField(35);
	private JTextField frame7_loan=new JTextField(35);
	private JButton frame7_loanb=new JButton("确认贷款");
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		try{
		Socket socket=new Socket("127.0.0.1",8000);
		System.out.println("客户端已经启动");
		client_gui c=new client_gui();
		c.thirdframe();
		c.choice_frame();
		c.mainframe();
		c.in = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
		c.out = new PrintWriter(
                new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
	}
	catch(IOException ex)
	{
    	System.err.println(ex);
	}
		
	}
	
//登录界面
	public void mainframe(){
		mainframe.setLayout(new FlowLayout());
		mainframe.setBounds(30,39,500,500);
		
		denglu.addActionListener(new denglu());
		guanbi.addActionListener(new guanbi());
		
		//添加图像
		ImageIcon icon_top=new ImageIcon("D:\\kkk.jpg");
		JLabel ImagLabel=new JLabel(icon_top);
		Dimension ImagLabelSize=new Dimension(500,200);
		ImagLabel.setPreferredSize(ImagLabelSize);
		mainframe.add(ImagLabel);
		
		//设置登录界面输入框
		JLabel idd=new JLabel("username");
		JLabel password2=new JLabel("password");
		
		//将所有的部件加入到mainframe上面
		mainframe.add(idd);
		mainframe.add(id);
		mainframe.add(password2);
		mainframe.add(password);
		mainframe.add(denglu);
		mainframe.add(guanbi);
		mainframe.setVisible(true);
		mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
	}
	//当关闭按钮按下时程序终止
	private class guanbi implements ActionListener{

		@SuppressWarnings("deprecation")
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			System.exit(0);
		}
	}
	//当登录按钮按下时将发送数据到服务端
	private class denglu implements ActionListener{

		@SuppressWarnings("deprecation")
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			try {
			String std1=id.getText();
			String std2=password.getText();
			out.println(0+"_"+std1+"_"+std2);
			out.flush();
				String filestd=null;
					while((filestd=in.readLine()) != null){
						System.out.println(filestd);
					StringTokenizer st = new StringTokenizer(filestd, "_");
					client=new client_card(st.nextToken()
							,st.nextToken(),Double.parseDouble(st.nextToken()));
					//if(std1==client.getCard_id()&&std2==client.getCard_password())
						System.out.println(filestd);
						mainframe.setVisible(false);
						secondframe.setVisible(true);
						secondframe.update(null);
					}
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}	
			
		}
	}
	//选择界面
	private void choice_frame(){
	
		//JFrame secondframe=new JFrame("欢迎来到北冥银行");
		secondframe.setLayout(new FlowLayout(300,200,30));
		secondframe.setBounds(30,39,500,500);
		
		//添加背景图片
		ImageIcon background = new ImageIcon("D:\\kkk.jpg");
		JLabel label = new JLabel(background);
		label.setBounds(0, 0, background.getIconWidth(),
		background.getIconHeight());
		JPanel imagePanel = (JPanel) secondframe.getContentPane();
		 imagePanel.setOpaque(false);
		 secondframe.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
		 secondframe.setResizable(false);
		  
		//增加按钮
		secondframe.add(yue);
		yue.addActionListener(new yue());
		secondframe.add(qukuan);
		qukuan.addActionListener(new qukuan());
		secondframe.add(cunkuan);
		cunkuan.addActionListener(new cunkuan());
		secondframe.add(zhuanzhang);
		zhuanzhang.addActionListener(new zhuanzhang());
		secondframe.add(xgmm);
		xgmm.addActionListener(new xgmm());
		secondframe.add(frozen);
		frozen.addActionListener(new frozen());
		secondframe.add(end);
		end.addActionListener(new end());
		secondframe.setVisible(false);
		secondframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	private void thirdframe(){
		//余额界面添加背景图片
		ImageIcon background = new ImageIcon("D:\\kkk.jpg");
		JLabel label = new JLabel(background);
		label.setBounds(0, 0, background.getIconWidth(),
		background.getIconHeight());
		JPanel imagePanel = (JPanel) frame1.getContentPane();
		 imagePanel.setOpaque(false);
		 frame1.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
		 frame1.setResizable(false);
		//余额界面参数1
		frame1.setLayout(new FlowLayout(30,20,30));
		frame1.setBounds(30,39,500,500);
		frame1.add(frame1_id);
		frame1.add(frame1_password);
		frame1.add(frame1_balance);
		frame1.add(back1);
		back1.addActionListener(new back1());
		frame1.setVisible(false);
		frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//取款界面添加背景图片
		ImageIcon background2 = new ImageIcon("D:\\kkk.jpg");
		JLabel label2 = new JLabel(background);
		label2.setBounds(0, 0, background.getIconWidth(),
		background2.getIconHeight());
		JPanel imagePane2 = (JPanel) frame2.getContentPane();
		 imagePane2.setOpaque(false);
		 frame2.getLayeredPane().add(label2, new Integer(Integer.MIN_VALUE));
		 frame2.setResizable(false);
		//取款界面参数2
		frame2.setLayout(new FlowLayout(30,20,30));
		frame2.setBounds(30,39,500,500);
		frame2.add(frame2_id);
		frame2.add(frame2_password);
		frame2.add(frame2_balance);
		frame2.add(frame2_withdraw);
		frame2.add(frame2_withdrawb);
		frame2_withdrawb.addActionListener(new withdrawb());
		frame2.setVisible(false);
		frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			
		
		//存款界面添加背景图片
		ImageIcon background3 = new ImageIcon("D:\\kkk.jpg");
		JLabel label3 = new JLabel(background);
		label3.setBounds(0, 0, background.getIconWidth(),
		background3.getIconHeight());
		JPanel imagePane3 = (JPanel) frame3.getContentPane();
		imagePane3.setOpaque(false);
		frame3.getLayeredPane().add(label3, new Integer(Integer.MIN_VALUE));
		frame3.setResizable(false);
		//存款界面3
		frame3.setLayout(new FlowLayout(30,20,30));
		frame3.setBounds(30,39,500,500);
		frame3.add(frame3_id);
		frame3.add(frame3_password);
		frame3.add(frame3_balance);
		frame3.add(frame3_deposit);
		frame3.add(frame3_depositb);
		frame3_depositb.addActionListener(new frame3_depositb());
		frame3.setVisible(false);
		frame3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		//转账界面添加背景图片
		ImageIcon background4 = new ImageIcon("D:\\kkk.jpg");
		JLabel label4 = new JLabel(background);
		label4.setBounds(0, 0, background.getIconWidth(),
		background4.getIconHeight());
		JPanel imagePane4 = (JPanel) frame4.getContentPane();
		imagePane4.setOpaque(false);
		frame4.getLayeredPane().add(label4, new Integer(Integer.MIN_VALUE));
		frame4.setResizable(false);
		
		//转账界面参数4
		frame4.setLayout(new FlowLayout(30,20,30));
		frame4.setBounds(30,39,500,500);
		frame4.add(frame4_id);
		frame4.add(frame4_idtransfer);
		frame4.add(frame4_password);
		frame4.add(frame4_idtransferm);
		frame4.add(frame4_transferb);
		frame4_transferb.addActionListener(new frame4_transferb());
		frame4.setVisible(false);
		frame4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		//取款界面添加背景图片
		ImageIcon background5 = new ImageIcon("D:\\kkk.jpg");
		JLabel label5 = new JLabel(background);
		label2.setBounds(0, 0, background.getIconWidth(),
		background5.getIconHeight());
		JPanel imagePane5 = (JPanel) frame5.getContentPane();
		imagePane5.setOpaque(false);
		frame5.getLayeredPane().add(label5, new Integer(Integer.MIN_VALUE));
		frame5.setResizable(false);
		//修改密码界面参数5
		frame5.setLayout(new FlowLayout(30,20,30));
		frame5.setBounds(30,39,500,500);
		frame5.add(frame5_password1);
		frame5.add(frame5_password2);
		frame5.add(frame5_password3);
		frame5.add(frame5_changeb);
		frame5_changeb.addActionListener(new frame5_changeb());
		frame5.setVisible(false);
		frame5.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//贷款界面添加背景图片
				ImageIcon background7 = new ImageIcon("D:\\kkk.jpg");
				JLabel label7 = new JLabel(background);
				label7.setBounds(0, 0, background.getIconWidth(),
				background7.getIconHeight());
				JPanel imagePane7 = (JPanel) frame7.getContentPane();
				imagePane7.setOpaque(false);
				frame5.getLayeredPane().add(label7, new Integer(Integer.MIN_VALUE));
				frame5.setResizable(false);
		//贷款界面参数7
		frame7.setLayout(new FlowLayout(30,20,30));
		frame7.setBounds(30,39,500,500);
		frame7.add(frame7_id1);
		frame7.add(frame7_balance);
		frame7.add(frame7_password3);
		frame7.add(frame7_loan);
		frame7.add(frame7_loanb);
		frame7_loanb.addActionListener(new frame7_loanb());
		frame7.setVisible(false);
		frame7.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	//余额界面监听器
	private class yue implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			frame1_id.setText("账户:"+client.getCard_id());
			frame1_password.setText("密码:"+client.getCard_password());
			frame1_balance.setText("余额:"+client.getCard_balance());
			frame1.update(null);
			secondframe.setVisible(false);
			frame1.setVisible(true);
		}
		
	}
	//看完余额返回secondframe界面
	private class back1 implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			secondframe.setVisible(true);
			frame1.setVisible(false);
		}
	}
	//取款界面监听器
	
	private class qukuan implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			frame2_id.setText("账户:"+client.getCard_id());
			frame2_password.setText("密码:"+client.getCard_password());
			frame2_balance.setText("余额:"+client.getCard_balance());
			frame2_withdraw.setText("请输入您要取的款(不一定能取出来哦。。。。。)");
			secondframe.setVisible(false);
			frame2.update(null);
			frame2.setVisible(true);
			
		}
		
	}
	private class withdrawb implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			double balance=0;
			balance=Double.valueOf(client.getCard_balance())-Double.valueOf(frame2_withdraw.getText());
			client=new client_card(client.getCard_id(),client.getCard_password(),balance);
			if(balance>0){
			out.println(2+"_"+balance);
			out.flush();
			frame2.setVisible(false);
			secondframe.setVisible(true);
			}
			else{
				frame2_withdraw.setText("请重新输入");
			}
		}
		
	}
	
//存款界面监听器
	private class cunkuan implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			frame3_id.setText("账户:"+client.getCard_id());
			frame3_password.setText("密码"+client.getCard_password());
			frame3_balance.setText("余额:"+client.getCard_balance());
			frame3_deposit.setText("请输入您要存的款");
			secondframe.setVisible(false);
			frame3.setVisible(true);
		}
		
	}
	private class frame3_depositb implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			double balance=client.getCard_balance()+Double.valueOf(frame3_deposit.getText());
			out.println(3+"_"+balance);
			out.flush();
			client=new client_card(client.getCard_id(),client.getCard_password(),balance);
			frame3.setVisible(false);
			frame3.update(null);
			secondframe.setVisible(true);
		}
		
	}
//转账界面监听器4
	private class zhuanzhang implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			frame4_id.setText("账户:"+client.getCard_id());
			frame4_idtransfer.setText("请输入要转入的账户");
			frame4_password.setText("请输入您的密码");
			frame4_idtransferm.setText("请输入转账金额");
			secondframe.setVisible(false);
			frame4.update(null);
			frame4.setVisible(true);
		}
	}
	private class frame4_transferb implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			System.out.println(client.getCard_password());
			if(client.getCard_password().equalsIgnoreCase(frame4_password.getText())){
			out.println(4+"_"+client.getCard_id()+"_"
			+frame4_idtransfer.getText()+"_"+frame4_idtransferm.getText());
			out.flush();
			}
			else{
				frame4_idtransfer.setText("请重新输入");
			}
			boolean transfer=false;
			try {
				if(in.readLine().equalsIgnoreCase("44444"))
					transfer=true;
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			if(transfer){
				frame4.setVisible(false);
				secondframe.setVisible(true);
			}
			else{
				frame4_idtransfer.setText("请重新输入");
			}
			
		}
		
	}
	//修改密码5监听器
	private class xgmm implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			frame5_password1.setText("请输入本账户当前密码");
			frame5_password2.setText("请输入本账户修改密码");
			frame5_password3.setText("请再次输入密码");
			secondframe.setVisible(false);
			frame5.update(null);
			frame5.setVisible(true);
		}
		
	}
	private class frame5_changeb implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			if(client.getCard_password().equalsIgnoreCase(frame5_password1.getText())
					&&frame5_password2.getText().equalsIgnoreCase(frame5_password3.getText())){
				out.println(5+"_"+client.getCard_id()+"_"+"_"+frame5_password2.getText());
				out.flush();
			}
			else{
				frame5_password3.setText("两次输入不一致");
			}
			try {
				if(in.readLine().equalsIgnoreCase("55555")){
					frame5.setVisible(false);
					mainframe.setVisible(true);
				}
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
		
	}
	private class end implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			out.println(6+"_");
			out.flush();
			System.exit(0);
		}
		
	}
//贷款界面监听器7
	private class frozen implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			secondframe.setVisible(false);
			frame7_id1.setText("请输入您的账户");
			frame7_balance.setText("请输入您的余额");
			frame7_password3.setText("请输入您的密码");
			frame7_loan.setText("请输入您的贷款金额");
			frame7.update(null);
			frame7.setVisible(true);
		}
		
	}
	private class frame7_loanb implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			if((Double.valueOf(frame7_loan.getText()))<50000){
				frame7.setVisible(false);
				secondframe.setVisible(true);
				out.println(7+"_"+client.getCard_id()+"_"+frame7_loan.getText());
				out.flush();
			}
			else{
				frame7_loan.setText("对不起您的信用等级不足以贷款"+frame7_loan.getText());
			}
		}
		
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值