Пример готовой курсовой работы по предмету: Программирование
Содержание
Содержание
Задание на курсовую работу3
1.Описание задачи 4
2.Описание программы 5
2.1.Выполняемые операции 5
2.2.База данных 7
2.3.Описание проекта 10
3.Инструкция для пользователя 19
4.Заключение 21
Приложение
1. Текст программы
«Инструментальные средства разработки информационных коммерческих систем»
студенту группы ЭФЗ 1Д Ожерельевой Е.И..
1.Тема работы: Организация учета и контроля видеоносителей в видео-
теке
2.Цель работы: Создание Windows-приложения для автоматизации ос
новных рутинных процедур учета материально-технического снабжения
предприятия.
3.Среда разработки: Visual Basic 6.0, Delphi 7.0, MS Access 2000, MS Access
XP, VBA.
4.Материалы, представляемые к защите:
4.1.Пояснительная записка с постановкой задачи, описанием и исход
ными текстами программы.
4.2.Дискета с файлами исходных текстов программы и файлом демон
страционной базы данных с
2. записями.
5.Рекомендуемая литература:
5.1.Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических ин
формационных систем. М.: Финансы и статистика. 2003.509с.
5.2.Боб Роселман, Ричерд А. Писли и др. Использование Visual Basic 6.0. Москва-С-
Пб.-Киев. 1999. 605с.
5.3.Климова Л.М. Delphi
7. Самоучитель. Основы программирования. Решение типо
вых задач. М.: Кудиц-Образ. 2004. 463с.
5.4.Васильев А., Андреев A. VBA в Office 2000. Учебный курс. М.: Питер. 2001.423с.
5.5.Сюзанн Новалис. Access 2000. Руководство по VBA. — М.: изд-во Лори, 2001.
5.6.Дженнингс P. Microsoft Acsess 97 в подлиннике. Том 2. — СПб.: BHV-Санкт-
Петербург, 2000.
Приложение: Техническое задание на разработку программы.
Руководитель:
ст. преподаватель кафедры ИТКиреева Г.И.
77
Приложение
2. Техническое задание
«Автоматизация учета и контроля оборота видеоносителей в видеотеке»
Техническое задание на разработку программы
1. Выполняемые операции
1.1Файловые операции
1.1.4 Окончание сеанса работы. Операция должна заканчивать работу программы с предварительной проверкой наличия в памяти не сохраненного текущей базы данных.
1.2Операции учета оборота кассет
1.2.1 Поступление новых кассет. Операция должна выполнять поиск названия фильма в базе данных и, в случае отсутствия такового, добавлять новую запись с данными поступившей кассеты, после чего список должен быть отсортирован по названиям фильмов. В случае нахождения в списке записи с поступившим фильмом, количество указанных в записи копий должно быть соответственно увеличено.
1.2.2Исключение кассеты из базы данных. Операция должна уменьшать ко
личество указанных в текущей записи копий фильма на
1. либо удалять за
пись, если количество копий было
1. Текущая запись устанавливается выбо
ром в списке в основном окне программы.
1.2.3Регистрация выдачи кассеты. Операция должна уменьшать количество
имеющихся в наличии копий фильма в текущей записи списка, заносить в за
пись фамилию и инициалы клиента, увеличивать значение количества выдач
на 1, а сумму выручки на стоимость проката. Операция должна быть недос
тупной для записей, в которых количество имеющихся в наличии копий
фильма равно
0. Текущая запись устанавливается выбором в списке в основ
ном окне программы.
1.2.4Регистрация возврата кассеты. Операция должна увеличивать количе
ство имеющихся в наличии копий фильма в текущей записи базы данных и
удалять из записи фамилию и инициалы клиента. Текущая запись устанавли
вается выбором в списке в основном окне программы.
1.2.5 Вывод информации о кассете. В этой операции выводится вся информация о кассете из текущей записи списка.
1.3Анализ спроса и выручки
78
1.3.1Анализ спроса. В этой операции должен выполняться поиск 3 фильмов,
пользующихся наибольшим спросом, и вывод списка этих фильмов с коли
чеством выдач на экран.
1.3.2Анализ выручки. В этой операции должен выполняться поиск 3 филь
мов, прокат которых дал наибольшую выручку, и вывод списка этих фильмов
с величинами выручки на экран.
2.Обрабатываемая информация
2.1 В записи базы данных должна храниться, как минимум, следующая информация о фильме:
название фильма,
фамилия и инициалы режиссера,
год выпуска,
киностудия,
длительность,
стоимость проката,
количество копий в фонде,
количество копий в наличии,
список фамилий клиентов, взявших кассеты в прокат,
количество выдач,
суммарная выручка за прокат.
2.2Входная информация:
2.2.1Операции открытя файла со списком и сохранения списка в файле. В
этих операциях должны вводиться имя файла с путем доступа к нему.
2.2.2Операция регистрации поступления новых кассет. В этой операции
должны вводиться первые 6 вышеуказанных данных, и количество посту
пивших копий, поля количества копий в фонде и в наличии заполняется автоматически.
2.2.3Операции регистрации выдачи и возврата. В операциях регистрации
должен быть предусмотрен ввод фамилии и инициалов клиента.
2.3Выходная информация:
2.3.1Вывод информации о кассете. См. п. 1.2.3.
2.3.2Анализ спроса и выручки, вывод справочной информации. См. п.п. 1.3,
1.4.
3.Пользовательский интерфейс
Рабочая среда программы должна состоять из основного окна, диалоговых окон выполнения операций, информационных окон (окон сообщений) и
79
контекстных меню с командами выполнения основных операций. Основное окно должно содержать:
операционное меню,
панель инструментов с кнопками выполнения файловых операций и
основных операций учета видеоносителей,
таблицу записей базы данных (с сокращенным набором полей) для визуализации данных и выбора текущей записи,
строку состояния с номером текущей записи и количеством записей базы данных.
Руководитель, ст. преподаватель кафедры ИТКиреева Г.И.
1.Описание задачи
Открытие сетей видеопроката является на данный момент одним из самых быстроразвивающихся видов бизнеса на территории крупных городов. Каждое отделение видеопроката оснащено крупной видеотекой, и, при желании, клиент может не только взять напрокат нужную кассету, но и приобрести её. Новинки мировой индустрии кинематографа поступают в прокат по мере выдачи им лицензии и прокатного удостоверения, утвержденных законодательством РФ.
При регистрации видеоносителей в прокате учитывается вся информация о них: название кассеты, ФИО режиссера, жанр произведения, страна-производитель, кинокомпания, сделавшая данный продукт, время воспроизведения, цена проката (руб.) за сутки, а так же дата выпуска кассеты в прокат и количество принятых в данное отделение кассет с аналогичным названием.
Продажа видеоносителей производится по установленной законом цене (600 руб. за штуку).
Клиент имеет право взять напрокат (или приобрести) любое количество кассет, и длительность проката ограничена только финансовыми возможностями клиента. Но для этого клиенту необходимо получить регистрационную кару, на которую заносится вид заказа и его стоимость. При выдаче данной карты регистрируется вся необходимая информация о клиенте: ФИО, контактный телефон, серия и номер паспорта (включая срок действия паспорта), адрес прописки.
При желании, сотрудник виопроката может просмотреть список выданных кассет, список клиентов данного отделения, поверить какие кассеты и кому были выданы за определённый промежуток времени, а так же узнать, какая кассета пользовалась наибольшим спросом у клиентов за отчётный период. Так же в программе предусмотрена опция показа выручки за отчетный
период, в которую входят выручка от продаж, выручка от проката и суммарная выручка.
Объем вышеуказанной работы по учету видеоносителей достаточно велик даже в условиях небольших отделений проката и требует использования вычислительной техники и специальных программных средств.
Целью работы является создание компьютерной программы для автоматизации основных процедур учета видеоносителей в видеотеке.
Для разработки подобных программных средств существуют специальные инструментальные системы — системы управления базами данных (СУБД), как например SQL Server фирмы Microsoft. Однако, они не имеют встроенного языка программирования высокого уровня, с помощью которого и создается прикладная программа управления базой данных, настроенная на особенности той предметной области, где она будет использоваться. Поэтому для решения задачи была использована универсальная система программирования Delphi
7. набор средств которой вполне достаточен для создания программ управления базами данных малой и средней сложности.
1. Описание программы
1.1 Выполняемые операции
Программа выполняет следующие операции с базой данных (БД), содержащей данные о видеоносителях в видеотеке и о клиентах данного отделения видеопроката:
Добавление новых данных в БД. В этой операции создаются новые записи БД, в которую заносятся данные о видеоносителях, поступивших в прокат для последующей реализации, и клиентах данного отделения видеопрката, введенные с клавиатуры. Системная дата компьютера заносится в запись как дата выдачи данной продукции прокатного удостоверения. За один сеанс выполнения этой операции можно ввести произвольное количество записей.
Изменение номера текущей записи. Некоторые операций выполняются программой с текущей записью БД. Перед выполнением таких операций необходимо нужную запись сделать текущей. Это выполняется щелчком правой кнопки мыши по соответствующей строке списка в главном окне программы.
Изменение данных. В этой операции пользователю предоставляется возможность изменить данные из текущей записи БД (например, сведения о принятой видеокассете).
Удаление данных. Эта операция удаляет из БД текущую запись. Восстановление удаленной записи невозможно.
Вывод данных на экран. Эта операция выводит на экран все данные одной — текущей записи. Выборочные поля всех записей БД (номер контракта, вид и наименование материала, объем и дата поставки и название фирмы -поставщика) выводятся в виде таблицы в основном окне программы. Про-листывание строк с целью просмотра данных в этой таблице и выбора текущей записи выполняется обычным для Windows-приложений путем.
Регистрация выдачи кассеты. В этой операции регистрируется ФИО клиента, который берёт напрокат кассету (кассеты), а так же название взятой продукции и время возврата. Все зарегистрированные данные заносятся в специализированные списки. Количество записей в БД с названием выдаваемых кассет уменьшается на 1.
Регистрация приёма кассеты. В этой операции, зарегистрированные при выдаче кассеты данные, удаляются из специализированных списков. Количество записей в БД с названием принимаемых кассет увеличивается на 1.
Поиск записи. В этой операции выполняется поиск записей БД, в которой содержится искомое данное. Поиск можно выполнить либо по номеру жанру произведения, либо по названию кассеты, либо по названию страны -производителя, либо по фамилии режиссера, либо по ФИО клиента. Данные основных полей найденной записи выводятся на экран. После нахождения
очередной записи с искомым данным можно продолжить поиск, до тех пор пока не будут проверены все записи БД.
Подсчет выручки. Эта операция предоставляет возможность знать, какого размера была выручка у данного отделения видеопроката за тот или иной период. Выручка высчитывается как от продаж, так и от выдачи кассет напрокат, а так же суммарная выручка.
1.2 База данных
База данных хранится в двух файлах с расширением .MDF и .LDF, при этом в первом находится физическая структура базы, во втором — логическая. БД разрабатывалась в среде SQL Server фирмы Microsoft. Её структура выглядит следующим образом:
Выдержка из текста
Реализация команды Приём меню Прокат
Для реализации этой команды необходимо на соответствующей форме ввести код клиента в отведенный для этого MaskEdit, после чего в появившийся ComboBox ввести номер заказа. При щелчке на кнопку «Принять» кассеты данного заказа принимаются в видеотеку и удаляются из специализированных списков, и число таких кассет в базе увеличивается на 1.
Реализация команды Добавить новую меню Кассеты
При регистрации видеоносителей в прокате учитывается вся информация о них: название кассеты, ФИО режиссера, жанр произведения, страна-производитель, кинокомпания, сделавшая данный продукт, время воспроизведения, цена проката (руб.) за сутки, а так же дата выпуска кассеты в прокат и количество принятых в данное отделение кассет с аналогичным названием. При щелчке по кнопке Добавить В БД добавится установленное количество кассет. Цена их будет зависеть от даты выдачи им лицензии, так как новинки всегда стоят дороже остальных кассет. В программе установлено, что кассета является новинкой в течение месяца после получения лицензии, после чего её цена автоматически снижается до уровня простых кассет. Реализация команды Изменить меню кассеты
Эта команда применяется в том случае, если необходимо изменить данные видеокассете, которые находятся в таблице на главной форме. Для этого необходимо кликнуть правой кнопкой мыши по той записи, которая нуждается в изменении. Из появившегося меню выбрать строку «Изменить». Появится форма, аналогичная форме добавления, но результирующей кнопкой «Изменить», на которую надо нажать после коррекции записей.
Реализация команды Добавить меню Клиенты
Регистрируется вся необходимая информация о клиенте: ФИО, контактный телефон, серия и номер паспорта (включая срок действия паспорта), адрес прописки. При щелчке по кнопке «Добавить» В БД добавится 1 новый клиент.
Реализация команды Продажа меню Кассеты
Если стоимость проката кассеты превышает её номинальную стоимость, то клиенту предлагается приобрести кассету. Если клиент согласен, то с формы Выдача сотрудник проката переходит на форму продажа. Форма содержит окно, где отображаются выбранные для продажи кассеты, а так же окна, в которых отображаются код клиента, ФИО клиента и цена заказа. При щелчке по кнопке ОК выручка увеличивается на сумму заказа, а количество таких кассет в базе уменьшается на 1.
Разработчик полагает, что описание реализации остальных опций не
имеет смысла по причине их простоты.
Заключение
Полученные результаты полностью соответствуют поставленным задачам. Разработанная программа являет собой автоматизированную систему учета видеоносителей в видеотеке.
22
Приложение 1.
Исходные тексты программы
type
//TStr = array [0.. 10]
of String;
TForm 1 = class(TForm)
MainMenu 1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
DBGrid 1: TDBGrid;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
GroupBox 1: TGroupBox;
ComboBox 1: TComboBox;
ComboBox 2: TComboBox;
ComboBox 3: TComboBox;
Label 1: TLabel;
Label 2: TLabel;
Label 3: TLabel;
Label 4: TLabel;
Edit 1: TEdit;
Label 5: TLabel;
ADOQuery 1: TADOQuery;
ADOCommand 1: TADOCommand;
Label 6: TLabel;
N14: TMenuItem;
Edit 2: TEdit;
procedure FormActivate(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure ComboBox 1Change(Sender: TObject);
procedure ComboBox 2Change(Sender: TObject);
procedure ComboBox 3Change(Sender: TObject);
procedure Edit 2Change(Sender: TObject);
procedure Edit 1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form 1: TForm 1;
implementation
uses ADO, priem, Output, manreg, outputmen, stats, Operations, cassreg,
sell, outputed;
{$R *.dfm}
procedure TForm 1.FormActivate(Sender: TObject);
var
SQL : String;
i,j,k: Integer;
begin
{SQL:=’update isriks_cassets set isriks_cassets.cas_director = »Unknown»’;
SQL:=SQL + ‘where cas_director is null’;
ADOQuery 1.SQL.Clear;
ADOQuery 1.SQL.Add(SQL);
ADOQuery 1.Open;
ADoquery 1.ExecuteOptions;
ADOQuery 1.close; }
SQL:=’update isriks_cassets set isriks_cassets.cas_director = »Unknown»’;
SQL:=SQL + ‘where cas_director is null’;
ADOCommand 1.prepared:=false;
ADOCommand 1.CommandText:=SQL;
ADOCommand 1.prepared:=true;
ADOCommand 1.execute;
SQL := ‘SELECT gen_name FROM isriks_gengers’;
ADOQuery 1.SQL.Clear;
ADOQuery 1.SQL.Add(SQL);
ADOQuery 1.Open;
ADOQuery 1.First;
ComboBox 1.Items.Clear;
ComboBox 1.Items. Add(‘Bce’);
for i := 1 to ADOQuery 1.RecordCount do begin
ComboBox 1.Items. Add(Trim(ADOQuery 1.FieldValues[‘gen_name’]));
ADOQuery 1.Next; end;
ComboBox 1.ItemIndex := 0;
SQL := ‘SELECT distinct cas_director FROM isriks_cassets’;
ADOQuery 1.SQL.Clear;
ADOQuery 1.SQL. add(SQL);
ADOQuery 1.Open;
ADOQuery 1.First;
ComboBox 2.Items.Clear;
ComboBox 2.Items.Add(‘Все’);
for i := 1 to ADOQuery 1.RecordCount do begin
ComboBox 2.Items.Add(Trim(ADOQuery 1.FieldValues[‘cas_director’]));
//tmp[i]
:= Trim(ADOQuery 1.FieldValues[‘cas_director’]);
ADOQuery 1.Next;
end;
ComboBox 3.ItemIndex := 0;
SQL := ‘SELECT distinct cas_country FROM isriks_cassets’;
ADOQuery 1.SQL.Clear;
ADOQuery 1.SQL. add(SQL);
ADOQuery 1.Open;
ADOQuery 1.First;
ComboBox 3.Items.Clear;
ComboBox 3.Items.Add(‘Все’);
for i := 1 to ADOQuery 1.RecordCount do begin
ComboBox 3.Items.Add(Trim(ADOQuery 1.FieldValues[‘cas_country’]));
ADOQuery 1.Next;
end;
end;
procedure TForm 1.N6Click(Sender: TObject);
begin
Form 2.Show;
end;
procedure TForm 1.N7Click(Sender: TObject);
begin
Form 5.Show;
end;
procedure TForm 1.N8Click(Sender: TObject);
begin
Form 6.Show; //возможно ссылка не туда..
end;
procedure TForm 1.N5Click(Sender: TObject);
begin
form 1.Close;
end;
procedure TForm 1.N10Click(Sender: TObject);
begin
Form 4.Show;
end;
procedure TForm 1.N11Click(Sender: TObject);
begin
Form 8.show;
end;
procedure TForm 1.N12Click(Sender: TObject);
begin
Form 3.Show;
end;
procedure TForm 1.N13Click(Sender: TObject);
begin
Form 9.Show;
end;
procedure TForm 1.N9Click(Sender: TObject);
begin
Form 7.Show;
end;
procedure TForm 1.N14Click(Sender: TObject);
begin
form 10.show
end;
procedure TForm 1.ComboBox 1Change(Sender: TObject);
begin
ado.DataModule 1.Cas.Filtered:=false;
ado.DataModule 1.Cas.Filter:=’gen_id=’+inttostr(combobox 1.ItemIndex+1);
ado.DataModule 1.Cas.Filtered:=true;
end;
procedure TForm 1.ComboBox 2Change(Sender: TObject);
begin
ado.DataModule 1.Cas.Filtered:=false;
ado.DataModule 1.Cas.Filter:=’cas_director=»’+combobox 2.Text+»»;
ado.DataModule 1.Cas.Filtered:=true;
end;
procedure TForm 1.ComboBox 3Change(Sender: TObject);
begin
ado.DataModule 1.Cas.Filtered:=false;
ado.DataModule 1.Cas.Filter:=’cas_country=»’+combobox 3.Text+»»;
ado.DataModule 1.Cas.Filtered:=true
end;
procedure TForm 1.Edit 2Change(Sender: TObject);
begin
ado.DataModule 1.Cas.Filtered:=false;
ado.DataModule 1.Cas.Filter:=’cas_year=’+edit 2.Text;
ado.DataModule 1.Cas.Filtered:=true;
end;
procedure TForm 1.Edit 1Change(Sender: TObject);
begin
ado.DataModule 1.Cas.Filtered:=false;
if edit 1.Text=» then ado.DataModule 1.Cas.Filtered:=false
else
begin
ado.DataModule 1.Cas.Filter:=’cas_name like »’+edit 1.Text+’*»’;
ado.DataModule 1.Cas.Filtered:=true;
end
end;
end.
unit ADO;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDataModule 1 = class(TDataModule)
ADOConnection 1: TADOConnection;
Cas: TADODataSet;
srccas: TDataSource;
genre: TADODataSet;
srcgenre: TDataSource;
cust: TADODataSet;
srccust: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;