Java程序设计(北京大学MOOC)

  Java程序设计课程,使用eclipse集成开发环境 和 editpuls编辑器(java配置)

  第一讲 Java语言与面向对象设计

  1、Java语言,从C++发展而来,是C++的简化版,简单易学纯面向对象,与平台无关,支持多线程,安全稳定

   Java拥有丰富的类库,可以面向对象的应用开发、各类网络应用程序的开发,Internet的系统管理,数据库操作等等

  2、类是具有共同属性和行为的对象的集合,类是对象的抽象,对象是类的实例

  第二讲 简单的Java程序

  Java文件名要与public类的类名一致,一个文件只能有一个public类

  applet程序(界面库 javaFx,swing(JFrame,JApplet,JPanel),awt( 图形库graphics ))

package week1.applet;

import java.awt.Graphics;
import javax.swing.JApplet;

public class SayHelloApplet extends JApplet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public void paint(Graphics g){
        g.drawString("Hello World",    20, 20);
    }

}
View Code

  命令行下设定path和classpath:set path是命令(javac及Java)的路径,set classpath是所要引用的类库的路径

  第三讲 数据运算、流控制和数组

  Java7以上,整形常量可以用二进制数表示,以0b或0B开头

  Java浮点型常量默认为double类型,要声明常量为float,需要在数字后面加f或F

  Java中没有无符号数,可以用long来处理无符号整数

  课程代码

  1、计算字符串中无重复字符的子串长度 

package lengthOfLongestSubstring;

import java.util.Scanner;
public class Main
{
    int lengthOfLongestSubstring(String s) 
    {
        int size = s.length();/*字符串长度*/
        
        int[] dict = new int[256];
        for(int i=0; i<256; ++i)
            dict[i] = -1;
        
        int maxlen = 0;/*最大无重复字符子串长度*/
        int start = -1;/*无重复字符子串开始的位置*/
        
        for (int i = 0; i<size; ++i) 
        {               
            if (dict[s.charAt(i)] > start) /*一旦字符有了位置记录 说明字符出现重复*/
            {
                start = dict[s.charAt(i)]; /*把该字符上次出现的位置 记录为字符串开始位置*/                  
            }
            dict[s.charAt(i)] = i; /*记录字符出现的位置 更新*/ 
            maxlen = maxlen>i-start? maxlen: i-start;/*实时计算无重复字符串长度*/
        }
        return maxlen;/*返回最大无重复字符串长度*/
    }

    public static void main(String[] args)
    {
        Main m = new Main();
        Scanner in = new Scanner(System.in);
        String s = in.next();        
        System.out.println(m.lengthOfLongestSubstring(s));
        in.close();
    }
}
View Code

  编程题代码,仅供参考

  第二讲 简单的Java程序  

package week2;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        /*
         * 3^3 + 4^3 + 5^3 = 6^3
        int sum = 0;
        final int first = 3;
        final int last = 5;
        final int result = 6;
        for (int x = first; x <= last; ++x) {
            sum += x * x * x;
        }
        if (sum == result * result * result)
            System.out.print("yes!");
        else
            System.out.print("No!");
        */
        
        /*
         * 6^3 + ... + 69^3 = 180^3
        int sum = 0;
        final int first = 6;
        final int last = 69;
        final int result = 180;
        for (int x = first; x <= last; ++x) {
            sum += x * x * x;
        }
        if (sum == result * result * result)
            System.out.print("yes!");
        else
            System.out.print("No!");
        */
        
        //更多的情况
        int sum = 0;
        int first = 1;
        final int last = 1000;
        for (int i = 1; i < last / 2; ++i) {
            first = i;
            sum = 0;
            for (int x = first; x <= last; ++x) {
                sum += x * x * x;
                for (int k = x + 1; k <= last; ++k) {
                    if (sum == k * k * k) {
                        System.out.printf("first=%d,...", first);
                        System.out.printf("last=%d,", x);
                        System.out.printf("result=%d\n", k);
                    }
                }
            }//end of for
        }//end of for
    }//end of main
}// end of class
View Code
public class Test 
{
    public static void main(String[] args) 
    {
        final int last = 1000;
        for (int first = 1; first < last / 2; ++first) {
            int sum = 0;
            for (int x = first; x <= last; ++x) {
                sum += x * x * x;
                int k = x + 1;
                for( ; k * k * k < sum && k <= last; ++k)
                    ;
                if (sum == k * k * k) {
                    System.out.printf("first=%d,...", first);
                    System.out.printf("last=%d,", x);
                    System.out.printf("result=%d\n", k);
                }
            }
        }
    }
}
View Code

  第三讲 数据运算、流控制和数组

