程序设计题<一> 多线程并发
要求:假设某家银行可接受顾客的存款,每进行一次存款,便可计算出存款总额,现有两名顾客,每人分三次,每次存入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, "登录失败");}}}
}
【实验运行结果】