Реферат Практика
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение среднего профессионального образования
Уфимский колледж статистики информатики и вычислительной техники
| |
Отчет по практике
Руководитель практики __________К.Н. Засыпкин «___» ____________2009г. |
Выполнила студентка гр. 4П-3 ____________Шитиков С.С. «___» ____________2009г. |
2009
СОДЕРЖАНИЕ:
Введение.
1. Структура и функции учреждения.
2. Постановка задачи.
3. Техническое задание.
4. Описание входной и выходной информации.
5. Экспериментальный раздел .
6. Приложение.
6.1.Исходный текст программы.
6.2.Результаты контрольного примера.
ВВЕДЕНИЕ
На сегодняшний день практически не возможно представить жизнь современного человека без вычислительных машин, которые становятся всё более значимыми во всех отраслях производства и науки. Современный компьютер – это универсальное многофункциональное электронное автоматическое устройство, которое в современном обществе взяло на себя значительную часть работ связанных с обработкой информации. По историческим меркам компьютерные технологии ещё очень молоды и находятся на самом начальном этапе своего развития, но уже сегодня они преобразовывают и вытесняют старые технологии обработки информации и этот процесс в будущем будет только ускорятся. Потому что компьютерные технологии позволяют облегчить труд и являются более эффективными и надежными.
Появилась необходимость использовать информационные технологии в предприятиях для автоматизации получения и выдачи книг со склада, с целью облегчить труд и сделать его наиболее эффективным.
1.
Структура и функции учреждения
Учреждение представляет собой аппарат по предоставлению проекционного оборудования. Учреждение на основании договоров о бухгалтерском обслуживании обеспечивает свою хозяйственную деятельность на программе 1С: бухгалтерия 7.7.
Учреждение состоит из трех сотрудников: руководителя учреждения, главного бухгалтера, администратора по обслуживанию техники. Каждый из которых, выполняет определенные задачи и функции, определенные регламентом предприятия. Учреждение так же исполняет роль сопровождения создания информационных консультаций своих обслуживаемых учреждений.
Отдел оснащен персональными ЭВМ, средствами бесперебойного питания, ТСИ. В учреждении используется только лицензионное программное обеспечение.
2.
Постановка задачи.
Описание предметной области
Требуется разработать информационную систему для автоматизации учета получения и выдачи книг на складе. Каждая книга на складе может быть из разных издательств и по разной цене. Каждая книга, хранящаяся на складе, характеризуется следующими параметрами:
- Издательство;
- Автор;
- Название;
- Тираж;
- Цена.
С данной информационной системой должны работать следующие группы пользователей:
-бухгалтеры материального стола;
-кладовщики.
При работе с системой секретарь выполняет следующие функции:
- Принимает заявки от магазинов;
- Оформляет заявки на новые книги в издательство;
- Ведет учет полностью обработанных и частично обработанных заявок.
Кладовщик ведет учет поступления книги от издательств и выдачу книг магазинам.
Входной информацией служат накладные на принимаемые на склад книги и заявки на приобретение книги от магазинов.
Выходной информацией является отчет о частично и полностью обработанных заявок, и сводная ведомость.
Задача выполняется по мере поступления книг на склад или получения заявок от магазинов.
3. Техническое задание
Введение
Наименование – УП и ВК.
Краткая характеристика – информационная система для учета получения и выдачи книг на складе.
Основание для разработки
Задание Проект-Центра для выполнения дипломной работы.
Назначение разработки
Данный проект предназначен для удобного ведения документов бухгалтеров материального стола и кладовщиков.
Требование к программе
Требования к функциональным характеристикам
- Редактор должен работать в многооконном графическом режиме и поддерживать работу, как клавиатуры, так и манипулятора типа «мышь»;
- Должен быть обеспечен просмотр всех документов, правовой основы и некоторой другой открытой информации для всех пользователей;
- Программа должна быть доступна и проста в использовании для всех пользователей, независимо от их уровня знания компьютерной техники;
- Программа должна обеспечивать возможность просмотра, вывода на печать или передача в текстовые редакторы отчетов.
Требования к надежности
- Программа должна обрабатывать ошибочные действия пользователя и сообщать ему об этом;
- Программа должна обеспечить контроль входной и выходной информации в форме файлов.
- В программе должно быть предусмотрено резервное копирование.
Требования к составу и параметрам технических средств
Программное обеспечение разрабатывается для персональной вычислительной техники типа не ниже IBM PC – 386 со следующими характеристиками:
- Объем ОЗУ не ниже 4 Мбайт;
- Графический адаптер SVGA;
- Клавиатура и манипулятор типа «мышь».
ЭВМ должна работать под управлением операционной системы не ниже Win 98.
Требования к информационной и программной совместимости
- Требование информационной совместимости должно быть обеспечено работой с файлами определенной структуры в качестве входной и выходной информации;
- На компьютере должны быть установлены соответствующие библиотеки для работы с удаленными базами данных, с помощью технологии доступа ADO.
4. Описание входной и выходной информации.
Входной информацией является:
- Список книг, поступающий из издательства по мере требования;
- Список заявок, поступающий из магазинов по мере требования;
Таблица 1. Описание входных документов
Наименование документа (шифр) | Дата поступления документа | Откуда поступает документ | |
Список книг | По мере требования | Издательство | |
Список заявок | По мере требования | Магазин | |
Таблица 2. Описание реквизитов входных документов
Наименование документа | Наименование реквизита | Шифр реквизита | Форма представления | Длина байт |
Список книг | Издательство | Издательство | Строка | 10 |
Название книги | Название книги | Строка | 10 | |
Автор | Автор | Строка | 10 | |
Тираж | Тираж | Число | - | |
Цена | Цена | Число | - | |
Список заявок | Название магазина | Магазин | Строка | 10 |
Название книги | Название книги | Строка | 10 | |
Автор | Автор | Строка | 10 | |
Требуемое количество | Треб. кол | Число | - |
Формы входных документов
Список книг
Издательство | Название книги | Автор | Тираж | Цена |
| | |||
| | |||
| | |||
| |
Список заявок
Магазин | Название книги | Автор | Требуемое количество |
| | ||
| | ||
| | ||
| |
Описание выходной информации
Выходной информацией является:
- Ведомость удовлетворенных заказов;
- Ведомость неудовлетворенных заказов;
- Сводная ведомость;
Таблица 4. Описание выходных документов
Наименование документа | Периодичность выдачи | Срок выдачи | Количество экземпляров | Куда передается |
Ведомость удовлетворенных заказов | Каждый месяц | 1 день | 1 | В бухалтерию |
Ведомость неудовлетворенных заказов | Каждый месяц | 1 день | 1 | В бухалтерию |
Сводная ведомость | Каждый месяц | 1 день | 1 | В бухалтерию |
Таблица 5. Описание реквизитов выходных документов
Наименование документа | Наименование реквизита | Шифр реквизита | Форма представления | Длина байт | |
1 | 2 | 3 | 4 | 5 | |
Ведомость удовлетворенных заказов | Номер заказа | № группы | Число | 10 | |
Название магазина | Магазин | Строка | 10 | ||
Название книги | Наз. книги | Строка | 10 | ||
Фамилия автора | Автор | Строка | 10 | ||
Название издательства | Издательство | Строка | 10 | ||
Количество выданных книг | Выдано | Число | - | ||
Ведомость неудовлетворенных заказов | Номер заказа | № заказа | Число | - | |
Название магазина | Магазин | Строка | 10 | ||
| Название книги | Наз. книги | Строка | 10 | |
Фамилия автора | Автор | Строка | 10 | ||
Требуемое количество | Треб. кол | Число | - | ||
Сводная ведомость | Название издательства | Издательство | Строка | 10 | |
Название книги | Наз. книги | Строка | 10 | ||
Фамилия автора | Автор | Строка | 10 | ||
Количество выданных книг | Выдано | Число | - | ||
Цена выданных книг | Сумма | Число | - | ||
Формы выходных документов
Ведомость удовлетворенных заявок
№ заказа | Магазин | Название книги | Автор | Издательство | Выдано |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
Ведомость неудовлетворенных заявок
№ заказа | Магазин | Название книги | Автор | Треб. кол-во |
| | | | |
| | | | |
| | | | |
| | | | |
Сводная ведомость
Издательство | Название книги | Автор | Кол-во книг | Сумма |
| | | | |
| | | | |
| | | | |
| | | | |
| | | Итого: | |
5. Экспериментальный раздел
Обоснование выбора языка программирования
Для создания программы использовалась среда разработки 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-го поколений, соединив их сильные стороны и создав мощную и производительную среду разработки.
6.
Приложение.
6.1.Исходный текст программы.
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.
6.2.Результаты контрольного примера.
Входные данные контрольного примера представлены в виде таблиц.
Рисунок 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 |