package week3;

public class Prime {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] prime = new int[100]; // 保存素数
        boolean[] is_prime = new boolean[100]; // true表示i是素数
        int p = 0;

        for (int i = 0; i < 100; i++)// 初始化
        {
            is_prime[i] = true;
        }

        is_prime[0] = is_prime[1] = false; // 0,1不是素数

        for (int i = 2; i < 100; i++) {
            if (is_prime[i]) //
            {
                prime[p++] = i; // 计算素数的个数,也记录下了素数
                for (int j = 2 * i; j < 100; j += i)// 除掉了i的倍数的数字
                {
                    is_prime[j] = false;
                }
            }
        }

        for (int pr : prime) {
            if (pr > 0)
                System.out.print(pr + " ");
        }
    }
}
View Code

  第四讲 类、包和接口

package week4;

//接口
interface Flyable {
    void fly();// 默认public abstract
}

// 抽象类
abstract class Anmial implements Flyable {

    @Override // 覆盖
    public void fly() {
        System.out.println("开始飞行");
        System.out.println("飞行结束");
    }
}

public class Bird extends Anmial {
    private String bird;

    // static final字段
    protected static final int distance = 100;

    // setter
    public void setter(String bird) {
        this.bird = bird;
    }

    // getter
    public String getter() {
        return bird;
    }

    // 飞翔
    @Override // 覆盖
    public void fly() {
        System.out.println(this.bird + "开始飞行");
        System.out.println("开始" + distance + "米飞行中");
        System.out.println(getter() + "飞行结束\n");// 使用getter
    }

    // main函数
    public static void main(String[] args) {
        System.out.println("飞翔接力正式开始!\n");

        String bir1 = "bird1";
        String bir2 = "bird2";

        Bird bird1 = new Bird();
        bird1.setter(bir1);
        bird1.fly();

        Bird bird2 = new Bird();
        bird2.setter(bir2);
        bird2.fly();

        System.out.println("飞翔接力结束!\n");
    }
}
View Code

  第五讲 深入理解Java语言 

package week5;
/**
 *  一个简单的新闻事件侦听演示程序
 * @author tds
 * @author 修改者:金色的省略号
 */

public class NewsDemo {
    public static void main(String[] args) {
        
        //模拟有一家新闻社
        NewsAgency bbc = new NewsAgency("BBC");
        //订阅该社的新闻
        bbc.addListener(new MyListener());
        
        //TODO 请在这里再加入一个Listener
        //1.匿名类
        bbc.addListener(new Listener(){
            //当接收到消息后,进行一些显示
            public void newsArrived(NewsEvent e){
                if( e.level>5) System.out.println("warning :");
                System.out.println("please note," + e.text + " happed!");
            }
        });
        //2.lambda表达式
        bbc.addListener((NewsEvent e)->
            {
                if( e.level>5) System.out.println("warning :");
                System.out.println("please note," + e.text + " happed!");
            }
        );
        
        //新闻社启动其工作流程
        bbc.start();                
    }
}


/**
 * 事件信息
 */
class NewsEvent{
    Object source;  //事件来源
    String text;    //事件内容
    int level;      //事件级别
    NewsEvent(Object source, String text, int level){
        this.source=source;
        this.text = text;
        this.level = level;        
    }
}
interface Listener{
    void newsArrived(NewsEvent e);
}

/**
 * 新闻机构
 */
