Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите с решением / 3 сообщений из 3, страница 1 из 1
07.10.2013, 03:42:37
    #38418411
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с решением
Дали задание - написать записную книжку, данные хранить в файле, написал пока что программу, кот. сохраняет всё в памяти, сейчас хочу дописать сохранение в xml. Как создать/записать xml я знаю, но не знаю, как сделать это лучше, чтобы код был красивым. Ещё мучает вопрос - программа и так получилась маленькая, а если я ещё буду сохранять всё в xml, а не в памяти, то от нее вообще ничего не останется - одно чтение и запись xml. Как лучше сохранять данные в файле, но в то же время чтобы и от ООП что-нибудь осталось, что можно продемонстрировать?
Вот пока то что есть

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
package NotebookMenu;
public class Notebook2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String command = "";
        Helper helper = new Helper();

        while (!(command = input.nextLine()).equals("5")) {
            try {
                switch (command) {
                    case "1": {
                        error = "";
                        System.out.print("Enter name: ");
                        String name = input.nextLine();
                        ..........
                        Contacts contact = new Contacts(name, phoneNumber, email);
                        helper.addNewContact(contact);
                    }
                    break;

                    case "2": {
                        List<Contacts> list = helper.displayAllContacts();
                    }
                    break;

                    case "3": {       
                        String name = input.nextLine();
                        String result = helper.findContactByName(name);
                    }
                    break;

                    case "4": {       
                        String name = input.nextLine();
                        helper.removeContactByName(name);                
                    }
                    break;
                    case "5": {
                    }
                    break;
                    default:
                        error = "";
                        break;
                }
            } catch (Exception e) {
                System.out.println("Error occured.. Please, try again..");
            }
            System.out.println(error + "" + menu);
        };

        System.out.println("\nExit..");

    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
package notebook;

public class Contacts {

    private String name;
    private int phone;
    private String email;

    public Contacts(String name, int phone, String email) {
        this.name = name;
        this.phone = phone;
        this.email = email;
    }

   // тут всякие геттеры и сеттеры
    
    @Override
    public String toString(){
        return "Contact (Name: " + this.name + ", phone number: " + this.phone + ", E-mail: " + this.email + ")\n";
    }
}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
public class Helper {

    private List<Contacts> contactsList;

    public Helper() {
        this.contactsList = new ArrayList<Contacts>();
    }

    public void addNewContact(Contacts contact) {
        this.contactsList.add(contact);
    }

    public List<Contacts> displayAllContacts() {
        String result;
        
        return contactsList;
    }

    public String findContactByName(String name) {
        String result = "";

        for (Contacts contact : contactsList) {
            if (contact.getName().equals(name)) {
                result = contact.toString();
                result += "\n" + this.contactsList.get(contactsList.indexOf(contact)).toString() + "\n";
            }
        }
        return result;
    }

    public void removeContactByName(String name) {

        contactsList.remove(name);
    }
}


код местами сократил для наглядности
...
Рейтинг: 0 / 0
07.10.2013, 12:35:08
    #38418746
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с решением
Витяй1991Ещё мучает вопрос - программа и так получилась маленькая, а если я ещё буду сохранять всё в xml, а не в памяти, то от нее вообще ничего не останется - одно чтение и запись xml.
Темная сторона силы манит тебя, Люк!

Мало кода это не недостаток, а преимущество обычно.
Добавь функционала, например группировки контактов типа: друзья, однокурсники, семья. А лучше когда юзер сам сможет заводить группы. Добавь поиск по каким-нибудь параметрам (хоть по первой букве, как в бумажной записной книжке). Минимальную проверку email на корректность. Проверку на дубликаты.
Код сам вырастет.

case "1", case "2" - магически цифры. К дьяволу (в enum)
...
Рейтинг: 0 / 0
07.10.2013, 13:35:28
    #38418842
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с решением
Витяй1991,

учитывая отсутствия оверрайда метода equals в класс contact, непонятно, как работает contactList.remove(name) ?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите с решением / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]