Учебная работа. Реферат: Учёт поступления и выдачи книг

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Учёт поступления и выдачи книг

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение среднего проф образования

Уфимский институт статистики информатики и вычислительной техники

УТВЕРЖДАЮ

Заместитель директора

по учебной работе

__________З.З. Курмашева

«___» ___________ 2008 г.




УЧЕТ ПОСТУПЛЕНИЯ И ВЫДАЧИ КНИГ

Объяснительная записка к курсовому проекту

Управляющий проекта __________Е.И. Марковникова

«___» ____________2008г.



Выполнил студент гр. 3П-3

___________Юсупов А. М.

«___» ____________2008г.




2008


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ

УТВЕРЖДАЮ

Председатель цикловой комиссии информатики и программирования

/Каримова Р. Ф.

« » 2008 г.

ЗАДАНИЕ

на курсовой проект студента дневного отделения группы 3П-3 специальность 230105 Фамилия, имя, Отчество:

Юсупова Айдара Марсовича

Предмет: разработка разработки программных товаров

Тема курсового проекта:

Учет поступления и выдачи книжек

Начальные данные: контрольный пример, постановка задачки

1) При выполнении курсового проекта обязана быть предоставлена записка,

состоящая из последующих разделов и подразделов:

Введение

1 Постановка задачки

Описание предметной области

Многофункциональная схема задачки

Схема данных

Описание входной инфы

Описание структуры базы данных

Описание выходной инфы

Контрольный пример

