Автоматизированное рабочее место работника регистратуры

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,1 Мб
  • Опубликовано:
    2013-10-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Автоматизированное рабочее место работника регистратуры

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

Новосибирский Государственный Технический Университет










Курсовая работа

по программированию

«Автоматизированное рабочее место работника регистратуры»



Факультет: АВТ

Преподаватель: Шахмаметов Р. Г.

Группа: АВТ-113

Студент: Николаев В. В.



Новосибирск 2013

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ

. ОПИСАНИЕ ОБЪЕКТА АВТОМАТИЗАЦИИ И ТРЕБОВАНИЙ К СОЗДАВАЕМОЙ ПРОГРАММЕ

. ОСНОВНАЯ ЧАСТЬ

.1 ОО-анализ

.2 ОО-проектирование

.3 ОО-программирование

. ТЕСТИРОВАНИЕ

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

В каждой поликлинике существует регистратура, которая занимается оформлением пациентов на прием к врачу. Оформлением пациента занимается работник регистратуры, который получает от пациента всю необходимую информацию. Эту информацию (такую как фамилия, имя, отчество) также необходимо разместить у врача в его журнале приема в соответствии с графиком работы и так, чтобы назначенное время не пересекалось с другими пациентами. Также, пациент может отменить назначенный ему прием или перенести его на другую дату и время, что очень осложняет работу оператору регистратуры, в случае использования бумажного журнала.

Кроме того, очень трудоемкой задачей является само ведение журнала приема. Журнал необходимо постоянно держать в актуальном состоянии - обновлять (перерисовывать) график работы врачей и учитывать изменения, если расписание изменилось. В свою очередь, и в штате сотрудников могут произойти изменения, что также отразится в журнале приема.

Таким образом, необходимость в разработке системы автоматизации деятельности работника регистратуры оправдана.

1. ОПИСАНИЕ ОБЪЕКТА АВТОМАТИЗАЦИИ И ТРЕБОВАНИЙ К СОЗДАВАЕМОЙ ПРОГРАММЕ

Разрабатываемая система решает задачу автоматизации основных операций в деятельности оператора отвечающего за оформление записей на прием к врачам.

Список автоматизируемых задач:

·        Создание новой базы данных (БД) сотрудников

·        Открытие существующей БД

·        Сохранение БД на диске

·        Добавление нового сотрудника в БД

·        Редактирование данных сотрудника в БД

·        Удаление сотрудника из БД

·        Добавление графика работы (журнала приема) сотрудника

·        Изменение графика работы сотрудника

·        Добавление пациентов в журнал приема врача

·        Обновление журнала приема врача (удаление просроченных записей)

·        Сортировка списка сотрудников по фамилии

·        Сортировка списка сотрудников по специализации

·        Сортировка списка сотрудников по номеру кабинета

·        Поиск сотрудников по фамилии

·        Поиск пациентов по фамилии

2. ОСНОВНАЯ ЧАСТЬ

.1 ОО-анализ

При анализе будем руководствоваться следующей диаграммой вариантов использования:

Рис. 1 Диаграмма основных вариантов использования АРМ работника регистратуры

При создании нового врача оператор вносит в БД всю информацию о нем, которая включает: ФИО врача, его специализация, номер кабинета, и график работы.

Таким образом, приходим к введению класса Doctor, моделирующего сотрудника поликлиники.

Такие свойства как ФИО, специализация и номер кабинета класса Doctorможно реализовать стандартными примитивными типами данных платформы.NETFramework.

При реализации компонента графика приема врача ограничимся максимальным сроком возможной записи равным одной неделе.

Данный компонент должен обеспечивать:

·        Составление бланка расписания с указанным максимальным временем приема одного пациента

·        Автоматическое удаление просроченных записей и заполнение бланка расписания рабочего дня на следующую неделю

·        Добавление сведений о пациенте в журнал приема выбранного врача

·        Изменение сведений о пациенте в журнале приема выбранного врача

Данный компонент можно декомпозировать на два подкомпонента - класс DayShedule,инкапсулирующий расписание приема на один день, и класс Timetable, агрегирующий класс DayShedule и предоставляющий недельный (максимальный срок, которым мы ограничились) график работы доктора.

Кроме того, для управления базой данных необходимо разработать графический интерфейс пользователя.

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

При проектировании интерфейса, будем руководствоваться следующей упрощенной диаграммой последовательности:

Рис. 2 Диаграмма последовательности работы в интерфейсе будущей АРМ

В развернутом виде эта диаграмма представлена на рис. 5.

По итогам анализа имеем представление об общей структуре разрабатываемой системы и ее будущем интерфейсе.

В целом, структуру АРМ представляет следующая диаграмма компонентов:

Рис. 3 Диаграмма компонентов

В качестве СУБД остановимся на выборе компонента Binding Source стандартной поставки.NETFramework, т. к. он обеспечивает удобное создание и последующее редактирование сохраняемых в БД сущностей.

Также теперь есть основания предположить будущую аппаратную часть системы:

Рис.4 Диаграмма развертывания системы

Исходя из диаграммы развертывания и диаграммы прецедентов, базу данных удобно разместить на одном из серверов поликлиники, а клиент разрабатываемой АРМ установить непосредственно на рабочие компьютеры операторов и сотрудников больницы.

.2 ОО-проектирование

На этапе анализа было выявлено три класса, совместная работа которых обеспечит выполнение поставленных задач. Теперь необходимо спроектировать взаимодействие этих классов между собой и определить операции над объектами класса.

Проектирование класса Doctor:

При проектировании будем пользоваться следующей диаграммой возможных состояний сотрудника:

Рис. 5 Диаграмма состояний класса Doctor

На этапе анализа были выявлены необходимые свойства данного класса, теперь опишем их сигнатуру:

·        +BirthDate:DateTime; дата рождения

·        +CabinetNumber : Int; номер кабинета

·        +Name:String; ФИО

·        +Specialization : String; специализация

·        + Timetable : Timetable; график приема

Данные свойства предоставляют публичный аксессор (get) и публичный мутатор (set) с добавлением к нему логики проверки значений на корректность.

При редактировании данных сотрудника необходимо обеспечить возможность отмены внесенных изменений, что наталкивает на необходимость имплементации интерфейса ICloneable, возвращающего копию объекта класса. В результате в класс добавляется еще один метод:

·        + Clone(); метод, возвращающий копию вызывающего объекта

Так как для сохранения данных был выбран агрегирующий компонент Binding Source, необходимо предоставить возможность создания объектов класса Doctorс полями, значение которых задано по умолчанию. Таким образом, необходимо объявить конструктор без параметров:

·        + Doctor()

Класс Doctor связан с классом Timetable композицией.

При проектировании класса Doctor получена следующая диаграмма, иллюстрирующая его интерфейс:

Рис. 6 Диаграмма класса Doctor

Проектирование класса DayShedule:

При проектировании будем использовать следующую диаграмму:

Рис. 7 Диаграмма последовательности работы с классом DayShedule

Класс DayShedule, моделирующий график приема доктора на определенный день недели, и предоставляющий инкапсулированные в нем данные в формате «ключ - значение» (где ключ - время приема, назначенное пациенту, значение - ФИО пациента) удобно унаследовать от класса Dictionary <TimeSpan, string> входящего в стандартную поставку платформы.NET Framework.

Кроме того, в данном классе также необходимо инкапсулировать следующие свойства:

·        + Date :DateTime; Дата, следующего рабочего дня

·        + DayOfWeek :DayOfWeek; День недели, на который составляется график

·        + Duration : TimeSpan; Продолжительность рабочего дня

·        + EndTime :TimeSpan; Время окончания рабочего дня

·        + Interval :TimeSpan; Время, выделенное на прием одного пациента

·        + IsExpired : bool; Просрочен ли график

·        + StartTime :TimeSpan; Время начала рабочего дня

Также, для реализации требуемого поведения, поместим в данный класс следующие методы и конструкторы:

·        + DayShedule; конструктор класса, с передаваемым ему параметром DayOfWeek

·        + Set; метод, с помощью которого заполняется расписание в журнале приема

·        + SyncDate; метод, синхронизирующий текущую дату с датой в журнале приема

·        - ClearTasks; функция, необходимая для очистки просроченных записей. Вызывается в методе SyncDate

·        - ListDate; функция, для установления следующей даты дня недели, на который составляется данное расписание

Так как данный класс наследуются от Dictionary<TimeSpan, string>, также необходимо переопределить следующие методы и конструкторы базового класса:

·        # DayShedule(Serialization Info); конструктор, необходимый для десериализации объектов класса

·        + GetObjectData; метод, необходимый для сериализации объектов класса

Класс DayShedule - вспомогательная единица инкапсуляции, используемая для обеспечения работы других классов, разрабатываемой системы.

В ходе проектирования класса, получили следующую диаграмму его интерфейса:

Рис. 8 Диаграмма класса DayShedule

 

Проектирование класса Timetable:

Класс Timetable создан для агрегации объектов класса DaySheduleи моделирует график работы врача на неделю.

Для использования средств работы с коллекциями LINQ платформы.NETFramework, реализуем в данном классе интерфейс

IEnumerable<DayShedule>. Данный интерфейс позволяет организовать простую итерацию по объектам DayShedule,и также (с использованием LINQ) осуществлять поиск и сортировку коллекции.

В итоге, интерфейс класса представляется следующими свойствами, представляющими расписания на каждый день недели:

·        + Monday : DayShedule

·        + Tuesday : DayShedule

·        + Wednesday : DayShedule

·        + Thursday : DayShedule

·        + Friday : DayShedule

·        + Saturday : DayShedule

·        + Sunday : DayShedule

Данные свойства хранятся в приватном поле _days :List<DayShedule>

Методы, инкапсулированные в данном классе:

·        Timetable; конструктор по умолчанию

·        Sync; метод, синхронизирующий дату каждого дня графика с текущей датой

·        this[]; перегруженный оператор индексирования

Для имплементации интерфейса IEnumerable<DayShedule> необходимо реализовать два метода:

·        + GetEnumerator;

·        - IEnumerable.GetEnumerator;

Объект класса Timetableхранится в каждом экземпляре класса Doctor. Таким образом, мы имеем отношение композиция между классами.

Диаграмма, иллюстрирующая интерфейс класса Timetable:

Рис. 9 Диаграмма класса Timetable

На этом этап проектирования можно закончить. Его результатом является получение полного представления о структуре разрабатываемой системы, интерфейсах необходимых классов и их взаимодействии.

Также по итогам проектирования была получена следующая диаграмма классов:

Рис. 10 Диаграмма классов

 

2.3 ОО-программирование

Использование базовых принципов ООП:

Наследование:

КлассDayShedule наследуется от типа платформы.NETFramework Dictionary<TimeSpan, string>, в итоге DayShedule также унаследует все реализованные интерфейсы базового класса, такие как:

·        IDictionary; предоставляет элементы коллекции в виде «ключ - значение»

·        ICollection; определяет методы, используемые для управления коллекциями

·        IEnumerable; предоставляет методы для простого перебор элементов в коллекции

·        ISerializable; позволяет объекту управлять его собственной сериализацией и десериализацией

Класс Timetableнаследует интерфейс IEnumerable и переопределяет его виртуальные методы.

Класс Doctorреализует интерфейс ICloneable

Инкапсуляция:

Инкапсулированными переменными классов являются все публичные свойства этих классов.

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

Обработка исключений:

При написании системы активно использовались средства обработки исключений.

Оператор throw использовался при попытке задать некорректное значение свойству класса. Блоки try/catch использовались для облегчения обработки некорректного ввода, и в случае выброшенного исключения, с помощью этих блоков пользователю предоставлялась информация о произошедшей ошибке.

3. ТЕСТИРОВАНИЕ

На выбор: открытие ранее созданной базы данных или создание новой

Рис. 11 Начальный экран работы программы

Меню работы с персоналом:

Рис. 12 Инструменты работы с персоналом

Добавление сотрудника

В меню, показанном на рис. 12 выберем пункт «Добавить»

Рис. 13 Редактирование данных

Рис. 14 Составление графика приема врача

Добавление пациента

В главном окне программе, выберем необходимого врача

Рис. 15 Выбор, на какой день записываем пациента

 

Рис. 16 Добавление данных пациента

Поиск

Рис. 17 Возможные способы поиска

регистратура врач автоматизированный рабочий

Сортировка

Рис. 18 Возможные способы сортировки

Удаление сотрудника

В главном окне выберем сотрудника, которого хотим удалить, затем в меню «Сотрудники» выберем пункт «Удалить»

Рис. 19 Удаление сотрудника

ЗАКЛЮЧЕНИЕ

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

В качестве парадигмы программирования была выбрана концепция ООП. Были использованы такие полезные средства, предоставляемые в рамках этой концепции, как: наследование, инкапсуляция, композиция и агрегация классов.

Разработанное приложение, хотя и позволяет выполнять основные функции работника регистратуры, на данном этапе не позволяет выполнять следующие функции:

·        Авторизация в системе и разделение привилегий пользователей

·        Сохранение истории болезни пациента

·        Дополнительные сведения о пациенте

·        Предоставление отчетности о количестве обслуженных пациентов, проведенном лечении и процедурах

В дальнейшем, эти функции будет легко включить в существующую архитектуру программы, так как в целом ее структура является слабо связанной и легко расширяемой.

СПИСОК ЛИТЕРАТУРЫ

1.   Э. Троелсен. Язык программирования С# 2010 и платформа.NET 4.0, 5-е изд.И.Д. Вильямс, 2011. - 1392 с.

2.      Н. Трей. C# 2010: Ускоренный курс для профессионалов. И.Д. Вильямс, 2010. - 592 с.

.        Фаулер М., Скотт К. UML. Основы. Символ-Плюс, 2002. - 192 с.

.        Кватрани Т. Rational Rose и UML. Визуальное моделирование. ДМК Пресс, 2001. - 176 с.

ПРИЛОЖЕНИЕ

Листинг программы

Класс Doctor

#region Namespace directives;.Text.RegularExpressions;.Timetable;

#endregion

{

[Serializable]: ICloneable

{

#region Fields_birthDate;_cabinetNumber;_name;_specialization;

#endregion

#region Constructors()

{= newTimetable();

}(string name,birthDate,speciality,cabinetNumber,timetable)

: this()

{= name;= birthDate;= speciality;= cabinetNumber;= timetable;

}

#endregion

#region Properties{ get; privateset; }

{{ return_name; }

{

value = value.Trim();(!Regex.IsMatch(value, @"^[А-я]+\s+([А-я]\.\s*){2}$"))("ФИО врача задано неверно");

_name = value;

}

}

{{ return_birthDate; }

{((DateTime.Today-value).TotalDays< 6564) //18 лет("Дата рождения задана неверно");

_birthDate = value;

}

}

{{ return_specialization; }

{

value = value.Trim();(!Regex.IsMatch(value, @"^[А-я]+$"))("Специальность задана неверно");

_specialization = value;

}

}

{{ return_cabinetNumber; }

{(value<= 0)("Номер кабинета должен быть больше ноля");

_cabinetNumber = value;

}

}

#endregion

#region Implementation of ICloneable()

{(_name, _birthDate, _specialization, _cabinetNumber, Timetable);

}

#endregion

}

}

КлассTimetable

#region Namespace directives;.Collections;.Collections.Generic;.Linq;

#endregion.Timetable

{

[Serializable]: IEnumerable<DayShedule>

{

#region Fields and properties;;;;;;;<DayShedule>_days;

#endregion

#region Constructors()

{= newDayShedule(DayOfWeek.Monday);= newDayShedule(DayOfWeek.Tuesday);= newDayShedule(DayOfWeek.Wednesday);= newDayShedule(DayOfWeek.Thursday);= newDayShedule(DayOfWeek.Friday);= newDayShedule(DayOfWeek.Saturday);= newDayShedule(DayOfWeek.Sunday);

_days = newList<DayShedule>

{,,,,,,

};

}

#endregion

#region Indexers[int index]

{{ return_days[index]; }

}

#endregion

#region Public methods()

{(DaySheduledayinthis)

day.SyncDate();

}

#endregion

#region Implementation of IEnumerable<DayShedule>GetEnumerator()

{_days.Where(t => t.IsSet).GetEnumerator();

}.GetEnumerator()

{();

}

#endregion

}

}

КлассDayShedule

#region Namespace directives;.Collections.Generic;.Linq;.Runtime.Serialization;

#endregion.Timetable

{

[Serializable]: Dictionary<TimeSpan, string>

{

#region properties{ get; privateset; }{ get; privateset; }{ get; privateset; }{ get; privateset; }{ get; privateset; }{ get; privateset; }{ get; privateset; }

{{ returnDateTime.Today>Date; }

}

#endregion

#region Constructors(SerializationInfo info, StreamingContext context)

: base(info, context)

{= (DayOfWeek) info.GetValue("DayOfWeek", typeof (DayOfWeek));= info.GetBoolean("IsSet");(!IsSet);= info.GetDateTime("Date");= (TimeSpan) info.GetValue("StartTime", typeof (TimeSpan));= (TimeSpan) info.GetValue("EndTime", typeof (TimeSpan));= (TimeSpan) info.GetValue("Duration", typeof (TimeSpan));= (TimeSpan) info.GetValue("Interval", typeof (TimeSpan));

}(DayOfWeek day)

{= day;

}

#endregion

#region Public Methods(TimeSpan startTime, TimeSpan endTime, TimeSpan interval)

{(startTime.Days> 0)("Начальное время задано неверно");(endTime.Days> 0)("Конечное время задано неверно");(startTime >= endTime)("Начальное время должно быть больше конечного");= startTime;= endTime;= EndTime-StartTime;(interval >Duration)("Интервал превышает рабочий промежуток");= true;= interval;();();floatBound = StartTime;(floatBound<EndTime)

{(floatBound, string.Empty);

floatBound+= interval;

}

}()

{= false;

}()

{(IsExpired)

{delta = (DateTime.Today-Date).TotalDays/7;factor = (int) (Math.Abs((int) delta - delta) <double.Epsilon

? delta

: delta + 1);+=newTimeSpan(factor*7, 0, 0, 0);();

}

}

#endregion

#region Private methods()

{(TimeSpantimeinKeys.ToList())[time] = string.Empty;

}()

{= DateTime.Today;(Date.DayOfWeek != DayOfWeek)= Date.AddDays(1);

}

#endregion

#region Overrides of Dictionary<TimeSpan,string>(SerializationInfo info, StreamingContext context)

{.GetObjectData(info, context);.AddValue("DayOfWeek", DayOfWeek);.AddValue("IsSet", IsSet);(!IsSet);.AddValue("Date", Date);.AddValue("StartTime", StartTime);.AddValue("EndTime", EndTime);.AddValue("Duration", Duration);.AddValue("Interval", Interval);

}

#endregion

}

}

Логика классаForm1

#region Namespace directives;.Collections.Generic;.Data;.IO;.Linq;.Runtime.Serialization.Formatters.Binary;.Text.RegularExpressions;.Windows.Forms;.Properties;.Timetable;

#endregion

{: Form

{

#region Fields_bf = newBinaryFormatter();_doctorForm = newDoctorForm();_search = newSearchDialog();<TimeSpan>_journal = newList<TimeSpan>();<string>_rusDayOfWeeks;_dayIndex;_selectedDoctor;<Doctor>Doctors

{{ return ((List<Doctor>) db.List); }

}

#endregion

#region Constructors()

{();.DataSource = newList<Doctor>();

_rusDayOfWeeks = newList<string>

{

"Понедельник",

"Вторник",

"Среда",

"Пятница",

"Суббота",

"Воскресенье"

};

}

#endregion

#region Private methods

// устанавливает рабочий график врача (дни приема)(Doctor doctor, int rowIndex)

{cell = newDataGridViewComboBoxCell();data = newDataTable();.Columns.Add(newDataColumn("Description", typeof (string)));.Columns.Add(newDataColumn("Value", typeof (DateTime)));workDay = -1;(inti = 0; i< 7; i++)

{(!doctor.Timetable[i].IsSet);.Rows.Add(_rusDayOfWeeks[i], doctor.Timetable[i].Date);(workDay == -1)

workDay = i;

}.DataSource = data;.DisplayMember = "Description";.ValueMember = "Value";[3, rowIndex] = cell;[3, rowIndex].Value = doctor.Timetable[workDay].Date;

}(string path)

{(path == string.Empty || doctorsTable.RowCount == 0);(FileStream fs = File.OpenWrite(path))

_bf.Serialize(fs, db.DataSource);

}()

{i = 0;(Doctordoctorindb)

{

doctor.Timetable.RemoveExpired();(doctor, i);

++i;

}.Refresh();

}(Comparison<Doctor> comparison)

{.Sort(comparison);();

}()

{((x, y) =>String.Compare(x.Name, y.Name, StringComparison. OrdinalIgnoreCase));

}()

{((x, y) =>.Compare(x.Specialization,.Specialization,.OrdinalIgnoreCase));

}()

{((x, y) => x.CabinetNumber - y.CabinetNumber);

}

#endregion

#region Events_Click(object sender, EventArgs e)

{();

}_FormClosing(object sender, FormClosingEventArgs e)

{dr = MessageBox.Show(Resources.IsSaveNeeded,.Exit,.YesNoCancel);(dr == DialogResult.Cancel).Cancel = true;(dr == DialogResult.Yes)

{(saveFileDialog1.ShowDialog() == DialogResult.OK)(saveFileDialog1.FileName);

}

}_Load(object sender, EventArgs e)

{.TabPages.Remove(tabPage2);

}_Click(object sender, EventArgs e)

{(doctorsTable.Rows.Count<= 0)

{.Show(Resources.ChooseDoctor,.Error,.OK,.Error);;

}tmpDoctor = ((Doctor) db.Current).Clone();doctor = (Doctor) db.Current;idx = doctorsTable.CurrentRow.Index;

_doctorForm.EditDoctor(doctor);(!_doctorForm.IsSaveNeeded)

{[idx] = tmpDoctor;;

}();.Refresh();

}_Click(object sender, EventArgs e)

{doctor = (Doctor) db.AddNew();

_doctorForm.AddDoctor(doctor);(!_doctorForm.IsSaveNeeded).RemoveCurrent();(doctorsTable.RowCount> 0)

{(!tabControl1.Contains(tabPage2)).TabPages.Add(tabPage2);();

}.Refresh();

}_DropDownOpening(object sender, EventArgs e)

{.Enabled = doctorsTable.RowCount> 0;

}_Click(object sender, EventArgs e)

{(saveFileDialog1.FileName);.DataSource = newList<Doctor>();.FileName = string.Empty;.TabPages.Remove(tabPage2);.Refresh();

}_Click(object sender, EventArgs e)

{.FileName = string.Empty;(openFileDialog1.ShowDialog() != DialogResult.OK);.TabPages.Remove(tabPage2);(saveFileDialog1.FileName);path = openFileDialog1.FileName;(FileStream fs = File.OpenRead(path)).DataSource = _bf.Deserialize(fs);.FileName = path;(doctorsTable.RowCount> 0)

{();.TabPages.Add(tabPage2);

}.Refresh();

}_Click(object sender, EventArgs e)

{(saveFileDialog1.ShowDialog() == DialogResult.OK)(saveFileDialog1.FileName);

}_Click(object sender, EventArgs e)

{dr = MessageBox.Show(Resources.AreYouSure,.Remove,.YesNo);(dr == DialogResult.Yes).RemoveCurrent();(doctorsTable.RowCount< 1).TabPages.Remove(tabPage2);.Refresh();

}_DropDownOpening(object sender, EventArgs e)

{.Enabled = delete1.Enabled = doctorsTable.RowCount> 0;

}_Enter(object sender, EventArgs e)

{.Rows.Clear();

_journal.Clear();currentRow = doctorsTable.CurrentRow;day = currentRow.Cells[3].FormattedValue.ToString();

_dayIndex = _rusDayOfWeeks.IndexOf(day);

_selectedDoctor = (Doctor) db.Current;dayShedule = _selectedDoctor.Timetable[_dayIndex];.Text = string.Format("{0}, {1}, {2}",

_selectedDoctor.Name,

_rusDayOfWeeks[_dayIndex],.Date.ToString("d.MM.yyyy"));(varentryin dayShedule)

{.Rows.Add(entry.Key.ToString(@"hh\:mm"), entry.Value);

_journal.Add(entry.Key);

}

}_Click(object sender, EventArgs e)

{();

}_CellValidating(object sender,e)

{(e.ColumnIndex != 1);patientName = e.FormattedValue.ToString();dayShedule = _selectedDoctor.Timetable[_dayIndex];time = _journal[e.RowIndex];error = string.Empty;(patientName != string.Empty&&

!Regex.IsMatch(patientName, @"^[А-я]+\s+([А-я]\.\s*){2}$"))= "ФИОвведеноневерно";.CurrentRow.ErrorText = error;(error != string.Empty).Cancel = true;[time] = patientName;

}_Click(object sender, EventArgs e)

{();

}_Click(object sender, EventArgs e)

{();

}_ColumnHeaderMouseClick(object sender,e)

{(e.ColumnIndex)

{0:();;1:();;2:();;

}

}

#endregion_Click(object sender, EventArgs e)

{query = _search.OpenDialog();(query != string.Empty)

{index = Doctors.FindIndex(d => d.Name.Contains(query));(index > 0).Position = index;

}

}_Click(object sender, EventArgs e)

{query = _search.OpenDialog().ToLower();(query != string.Empty)

{index =.FindIndex(doctor =>.Timetable

.FirstOrDefault(=>.Values

.Where(s => !string.IsNullOrWhiteSpace(s))

.FirstOrDefault(s =>.ToLower()

.Contains(query)) != null)

!= null);(index > 0)

{.Position = index;.SelectedTab = tabPage2;

}

}

}

}

}

Логика класса DoctorForm

#region Namespace directives;.Linq;.Windows.Forms;

#endregion

{: Form

{

#region Fields and Properties[] _settedRows = newbool[7];_doctor;_interval;{ get; privateset; }

#endregion

#region Public Methods()

{();

#region TabPage1.Rows.Add(4);[0, 0].Value = "ФИО";[0, 1].Value = "Датарождения";[0, 2].Value = "Специализация";[0, 3].Value = "Кабинет";

#endregion

#region TabPage2.Rows.Add(8);[0, 0].Value = "Понедельник";[0, 1].Value = "Вторник";[0, 2].Value = "Среда";[0, 3].Value = "Четверг";[0, 4].Value = "Пятница";[0, 5].Value = "Суббота";[0, 6].Value = "Воскресенье";[0, 7].Value = "Время на пациента";[2, 7].ReadOnly = true;

#endregion("Необходимо ввести данные");

}(Doctor doctor)

{

_doctor = doctor;();

}(Doctor doctor)

{

_doctor = doctor;(string.Empty);[1, 0].Value = _doctor.Name;[1, 1].Value = _doctor.BirthDate.ToString("d.MM.yyyy");[1, 2].Value = _doctor.Specialization;[1, 3].Value = _doctor.CabinetNumber;i = 0;(; i< 7; i++)

{(!_doctor.Timetable[i].IsSet);[1, i].Value = _doctor.Timetable[i].StartTime. ToString (@"hh\:mm");[2, i].Value = _doctor.Timetable[i].EndTime.ToString (@"hh\:mm");

}

i = 0;(!_doctor.Timetable[i].IsSet)

++i;

_interval = _doctor.Timetable[i].Interval;[1, 7].Value = _interval.ToString(@"mm");();

}

#endregion

#region private Methods(string errorText)

{

//очистка инфо(inti = 0; i<info.RowCount; i++)

{[1, i].Value = info[1, i].DefaultNewRowValue;.Rows[i].ErrorText = errorText;

}

//очистка графикаcount = timetable.RowCount - 1;(inti = 0; i< count; i++)

{

_settedRows[i] = false;[1, i].Value = timetable[1, i].DefaultNewRowValue;[2, i].Value = timetable[2, i].DefaultNewRowValue;.Rows[i].ErrorText = string.Empty;

}[1, 7].Value = timetable[1, 7].DefaultNewRowValue;.Rows[7].ErrorText = errorText;.CurrentCell = info[1, 0];.CurrentCell = timetable[1, 0];

}()

{(info.Rows.Cast<DataGridViewRow>()

.Any(row => row.ErrorText != string.Empty));.Rows.Cast<DataGridViewRow>()

.All(row => row.ErrorText == string.Empty);

}()

{(inti = 0; i< 7; i++)

{(timetable.Rows[i].ErrorText != string.Empty);(timetable[1, i].FormattedValue.ToString() != string.Empty&&[2, i].FormattedValue.ToString() != string.Empty)

_settedRows[i] = true;

}.Rows[7].ErrorText == string.Empty;

}()

{(!PrepareForSetTimetable());hasSettedRows = false, hasErrors = false;(inti = 0; i< 7; i++)

{(!_settedRows[i])

{(_doctor.Timetable[i].IsSet)

_doctor.Timetable[i].Unset();;

}

{

_doctor.Timetable[i].Set(.Parse(timetable[1, i].FormattedValue.ToString()),.Parse(timetable[2, i].FormattedValue.ToString()),

_interval);= true;.Rows[i].ErrorText = string.Empty;

}(Exception exception)

{= true;.Rows[i].ErrorText = exception.Message;

}

}(hasErrors);(!hasSettedRows).Rows[0].ErrorText = "Необходимо установить хотя бы один день";

}

#endregion

#region Events_CellValidating(object sender, DataGridViewCellValidating EventArgs e)

{s = e.FormattedValue.ToString();(e.RowIndex)

{0:

{

_doctor.Name = s;.Rows[e.RowIndex].ErrorText = string.Empty;

}(ArgumentException exception)

{.Rows[e.RowIndex].ErrorText = exception.Message;

};1:

{tmpDate = Convert.ToDateTime(s);

_doctor.BirthDate = tmpDate;.Rows[e.RowIndex].ErrorText = string.Empty;

}(Exception exception)

{.Rows[e.RowIndex].ErrorText = exception.Message;

};2:

{

_doctor.Specialization = s;.Rows[e.RowIndex].ErrorText = string.Empty;

}(ArgumentException exception)

{.Rows[e.RowIndex].ErrorText = exception.Message;

};3:

{

_doctor.CabinetNumber = Convert.ToInt32(s);.Rows[e.RowIndex].ErrorText = string.Empty;

}(Exception exception)

{.Rows[e.RowIndex].ErrorText = exception.Message;

};:NotImplementedException("Something wrong");

}

}_CellValidating(object sender,e)

{(e.ColumnIndex == 0);(e.RowIndex == 7)

{(e.ColumnIndex == 2);parsed;(!int.TryParse(e.FormattedValue.ToString(), out parsed))

{.CurrentRow.ErrorText = "Значение введено неверно";;

}(parsed < 15)

{.CurrentRow.ErrorText = "Значение должно быть не менее 15 минут";;

}(parsed > 60)

{.CurrentRow.ErrorText = "Значение должно быть не более 60 минут";;

}

_interval = newTimeSpan(0, 0, parsed, 0);.Rows[e.RowIndex].ErrorText = string.Empty;;

}s = e.FormattedValue.ToString();tmp;(s != string.Empty&& (!TimeSpan.TryParse(s, out tmp) || tmp.Days> 0))

{.CurrentRow.ErrorText = "Значение введено неверно";;

}.Rows[e.RowIndex].ErrorText = string.Empty;

}_FormClosing(object sender, FormClosing Event Args e)

{(info.CurrentCell.IsInEditMode)

{.Cancel = true;.CurrentRow.ErrorText = "Необходимо завершить редактирование";;

}(timetable.CurrentCell.IsInEditMode)

{.Cancel = true;.CurrentRow.ErrorText = "Необходимо завершить редактирование";;

}= MessageBox.Show("Сохранить результаты работы?", "Выйти",.YesNoCancel);();(dr == DialogResult.Cancel)

{.Cancel = true;;

}= dr == DialogResult.Yes;(IsSaveNeeded)

{(!IsRowsValid())

{.Cancel = true;;

}

}("Необходимо ввести данные");

}

#endregion

}

}

Логика класса SearchDialog

#region Namespace directives;.Windows.Forms;

#endregion

{: Form

{()

{();

}_query;()

{.Text = string.Empty;();.Capture = true;_query;

}_Click(object sender, EventArgs e)

{();

}()

{

_query = textBox1.Text;.Capture = false;();

}_KeyDown(object sender, KeyEventArgs e)

{(e.KeyCode == Keys.Enter)();

}

}

}

Представление формы Form1

namespaceRegistry

{

{

///<summary>

/// Требуется переменная конструктора.

///</summary>.ComponentModel.IContainercomponents = null;

///<summary>

/// Освободить все используемые ресурсы.

///</summary>

///<param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>(bool disposing)

{(disposing && (components != null))

{.Dispose();

}.Dispose(disposing);

}

#region Код, автоматически созданный конструктором форм Windows

///<summary>

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

///</summary>()

{.components = newSystem.ComponentModel.Container();.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = newSystem.Windows.Forms.DataGridViewCellStyle();.doctorsTable = newSystem.Windows.Forms.DataGridView();.name = newSystem.Windows.Forms.DataGridViewTextBoxColumn();.specialization = newSystem.Windows.Forms.DataGridViewTextBox Column();.cabinetNumber = newSystem.Windows.Forms.DataGridViewTextBox Column();.workDays = newSystem.Windows.Forms.DataGridViewCombo Box Column();.db = newSystem.Windows.Forms.BindingSource(this.components);.menuStrip1 = newSystem.Windows.Forms.MenuStrip();.file1 = newSystem.Windows.Forms.ToolStripMenuItem();.new1 = newSystem.Windows.Forms.ToolStripMenuItem();.open1 = newSystem.Windows.Forms.ToolStripMenuItem();.save1 = newSystem.Windows.Forms.ToolStripMenuItem();.exit1 = newSystem.Windows.Forms.ToolStripMenuItem();.actions1 = newSystem.Windows.Forms.ToolStripMenuItem();.add1 = newSystem.Windows.Forms.ToolStripMenuItem();.edit = newSystem.Windows.Forms.ToolStripMenuItem();.delete1 = newSystem.Windows.Forms.ToolStripMenuItem();.инструментыToolStripMenuItem = newSystem.Windows.Forms.Tool StripMenuItem();.SortStrip = newSystem.Windows.Forms.ToolStripMenuItem();.sortByNameMenu = newSystem.Windows.Forms.ToolStripMenuItem();.SortBySpeciaizationMenu = newSystem.Windows.Forms.ToolStrip MenuItem();.SortByCabinetNumberMenu = newSystem.Windows.Forms.ToolStrip MenuItem();.поискToolStripMenuItem = newSystem.Windows.Forms.ToolStrip MenuItem();.докторToolStripMenuItem = newSystem.Windows.Forms.ToolStrip MenuItem();.пациентToolStripMenuItem = newSystem.Windows.Forms.ToolStrip MenuItem();.openFileDialog1 = newSystem.Windows.Forms.OpenFileDialog();.saveFileDialog1 = newSystem.Windows.Forms.SaveFileDialog();.tabControl1 = newSystem.Windows.Forms.TabControl();.tabPage1 = newSystem.Windows.Forms.TabPage();.tabPage2 = newSystem.Windows.Forms.TabPage();.journal = newSystem.Windows.Forms.DataGridView();.time1 = newSystem.Windows.Forms.DataGridViewTextBoxColumn();.patient1 = newSystem.Windows.Forms.DataGridViewTextBox Column();.journalHeader = newSystem.Windows.Forms.Label();

((System.ComponentModel.ISupportInitialize)(this.doctorsTable)).BeginInit();

((System.ComponentModel.ISupportInitialize)(this.db)).BeginInit();.menuStrip1.SuspendLayout();.tabControl1.SuspendLayout();.tabPage1.SuspendLayout();.tabPage2.SuspendLayout();

((System.ComponentModel.ISupportInitialize)(this.journal)).BeginInit();.SuspendLayout();

//

// doctorsTable

//.doctorsTable.AllowUserToAddRows = false;.doctorsTable.AllowUserToDeleteRows = false;.doctorsTable.AllowUserToResizeColumns = false;.doctorsTable.AllowUserToResizeRows = false;.doctorsTable.AutoGenerateColumns = false;.doctorsTable.AutoSizeColumnsMode = System.Windows.Forms. DataGridViewAutoSizeColumnsMode.Fill;.doctorsTable.BackgroundColor = System.Drawing.SystemColors. ButtonFace;.doctorsTable.ColumnHeadersHeightSizeMode = System.Windows. Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;.doctorsTable.Columns.AddRange(newSystem.Windows.Forms.DataGridViewColumn[] {.name,.specialization,.cabinetNumber,.workDays});.doctorsTable.DataSource = this.db;.doctorsTable.Dock = System.Windows.Forms.DockStyle.Fill;.doctorsTable.Location = newSystem.Drawing.Point(3, 3);.doctorsTable.MultiSelect = false;.doctorsTable.Name = "doctorsTable";.doctorsTable.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;.doctorsTable.RowTemplate.Height = 23;.doctorsTable.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;.doctorsTable.Size = newSystem.Drawing.Size(504, 217);.doctorsTable.TabIndex = 0;.doctorsTable.ColumnHeaderMouseClick+=newSystem.Windows.Forms.DataGridViewCellMouseEventHandler(this.doctorsTable_ColumnHeaderMouseClick);

//

// name

//.name.DataPropertyName = "Name";.name.HeaderText = "Врач";.name.Name = "name";.name.ReadOnly = true;

//

// specialization

//.specialization.DataPropertyName = "Specialization";.specialization.HeaderText = "Специализация";.specialization.Name = "specialization";.specialization.ReadOnly = true;

//

// cabinetNumber

//.cabinetNumber.DataPropertyName = "CabinetNumber";.cabinetNumber.HeaderText = "Номеркабинета";.cabinetNumber.Name = "cabinetNumber";.cabinetNumber.ReadOnly = true;

//

// workDays

//.workDays.HeaderText = "День";.workDays.Name = "workDays";

//

// db

//.db.DataSource = typeof(Registry.Doctor);.db.Filter = "";.db.Sort = "";

//

// menuStrip1

//.menuStrip1.Items.AddRange(newSystem.Windows.Forms.ToolStripItem[] {.file1,.actions1,.инструментыToolStripMenuItem});.menuStrip1.Location = newSystem.Drawing.Point(0, 0);.menuStrip1.Name = "menuStrip1";.menuStrip1.Size = newSystem.Drawing.Size(518, 24);.menuStrip1.TabIndex = 1;.menuStrip1.Text = "menuStrip1";

//

// file1

//.file1.DropDownItems.AddRange(newSystem.Windows.Forms.ToolStripItem[] {.new1,.open1,.save1,.exit1});.file1.Name = "file1";.file1.Size = newSystem.Drawing.Size(48, 20);.file1.Text = "&Файл";.file1.DropDownOpening+=newSystem.EventHandler(this.file1_DropDownOpening);

//

// new1

//.new1.Name = "new1";.new1.Size = newSystem.Drawing.Size(132, 22);.new1.Text = "&Новый";.new1.Click+=newSystem.EventHandler(this.new1_Click);

//

// open1

//.open1.Name = "open1";.open1.Size = newSystem.Drawing.Size(132, 22);.open1.Text = "&Открыть";.open1.Click+=newSystem.EventHandler(this.open_Click);

//

// save1

//.save1.Name = "save1";.save1.Size = newSystem.Drawing.Size(132, 22);.save1.Text = "&Сохранить";.save1.Click+=newSystem.EventHandler(this.save_Click);

//

// exit1

//.exit1.Name = "exit1";.exit1.Size = newSystem.Drawing.Size(132, 22);.exit1.Text = "&Выход";.exit1.Click+=newSystem.EventHandler(this.exit_Click);

//

// actions1

//.actions1.DropDownItems.AddRange(newSystem.Windows.Forms.ToolStripItem[] {.add1,.edit,.delete1});.actions1.Name = "actions1";.actions1.Size = newSystem.Drawing.Size(85, 20);.actions1.Text = "&Сотрудники";.actions1.DropDownOpening+=newSystem.EventHandler(this.actions1_DropDownOpening);

//

// add1

//.add1.Name = "add1";.add1.Size = newSystem.Drawing.Size(154, 22);.add1.Text = "&Добавить";.add1.Click+=newSystem.EventHandler(this.add1_Click);

//

// edit

//.edit.Name = "edit";.edit.Size = newSystem.Drawing.Size(154, 22);.edit.Text = "&Редактировать";.edit.Click+=newSystem.EventHandler(this.edit1_Click);

//

// delete1

//.delete1.Name = "delete1";.delete1.Size = newSystem.Drawing.Size(154, 22);.delete1.Text = "&Удалить";.delete1.Click+=newSystem.EventHandler(this.delete_Click);

//

// инструментыToolStripMenuItem

//.инструментыToolStripMenuItem.DropDownItems.AddRange(newSystem.Windows.Forms.ToolStripItem[] {.SortStrip,.поискToolStripMenuItem});.инструментыToolStripMenuItem.Name = "инструментыToolStrip Menu Item";.инструментыToolStripMenuItem.Size = newSystem.Drawing.Size(95, 20);.инструментыToolStripMenuItem.Text = "&Инструменты";

//

// SortStrip

//.SortStrip.DropDownItems.AddRange(newSystem.Windows.Forms.ToolStripItem[] {.sortByNameMenu,.SortBySpeciaizationMenu,.SortByCabinetNumberMenu});.SortStrip.Name = "SortStrip";.SortStrip.Size = newSystem.Drawing.Size(162, 22);.SortStrip.Text = "&Сортировать по";

//

// sortByNameMenu

//.sortByNameMenu.Name = "sortByNameMenu";.sortByNameMenu.Size = newSystem.Drawing.Size(171, 22);.sortByNameMenu.Text = "&Имени";.sortByNameMenu.Click+=newSystem.EventHandler(this.sortByName_Click);

//

// SortBySpeciaizationMenu

//.SortBySpeciaizationMenu.Name = "SortBySpeciaizationMenu";.SortBySpeciaizationMenu.Size = newSystem.Drawing.Size(171, 22);.SortBySpeciaizationMenu.Text = "&Специализации";.SortBySpeciaizationMenu.Click+=newSystem.EventHandler(this.SortBySpeciaization_Click);

//

// SortByCabinetNumberMenu

//.SortByCabinetNumberMenu.Name = "SortByCabinetNumberMenu";.SortByCabinetNumberMenu.Size = newSystem.Drawing.Size(171, 22);.SortByCabinetNumberMenu.Text = "&Номер у кабинета";.SortByCabinetNumberMenu.Click+=newSystem.EventHandler(this.SortByCabinetNumberMenu_Click);

//

// поискToolStripMenuItem

//.поискToolStripMenuItem.DropDownItems.AddRange(newSystem.Windows.Forms.ToolStripItem[] {.докторToolStripMenuItem,.пациентToolStripMenuItem});.поискToolStripMenuItem.Name = "поискToolStripMenuItem";.поискToolStripMenuItem.Size = newSystem.Drawing.Size(162, 22);.поискToolStripMenuItem.Text = "&Поиск";

//

// докторToolStripMenuItem

//.докторToolStripMenuItem.Name = "докторToolStripMenuItem";.докторToolStripMenuItem.Size = newSystem.Drawing.Size(152, 22);.докторToolStripMenuItem.Text = "&Доктор";.докторToolStripMenuItem.Click+=newSystem.EventHandler(this.findDoctor_Click);

//

// пациентToolStripMenuItem

//.пациентToolStripMenuItem.Name = "пациентToolStripMenuItem";.пациентToolStripMenuItem.Size = newSystem.Drawing.Size(152, 22);.пациентToolStripMenuItem.Text = "&Пациент";.пациентToolStripMenuItem.Click+=newSystem.EventHandler(this.findPatient_Click);

//

// openFileDialog1

//.openFileDialog1.DefaultExt = "regdb";.openFileDialog1.FileName = "openFileDialog1";.openFileDialog1.Filter = "Doctor data bases |*.regdb";

//

// saveFileDialog1

//.saveFileDialog1.DefaultExt = "regdb";.saveFileDialog1.Filter = "Doctor data files |*.regdb";

//

// tabControl1

//.tabControl1.Controls.Add(this.tabPage1);.tabControl1.Controls.Add(this.tabPage2);.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;.tabControl1.Location = newSystem.Drawing.Point(0, 24);.tabControl1.Name = "tabControl1";.tabControl1.SelectedIndex = 0;.tabControl1.Size = newSystem.Drawing.Size(518, 249);.tabControl1.TabIndex = 2;

//

// tabPage1

//.tabPage1.Controls.Add(this.doctorsTable);.tabPage1.Location = newSystem.Drawing.Point(4, 22);.tabPage1.Name = "tabPage1";.tabPage1.Padding = newSystem.Windows.Forms.Padding(3);.tabPage1.Size = newSystem.Drawing.Size(510, 223);.tabPage1.TabIndex = 0;.tabPage1.Text = "Сотрудники";.tabPage1.UseVisualStyleBackColor = true;

//

// tabPage2

//.tabPage2.Controls.Add(this.journal);.tabPage2.Controls.Add(this.journalHeader);.tabPage2.Location = newSystem.Drawing.Point(4, 22);.tabPage2.Name = "tabPage2";.tabPage2.Padding = newSystem.Windows.Forms.Padding(3);.tabPage2.Size = newSystem.Drawing.Size(510, 223);.tabPage2.TabIndex = 1;.tabPage2.Text = "Журнал";.tabPage2.UseVisualStyleBackColor = true;.tabPage2.Enter+=newSystem.EventHandler(this.journal_Enter);

//

// journal

//

// time1

//.time1.AutoSizeMode = System.Windows.Forms.DataGridViewAuto Size ColumnMode.None;.time1.DataPropertyName = "Keys";.NullValue = null;.time1.DefaultCellStyle = dataGridViewCellStyle1;.time1.FillWeight = 45F;.time1.HeaderText = "Время";.time1.Name = "time1";.time1.ReadOnly = true;.time1.Resizable = System.Windows.Forms.DataGridViewTriState. False;.time1.SortMode = System.Windows.Forms.DataGridViewColumn SortMode. NotSortable;.time1.Width = 45;

//

// patient1

//.patient1.DataPropertyName = "Values";.patient1.FillWeight = 149.2386F;.patient1.HeaderText = "Пациент";.patient1.Name = "patient1";

//

// journalHeader

//.journalHeader.Dock = System.Windows.Forms.DockStyle.Top;.journalHeader.Location = newSystem.Drawing.Point(3, 3);.journalHeader.Name = "journalHeader";.journalHeader.Size = newSystem.Drawing.Size(504, 17);.journalHeader.TabIndex = 1;.journalHeader.Text = "journalHeader";

//

// Form1

//.AutoScaleDimensions = newSystem.Drawing.SizeF(6F, 13F);.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;.ClientSize = newSystem.Drawing.Size(518, 273);.Controls.Add(this.tabControl1);.Controls.Add(this.menuStrip1);.MainMenuStrip = this.menuStrip1;.MinimumSize = newSystem.Drawing.Size(534, 312);.Name = "Form1";.StartPosition = System.Windows.Forms.FormStartPosition. CenterScreen;.Text = "Регистратура";.FormClosing+=newSystem.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);.Load+=newSystem.EventHandler(this.Form1_Load);

((System.ComponentModel.ISupportInitialize)(this.doctorsTable)).EndInit()

((System.ComponentModel.ISupportInitialize)(this.db)).EndInit();.menuStrip1.ResumeLayout(false);.menuStrip1.PerformLayout();.tabControl1.ResumeLayout(false);.tabPage1.ResumeLayout(false);.tabPage2.ResumeLayout(false);

((System.ComponentModel.ISupportInitialize)(this.journal)).EndInit();.ResumeLayout(false);.PerformLayout();

}

#endregion.Windows.Forms.DataGridViewdoctorsTable;.Windows.Forms.BindingSourcedb;.Windows.Forms.MenuStripmenuStrip1;.Windows.Forms.ToolStripMenuItemfile1;.Windows.Forms.ToolStripMenuItemactions1;.Windows.Forms.ToolStripMenuItemadd1;.Windows.Forms.ToolStripMenuItemedit;.Windows.Forms.ToolStripMenuItemsave1;.Windows.Forms.ToolStripMenuItemopen1;.Windows.Forms.ToolStripMenuItemexit1;.Windows.Forms.OpenFileDialogopenFileDialog1;.Windows.Forms.SaveFileDialogsaveFileDialog1;.Windows.Forms.ToolStripMenuItemnew1;.Windows.Forms.ToolStripMenuItemdelete1;.Windows.Forms.TabControltabControl1;.Windows.Forms.TabPagetabPage1;.Windows.Forms.TabPagetabPage2;.Windows.Forms.DataGridViewjournal;.Windows.Forms.LabeljournalHeader;.Windows.Forms.DataGridViewTextBoxColumnname;.Windows.Forms.DataGridViewTextBox Columnspecialization;.Windows.Forms.DataGridViewTextBoxColumncabinet Number;.Windows.Forms.DataGridViewComboBoxColumnwork Days;.Windows.Forms.ToolStripMenuItem инструменты ToolStrip MenuItem;.Windows.Forms.ToolStripMenuItemSortStrip;.Windows.Forms.ToolStripMenuItemsortByNameMenu;.Windows.Forms.ToolStripMenuItemSortBySpeciaization Menu;.Windows.Forms.ToolStripMenuItemSortByCabinetNumberMenu;.Windows.Forms.DataGridViewTextBoxColumntime1;.Windows.Forms.DataGridViewTextBoxColumnpatient1;.Windows.Forms.ToolStripMenuItemпоискToolStripMenu Item;.Windows.Forms.ToolStripMenuItemдокторToolStripMenu Item;.Windows.Forms.ToolStripMenuItemпациентToolStripMenu Item;

}

}

Представление формы DoctorForm

usingSystem.Windows.Forms;

{

{

///<summary>

///Required designer variable.

///</summary>.ComponentModel.IContainercomponents = null;

///<summary>

/// Clean up any resources being used.

///</summary>

///<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>(bool disposing)

{(disposing && (components != null))

{.Dispose();

}.Dispose(disposing);

}

#region Windows Form Designer generated code

///<summary>

///Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///</summary>()

{.info = newSystem.Windows.Forms.DataGridView();.info_Key = newSystem.Windows.Forms.DataGridViewTextBox Column();.info_Value = newSystem.Windows.Forms.DataGridViewTextBox Column();.tabControl = newSystem.Windows.Forms.TabControl();.info_tabPage = newSystem.Windows.Forms.TabPage();.timetable_tabPage = newSystem.Windows.Forms.TabPage();.timetable = newSystem.Windows.Forms.DataGridView();.timetable_Key = newSystem.Windows.Forms.DataGridViewTextBox Column();.startTime1 = newSystem.Windows.Forms.DataGridViewTextBox Column();.endTime1 = newSystem.Windows.Forms.DataGridViewTextBox Column();

((System.ComponentModel.ISupportInitialize)(this.info)).BeginInit();.tabControl.SuspendLayout();.info_tabPage.SuspendLayout();.timetable_tabPage.SuspendLayout();

((System.ComponentModel.ISupportInitialize)(this.timetable)).BeginInit();.SuspendLayout();

//

// info

//.info.AllowUserToAddRows = false;.info.AllowUserToDeleteRows = false;.info.AllowUserToResizeColumns = false;.info.AllowUserToResizeRows = false;.info.AutoSizeColumnsMode = System.Windows.Forms.DataGridView AutoSizeColumnsMode.Fill;.info.BackgroundColor = System.Drawing.SystemColors.ButtonFace;.info.ColumnHeadersHeightSizeMode = System.Windows.Forms. DataGridViewColumnHeadersHeightSizeMode.AutoSize;.info.ColumnHeadersVisible = false;.info.Columns.AddRange(newSystem.Windows.Forms.DataGridViewColumn[] {.info_Key,.info_Value});.info.Dock = System.Windows.Forms.DockStyle.Fill;.info.Location = newSystem.Drawing.Point(3, 3);.info.MultiSelect = false;.info.Name = "info";.info.RowHeadersWidthSizeMode = System.Windows.Forms.Data GridView RowHeadersWidthSizeMode.DisableResizing;.info.RowTemplate.Height = 23;.info.SelectionMode = System.Windows.Forms.DataGridView SelectionMode.CellSelect;.info.Size = newSystem.Drawing.Size(320, 187);.info.TabIndex = 0;.info.CellValidating+=newSystem.Windows.Forms.DataGridViewCellValidatingEventHandler(this.info_CellValidating);

//

// info_Key

//.info_Key.AutoSizeMode = System.Windows.Forms.DataGridView AutoSize ColumnMode.None;.info_Key.HeaderText = "Key";.info_Key.Name = "info_Key";.info_Key.ReadOnly = true;.info_Key.Resizable = System.Windows.Forms.DataGridView TriState. False;.info_Key.SortMode = System.Windows.Forms.DataGridView ColumnSortMode. NotSortable;.info_Key.Width = 94;

//

// info_Value

//.info_Value.HeaderText = "Value";.info_Value.Name = "info_Value";.info_Value.Resizable = System.Windows.Forms.DataGridViewTriState. False;.info_Value.SortMode = System.Windows.Forms.DataGridViewColumn SortMode. NotSortable;

//

// tabControl

//.tabControl.Controls.Add(this.info_tabPage);.tabControl.Controls.Add(this.timetable_tabPage);.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;.tabControl.Location = newSystem.Drawing.Point(0, 0);.tabControl.Name = "tabControl";.tabControl.SelectedIndex = 0;.tabControl.Size = newSystem.Drawing.Size(334, 219);.tabControl.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;.tabControl.TabIndex = 1;

//

// info_tabPage

//.info_tabPage.Controls.Add(this.info);.info_tabPage.Location = newSystem.Drawing.Point(4, 22);.info_tabPage.Name = "info_tabPage";.info_tabPage.Padding = newSystem.Windows.Forms.Padding(3);.info_tabPage.Size = newSystem.Drawing.Size(326, 193);.info_tabPage.TabIndex = 0;.info_tabPage.Text = "Информация";.info_tabPage.UseVisualStyleBackColor = true;

//

// timetable_tabPage

//.timetable_tabPage.Controls.Add(this.timetable);.timetable_tabPage.Location = newSystem.Drawing.Point(4, 22);.timetable_tabPage.Name = "timetable_tabPage";.timetable_tabPage.Padding = newSystem.Windows.Forms.Padding(3);.timetable_tabPage.Size = newSystem.Drawing.Size(326, 193);.timetable_tabPage.TabIndex = 1;.timetable_tabPage.Text = "Графикработы";.timetable_tabPage.UseVisualStyleBackColor = true;

//

// timetable

//.timetable.AllowUserToAddRows = false;.timetable.AllowUserToDeleteRows = false;.timetable.AllowUserToResizeColumns = false;.timetable.AllowUserToResizeRows = false;.timetable.AutoSizeColumnsMode = System.Windows.Forms. DataGrid ViewAutoSizeColumnsMode.Fill;.timetable.BackgroundColor = System.Drawing.SystemColors.ButtonFace;.timetable.ColumnHeadersHeightSizeMode = System.Windows.Forms. DataGrid ViewColumnHeadersHeightSizeMode.AutoSize;.timetable.ColumnHeadersVisible = false;.timetable.Columns.AddRange(newSystem.Windows.Forms.DataGridViewColumn[] {.timetable_Key,.startTime1,.endTime1});.timetable.Dock = System.Windows.Forms.DockStyle.Fill;.timetable.Location = newSystem.Drawing.Point(3, 3);.timetable.MultiSelect = false;.timetable.Name = "timetable";.timetable.RowHeadersWidthSizeMode = System.Windows.Forms. DataGridViewRowHeadersWidthSizeMode.DisableResizing;.timetable.RowTemplate.Height = 23;.timetable.Size = newSystem.Drawing.Size(320, 187);.timetable.TabIndex = 0;.timetable.CellValidating+=newSystem.Windows.Forms.DataGridViewCellValidatingEventHandler(this.timetable_CellValidating);

//

// timetable_Key

//.timetable_Key.AutoSizeMode = System.Windows.Forms.DataGrid View AutoSizeColumnMode.None;.timetable_Key.HeaderText = "Key";.timetable_Key.Name = "timetable_Key";.timetable_Key.ReadOnly = true;.timetable_Key.Resizable = System.Windows.Forms.DataGridView TriState. False;.timetable_Key.Width = 110;

//

// startTime1

//.startTime1.HeaderText = "startTime";.startTime1.Name = "startTime1";

//

// endTime1

//.endTime1.HeaderText = "endTime";.endTime1.Name = "endTime1";

//

// DoctorForm

//.AutoScaleDimensions = newSystem.Drawing.SizeF(6F, 13F);.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;.ClientSize = newSystem.Drawing.Size(334, 219);.Controls.Add(this.tabControl);.FormBorderStyle = System.Windows.Forms.FormBorderStyle. Fixed3D;.Name = "DoctorForm";.Text = "Информация";.FormClosing+=newSystem.Windows.Forms.FormClosingEventHandler(this.DoctorForm_FormClosing);

((System.ComponentModel.ISupportInitialize)(this.info)).EndInit();.tabControl.ResumeLayout(false);.info_tabPage.ResumeLayout(false);.timetable_tabPage.ResumeLayout(false);

((System.ComponentModel.ISupportInitialize)(this.timetable)).EndInit();.ResumeLayout(false);

}

#endregion.Windows.Forms.DataGridViewinfo;;_tabPage;_tabPage;;_Key;_Value;_Key;;;

}

}

Представление формы SearchDialog

namespaceRegistry

{

{

///<summary>

///Required designer variable.

///</summary>.ComponentModel.IContainercomponents = null;

///<summary>

/// Clean up any resources being used.

///</summary>

///<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>(bool disposing)

{(disposing && (components != null))

{.Dispose();

}.Dispose(disposing);

}

#region Windows Form Designer generated code

///<summary>

///Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///</summary>()

{.textBox1 = newSystem.Windows.Forms.TextBox();.button1 = newSystem.Windows.Forms.Button();.SuspendLayout();

//

// textBox1

//.textBox1.Font = newSystem.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));.textBox1.Location = newSystem.Drawing.Point(12, 12);.textBox1.Name = "textBox1";.textBox1.Size = newSystem.Drawing.Size(150, 26);.textBox1.TabIndex = 0;.textBox1.KeyDown+=newSystem.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);

//

// button1

//.button1.Location = newSystem.Drawing.Point(46, 51);.button1.Name = "button1";.button1.Size = newSystem.Drawing.Size(75, 23);.button1.TabIndex = 1;.button1.Text = "ОК";.button1.UseVisualStyleBackColor = true;.button1.Click+=newSystem.EventHandler(this.button1_Click);

//

// SearchDialog

//.AutoScaleDimensions = newSystem.Drawing.SizeF(6F, 13F);.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;.AutoSize = true;.ClientSize = newSystem.Drawing.Size(171, 86);.ControlBox = false;.Controls.Add(this.button1);.Controls.Add(this.textBox1);.FormBorderStyle = System.Windows.Forms.FormBorderStyle. FixedToolWindow;.MaximizeBox = false;.MinimizeBox = false;.Name = "SearchDialog";.ShowIcon = false;.ShowInTaskbar = false;.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;.StartPosition = System.Windows.Forms.FormStartPosition. CenterParent;.ResumeLayout(false);.PerformLayout();

}

#endregion.Windows.Forms.TextBoxtextBox1;.Windows.Forms.Buttonbutton1;

}

}

Похожие работы на - Автоматизированное рабочее место работника регистратуры

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!