最近要写一个关于java的实验,实验内容如下:
1.定义一个抽象的银行卡类,含有基本属性,并定义有关的处理方法,且分别定义含有借记卡、信用卡类的方法。并定义一个透支接口,信用卡可以透支。
2设计取款、透支异常。
3.设计一个操作界面,对此进行处理。

总的来说,题目不难,关于操作页面可以使用命令行或者图形界面,这里为了提前学习便进入到图形界面的学习,这里的图形设计起来需要一定的时间,当然在图形设计上面最大的障碍就是如何进行操作,这里就是涉及到了图形的事件响应了,一般来说可以使用监听器来操作
当然本次的UI界面设计得比较一般,对于很多方面没有进行深入的研究,总之,只是桌面开发的入门菜啦!不过在这里还有连接数据库也没有时间设计了,故没有很好的登陆操作,这些也都比较好弄。
入门毕竟是入门了,也不需要讲究太多了,关键去实现响应和监听器的操作
先放图:
登录界面:


下面所有java文件可以单独写出,不用全部写在Main中。
本次的主函数
Main.java

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class Main{public static void main(String[] args){//loginJFrame f=new loginJFrame();try{new MainUI();}catch(Exception ex){ex.printStackTrace();}}
}

介绍三个类
BankCard.java

abstract class BankCard {/*基本属性*/String cardNumber;String userName;String idNumber;String password;double balance;/*** 构造方法* 这里提供卡号构造、身份号构造方法,注意构造仅是银行卡的生成而非业务内容。*/public BankCard(){}BankCard(String cardNumber){this.cardNumber=cardNumber;}BankCard(String idNumber,String uerName){this.idNumber=idNumber;this.userName=userName;}/*** 常规业务处理方法* 设置方法* 1.存款 2.取款  3.修改密码*/void  deposit(double balance){this.balance+=balance;}void withdraw(double balance){this.balance-=balance;}void revisePassword(String password){this.password=password;}/*** 查询方法* 1.查询余额 2.查询密码*/double checkBalance(){return balance;}String checkPassword(){return password;}public String toString(){return cardNumber;}
}

DebitCard.java

import javax.swing.*;
class getMoneyException extends Exception{String s;public getMoneyException(){s="卡上余额不足";}public String toString(){return s;}
}public class DebitCard extends BankCard{/*基本属性*/String cardNumber;String userName;String idNumber;String password;double balance;/*** 设置与查询方法同抽象类故不再书写,直接继承了,* 但是注意初始化必须要完成,否则会出现错误。*/public DebitCard(){}DebitCard(String cardNumber){this.cardNumber=cardNumber;}DebitCard(String idNumber,String uerName){this.idNumber=idNumber;this.userName=userName;}void  deposit(double balance){this.balance+=balance;}/*** 判断取款信息并重写BankCard中取款方法* @throws getMoneyException*/void judgeBalance() throws getMoneyException{if(this.balance<0) throw new getMoneyException();}void withdraw(double balance){this.balance-=balance;try{judgeBalance();}catch(getMoneyException ex){JOptionPane.showMessageDialog(null,"余额不足请重新输入,并且取出无效");this.balance+=balance;}}}

CreditCard.java

import javax.swing.*;
interface Overdraft {/*** 写透支方法,注意接口普遍默认是抽象类* 这里的透支返回一个bool值,默认是不可以透支的*/default boolean isOverdraft(){return false;}
}class OverdraftException extends Exception{String s;public OverdraftException(){s="超过最高信用限额(20000万元)";}public String toString(){return s;}
}public class CreditCard extends BankCard implements Overdraft{/*基本属性*/String cardNumber;String userName;String idNumber;String password;double balance;/*** 设置与查询方法同抽象类故不再书写,直接继承了,* 但是注意初始化必须要完成,否则会出现错误。*/public CreditCard(){}CreditCard(String cardNumber){this.cardNumber=cardNumber;}CreditCard(String idNumber,String uerName){this.idNumber=idNumber;this.userName=userName;}public boolean isOverdraft(){return true;}/*** 设置透支方法*/void judgeOverdraft() throws OverdraftException{if(this.balance>20000) throw new OverdraftException();}void setOverdraft(double balance) {this.balance+=balance;try{judgeOverdraft();}catch(OverdraftException ex){JOptionPane.showMessageDialog(null,"透支超过2万元,透支无效");this.balance+=balance;}}}

接着设计UI 界面,这里分为如下的步骤,先是定义总的ui图,就是登陆与注册界面,然后调用按钮的方法并自己重写一个接口,再设计借记卡、信用卡的ui界面。
下面是ui文件:
MainUI.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;public class MainUI extends JFrame {Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();final int width = 500;final int height = 300;private static JTextField utext;private static JTextField ptext;private static JFrame jf;public MainUI(){int i=0,j=0;JPanel jPanel = new JPanel();JPanel jPanelt = new JPanel();JButton register = new JButton("登录");JButton logon = new JButton("注册");JLabel text1 = new JLabel("=欢迎使用银行卡系统=");JLabel username = new JLabel("用户名");JLabel password = new JLabel("密    码");JTextField nametext = new JTextField(15);JTextField passtext = new JPasswordField(15);JComboBox sel = new JComboBox();Box hbox = Box.createHorizontalBox();sel.addItem("借记卡");sel.addItem("信用卡");sel.setSelectedIndex(-1);hbox.add(register);hbox.add(Box.createHorizontalStrut(50));hbox.add(sel);hbox.add(Box.createHorizontalStrut(50));hbox.add(logon);DebitAction user1=new DebitAction();CreditAction user2=new CreditAction();sel.addItemListener(new ItemListener() {@Override//下拉框添加监听public void itemStateChanged(ItemEvent e) {if(e.getStateChange()==ItemEvent.SELECTED){if(sel.getSelectedItem()=="借记卡"){register.removeActionListener(user2);logon.removeActionListener(user2);register.addActionListener(user1);//logon.addActionListener(user1);}if(sel.getSelectedItem()=="信用卡"){register.removeActionListener(user1);logon.removeActionListener(user1);register.addActionListener(user2);logon.addActionListener(user2);}}}});Box ubox = Box.createHorizontalBox();ubox.add(username);ubox.add(Box.createHorizontalStrut(10));ubox.add(nametext);Box pbox = Box.createHorizontalBox();pbox.add(password);pbox.add(Box.createHorizontalStrut(10));pbox.add(passtext);text1.setFont(new Font("宋体",Font.BOLD,15));jPanelt.add(text1,BorderLayout.CENTER);Box box = Box.createVerticalBox();box.add(Box.createVerticalStrut(30));box.add(jPanelt);box.add(Box.createVerticalStrut(30));box.add(ubox);box.add(Box.createVerticalStrut(20));box.add(pbox);box.add(Box.createVerticalStrut(35));box.add(hbox);jPanel.setBackground(Color.pink);jPanel.add(box);add(jPanel);setTitle("银行卡使用");setBounds((screenSize.width-width)/2,(screenSize.height-height)/2,width,height);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(false);setVisible(true);utext=nametext;ptext=passtext;jf=this;}public static JFrame GetMainUI(){return jf;}public static JTextField getUtext(){return utext;}public static JTextField getPtext(){return ptext;}
}

DebitCardUI.java

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** 此处是针对于借记卡所言的*/
public class DebitCardUI extends JFrame{public DebitCardUI(){JLabel a=new JLabel("存款");JLabel b=new JLabel("取款");JTextField ta=new JTextField(10);JTextField tb=new JTextField(10);JButton c=new JButton("查询余额");JButton d=new JButton("提交");DebitCard ac=new DebitCard();/*** 设置按钮响应,*/d.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubdouble m=Double.parseDouble(ta.getText());double ct=Double.parseDouble(tb.getText());ac.deposit(m);ac.withdraw(ct);}});/*** 查询按钮并且打出提示框*/c.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString s=Double.toString(ac.balance);JOptionPane.showMessageDialog(null,s);}});JPanel ja=new JPanel();ja.add(a);ja.add(ta);ja.add(b);ja.add(tb);ja.add(c);ja.add(d);//ja.add(c);ja.add(tc);add(ja);setSize(500,300);setVisible(true);}
}

