- •1. Введение
- •2. Цель и задачи работы
- •3. Тематика
- •4. Содержание задания на курсовую работу
- •5. Содержание и структура курсовой работы
- •3. Введение
- •6. Оформление курсовой работы
- •7. Порядок выполнения курсовой работы
- •8. Защита курсовых работ
- •9. Список литературы
- •Тульский институт экономики и информатики
- •Курсовая работа
- •Тульский институт экономики и информатики
- •Тульский институт экономики и информатики
- •Темы для курсовой работы
- •Исходное описание курсовой работы Дисциплина «Проектирование систем электронного документооборота»
- •Выводимые результаты
- •Пример взаимодействия с ms Word
- •Пример взаимодействия с ms Excel
- •Текст запроса к программам в Приложениях 6 и 7 из компонента Query1
- •Текст запроса к программам в Приложениях 6 и 7 из компонента Query1
Исходное описание курсовой работы Дисциплина «Проектирование систем электронного документооборота»
1. Провести анализ заданной предметной области
2. Выбрать вид и спроектировать шаблоны типовых документов для информационного обмена
3. Спроектировать базу данных (табл. 1)
4. Разработать программу взаимодействия с приложениями MS Word и MS Excel
5. Сформировать результаты в MS Word и MS Excel (табл. 2)
6. Оформить пояснительную записку
Таблица 1
Дополнительная информация
Количество реляционных таблиц |
не менее 3 (трех) |
Количество полей в справочной таблице |
не менее 7 (семи) |
Количество числовых полей в справочной таблице |
не менее 1 (одного) |
Количество формируемых документов |
не менее 2 (двух) |
Вид диаграммы на листе-диаграмме |
любой |
Таблица 2
Выводимые результаты
MS Word |
MS Excel |
В одном документе MS Word страница 1, содержит справочную таблицу |
В одной книге MS Excel лист 1 содержит справочную таблицу |
В том же документе MS Word страница 2, содержит сформированный типовой документ 1 |
В той же книге MS Excel лист 2 содержит сформированный типовой документ 1 |
В том же документе MS Word страница 3, содержит сформированный типовой документ 2 |
В той же книге MS Excel лист 3 содержит сформированный типовой документ 2 |
В той же книге MS Excel лист 4 содержит диаграмму 1, созданную по содержимому лист 1 |
ПРИЛОЖЕНИЕ 6
Пример взаимодействия с ms Word
// ======================= Пример использования технологии OLE-Automation в MS Word ========================
// ================== Работа с документами MSOffice через компоненты закладки "Servers" ====================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, ComObj, FileCtrl, ExtCtrls, WordXP,
PowerPointXP, OutlookXP, ExcelXP, Grids, DBGrids, DB, DBTables;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
WordApplication1: TWordApplication;
Button3: TButton;
WordDocument1: TWordDocument;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Query1: TQuery;
GroupBox2: TGroupBox;
Label4: TLabel;
Label5: TLabel;
StaticText2: TStaticText;
StaticText3: TStaticText;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// Razd,Word,doc,doc1,doc2,Doc_Pres,Doc_Pres1: OleVariant;
Lcid,ColColumns,ColRows,i,j,NomClient:integer;
End1,Start1,doc1,Razd:OleVariant;
StrKomb:string;
Range1:Range;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Active:=true;//обращаемся к базе данных
end;
//Закрыть --------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
if WordApplication1 <> nil then
begin
WordApplication1.Disconnect;
WordApplication1.Quit; //Закрыть приложение MS Word, если оно есть
end;
Form1.Close;
end;
//----------------------------------------------------------
//Работа с документами MSOffice через компоненты закладки "Servers"
//Загрузка существующего файла Word
procedure TForm1.Button3Click(Sender: TObject);
begin
WordApplication1.Connect;
//Загрузка существующего файла Word --------------------------
doc1:='G:\ДЛЯ СТУДЕНТОВ ТИЭИ\ПРОЕКТИРОВАНИЕ СИСТЕМ ЭЛЕКТРОННОГО ДОКУМЕНТООБОРОТА\ПРИЛ\2\pr1.doc'; //открыть существующий документ 2
WordApplication1.Documents.Open(doc1,EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);//Соединяемся с активным документом
//-------------------------------------------------------------
//Настроим исходные параметры документа - форматирование !!! ----------------------------
WordDocument1.PageSetup.Orientation:=0; //ориентация страницы - портретная (книжная) 1- альбомная
WordDocument1.PageSetup.PaperSize:=7; //формат А4
//Поля (2,54 см - 72 точки)
WordDocument1.PageSetup.LeftMargin:=25; //левое
WordDocument1.PageSetup.RightMargin:=70; //правое
WordDocument1.PageSetup.TopMargin:=70; //верхнее
WordDocument1.PageSetup.BottomMargin:=70;//нижнее
WordDocument1.PageSetup.TextColumns.SetCount(1); //кол-во колонок в тексте - 1
//WordDocument1.PageSetup.TextColumns.LineBetween:=0; //разделение колонок линией - деления на колонки нет
//Колонтитулы
//Верхний
WordDocument1.Sections.First.Headers.Item(1).range.insertafter('Колонтитул верхний. Это пример технологии OLE - automation в MS Word');
//Нижний
WordDocument1.Sections.Last.Footers.Item(1).range.insertafter('Колонтитул нижний. Это пример технологии OLE - automation в MS Word');
//-------------------------------------------------------------------------
//Вставка текста - создание типового документа -----------------------------------------
//Вставка 3 пустых абзацев, курсор в позиции последнего -----
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
//-----------------------------------------------------------
//Пример применения диапазона "Range" для выравнивания двух абзацев из четырех ранее введенных --------------
Start1:=WordDocument1.Paragraphs.Item(1).Range.start; //начальный абзац
End1:=WordDocument1.Paragraphs.Item(2).Range.end_; //конечный абзац
WordDocument1.Range(Start1,End1).Paragraphs.Alignment:=2; //выравнивание вправо
//-----------------------------------------------------------------------------------------------------------
WordDocument1.Paragraphs.Add(EmptyParam); //добавить абзац, курсор в его позиции
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо
WordDocument1.Range.InsertAfter('Для представления'); //вводим текст
WordDocument1.Paragraphs.Add(EmptyParam); //добавить абзац, курсор в его позиции
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо
WordDocument1.Range.InsertAfter('по месту требования'); //вводим текст
//Вставка 3 пустых абзацев, курсор в позиции последнего------
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
//------------------------------------------------------------
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).Alignment:=1; //выравнивание по центру
WordDocument1.Range.InsertAfter('СПРАВКА'); //вводим текст
//Вставка 4 пустых абзацев, курсор в позиции последнего -----
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
//------------------------------------------------------------
//Вводим текст после слова "СПРАВКА" ---------------------------------------------------------------
Query1.Active:=true;//обращаемся к базе данных
Query1.First; //БД - на первую запись
Query1.MoveBy(NomClient-1); //формируем документ для выбранной записи
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).Alignment:=3; //выравнивание по ширине
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).LineSpacingRule:=2; //межстрочный интервал - двойной
StrKomb:= 'Гражданин ' + Query1.FieldByName('FIO').Asstring + ' '+ Query1.FieldByName('GODR').Asstring +
' года рождения работает в '+ Query1.FieldByName('FIRMA').Asstring+ ' , подразделение';
WordDocument1.Range.InsertAfter(StrKomb); //вводим текст
WordDocument1.Paragraphs.Add(EmptyParam); //добавить абзац, курсор в его позиции
StrKomb:= '" '+ Query1.FieldByName('PODR').Asstring + ' ", в должности " ' + Query1.FieldByName('DOLGN').Asstring + ' ", c '+
Query1.FieldByName('DATEN').Asstring+' по настоящее время.';
WordDocument1.Range.InsertAfter(StrKomb); //вводим текст
//Вставка 4 пустых абзацев, курсор в позиции последнего -----
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
//------------------------------------------------------------
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).LineSpacingRule:=0; //межстрочный интервал - снова одинарный
StrKomb:= 'Нач. отдела кадров ________________ '+Query1.FieldByName('BOSSOK').Asstring;
WordDocument1.Range.InsertAfter(StrKomb); //вводим текст
//--------------------------------------------------------------------------------------------------
//Вставка 4 пустых абзацев, курсор в позиции последнего -----
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
WordDocument1.Paragraphs.Add(EmptyParam);
//-----------------------------------------------------------
//Раздел с новой страницы - введение разрыва раздела
Razd:=wdSectionNewPage;
Range1:=WordDocument1.Paragraphs.Last.Range;
WordDocument1.Sections.Add(EmptyParam,Razd); // текущая секция документа отделена разрывом
//-------------------------------------------------------------------------
Query1.Active:=true;//обращаемся к базе данных
Query1.First; //БД - на первую запись
ColRows:=Query1.RecordCount+1;//задаем кол-во строк будущей таблицы Word по таблице БД
ColColumns:=Query1.FieldCount; //задаем кол-во столбцов будущей таблицы Word по таблице БД
//Вставляем таблицу ----------------------------------------------------------------------------------------
Range1:=WordDocument1.Paragraphs.Last.Range;//задаем местоположение в документе - после последнего параграфа
WordDocument1.Paragraphs.Item(WordDocument1.Paragraphs.Count).Alignment:=1; //выравнивание по центру
WordDocument1.Tables.Add(Range1,ColRows,ColColumns,EmptyParam, EmptyParam);//задаем размеры таблицы
WordDocument1.Tables.Item(1).allowAutoFit:=true;//разрешение автонастройки таблицы
WordDocument1.Tables.Item(1).AutoFitBehavior(2); //автоподбор размера по ширине окна (1-по содержимому)
//-----------------------------------------------------------------------------------------------------------
//Рисуем границы таблицы по ячейкам и заполняем их из БД ----------------------------------------
for i:=1 to ColRows do //строки
begin
for j:=1 to ColColumns do //столбцы
begin
WordDocument1.Tables.Item(1).cell(i,j).Range.Font.Color:=clBlue; //форматируем цвет шрифта
WordDocument1.Tables.Item(1).cell(i,j).Borders.Enable:=1; //рисуем границы ячейки таблицы
if i < ColRows then WordDocument1.Tables.Item(1).cell(i+1,j).Range.InsertAfter(Query1.Fields[j-1].AsString); //Вводи данные из БД
end;
Query1.Next; //следующая запись БД
end;
//---------------------------------------------------------------------------------------
//Заполняем строку заголовков -----------------------------------------------------
for j:=1 to ColColumns do
begin
with WordDocument1.Tables.Item(1).cell(1,j).Range.Font do //Форматируем шрифт для названий колонок таблицы
begin
Size:=10;
Name:='ArialCyr';
Color:=clRed;
Bold:=1;
Italic:=1;
end;
WordDocument1.Tables.Item(1).cell(1,j).Range.InsertAfter(Query1.Fields[j-1].DisplayName); //Вводим названия полей БД
//WordDocument1.Tables.Item(1).cell(1,j).Range.AutoFormat;
end;
//---------------------------------------------------------------------------------------
WordApplication1.Documents.Item(doc1).Activate;//активирум документ Word
WordApplication1.Visible:=true; //Показываем все на экране
end;
//Закрытие приложения -------------------------------------------
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if WordApplication1 <> nil then
begin
WordApplication1.Disconnect;
WordApplication1.Quit;//Закрыть приложение MS Word, если оно есть
end;
end;
//-------------------------------------------------------------------
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
StaticText2.Caption:= Query1.fieldbyname('FIO').AsString;
StaticText3.Caption:= Query1.fieldbyname('NOM').AsString;
NomClient:=Query1.RecNo;
end;
end.
ПРИЛОЖЕНИЕ 7