본문 바로가기

자바(java)

주소록 관리: 연락처 정보를 저장하고 관리할 수 있는 주소록 애플리케이션을 설계합니다.

반응형

주소록 관리 애플리케이션은 사용자가 연락처 정보를 저장하고 관리할 수 있도록 해주는 프로그램입니다. 이 애플리케이션은 Java로 구현되며, Java Swing을 사용하여 그래픽 사용자 인터페이스(GUI)를 제공합니다.

1. 내용 설명

주소록 관리 앱은 연락처 정보를 추가, 삭제, 검색, 수정할 수 있는 기능을 제공합니다. 각 연락처에는 이름, 전화번호, 이메일 주소 등의 정보가 포함될 수 있습니다. 사용자는 이러한 정보를 관리하고 필요할 때 검색할 수 있습니다.

2. 프로그램간 사용 함수 설명

  • addContact(Contact contact): 새로운 연락처를 추가합니다.
  • removeContact(String name): 지정한 이름의 연락처를 삭제합니다.
  • searchContact(String name): 지정한 이름으로 연락처를 검색합니다.
  • updateContact(Contact contact): 기존 연락처 정보를 업데이트합니다.
  • displayContacts(): 저장된 모든 연락처를 표시합니다.

3. 코딩 내용

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

public class AddressBookApp extends JFrame {
    private Map<String, Contact> contacts;
    private JTextField nameField, phoneField, emailField;
    private JTextArea contactListArea;

    public AddressBookApp() {
        setTitle("Address Book");
        setSize(500, 400);
        setLayout(new BorderLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        contacts = new HashMap<>();

        setupUI();

        setVisible(true);
    }

    private void setupUI() {
        JPanel inputPanel = new JPanel(new GridLayout(3, 2));
        nameField = new JTextField();
        phoneField = new JTextField();
        emailField = new JTextField();

        inputPanel.add(new JLabel("Name:"));
        inputPanel.add(nameField);
        inputPanel.add(new JLabel("Phone:"));
        inputPanel.add(phoneField);
        inputPanel.add(new JLabel("Email:"));
        inputPanel.add(emailField);

        add(inputPanel, BorderLayout.NORTH);

        JPanel buttonPanel = new JPanel();
        JButton addButton = new JButton("Add");
        JButton removeButton = new JButton("Remove");
        JButton searchButton = new JButton("Search");
        JButton updateButton = new JButton("Update");

        buttonPanel.add(addButton);
        buttonPanel.add(removeButton);
        buttonPanel.add(searchButton);
        buttonPanel.add(updateButton);

        add(buttonPanel, BorderLayout.CENTER);

        contactListArea = new JTextArea(10, 40);
        contactListArea.setEditable(false);
        add(new JScrollPane(contactListArea), BorderLayout.SOUTH);

        addButton.addActionListener(e -> addContact());
        removeButton.addActionListener(e -> removeContact());
        searchButton.addActionListener(e -> searchContact());
        updateButton.addActionListener(e -> updateContact());
    }

    private void addContact() {
        String name = nameField.getText();
        String phone = phoneField.getText();
        String email = emailField.getText();
        if (!name.isEmpty() && !phone.isEmpty()) {
            contacts.put(name, new Contact(name, phone, email));
            displayContacts();
        } else {
            JOptionPane.showMessageDialog(this, "Name and phone are required.");
        }
    }

    private void removeContact() {
        String name = nameField.getText();
        if (contacts.containsKey(name)) {
            contacts.remove(name);
            displayContacts();
        } else {
            JOptionPane.showMessageDialog(this, "Contact not found.");
        }
    }

    private void searchContact() {
        String name = nameField.getText();
        if (contacts.containsKey(name)) {
            Contact contact = contacts.get(name);
            contactListArea.setText(contact.toString());
        } else {
            JOptionPane.showMessageDialog(this, "Contact not found.");
        }
    }

    private void updateContact() {
        String name = nameField.getText();
        if (contacts.containsKey(name)) {
            String phone = phoneField.getText();
            String email = emailField.getText();
            contacts.put(name, new Contact(name, phone, email));
            displayContacts();
        } else {
            JOptionPane.showMessageDialog(this, "Contact not found.");
        }
    }

    private void displayContacts() {
        String allContacts = contacts.values().stream()
                .map(Contact::toString)
                .collect(Collectors.joining("\n"));
        contactListArea.setText(allContacts);
    }

    public static void main(String[] args) {
        new AddressBookApp();
    }
}

class Contact {
    String name;
    String phoneNumber;
    String email;

    public Contact(String name, String phoneNumber, String email) {
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.email = email;
    }

    @Override
    public String toString() {
        return "Name: " + name + ", Phone: " + phoneNumber + ", Email: " + email;
    }
}

 

4. 전문용어

  • Java: 객체 지향 프로그래밍 언어입니다.
  • Swing: Java의 그래픽 사용자 인터페이스 툴킷입니다.
  • GUI: 사용자가 그래픽을 통해 상호작용하는 인터페이스입니다.
  • HashMap: 키와 값으로 데이터를 저장하는 Java 컬렉션 클래스입니다.

5. 라이브러리 추가 및 실행 방법

라이브러리

  • Java 표준 라이브러리 (Swing)

실행 방법

  1. Java 개발 환경을 설치합니다.
  2. 위의 코드를 Java 파일로 저장합니다.
  3. 컴파일 후 실행합니다.

컴파일

javac -encoding UTF-8 AddressBookApp.java

 

실행 

java AddressBookApp

반응형