Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > разбор выражения


Автор: cube 14.8.2009, 18:57
есть строка типа "1+1" в моей программе это означает режим работы мастера, т.е. мастер работает день через день, или вот еще "(12:15)+2" означает что мастер работает с 12 до 15 и два дня отдыхает...

Этот синтаксис зависит от меня, - я разработчик, но чтобы не изобретать велосипед, может подскажете какие-нибудь удобные решения?

В дальнейшем в программе по графику 1+1 будет вызываться метод, который парсит эту логику и по ней произхводит необходимые действия.Спасибо!

Автор: garbuz 14.8.2009, 19:19
Что-то ерунда какая-то имхо. Используйте классы Date, Calendar и DateFormat.

Автор: cube 14.8.2009, 19:32
Цитата(garbuz @ 14.8.2009,  19:19)
Что-то ерунда какая-то имхо. Используйте классы Date, Calendar и DateFormat.

человек должен на месяц или хуже на год забить график работы мастеру, он не будет же делать это вручную?
а если через месяц график работы мастера меняется, и меняются графики работы других мастеров? как быть?

то что программно переформируется "1+1" на даты и в базе данных сохранятся именно даты - это понятно.

Автор: COVD 14.8.2009, 20:08
У вас, наверное, учебный проект. Иначе трудно представить зачем такие сложности в сфере бытового обслуживания smile. Если у вас Windows, то примеры расписаний можно посмотреть в ControlPanel->ScheduledTasks-> Add SheduledTask->... Там, конечно, нет варианта "сутки через двое", но идея понятная - каждому работнику назначается обьект - расписание. Этот обьект хранит необходимые данные (день старта, периодичность, часы работы), на основании которых в будующем можно вычислить текущее расписание работника при отображении в таблицах.

Автор: cube 14.8.2009, 22:24
У меня русская виста, не могу найти ваш пример...
Проект учебный - для меня, но не для заказчика)) 

Если честно много чему научился когда начал вести этот проект.
Задача такая встречается довольно часто в сферах обслуживания, я не знаю почему вы так написали... 

Мой проект - программа для салона красоты. Основная задача которой систематизировать запись клиентов в салон и график работ мастеров. Все поделено на виды услуг, услуги, клиенты, мастера и т.д... график работ тоже не исключение. Вот именно там и требуется чтобы администратор салона мог расписать график работы мастеру на неделю, месяц или год... так же чтобы имелась возможность копировать график с предыдущего месяца, недели... Мало того администратор долже иметь возможность сам создавать графики (день через день, сутки через двое, пять на семь, шесть на семь, двое через сутки....) и даже больше - мастер может работать и по пол дня, и так же отдыхать, так же и по часово... Естественно когда администратор будет принимать заказ он графически должен видеть какой мастер каких видов услуг когда работет, когда занят и когда свободен...

И заказчика такая возможность очень интересует...

Автор: COVD 14.8.2009, 23:01
Цитата

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

Потому, что обычно это заведения, в которых численность работающих небольшая. График работы у них бывает сбивается, подменяют друг друга, у мастеров появляются постоянные клиенты. В таких условиях проще управляться без компьютера. Но раз заказали - дерзайте.     

Автор: Skynin 14.8.2009, 23:10
Цитата

то что программно переформируется "1+1" на даты и в базе данных сохранятся именно даты - это понятно. 

Не один год решал эти задачи на 1С:Зарплата и в самописных системах (на FoxPro и MUMPSе), так что сразу скажу - хранить даты вместо графика - неверно. Только для совсем простых случаев подойдет. Но для того что Вы хотите, создание и копирование графиков, замены, подмены - нужно хранить именно график как он есть. Возможно хранить два, планируемый и отклонения. Или 3 - планируемый и ожидаемые отклонения и реальные отклонения. Или вообще с табеля начать, взяв за основу формы Т-12, Т-13 И т.д.

В общем случае - задачи эти весьма нетривиальны, и "классы Date, Calendar и DateFormat" примерно как - для отображения GUI окна используйте байты, слова и инты. Такой низкий уровень почти никак не поможет для решения Вашей задачи.