class NewsAgency {
    String name; //机构名
    public NewsAgency(String name) {
        this.name = name;        
    }
    Listener[] listeners = new  Listener[100]; //侦听者(订阅者)
    int listenerCnt = 0; //已有的订阅者
    
    //加入一个订阅者
    void addListener(Listener oneListener){
        if(listenerCnt<listeners.length){
            listeners[listenerCnt] = oneListener;
            listenerCnt++;
        }        
    }
    
    //模拟一个事件发生,并通知所有的订阅者
    void start(){
        NewsEvent event = new NewsEvent("Mr. Joan", "Bombing", 9 );
        
        for(int i=0; i<listenerCnt; i++) {
            listeners[i].newsArrived(event);
        }
        
    }
}

/**
 * 实现一个订阅者
 */
class MyListener implements Listener{
    //当接收到消息后,进行一些显示
    public void newsArrived(NewsEvent e){
        if( e.level>5) System.out.println("warning :");
        System.out.println("please note," + e.text + " happed!");
    }
}

  第六讲 异常处理

package week6;

//自定义一个异常类,继承自系统的异常类Exception
class MyException extends Exception {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    // 构造方法
    public MyException(String msg) {
        super(msg);
    }
}

// 使用自定义的异常
public class TestMyException {
    // 在一个函数中抛出异常
    public static void MyExc() throws MyException {
        throw new MyException("MyExc() method occurs an exception! ");
    }

    // 调用这个函数并捕获异常。
    public static void main(String[] args) {
        try {
            TestMyException.MyExc();
        } catch (MyException e1) {
            System.out.println("MyException: " + e1.getMessage());
            // e1.printStackTrace();//显示调用堆栈的跟踪信息
        }
    }
}
View Code

  第七讲 工具类及常用算法

package week7;

import java.util.ArrayList;
import java.util.Scanner;

//账户类
class account {
    private String username;
    private String password;
    private double balance;

    // 构造
    public account(String _username, String _password, double _balance) {
        username = _username;
        password = _password;
        balance = _balance;
    }

    // 取款
    void withdraw(double _balance) {
        if (balance >= _balance) {
            balance -= _balance;
            System.out.println("当前余额是:" + balance);
        } else {
            System.out.println("余额不足");
        }
    }

    // 存款
    void deposit(double _balance) {
        balance += _balance;
        System.out.println("当前余额是:" + balance);
    }

    String getUsername() {
        return username;
    }

    String getUpassword() {
        return password;
    }

    double getBalance() {
        return balance;
    }
}

class Mybank {
    private String bankName;
    // 账户列表
    private ArrayList<account> arr;

    // 构造
    Mybank(String _bankName) {
        setBankName(_bankName);
        arr = new ArrayList<>();
    }

    // 开户
    void openAccount() {
        Scanner in = new Scanner(System.in);
        while (true) {
            System.out.println("请输入用户名、密码、开户金额:");
            account a = new account(in.next(), in.next(), in.nextDouble());
            arr.add(a);
            System.out.println("继续,请输入y,退出输入n");
            String s = in.next();
            if (s.equals("n"))
                break;
        }
        //in.close();  //为何不能关闭?
    }