Общие требования к продукту

  • Экспериментальный раздел

  • Обоснование выбора языка программирования

    Описание программки

    Тестирование программного продукта

    Управление юзера

    Заключение

    приложение

    2) Графическая часть обязана содержать:
    Лист 1 ER-диаграмма

    3) Перечень литературы

    Задание к выполнению получил «_______ »_______________ 2008 г.

    Студент: Юсупов Айдар Марсович

    Срок окончания «_____ »_______________ 2008 г.

    Управляющий курсового проекта
    Марковникова Е. И. /_______


    ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

    Государственное образовательное учреждение среднего проф образования

    Уфимский институт статистики, информатики и вычислительной техники

    ЗАКЛЮЧЕНИЕ

    На курсовой проект по теме: «Учет поступления и выдачи книжек»

    Студента – Юсупова А. М., группы 3П-3, специальности 230105, дневного отделения.

    текст заключения: ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

    Управляющий курсового проекта:

    ___________ /Е.И. Марковникова / “____” _____________ 2008 г.





    АННОТАЦИЯ

    Объяснительная записка к курсовому проекту содержит постановку и программку решения задачки «Учет поступления и выдачи книжек».

    Задачка на курсовой проект написана в среде Delphi 7 на языке Object Pascal, автоматизирована программкой Project1.exe, прошла отладочное тестирование.


    СОДЕРЖАНИЕ

    Лист

    Введение 8

    1. Постановка задачки 9

    1.1 Описание предметной области 9

    1.2 Многофункциональная схема задачки 10

    1.3 Схема данных 11

    1.4 Описание входной инфы 13

    1.5 Описание структуры базы данных 15

    1.6 Описание выходной инфы 19

    1.7 Контрольный пример 19

    1.8 Общие требования к продукту 21

    2. Экспериментальный раздел 22

    2.1 Обоснование выбора языка программирования 22

    2.2 Описание программки 25

    2.3 протокол тестирование программного продукта 27

    2.3.1 Тестирование на данных контрольного примера 27

    2.3.2 Тестирование на неправильных данных 29

    2.4 Управление юзера 31

    Заключение 36

    Перечень литературы 37

    приложение А Итог решения 38

    Приложение Б Код программки 40







    Введение

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

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

    1 Постановка задачки

    1.1 Описание предметной области

    Требуется создать информационную систему для автоматизации учета получения и выдачи книжек на складе. Любая книжка на складе быть может из различных издательств и по разной стоимости. Любая книжка, хранящаяся на складе, характеризуется последующими параметрами:

    — Издатиельство;

    — Создатель;

    — Заглавие;

    — Тираж;

    — Стоимость.

    С данной информационной системой должны работать последующие группы юзеров:

    -бухгалтеры вещественного стола;

    -кладовщики.

    При работе с системой секретарь делает последующие функции:

    — Воспринимает заявки от магазинов;

    — Оформляет заявки на новейшие книжки в издательство;

    — Ведет учет на сто процентов обработанных и отчасти обработанных заявок.

    Кладовщик ведет учет поступления книжки от издательств и выдачу книжек магазинам.

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

    Выходной информацией является отчет о отчасти и на сто процентов обработанных заявок, и сводная ведомость.

    задачка производится по мере поступления книжек на склад либо получения заявок от магазинов.

    1.2 Многофункциональная схема задачки





    1.3 Схема данных

    Издательство магазин








    ER-диаграмма

    1.4 Описание входной инфы

    Входной информацией является:

    · Перечень книжек, поступающий из издательства по мере требования;

    · Перечень заявок, поступающий из магазинов по мере требования;

    Таблица 1. Описание входных документов

    Наименование документа (шифр)


    Дата поступления документа


    Откуда поступает документ



    Перечень книжек


    По мере требования


    Издательство



    Перечень заявок


    По мере требования


    магазин




    Таблица 2. Описание реквизитов входных документов

    Наименование документа


    Наименование реквизита


    Шифр реквизита


    Форма представления


    Длина

    б



    Перечень книжек


    Издательство


    Издательство


    Строчка


    10



    Заглавие книжки


    Заглавие книжки


    Строчка


    10



    Создатель


    Создатель


    Строчка


    10



    Тираж


    Тираж


    Число




    Стоимость


    Стоимость


    Число




    Перечень заявок


    Заглавие магазина


    магазин


    Строчка


    10



    Заглавие книжки


    Заглавие книжки


    Строчка


    10



    Создатель


    Создатель


    Строчка


    10



    Требуемое количество


    Треб. кол


    Число





    Формы входных документов

    Перечень книжек

    Издательство


    Заглавие книжки


    Создатель


    Тираж


    Стоимость








    Перечень заявок

    магазин


    Заглавие книжки


    Создатель


    Требуемое количество








    1.5 Описание структуры базы данных

    Таблица 3. Описание структуры базы данных

    Предназначение (содержимое) таблицы


    Физическое имя

    таблицы


    Наименование полей


    Шифр поля


    Форма представления


    Спектр значений



    Перечень книжек


    f1. db


    Ключ


    ID


    Автоинкремент




    Заглавие издательства


    Издательство


    Строчка


    10



    Заглавие книжки


    Назв. книжки


    Строчка


    10



    Фамилия создателя


    Создатель


    Строчка


    10



    Тираж


    Тираж


    Число




    Стоимость


    Стоимость


    Число




    Перечень заявок


    f2. db


    Номер заказа


    № заказа


    Автоинкремент




    Заглавие магазина


    магазин


    Строчка


    10



    Заглавие книжки


    Назв. книжки


    Строчка


    10



    Фамилия создателя


    Создатель


    Строчка


    10



    Требуемое количество


    Треб. кол


    Число




    Доп перечень заявок


    f3. db


    Номер заказа


    № заказа


    Число




    Заглавие издетельства


    Издательство


    Строчка


    10



    количество выданных книжек


    Выдано


    Число




    Стоимость


    Стоимость


    Число




    Сумма


    Сумма


    Число





    Примечание: знак «*» значит первичный ключ.

    1.6 Описание выходной инфы

    Выходной информацией является:

    • Ведомость довольных заказов;
    • Ведомость неудовлетворенных заказов;
    • Сводная ведомость;

    Таблица 4. Описание выходных документов

    Наименование документа


    Периодичность выдачи


    Срок выдачи


    количество экземпляров


    Куда передается



    Ведомость довольных заказов


    Любой месяц


    1 денек


    1


    В бухалтерию



    Ведомость неудовлетворенных заказов


    Любой месяц


    1 денек


    1


    В бухалтерию



    Сводная ведомость


    Любой месяц


    1 денек


    1


    В бухалтерию




    Таблица 5. Описание реквизитов выходных документов

    Наименование документа


    Наименование реквизита


    Шифр реквизита


    Форма представления


    Длина

    б



    1


    2


    3


    4


    5



    Ведомость довольных заказов


    Номер заказа


    № группы


    Число


    10



    Заглавие магазина


    магазин


    Строчка


    10



    Заглавие книжки


    Наз. книжки


    Строчка


    10



    Фамилия создателя


    Создатель


    Строчка


    10



    Заглавие издательства


    Издательство


    Строчка


    10



    количество выданных книжек


    Выдано


    Число




    Ведомость неудовлетворенных заказов


    Номер заказа


    № заказа


    Число




    Заглавие магазина


    магазин


    Строчка


    10




    Продолжение Таблица 5

    1


    2


    3


    4


    5



    Заглавие книжки


    Наз. книжки


    Строчка


    10



    Фамилия создателя


    Создатель


    Строчка


    10



    Требуемое количество


    Треб. кол


    Число




    Сводная ведомость


    Заглавие издательства


    Издательство


    Строчка


    10



    Заглавие книжки


    Наз. книжки


    Строчка


    10



    Фамилия создателя


    Создатель


    Строчка


    10



    количество выданных книжек


    Выдано


    Число




    Стоимость выданных книжек


    Сумма


    Число





    Формы выходных документов

    Ведомость довольных заявок

    № заказа


    Магазин


    Заглавие книжки


    Создатель


    Издательство


    Выдано








    Ведомость неудовлетворенных заявок

    № заказа


    магазин


    Заглавие книжки


    Создатель


    Треб. кол-во








    Сводная ведомость

    Издательство


    Заглавие книжки


    Создатель


    Кол-во книжек


    Сумма







    Итого:




    1.7 Контрольный пример

    Входные данные контрольного примера представлены в виде таблиц.

    Набросок 1 — Перечень книжек

    В магазин пришли последующие заявки:

    Магазин


    Заглавие книжки


    Создатель


    Требуемое количество



    Библиосфера


    Сказки


    Пушкин


    5000



    Подземка


    Том Сойер


    Твен


    4000



    Книжка


    Сказки


    Пушкин


    1500



    Библиосфера


    ТРПП


    Орлов


    4000



    Книжка


    ТРПП


    Орлов


    600



    Снэма


    ГДЗ


    Полкин


    800




    Итог контрольного примера

    Ведомость довольных заявок

    № заказа


    магазин


    Заглавие книжки


    Создатель


    Издательство


    Выдано



    1


    Библиосфера


    Сказки


    Пушкин


    Москва


    5000



    3


    Книжка


    Сказки


    Пушкин


    Белоснежная река


    1500



    4


    Библиосфера


    ТРПП


    Орлов


    Белоснежная река


    4000




    Ведомость неудовлетворенный заявок

    № заказа


    магазин


    Заглавие книжки


    Создатель


    Требуемое количество



    2


    Подземка


    Том Сойер


    Твен


    400



    5


    Книжка


    ТРПП


    Орлов


    100



    6


    Снэма


    ГДЗ


    Полкин


    300




    Сводная ведомость

    Издательство


    Заглавие книжки


    Создатель


    Кол-во книжек


    Сумма



    Белоснежная река


    Сказки


    Пушкин


    1500


    150000



    Белоснежная река


    ТРПП


    Орлов


    4000


    600000



    Белоснежная река


    ТРПП


    Орлов


    500


    75000



    Москва


    Сказки


    Пушкин


    5000


    500000



    Москва


    Том Сойер


    Твен


    600


    48000



    КПИ


    Том Сойер


    Твен


    3000


    240000



    КПИ


    ГДЗ


    Полкин


    500


    30000



    Итого:


    1643000




    1.8 Общие требования к продукту

    Данная программка создана для автоматизации получения и выдачи книжек. С помощью этого программного продукта можно получать ведомости довольных и не довольных заявок, также получать сводную ведомость.

    Для правильной работы программки нужна последующая конфигурация компа:

    машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор Intel Celeron 800 Мгц

    — Оператывная память объемом 64Мб

    — Оборудование для ввода (мышь, клавиатура)

    — Оборудование вывода (монитор и принтер)

    — Твердый диск

    Программный продукт поставляется в виде исплняемого файла(exe) и файлов базы данных.

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







    2 Экспериментальный раздел

    2.1 Обоснование выбора языка программирования

    Для сотворения программки использовалась среда разработки Delphi. Delphi — язык и среда программирования, относящаяся к классу RAD (Rapid Application Development — “Средство резвой разработки приложений”) средств CASE — технологии. Delphi сделала разработку массивных приложений Windows резвым действием, доставляющим для вас наслаждение. Приложения Windows, для сотворения которых требовалось огромное количество человечьих усилий к примеру в С++, сейчас могут быть написаны одним человеком, использующим Delphi.

    интерфейс Windows обеспечивает полное перенесение CASE-технологий в интегрированную систему поддержки работ по созданию прикладной системы на всех фазах актуального цикла работы и проектирования системы. Delphi владеет широким набором способностей, начиная от проектировщика форм и кончая поддержкой всех форматов фаворитных баз данных. Среда избавляет необходимость программировать такие составляющие Windows общего предназначения, как метки, пиктограммы и даже диалоговые панели. Работая в Windows , можно созидать однообразные “объекты” в почти всех различных приложениях. Диалоговые панели (к примеру Choose File и Save File) являются примерами неоднократно применяемых компонент, интегрированных конкретно в Delphi, который дозволяет приспособить эти составляющие к имеющийся задачке, чтоб они работали конкретно так, как требуется создаваемому приложению. Также тут имеются за ранее определенные зрительные и невизуальные объекты, включая клавиши, объекты с данными, меню и уже построенные диалоговые панели. При помощи этих объектов можно, к примеру, обеспечить ввод данных просто несколькими нажатиями клавиш мыши, не прибегая к программированию. Это приятная реализация применений CASE- технологий в современном программировании приложений. Та часть, которая конкретно связана с программированием интерфейса юзера системой, получила заглавие зрительное программирование.

    Выгоды от проектирования в среде Windows при помощи Delphi:

    — Устраняется необходимость в повторном вводе данных;

    — Обеспечивается согласованность проекта и его реализации;

    — Возрастает производительность разработки и переносимость программ.

    Зрительное программирование вроде бы добавляет новое измерение при разработке приложений, давая возможность изображать эти объекты на дисплее монитора до выполнения самой программки. Без зрительного программирования процесс отображения просит написания фрагмента кода, создающего и настающего объект “по месту”. Узреть закодированные объекты было может быть лишь в процессе выполнения программки. При таком подходе достижение того, чтоб объекты выглядели и вели себя данным образом, становится мучительным действием, который просит многократных исправлений программного кода с следующей прогонкой программки и наблюдения за тем, что в итоге вышло.

    Благодаря средствам зрительной разработки можно работать с объектами, держа их перед очами и получая результаты фактически сходу. Способность созидать объекты таковыми, какими они возникают в процессе выполнения программки, снимает необходимость проведения огромного количества операций вручную, что типично для работы в среде, не обладающей зрительными средствами — вне зависимости от того, является она объектно-ориентированной либо нет. Опосля того, как объект помещен в форму среды зрительного программирования, все его атрибуты сходу показываются в виде кода, который соответствует объекту как единице, исполняемой в процессе работы программки.

    Размещение объектов в Delphi соединено с наиболее тесноватыми отношениями меж объектами и настоящим программным кодом. Объекты помещаются в вашу форму, при всем этом код, отвечающий объектам, автоматом записывается в начальный файл. Этот код компилируется, обеспечивая, значительно наиболее высшую производительность, чем зрительная среда, которая интерпретирует информацию только в процессе выполнения программки.

    Три главные части разработки интерфейса последующие: проектирование панели, проектирование диалога и сейчас возникла настоящая возможность при помощи моделирования на современных функциональных средствах обработки и отображения инфы, таковых как Delphi конкретизировать тип и свойства применяемых информационных моделей, выявить главные индивидуальности будущей деятель операторов, сконструировать требования к характеристикам аппаратно-программных средств интерфейса взаимодействия и т.д.

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

    Особенный упор при внедрении данных задач следует, естественно, придавать современным CASE-средствам разработки программ, потому что они более нормально разрешают проектировать решения, в базе которых лежат, сначала, требования к согласованному пользовательскому интерфейсу, каковым и является интерфейс Windows. Никакие продукты остальных компаний, доступные сейчас, не обеспечивают одновременную простоту использования, производительность и упругость в таковой степени, как Delphi. Этот язык заполнил брешь меж языками 3-го и 4-го поколений, соединив их мощные стороны и создав сильную и производительную среду разработки.

    2.2 Описание программки

    Модульная схема

    Описание программки

    программка Учет.exe имеет модульную структуру и состоит из 6 модулей: Unit 1 (база Данных), Unit 2 (Ввод заявок и поступающих книжек), Unit 3 (Выдача ведомостей), Unit 4 (Изменение пароля), Unit 5 (Выбор юзера и ввод пароля).

    Unit 1 (база Данных) – содержит средства просмотра базы данных, размещаются клавиши для перехода на остальные формы и процедуры выдачи ведомостей. При нажатии на клавишу N21 производится процедура TForm1.N21Click, которая производит переход на форму Form2 для наполнения заявки от магазина. При нажатии на клавишу N18 производится процедура TForm1.N18Click, которая производит переход на форму Form3 для отображения ведомости довольных заявок. При нажатии на клавишу N19 производится процедура TForm1.N19Click, которая производит переход на форму Form3 для отображения ведомости неудовлетворенных заявок. При нажатии на клавишу N17 производится процедура TForm1.N17Click, которая производит переход на форму Form3 для отображения сводной ведомости. При нажатии на клавишу N9 производится процедура TForm1.N9Click, которая производит переход на форму Form4 для конфигурации пароля. При нажатии на клавишу N11 производится процедура TForm1.N118Click, которая производит переход на форму Form2 для удаления записей. При нажатии на клавишу N2 производится процедура TForm1.N2Click, которая производит выход из программки.

    Unit 2 (Ввод заявок и поступающих книжек) – в этом модуле размещаются средства для ввода заявок, ввода поступающих книжек и удалений записей из базы данных;

    Unit 3 (Отображение ведомостей). При переходе на эту форму автоматом выдаёться подходящая ведомость.

    При нажатии клавиши Button1 («Выход»), производится процедура Tform3.Button1Click, которая производит закрытие Form3.

    Unit 4 (Именение пароля). Содержит поля для ввода новейшего пароля. При нажатии на клавишу Button1 («Сохранить») производится процедура Tform4.Button1Click, которая производит сохранение новейшего пароля. Есди поставить галочку в CheckBox1 («Показывать пароль при вводе»), то при вводе пароля он не будет запираться звездочками.

    При нажатии клавиши Button2 («Выход») производится процедура Tform4.Button2Click, которая производит закрытие Form4.

    Unit 5 (Выбор юзер и ввод пароля). При выбирании RadioButton1 («Юзер») то будет выбрано загрузка программки в режиме пользовате и не будут доступно удаление записей. При выбирании RadioButton2 («Админ») показаться окно ввода пароля. При нажатии клавиши Button1 («Принять»), производится процедура Tform5.Button1Click, которая производит выбор юзера и проверку пароля. При нажатии клавиши Button2 («Выход»), производится процедура Tform5.Button2Click, которая производит выход из программки.

    Код модулей программки предствлен в Приложении Б

    2.3 протокол тестирование программного продукта

    2.3.1 Тестирование на данных контрольного примера

    Тестирование программного продукта на данных контрольного примера:

    — При тестировании программного продукта на данных контрольного примера обработка данных, другими словами вывод ведомостей осуществляется корректно.

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

    Итог работы программки приведен в приложении А

    Начальные данные

    Вид таблиц в программке Database Desktop:

    Набросок 2 — Перечень книжек

    Вид таблицы в программке

    2.3.2 Тестирование на неправильных данных

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

    Тестирование программного продукта на неправильных данных:

    — При входе в программку впервой выводиться сообщение: «Задайте пароль»;

    — При входе в программку и не выборе юзера выводится сообщение: «Изберите юзера»;

    — При входе в программку за «Админа» и не вводе пароля выводится сообщение: «Пароль не введен»;

    — При вводе неверного пароля выводится сообщение: «Запамятовали пароль?»;

    — При пятикратном вводе неверного пароль выводится сообщение: «Множественный ввод неверного пароля, программка будет закрыта»;

    — При внедрении заявки из магазина и не заполнении всех полей выводится сообщение: «Заполни все поля»;

    — При внедрении получении книжек из издательства не заполнении всех полей выводится сообщение: «Заполни все поля»;

    — При удалении записи и не выборе номера таблицы выводится сообщение: «Избери таблицу»;

    — При удалении записи и не вводе номера записи выводится сообщение: «Заполни все поля»;

    — При удалении несуществующей записи выводится сообщение: «Данная запись не существует»

    — При добавлении новейшей книжки если введена уже существующая в базе данных выводятся сообщения: «Данная книжка уже существует», «Тираж добавиться к имеющейся книжке»;

    — При вводе новейшего пароля меньше 4 знаков выводится сообщение «Пароль очень маленький»;

    — При вводе новейшего пароля различным в 2-ух полях выводится сообщение «Введены различные Пароли»;

    2.4 Управление юзера

    программка устанавливается с диска. Методом копирование папки «Учет» в рабочую папку на твердом диске. Для правильной работы программки нужно чтоб на компе юзера были установлены последующие программные продукты : Borland Delphi7, Borland Database Engine Administrator, Database Desktop. программка запускается методом пуска приложения «Учет.exe».

    Руковдство по использованию продукта

    При запуске приложения раскрывается форма выбора юзера (набросок 3), в какой делается выбор юзера, также ввод пароля для юзера «Админ».

    Набросок 3 – Форма выбора юзера

    Перед тем как перейти к ведомостям нужно избрать юзера. В случае если юзер не был избран высветится сообщение о ошибке (набросок 4).

    Набросок 4 — Сообщение о ошибке

    При выбирании из меню «Склад» клавишу «Получения книжек» окрывается окно для наполнение данных о поступившей книжке(набросок 5).

    Набросок 5 – Получение книжек

    При нажатии клавиши «Выслать в изд.» выводиться окошко (набросок 6). В каком при нажатии клавиши «Да» будет выдан перечень требуемых книжек для заказа на склад (набросок 7).

    Набросок 6

    Набросок 7 – Перечень требуемых книжек

    При выбирании пт меню «Заявки» нажатии клавиши «На книжку» окрывается окно для вывода заявки (набросок 8). В каком нужно заполнить все поля и потом надавить клавишу «Выслать заявку».

    Набросок 8 – Заявка на книжку

    При нажатии клавиши «Доп. тираж» окрывается окно для ввода доп тиража (набросок 9). В каком нужно заполнить все поля и потом надавить клавишу «Выслать заявку».

    Набросок 9 – Заявка на доп тираж





    При выбирании пт меню «Ведомости» подменю «Для заказов» и нажатия клавиш «Удовлет. заказы» либо «Неудовлет. заказы» окрывается окно для вывода соответственной ведомости (набросок 10,11).

    Набросок 10 – Ведомость довольных заказов

    Набросок 11 – Ведомость неудовлетворенных заказов

    При нажатии клавиши «Сводная ведомость» окрывается окно для вывода ведомости (набросок 12).

    Набросок 12


    Заключение

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

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

    программка написана на языке Object Pascal с внедрением среды зазработки Delphi 7.

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

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

    Перечень литературы

    1. Флёнов М. Е. Программирование в Delphi очами взломщика. – СПб.: БХВ — Петербург, 2007. – 368 с.: ил.
    приложение А

    Итог решения

    Набросок 13 – Сводная ведомость

    Набросок 14 Ведомость неудовлетворенных заявок

    Продолжение приложения А

    Набросок 15 Ведомость довольных заявок

    приложение Б

    Код программки

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Menus, DB, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, registry,

    ComCtrls;

    type

    TForm1 = class(TForm)

    DBGrid1: TDBGrid;

    DBGrid2: TDBGrid;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    GroupBox1: TGroupBox;

    GroupBox2: TGroupBox;

    StatusBar1: TStatusBar;

    Timer1: TTimer;

    N25: TMenuItem;

    DBGrid3: TDBGrid;

    N6: TMenuItem;

    N9: TMenuItem;

    N11: TMenuItem;

    N12: TMenuItem;

    N13: TMenuItem;

    N16: TMenuItem;

    N17: TMenuItem;

    N18: TMenuItem;

    N19: TMenuItem;

    N20: TMenuItem;

    N21: TMenuItem;

    N22: TMenuItem;

    N2: TMenuItem;

    procedure clearf2;

    procedure N12Click(Sender: TObject);

    Продолжение приложения Б

    procedure FormShow(Sender: TObject);

    procedure find(kol:integer);

    procedure Timer1Timer(Sender: TObject);

    procedure N25Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    procedure N11Click(Sender: TObject);

    procedure N18Click(Sender: TObject);

    procedure N19Click(Sender: TObject);

    procedure N17Click(Sender: TObject);

    procedure N21Click(Sender: TObject);

    procedure N22Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    end;

    var

    F1: TForm1;

    kn,q,w,i,j:integer;

    implementation

    uses Unit2, Unit3, Unit4, Unit5, Unit6;

    {$R *.dfm}

    procedure TForm1.find(kol:integer);

    var v:boolean;

    begin

    v:=true;

    f3.SG1.Cells[0,0]:=’№ заказа’;

    f3.SG1.Cells[1,0]:=’магазин‘;

    f3.SG1.Cells[2,0]:=’Заглавие книжки’;

    f3.SG1.Cells[3,0]:=’Создатель’;

    f3.SG1.Cells[4,0]:=’Треб. кол-во’;

    f3.SG1.ColCount:=5;

    f3.SG1.Width:=515;

    f3.Width:=530;

    if kol=0 then

    Продолжение приложения Б

    begin

    f3.SG1.Cells[4,0]:=’Издательство’;

    f3.SG1.Cells[5,0]:=’Выдано’;

    f3.SG1.ColCount:=6;

    f3.SG1.Width:=615;

    f3.Width:=630;

    end;

    f3.SG1.RowCount:=1;

    i:=1;

    DM6.T2.RecNo:=1;

    while not(DM6.T2.Eof) do

    begin

    if kol=0 then

    begin

    if DM6.T2.FieldByName(‘Треб. кол’).AsInteger=0 then

    begin

    f3.SG1.Cells[0,i]:=DM6.T2.FieldByName(‘№ заказа’).AsString;

    f3.SG1.Cells[1,i]:=DM6.T2.FieldByName(‘магазин‘).AsString;

    f3.SG1.Cells[2,i]:=DM6.T2.FieldByName(‘Наз. книжки’).AsString;

    f3.SG1.Cells[3,i]:=DM6.T2.FieldByName(‘Создатель’).AsString;

    DM6.T3.RecNo:=1;

    while not(DM6.T3.Eof) do

    begin

    if DM6.T2.FieldByName(‘№ заказа’).AsString=DM6.T3.FieldByName(‘№ заказа’).AsString then

    begin

    f3.SG1.Cells[4,i]:=DM6.T3.FieldByName(‘Издательство’).AsString;

    f3.SG1.Cells[5,i]:=DM6.T3.FieldByName(‘Выдано’).AsString;

    inc(i);

    f3.SG1.RowCount:=f3.SG1.RowCount+1;

    DM6.T3.Delete;

    end

    else

    DM6.T3.Next;

    Продолжение приложения Б

    end;

    DM6.T2.Delete;

    end

    else

    DM6.T2.Next;

    end;

    if kol<>0 then

    begin

    if DM6.T2.FieldByName(‘Треб. кол’).AsInteger>0 then

    begin

    f3.SG1.Cells[0,i]:=DM6.T2.FieldByName(‘№ заказа’).AsString;

    f3.SG1.Cells[1,i]:=DM6.T2.FieldByName(‘магазин‘).AsString;

    f3.SG1.Cells[2,i]:=DM6.T2.FieldByName(‘Наз. книжки’).AsString;

    f3.SG1.Cells[3,i]:=DM6.T2.FieldByName(‘Создатель’).AsString;

    f3.SG1.Cells[4,i]:=DM6.T2.FieldByName(‘Треб. кол’).AsString;

    inc(i);

    f3.SG1.RowCount:=f3.SG1.RowCount+1;

    end;

    DM6.T2.Next;

    end;

    end;

    end;

    procedure TForm1.clearf2;

    begin

    f2.Edit1.Clear;

    f2.Edit2.Clear;

    f2.Edit3.Clear;

    f2.Edit4.Clear;

    f2.Edit5.Clear;

    f2.Edit4.SetFocus;

    end;

    procedure clearf3;

    begin

    for w:=0 to f3.SG1.Rowcount do

    Продолжение приложения Б

    for i:=0 to f3.SG1.ColCount do

    f3.SG1.Cells[w,i]:=’ ‘;

    end;

    procedure TForm1.N12Click(Sender: TObject);

    begin

    f2.ComboBox1.Visible:=false;

    f2.Edit1.Visible:=true;

    f2.Edit2.Visible:=true;

    f2.Edit3.Visible:=true;

    f2.Edit4.Visible:=true;

    f2.Edit5.Visible:=true;

    f2.Label1.Visible:=true;

    f2.Label2.Visible:=true;

    f2.Label3.Visible:=true;

    f2.Label4.Visible:=true;

    f2.Label5.Visible:=true;

    f2.Button1.Caption:=’Добавить’;

    f2.Label3.Caption:=’Тираж’;

    f2.Label4.Caption:=’Издательство’;

    f2.Caption:=’Получение книжек’;

    f2.Width:=652;

    f2.Height:=135;

    f2.Button1.Top:=40;

    f2.Button2.Top:=70;

    f2.Show;

    clearf2;

    kn:=2;

    end;

    procedure TForm1.FormShow(Sender: TObject);

    begin

    f5.Visible:=false;

    f4.Visible:=false;

    if unit5.User then N6.Enabled:=false;

    end;

    Продолжение приложения Б

    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    StatusBar1.Panels[0].Text:=DateTimeToStr(now);

    end;

    procedure TForm1.N25Click(Sender: TObject);

    begin

    i:=1;

    if MessageBox(0,’Выслать заявку в издательство’,’информация‘,mb_YesNo)=6 then

    begin

    f3.sg1.Cells[0,0]:=’Заглавие книжки‘;

    f3.SG1.Cells[1,0]:=’Создатель’;

    f3.SG1.Cells[2,0]:=’Требуемое кол-во книжек’;

    DM6.T2.RecNo:=1;

    f3.Caption:=’Перечень требуемых книжек’;

    f3.SG1.ColCount:=3;

    f3.SG1.RowCount:=2;

    while not(DM6.T2.Eof) do

    begin

    if DM6.T2.FieldByName(‘Треб. кол’).Asinteger>0 then

    f3.SG1.Cells[0,i]:=DM6.T2.FieldByName(‘Наз. книжки‘).AsString;

    f3.SG1.Cells[1,i]:=DM6.T2.FieldByName(‘Создатель’).AsString;

    f3.SG1.Cells[2,i]:=DM6.T2.FieldByName(‘Треб. кол’).AsString;

    inc(i);

    f3.SG1.RowCount:=f3.SG1.RowCount+1;

    DM6.T2.Next;

    end;

    end;

    f3.SG1.RowCount:=f3.SG1.RowCount-1;

    F3.Show;

    end;

    procedure TForm1.N9Click(Sender: TObject);

    begin

    f4.show;

    f4.Caption:=’Поменять пароль‘;

    Продолжение приложения Б

    end;

    procedure TForm1.FormActivate(Sender: TObject);

    begin

    DBGrid1.Columns[0].Width:=15;

    DBGrid2.Columns[0].Width:=45;

    DBGrid3.Columns[0].Width:=45;

    end;

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    begin

    if MessageBox(0,’Для вас что выйти захотелось? (Да/Нет)’,’Выход’,mb_YesNo)=6 then

    begin

    application.Destroying;

    f5.Close;

    f4.close;

    end;end;

    procedure TForm1.N11Click(Sender: TObject);

    begin

    f2.Caption:=’Удаление записей’;

    f2.Button1.Caption:=’Удалить’;

    f2.Show;

    kn:=3;

    f2.ComboBox1.ItemIndex:=-1;

    f2.ComboBox1.Visible:=true;

    f2.ComboBox1.Text:=»;

    f2.Button1.Top:=80;

    f2.Button2.Top:=110;

    f2.Label1.Visible:=false;

    f2.Label2.Visible:=false;

    f2.Label3.Visible:=false;

    f2.Label5.Visible:=false;

    f2.Label6.Visible:=true;

    f2.Edit1.Visible:=false;

    f2.Edit2.Visible:=false;

    f2.Edit3.Visible:=false;

    Продолжение приложения Б

    f2.Edit5.Visible:=false;

    f2.Label4.Caption:=’Номер ID записи либо номер заказа’;

    f2.Height:=175;

    f2.Width:=225;

    clearf2;

    end;

    procedure TForm1.N18Click(Sender: TObject);

    begin

    f3.Show;

    f3.Caption:=’Ведомость для удовлетворённых заказов’;

    clearf3;

    find(0);

    end;

    procedure TForm1.N19Click(Sender: TObject);

    begin

    f3.Show;

    f3.Caption:=’Ведомость для неудовлетворённых заказов’;

    clearf3;

    find(1);

    end;

    procedure TForm1.N17Click(Sender: TObject);

    var sum:integer;

    begin

    f3.Show;

    f3.SG1.RowCount:=1;

    clearf3;

    f3.Caption:=’Сводная ведомость’;

    f3.SG1.Cells[0,0]:=’Издательство’;

    f3.SG1.Cells[1,0]:=’Заглавие книжки‘;

    f3.SG1.Cells[2,0]:=’Создатель’;

    f3.SG1.Cells[3,0]:=’Кол-во книжек’;

    f3.SG1.Cells[4,0]:=’Сумма’;

    f3.SG1.ColCount:=5;

    w:=1;

    i:=1;

    Продолжение приложения Б

    sum:=0;

    DM6.T3.RecNo:=1;

    while not(DM6.T3.eof) do

    begin

    f3.SG1.Cells[0,i]:=DM6.T3.FieldByName(‘Издательство’).AsString;

    DM6.T2.Locate(‘№ заказа’,DM6.T3.FieldByName(‘№ заказа’).AsInteger,[]);

    f3.SG1.Cells[1,i]:=DM6.T2.FieldByName(‘Наз. книжки‘).AsString;

    f3.SG1.Cells[2,i]:=DM6.T2.FieldByName(‘Создатель’).AsString;

    f3.SG1.Cells[3,i]:=DM6.T3.FieldByName(‘Выдано’).AsString;

    f3.SG1.Cells[4,i]:=DM6.T3.FieldByName(‘Сумма’).AsString;

    sum:=sum+DM6.T3.FieldByName(‘Сумма’).asInteger;

    inc(i);

    f3.SG1.RowCount:=f3.SG1.RowCount+1;

    DM6.T3.Next;

    end;

    f3.SG1.RowCount:=f3.SG1.RowCount+1;

    f3.SG1.Cells[3,i]:=’Итого:’;

    f3.SG1.Cells[4,i]:=inttostr(sum);

    end;

    procedure TForm1.N21Click(Sender: TObject);

    begin

    f2.Edit5.Visible:=false;

    f2.Label5.Visible:=false;

    f2.Label1.Visible:=true;

    f2.Label2.Visible:=true;

    f2.Label3.Visible:=true;

    f2.Label6.Visible:=true;

    f2.Edit1.Visible:=true;

    f2.Edit2.Visible:=true;

    f2.Edit3.Visible:=true;

    f2.Label4.Caption:=’магазин‘;

    f2.ComboBox1.Visible:=false;

    f2.Button1.Caption:=’Выслать заявку’;

    Продолжение приложения Б

    f2.Button1.Top:=40;

    f2.Button2.Top:=70;

    f2.Caption:=’Заявка на книжку‘;

    f2.Width:=525;

    f2.Height:=135;

    f2.show;

    kn:=0;

    clearf2;

    end;

    procedure TForm1.N22Click(Sender: TObject);

    begin

    f2.Edit5.Visible:=false;

    f2.Label5.Visible:=false;

    f2.Label1.Visible:=true;

    f2.Label2.Visible:=true;

    f2.Label3.Visible:=true;

    f2.Label6.Visible:=true;

    f2.Edit1.Visible:=true;

    f2.Edit2.Visible:=true;

    f2.Edit3.Visible:=true;

    f2.Label4.Caption:=’магазин‘;

    f2.ComboBox1.Visible:=false;

    f2.Button1.Caption:=’Выслать заявку’;

    f2.Button1.Top:=40;

    f2.Button2.Top:=70;

    f2.Caption:=’Заявка на доп тираж’;

    f2.Width:=525;

    f2.Height:=135;

    f2.Show;

    kn:=1;

    clearf2;

    end;

    procedure TForm1.N2Click(Sender: TObject);

    begin

    Продолжение приложения Б

    if MessageBox(0,’Для вас что выйти захотелось? (Да/Нет)’,’Выход’,mb_YesNo)=6 then

    begin

    application.Destroying;

    f5.Close;

    f4.close;

    close;

    end;

    end;

    end.

    unit Unit2;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm2 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Button1: TButton;

    Button2: TButton;

    Edit4: TEdit;

    Edit5: TEdit;

    Label5: TLabel;

    ComboBox1: TComboBox;

    Label6: TLabel;

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Edit3KeyPress(Sender: TObject; var Key: Char);

    Продолжение приложения Б

    procedure Edit5KeyPress(Sender: TObject; var Key: Char);

    end;

    var

    F2: TForm2;

    implementation

    uses Unit1, DB, Unit3, Unit6;

    {$R *.dfm}

    procedure TForm2.Button2Click(Sender: TObject);

    begin

    close;

    end;

    procedure TForm2.Button1Click(Sender: TObject);

    var i,ost:integer;

    za:array [0..3] of string;

    begin

    dm6.T1.Close;

    dm6.T2.Close;

    dm6.T3.Close;

    dm6.T1.Open;

    dm6.T2.Open;

    dm6.T3.Open;

    DM6.T1.RecNo:=1;

    DM6.T2.RecNo:=1;

    DM6.T3.RecNo:=1;

    za[0]:=edit1.Text;

    za[1]:=edit2.Text;

    za[2]:=edit3.Text;

    za[3]:=edit4.Text;

    //заявка

    if unit1.kn=0 then

    if (edit1.Text=»)and(edit2.Text=»)and(edit3.Text=»)and(edit4.Text=»)then

    messageBox(0,’Заполни все поля’,’Ошибка’,0)

    else

    begin

    Продолжение приложения Б

    DM6.T2.Append;

    DM6.T2.FieldByName(‘магазин‘).AsString:=za[3];

    DM6.T2.FieldByName(‘Наз. книжки’).AsString:=za[0];

    DM6.T2.FieldByName(‘Создатель’).AsString:=za[1];

    DM6.T2.FieldByName(‘Треб. кол’).AsString:=za[2];

    DM6.T2.Post;

    DM6.T2.Refresh;

    ost:=strtoint(za[2]);

    while ((ost<>0) and (not(DM6.T1.Eof))) do

    begin

    if (DM6.T1.FieldByName(‘Наз. книжки‘).AsString=za[0])and(DM6.T1.FieldByName(‘Создатель’).AsString=za[1]) then

    begin

    if ost>=DM6.T1.fieldbyname(‘Тираж’).AsInteger then

    begin

    ost:=ost-DM6.T1.fieldbyname(‘Тираж’).AsInteger;

    DM6.T2.Edit;

    DM6.T2.FieldByName(‘Треб. кол’).AsInteger:=ost;

    DM6.T2.Post;

    DM6.T2.Refresh;

    DM6.T3.AppendRecord([DM6.T2.FieldByName(‘№ заказа’).AsInteger,DM6.T1.FieldByName(‘Издательство’).AsString,

    DM6.T1.fieldbyname(‘Тираж’).AsInteger,DM6.T1.fieldbyname(‘Стоимость’).AsInteger,

    DM6.T1.fieldbyname(‘Тираж’).AsInteger*DM6.T1.fieldbyname(‘Стоимость’).AsInteger]);

    DM6.T3.Refresh;

    DM6.T1.Edit;

    DM6.T1.Delete;

    DM6.T1.Refresh;

    end

    else

    begin

    DM6.T1.Edit;

    DM6.T1.fieldbyname(‘Тираж’).AsInteger:=DM6.T1.fieldbyname(‘Тираж’).AsInteger-ost;

    Продолжение приложения Б

    DM6.T1.Post;

    DM6.T1.Refresh;

    DM6.T3.AppendRecord([DM6.T2.FieldByName(‘№ заказа’).AsInteger,DM6.T1.FieldByName(‘Издательство’).AsString,

    strtoint(za[2]),DM6.T1.fieldbyname(‘Стоимость’).AsInteger,DM6.T1.fieldbyname(‘Стоимость’).AsInteger*strtoint(za[2])]);

    DM6.T2.Edit;

    DM6.T2.FieldByName(‘Треб. кол’).AsInteger:=0;

    DM6.T2.Post;

    ost:=0;

    DM6.T3.Refresh;

    end;

    end;

    DM6.T1.Next;

    end;

    f1.clearf2;

    end;

    if unit1.kn=1 then

    begin

    DM6.T2.Append;

    DM6.T2.FieldByName(‘магазин‘).AsString:=za[3];

    DM6.T2.FieldByName(‘Наз. книжки’).AsString:=za[0];

    DM6.T2.FieldByName(‘Создатель’).AsString:=za[1];

    DM6.T2.FieldByName(‘Треб. кол’).AsString:=za[2];

    DM6.T2.Post;

    DM6.T2.Refresh;

    f1.clearf2;

    end;

    //получение книжек

    if unit1.kn=2 then

    if (edit1.Text=»)and(edit2.Text=»)and(edit3.Text=»)and(edit4.Text=»)and(edit5.Text=»)then

    messageBox(0,’Заполни все поля’,’Ошибка’,0)

    Продолжение приложения Б

    else

    begin

    //добавление если таковая запись уже существует

    if not varisnull(DM6.T1.Lookup(‘Издательство;Наз. книжки;Создатель;Стоимость’,VarArrayOf([za[3], za[0], za[1], Edit5.text]),’Стоимость’)) then

    begin

    messageBox(0,’Данная книжка уже существует’,’Ошибка’,0);

    MessageBox(0,’Тираж добавиться к имеющейся книжке’,’Соощение’,0);

    DM6.T1.Locate(‘Издательство;Наз. книжки;Создатель;Тираж;Стоимость’,VarArrayOf([za[3], za[0], za[1], za[2], Edit5.text]),[]);

    DM6.T1.Edit;

    DM6.T1.FieldByName(‘Тираж’).AsInteger:=DM6.T1.FieldByName(‘Тираж’).AsInteger+strtoint(za[2]);

    DM6.T1.Post;

    DM6.T1.Refresh;

    f1.clearf2;

    end

    else

    begin

    //добление новейшей записи

    DM6.T1.Append;

    DM6.T1.FieldByName(‘Издательство’).AsString:=za[3];

    DM6.T1.FieldByName(‘Наз. книжки‘).AsString:=za[0];

    DM6.T1.FieldByName(‘Создатель’).AsString:=za[1];

    DM6.T1.FieldByName(‘Тираж’).AsString:=za[2];

    DM6.T1.FieldByName(‘Стоимость’).AsString:=Edit5.text;

    DM6.T1.Post;

    DM6.T1.Refresh;

    f1.clearf2;

    end;

    //просмотр необработанных заявок

    if MessageBox(0,’Просмотреть необработанные заявки’,’Соощение’,mb_YesNo)=6 then

    Продолжение приложения Б

    if (DM6.T2.Locate(‘Наз. книжки;Создатель;’,VarArrayOf([za[0], za[1]]),[]))and(DM6.T2.FieldByName(‘Треб. кол’).AsInteger<>0) then

    begin

    DM6.T1.Locate(‘Издательство;Наз. книжки;Создатель;’,VarArrayOf([za[3], za[0], za[1]]),[]);

    if DM6.T2.FieldByName(‘Треб. кол’).AsInteger>=strtoint(za[2]) then

    begin

    DM6.T3.Append;

    DM6.T3.FieldByName(‘№ заказа’).AsString:=DM6.T2.FieldByName(‘№ заказа’).AsString;

    DM6.T3.FieldByName(‘Издательство’).AsString:=za[3];

    DM6.T3.FieldByName(‘Выдано’).AsString:=za[2];

    DM6.T3.FieldByName(‘Стоимость’).AsString:=DM6.T1.fieldbyname(‘Стоимость’).asstring;

    DM6.T3.FieldByName(‘Сумма’).AsInteger:=strtoint(za[2])*DM6.T1.fieldbyname(‘Стоимость’).asinteger;

    DM6.T3.Post;

    DM6.T3.Refresh;

    DM6.T3.Open;

    DM6.T1.Edit;

    DM6.T1.Delete;

    DM6.T1.Refresh;

    DM6.T2.Edit;

    DM6.T2.FieldByName(‘Треб. кол’).AsInteger:=DM6.T2.FieldByName(‘Треб. кол’).AsInteger-strtoint(za[2]);

    DM6.T2.Post;

    DM6.T2.Refresh;

    end

    else

    begin

    DM6.T3.Append;

    DM6.T3.FieldByName(‘№ заказа’).AsString:=DM6.T2.FieldByName(‘№ заказа’).AsString;

    DM6.T3.FieldByName(‘Издательство’).AsString:=za[3];

    Продолжение приложения Б

    DM6.T3.FieldByName(‘Выдано’).AsInteger:=DM6.T2.FieldByName(‘Треб. кол’).AsInteger;

    DM6.T3.FieldByName(‘Стоимость’).AsString:=DM6.T1.fieldbyname(‘Стоимость’).asstring;

    DM6.T3.FieldByName(‘Сумма’).AsInteger:=strtoint(za[2])*DM6.T1.fieldbyname(‘Стоимость’).asinteger;

    DM6.T3.Post;

    DM6.T3.Refresh;

    DM6.T1.Edit;

    DM6.T1.FieldByName(‘Тираж’).AsInteger:=strtoint(za[2])-DM6.T2.FieldByName(‘Треб. кол’).AsInteger;

    DM6.T1.Post;

    DM6.T1.Refresh;

    DM6.T2.Edit;

    DM6.T2.FieldByName(‘Треб. кол’).AsInteger:=0;

    DM6.T2.Post;

    DM6.T2.Refresh;

    end;

    end;

    end;

    //удаление

    if unit1.kn=3 then

    if (edit4.Text=») then

    messageBox(0,’Заполни все поля’,’Ошибка’,0)

    else

    if ComboBox1.ItemIndex=-1 then messageBox(0,’Избери таблицу’,’Ошибка’,0)

    else

    case ComboBox1.ItemIndex of

    0:

    if DM6.T1.Locate(‘ID’,edit4.Text,[])=false then messageBox(0,’Данной записи не существует!’,’Ошибка’,0)

    else

    begin

    DM6.T1.Edit;

    DM6.T1.Delete;

    DM6.T1.Refresh;

    Продолжение приложения Б

    end;

    1:

    if DM6.T2.Locate(‘№ заказа’,edit4.Text,[])=false then messageBox(0,’Данной записи не существует!’,’Ошибка’,0)

    else

    if MessageBox(0,’Вы нарушите целостность данных’+#13+’Продолжить?’,’Опасность’,mb_YesNo)=6 then

    begin

    DM6.T2.Edit;

    DM6.T2.Delete;

    DM6.T2.Refresh;

    end;

    2:

    if DM6.T3.Locate(‘№ заказа’,edit4.Text,[])=false then messageBox(0,’Данной записи не существует!’,’Ошибка’,0)

    else

    if MessageBox(0,’Вы нарушите целостность данных’+#13+’Продолжить?’,’Опасность’,mb_YesNo)=6 then

    begin

    DM6.T3.Edit;

    DM6.T3.Delete;

    DM6.T3.Refresh;

    end;

    end;

    DM6.T1.RecNo:=1;

    end;

    procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);

    begin

    case key of

    ‘0’..’9′:;

    #8:;

    else key:=chr(0);

    end;

    end;

    Продолжение приложения Б

    procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char);

    begin

    case key of

    ‘0’..’9′:;

    #8:;

    else key:=chr(0);

    end;

    end;

    end.

    unit Unit3;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, Grids;

    type

    TForm3 = class(TForm)

    SG1: TStringGrid;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    end;

    var

    F3: TForm3;

    implementation

    {$R *.dfm}

    procedure TForm3.Button1Click(Sender: TObject);

    begin

    close;

    end;

    end.

    unit Unit4;

    interface

    uses

    Продолжение приложения Б

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, registry;

    type

    TForm4 = class(TForm)

    Edit1: TEdit;

    Label1: TLabel;

    GroupBox1: TGroupBox;

    Edit2: TEdit;

    Label2: TLabel;

    Button1: TButton;

    CheckBox1: TCheckBox;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    end;

    var

    F4: TForm4;

    implementation

    uses Unit1;

    {$R *.dfm}

    procedure TForm4.Button1Click(Sender: TObject);

    var

    Reg:TRegistry;

    begin

    if (length(edit1.Text)>4)and(edit1.Text=edit2.Text) then

    begin

    Reg:=TRegIniFile.Create;

    Reg.RootKey:=HKEY_CURRENT_User;

    Reg.OpenKey(‘.pwd’, true);

    Reg.WriteString(‘pwd’, edit1.Text);

    Reg.CloseKey;

    f1.Show;

    Продолжение приложения Б

    f4.Visible:=false;

    end

    else

    begin

    if length(edit1.Text)>4 then

    messageBox(0,’пароль очень маленький’,’Ошибка’,0)

    else messageBox(0,’Введены различные пароли’,’Ошибка’,0)

    end;

    end;

    procedure TForm4.CheckBox1Click(Sender: TObject);

    begin

    if checkbox1.Checked then

    begin

    edit1.PasswordChar:=#0;

    edit2.PasswordChar:=#0;

    end

    else

    begin

    edit1.PasswordChar:=’*’;

    edit2.PasswordChar:=’*’;

    end;

    end;

    procedure TForm4.FormCreate(Sender: TObject);

    begin

    edit1.PasswordChar:=’*’;

    edit2.PasswordChar:=’*’;

    end;

    procedure TForm4.Button2Click(Sender: TObject);

    begin

    close;

    end;

    end.

    unit Unit5;

    Продолжение приложения Б

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, Registry;

    type

    TForm5 = class(TForm)

    Edit1: TEdit;

    Button1: TButton;

    Label1: TLabel;

    CheckBox1: TCheckBox;

    Button2: TButton;

    RadioButton1: TRadioButton;

    RadioButton2: TRadioButton;

    Label2: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure RadioButton2Click(Sender: TObject);

    procedure RadioButton1Click(Sender: TObject);

    end;

    var

    F5: TForm5;

    User:Boolean;

    kol:integer;

    implementation

    uses Unit1, Unit4;

    {$R *.dfm}

    procedure TForm5.Button1Click(Sender: TObject);

    var

    Reg:TRegistry;

    begin

    User:=false;

    if (not(RadioButton1.Checked))and(not(RadioButton2.Checked)) then

    Продолжение приложения Б

    messageBox(0,’Избери юзера’,’Ошибка’,0) else

    if RadioButton1.Checked then

    begin

    User:=true;

    f1.Show;

    end;

    if RadioButton2.Checked then

    if edit1.Text=» then

    begin

    messageBox(0,’пароль не введен’,’Ошибка’,0);

    edit1.SetFocus;

    end

    else

    begin

    Reg:=TRegIniFile.Create;

    Reg.RootKey:=HKEY_CURRENT_User;

    Reg.OpenKey(‘.pwd’, false);

    if (reg.ReadString(‘pwd’)<>edit1.Text)and(kol<=3) then

    begin

    messageBox(0,’Запамятовали пароль?’,’Ошибка’,0);

    edit1.Clear;

    Edit1.SetFocus;

    kol:=kol+1;

    end

    else

    f1.Show;

    if kol>=4 then

    begin

    messageBox(0,’Множественный ввод неверного пароля’+#13+’программка будет закрыта’,’Ошибка’,0);

    Reg.CloseKey;

    f5.Close;

    end;

    end;

    end;

    Продолжение приложения Б

    procedure TForm5.FormCreate(Sender: TObject);

    var Reg:TRegistry;

    begin

    kol:=0;

    f5.Height:=145;

    edit1.PasswordChar:=’*’;

    Reg:=TRegIniFile.Create;

    Reg.RootKey:=HKEY_CURRENT_User;

    if Reg.OpenKey(‘.pwd’, false)=false then

    begin

    showmessage(‘Задайте пароль‘);

    Application.CreateForm(TForm4, F4);

    f4.show;

    Reg.CloseKey;

    end;

    end;

    procedure TForm5.CheckBox1Click(Sender: TObject);

    begin

    if checkbox1.Checked then

    edit1.PasswordChar:=#0

    else

    edit1.PasswordChar:=’*’;

    end;

    procedure TForm5.Button2Click(Sender: TObject);

    begin

    close;

    end;

    procedure TForm5.RadioButton2Click(Sender: TObject);

    begin

    edit1.Visible:=true;

    label1.Visible:=true;

    CheckBox1.Visible:=true;

    f5.Height:=195;

    Label1.Top:=72;

    Продолжение приложения Б

    edit1.Top:=88;

    CheckBox1.Top:=110;

    Button1.Top:=128;

    Button2.Top:=160;

    end;

    procedure TForm5.RadioButton1Click(Sender: TObject);

    begin

    edit1.Visible:=false;

    label1.Visible:=false;

    CheckBox1.Visible:=false;

    f5.Height:=145;

    Button1.Top:=80;

    Button2.Top:=112;

    RadioButton1.Enabled:=false;

    RadioButton2.Enabled:=false;

    end;

    end.

    ]]>