Тестовое задание DoveSoftware – 2013

Продолжаем обсуждение тестовых заданий. Данное тестовое задание предлагается кандидатам в компании DoveSoftware. Задание интересно тем, что располагает к написанию мини проекта, чем к реализации малой его части. Написание проекта с нуля достаточно интересное и увлекательное занятие. Получилось много кода, много шаблонов было задействовано, однако получилось интересно. Исходный код проекта и скрипт для создания базы данных можно скачать здесь Source

Расходная накладная

(актуальная версия -> http://goo.gl/zHUV3 )

Программа выписки расходных накладных

  1. Среда разработки: Delphi XE (использовать только стандартные компоненты)
  2. Использовать компоненты доступа ADO (можно BDE)
  3. Программа должна выводить диалог подключения к базе данных (БД) с  запросом:
    1. имени пользователя
    2. пароля
    3. сервера БД
    4. имени БД
  4. СУБД: MS SQL (2005, 2008)
  5. База данных должна быть спроектирована для работы с большими объемами данных
  6. База данных создается вручную исключительно с помощью DDL-скриптов (приложить скрипты)
  7. По возможности без хранимок, но не исключать их использование в будущем при доработке приложения
  8. Программа состоит из главного окна, представляющего собой расходную накладную
  9. Расходная накладная имеет:
    1. заголовок: дата, номер, фирма (наша фирма), склад, предприятие (клиент), примечание
    2. товарную часть: позиция, товар, количество, цена, сумма (сумма хранится в базе и автоматически рассчитывается при изменении количества или цены)
  10. Интерфейс для ввода справочных данных реализовывать не обязательно, но при желании можно
  11. Справочники состоят только из кода и имени

Важные моменты

  • точность выполнения задания (не допускать – необоснованное наращивание функционала, не определенного ТЗ, доказать необходимость в противном случае)
  • сроки (чем больше времени занимает реализация – тем качественней должен быть результат)
  • интерфейс, юзабилити (программа должна быть удобной конечному потребителю, но в рамках требований ТЗ)
  • компактность кода, повторное использование
  • ООП, паттерны – (обоснование применения)
  • ориентированность на изменения

Срок исполнения:  8-16  рабочих часов

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

Инструкция

Написания кода в программах для кандидатов

Имена

Объект Префикс имени Размер
Форма приложения fa_ (файл af_) Для форм – ClientH, ClientW250 x 450, 300 x 500350 x 550, 400 x 600
Общая форма fz_  (файл zf_)
Общий модуль zm_%ModuleName%
Модуль программы am_%ExeName%%ModuleName%
Модуль данных (TDataModule) fd_ (файл df_)
Прочие компоненты ctl_ 20 or std x …
Button btn_ 25 x 75, 100, 130, 150, 170
Label lbl_ 20 x …
Data Label (DBText) dbl 20 x …
Speed Button sbt_ std
GroupBox grp_
TNotebook,TPageControl ctl_Pages TabWidth 130TabHeight 25
TTabSheet tab_
Connection, Database db_
Table dt_
Query dq_
Datasource ds_
MainMenu mnu_Main, mnu_
PopupMenu mnp_Main, mnp
MenuItem mni_
Action act_

Расстояния между компонентами 5 (иногда 10). Все размеры компонентов должны быть кратны 5. В Delphi есть глюк: при сетке в 5 пикселей и ручном изменении размера по правой/нижней границе размер устанавливается на 1 больше (не 500, а 501). Это необходимо корректировать вручную. Исключение составляют компоненты, расположенные на PageControls и имеющие выравнивание alClient.

Все зарезервированные слова пишутся с большой буквы (Begin, End, While, Not, If, Or …).

Все имена (поля, процедуры, переменные и т.п.) описываются английскими словами (не “Sklad”, а “Stock”, не «NomerDocumenta», а “DocID”). Если в наименовании несколько смысловых значений, каждое из них начинается с большой буквы. Например, RecalculateRemainds или TotalSum. Желательно согласовывать все имена.

Все имена (кроме циклов i и временной строки s) должны иметь осмысленное значение на английском языке.

Все имена не должны совпадать с зарезервированными Delphi или SQL. Например, SUM, MAX, MIN и т.п.

Шрифт формы Tahoma, 8; Charset = RUSSIAN_CHARSET.

При описании переменных в теле private, public, published на одну переменную – одна строка (нельзя писать a, b, c: Integer).

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

Код программы

Примеры использования uses, procedure и т.п. описаны ниже.

Все строки внутри логических циклов смещаются на 2 пробела.

Если If не содержит Begin..End, все пишется в одну строку (пример ниже)

Implementation{$R *.DFM}Uses

zm_Module1;

 

Procedure YourTest;BeginBegin

Something;

End;

End;

 

Procedure LoopTest;BeginFor i:= 0 To Var Do

Begin

Something;

End;

End;

 

Procedure IfTest;Vara, b: Integer;

Begin

If a > b Then

Begin

Something;

End

Else If b > a Then Exit;

End;

Процедуры и функции отделяются друг от друга строкой

Share

Tags: , , ,

Leave a Reply