Напишите программу которая будет работать как телефонная книга java

Цель задания

Научиться работать с коллекцией Map.

Что нужно сделать

Задание выполняйте в проекте

09_ArraysAndCollections/homework_9.4/PhoneBook

  1. Напишите программу, которая будет работать как телефонная книга:

Если вводим новое имя, программа просит ввести номер телефона и запоминает его.
Если новый номер телефона — просит ввести имя и также запоминает.
Если вводим существующее имя или номер телефона, программа выводит телефон(ы) или имя абонента соответственно.
При вводе команды LIST программа печатает в консоль список всех абонентов в алфавитном порядке с номерами.
2. Определяйте имя и телефон с помощью регулярных выражений.

  1. Подумайте, что выбрать в качестве ключа и значения для Map, и выберите лучший, по вашему мнению, вариант. Опишите, какие минусы и плюсы видите в своём выборе.

  2. Для работы с данными телефонной книги в проекте находится класс PhoneBook, который должен отвечать за хранение и работу с абонентами. Реализуйте все методы и проверьте класс с помощью существующих тестов. Вы можете добавлять дополнительные методы в класс.

Команды вводятся пользователем в консоль одной строкой.
Помогите пожалуйста c последним тестом в задании!

У меня проходят все тесты кроме одного:

@DisplayName("Добавление контакта, владеющий двумя номерами")
    void addContactWithTwoNumbers() {
        phoneBook.addContact("79001234567", "Маша");
        phoneBook.addContact("79007654321", "Маша");
        Set<String> expected = new TreeSet<>(List.of("Маша - 79001234567, 79007654321"));
        assertEquals(expected, phoneBook.getAllContacts());

Мне посоветовали, что нужно пройтись в цикле по мапе где хранятся телефон и имя Map<String, String> он же Map <phone, name> и переложить в новую мапу Map<String, Treeset>, в виде ключа положить имя, в виде значения телефон в treeset и если встретится такое же имя, докладывать телефон в Treeset, а после цикла for уже объединять ключ и значение (имя контакта с номерами телефонов) в Set.

Но я не понимаю, как это реализовать, буду очень признателен, если кто-нибудь сможет помочь подправить код!

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

public class PhoneBook {

    Map<String, String> mapPhoneBook = new TreeMap<>();

    public void addContact(String phone, String name) {

        if (phone.matches("[\d]{11}") && name.matches("[А-Яа-я]+")) {
            if (mapPhoneBook.containsKey(phone)) {
                mapPhoneBook.replace(phone, mapPhoneBook.get(phone), name);
            } else {
                mapPhoneBook.put(phone, name);
            }
        }
    }


    public String getContactByPhone(String phone) {
        if (mapPhoneBook.containsKey(phone)) {
            return mapPhoneBook.get(phone) + " - " + phone;
        } else {
            return "";
        }
    }


    public Set<String> getContactByName(String name) {

        Set<String> setPhoneBook = new TreeSet<>();
        String namePlusTel = "";
        if (mapPhoneBook.containsValue(name)) {
            namePlusTel = namePlusTel.concat(name) + " - ";
            for (String tel : mapPhoneBook.keySet()) {
                if (mapPhoneBook.get(tel).equals(name)) {
                    namePlusTel = namePlusTel.concat(tel) + ", ";
                }
            }
            setPhoneBook.add(namePlusTel.substring(0, namePlusTel.length() - 2));
            return setPhoneBook;
        } else {
            return new TreeSet<>();
        }
    }

    public Set<String> getAllContacts() {

        Set<String> setPhoneBook = new TreeSet<>();

        for (String key : mapPhoneBook.keySet()) {
            setPhoneBook.add(mapPhoneBook.get(key) + " - " + key);
        }
        return setPhoneBook;
    }
}

0 / 0 / 0

Регистрация: 12.05.2022

Сообщений: 2

1

11.09.2022, 18:26. Показов 1856. Ответов 0


Напишите программу, которая будет работать как телефонная книга:
Если вводим новое имя, программа просит ввести номер телефона и запоминает его.
Если новый номер телефона — просит ввести имя и также запоминает.
Если вводим существующее имя или номер телефона, программа выводит телефон(ы) или имя абонента соответственно.
При вводе команды LIST программа печатает в консоль список всех абонентов в алфавитном порядке с номерами.
Определяйте имя и телефон с помощью регулярных выражений.
Подумайте, что выбрать в качестве ключа и значения для Map, и выберите лучший, по вашему мнению, вариант. Опишите, какие минусы и плюсы видите в своём выборе.
Для работы с данными телефонной книги в проекте находится класс PhoneBook, который должен отвечать за хранение и работу с абонентами. Реализуйте все методы и проверьте класс с помощью существующих тестов. Вы можете добавлять дополнительные методы в класс.
Команды вводятся пользователем в консоль одной строкой.

Примеры работы с телефонной книгой (жирным шрифтом выделен ввод пользователя)

Введите номер, имя или команду:
Маша
Такого имени в телефонной книге нет.
Введите номер телефона для абонента “Маша”:
79001234567
Контакт сохранен!

Введите номер, имя или команду:
79007654321
Такого номера нет в телефонной книге.
Введите имя абонента для номера “79007654321”:
Маша
Контакт сохранен!

Введите номер, имя или команду:
Nfif@
Неверный формат ввода

Введите номер, имя или команду:
LIST
Маша — 79001234567, 79007654321

Также программа должна пройти тесты, у меня есть вариант решения задачи, но не проходит один тест

Java
1
2
3
4
5
6
@DisplayName("Добавление контакта, владеющий двумя номерами")
    void addContactWithTwoNumbers() {
        phoneBook.addContact("79001234567", "Маша");
        phoneBook.addContact("79007654321", "Маша");
        Set<String> expected = new TreeSet<>(List.of("Маша - 79001234567, 79007654321"));
        assertEquals(expected, phoneBook.getAllContacts());

Вот мой код, что нужно исправить, что бы прошло? Помогите пожалуйста новичку

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package practice;
 
import java.io.Serializable;
import java.util.*;
 
public class PhoneBook {
    
    Map<String, Serializable> phoneBook = new HashMap<>();
 
    public void addContact(String phone, String name) {
 
        if (phone.matches("[\d]{11}") && name.matches("[А-Яа-я]+")){
            if (phoneBook.containsKey(phone)){
                phoneBook.replace(phone, phoneBook.get(phone), name);
            } else {
                phoneBook.put(phone, name);
            }
        }
        // проверьте корректность формата имени и телефона
        // (рекомедуется написать отдельные методы для проверки является строка именем/телефоном)
        // если такой номер уже есть в списке, то перезаписать имя абонента
    }
 
    public String getContactByPhone(String phone) {
        if (phoneBook.containsKey(phone)){
            return phoneBook.get(phone) + " - " + phone;
        } else {
            return "";
        }
        // формат одного контакта "Имя - Телефон"
        // если контакт не найдены - вернуть пустую строку
    }
 
    public Set<String> getContactByName(String name) {
        Set<String> setPhoneBook = new TreeSet<>();
        Map<String, List<String>> multiMap = new HashMap<>();
        List<String> twoTelephones = new ArrayList<>();
        String telPlusName = "";
        if (phoneBook.containsValue(name)){
            telPlusName = telPlusName.concat(name) + " - ";
            for (String telephone : phoneBook.keySet()){
                if (phoneBook.get(telephone).equals(name)){
                    telPlusName = telPlusName.concat(telephone) + ", ";
                }
            }
            setPhoneBook.add(telPlusName.substring(0, telPlusName.length() - 2));
            return setPhoneBook;
        } else {
            return new TreeSet<>();
        }
        // формат одного контакта "Имя - Телефон"
        // если контакт не найден - вернуть пустой TreeSet
    }
 
    public Set<String> getAllContacts() {
 
        Set<String> setPhoneBook = new TreeSet<>();
        for (String key : phoneBook.keySet()){
            setPhoneBook.add(phoneBook.get(key) + " - " + key);
        }
        // формат одного контакта "Имя - Телефон"
        // если контактов нет в телефонной книге - вернуть пустой TreeSet
        return setPhoneBook;
    }
 
    // для обхода Map используйте получение пары ключ->значение Map.Entry<String,String>
    // это поможет вам найти все ключи (key) по значению (value)
    /*
        for (Map.Entry<String, String> entry : map.entrySet()){
            String key = entry.getKey(); // получения ключа
            String value = entry.getValue(); // получения ключа
        }
    */
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Цель задания

Научиться работать с коллекцией Map.

Что нужно сделать

Задание выполняйте в проекте

09_ArraysAndCollections/homework_9.4/PhoneBook

  1. Напишите программу, которая будет работать как телефонная книга:

Если вводим новое имя, программа просит ввести номер телефона и запоминает его.
Если новый номер телефона — просит ввести имя и также запоминает.
Если вводим существующее имя или номер телефона, программа выводит телефон(ы) или имя абонента соответственно.
При вводе команды LIST программа печатает в консоль список всех абонентов в алфавитном порядке с номерами.
2. Определяйте имя и телефон с помощью регулярных выражений.

  1. Подумайте, что выбрать в качестве ключа и значения для Map, и выберите лучший, по вашему мнению, вариант. Опишите, какие минусы и плюсы видите в своём выборе.

  2. Для работы с данными телефонной книги в проекте находится класс PhoneBook, который должен отвечать за хранение и работу с абонентами. Реализуйте все методы и проверьте класс с помощью существующих тестов. Вы можете добавлять дополнительные методы в класс.

Команды вводятся пользователем в консоль одной строкой.
Помогите пожалуйста c последним тестом в задании!

У меня проходят все тесты кроме одного:

@DisplayName("Добавление контакта, владеющий двумя номерами")
    void addContactWithTwoNumbers() {
        phoneBook.addContact("79001234567", "Маша");
        phoneBook.addContact("79007654321", "Маша");
        Set<String> expected = new TreeSet<>(List.of("Маша - 79001234567, 79007654321"));
        assertEquals(expected, phoneBook.getAllContacts());

Мне посоветовали, что нужно пройтись в цикле по мапе где хранятся телефон и имя Map<String, String> он же Map <phone, name> и переложить в новую мапу Map<String, Treeset>, в виде ключа положить имя, в виде значения телефон в treeset и если встретится такое же имя, докладывать телефон в Treeset, а после цикла for уже объединять ключ и значение (имя контакта с номерами телефонов) в Set.

Но я не понимаю, как это реализовать, буду очень признателен, если кто-нибудь сможет помочь подправить код!

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

public class PhoneBook {

    Map<String, String> mapPhoneBook = new TreeMap<>();

    public void addContact(String phone, String name) {

        if (phone.matches("[\d]{11}") && name.matches("[А-Яа-я]+")) {
            if (mapPhoneBook.containsKey(phone)) {
                mapPhoneBook.replace(phone, mapPhoneBook.get(phone), name);
            } else {
                mapPhoneBook.put(phone, name);
            }
        }
    }


    public String getContactByPhone(String phone) {
        if (mapPhoneBook.containsKey(phone)) {
            return mapPhoneBook.get(phone) + " - " + phone;
        } else {
            return "";
        }
    }


    public Set<String> getContactByName(String name) {

        Set<String> setPhoneBook = new TreeSet<>();
        String namePlusTel = "";
        if (mapPhoneBook.containsValue(name)) {
            namePlusTel = namePlusTel.concat(name) + " - ";
            for (String tel : mapPhoneBook.keySet()) {
                if (mapPhoneBook.get(tel).equals(name)) {
                    namePlusTel = namePlusTel.concat(tel) + ", ";
                }
            }
            setPhoneBook.add(namePlusTel.substring(0, namePlusTel.length() - 2));
            return setPhoneBook;
        } else {
            return new TreeSet<>();
        }
    }

    public Set<String> getAllContacts() {

        Set<String> setPhoneBook = new TreeSet<>();

        for (String key : mapPhoneBook.keySet()) {
            setPhoneBook.add(mapPhoneBook.get(key) + " - " + key);
        }
        return setPhoneBook;
    }
}

package lab5; import java.io.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; //На базе подходящего контейнерного класса разработать класс «Телефонный справочник», который бы содержал // произвольное количество абонентов. Для каждого абонента известна фамилия и один номер телефона. Фамилии // разных абонентов могут быть одинаковыми, номера телефонов — нет. Справочник должен иметь методы поиска // номеров телефонов по фамилии и поиска фамилии по номеру телефона. Базовый контейнерный класс выбрать самостоятельно. // 1. Добавить в класс «Телефонный справочник» методы сохранения справочника в файле и загрузки справочника из файла. // 2. Добавить возможность пополнения справочника новыми абонентами с клавиатуры. //Класс Phonebook реализует базу данный «Телефонный справочник» //БД постоена на основе контейнера HashMap<String, String> //в качестве ключа используется номер телефона в виде строку, а в качестве значения — фамилия //класс включает в себя метод main который запускает работу с БД //также включены методы //addPB — добавляет запись по заданным номеру телефона и фамилии //delPB — удаляет запись по номеру телефона //savePB — сохраняет БД в текстовом файле phone.txt //loadPB — загружает БД из текстового файла phone.txt //PrintPhonebook — выводит на екран все записи БД //FindSurname — производит поиск фамилии по номеру телефона //FindNumberPhone — производит поиск списка номеров по фамилии public class Phonebook { private static HashMap<String, String> pb = new HashMap<String, String>(); //addPB — добавляет запись по заданным номеру телефона и фамилии private static void addPB(String phone, String name) { pb.put(phone, name); } //delPB — удаляет запись по номеру телефона private static void delPB(String phone) { pb.remove(phone); } //savePB — сохраняет БД в текстовом файле phone.txt private static void savePB() throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(new File(«phone.txt»))); for(Map.Entry<String,String> k: pb.entrySet()){ writer.write(k.getKey() + » « + k.getValue()+System.lineSeparator()); } writer.close(); } //loadPB — загружает БД из текстового файла phone.txt //производит проверку на наличие файла public static void loadPB() throws IOException { File file = new File(«phone.txt»); if (file.exists()){ BufferedReader reader = new BufferedReader(new FileReader(new File(«phone.txt»))); String act; while ((act=reader.readLine())!=null) { String[] dat = act.split(» «); pb.put(dat[0], dat[1]); } reader.close(); } } //PrintPhonebook — выводит на екран все записи БД public static void PrintPhonebook(){ System.out.println(«Телефонный справочник: «); for(Map.Entry<String,String> k: pb.entrySet()){ System.out.println(k.getValue()+«: «+ k.getKey()); } } //FindSurname — производит поиск фамилии по номеру телефона заданому в качестве аргумента //возвращает строку public static String FindSurname(String number){ String result = pb.get(number); if (result == null) return «абонент с таким номером не найдей»; return result; } //FindNumberPhone — производит поиск списка номеров по фамилии заданой в качестве аргумента //возвращает массив строк public static String[] FindNumberPhone(String surname){ List <String> result = new ArrayList<String>(); for (Map.Entry entry : pb.entrySet()) { if (surname.equalsIgnoreCase((String)entry.getValue())){ result.add((String)entry.getKey()); } } if (result.size() == 0) result.add(«абонент с такой фамилией не найден»); return result.toArray(new String[0]); } public static void main(String[] args) throws IOException { //переменная описывает вызываемое действие String act; //загрузка БД loadPB(); //вывод записей на екран PrintPhonebook(); //вывод на екран описания возможных действий с указанием команд System.out.println(«выбор действия: (add)добавить данные, (del)удалить данные, (num) найти номера по фамилии, (sur)найти фамилию, « + «(save)сохранить, (exit)выход»); BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); act = bf.readLine(); while(!act.equals(«exit»)){ //добавление записи if(act.equals(«add»)){ System.out.println(«Введите фамилию:»); String name = bf.readLine(); System.out.println(«Введите телефон:»); String phone = bf.readLine(); addPB(phone, name); }else{ //удаление записи if(act.equals(«del»)){ System.out.println(«Введите телефон:»); String phone = bf.readLine(); delPB(phone); }else{ //поиск номеров по фамилии if (act.equals(«num»)){ System.out.println(«Введите фамилию:»); String surname = bf.readLine(); String[] numbers = FindNumberPhone(surname); for (String number : numbers) { System.out.println(number); } } else { //поиск фамилии по номеру if (act.equals(«sur»)) { System.out.println(«Введите номер:»); String number = bf.readLine(); System.out.println(FindSurname(number)); } else { //сохранение БД в файл if(act.equals(«save»)){ savePB(); } } } } } //запрос на следующее действие System.out.println(«выбор действия: (add)добавить данные, (del)удалить данные, (num) найти номера по фамилии, (sur)найти фамилию, (save)сохранить, (exit)выход»); act=bf.readLine(); } } }

Не могу разобраться в задании: задача про телефонный справочник с поддержкой групп контактов. Один контакт может входить в несколько групп. Например, если вы работаете со своим другом, то он будет в группах «Друзья» и «Работа». У пользователя должна быть возможность создания групп и контактов, добавления одного контакта в несколько групп.

import java.util.Scanner;

public class Main {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Программа справочник" +
                "nВведите название группы контактов:");

        while (true) {
            String input = scanner.nextLine();
            if ("нет".equals(input)) break;
            PhoneContacts.addGroup(input);

        }
        PhoneContacts.toStringList();
    }
}

import java.util.Objects;

public class Contact {
    protected static String name;
    protected static String number;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Contact contact = (Contact) o;
        return Objects.equals(name, contact.name) && Objects.equals(number, contact.number);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, number);
    }

    @Override
    public String toString() {
        return "Contact{" +
                "name='" + name + ''' +
                ", number='" + number + ''' +
                '}';
    }

    public static void addContact(String input) {
        System.out.println("Создать контакт (введите наименование и его номер или введите нет)");
        String[] parts = input.split(" ", 2);
        Contact user = new Contact(parts[0], parts[1]);
    }
}

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PhoneContacts {

    static List<String> groups = new ArrayList<>();
    static Map<String, Contact> note = new HashMap<>();

    public static void addGroup(String input) {
        System.out.println("Создать контакт (введите наименование и его номер или введите нет)?");
        groups.add(input);
    }

    public static void toStringList() {
        System.out.println(groups.toString());
    }
}

В условии сказано что пользователь должен ввести имя и телефонный номер контакта через пробел: «John Smith +7(911)111-11-11»
Как эту запись перевести в объект класса Contact?

Сериализация является мощным инструментом. Это то, что позволяет нам хранить объекты на диске и восстанавливать их в памяти при необходимости – возможно, при перезапуске программы. Для тех, кто хочет выйти за рамки программ типа «забей и забудь», сериализация необходима. Мы можем сериализовать объекты, чтобы создать ощущение постоянства в наших программах, чтобы информация, которую мы собираем, не терялась и не забывалась при завершении нашей программы. Давайте посмотрим, как реализовать сериализацию в Java

Люди в Oracle определяют сериализуемые объекты следующим образом:

Сериализация объекта означает преобразование его состояния в поток байтов, чтобы поток байтов мог быть возвращен обратно в копию объекта.

У программиста может быть много причин сериализовать объект, но мы сосредоточимся на причине его сохранения в файле, к которому мы будем обращаться позже.

В этом случае десериализация – это процесс преобразования сериализованной формы объекта в копию объекта для использования, как ожидается. Вы можете сериализовать любой объект, который является экземпляром класса, который либо реализует интерфейс java.io.Serializable или его подинтерфейс, сам java.io.Externalizable , либо является подклассом класса, который это делает.

