CASE средство Designer/2000

Автор работы: Пользователь скрыл имя, 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
Список использованных источников………

Файлы: 1 файл

рпз_прис.docx

— 3.80 Мб (Скачать файл)

3. Проверка  в работы программы в исключительных  ситуациях

При тестировании программы в исключительных ситуациях проверяется устойчивость.  Такие ситуации могут возникнуть, если при редактирований  какой- либо записи  возникли неполадки с электричеством.  В этом случае может возникнуть ситуация что при восстановлении работы данная запись будет недоступна, так как в базе данных Access логическое поле, которое является признаком занятости, будет иметь значение истинна. Эту проблему можно решить лишь открыв базу данных Access и исправив значение логического поля.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

В процессе выполнения данной курсовой работы была создана ИС для автоматизации учета ремонта жилищного фонда в муниципальном жилищно-ремонтном эксплуатационном предприятии. Данная ИС отвечает требованиям технического задания и в целом соответствует реальной предметной области.

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

Были успешно достигнуты поставленные цели, а именно:

- закрепление  и развитие теоретических знаний, полученных студентом в процессе  изучения курса «Проектирование  информационных систем»;

- развитие  умения осуществлять выбор варианта  технологии проектирования информационных  систем (ИС);

- приобретение  студентами практических навыков  разработки методических материалов  проектировщика;

- умение  вырабатывать и реализовывать  решения.

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

 

 

 

 

 

 

Список использованных источников

 

1. Вендров  А.М. CASE-технологии: Современные методы  и средства проектирования информационных  систем. М: Финансы и статистика 1998;

2. Вендров  А.М. Проектирование программного  обеспечения экономических информационных  систем: Учебник для студентов  вузов - М.: Финансы и статистика, 2000;

3. Вендров  А.М. Практикум по проектированию  программного обеспечения экономических  информационных систем: Учебное  пособие для студентов вузов. -М: Финансы и статистика, 2002;

4. Базы данных. Учебник для вузов./Под ред. Хоменко А.Д., -М.:2000.

5. Карпова Т.С. Базы данных: Модели, разработка, реализация.- СПб: Питер,2001.

6. Дарахвелидзе, П.Г. Программирование в Delphi 7 / П.Г. Дарахвелидзе, Е.П. Марков. – Спб.: БХВ-Петербург, 2005 . – 784 с

 

 

 

 

 

 

 

 

 

 

 

Приложение А

Модель ИС по стандарту IDEF0 и методологии SADT

Рисунок Б.1 – Уровень A0- автоматизация учета ремонта в МЖРЭП

Рисунок Б.2 – Уровень A1

 

Рисунок Б.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_iconquestion)=idyes then

  begin

  application.Terminate;

  end

else canclose:=false;

end;

 

procedure TFpass.BitBtn1Click(Sender: TObject);

begin

closequery;

end;

 

procedure TFpass.SpeedButton1Click(Sender: TObject);

var inifile:tinifile;

dbp:string;

begin

dm.od.InitialDir:=ExtractFilePath(Application.ExeName);

if dm.od.Execute then

  begin

  e2.Text:=dm.od.FileName;

    try

    dm.ADO.Connected:=false;

    dm.ADO.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dm.od.FileName+';Persist Security Info=False';

    dm.ADO.Connected:=true;

    except

    showmessage('Произошла ошибка при подключении к базе');

    exit;

    end;

  IniFile      := TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.ini');           // загрузка из фала настроек пути к базе

  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].AsString);

    dm.TEMP.Next;

    end;

  end;

 

end;

 

procedure TFpass.FormShow(Sender: TObject);

var inifile:tinifile;

dbp:string;

begin

fpass.Caption:=application.Title;

 

IniFile      := TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.ini');           // загрузка из фала настроек пути к базе

DBP := IniFile.ReadString('Options', 'DBPath', ExtractFilePath(Application.ExeName)+'');

e2.Text:=dbp;

IniFile.Free;

if fileexists(dbp)=false then

  begin

  showmessage('База данных по указанному пути не была найдена!');

  exit;

  end;

try

dm.ADO.Connected:=false;

