
- •Дипломная работа
- •Аннотация
- •Введение
- •1 Анализ задачи обработки данных
- •Документированная процедура управления ресурсами
- •2 Проектирование структуры базы данных
- •2.1 Структура базы данных
- •3 Проектирование архитектуры проекта
- •3.1 Документ «Архитектура проекта»
- •3.2 Диаграмма состояний
- •4 Управление процессом разработки программного обеспечения
- •7.1 Организация ремонтного производства
- •7.1 Общая постановка к технико-экономическому обоснованию
- •7.3 Расчет единовременных затрат
- •7.4 Расчет годовых текущих издержек
- •7.5 Расчет показателей экономической эффективности
- •7.6 Выводы и рекомендации
- •8 Охрана труда
- •8.1 Идентификация и анализ аредных и опасных факторов в проектируемом объ екте
- •8.2 Технические, технологические, организационные решения по устранению опасных и вредных факторов, разработка защитных средств
- •8.3 Разработка мер безопасности при эксплуатации объекта проектирования
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •9 Энерго- и ресурсосбережение
- •Заключение по проекту
- •Список использованных источников
- •Приложение а
- •Приложение б
- •Приложение в
Министерство образования Республики Беларусь
Министерство образования и науки Российской Федерации
Государственное учреждение высшего профессионального образования
«БЕЛОРУССКО-РОССИЙСКИЙ УНИВЕРСИТЕТ»
Кафедра «Автоматизированные системы управления»
ДОПУЩЕНА К ЗАЩИТЕ
Зав. кафедрой «АСУ»
Крутолевич С.К.
«___»_____________ 2014 г
Дипломная работа
Разработка АСОИ бизнес-процесса управления
(тема дипломной работы)
врачебной функции в филиале «Поликлиника №7 г.Могилева»
Пояснительная записка
(вид документа)
-
Студент
(Мальченко Д. Г.)
Руководитель
( Прудников В. М.)
Консультант по охране труда
( Жаравович Е. В.)
Консультант по экономической части проекта
( Пушкина Л. И. )
Консультант по конструкторской части
( Прудников В. М.)
Консультант по энерго- и ресурсосбережению
( Автушенко Н. А.)
Нормоконтроль
( Захарченков К. В. )
Могилев 2014
Аннотация
на дипломный проект
АСОИ бизнес-процесса управления врачебной функции в филиале «Поликлиника №7 г.Могилева»
Структура и объем проекта
Пояснительная записка содержит 74 листа печатного текста, 14 иллюстраций, 22 таблицы. Графическая часть выполнена на 7 листах формата А1, А2. Пояснительная записка состоит из введения, аннотации, 9 глав, заключения и списка использованных источников, включающий 11 наименований.
Содержание проекта
В первой главе проведен анализ задачи обработки данных.
Во второй главе описывается проектирование структуры базы данных.
В третьей главе описывается проектирование архитектуры проекта.
В четвертой главе описывается управление процессом разработки программного обеспечения.
В пятой главе описывается разработка программных компонентов.
В шестой главе описывается развёртывание программного обеспечения.
В седьмой главе рассмотрены вопросы организационно-экономической части.
В восьмой главе рассмотрены вопросы охраны труда.
В девятой главе рассмотрены вопросы энергосбережения.
Введение
Дипломный проект на тему «АСОИ бизнес-процесса управления врачебной функции в филиале «Поликлиника №7 г.Могилева»» выполнен с целью автоматизации формирования отчетов и документов, что позволяет уменьшить время обработки информации и ускорить ее поиск. Формирование отчетов и документов в системе более эффективно, чем их выполнение вручную, что позволяет более рационально использовать рабочее время.
В ходе выполнения дипломного проекта разработаны:
документ «Расчет врачебной функции»;
документ «Учет количества посещений»;
отчет о коэффициентах перевода;
отчет о должностях;
отчет о врачах.
При создании программного продукта использовался язык С# с применением технологий Windows Presentation Fundation и Language Integrated Query.
Содержание
Аннотация 3
Введение 4
1 Анализ задачи обработки данных 24
1.1 Документированная процедура управления ресурсами 25
2 Проектирование структуры базы данных 29
2.1 Структура базы данных 29
3 Проектирование архитектуры проекта 34
3.1 Документ «Архитектура проекта» 34
3.2 Диаграмма состояний 36
4 Управление процессом разработки программного обеспечения 37
4.1 План разработки программного обеспечения 37
5 Разработка программных компонентов 40
5.1 Документ «Отчёт о работе по проекту АСОИ бизнес-процесса управления врачебной функции в филиале «Поликлиника №7 г.Могилева»». 41
Дата 41
Компонент 41
Вид 41
Время разработки, ч 41
1 41
2 41
3 41
4 41
public WdoctorsEdit(polic7Entities p7, spr_doctors upd, Wdoctors wdoctors){ 41
InitializeComponent(); 41
this.p7 = p7; 41
this.upd = upd; 41
this.wdoctors = wdoctors; 41
label1.Content = "Код: " + upd.id_doctor.ToString(); 41
tb.Text = upd.fio; 41
} 41
private void Button_Click_1(object sender, RoutedEventArgs e) 41
{ 41
5 41
Продолжение таблицы 14 41
1 41
2 41
3 41
4 41
upd.fio = tb.Text; 41
p7.SaveChanges(); 42
wdoctors.updateDataGrid(); 42
MessageBox.Show("Данные обновлены успешно", "Успех"); 42
this.Close(); 42
} 42
public WaddNewTable() 42
{ 42
InitializeComponent(); 42
cb1.ItemsSource = SettingsApp.month; 42
cb1.SelectedIndex = 0; 42
} 42
private void Button_Click_1(object sender, RoutedEventArgs e) 42
{ 42
this.Close(); 42
} 42
private void Button_Click_2(object sender, RoutedEventArgs e) 42
{ 42
string id = tb1.Text.Substring(2) + (cb1.SelectedIndex+10).ToString(); 42
WTable wt = new WTable(id); 42
wt.Show(); } 42
16 42
Продолжение таблицы 14 42
1 42
2 42
3 42
4 42
public Wfunction(string id) 42
{ 42
InitializeComponent(); 43
this.id = Convert.ToInt32(id); 43
this.ids = id.Substring(0, 2); 43
this.m = SettingsApp.month[Convert.ToInt32(id.Substring(2)) - 10]; 43
updateDataGrid(); 43
//wnd.Height = 455; 43
} 43
public void updateDataGrid() 43
{ 43
p7 = new polic7Entities(); 43
//datagrid 43
IEnumerable<spr_positions_doctors> spd = from s in p7.spr_positions_doctors 43
where s.id_date == this.id 43
select s; 43
ObservableCollection<spr_positions_doctors> obs = new ObservableCollection<spr_positions_doctors>(spd); 43
43
dg_func.ItemsSource = obs; 43
43
} 43
private void 43
11 42
Продолжение таблицы 14 43
1 43
2 43
3 43
4 43
dg_func_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 43
{ 44
} 44
private void dg_func_SelectionChanged(object sender, SelectionChangedEventArgs e) 44
{ 44
wnd.Height = 585; 44
var dg = (DataGrid)sender; 44
int pos = 0; 44
if (dg.SelectedIndex >= 0) 44
{ 44
IEnumerable<spr_positions_doctors> spd = from s in p7.spr_positions_doctors 44
where s.id_date == this.id 44
select s; 44
spr_positions_doctors doctor = spd.ElementAt<spr_positions_doctors>(dg.SelectedIndex); 44
pos = doctor.id_position; 44
spr_set sets = (from s in p7.spr_set 44
where s.id_position == pos 44
select s).First(); 44
tf1.Text = sets.speopl.Replace('.', ','); 44
tf2.Text = sets.shour.Replace('.', ','); 44
Продолжение таблицы 14 44
1 44
2 44
3 44
4 44
tf3.Text = doctor.days.ToString().Replace('.', ','); 44
double f = ((double)(ds(tf1.Text) * ds(tf2.Text) * ds(tf3.Text))); 45
tf4.Text = f.ToString().Replace('.', ','); 45
tpk1.Text = sets.Np.Replace('.', ','); 45
tpk2.Text = sets.No.Replace('.', ','); 45
tpk3.Text = sets.Nd.Replace('.', ','); 45
tpk4.Text = sets.Nop.Replace('.', ','); 45
tp1.Text = doctor.perv.ToString().Replace('.', ','); 45
tp2.Text = doctor.povtor.ToString().Replace('.', ','); 45
tp3.Text = doctor.profosm.ToString().Replace('.', ','); 45
tp4.Text = doctor.dom.ToString().Replace('.', ','); 45
tp5.Text = doctor.operac.ToString().Replace('.', ','); 45
double p = (double)(doctor.perv + doctor.povtor * ds(tpk1.Text) + doctor.profosm * ds(tpk2.Text) + doctor.dom * ds(tpk3.Text) + doctor.operac * ds(tpk4.Text)); 45
tp6.Text = p.ToString().Replace('.', ','); 45
45
double d = p / f; 45
Продолжение таблицы 14 45
1 45
2 45
3 45
4 45
string sd = String.Format("Д = {0,-10} / {1,-10} = {2,-10:F}",p,f,d); 45
l3.Content = sd; 45
doctor.function = p.ToString("F"); 46
p7.SaveChanges(); 46
updateDataGrid(); 46
} 46
} 46
double ds(string s) 46
{ 46
46
s = s.Replace(',', '.'); 46
return Convert.ToDouble(s); 46
} 46
private void Button_Click_1(object sender, RoutedEventArgs e) 46
{ 46
} 46
private void Button_Click_2(object sender, RoutedEventArgs e) 46
{ 46
ToExcel te = new ToExcel(this.ids, this.m); 46
Продолжение таблицы 14 46
1 46
2 46
3 46
4 46
int k =0; 46
IEnumerable<spr_positions> _pos = from s in p7.spr_positions 46
select s; 46
foreach (spr_positions sp in _pos) 47
{ 47
if (isHaveEl(sp)) 47
{ 47
te.entityToExcel(k += 7, getSets(sp.id_position), getSumPositions(sp.id_position), "ИТОГО ПО: " + sp.position); 47
IEnumerable<spr_positions_doctors> _spd = getSPD(sp.id_position); 47
foreach (spr_positions_doctors spd in _spd) 47
te.entityToExcel(k+=5, getSets(sp.id_position), spd, spd.spr_doctors.fio); 47
} 47
} 47
} 47
//проверка есть ли элементы в списке 47
private bool isHaveEl(spr_positions s) 47
{ 47
int count = (from x in p7.spr_positions_doctors 47
where x.id_position == s.id_position && x.id_date == this.id 47
select x).Count<spr_positions_doctors>(); 47
if (count > 0) return true; else return false; 47
} 47
Продолжение таблицы 14 47
1 47
2 47
3 47
4 47
//функция для подсчета итогов по должностям 47
private spr_positions_doctors getSumPositions(int pos) 47
{ 48
spr_positions_doctors result = new spr_positions_doctors(); 48
result.function ="0"; 48
result.perv = 0; 48
result.povtor = 0; 48
result.operac = 0; 48
result.profosm = 0; 48
result.days = 0; 48
result.dom = 0; 48
IEnumerable<spr_positions_doctors> _spd = from x in p7.spr_positions_doctors 48
where x.id_position == pos && x.id_date == this.id 48
select x; 48
foreach (spr_positions_doctors s in _spd) 48
{ 48
result.function = (Convert.ToDouble(result.function) + Convert.ToDouble(s.function)).ToString(); 48
result.perv += s.perv; 48
result.povtor += s.povtor; 48
result.operac += s.operac; 48
result.profosm += s.profosm; 48
result.days =s.days; 48
Продолжение таблицы 14 48
1 48
2 48
3 48
4 48
result.dom +=s.dom; 48
} 48
return result; 48
49
} 49
//функция получения набора коэффициентов 49
private spr_set getSets(int pos) 49
{ 49
spr_set s = (from ss in p7.spr_set 49
where ss.id_position == pos 49
select ss).First(); 49
return s; 49
} 49
//функция получения докторов по ид должности 49
private IEnumerable<spr_positions_doctors> getSPD(int pos) 49
{ 49
IEnumerable<spr_positions_doctors> spd = from s in p7.spr_positions_doctors 49
where s.id_date == this.id && s.id_position == pos 49
select s; 49
return spd; 49
} 49
private void dgset_MouseDoubleClick(object sender, MouseButtonEventArgs e) 49
{ 49
8 49
Продолжение таблицы 14 49
1 49
2 49
3 49
4 49
var dg = (DataGrid)sender; 49
spr_set sets = null; 49
// MessageBox.Show(dg.SelectedIndex.ToString()); 49
if (dg.SelectedIndex >= 0 && dg.SelectedIndex < dg.Items.Count) 50
{ 50
IEnumerable<spr_set> spd = from s in p7.spr_set select s; 50
spr_set sid = spd.ElementAt(dg.SelectedIndex); 50
sets = (from s in p7.spr_set 50
where s.id_position == sid.id_position 50
select s).Single(); 50
WsetEdit wte = new WsetEdit(sets, this); 50
wte.Show(); 50
} 50
} 50
public WsetEdit(spr_set sets, Wset wset) 50
{ 50
InitializeComponent(); 50
this.sets = sets; 50
this.wset = wset; 50
text1.Content = sets.spr_positions.position; 50
t1.Text = sets.speopl; 50
t2.Text = sets.shour; 50
t3.Text = sets.Np; 50
t4.Text = sets.No; 50
10 50
Продолжение таблицы 14 50
1 50
2 50
3 50
4 50
t5.Text = sets.Nd; 50
t6.Text = sets.Nop; 50
p7 = new polic7Entities(); 50
} 50
private void Button_Click_1(object sender, RoutedEventArgs e) 51
{ 51
spr_set setsN = (from s in p7.spr_set 51
where sets.id_set == s.id_set 51
select s).Single<spr_set>(); 51
setsN.speopl = t1.Text; 51
setsN.shour = t2.Text; 51
setsN.Np = t3.Text; 51
setsN.No = t4.Text; 51
setsN.Nd = t5.Text; 51
setsN.Nop = t6.Text; 51
p7.SaveChanges(); 51
MessageBox.Show("Данные обновлены!", "Успех"); 51
wset.updateDataGrid(); 51
this.Close(); 51
} 51
public void entityToExcel(int k, spr_set s, spr_positions_doctors d,string title) 51
{ 51
ec = sheet.get_Range("A" + k, "T" + (k + 3)); 51
ec.HorizontalAlignment = 51
10 51
Продолжение таблицы 14 51
1 51
2 51
3 51
4 51
Excel.Constants.xlCenter; 51
ec.VerticalAlignment = Excel.Constants.xlCenter; 51
51
//граница таблицы 51
Excel.XlBordersIndex BorderIndex; 51
BorderIndex = Excel.XlBordersIndex.xlEdgeLeft; 52
ec.Borders[BorderIndex].Weight = Excel.XlBorderWeight.xlThick; 52
ec.Borders[BorderIndex].LineStyle = Excel.XlLineStyle.xlContinuous; 52
ec.Borders[BorderIndex].ColorIndex = 0; 52
BorderIndex = Excel.XlBordersIndex.xlEdgeTop; 52
ec.Borders[BorderIndex].Weight = Excel.XlBorderWeight.xlThick; 52
ec.Borders[BorderIndex].LineStyle = Excel.XlLineStyle.xlContinuous; 52
ec.Borders[BorderIndex].ColorIndex = 0; 52
BorderIndex = Excel.XlBordersIndex.xlEdgeBottom; 52
ec.Borders[BorderIndex].Weight = Excel.XlBorderWeight.xlThick; 52
ec.Borders[BorderIndex].LineStyle = Excel.XlLineStyle.xlContinuous; 52
ec.Borders[BorderIndex].ColorIndex = 0; 52
BorderIndex = Excel.XlBordersIndex.xlEdgeRight; 52
ec.Borders[BorderIndex].Weight = Excel.XlBorderWeight.xlThick; 52
Продолжение таблицы 14 52
1 52
2 52
3 52
4 52
//заголовок таблтцы 52
ec = sheet.get_Range("A" + k, "T" + k); 52
ec.Merge(); 52
ec.Value2 = title; 52
BorderIndex = Excel.XlBordersIndex.xlEdgeBottom; 52
ec.Borders[BorderIndex].Weight = Excel.XlBorderWeight.xlThin; 53
ec.Borders[BorderIndex].LineStyle = Excel.XlLineStyle.xlContinuous; 53
ec.Borders[BorderIndex].ColorIndex = 0; 53
53
//разметка ячеек 53
ec = sheet.get_Range("B" + (k + 2), "B" + (k + 2)); 53
ec.Borders.Weight = Excel.XlBorderWeight.xlThin; 53
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 53
ec.Borders.ColorIndex = 0; 53
ec = sheet.get_Range("D" + (k + 2), "D" + (k + 2)); 53
ec.Borders.Weight = Excel.XlBorderWeight.xlThin; 53
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 53
ec.Borders.ColorIndex = 0; 53
ec = sheet.get_Range("H" + (k + 2), "H" + (k + 2)); ec.Borders.Weight = Excel.XlBorderWeight.xlThin; 53
Продолжение таблицы 14 53
1 53
2 53
3 53
4 53
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 53
ec.Borders.ColorIndex = 0; 53
ec = sheet.get_Range("L" +( k + 2), "L" + (k + 2)); 53
ec.Borders.Weight = Excel.XlBorderWeight.xlThin; 53
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 54
ec.Borders.ColorIndex = 0; 54
ec = sheet.get_Range("P" + (k + 2), "P" + (k + 2)); 54
ec.Borders.Weight = Excel.XlBorderWeight.xlThin; 54
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 54
ec.Borders.ColorIndex = 0; 54
ec = sheet.get_Range("F" + (k + 1), "F" + (k + 1)); 54
ec.Borders.Weight = Excel.XlBorderWeight.xlThin; 54
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 54
ec.Borders.ColorIndex = 0; 54
ec = sheet.get_Range("T" + (k + 2), "T" + (k + 2)); 54
ec.Borders.Weight = Excel.XlBorderWeight.xlThick; 54
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 54
Продолжение таблицы 14 54
1 54
2 54
3 54
4 54
ec.Borders.ColorIndex = 0; 54
ec = sheet.get_Range("H" + (k + 1), "H" + (k + 1)); 54
ec.Borders.Weight = Excel.XlBorderWeight.xlThick; 54
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 54
ec.Borders.ColorIndex = 0; 55
ec = sheet.get_Range("F" + (k + 3), "F" + (k + 3)); 55
ec.Borders.Weight = Excel.XlBorderWeight.xlThick; 55
ec.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 55
ec.Borders.ColorIndex = 0; 55
55
//вставка шаблона 55
int kor = 1; 55
ec = sheet.get_Range("A" + (k + kor), "A" + (k + kor)); 55
ec.Value2 = "Ф ="; 55
ec = sheet.get_Range("C" + (k + kor), "C" + (k + kor)); 55
ec.Value2 = "*"; 55
ec = sheet.get_Range("E" + (k + kor), "E" + (k + kor)); 55
ec.Value2 = "*"; 55
ec = sheet.get_Range("G" + (k + kor), "G" + (k+ kor)); 55
Продолжение таблицы 14 55
1 55
2 55
3 55
4 55
private void Button_Click_2(object sender, RoutedEventArgs e) 55
{ int id = 0; 55
try 55
id = Convert.ToInt32(tb2.Text); 55
spr_positions upd = (from s in p7.spr_positions where s.id_position == id 55
select s).First(); WpositionsEdit wed = new WpositionsEdit(p7, upd, this); 56
wed.Show(); 56
} 56
catch (Exception exc) 56
{ 56
MessageBox.Show("Некорректные данные или должности с таким кодом не существует", "Ошибка"); 56
} 56
} 56
4 55
public WpositionsEdit(polic7Entities p7, spr_positions upd, Wpositions wpositions) 56
{ 56
// TODO: Complete member initialization 56
InitializeComponent(); 56
this.p7 = p7; 56
this.upd = upd; 56
this.wpositions = wpositions; 56
label1.Content = "Код: " + upd.id_position; 56
tb.Text = upd.position; 56
} 56
4 56
5.2 Документ «Руководство пользователя» 56
6 Развёртывание программного обеспечения 64
7 Организационно-экономическая часть 65
7.1 Организация ремонтного производства 65
7.1 Общая постановка к технико-экономическому обоснованию 67
7.2 Расчет трудоемкости (производительности) 68
7.3 Расчет единовременных затрат 69
7.4 Расчет годовых текущих издержек 75
7.5 Расчет показателей экономической эффективности 79
7.6 Выводы и рекомендации 80
8 Охрана труда 81
8.1 Идентификация и анализ аредных и опасных факторов в проектируемом объ екте 81
8.2 Технические, технологические, организационные решения по устранению опасных и вредных факторов, разработка защитных средств 84
8.3 Разработка мер безопасности при эксплуатации объекта проектирования 87
9 Энерго- и ресурсосбережение 90
Заключение по проекту 90
Список использованных источников 91
Приложение А 92
Приложение Б 94
Приложение В 95