Приложение

Мы собираемся создать простое приложение телефонной книги в консоли. Программа позволит пользователю добавлять контакты в свою телефонную книгу, просматривать их контакты, удалять контакты и сохранять свои контакты в файл для последующего использования. Когда пользователь завершает работу программы и запускает ее позже, ему будет предложено указать имя файла, из которого он хочет загрузить контакты своей телефонной книги. Если существует файл, содержащий сериализованную форму контактов телефонной книги, телефонная книга будет загружена с диска и предоставлена ​​пользователю для манипулирования.

Код, связанный с этой статьей, можно найти здесь .

фокус

Следуя принципу единой ответственности , в этом проекте есть шесть классов – PhoneBookApp (основной класс), PhoneBook , PhoneBookEntry и PhoneBookFileManager – и два пакета. Однако ради времени мы углубимся только в наш основной класс и пакет, содержащий классы, которые инкапсулируют функциональность нашей телефонной книги, и сосредоточимся только на частях каждого класса, которые относятся к сериализации.

PhoneBookApp

 public class PhoneBookApp { //the name of the file to save and or load a phone book to or from private static String phoneBookFileName = "default-phone-book"; //the phone book to store all the user's contacts private static PhoneBook phoneBook; //initialize a Scanner to capture user input private static Scanner userInputScanner = new Scanner(System.in); public static void main(String[] args) { Logger.message("Starting Phone Book App!"); loadPhoneBook(); //forever for(;;) { //show the menu showMenu(); } } private static void loadPhoneBook() {...} private static void showMenu() {...} private static void handleUserMenuSelection(){...} private enum UserOption{...} } 

Наш класс PhoneBookApp обрабатывает нашу программу для взаимодействия с пользователем. Программа запускается, сообщая пользователю, что мы загружаем телефонную книгу. Наш loadPhoneBook() вызывается для выполнения этой работы, запрашивая у пользователя имя файла, из которого он хочет загрузить свою телефонную книгу. Сначала файл не должен существовать, поэтому мы сообщим пользователю, что собираемся создать новую телефонную книгу для хранения своих контактов. Эта новая телефонная книга представлена ​​переменной phoneBook и ее записи будут сохранены в файле с предоставленное имя, когда придет время. Если телефонная книга загружена с диска, она будет возвращена и сохранена в phoneBook :

 private static void loadPhoneBook() { Logger.prompt("Where do you want to load your phone book from? File name: "); if(userInputScanner.hasNextLine()) { phoneBookFileName = userInputScanner.nextLine(); } //try to load the user's phone book with the file name phoneBook = PhoneBook.load(phoneBookFileName); if(phoneBook != null) { //great, the phone book was loaded Logger.message(format("Loaded your %s phone book of %d contacts.", phoneBookFileName, phoneBook.getSize()) ); } else { //no phone book loaded. create new one phoneBook = new PhoneBook(phoneBookFileName); Logger.message("Opened a new phone book at " + phoneBookFileName); } } 

Основной метод завершается показом меню возможных действий пользователю навсегда или до тех пор, пока пользователь не выйдет. Пользователь может просматривать контакты, хранящиеся в телефонной книге, добавлять новые контакты, удалять контакты, сохранять контакты в файл телефонной книги и выходить из системы, чтобы завершить работу программы. Эти действия представлены нашим перечислением UserOption и обрабатываются нашим handleUserMenuSelection() . Он просто принимает пользовательский ввод и сопоставляет его с UserOption с switch для завершения действия.

Телефонная книга

 public class PhoneBook { //the name of the file to store this phone book in disk. Unchangeable private final String fileName; /*Stores entries for this phone book. The entries of this map may be referred to as contacts*/ private final HashMap<String,PhoneBookEntry> entriesMap = new HashMap<>(); //the number of unsaved changes, such as new or removed contacts, to this phone book. private int numUnsavedChanges = 0; public PhoneBook(String fileName) {} public Collection<PhoneBookEntry> getEntries() {} public String getFileName() {...} public int getSize() {...} public int getNumUnsavedChanges() {...} public AddContactResult addContact(String name, String number) {...} public void addFromDisk(Collection<PhoneBookEntry> phoneBookEntries) {...} public boolean deleteContact(String name) {...} public void display() {...} public boolean isValidName(String name) {...} private boolean isValidPhoneNumber(String number) {} public boolean save() {...} public static PhoneBook load(String fileName) {...} public enum AddContactResult {...} } 

Наш класс PhoneBook будет моделировать телефонные книги. Он будет обрабатывать все манипуляции с контактами пользователя в его телефонных книгах. Чтобы создать новую PhoneBook , нам просто нужно предоставить ее конструктору имя файла, в который она будет сохранена. Записи контактов телефонной книги хранятся в HashMap где имя контакта является ключом, гарантирующим, что каждое имя сопоставляется только одному PhoneBookEntry . Если вы хотите дублировать имена, не стесняйтесь переключать это на List .

Класс PhoneBook предоставляет методы экземпляров для добавления и удаления контактов из телефонной книги и сохранения их контактов в файл на диске. Класс также предоставляет метод static загрузки, который принимает имя файла для загрузки и возврата PhoneBook . Методы save() и load() этого класса обращаются к своим соответствующим методам в классе PhoneBookFileManager пакета:

 public boolean save() { boolean success = PhoneBookFileManager.save(this); if(success) numUnsavedChanges = 0; return success; } public static PhoneBook load(String fileName) { return PhoneBookFileManager.load((fileName)); } 

PhoneBookEntry

Экземпляр класса PhoneBookEntry отвечает за хранение информации о контакте телефонной книги. Он должен удерживать и отображать имя и номер телефона контакта. Вот так, верно? Ну, почти. Этот класс важнее, чем может показаться на первый взгляд. Позволь мне объяснить.

Этот класс способствует сериализации нашей телефонной книги. Если это еще не ясно, важно понимать, что телефонная книга – это абстрактное понятие. Что является физическим, это контакты, которые составляют телефонную книгу. Таким образом, наиболее важной частью нашей программы является PhoneBookEntry поскольку она моделирует контакты телефонной книги. Если у нас есть контакты, у нас автоматически есть телефонная книга, потому что мы можем легко создать и заполнить телефонную книгу с ними. Поэтому нам нужно только хранить контакты в файле на диске.

Тестовое название проекта телефонной книги программы

используемыйБаза данных + JDBC + объектно-ориентированные знания, В основном разделен на пять функциональных страниц, а именноДобавить записи, найти записи, изменить записи, удалить записи и сортировать записи
Всего создано шесть классов для реализации этих пяти функциональных модулей:
1. Основной класс программы App.java
2. Класс меню Meau.java или класс окна
3. Класс реализации функции oOperate.java
4. Person.java определяет атрибуты и методы
5. Класс проверки пользовательского ввода TelNotRegex.java
6. Package.java

Информация после запуска:

Таблица таблицы построения базы данных:

CREATE TABLE telephone(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(32),
age INT,
sex VARCHAR(32),
telNum VARCHAR(32),
address VARCHAR(32)
);

SELECT *FROM telephone

Конкретная часть реализации кода:
Основной класс программы App.java

package cn.itcast.datasource.Telephone;

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

public class App {
    public static void main(String[] args) {
        / * Получить метод пула соединений * /
        JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
        Menu m = new Menu();
        m.mainMenu();
    }
}

Класс меню Meau.java или класс окна

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Scanner;

public class Menu {
    static Operate o = new Operate();
    Scanner sc = new Scanner(System.in);
    / * Получить метод пула соединений * /
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    public void mainMenu() {

        System.out.println("************** Система телефонной книги **************");
        System.out.println("**************************************");
        System.out.println("** 1 Добавить запись **");
        System.out.println("** 2 Найти записи **");
        System.out.println("** 3 Запись модификации **");
        System.out.println("** 4 Удалить запись **");
        System.out.println("** 5 Сортировать записи **");
        System.out.println("** 6 Выход из журнала **");
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 6»);
        int select = sc.nextInt();

        switch (select) {
            case 1:
               addMenu ();     // Добавить пользовательское меню
                break;
            case 2:
                searchMenu (); // Найти меню пользователя
                break;
            case 3:
                modifyMenu (); // Изменение информации о пользователе в главном меню
                break;
            case 4:
                deleteMenu ();// Удалить пользовательское меню информации
                break;
            case 5:
                 orderMenu (); // Сортировка меню информации о пользователе
                break;
            case 6: {
                // После выхода из системы вся информация о заказе будет очищена автоматически
                String sql = "TRUNCATE TABLE telephone";
                template.update(sql);
                System.out.println(«Добро пожаловать в следующий раз»);
                System.exit(0);//выбывать
            }
        }
    }
    public void addMenu (){
        System.out.println("**************** Добавить запись **************");
        System.out.println("**************************************");
        System.out.println("** 1 Добавить новую запись **");
        System.out.println("** 2 Найти все записи **");
        System.out.println("** 3 Возврат на предыдущий уровень **");
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 3»);
        o.addLogic();
    }
    public void searchMenu (){
        o.empty();
        // searchLogic () Пользовательский запрос информации управления бизнес-логикой
        System.out.println("**************** Найти записи **************");
        System.out.println("**************************************");
        System.out.println("** 1 Поиск по имени **");
        System.out.println("** 2 Найти по возрасту **");
        System.out.println("** 3 Поиск по полу **");
        System.out.println("** 4 Поиск по номеру **");
        System.out.println("** 5 Нажмите и удерживайте адрес, чтобы найти **");
        System.out.println("** 6 Просмотреть все записи **");
        System.out.println("** 7 Вернуться на предыдущий уровень **");
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 7»);
        o.searchLogic();
    }
    // modifyMenu () изменить главное меню информации о пользователе
    public void modifyMenu (){
        o.empty();
        System.out.println("**************** Запись модификации **************");
        System.out.println("**************************************");
        System.out.println("** 1 Просмотреть все записи **");
        System.out.println("** 2 Изменить указанную запись **");
        System.out.println("** 3 Возврат на предыдущий уровень **");
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 3»);
        o.modifyLogicLogic();
    }
    public void modify(){
        System.out.println("**************** Запись модификации **************");
        System.out.println("**************************************");
        System.out.println("** 1 Изменить имя **");
        System.out.println("** 2 Изменить возраст **");
        System.out.println("** 3 Изменить пол **");
        System.out.println("** 4 Изменить номер **");
        System.out.println("** 5 Изменить адрес **");
        System.out.println("** 6 Возврат на предыдущий уровень **");
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 6»);
    }
    // deleteLogic () удаляем информацию управления бизнес-логикой
    public void deleteMenu (){
        o.empty();
        System.out.println("**************** Удалить запись **************");
        System.out.println("**************************************");
        System.out.println("** 1 Просмотреть все записи **");
        System.out.println("** 2 Удалить указанную запись **");
        System.out.println("** 3 Удалить все записи **");
        System.out.println("** 4 Вернуться на предыдущий уровень **");
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 4»);
        o.deleteLogic();
    }
    // Сортировка меню информации о пользователе
    public void orderMenu (){
        o.empty();
        System.out.println("**************** Сортировать записи **************");
        System.out.println("**************************************");
        System.out.println("** 1 Сортировать по имени **");
        System.out.println("** 2 Сортировать по возрасту **");
        System.out.println("** 3 Сортировать по полу **");
        System.out.println("** 4 Просмотреть все записи **");
        System.out.println(«** 5 Вернуться на предыдущий уровень **»);
        System.out.println("**************************************");
        System.out.println(«Пожалуйста, введите правильный номер, минимум: 1, максимум: 5»);
        o.orderLogic();
    }
}

