《Java程序设计》实 验 报 告(一)-----用户密码的合法化验证

实验目的:
在Eclipse下编辑、编译、运行、调试简单的Java程序 。

实验内容:
用户自定义一个异常,编程创建并抛出某个异常类的实例。运行该程序并观察执行结果。
例如:用户密码的合法化验证。
要求密码有4-6个数字组成。若长度不落在这个范围或不是有数字组成。抛出自己的异常。
要求:
1.面向对象编程。
2.异常定义,抛出,捕捉三个流程。
源程序:

package sy5;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import sy3.sy3.passwordexception;

import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class PasswordException extends Exception{
	public PasswordException(String msg) {
		super(msg);
	}
}
class Users {
	String name;
	String password;
	public void test(String n,String p) throws PasswordException {
		if(n == null || n.length() <= 0) {
			PasswordException e = new PasswordException("用户名不能为空");
		    throw e;
		}
		else if(p == null || p.length() <= 0) {
			PasswordException e = new PasswordException("密码不能为空");
		    throw e;
		}
	    else if(p.length()<4||p.length()>6) { 
			PasswordException e = new PasswordException("密码长度不在4-6位数字范围中");
		    throw e;
	    }
		else if (!p.matches("\\d+")) {
			PasswordException e = new PasswordException("密码必须由数字组成");
			throw e;
		}
    }	
}

public class sy5 extends JFrame implements ActionListener {

	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JLabel lblNewLabel_2;
	private JTextField textField_2;

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

	/**
	 * Create the frame.
	 */
	public sy5() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		textField = new JTextField();
		textField.setBounds(195, 106, 117, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		textField_1 = new JTextField();
		textField_1.setBounds(196, 142, 117, 21);
		contentPane.add(textField_1);
		textField_1.setColumns(10);
		
		JButton btnNewButton = new JButton("\u786E\u8BA4");
		btnNewButton.addActionListener(this);
		btnNewButton.setFont(new Font("楷体", Font.PLAIN, 16));
		btnNewButton.setBounds(140, 212, 97, 23);
		contentPane.add(btnNewButton);
		
		JLabel lblNewLabel = new JLabel("\u8BF7\u8F93\u5165\u5BC6\u7801\uFF1A");
		lblNewLabel.setFont(new Font("楷体", Font.PLAIN, 16));
		lblNewLabel.setBounds(85, 110, 131, 15);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("\u9A8C\u8BC1\u4FE1\u606F\uFF1A");
		lblNewLabel_1.setFont(new Font("楷体", Font.PLAIN, 16));
		lblNewLabel_1.setBounds(88, 142, 96, 15);
		contentPane.add(lblNewLabel_1);
		
		lblNewLabel_2 = new JLabel("\u7528\u6237\u540D\uFF1A");
		lblNewLabel_2.setFont(new Font("楷体", Font.PLAIN, 16));
		lblNewLabel_2.setBounds(85, 72, 90, 15);
		contentPane.add(lblNewLabel_2);
		
		textField_2 = new JTextField();
		textField_2.setBounds(195, 66, 115, 21);
		contentPane.add(textField_2);
		textField_2.setColumns(10);
	}
		
	protected void loginActionPerformed(ActionEvent evt) {
		String name=textField_2.getText();
		String str=textField.getText();
		Users test = new Users();
		try {
			test.test(name,str);
			String m ="密码设置成功!";
			textField_1.setText(m);
		} catch (PasswordException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			String m = e.toString();
			textField_1.setText(m);
		}
	}
	public void actionPerformed(ActionEvent e) {
		loginActionPerformed(e);
	}
}

实验结果与体会:
结果:当用户在提示输入的文本框里输入用户名以及4~6位以内的任意数字密码时,再点击确认,就可以在下面的框中得到相对应的提示。
例如:
在这里插入图片描述

而当用户输入错误的密码格式时,就会出现如下图示的提示错误的信息:
在这里插入图片描述
在这里插入图片描述

体会:通过本次实验,我了解了异常处理机制,掌握异常处理的设计方法,以及自定义异常的方法。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值