Notice
Recent Posts
Recent Comments
Link
dew's CSE Studying
[JAVA]로그인 프로그램 구현 본문
package sec01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
//클래스 정의 :
class UserManager{
//해시맵객체생성:멤버변수를 만들어준다
HashMap<String, String> user;
//생성자 정의
UserManager(String filename){
user=new HashMap<>();
//파일처리
FileReader fin;
BufferedReader br=null;
try {
fin=new FileReader(filename);
br=new BufferedReader(fin);
}catch (FileNotFoundException e1) {
e1.printStackTrace();
}
String str,id,pw;
try {
while((str=br.readLine())!=null) {
String arr[]=str.split(" ");
id=arr[0];pw=arr[1];
user.put(id, pw); //실수나 정수형으로 바꾸기 위해서는 Integer.passInt 같이 데이터에 대한 형변환이 필요하다!! 정수형으로/실수형으로 두가지 모두 정리하고 관련예제 풀어볼 것!!!
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
void authenticateUser(String username, String password)
{
if (user.containsKey(username)) { //containsKey, constainsValue: key와 value를 ~하는 함수. 두 가지 함수 잘 알기!!!!
if(user.get(username).equals(password))//조건식은 빈칸으로 나옴. try catch는 안 나옴
JOptionPane.showMessageDialog(null, "로그인 성공!");
else
JOptionPane.showMessageDialog(null, "로그인 실패. 비밀번호 확인");
}else
JOptionPane.showMessageDialog(null, "로그인 실패. 사용자 이름 확인");
}
}
// GUI 및 이벤트 처리 클래스
public class Login3 extends JFrame{
JLabel nameLabel,pwLabel;
JTextField nameField;
JPasswordField pwField;
JButton loginButton,cancelButton;
public Login3() {
setTitle("로그인");
setSize(300, 200);
Font f=new Font("",Font.BOLD,20);
setLayout(new GridLayout(3,3));
nameField = new JTextField();
pwField = new JPasswordField();
loginButton = new JButton("로그인");
cancelButton = new JButton("취소");
nameLabel=new JLabel("사용자 이름:");
pwLabel=new JLabel("비밀번호:");
//글꼴 변경
nameLabel.setFont(f);
nameField.setFont(f);
pwLabel.setFont(f);
nameField.setFont(f);
loginButton.setFont(f);
cancelButton.setFont(f);
//컴포넌트 부착
add(nameLabel);
add(nameField);
add(pwLabel);
add(pwField);
add(loginButton);
add(cancelButton);
//리스너 등록
loginButton.addActionListener(new LoginActionListener());
cancelButton.addActionListener(new CancelActionListener());
setVisible(true);
}
//리스너 구현
class LoginActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String username = nameField.getText();
String password = pwField.getText();
String filename="user_data.txt";
//객체생성
UserManager user1=new UserManager(filename);
//로그인인증처리
user1.authenticateUser(username,password);
}
}
//여기까지를 사용자정의클래스로 빠지면 Object로 불러오는 과정이 필요하다. 이부분도 염두해둘것 ver3로 만들어보자!!!
//알고리즘 문제도 나온다. ArrayList나 HashMap을 사용하는 다양한 예제들을 찾아보고 풀어보자
//앗 로그인은 반드시 나온다!! 로그인 화면/Swing component 활용에서 처음버튼 마지막버튼 다음버튼 이전버튼 gui 이거 두문제내셨다고함. 이벤트처리랑 스레드는 기조
class CancelActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
nameField.setText("");
pwField.setText("");
nameField.requestFocus();
}
}
public static void main(String[] args) {
new Login3();
}
}