    // 取款
    void drawAccount() {
        while (true) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入用户名、密码及取款数额:");
            String _username = in.next();
            String _password = in.next();
            double _balance = in.nextDouble();
            boolean b = true;
            for (account a : arr) {
                if (a.getUsername().equals(_username) && a.getUpassword().equals(_password)) {
                    a.withdraw(_balance);
                    b = false;
                    break;
                }
            }
            if (b)
                System.out.println("用户名或密码错误!");
            System.out.println("继续取款,请输入y,退出输入n");
            String s = in.next();
            if (s.equals("n"))
                break;
            in.close();
        }
    }

    // 存款
    void depositAccount() {
        while (true) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入用户名、密码及存款数额:");
            String _username = in.next();
            String _password = in.next();
            double _balance = in.nextDouble();
            boolean b = true;
            for (account a : arr) {
                if (a.getUsername().equals(_username) && a.getUpassword().equals(_password)) {
                    a.deposit(_balance);
                    b = false;
                    break;
                }
            }
            if (b)
                System.out.println("用户名或密码错误!");
            System.out.println("继续存款,请输入y,退出输入n");
            String s = in.next();
            if (s.equals("n"))
                break;
            in.close();
        }
    }

    // 查询
    void checkAccount() {
        while (true) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入用户名、密码:");
            String _username = in.next();
            String _password = in.next();
            boolean b = true;
            for (account a : arr) {
                if (a.getUsername().equals(_username) && a.getUpassword().equals(_password)) {
                    System.out.println("你的账户余额:" + a.getBalance());
                    b = false;
                    break;
                }
            }
            if (b)
                System.out.println("用户名或密码错误!");
            System.out.println("继续查找,请输入y,退出输入n");
            String s = in.next();
            if (s.equals("n"))
                break;
            in.close();
        }
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }
}

// 测试类
public class test {

    public static void main(String[] args) {
        Mybank m = new Mybank("我的银行");
        Scanner in = new Scanner(System.in);
        // 测试面板
        label: while (true) {
            System.out.println("开户请按1,存款请按2,取款请按3," + "查询请按4,退出请按5");            
            String s = in.next();
            switch (s) {
            case "1":
                m.openAccount();
                break;
            case "2":
                m.depositAccount();
                break;
            case "3":
                m.drawAccount();
                break;
            case "4":
                m.checkAccount();
                break;
            case "5":
                break label;
            }            
        }
        in.close();
    }
}
View Code

  第八讲 多线程

package week8;

import java.net.URL;
import java.io.*;
import java.util.Date;

class ThreadDownload 
{
    public static void main(String[] args)
            throws IOException
    {
        final URL[] urls = {
            new URL("https://www.pku.edu.cn"),
            new URL("https://www.baidu.com"),
            new URL("https://www.sina.com.cn"),
            new URL("https://www.dstang.com")
        };
        final String[] files = {
            "pku.htm", 
            "baidu.htm",
            "sina.htm", 
            "study.htm",
        };
        for(int i=0; i<urls.length; i++){
            final int idx = i;
            new Thread( ()-> {
                try{
                    System.out.println( urls[idx]);
                    download( urls[idx], files[idx]);
                }catch(Exception ex){
                    ex.printStackTrace();
                }
            }).start();    
        }
        Thread t = new MyThread();
        t.setDaemon(true);
        t.start();
    
        
        
    }
    static void download( URL url, String file)
        throws IOException
    {
        try(InputStream input = url.openStream();
            OutputStream output = new FileOutputStream(file))
        {
            byte[] data = new byte[1024];
            int length;
            while((length=input.read(data))!=-1){
                output.write(data,0,length);
            }
        }
    }
    
}

class MyThread extends Thread {
    double x;
    public void run() {    
        while(true)
        {
            x += new Date().getTime();    
            print();
        }    
    }
    public void print() {
        System.out.println(x);
    }
}
View Code

  第九讲  流、文件及基于文本的应用

package week9;

import java.io.*;
import java.awt.*;
//import java.awt.event.*;
import javax.swing.*;
import java.util.List;
import java.util.ArrayList;

public class Recite extends JFrame {
    public Recite() {
    }
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JLabel lblWord = new JLabel("word");
    JLabel lblMeaning = new JLabel("meaning");

    public void init() {
        setSize(400, 100);
        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(lblWord);
        getContentPane().add(lblMeaning);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    List<String> words = new ArrayList<>();
    List<String> meanings = new ArrayList<>();
    int current = 0;

    public void start() {
        new Thread(() -> {
            try {
                readAll();
            } catch (IOException ex) {
            }
            new javax.swing.Timer(1000, (e) -> {
                lblWord.setText(words.get(current));
                lblMeaning.setText(meanings.get(current));
                current++;
            }).start();
        }).start();
    }

    public void readAll() throws IOException {
        String fileName = "College_Grade4.txt";
        String charset = "GB2312";
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), charset));
        String line;
        while ((line = reader.readLine()) != null) {
            line = line.trim();
            if (line.length() == 0)
                continue;
            int idx = line.indexOf("\t");
            words.add(line.substring(0, idx));
            meanings.add(line.substring(idx + 1));
        }
        reader.close();
    }

    public static void main(String[] args) {
        Recite f = new Recite();
        f.init();
        f.start();
    }
}
View Code

  College_Grade4.txt文件要放在工程目录下

  第十讲 图形用户界面