Библиотеки не подскажу, погуглите "open ERP Java", Salary. Или "Учет рабочего времени" и посмотреть демки программ, чтобы проникнуться темой smile 

Автор: COVD 14.8.2009, 23:17
Цитата

Или "Учет рабочего времени" и посмотреть демки программ, чтобы проникнуться темой 

это самое правильное - начать с существующих приложений (1С ?)

Автор: cube 14.8.2009, 23:22
Цитата(Skynin @ 14.8.2009,  23:10)
Цитата

то что программно переформируется "1+1" на даты и в базе данных сохранятся именно даты - это понятно. 

Не один год решал эти задачи на 1С:Зарплата и в самописных системах (на FoxPro и MUMPSе), так что сразу скажу - хранить даты вместо графика - неверно. Только для совсем простых случаев подойдет. Но для того что Вы хотите, создание и копирование графиков, замены, подмены - нужно хранить именно график как он есть. Возможно хранить два, планируемый и отклонения. Или 3 - планируемый и ожидаемые отклонения и реальные отклонения. Или вообще с табеля начать, взяв за основу формы Т-12, Т-13 И т.д.

В общем случае - задачи эти весьма нетривиальны, и "классы Date, Calendar и DateFormat" примерно как - для отображения GUI окна используйте байты, слова и инты. Такой низкий уровень почти никак не поможет для решения Вашей задачи.

Библиотеки не подскажу, погуглите "open ERP Java", Salary. Или "Учет рабочего времени" и посмотреть демки программ, чтобы проникнуться темой smile

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

Что касается дат и календарей, то у меня есть некоторые шаблоны с логикой, вначале темы я писал про это... а как в базе храниться, это уже второй вопрос... почему не храниться график - потому как по графику расписание создается один раз + иногда редактирование, а вот с днем на которое приходится расписание человек работает постоянно... мало того другая система дергает отчеты из этой базы... и усложняться самому + усложнить ту систему - меня уволят просто

Автор: Skynin 14.8.2009, 23:29
Цитата(COVD @ 14.8.2009,  23:17)
это самое правильное - начать с существующих приложений (1С ?)

Правильное решение в данном случае - начать с освоения предметной области, абстрагировавшись от инструментов.
Но тогда придется читать "скучную" литературу расчетчика зарплаты.
Поэтому более щадящий вариант - посмотреть как сделано другими, вначале снаружи (вместо "скучной" книжки) потом внутри.

Упомянутые требования по задаче указывают что это не "Hello world" написать, а нужно
1. понять предметную область
2. спроектировать реализацию
3. наваять

В 1С, кстати, при всей ее заточенности подсистема расчета зарплаты - самая слабая из трех (бух учет, опер учет)
Не их вина, "начисление зарплаты является одним из самых сложных разделов бух учета"(С)
А состоит он из двух Кусков - деньги и время. Самый простой вариант второго куска- прямой учет - когда нет привязки к графикам, а просто ведем табель. 
Но нужны то - графики  и операции над ними smile 

Такая вот предисловие.

Цитата

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

99,9% заказчиков так считают. И хотят побыстрее.

Но взять и подключить - уверен не получится.
Даже если найдете то что нужно.

Цитата
а как в базе храниться, это уже второй вопрос...

Э-э-э не, smile Впрочем, похоже предпочитаете учиться на собственных ошибках?

Цитата
почему не храниться график - потому как по графику расписание создается один раз + иногда редактирование, а вот с днем на которое приходится расписание человек работает постоянно...

А что же тогда будете копировать? А как будете переводить человека на другой график, заставлять оператора перешлепывать даты?

Далее - "иногда" в таких ситуациях - почему-то норовит превратится во "всегда"

Цитата
мало того другая система дергает отчеты из этой базы... и усложняться самому + усложнить ту систему - меня уволят просто

И что? У Вас нет возможности хранить свои данные в базе? 

Но хорошо, знаете как просто - делайте smile
ИМХО - случится по аналогии "скупой платит дважды" и будет надцать велосипедов с заплатками на жвачке и скотче и связанные между собой бечевками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)