Класс реализации функции Operate.java

import cn.itcast.datasource.JDBCUtils.JDBCUtils;

import org.springframework.jdbc.core.JdbcTemplate;


import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Operate {
    / * Получить метод пула соединений * /
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    static Menu m = new Menu();
    TelNoteRegex tel = new TelNoteRegex();
    Scanner sc = new Scanner(System.in);
    Package pk =new Package();
    int count = 100;// Память телефонной книги
    int s;// Определяем глобальную переменную s
    int choice;
    Long tot;
    // Когда информация о пользователе пуста, выдается подсказка
    public void empty(){
        tot = pk.total();
        if(tot==0){
            System.out.println("Извините, он еще не был сохранен, пожалуйста, работайте после сохранения !!!");
            m.mainMenu();
        }
    }
    // Поиск, чтобы определить, существует ли пользователь
    public void judge(List list){
        if(list != null && !list.isEmpty()){
            System.out.println(list);
        }else{
            System.out.println("Найденный пользователь не существует, пожалуйста, проверьте и выполните поиск!");
        }
    }
    // ddLogic () Пользователь добавляет управление информацией бизнес-логики
    public void addLogic() {
        int select = sc.nextInt();
      select= tel.selectRegex(select);
        switch (select) {
            case 1:
                addOperation();// Добавить новую запись
                m.mainMenu();
            case 2:
                showAll();// Просмотр всех записей
                m.mainMenu();
            case 3:
                m.mainMenu();// Возврат в предыдущее меню
                break;
        }
    }
    // Обновляем данные в таблице
    public void addOperation() {
        for (int j = s; j <= count; j++) {// Ограничение длины таблицы базы данных
            ++s;
            if (s <= count) {  // Добавить информацию телефонной книги
                // Добавить запись, установить начальный номер каждой телефонной книги на 123456
                String sql = "insert into telephone(telNum )values (?)";
                template.update(sql, "123456");
                System.out.println(«Значение с»+s);
                System.out.println(«Введите имя, 1-10 букв»);
                String name = sc.next();
               tel.nameRegex(name);
                // Определяем, существует ли имя пользователя уже
                String sql9= "select *from telephone where name = ?";
                List<Map<String, Object>> list1 = template.queryForList(sql9, name);
                if(list1 != null && !list1.isEmpty()){
                    System.out.println("Имя пользователя уже существует, пожалуйста, войдите снова после проверки!");
                    // Удалить текущую добавленную пустую строку
                    String sql10 ="delete from telephone where id = ?";
// System.out.println ("Не вычтено раньше" + s);
                    template.update(sql10,s);
                    s--;
// System.out.println ("+ s после вычитания");
                    m.addMenu();
                }else{
                    tel.nameRegex(name);
                }
                // Изменение порядка содержимого базы данных
                pk.update();
                // Обновляем данные в таблице
                String sql1 = "update telephone set name = ? where id = ?";
                template.update(sql1, name, s);
                System.out.println("Введите возраст, 1-100 лет");
                int age = sc.nextInt();
                tel.ageRegex(age);
                String sql2 = "update telephone set age = ? where id = ?";
                template.update(sql2, age, s);
                System.out.println(«Введите пол, (мужчина m или M) (женщина f или F)»);
                String sex = sc.next();
                tel.sexRegex(sex);
                String sql3 = "update telephone set sex = ? where id = ?";
                template.update(sql3, sex, s);
                System.out.println(«Введите номер телефона, 6-10 букв»);
                String telNum = sc.next();
                tel.telNumRegex(telNum);
                String sql4 = "update telephone set telNum = ? where id = ?";
                template.update(sql4, telNum, s);
                System.out.println(«Введите адрес, 1-20 букв или цифр»);
                String address = sc.next();
                tel.addressRegex(address);
                System.out.println(address);
                String sql5 = "update telephone set address = ? where id = ?";
                template.update(sql5, address, s);
                System.out.println("Добавлено успешно!");
                break;
            } else {
                System.out.println("Извините, память телефонной книги заполнена!");
                break;
            }
        }
    }
    public void showAll() {
        // Обходим телефонный стол
        String sql = "select * from telephone";
        List<Map<String, Object>> list = template.queryForList(sql);
        for (Map<String, Object> stringObjectMap : list) {
            System.out.println(stringObjectMap);
        }
    }
    // searchLogic () Пользовательский запрос информации управления бизнес-логикой
    public void searchLogic(){
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                searchByName();// Запрос информации о пользователе по имени
                m.mainMenu();
            case 2:
                searchByAge();// Запрос информации о пользователе по возрасту
                m.mainMenu();
            case 3:
                searchBySex();// Запрос информации о пользователе по полу
                m.mainMenu();
            case 4:
                searchByTelNum();// Запрос информации о пользователе по номеру телефона
                m.mainMenu();
            case 5:
                searchByAdd();// Запрос информации о пользователе по адресу
                m.mainMenu();
            case 6:
                showAll();// Запрос всей пользовательской информации
                m.mainMenu();
            case 7:
                m.mainMenu();// Возврат в предыдущее меню
                break;
        }
    }
    public void searchByName(){
        System.out.println(«Введите имя, 1-10 букв»);
        String name = sc.next();
        tel.nameRegex(name);
        String sql = "select *from telephone where name = ?";
        List<Map<String, Object>> list = template.queryForList(sql, name);
        judge(list);
    }
    public void searchByAge(){
        System.out.println("Введите возраст, 1-100 лет");
        int age = sc.nextInt();
        tel.ageRegex(age);
        String sql = "select *from telephone where age = ?";
        List<Map<String, Object>> list = template.queryForList(sql, age);
        judge(list);
    }
    public void searchBySex(){
        System.out.println(«Введите пол, (мужчина m или M) (женщина f или F)»);
        String sex = sc.next();
        tel.sexRegex(sex);
        String sql = "select *from telephone where sex = ?";
        List<Map<String, Object>> list = template.queryForList(sql, sex);
        judge(list);
    }
    public void searchByTelNum(){
        System.out.println(«Введите номер телефона, 6-10 букв»);
        String telNum = sc.next();
        tel.telNumRegex(telNum);
        String sql = "select *from telephone where telNum = ?";
        List<Map<String, Object>> list = template.queryForList(sql, telNum);
        judge(list);
    }
    public void searchByAdd(){
        System.out.println(«Введите адрес, 1-20 букв или цифр»);
        String address = sc.next();
        tel.addressRegex(address);
        String sql = "select *from telephone where address = ?";
        List<Map<String, Object>> list = template.queryForList(sql, address);
        judge(list);
    }
    // modifyLogicLogic () изменить управление информацией бизнес-логики
    public void modifyLogicLogic(){
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                showAll();// Просмотр всех записей
                m.mainMenu();
            case 2:
                modify();// Изменить указанную информацию пользователя
                m.mainMenu();
            case 3:
                m.mainMenu();// Возврат в предыдущее меню
        }
    }
    public void modify(){
        System.out.println(«Пожалуйста, введите номер записи:»);
        System.out.println(«Пожалуйста, введите правильное число: минимум 1 и максимум»+tot);
        choice=sc.nextInt();
        m.modify();
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                modifyByName();// по имени
                m.modifyMenu();
            case 2:
                modifyByAge();// по возрасту
                m.modifyMenu();
            case 3:
                modifyBySex();// по полу
                m.modifyMenu();
            case 4:
                modifyByTelNum();// по номеру телефона
                m.modifyMenu();
            case 5:
                modifyByAdd();// по адресу
                m.modifyMenu();
            case 6:
                m.modifyMenu();// Возврат в предыдущее меню
                break;
        }
    }
    public void  modifyByName(){
        String sql = "update telephone set name = ? where id = ?";
        System.out.println(«Введите имя, 1-10 букв»);
        String name = sc.next();
        tel.nameRegex(name);
        template.update(sql,name,choice);
        System.out.println("Имя изменено успешно!");
    }
    public void modifyByAge(){
        String sql = "update telephone set age = ? where id = ?";
        System.out.println("Введите возраст, 1-100 лет");
        int age = sc.nextInt();
        tel.ageRegex(age);
        template.update(sql,age,choice);
        System.out.println("Возраст успешно изменен!");
    }
    public void modifyBySex(){
        String sql = "update telephone set sex = ? where id = ?";
        System.out.println(«Введите пол, (мужчина m или M) (женщина f или F)»);
        String sex = sc.next();
        tel.sexRegex(sex);
        template.update(sql,sex,choice);
        System.out.println("Секс изменен успешно!");
    }
    public void modifyByTelNum(){
        String sql = "update telephone set telNum = ? where id = ?";
        System.out.println(«Введите номер телефона, 6-10 букв»);
        String telNum = sc.next();
        tel.telNumRegex(telNum);
        template.update(sql,telNum,choice);
        System.out.println("Номер телефона изменен успешно!");
    }
    public void modifyByAdd(){
        String sql = "update telephone set address = ? where id = ?";
        System.out.println(«Введите адрес, 1-20 букв или цифр»);
        String address = sc.next();
        tel.addressRegex(address);
        template.update(sql,address,choice);
        System.out.println("Адрес успешно изменен!");
    }
    public void deleteLogic(){
        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                showAll();// Просмотр всех записей
                m.deleteMenu();
            case 2:
                delete();// Удалить указанную информацию пользователя
                m.deleteMenu();
            case 3:
                deleteAll();// Удалить всю информацию пользователя
                m.deleteMenu();
            case 4:
                m.mainMenu();// Возврат в предыдущее меню
                break;
        }
    }
    public void delete(){
        System.out.println(«Пожалуйста, введите правильное число: минимум 1 и максимум»+tot);
        System.out.println(«Пожалуйста, введите номер записи:»);

        int select = sc.nextInt();
        String sql = "delete from telephone where id = ?";
         template.update(sql,select);
        System.out.println("Удалить успешно, пожалуйста, продолжайте!");
        // Изменение порядка содержимого базы данных
        pk.update();
    }
    public void deleteAll(){
        String sql = "TRUNCATE TABLE telephone";
        template.update(sql);
        System.out.println(«Содержимое телефонной книги очищено, продолжайте!»);
        m.mainMenu();
    }
    // orderLogic () управление информацией бизнес логики
    public void orderLogic(){

        int select = sc.nextInt();
        select= tel.selectRegex(select);
        switch (select){
            case 1:
                orderName();// Сортировка информации о пользователе по имени
                m.orderMenu();
            case 2:
                orderAge();// Сортировка информации о пользователе по возрасту
                m.orderMenu();
            case 3:
                orderSex();// Сортировка информации о пользователе по полу
                m.orderMenu();
            case 4:
                showAll();
            case 5:
                m.mainMenu();// Возврат в предыдущее меню
                break;
        }
    }
    public void orderName(){
        System.out.println("Результаты отсортированы по имени:");
        String sql ="SELECT * FROM telephone ORDER BY name asc";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }
    public void orderAge(){
        System.out.println("Результаты отсортированы по возрасту:");
        String sql ="SELECT * FROM telephone ORDER BY age DESC";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }
    public void orderSex(){
        System.out.println("Результаты отсортированы по полу:");
        String sql ="SELECT * FROM telephone ORDER BY sex asc";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }
}