package week10;

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Dimension;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.awt.event.ActionEvent;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JTextArea;

/**
 * @Title:BMI计算器
 * @author 金色的省略号
 * @Description:程序可以计算国际标准和国内标准BMI 体重、身高没有输入,或输入错误,会有错误提示输出
 */

public class BMI extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 3166024052981905555L;
    /**
     * BMI Calculator v1.001
     */
    private String DomesticStandardsBMI;
    private String internationalStandardsBMI;
    private double BMI;
    private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;
    private JTextArea textArea;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BMI frame = new BMI();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public BMI() {
        //
        setFont(new Font("楷体", Font.BOLD, 21));
        setTitle("\u4F53\u91CD\u6307\u6570\u8BA1\u7B97\u5668");
        setBounds(new Rectangle(200, 200, 300, 300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 505, 321);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        // 身高标签
        JLabel lblNewLabel = new JLabel("\u8BF7\u8F93\u5165\u8EAB\u9AD8(m)");
        lblNewLabel.setFont(new Font("楷体", Font.BOLD, 18));
        lblNewLabel.setSize(new Dimension(4, 0));
        lblNewLabel.setBounds(37, 87, 182, 36);
        contentPane.add(lblNewLabel);
        // 体重标签
        JLabel lblkg = new JLabel("\u8BF7\u8F93\u5165\u4F53\u91CD(kg)");
        lblkg.setFont(new Font("楷体", Font.BOLD, 18));
        lblkg.setSize(new Dimension(4, 0));
        lblkg.setBounds(37, 10, 182, 36);
        contentPane.add(lblkg);
        // TextField
        textField = new JTextField();
        textField.setBackground(Color.CYAN);
        textField.setFont(new Font("楷体", Font.BOLD, 21));
        textField.setBounds(37, 42, 420, 47);
        contentPane.add(textField);
        textField.setColumns(10);
        // textField_1
        textField_1 = new JTextField(2);
        textField_1.setBackground(Color.CYAN);
        textField_1.setFont(new Font("楷体", Font.BOLD, 21));
        textField_1.setColumns(10);
        textField_1.setBounds(37, 122, 420, 47);
        contentPane.add(textField_1);
        // 按钮btnUtton
        JButton btnUtton = new JButton("OK");
        btnUtton.setFont(new Font("楷体", Font.BOLD, 21));
        btnUtton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                // 获取BMI
                getBMI();
                // 输出BMI
                DecimalFormat df = new DecimalFormat("0.00");
                String bmi = "体质指数:" + df.format(BMI) + "\n";
                if (BMI > -0.0001 && BMI < 0.0001) {
                    bmi = "";
                }
                textArea.setLineWrap(true);
                textArea.setText(DomesticStandardsBMI + " " + internationalStandardsBMI + "\n" + bmi);
            }
        });
        btnUtton.setBounds(374, 193, 83, 65);
        contentPane.add(btnUtton);
        // textArea
        textArea = new JTextArea();
        textArea.setFont(new Font("楷体", Font.BOLD, 21));
        textArea.setBackground(Color.CYAN);
        textArea.setBounds(37, 193, 342, 65);
        contentPane.add(textArea);
    }

    public void getBMI() {
        // 判断输入是否正确
        String w = textField.getText();
        String h = textField_1.getText();
        if (!w.matches("^[0-9]+\\.?[0-9]+$") || !h.matches("^[0-9]+[.]?[0-9]+$"))

        {
            BMI = 0.0;
            DomesticStandardsBMI = "请正确输入:";
            internationalStandardsBMI = "体重和身高。";
            return;
        }
        // 计算BMI
        double weight = Double.valueOf(textField.getText());
        double high = Double.valueOf(textField_1.getText());
        BMI = weight / Math.pow(high, 2);
        if (BMI < 18.5) {
            internationalStandardsBMI = "国际标准:偏瘦";
            DomesticStandardsBMI = "国内标准:偏瘦";
        } else if (BMI < 25) {
            internationalStandardsBMI = "国际标准:正常";
            if (BMI < 24) {
                DomesticStandardsBMI = "国内标准:正常";
            } else {
                DomesticStandardsBMI = "国内标准:偏胖";
            }
        } else if (BMI < 30) {
            internationalStandardsBMI = "国际标准:偏胖";
            if (BMI < 28) {
                DomesticStandardsBMI = "国内标准:偏胖";
            } else {
                DomesticStandardsBMI = "国内标准:肥胖";
            }
        } else {
            internationalStandardsBMI = "国际标准:肥胖";
            DomesticStandardsBMI = "国内标准:肥胖";
        }
    }
}
View Code

  第十一讲 网络、多媒体和数据库编程

