Перейти к содержанию

Подскажите инструментарий для создания сложного прикладного приложения


Гость

Рекомендуемые сообщения

Требуется запрограммировать одну уже решенную (математически) прикладную задачу. К сожалению, опыт программирования под Linux отсутствует.

Дано.

1. База данных некоторых стандартных для реляционных БД объектов.

2. Список документов шаблоны которых известны и которые формируются на основе разнообразных запросов к базе данных объектов.

Документы практически на 100% имеют табличный вид.

3. Алгоритмы, при помощи которых формируются документы из обработанных элементов базы данных.

Причем, запросы к базе данных могут быть сложными.

Например в базе данных будут таблицы, скажем, вакантных должностей и таблицы кандидатов на эти должности. В БД будет храниться матрица стоимостей назначений i-го кандидата на j-ю должность.

При запросе к БД будет требоваться найти такое закрепление кандидатов за вакантными должностями, при котором общая стоимость назначений будет минимально возможной.

Т.е. будет решаться комбинаторная Задача о Назначениях.

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

К чему я клоню? Просто ИМХО для получения таких документов проблематично будет применять стандартные запросы SQL...

Найти.

Список инструментов ОС Linux, при помощи которых можно будет создать такую прикладную программу.

Требования (в идеале).

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

Основной режим заполнения БД таков. Основное заполнение идет из текстового файла, а небольшая коррекция данных - в диалоговом режиме.

2. Выдаваемые документы должны лекго трансформироваться в формат либо MS Word, либо MS Excel.

3. Пользовательский интерфейс должен быть графическим и дружественным. Причем, как в плане заполнения БД, так и при выдаче документов.

4. Инструментарий должен быть OpenSource и весьма жалетельно, чтобы были аналоги под Windows (например, пакет MySQL есть как под Linux, так и под Windows).

5. ПО должно быть сетевым (хотя в явном виде подобных требований пока нет, но скорее всего будут). Функционировать оно будет внутри замкнутой сети, поэтому сторонние сервера привлекать нельзя.

P.S. Что уже было сделано и с какими проблемами приходилось сталкиваться.

1. Примерно такая же программа уже была давно написана под DOS в среде Turbo Vision. СУБД ваяли сами на Паскале Smile Почему это ПО сейчас не устраивает, надеюсь, комментировать не надо?

2. В свое время мы пробовали сделать эту программу в среде Delphi под Windows.

Все бы ничего, если бы не некоторые ограничения и неприятности. Например, во многих выходных табличных документах требовалось получить объединенные ячейки (как по вертикали, так и по горизонтали - таблицы имели сложный вид). А объекты Delphi этого ИМХО не любят...

Кроме того, при экспорте документов в MS Excel скорость передачи составляет примерно 3 строчки в секунду из-за тормознутости соответсствующих объектов MS Office.

А в некоторых документах присутствует до 2000 строк. Итого документ даже на экране формируется за 10 минут на P-IV со скоростным винтом. А это неприемлемо много для наших целей (требования заказчика). К слову сказать, в Borland Pascal (Turbo Vision) эти документы рисуются из символов псевдографики за доли секунды...

3. Пока остановились вот на какой связке:

Apache Server + PhP + MySQL

То есть прикладную программу хотим оформить в виде сайта Smile)

Документы будем хранить, генерировать и отображать в HTML формате броузером Mozilla. Интерфейс тоже планрируем оформлять в HTML и отображать в броузере (файл index.html).

Формат HTML притягателен своей универсальностью - его может импортировать и MS Word, и MS Excel...

В этом выборе смущают две вещи.

А). Достаточно ли перечисленных средств для организации в броузере всплывающих диалоговых окон? Например, диалог ввода в программу текущего времени, которое может не совпадать с BIOS-временем.

Б). Я не вижу, как в планируемой связке программ организовать расчетные алгоритмы.

То есть в интерфейсе программы (web-страница), методом использования диалоговых окон, списков и т.п. мы определяем выборку из MySQL базы данных.

Далее отфильтрованные данные по-идее должна воспринять какая-то программа типа процедуры Паскаля или С, поместить данные в массивы и запустить счетные алгоритмы (задача о назначениях, задача коммивояжера и пр.). Вот тут я не знаю, что использовать и как организовать передачу данных. Эта библиотека расчетных программ должна быть написана либо на компиляторе С, либо на компиляторе Паскаля (Паскаль предпочтителен, ибо на нем уже написаны все программы обработки данных). Интерпретаторы неприемлемы.

После окончания расчетов процедура должна передать вновь сформированные данные в PhP для формирования выходного документа (шаблоны документов даны). Этот документ должен быть выдан (всплыть) в виде окна web-броузера.

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

Ссылка на комментарий
Поделиться на другие сайты

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

> Достаточно ли перечисленных средств для организации в броузере

> сплывающих диалоговых окон? Например, диалог ввода в программу

> текущего времени, которое может не совпадать с BIOS-временем.

Это можно реализовать на JavaScript. Если возможностей не хватит - использовать Popup-окно HTML с формой, которая обрабатывается скриптом на PHP.

> Далее отфильтрованные данные по-идее должна воспринять какая-то

> программа типа процедуры Паскаля или С, поместить данные в массивы > и

> запустить счетные алгоритмы (задача о назначениях, задача

> коммивояжера и пр.). Вот тут я не знаю, что использовать и как

> организовать передачу данных. Эта библиотека расчетных программ

> должна быть написана либо на компиляторе С, либо на компиляторе

> Паскаля (Паскаль предпочтителен, ибо на нем уже написаны все

> программы обработки данных). Интерпретаторы неприемлемы.

Используйте cgi-программу на C или Pascal. А если все-таки возможно, почему бы не использовать PHP или Perl? Или там сложные расчеты либо передача данных?

В случае, если решите отказаться от Apache+PHP+MySQL, лучше использовать C/C++ - под Linux есть интерфейсы для работы с MySQL и другими БД, а также сами понимаете сколько всего еще. Насчет Паскаля под Linux не знаю, может он вам и больше подойдет, только по-моему там дела обстоят не очень хорошо в плане компиляторов и интерфейсов (см. FreePascal).

В качестве GUI я бы посоветовал QT (KDELib), т.к. там есть все возможности для работы с таблицами, а сама библиотека имеет удобный объектно-ориентированный программный интерфейс.

Есть еще вариант использовать Java.

Если что - пишите. Удачи в проекте. Надеюсь помог.

Игорь.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...