Skip to content

Server maven application playing the role of a personal finance manager

Notifications You must be signed in to change notification settings

KrozhDev/financeManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Менеджер личных финансов

Описание

Cерверное мавен-приложение, играющее роль менеджера личных финансов. У приложения в корневой папке находится текстовый файл categories.tsv, категоризирующий название каждой покупки (разделитель - символ Tab, в джаве пишется как '\t'):

булка	еда
колбаса	еда
сухарики	еда
курица	еда
тапки	одежда
шапка	одежда
мыло	быт
акции	финансы

На сервер будут приходить запросы на этот порт с информацией о покупке в формате json:

1 {"title": "булка", "date": "2022.02.08", "sum": 200} Дата будет именно в таком формате - год.месяц.число. Приходит название покупки, а не категория. Если названия в файле категорий нет, то должна выбиратья категория другое.

Сервер отвечает в формате JSON:

{
  "maxCategory": {
    "category": "еда",
    "sum": 350000
  }
}

Этот объект состоит из поля, каждое из которых отображает максимальную по абсолютным тратам категорию за весь период.

Сервер запускается в main класса Main (без пакета) и слушает запросы, приходяшие на порт 8989.

Простой сервер

try (ServerSocket serverSocket = new ServerSocket(8989);) { // стартуем сервер один(!) раз
    while (true) { // в цикле(!) принимаем подключения
        try (
            Socket socket = serverSocket.accept();
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream());
        ) {
// обработка одного подключения
          }
    }
} catch (IOException e) {
    System.out.println("Не могу стартовать сервер");
    e.printStackTrace();
    }

Добавлено автосохранение данных: после каждой операции сервер записывает в файл data.bin, размещённый в корне проекта, всю нужную статистику для работы сервера. В случае старта сервера и наличия этого файла, он загружает все предыдущие данные из него.

Объект статистики содержит дополнительные поля, которые показывают максимальную категорию за год, месяц и день сохранённой покупки:

{
  "maxCategory": {
    "category": "еда",
    "sum": 350000
  },
  "maxYearCategory": {
    "category": "еда",
    "sum": 300000
  },
  "maxMonthCategory": {
    "category": "еда",
    "sum": 24000
  },
  "maxDayCategory": {
    "category": "одежда",
    "sum": 3000
  },
}

Этот объект состоит из четырёх полей, каждое из которых отображает максимальную по абсолютным тратам категорию за соответствующий период - maxCategory за всё время, maxYearCategory - за год добавленной покупки, maxMonthCategory за месяц добавленной покупки, maxDayCategory за день добавленной покупки.

About

Server maven application playing the role of a personal finance manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages