程序设计题:多线程并发和GUI编程

程序设计题<一> 多线程并发
要求:假设某家银行可接受顾客的存款,每进行一次存款,便可计算出存款总额,现有两名顾客,每人分三次,每次存入100元钱,试编程来模拟顾客的存储操作。注意解决并发带来的数据不一致问题
【程序清单】
package com.example.test;

class Mbank
{
    private static int sum = 0;
    public synchronized static void save(int k)
    {
        int temp = sum;
        temp += k;
        try {
            Thread.sleep((int) (1000 * Math.random()));
        }
        catch (InterruptedException e) { }
        sum = temp;
        System.out.println("sum="+sum);
    }
}
class Customer extends Thread
{
    public void run()
    {
      for(int i = 1;i<=3;i++)
      Mbank.save(100);
    }
}
public class test1
{
    public static void main(String[] args)
    {
        Customer c1 = new Customer();
        Customer c2 = new Customer();
        c1.start();
        c2.start();
    }
}

【实验运行结果】
在这里插入图片描述

程序设计题<二> GUI编程
要求:设计下图,点击登录按钮后,若输入为用户名为cssf,密码为cssf,则弹出“登录成功”窗口,否则弹出“登录失败”窗口,提示弹出窗口使用AlertDialog。

【程序清单】
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class login extends JFrame {
JLabel label1,label2,label3;
JTextField txt1,txt2;
JButton button1,button2;
JPanel panel1,panel2,panel3,panel4;
Container con;
public static void main(String[] args) {
login frame = new login();
frame.setVisible(true);
}

public login() {
    //在构造函数中完成对全局变量的初始化及布局管理器的管理
    super();
    setBounds(800,300,300,200);
    setTitle("登录");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    label1 = new JLabel("用户名");
    label2 = new JLabel("密     码");
    label3 = new JLabel("");

    txt1 = new JTextField(10);
    txt2 = new JTextField(10);

    button1 = new JButton("登录");
    button2 = new JButton("取消");

    con=getContentPane();
    con.setLayout(new GridLayout(4, 1));

    panel1 = new JPanel();
    panel2 = new JPanel();
    panel3 = new JPanel();
    panel4 = new JPanel();

    panel1.add(label1);
    panel1.add(txt1);

    panel2.add(label2);
    panel2.add(txt2);

    Handle handle = new Handle();
    button1.addActionListener(handle);

    panel3.add(button1);
    panel3.add(button2);

    panel4.add(label3);

    con.add(panel1);
    con.add(panel2);
    con.add(panel3);
    con.add(panel4);

}
class Handle implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        String s1 = txt1.getText();
        String s2 = txt2.getText();

        if(s1.equals("cssf")==true&&s2.equals("cssf"))
            //弹出登陆成功对话框
            JOptionPane.showMessageDialog(null, "登录成功");

        else
        {
            //重置
            txt1.setText(null);
            txt2.setText(null);
            JOptionPane.showMessageDialog(null, "登录失败");}}}

}
【实验运行结果】
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值