Автор работы: Пользователь скрыл имя, 07 Апреля 2014 в 22:21, курсовая работа
Данная курсовая работа посвящена теоретическому изучению CASE-средства Designer/2000 фирмы ORACLE и разработке информационной системы для автоматизации учета ремонта жилищного фонда в муниципальном жилищно-ремонтном эксплуатационном предприятии.
Задачи, поставленные в курсовой работе:
- изучение назначения и основных характеристик case средства Designer/2000;
- анализ предметной области для разработки ИС;
- определение целей и задач системы;
- построение моделей данных;
- разработка БД и клиентского приложения;
- закрепление и развитие теоретических знаний по проектированию ИС;
- приобретение практических навыков разработки ИС.
Введение……………………………………………………………......................3
1 Теоретическая часть. CASE средство Designer/2000………………………....5
2 Проектная часть…………………………………………………………………8
2.1 Постановка задач……………………………………………………………...8
2.2 Анализ предметной области………………………………………………….9
2.3 Функциональная модель по стандарту IDEF0 и методологии SADT…....11
2.4 Модель данных по стандарту IDEF1X диаграммы “сущность-связь”…...13
2.5 Описание таблиц базы данных………………………………………….......14
2.5 Описание таблиц базы данных……………………………………………...16
2.7 Схема взаимосвязей модулей и массивов данных ………………………..17
2.8Алгоритм работы модуля dati………………………………………………..18 2.9 Инструкция пользователя…………………………………………………...19
2.10 Способы и результаты тестирования программного продукта………….20
Заключение……………………………………………………………………….23
Список использованных источников………
3. Проверка
в работы программы в
При тестировании программы в исключительных ситуациях проверяется устойчивость. Такие ситуации могут возникнуть, если при редактирований какой- либо записи возникли неполадки с электричеством. В этом случае может возникнуть ситуация что при восстановлении работы данная запись будет недоступна, так как в базе данных Access логическое поле, которое является признаком занятости, будет иметь значение истинна. Эту проблему можно решить лишь открыв базу данных Access и исправив значение логического поля.
Заключение
В процессе выполнения данной курсовой работы была создана ИС для автоматизации учета ремонта жилищного фонда в муниципальном жилищно-ремонтном эксплуатационном предприятии. Данная ИС отвечает требованиям технического задания и в целом соответствует реальной предметной области.
Также в ходе выполнения работы была проанализирована предметная область, разработана функциональная модель по стандарту IDEF0, соответствующая техническому заданию, модель данных по стандарту IDEF1X.
Были успешно достигнуты поставленные цели, а именно:
- закрепление
и развитие теоретических
- развитие
умения осуществлять выбор
- приобретение
студентами практических
- умение вырабатывать и реализовывать решения.
Однако созданная в соответствии с техническим заданием система имеет ряд недостатков, которые возможно устранить будущем, одним из которых является небольшое количество выводимых отчетов.
Список использованных источников
1. Вендров
А.М. CASE-технологии: Современные методы
и средства проектирования
2. Вендров
А.М. Проектирование программного
обеспечения экономических
3. Вендров
А.М. Практикум по проектированию
программного обеспечения
4. Базы данных. Учебник для вузов./Под ред. Хоменко А.Д., -М.:2000.
5. Карпова Т.С. Базы данных: Модели, разработка, реализация.- СПб: Питер,2001.
6. Дарахвелидзе, П.Г. Программирование в Delphi 7 / П.Г. Дарахвелидзе, Е.П. Марков. – Спб.: БХВ-Петербург, 2005 . – 784 с
Приложение А
Модель ИС по стандарту IDEF0 и методологии SADT
Рисунок Б.1 – Уровень A0- автоматизация учета ремонта в МЖРЭП
Рисунок Б.3 – Уровень A2- определение уровня доступа
Рисунок Б.4 - Уровень A2 – декомпозиция блока изменение БД
Рисунок Б.5 - Уровень A3- декомпозиция блока работа с БД
Рисунок Б.6 - Уровень A3- декомпозиция блока добавление, удаление, редактирование записей
Рисунок Б.6 - Уровень A4 – Оформление заявки
Рисунок Б.7 - Уровень A2 – выполнение запросов пользователей
Рисунок Б.8 - Уровень A3 – Поиск информации
Рисунок Б.9 - Уровень A3 – сортировка записей
Рисунок Б.10 - Уровень A3 – вывод отчетной информации на экран
Приложение Б – Физическая модель данных
Рисунок Б1- Физическая модель денных
Приложение В - Программный код созданной ИС
procedure TFpass.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if application.MessageBox('Вы хотите выйти из программы?','Выход
из программы',mb_yesno+mb_
begin
application.Terminate;
end
else canclose:=false;
end;
procedure TFpass.BitBtn1Click(Sender: TObject);
begin
closequery;
end;
procedure TFpass.SpeedButton1Click(
var inifile:tinifile;
dbp:string;
begin
dm.od.InitialDir:=
if dm.od.Execute then
begin
e2.Text:=dm.od.FileName;
try
dm.ADO.Connected:=false;
dm.ADO.ConnectionString:='
dm.ADO.Connected:=true;
except
showmessage('Произошла ошибка при подключении к базе');
exit;
end;
IniFile := TIniFile.Create(
inifile.WriteString('Options', 'DBPath', dm.od.FileName);
IniFile.Free;
dm.TEMP.Active:=false;
dm.TEMP.CommandText:='Select login fROM pass';
dm.TEMP.Active:=true;
cb.Clear;
While not dm.TEMP.Eof do
begin
cb.Items.Add(dm.TEMP.Fields[0]
dm.TEMP.Next;
end;
end;
end;
procedure TFpass.FormShow(Sender: TObject);
var inifile:tinifile;
dbp:string;
begin
fpass.Caption:=application.
IniFile := TIniFile.Create(
DBP := IniFile.ReadString('Options', 'DBPath', ExtractFilePath(Application.
e2.Text:=dbp;
IniFile.Free;
if fileexists(dbp)=false then
begin
showmessage('База данных по указанному пути не была найдена!');
exit;
end;
try
dm.ADO.Connected:=false;
dm.ADO.ConnectionString:='
dm.ADO.Connected:=true;
except
showmessage('Произошла ошибка при подключении к базе');
exit;
end;
cb.Clear; e.Clear;
dm.TEMP.Active:=false;
dm.TEMP.CommandText:='Select login fROM pass';
dm.TEMP.Active:=true;
While not dm.TEMP.Eof do
begin
cb.Items.Add(dm.TEMP.Fields[0]
dm.TEMP.Next;
end;
end;
procedure TFpass.BitBtn2Click(Sender: TObject);
begin
if cb.Text='' then showmessage('Пользователь не выбран')
else if e.Text='' then showmessage('Пароль не введен')
else
begin
dm.temp.Active:=false;
dm.temp.CommandText:='select login from pass where (login="'+cb.Text+'") and (pass="'+e.Text+'")';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then
begin
if cb.text='Администратор' then
begin
fpass.Hide;
fmain.sb.Panels[0].Text:=cb.
fmain.showmodal;
end
else if cb.Text='Работник' then
begin
fpass.Hide;
fmain.n99.Visible:=false;
fmain.n5.Visible:=false;
fmain.sb.Panels[0].Text:=cb.
fmain.showmodal;
end
else if cb.Text='Гость' then
begin
//fmain.n10.Visible:=false;
fmain.n11.Visible:=false;
fmain.n12.Visible:=false;
fmain.n15.Visible:=false;
fmain.n16.Visible:=false;
fmain.n17.Visible:=false;
fmain.n99.Visible:=false;
fmain.n5.Visible:=false;
fzayavka.N2.Visible:=false;
fzayavka.N3.Visible:=false;
fzayavka.N4.Visible:=false;
fzayavka.N5.Visible:=false;
fzayavka.N6.Visible:=false;
fzayavka.N7.Visible:=false;
fzayavka.N8.Visible:=false;
fzayavka.N9.Visible:=false;
fzayavka.N10.Visible:=false;
fzayavka.N11.Visible:=false;
fzayavka.N12.Visible:=false;
fzayavka.N13.Visible:=false;
fzayavka.N14.Visible:=false;
fzayavka.N15.Visible:=false;
fpass.Hide;
fmain.sb.Panels[0].Text:=cb.
fmain.showmodal;
end;
end
else
begin
showmessage('Проверьте правильность пароля');
exit;
end;
end;
end;
procedure TFpass.cbKeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
end.
procedure TFChPAss.FormShow(Sender: TObject);
begin
cb.Clear;
dm.temp.Active:=false;
dm.temp.CommandText:='Select login from pass WHERE (login<>"Гость") order by login';
dm.temp.Active:=true;
while not dm.temp.Eof do
begin
cb.Items.Add(dm.temp.Fields[0]
dm.temp.Next;
end;
end;
procedure TFChPAss.cbKeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
procedure TFChPAss.BitBtn2Click(Sender: TObject);
begin
if cb.Text='' then showmessage('Вы не выбрали имя пользователя')
else if e1.Text='' then showmessage('Вы не ввели пароль')
else if e2.Text='' then showmessage('Вы не ввели подтверждение пароля')
else if e2.Text<>e1.Text then showmessage('Пароль и подтверждение пароля не совпадают')
else
begin
dm.com.Commandtext:='Update pass Set pass="'+e2.Text+'" where (login = "'+cb.Text+'")';
dm.com.Execute;
showmessage('Пароль изменен');
closequery;
end;
end;
procedure TFChPAss.FormCloseQuery(
begin
cb.Clear;
e1.Text:='';e2.Text:='';
close;
end;
procedure TFChPAss.BitBtn1Click(Sender: TObject);
begin
closequery;
end;
end.
procedure TFdati.BitBtn1Click(Sender: TObject);
begin
closequery;
end;
procedure TFdati.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
dtp1.Date:=date;
dtp2.Date:=date;
close;
end;
procedure TFdati.FormShow(Sender: TObject);
begin
dtp1.Date:=date;
dtp2.Date:=date;
end;
procedure TFdati.BitBtn2Click(Sender: TObject);
var
Template,NewTemplate,FindText, NewStr, Replace,ReplaceWith:
LinkToFile,SaveWithDocument,
Table1: Table;
i: integer;
flag:boolean;
Reg: TRegistry;
summa:real;
begin
if dtp1.Date>dtp2.Date then
begin
showmessage('Ошибка в
exit;
end;
//Проверяем, инсталлирован ли Word
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
flag:=reg.KeyExists('Word.
reg.Free;
//flag:=true;
if flag=false then
begin
application.MessageBox('Word не устанволен','Отчет',mb_ok+mb_
exit;
end;
if tm=0 then
begin
WordApplication1.Visible:=
WordApplication1.Connect; // Устанавливаем связь с сервером
//Открываем шаблон otchet.dot в Word
Template:=ExtractFilePath(
WordApplication1.Documents.
WordDocument1.ConnectTo(
//Заполняем таблицу списка объектов
Table1:=WordDocument1.Tables.
//WordDocument1.Tables - это массив таблиц документа (тип Tables), а WordDocument1.Tables.Item(i) - i-ая таблица
Replace:=true; // параметр, задающий режим замены
FindText:='#1'; // что меняем
ReplaceWith:='с '+datetostr(dtp1.Date)+' по '+datetostr(dtp2.Date); // на что меняем
WordDocument1.Range.Find.
EmptyParam,EmptyParam,
dm.temp.Active:=false;
dm.temp.CommandText:='Select adr_z,sum(st_nr) FROM zil,zilci,zayavka,naznR WHERE (id_z=id_z_zl) and (id_zl=id_zl_za) and (id_za=id_za_nr) and (datav_za BETWEEN #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#) GROUP BY adr_z';
dm.temp.Active:=true;
i:=2;
summa:=0;
While (not dm.temp.Eof)do
begin
Table1.Rows.Add(EmptyParam);
Table1.Cell(i, 1).Range.Text := dm.temp.Fields[0].AsString;
Table1.Cell(i, 2).Range.Text := dm.temp.Fields[1].AsString;
summa:=summa+dm.temp.Fields[1]
inc(i);dm.temp.next;
end;
Replace:=true; // параметр, задающий режим замены
FindText:='#2'; // что меняем
ReplaceWith:=floattostr(summa)
WordDocument1.Range.Find.
EmptyParam,EmptyParam,
Table1.Rows.Item(i).Delete;
WordApplication1.Visible:=
WordApplication1.Disconnect; // Разрываем связь с серверо
end
else if tm=1 then
begin
WordApplication1.Visible:=
WordApplication1.Connect; // Устанавливаем связь с сервером
//Открываем шаблон otchet.dot в Word
Template:=ExtractFilePath(
WordApplication1.Documents.
WordDocument1.ConnectTo(
//Заполняем таблицу списка объектов
Table1:=WordDocument1.Tables.
//WordDocument1.Tables - это массив таблиц документа (тип Tables), а WordDocument1.Tables.Item(i) - i-ая таблица
Replace:=true; // параметр, задающий режим замены
FindText:='#1'; // что меняем
ReplaceWith:='с '+datetostr(dtp1.Date)+' по '+datetostr(dtp2.Date); // на что меняем
WordDocument1.Range.Find.
EmptyParam,EmptyParam,
dm.temp.Active:=false;
dm.temp.CommandText:='Select nazv_rr,ocena_rc,cena_rc,data_
dm.temp.Active:=true;
i:=2;
While (not dm.temp.Eof)do
begin
Table1.Rows.Add(EmptyParam);
Table1.Cell(i, 1).Range.Text := dm.temp.Fields[0].AsString;
Table1.Cell(i, 2).Range.Text := dm.temp.Fields[1].AsString;
Table1.Cell(i, 3).Range.Text := dm.temp.Fields[2].AsString;
Table1.Cell(i, 4).Range.Text := dm.temp.Fields[3].AsString;
inc(i);dm.temp.next;
end;
Replace:=true; // параметр, задающий режим замены
FindText:='#2'; // что меняем
ReplaceWith:=floattostr(summa)
WordDocument1.Range.Find.
EmptyParam,EmptyParam,
Table1.Rows.Item(i).Delete;
WordApplication1.Visible:=
WordApplication1.Disconnect; // Разрываем связь с серверо
end
else if tm=2 then
begin
WordApplication1.Visible:=
WordApplication1.Connect; // Устанавливаем связь с сервером
//Открываем шаблон otchet.dot в Word
Template:=ExtractFilePath(
WordApplication1.Documents.
WordDocument1.ConnectTo(