package week11;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Dimension;
import javax.swing.JTextField;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JTextArea;
//MyBank
public class MyBank extends JFrame{
     
    private Bank bank = new Bank("我的银行");
    private String selectBusiness = "开户";
    private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;
    private JTextArea textArea;
  
    public static void main(String[] args) {
          EventQueue.invokeLater(new Runnable() {
              public void run() {
                  try {
                        MyBank frame = new MyBank();
                      frame.setVisible(true);
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          });
     }
     
    public MyBank() {
        //
        setFont(new Font("楷体", Font.BOLD, 21));
        setTitle("银行模拟系统");
        setBounds(new Rectangle(200, 200, 300, 300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 458, 282);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        //
        JLabel lblNewLabel = new JLabel("请输入密码");
        lblNewLabel.setFont(new Font("楷体", Font.BOLD, 14));
        lblNewLabel.setSize(new Dimension(4, 0));
        lblNewLabel.setBounds(216, 22, 81, 36);
        contentPane.add(lblNewLabel);
        //
        JLabel lblkg = new JLabel("请输入账号");
        lblkg.setFont(new Font("楷体", Font.BOLD, 14));
        lblkg.setSize(new Dimension(4, 0));
        lblkg.setBounds(10, 22, 81, 36);
        contentPane.add(lblkg);
        //TextField
        textField = new JTextField();
        textField.setBackground(Color.CYAN);
        textField.setFont(new Font("楷体", Font.BOLD, 21));
        textField.setBounds(92, 20, 114, 36);
        contentPane.add(textField);
        textField.setColumns(10);
        //textField_1
        textField_1 = new JTextField(2);
        textField_1.setBackground(Color.CYAN);
        textField_1.setFont(new Font("楷体", Font.BOLD, 21));
        textField_1.setColumns(10);
        textField_1.setBounds(298, 20, 114, 36);
        contentPane.add(textField_1);
         
        //按钮btnUtton
        JButton btnUtton = new JButton("OK");
        btnUtton.setFont(new Font("楷体", Font.BOLD, 21));
        btnUtton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {      
     
                String s = selectBusiness;
                String _username = textField.getText();
                String _password = textField_1.getText();    
               // textField_1.setText("******");
                double _balance = 0.0;
                String d = "";
                if(textArea.getText().matches("^\\d+(\\.\\d+)?$")){
                    _balance = Double.valueOf(textArea.getText());
                }
                else if(!s.equals("查询")){
                    d = "请清空此栏,输入金额。";
                    s = "";
                }
                
                if(_username.equals("")
                        ||_password.equals("")){
                    d = "请正确输入账号和密码。";
                    s = "";
                }
                
                switch(s)
                {
                    case "开户":
                        d = bank.openAccount(_username,_password,_balance);
                        break;
                    case "存款":    
                        d = bank.depositAccount(_username,_password,_balance);break;
                    case "取款":             
                        d = bank.drawAccount(_username,_password,_balance);break;
                    case "查询":
                        d = bank.checkAccount(_username,_password); break;          
                    case "":
                        break;    
                }         
                textArea.setText(d); 
                
            }
        });
        btnUtton.setBounds(356, 138, 62, 46);
        contentPane.add(btnUtton); 
        //textArea  
        textArea = new JTextArea();
        textArea.setFont(new Font("楷体", Font.BOLD, 21));
        textArea.setBackground(Color.CYAN);
        textArea.setBounds(10, 141, 344, 42);
        contentPane.add(textArea);
        //
        JLabel label = new JLabel("请选择业务");
        label.setSize(new Dimension(4, 0));
        label.setFont(new Font("楷体", Font.BOLD, 14));
        label.setBounds(10, 85, 81, 36);
        contentPane.add(label);
          
        JRadioButton rdbtnNewRadioButton = new JRadioButton("开户");
        rdbtnNewRadioButton.setBounds(102, 90, 72, 23);
        contentPane.add(rdbtnNewRadioButton);    
        rdbtnNewRadioButton.setSelected(true);
        rdbtnNewRadioButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                selectBusiness = "开户"; 
            }
        });
          
          
        JRadioButton radioButton = new JRadioButton("存款");
        radioButton.setBounds(171, 90, 72, 23);
        contentPane.add(radioButton);
        radioButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                selectBusiness = "存款";
            }
        });
          
        JRadioButton radioButton_1 = new JRadioButton("取款");
        radioButton_1.setBounds(250, 90, 63, 23);
        contentPane.add(radioButton_1);
        radioButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                selectBusiness = "取款";    
            }
        });
        
        JRadioButton radioButton_2 = new JRadioButton("\u67E5\u8BE2");
        radioButton_2.setBounds(320, 90, 62, 23);
        contentPane.add(radioButton_2);
        radioButton_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                selectBusiness = "查询";
            }
        }); 
        //ButtonGroup本身不是控件,不能放到容器里
        ButtonGroup buttonGroup = new ButtonGroup(); 
        buttonGroup.add(radioButton);
        buttonGroup.add(radioButton_1);
        buttonGroup.add(radioButton_2);
        buttonGroup.add(rdbtnNewRadioButton);
    }     
}
View Code
package week11;