CreditCardUI.java

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** 此处是针对于信用卡所言的*/
public class CreditCardUI extends JFrame{public CreditCardUI(){JLabel a=new JLabel("存款");JLabel b=new JLabel("透支");JTextField ta=new JTextField(10);JTextField tb=new JTextField(10);JButton c=new JButton("查询余额");JButton d=new JButton("提交");CreditCard ac=new CreditCard();/*** 设置按钮响应,*/d.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubdouble m=Double.parseDouble(ta.getText());double ct=Double.parseDouble(tb.getText());ac.deposit(m);ac.setOverdraft(ct);}});/*** 查询按钮并且打出提示框*/c.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString s=Double.toString(ac.balance);JOptionPane.showMessageDialog(null,s);}});JPanel ja=new JPanel();ja.add(a);ja.add(ta);ja.add(b);ja.add(tb);ja.add(c);ja.add(d);//ja.add(c);ja.add(tc);add(ja);setSize(500,300);setVisible(true);}
}

调用ActionListener方法
CreditCardAction.java


import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;public class CreditAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent actionEvent) {// TODO Auto-generated method stubif(actionEvent.getActionCommand()=="登录"){new CreditCardUI();//MainUI.GetMainUI().dispose();//return;}}}

DebitAction.java

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class DebitAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent actionEvent) {// TODO Auto-generated method if(actionEvent.getActionCommand()=="登录"){new DebitCardUI();//MainUI.GetMainUI().dispose();//return;}}
}