Person.java определяет атрибуты и методы

public class Person {
    private int id; // идентификатор пользователя
    private String name;// Атрибут имени пользователя
    private int age;// Атрибут возраста пользователя
    private String sex; // Половой атрибут пользователя
    private String telNum;// Атрибуты номера телефона пользователя
    private String address; // Атрибут адреса пользователя

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", age='" + age + ''' +
                ", sex='" + sex + ''' +
                ", telNum='" + telNum + ''' +
                ", address='" + address + ''' +
                '}';
    }

    public Person() {
    }

    public Person(int id, String name, int age, String sex, String telNum, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.telNum = telNum;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getTelNum() {
        return telNum;
    }

    public void setTelNum(String telNum) {
        this.telNum = telNum;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

TelNotRegex.java класс подтверждения ввода пользователя

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Scanner;

public class TelNoteRegex {
    / * Получить метод пула соединений * /
    static JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
  static   Scanner sc = new Scanner(System.in);
  static Operate o =new Operate();
  static  Package pk = new Package();

    public  static int selectRegex(int select){
        while (true){
            if (select<0||select>10){
                System.out.println(«Ваша операция ввода неверна! Пожалуйста, введите заново»);
                select=sc.nextInt();
                selectRegex(select);
            }else {
                break;
            }
        }
        return select;
    }
    public static String nameRegex(String name){
        while (true){
            if(name.length()<1||name.length()>10){
                System.out.println(«Ваша операция ввода неверна! Пожалуйста, введите заново»);
                 name = sc.next();
            }else {
                break;
            }
        }
        return name;
    }
    public  static int ageRegex(int age){
        while (true){
            if (age<1||age>138){
                System.out.println(«Ваша операция ввода неверна! Пожалуйста, введите заново»);
                age=sc.nextInt();
                ageRegex(age);
            }else {
                break;
            }
        }
        return age;
    }
    public static String sexRegex(String sex){
        while (true){
            String str = "m";
            if(!(sex.equals("m") || sex.equals("M") || sex.equals("f") || sex.equals("F"))) {
                System.out.println(«Ваша операция ввода неверна! Пожалуйста, введите заново»);
                sex = sc.next();
                sexRegex(sex);
            }else {
                break;
            }
        }
        return sex;
    }
    public static String telNumRegex(String telNum){
      boolean a = false,b;
      char[]ch=telNum.toCharArray();
        for (int i = 0; i <ch.length ; i++) {
            if (ch[i]>='1'&&ch[i]<='9'){
                a=true;
            }else {
                a=false;
            }
        }
            if(telNum.length()<=11||telNum.length()>=6){
                b=true;
            }else {
                b=false;
            }
            if(!a&&b){
                System.out.println(«Ваша операция ввода неверна! Пожалуйста, введите заново»);
                telNum=sc.next();
                telNum=telNumRegex(telNum);
            }
        return telNum;
    }
    public static String addressRegex(String address){
        while (true){
            int len = address.length();
            if (len>20||len<1){
                System.out.println(«Ваша операция ввода неверна! Пожалуйста, введите заново»);
                address=sc.next();
                address=addressRegex(address);
            }else {
                break;
            }
        }
        return address;
    }
}

Package.java

import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;


public class Package {
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); / * Получить метод пула соединений * /

    public Long total(){
        // Запрос общего количества записей в телефонной таблице
        String sql= "select count(Id) from telephone";
        Long total = template.queryForObject(sql,Long.class);
        return total;
    }
    // Изменение порядка содержимого базы данных в соответствии со значением идентификатора
    public void update()  {
        String sql1="ALTER TABLE telephone DROP id";
        String sql2="ALTER TABLE telephone ADD id INT(3) NOT NULL FIRST";
        String sql3="ALTER TABLE telephone MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id)";
        template.update(sql1);
        template.update(sql2);
        template.update(sql3);
    }
}

Для получения исходного кода, пожалуйста, посетите ссылку Baidu Netdisk:

https://pan.baidu.com/s/1Xs3vpKn2zTNX6ZlAih0UVQ
Код извлечения:81kw

Понравилась статья? Поделить с друзьями:
  • Напишите предложения используя подсказки как показано на примере that s a fast car
  • Напишите как конкретно изменятся ниже перечисленные параметры при декомпенсации порока сердца
  • Напишите имя первого русского книгопечатника как называется первая печатная книга
  • Напишите правила которые должен выполнять велосипедист как участник дорожного движения
  • Напишите как иностранцы видят россиян приведите примеры