import java.util.ArrayList;

public class Bank {
      private String bankName;
        //账户列表
        private ArrayList<Account> arr;
        //构造
        Bank(String _bankName)
        {
            bankName = _bankName;
            arr = new ArrayList<>();
        }
        //开户
        String openAccount(String _username,String _password,double _balance)
        {  
            String str = "";
            boolean ok = true;
            for (Account a : arr) {
//                if(a.getUsername().equals(_username)
//                        &&a.getUpassword().equals(_password)){
                if(a.isUsername(_username)
                        &&a.isPassword(_password)){    
                    ok = false;
                    break;
                }
            }
            if(ok){
                Account a = new Account(_username,_password,_balance);
                arr.add(a);
            } 
            str = "存款余额:"+_balance;
            if(!ok){
                str = "该用户已经存在。";
            }
            return str;
        }
        //取款
        String drawAccount(String _username,String _password,double _balance)
        {          
                String d = "";
                boolean b = true;
                for (Account a : arr) {
                    if(a.isUsername(_username)
                            &&a.isPassword(_password)){    
                        if(a.withdraw(_balance)){
                            d = "存款余额:" + a.getBalance();   
                        }
                        else{
                            d = "余额不足,存款余额:" + a.getBalance();
                        }
                        b=false;
                        break;
                    }
                }
                if(b)d = "用户名或密码错误!"; 
                return d;
        }
        
