Диплом: Автоматизация документооборота в ООО «Solo-it»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Агапов В. Профессиональная разработка программного обеспечения. – М.:
«Символ-Плюс», 2013. – 240 с.
2. Бритов Г. Моделирование бизнес-процессов. – «LAP Lambert Academic
Publishing», 2014. – 124 с.
3. Голицына, О. Л. Программное обеспечение / О.Л. Голицына, И.И. Попов,
Т.Л. Партыка. – М.: Форум, 2013. – 448 c.
4. Исаев Г. Проектирование информационных систем. – М.: «Омега-Л», 2012.
– 432 с.
5. Козленко Л. Проектирование информационных систем. – М.:
«КомпьютерПресс»,2013. – 89 с.
6. Лукин, В. В. Технология разработки программного обеспечения. Учебное
пособие / В.В. Лукин, В.Н. Лукин, Т.В. Лукин. – Москва: Гостехиздат, 2015.
286 c.
7. Мандел Т. Дизайн интерфейсов, ДМК, 2015 – 410 с.
8. Маклаков. С.В. BPwin и ERwin. CASE – средства разработки
информационных систем. – М: «ДИАЛОГ- МИФИ», 2013 – 157 с.
9. Род С. Алгоритмы. Теория и практическое применение. – М.: «Эксмо»,
2017. – 544 с.
10. Советов Б.Я. Архитектура информационных систем: учебник для студ.
учреждений высш. проф. образования. – М.: «Академия», 2012. – 288 с.
11. Тарасов С. СУБД для программиста. Базы данных изнутри. – Омск:
«Соломон», 2015. – 320 с.
12. Компания Solo-IT [Электронный ресурс]. – Режим доступа: https://solo-it.ru/
(дата обращения 29.05.2020)
13. СЭД 1С:Документооборот [Электронный ресурс]. – Режим доступа:
http://www.docflow.ru/market/products/detail.php?ID=26114 (дата обращения
29.05.2020)
14. СЭД Docvision [Электронный ресурс]. – Режим доступа:
https://www.docsvision.com/ (дата обращения 29.05.2020)
15. СЭД DirectumRX [Электронный ресурс]. – Режим доступа:
https://www.directum.ru/?page=326 (дата обращения 29.05.2020)
ПРИЛОЖЕНИЕ А – SQL-КОД СОЗДАНИЯ БАЗЫ ДАННЫХ
CREATE TABLE coordination
(
id_coord integer NOT NULL ,
id_route integer NULL ,
id_worker integer NULL ,
coord_num varchar(255) NULL
)
go
ALTER TABLE coordination
ADD CONSTRAINT XPKcoordination PRIMARY KEY CLUSTERED (id_coord ASC)
go
CREATE TABLE departments
(
id_department integer NOT NULL ,
department varchar(255) NULL
)
go
ALTER TABLE departments
ADD CONSTRAINT XPKdepartments PRIMARY KEY CLUSTERED (id_department ASC)
go
CREATE TABLE documents
(
id_document integer NOT NULL ,
dt_create datetime NULL ,
dt_end datetime NULL ,
dt_claim datetime NULL ,
information varchar(255) NULL ,
id_route integer NULL ,
coord_num varchar(255) NULL ,
num_status integer NULL ,
id_worker integer NULL
)
go
ALTER TABLE documents
ADD CONSTRAINT XPKdocuments PRIMARY KEY CLUSTERED (id_document ASC)
go
CREATE TABLE events
(
id_ev integer NOT NULL ,
dt_event datetime NULL ,
id_document integer NULL ,
coord_num integer NULL ,
type integer NULL ,
code integer NULL ,
code_ev integer NULL ,
id_route integer NULL ,
id_worker integer NULL
)
go
ALTER TABLE events
ADD CONSTRAINT XPKevents PRIMARY KEY CLUSTERED (id_ev ASC)
go
CREATE TABLE files
(
id_file integer NOT NULL ,
date_time datetime NULL ,
newname varchar(255) NULL ,
oldaname varchar(255) NULL ,
extension varchar(20) NULL ,
id_document integer NULL
)
go
ALTER TABLE files
ADD CONSTRAINT XPKfiles PRIMARY KEY CLUSTERED (id_file ASC)
go
CREATE TABLE information
(
id_info integer NOT NULL ,
date_time datetime NULL ,
information varchar(255) NULL ,
id_document integer NULL
)
go
ALTER TABLE information
ADD CONSTRAINT XPKinformation PRIMARY KEY CLUSTERED (id_info ASC)
go
CREATE TABLE route_workers
(
id_route_worker integer NOT NULL ,
id_route integer NULL ,
id_worker integer NULL
)
go
ALTER TABLE route_workers
ADD CONSTRAINT XPKroute_workers PRIMARY KEY CLUSTERED (id_route_worker
ASC)
go
CREATE TABLE routes
(
id_route integer NOT NULL ,
id_worker integer NULL ,
route varchar(255) NULL ,
organization varchar(255) NULL ,
logo varchar(255) NULL ,
type integer NULL ,
description varchar(255) NULL
)
go
ALTER TABLE routes
ADD CONSTRAINT XPKroutes PRIMARY KEY CLUSTERED (id_route ASC)
go
CREATE TABLE workers
(
id_worker integer NOT NULL ,
email varchar(255) NULL ,
password varchar(255) NULL ,
fio varchar(255) NULL ,
position varchar(255) NULL ,
fotography varchar(255) NULL ,
id_department integer NULL
)
go
ALTER TABLE workers
ADD CONSTRAINT XPKworkers PRIMARY KEY CLUSTERED (id_worker ASC)
go
ALTER TABLE coordination
ADD CONSTRAINT R_4 FOREIGN KEY (id_route) REFERENCES routes(id_route)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE coordination
ADD CONSTRAINT R_5 FOREIGN KEY (id_worker) REFERENCES workers(id_worker)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE documents
ADD CONSTRAINT R_7 FOREIGN KEY (id_route) REFERENCES routes(id_route)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE documents
ADD CONSTRAINT R_21 FOREIGN KEY (id_worker) REFERENCES workers(id_worker)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE events
ADD CONSTRAINT R_13 FOREIGN KEY (id_document) REFERENCES
documents(id_document)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE events
ADD CONSTRAINT R_19 FOREIGN KEY (id_route) REFERENCES routes(id_route)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE events
ADD CONSTRAINT R_20 FOREIGN KEY (id_worker) REFERENCES workers(id_worker)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE files
ADD CONSTRAINT R_15 FOREIGN KEY (id_document) REFERENCES
documents(id_document)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE information
ADD CONSTRAINT R_17 FOREIGN KEY (id_document) REFERENCES
documents(id_document)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE route_workers
ADD CONSTRAINT R_9 FOREIGN KEY (id_worker) REFERENCES workers(id_worker)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE route_workers
ADD CONSTRAINT R_10 FOREIGN KEY (id_route) REFERENCES routes(id_route)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE routes
ADD CONSTRAINT R_8 FOREIGN KEY (id_worker) REFERENCES workers(id_worker)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ALTER TABLE workers
ADD CONSTRAINT R_3 FOREIGN KEY (id_department) REFERENCES
departments(id_department)
ON DELETE SET NULL
ON UPDATE SET NULL
go
ПРИЛОЖЕНИЕ Б − ЛИСТИНГИ ПРОГРАММНЫХ МОДУЛЕЙ
Модуль отображения документов
#include "StdAfx.h"
#include "showDoc.h"
#include <ctime>
#include <msclr\marshal_cppstd.h>
#include <process.h>
namespace dms
{
bool showDoc::UploadFile(String ^_FileName, String ^_UploadPath, String ^_FTPUser,
String ^_FTPPass)
{
WebClient^ request = gcnew WebClient;
request->Credentials = gcnew NetworkCredential(_FTPUser, _FTPPass);
try
{
request->UploadFile(_UploadPath, _FileName);
return true;
}
catch (/*WebException^ e*/...)
{
//MessageBox::Show(e->Message, "Ошибкапризагрузкефайла
\""+_FileName+"\" на FTP сервер", MessageBoxButtons::OK, MessageBoxIcon::Error);
return false;
}
return true;
}
bool showDoc::DownloadFile(String ^_FileName, String ^_DownloadPath, String
^_FTPUser, String ^_FTPPass)
{
WebClient^ request = gcnew WebClient;
request->Credentials = gcnew NetworkCredential(_FTPUser, _FTPPass);
try
{
request->DownloadFile(_DownloadPath, _FileName);
return true;
}
catch (/*WebException^ e*/...)
{
//MessageBox::Show(e->Message, "Ошибкапризагрузкефайла
\""+_FileName+"\" с FTP сервера", MessageBoxButtons::OK, MessageBoxIcon::Error);
return false;
}
return true;
}
void showDoc::openFiles()
{
if(ofd1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
fileList.Clear();
listView2->Items->Clear();
for each (String^ file in ofd1->FileNames)
{
ListViewItem^ item = gcnew ListViewItem("");
ListViewItem::ListViewSubItem^ subitem = gcnew
ListViewItem::ListViewSubItem();
subitem->Text = file;
item->SubItems->Add(subitem);
listView2->Items->Add(item);
fileList.Add(file);
}
}
}
unsigned long showDoc::mix(unsigned long a, unsigned long b, unsigned long c)
{
a=a-b; a=a-c; a=a^(c >> 13);
b=b-c; b=b-a; b=b^(a << 8);
c=c-a; c=c-b; c=c^(b >> 13);
a=a-b; a=a-c; a=a^(c >> 12);
b=b-c; b=b-a; b=b^(a << 16);
c=c-a; c=c-b; c=c^(b >> 5);
a=a-b; a=a-c; a=a^(c >> 3);
b=b-c; b=b-a; b=b^(a << 10);
c=c-a; c=c-b; c=c^(b >> 15);
return c;
}
String^ showDoc::RandomString(int len)
{
unsigned long seed = (unsigned long)mix(clock(), time(NULL), _getpid());
srand(seed);
string str =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int pos;
while(str.size() != len) {
pos = ((rand() % (str.size() – 1)));
str.erase (pos, 1);
}
String ^ret = msclr::interop::marshal_as<System::String^>(str);
return ret;
}
void showDoc::uploadFiles()
{
String ^allpath, ^filename, ^filepath, ^ext, ^sql, ^name_fi, ^oldname_fi;
String ^_FileName, ^_UploadPath, ^_FTPUser, ^_FTPPass;
list_of_list sqlresult = gcnew list_of_list();
bool res;
filesUploaded.Clear();
// Формируемименафайлов
for(int i=0; i<listView2->Items->Count; i++)
{
allpath = fileList[i];
filename = Path::GetFileName(allpath);
ext = Path::GetExtension(filename);
oldname_fi = Path::GetFileNameWithoutExtension(filename);
filepath = Path::GetDirectoryName(allpath);
name_fi="";
while(true)
{
// Генерируем новое имя файла
name_fi = RandomString(32);
// Проверяем, не занято ли имя
sql = "select count(id_fi) from files where name_fi like
'"+name_fi+ext+"' and ext_fi like '"+ext+"'";
res = mF->sqlSelect(sql, %sqlresult);
if(!res)
{
MessageBox::Show("Ошибка\r\nНе могу прочитать данные
о файле");
continue;
}
if(Convert::ToInt32(sqlresult[0][0]) == 0) // Новоеимя
break;
}
List<String^>^ row = gcnew List<String^>();
row->Add(allpath);
row->Add(name_fi);
row->Add(ext);
row->Add(oldname_fi);
filesUploaded.Add(row);
}
// Загружаемфайлына FTP сервер
bool uploaded;
bool wasError = false;
String ^ftp = "ftp://"+mF->FTP_ip+"/";
_FTPUser = mF->FTP_user;
_FTPPass = mF->FTP_psswd;
for(int i=0; i<filesUploaded.Count; i++)
{
_FileName = filesUploaded[i][0];
_UploadPath = ftp + filesUploaded[i][1] + filesUploaded[i][2];
uploaded = UploadFile(_FileName, _UploadPath, _FTPUser, _FTPPass);
if(uploaded)
{
bckw1->ReportProgress(i+1);
}
else
{
wasError = true;
bckw1->ReportProgress(-(i+1));
}
}
}
bool showDoc::getEvents()
{
String ^sql, ^id_ro, ^id_do, ^ev_name, ^text_file;
bool res;
list_of_list sqlresult = gcnew list_of_list();
list_of_list sqlresult1 = gcnew list_of_list();
int old_num_co, new_num_co;
int type_ev_int, code_ev_int;
ListViewGroup ^curr_group;
int stepCnt;
id_ro = currList[currDocInd][4];
id_do = currList[currDocInd][0];
sql = "select p1.id_ev, p1.date_ev, p1.id, p1.id_ro, p1.id_wo, p1.num_co,
p1.type_ev, p1.code_ev, p2.email_wo, p2.fio_wo, p2.position_wo, p3.name_de from events as p1
inner join workers as p2 on p1.id_wo=p2.id_wo inner join departments as p3 on p2.id_de=p3.id_de
where p1.id_ro="+id_ro+" and p1.id_do="+id_do+" order by p1.num_co, p1.date_ev asc";
res = mF->sqlSelect(sql, %sqlresult);
if(!res)
{
MessageBox::Show("Ошибка 12\r\nНе могу прочитать события для
данного документа");
return false;
}
else if(sqlresult.Count > 0)
{
old_num_co = Convert::ToInt32(sqlresult[0][5]);
stepCnt = 1;
for(int i=0; i<sqlresult.Count; i++)
{
new_num_co = Convert::ToInt32(sqlresult[i][5]);
// Дата/Время
ListViewItem^ item = gcnew ListViewItem(sqlresult[i][1]);
// Инициатор
ListViewItem::ListViewSubItem^ subitem = gcnew
ListViewItem::ListViewSubItem();
subitem->Text = sqlresult[i][9] + " (" + sqlresult[i][8]+ "): " +
sqlresult[i][11] + " – " + sqlresult[i][10];
item->SubItems->Add(subitem);
// Типсообщения
ListViewItem::ListViewSubItem^ subitem1 = gcnew
ListViewItem::ListViewSubItem();
type_ev_int = Convert::ToInt32(sqlresult[i][6]);
code_ev_int = Convert::ToInt32(sqlresult[i][7]);
switch(type_ev_int)
{
case 1:
switch(code_ev_int)
{
case 1:
ev_name = "Документсоздан";
break;

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")