?? loginsystem.java
字號:
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.io.*;
class LoginSystem implements ActionListener,ItemListener
{
private JTextField userName,password,passwordConfirm,account,shopName;
private JTextArea shopInfo;
private JRadioButton c1,c2;
private JComboBox cb;
private JDialog dialog;
private boolean merchant;
private String shopType;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
LoginSystem(JFrame f,Socket socket)
{
shopType = "computer";
this.socket = socket;
dialog = new JDialog(f,"歡迎注冊",true);
dialog.setResizable(false);
try
{
in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
}catch(Exception e)
{
}
JPanel rulePanel = new JPanel();
rulePanel.setLayout(new GridLayout(5,1));
rulePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.red,2),
"***注冊前請閱讀注冊規則***",TitledBorder.CENTER,TitledBorder.TOP));
JLabel r1 = new JLabel("1.加'*'號的項目必須填寫");
JLabel r2 = new JLabel("2.用戶名只允許數字,字母和下劃線,長度最大12位");
JLabel r3 = new JLabel("3.密碼長度必須為6-20,允許數字與字母,兩次輸入必須一致");
JLabel r4 = new JLabel("4.帳戶號碼必須為數字,若無該帳戶則創建一個新的空帳戶");
JLabel r5 = new JLabel("5.店鋪類型可以選擇已有種類,也可自行填寫(只允許字母)");
rulePanel.add(r1);
rulePanel.add(r2);
rulePanel.add(r3);
rulePanel.add(r4);
rulePanel.add(r5);
JPanel inforPanel = new JPanel();
inforPanel.setLayout(new GridBagLayout());
inforPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.gray,2),
"請填寫注冊信息",TitledBorder.CENTER,TitledBorder.TOP));
GridBagConstraints gbci = new GridBagConstraints();
gbci.anchor = GridBagConstraints.CENTER;
gbci.insets = new Insets(2,2,2,2);
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(2,2,2,2);
JLabel l1 = new JLabel("用戶名(*):");
JLabel l2 = new JLabel("密碼(*):");
JLabel l3 = new JLabel("密碼確認(*):");
JLabel l4 = new JLabel("帳戶號碼(*):");
JLabel l5 = new JLabel("地址:");
JLabel l6 = new JLabel("電子郵箱:");
userName = new JTextField(20);
password = new JTextField(20);
passwordConfirm = new JTextField(20);
account = new JTextField(20);
gbc.gridy=1;
gbc.gridx=0;
textPanel.add(l1,gbc);
gbc.gridx=1;
textPanel.add(userName,gbc);
gbc.gridy=2;
gbc.gridx=0;
textPanel.add(l2,gbc);
gbc.gridx=1;
textPanel.add(password,gbc);
gbc.gridy=3;
gbc.gridx=0;
textPanel.add(l3,gbc);
gbc.gridx=1;
textPanel.add(passwordConfirm,gbc);
gbc.gridy=4;
gbc.gridx=0;
textPanel.add(l4,gbc);
gbc.gridx=1;
textPanel.add(account,gbc);
gbc.gridy=5;
gbc.gridx=0;
textPanel.add(l5,gbc);
gbc.gridx=1;
textPanel.add(new JTextField(20),gbc);
gbc.gridy=6;
gbc.gridx=0;
textPanel.add(l6,gbc);
gbc.gridx=1;
textPanel.add(new JTextField(20),gbc);
JPanel choosePanel=new JPanel();
choosePanel.setLayout(new GridLayout(1,2));
choosePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,1),
"是否申請成為店主",TitledBorder.CENTER,TitledBorder.TOP));
c1=new JRadioButton(" 是 ");
c1.addItemListener(this);
c2=new JRadioButton(" 否 ",true);
c2.addItemListener(this);
choosePanel.add(c1);
choosePanel.add(c2);
ButtonGroup bgroup1=new ButtonGroup();
bgroup1.add(c1);
bgroup1.add(c2);
JPanel selectPanel = new JPanel();
selectPanel.setLayout(new GridLayout());
String[] type = {"computer","dress","sports","food","book","electric","game"};
cb = new JComboBox(type);
cb.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.DARK_GRAY,0),
"請選擇店鋪類型",TitledBorder.CENTER,TitledBorder.TOP));
cb.setEditable(true);
ComboBoxEditor editor=cb.getEditor();
cb.configureEditor(editor,"computer");
cb.addItemListener(this);
selectPanel.add(cb);
cb.setEnabled(false);
JPanel stextPanel = new JPanel();
stextPanel.setLayout(new GridBagLayout());
JLabel l7 = new JLabel("店鋪名稱:");
shopName = new JTextField(20);
gbc.gridy=0;
gbc.gridx=0;
stextPanel.add(l7,gbc);
gbc.gridx=1;
stextPanel.add(shopName,gbc);
shopName.setEnabled(false);
JLabel l8 = new JLabel("店鋪簡介:");
shopInfo = new JTextArea(4,20);
shopInfo.setLineWrap(true);
gbc.gridy=1;
gbc.gridx=0;
stextPanel.add(l8,gbc);
gbc.gridx=1;
stextPanel.add(new JScrollPane(shopInfo),gbc);
shopInfo.setEnabled(false);
shopInfo.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,1));
JPanel shopPanel = new JPanel();
shopPanel.setLayout(new GridBagLayout());
shopPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
"店鋪相關信息",TitledBorder.CENTER,TitledBorder.TOP));
gbci.gridy=1;
gbci.gridx=0;
shopPanel.add(choosePanel,gbci);
gbci.gridy=2;
shopPanel.add(selectPanel,gbci);
gbci.gridy=3;
shopPanel.add(stextPanel,gbci);
gbci.gridy=0;
gbci.gridx=0;
inforPanel.add(textPanel,gbci);
gbci.gridy=1;
inforPanel.add(shopPanel,gbci);
JPanel buttonPanel=new JPanel();
JButton b=new JButton("確定");
b.addActionListener(this);
buttonPanel.add(b);
b=new JButton("取消");
b.addActionListener(this);
buttonPanel.add(b);
dialog.add(rulePanel,BorderLayout.NORTH);
dialog.add(inforPanel,BorderLayout.CENTER);
dialog.add(buttonPanel,BorderLayout.SOUTH);
dialog.setBounds(332,30,360,650);
dialog.setResizable(false);
dialog.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if (cmd.equals("確定"))
{
boolean legal=true;
if(userName.getSelectionEnd()==0 || shopType.equals("") ||password.getSelectionEnd()==0 || passwordConfirm.getSelectionEnd()==0 || account.getSelectionEnd()==0
||(merchant==true && shopName.getSelectionEnd()==0))
{
legal = false;
JOptionPane.showMessageDialog(null," 請填寫完整!","填寫信息不正確",0);
}
else if(!password.getText().equals(passwordConfirm.getText()) )
{
legal = false;
JOptionPane.showMessageDialog(null," 兩次輸入的密碼不相同!","填寫信息不正確",0);
}
else if(password.getText().length()<6 ||password.getText().length()>20 )
{
legal = false;
JOptionPane.showMessageDialog(null," 密碼長度不符合規則!","填寫信息不正確",0);
}
else if(userName.getText().length()>12)
{
legal = false;
JOptionPane.showMessageDialog(null," 用戶名過長!","填寫信息不正確",0);
}
else if(shopInfo.getText().indexOf('\n')!=-1)
{
legal = false;
JOptionPane.showMessageDialog(null," 簡介中不允許回車!","填寫信息不正確",0);
}
else
{
char[] temp = userName.getText().toCharArray();
for(int i=0;i<userName.getText().length();i++)
{
if(!((temp[i]>='0'&&temp[i]<='9')||(temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z')||(temp[i]=='_')))
{
legal = false;
JOptionPane.showMessageDialog(null," 用戶名填寫不符合規則!","填寫信息不正確",0);
return;
}
}
temp = password.getText().toCharArray();
for(int i=0;i<password.getText().length();i++)
{
if(!((temp[i]>='0'&&temp[i]<='9')||(temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z')))
{
legal = false;
JOptionPane.showMessageDialog(null," 密碼填寫不符合規則!","填寫信息不正確",0);
return;
}
}
temp = account.getText().toCharArray();
for(int i=0;i<account.getText().length();i++)
{
if(!((temp[i]>='0'&&temp[i]<='9')))
{
legal = false;
JOptionPane.showMessageDialog(null," 帳戶號填寫不符合規則!","填寫信息不正確",0);
return;
}
}
temp = shopType.toCharArray();
for(int i=0;i<shopType.length();i++)
{
if(!((temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z')||temp[i]==' '))
{
legal = false;
JOptionPane.showMessageDialog(null," 店鋪名填寫不符合規則!","填寫信息不正確",0);
return;
}
}
}
if(legal)
{
try{
if(merchant)
{
out.println("LOGINM");
out.println(userName.getText());
out.println(password.getText());
out.println(account.getText());
out.println(shopName.getText());
out.println(shopType);
out.println(shopInfo.getText());
String result = in.readLine();
if(result.equals("USED"))
{
out.println(JOptionPane.showInputDialog(null,"該賬戶已存在!","請輸入創建該賬戶的用戶名"));
result = in.readLine();
}
if(result.equals("SUCCESS"))
{
JOptionPane.showMessageDialog(null,userName.getText()+": 歡迎你加入本系統!","注冊成功",1);
dialog.dispose();
}
if(result.equals("AFAILURE"))
{
JOptionPane.showMessageDialog(null,"賬戶信息輸入不正確,請重新選擇賬戶號碼!","注冊失敗",0);
}
if(result.equals("FAILURE"))
{
JOptionPane.showMessageDialog(null," 該用戶名已存在,請重新選擇用戶名!","注冊失敗",0);
}
if(result.equals("SHOPFAILURE"))
{
JOptionPane.showMessageDialog(null," 該店鋪名已存在,請重新選擇店鋪名!","注冊失敗",0);
}
}
else
{
out.println("LOGINC");
out.println(userName.getText());
out.println(password.getText());
out.println(account.getText());
String result = in.readLine();
if(result.equals("USED"))
{
out.println(JOptionPane.showInputDialog(null,"該賬戶已存在!","請輸入創建該賬戶的用戶名"));
result = in.readLine();
}
if(result.equals("SUCCESS"))
{
JOptionPane.showMessageDialog(null,userName.getText()+": 歡迎你加入本系統!","注冊成功",1);
dialog.dispose();
}
if(result.equals("FAILURE"))
{
JOptionPane.showMessageDialog(null," 該用戶名已存在,請重新選擇用戶名!","注冊失敗",0);
}
if(result.equals("AFAILURE"))
{
JOptionPane.showMessageDialog(null,"賬戶信息輸入不正確,請重新選擇賬戶號碼!","注冊失敗",0);
}
}
}catch(Exception ex){}
}
}
else if (cmd.equals("取消"))
{
dialog.dispose();
}
}
public void itemStateChanged(ItemEvent e)
{
if (e.getStateChange()==e.SELECTED)
{
if (e.getSource()==c1)
{
this.merchant = true;
cb.setEnabled(true);
shopName.setEnabled(true);
shopInfo.setEnabled(true);
}
else if (e.getSource()==c2)
{
this.merchant = false;
cb.setEnabled(false);
shopName.setText("");
shopName.setEnabled(false);
shopInfo.setText("");
shopInfo.setEnabled(false);
}
else if(e.getSource()==cb)
{
shopType = (String)e.getItem();
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -