Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Malchenko_ASOI-091_diplomny_proektЫЫЫЫЫЫЫЫЫЫЫЫЫ...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.12 Mб
Скачать

Министерство образования Республики Беларусь

Министерство образования и науки Российской Федерации

Государственное учреждение высшего профессионального образования

«БЕЛОРУССКО-РОССИЙСКИЙ УНИВЕРСИТЕТ»

Кафедра «Автоматизированные системы управления»

ДОПУЩЕНА К ЗАЩИТЕ

Зав. кафедрой «АСУ»

Крутолевич С.К.

«___»_____________ 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]