dm.ADO.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dbp+';Persist Security Info=False';

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].AsString);

  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.Text+', вошел в программу в: '+ timetostr(time);

      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.Text+', вошел в программу в: '+ timetostr(time);

      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.Text+', вошел в программу в: '+ timetostr(time);

      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].AsString);

  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(Sender: TObject; var CanClose: Boolean);

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:OleVariant;

  LinkToFile,SaveWithDocument,Range:OleVariant;

  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.Application');

  reg.Free;

  //flag:=true;

  if flag=false then

    begin

    application.MessageBox('Word не устанволен','Отчет',mb_ok+mb_iconstop);

    exit;

    end;

if tm=0 then

  begin

 

  WordApplication1.Visible:=false;

  WordApplication1.Connect; // Устанавливаем связь с сервером

  //Открываем шаблон otchet.dot в Word

  Template:=ExtractFilePath(Application.EXEName)+'\Dot\Ремонт.dot'; //путь к шаблону документа

  WordApplication1.Documents.Add(Template,EmptyParam,EmptyParam,EmptyParam);// создаем документ на основе шаблона

  WordDocument1.ConnectTo(WordApplication1.ActiveDocument); //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

  //Заполняем таблицу списка объектов

  Table1:=WordDocument1.Tables.Item(1); //связываем  имя Table1 с первой таблицей документа

  //WordDocument1.Tables - это массив таблиц  документа (тип Tables), а  WordDocument1.Tables.Item(i) - i-ая таблица

 

  Replace:=true; // параметр, задающий режим  замены

  FindText:='#1'; // что меняем

  ReplaceWith:='с '+datetostr(dtp1.Date)+' по '+datetostr(dtp2.Date); // на что меняем

  WordDocument1.Range.Find.Execute(FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

                EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,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].asfloat;

      inc(i);dm.temp.next;

      end;

  Replace:=true; // параметр, задающий режим  замены

  FindText:='#2'; // что меняем

  ReplaceWith:=floattostr(summa); // на что меняем

  WordDocument1.Range.Find.Execute(FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

                EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

  Table1.Rows.Item(i).Delete;

  WordApplication1.Visible:=true; //делаем приложение MS Word видимым

  WordApplication1.Disconnect; // Разрываем связь с серверо

  end

else if tm=1 then

  begin

  WordApplication1.Visible:=false;

  WordApplication1.Connect; // Устанавливаем связь с сервером

  //Открываем шаблон otchet.dot в Word

  Template:=ExtractFilePath(Application.EXEName)+'\Dot\Изменение.dot'; //путь к шаблону документа

  WordApplication1.Documents.Add(Template,EmptyParam,EmptyParam,EmptyParam);// создаем документ на основе шаблона

  WordDocument1.ConnectTo(WordApplication1.ActiveDocument); //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

  //Заполняем таблицу списка объектов

  Table1:=WordDocument1.Tables.Item(1); //связываем  имя Table1 с первой таблицей документа

  //WordDocument1.Tables - это массив таблиц  документа (тип Tables), а  WordDocument1.Tables.Item(i) - i-ая таблица

 

  Replace:=true; // параметр, задающий режим  замены

  FindText:='#1'; // что меняем

  ReplaceWith:='с '+datetostr(dtp1.Date)+' по '+datetostr(dtp2.Date); // на что меняем

  WordDocument1.Range.Find.Execute(FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

                EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

 

 

 

  dm.temp.Active:=false;

  dm.temp.CommandText:='Select nazv_rr,ocena_rc,cena_rc,data_rc from remr,rcen where (id_rr=id_rr_rc) and (data_rc BETWEEN #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#) ORDER BY data_rc';

  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.Execute(FindText,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

                EmptyParam,EmptyParam,ReplaceWith,Replace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

  Table1.Rows.Item(i).Delete;

  WordApplication1.Visible:=true; //делаем приложение MS Word видимым

  WordApplication1.Disconnect; // Разрываем связь с серверо

  end

else if tm=2 then

  begin

  WordApplication1.Visible:=false;

  WordApplication1.Connect; // Устанавливаем связь с сервером

  //Открываем шаблон otchet.dot в Word

  Template:=ExtractFilePath(Application.EXEName)+'\Dot\План.dot'; //путь к шаблону документа

  WordApplication1.Documents.Add(Template,EmptyParam,EmptyParam,EmptyParam);// создаем документ на основе шаблона

  WordDocument1.ConnectTo(WordApplication1.ActiveDocument); //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

Информация о работе CASE средство Designer/2000