1.设计一个用户注册页面,如下图所示:
2. 基于第1题,用户点击提交按钮后,首先判断用户名长度是否在[6,10]之间,密码长度大于8,且包括数字和字母。如果不符合上述条件,弹出提示信息,让用户重新输入;否则提示登录成功.
3. 在第三题的基础上,将注册成功的用户主要信息保存到到数据库TestDB的表t_user里,并给出保存结果。t_user表结构为:
CREATE TABLE `t_user` (
`uid` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
`password` varchar(20) DEFAULT NULL,
`sex` char DEFAULT NULL
);
实验准备:安装好java-mysql-connector,并导入library中
import java.awt.FlowLayout;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
class JCompoent_UI extends JFrame implements ActionListener{
JTextField text;
JButton button;
JCheckBox checkbox1,checkbox2,checkbox3,checkbox4;
JRadioButton radio1,radio2;
ButtonGroup group;
JComboBox comBox;
JTextArea area;
JPasswordField pwd;
Mysql1 ms;
private int flag=1;//判断输入是否有错,以决定是否存入mysql
JCompoent_UI(){
init();
setSize(600,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
void init() {
setLayout(new FlowLayout());
add(new JLabel("姓名:"));
text=new JTextField(10);
add(text);
add(new JLabel("性别:"));
group=new ButtonGroup();
radio1=new JRadioButton("男");
radio2=new JRadioButton("女");
group.add(radio1);
group.add(radio2);
pwd=new JPasswordField(10);
add(radio1);
add(radio2);
add(new JLabel("初始密码:"));
add(pwd);
add(new JLabel("爱好:"));
checkbox1=new JCheckBox("喜欢徒步");
checkbox2=new JCheckBox("喜欢旅游");
checkbox3=new JCheckBox("喜欢读书");
checkbox4=new JCheckBox("喜欢音乐");
add(checkbox1);
add(checkbox2);
add(checkbox3);
add(checkbox4);
add(new JLabel("栏目列表:"));
comBox=new JComboBox();
comBox.addItem("程序设计");
comBox.addItem("数据分析");
comBox.addItem("智能处理");
add(comBox);
add(new JLabel("自我介绍:"));
area=new JTextArea(6,12);
add(new JScrollPane(area));
button=new JButton("提交");
add(button);
button.addActionListener(this);
}
public int checkInput(){
int flagDigit=0,flagAlpha=0;
int n1=text.getText().length();
int n2=pwd.getPassword().length;
char[] s1=pwd.getPassword();
for (int i=0;i<s1.length;i++){
if (s1[i]>='0' && s1[i]<='9'){
flagDigit=1;continue;
}
if (s1[i]>='a' && s1[i]<='z' || (s1[i]>='A' && s1[i]<='Z')){
flagAlpha=1;continue;
}
if (flagDigit==1 && flagAlpha==1){
break;
}
}
if (!(n1>=6 && n1<=10)) {
flag=0;
JOptionPane.showMessageDialog(this,"用户名6-10位,请重新输入","消息对话框",JOptionPane.ERROR_MESSAGE);
}
if (n2<8 || flagDigit==0 || flagAlpha==0) {
flag=0;
JOptionPane.showMessageDialog(this,"密码长度>=8,且包含数字和字符,请重新输入!","消息对话框",JOptionPane.ERROR_MESSAGE);
}
return flag;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource()==button) {
if (checkInput()==1)//没有错误,提交到数据库
submit();
}
}
public void submit(){
ms=new Mysql1();
ms.ConnectSQL();
String a=new String(text.getText());
String b=new String(pwd.getPassword());
String s=new String();
if(radio1.isSelected()){
s="男";
}
else{
s="女";
}
if (a!=null && b!=null && s!=null)
ms.UserRegis(a,b,s);
else
System.out.println("错误!");
ms.SQLprint();
}
}
class Mysql1{
Connection ct;
PreparedStatement ps;
ResultSet rs;
String url,pwd,user,sex,uid;
//将连接数据库的方法封装为一个方法
public void ConnectSQL()
{
url="jdbc:mysql://localhost:3306/mydb1?serverTimezone=GMT";
user="root";
pwd="123456";
try {
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
ct=DriverManager.getConnection(url,user,pwd); //得到连接
System.out.println("已成功连接数据库...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//注册用户的方法
public void UserRegis(String a,String b,String c)
{
try {
ps = ct.prepareStatement("insert into t_user (uid,name1,password1,sex) "+ "values('0001',?,?,?)");
ps.setString(1,a);
ps.setString(2,b);
ps.setString(3,c);
//执行
int i=ps.executeUpdate();
if(i==1)
{
JOptionPane.showMessageDialog(null, "注册成功","提示消息",JOptionPane.WARNING_MESSAGE);
}else
{
JOptionPane.showMessageDialog(null, "注册失败","提示消息",JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 登录验证方法
public void SQLprint()
{
try {
ps=ct.prepareStatement("select * from t_user");
// ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
rs = ps.executeQuery();
if(rs.next())
{
user = rs.getString(1);
pwd = rs.getString(2);
sex = rs.getString(3);
uid= rs.getString(4);
System.out.println("成功获取数据from数据库");
System.out.println("uid:"+uid + "\tuser:" + user + "\tpwd:" + pwd+ "\tsex:" +sex);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class Form1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new JCompoent_UI();
}
}