        //存款
        String  depositAccount(String _username,String _password,double _balance)
        {
            String d = "";
            boolean b = true;
            for (Account a : arr) {
                if(a.isUsername(_username)
                        &&a.isPassword(_password)){    
                    a.deposit(_balance);
                    d = "存款余额:" + a.getBalance();
                    b=false;
                    break;
                }
            }
            if(b)d = "用户名或密码错误!"; 
            return d;
             
        }
        //查询
        String checkAccount(String _username,String _password)
        {   
            String d = "";
            boolean b = true;
            for (Account a : arr) {
                if(a.isUsername(_username)
                        &&a.isPassword(_password)){        
                    d = "存款余额:" + a.getBalance();
                    b=false;
                    break;
                }
            }
            if(b)d = "用户名或密码错误!"; 
            return d;  
         }
}
View Code
package week11;

public class Account {
    private String username;
    private String password;
    private double balance;
    //构造
    public Account(String _username,String _password,double _balance)
    {
       username = _username;
        password = _password;
        balance = _balance;
    }
    //取款
    boolean withdraw(double _balance)
    {
        if(balance>=_balance)
        {
           balance-=_balance;
        }
        else
        {
           return false;
        }
        return true;
    }
    //存款
    void deposit(double _balance)
    {
       balance+=_balance; 
    }
    //
    double getBalance()
    {
       return balance;
    }
    //
    boolean isUsername(String str)
    {
        return username.equals(str);
    }
    //
    boolean isPassword(String str){
        return password.equals(str);
    } 
}
View Code
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图书详细描述: 本书将Java语言作为大学生的计算机程序设计入门语言,其特色是内容全面、深入浅出、辅助教材立体配套。不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计方法贯穿始终,基础性和实用性并重。本书不仅能使读者掌握Java语言,而且能够让读者对现实世界中较简单的问题及其解决方法用计算机语言进行描述。    本书既可供大专院校用作“Java语言程序设计”课程教材,也可供Java 爱好者作为入门的自学教材。 目录第1章 Java语言基础知识 1.1 Java语言与面向对象的程序设计  1.1.1 面向对象的程序设计思想  1.1.2 Java语言的特点  1.1.3 Java类库 1.2 Java程序概述  1.2.1 Java开发环境  1.2.2 Application举例  1.2.3 Applet举例  1.2.4 Servlet举例  1.2.5 JSP和JavaBean举例 1.3 基本数据类型与表达式  1.3.1 变量与常量  1.3.2 基本数据类型  1.3.3 表达式与运算符  1.3.4 类型转换 1.4 数组的概念 1.5 数组的创建和引用  1.5.1 数组的声明  1.5.2 数组的创建  1.5.3 数组元素的初始化  1.5.4 数组的引用  1.5.5 多维数组 1.6 本章小结 习题第2章 类与对象的基本概念 2.1 面向对象的程序设计方法概述  2.1.1 抽象  2.1.2 封装  2.1.3 继承  2.1.4 多态 2.2 类与对象  2.2.1 类的声明  2.2.2 对象的声明与引用  2.2.3 数据成员  2.2.4 方法成员  2.2.5 类的组织——包的概念  2.2.6 类的访问控制  2.2.7 类成员的访问控制 2.3 对象初始化和回收  2.3.1 构造方法  2.3.2 内存回收技术 2.4 应用举例  2.4.1 声明BankAccount类  2.4.2 声明toString()方法  2.4.3 声明存取款方法  2.4.4 使用DecimalFormat类  2.4.5 声明类方法生成特殊的实例  2.4.6 声明类变量 2.5 UML简介  2.5.1 类图  2.5.2 对象图 2.6 本章小结 习题第3章 类的方法 3.1 方法的控制流程  3.1.1 if选择结构  3.1.2 switch选择结构  3.1.3 for循环结构  3.1.4 while语句  3.1.5 do while语句  3.1.6 break语句  3.1.7 continue语句 3.2 异常处理简介  3.2.1 异常处理的意义  3.2.2 错误的分类  3.2.3 异常的处理  3.2.4 生成异常对象  3.2.5 声明自己的异常类 3.3 方法的重载 3.4 本章小结 习题第4章 类的重用第5章 接口与多态第6章 输入输出流第7章 对象群体的组织第8章 多线程第9章 图形用户界面第10章 JDBC与数据库访问第11章 Servlet程序设计第12章 JSP程序设计参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值