Java小型图形界面设计(银行卡类)相关推荐

  1. 【Java】图形界面设计实战练习

    图形化界面设计(GUI)实战练习 学生成绩管理系统实战练习之登陆界面 学生成绩管理系统 2.0(图形界面) 实例一 代码: package Gui;import javax.swing.*; impo ...

  2. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

    用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等 ...

  3. JAVA图形界面设计

    图形界面设计 1 Java Swing 概述 图形化界面(Graphics User Interface,GUI)是指采用图形方式显示的计算机操作用户界面. 通过图形化界面,用户和程序之间可以方便地进 ...

  4. java复习之图形界面设计

    图形界面设计 AWT和Swing 组件 顶层容器 JFrame类常用的构造方法 内容窗格 面板 JPanel类常用的构造方法 AWT滚动条组件 标签 按钮 JButton构造方法 JButton类常用 ...

  5. java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入

    那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧: JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel ...

  6. 【JAVA】基本图形界面设计

    [JAVA]基本图形界面设计 基本知识点 JAVA中的组件包: 1:采用java.awt.*(abstract Windowing Toolkit) 2:采用javax.swing.* 特点: 前者: ...

  7. java转成图形界面_【转】java图形界面设计(AWT)

    [转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1.       基本的java Frame操作. Java的图形界面的类主要包括AW ...

  8. Java实验二 图形界面设计

    学院 计算机科学与教育软件学院 年级.专业.班 网络16* 姓名 卟咚君 学号 1606100*** 实验课程名称 Java语言实验 成绩 实验项目名称 图形界面设计 指导老师 ** 一.实验目的 • ...

  9. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

最新文章

  1. 17条避坑指南:一份来自谷歌的数据库经验贴
  2. 算法学习:后缀数组 height的求取
  3. php htmlentities函数的问题
  4. UA MATH523A 实分析3 积分理论16 截口与单调类、特征函数的Fubini定理
  5. python期末考试编程题_智慧树知到_Python程序设计基础_期末考试答案
  6. [SAP ABAP开发技术总结]权限对象检查
  7. 2020-11-04
  8. JavaWeb——Servlet(入门必备,web请求与响应的底层)
  9. 计算机方向关键字,从计算机的角度理解volatile关键字
  10. [转载] IoT设备WiFi配网及现状
  11. wampserver php 目录,小常识-WAMPServer自定义根目录
  12. Android开源项目以及开源库集合(持续更新中)
  13. 可编程中控 c 语言,LG-PGMIII可编程中控
  14. 2020届校招算法岗面经汇总
  15. Zipf's law分析
  16. 图书管理系统模块,通过模糊查询实现查找图书的功能
  17. 闻道有先后,术业有专攻
  18. Evolutionary Computing: 3. Genetic Algorithm(2)
  19. 为什么Mendix重视私有化部署
  20. 群晖搭建照片文件服务器,使用群晖Moments管理家庭照片的解决方案

热门文章

  1. 单反相机哪个牌子好?入门单反相机推荐?佳能单反相机推荐
  2. 计算机正在更新,计算机打开时“致命错误c0000034正在应用更新”的解决方案
  3. 目标检测算法——YOLOV7——网络结构
  4. 男儿有泪不轻弹,只是未遇感动事
  5. carlife高速上显示服务器吗,如何把手机导航显示在汽车导航屏上?
  6. 设计和实现无人机控制通讯协议:集成航向、俯仰、横滚、高度、灯光和相机控制
  7. Python发送网络请求(requests)
  8. 科比:向火箭脱帽致敬!
  9. 卑微小吴励志写博客第2天
  10. 常用邮箱POP3和SMTP服务器 设置