МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Оглавление 1. Общие положения курсовой работы ................................................................................... 2 2. Организация выполнения курсовой работы ....................................................................... 2 3. Этапы создания программного приложения (интерфейса пользователя базы данных) 3 4. Технические средства реализации проекта .............................................................................4 5. Рекомендуемая структура курсового проекта ........................................................................4 5.1. Постановка задачи ..........................................................................................................4 5.2. Разработка базы данных информационной системы ..................................................5 5.3. Разработка программного кода приложения ...............................................................6 5.4. Тестирование приложения пользователя ...................................................................26 6. Заключение...............................................................................................................................26 7. Основные требования к оформлению курсового проекта ...................................................26 8. Подготовка курсового проекта к защите и защита ..............................................................26 9. Примеры заданий на курсовую работу .................................................................................27 Интерфейс пользователя информационно-справочной системы «Агентство недвижимости» ....................................................................................................................27 Интерфейс пользователя информационно-справочной системы «Гостиничный комплекс» .............................................................................................................................28 Интерфейс пользователя информационно-справочной системы «Продажа авиабилетов» ........................................................................................................................28 Интерфейс пользователя информационно-справочной системы «Обеспечение учебного процесса в вузе» ..................................................................................................29 Интерфейс пользователя информационно-справочной системы «Туристическое агентство».............................................................................................................................29 Интерфейс пользователя информационно-справочной системы «Учет договоров фирмы» .................................................................................................................................29 Интерфейс пользователя информационно-справочной системы «Услуги фирмы – разработчика программного обеспечения».......................................................................30 Интерфейс пользователя информационно-справочной системы «Организация грузоперевозок» ...................................................................................................................30 Интерфейс пользователя информационно-справочной системы «Продажа железнодорожных билетов» ...............................................................................................30 Интерфейс пользователя информационно-справочной системы «Поликлиника» .......31 Интерфейс пользователя информационно-справочной системы «Продажа билетов на междугородние автобусные маршруты» ...........................................................................31 Интерфейс пользователя информационно-справочной системы «Видеотека».............32 Интерфейс пользователя информационно-справочной системы «Справочник абитуриента» ........................................................................................................................32 Интерфейс пользователя Информационно-справочной системы «Городские службы быта» .....................................................................................................................................32 Интерфейс пользователя информационно-справочной системы «Зачисление абитуриентов в вуз» ............................................................................................................33 Интерфейс пользователя информационно-справочной системы «ГИБДД» .................33 Интерфейс пользователя информационно-справочной системы «Спортивного клуба» ...............................................................................................................................................34 Интерфейс пользователя информационно-справочной системы «Автосалон» ............34 Интерфейс пользователя информационно-справочной системы «Городской очереди на получение жилья» ...........................................................................................................34 Интерфейс пользователя информационно-справочной системы «Коммерческие банки города» ..................................................................................................................................35 1 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 1. Общие положения курсовой работы Целью выполнения курсовой работы является необходимость закрепления всех знаний и практических навыков, полученных в результате изучения курса «Высокоуровневые методы информатики и программирования». Основной целью курсовой работы является создание приложения, представляющего собой интерфейс пользователя базы данных в архитектуре «клиент-сервер». Курсовая работа должна охватывать основные этапы жизненного цикла программного обеспечения от постановки задачи до программной реализации приложения, его компиляции, тестирования и документирования. 2. Организация выполнения курсовой работы Основными этапами выполнения курсовой работы являются: Выбор и утверждение темы курсовой работы у руководителя. Тема курсовой работы может быть выбрана из списка тем, приведенных в разделе «Варианты заданий на курсовую работу». Тема может быть предложена преподавателем, являющимся руководителем работы. Тема работы может быть выбрана студентом самостоятельно. В любом случае необходимо утвердить выбранную тему у руководителя работы и получить ЗАДАНИЕ на курсовую работу. Бланк ЗАДАНИЯ приведен в Приложении 2. 2. Составление плана курсовой работы выполняется совместно с руководителем. Формулируются цели и задачи курсовой работы. 3. Изучение рекомендованной и дополнительной научной литературы, ознакомление с нормативными документами и другими источниками, относящимися к теме курсовой работы, выполняется студентом самостоятельно в библиотеке института или библиотеках города. 4. Разработка программного кода приложения, представляющего интерфейс пользователя базы данных, выполняется в соответствии с этапами жизненного цикла программного обеспечения. При разработке приложения пользователя необходимо взаимодействовать с руководителем работы – после выбора и утверждения темы работы составить план-график выполнения работы, посещать плановые консультации в соответствии с расписанием, проявлять инициативу к дополнительным контактам с руководителем (электронная почта, посещение общих консультаций преподавателя). 5. Оформление пояснительной записки требованиями, приведенными в Приложении 3. к курсовой работе в соответствии с Рекомендуемая структура пояснительной записки: Титульный лист (Приложение 1). Оглавление1 Введение. Основная часть. Заключение. Список использованной литературы. Перед окончательной печатью готового документа необходимо представить пояснительную записку руководителю для проверки. 6. Подготовка к защите. На этом этапе необходимо продумать и обсудить с руководителем работы материалы, выносимые на защиту (слайды, если они используются, базу данных, 1 Собрать оглавление в автоматизированном режиме Word 2 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE программный код приложения, оформленную пояснительную выступления, обсудить его с руководителем работы. записку). Составить план 7. Защита работы должна проходить в сроки, указанные в задании на курсовую работу в соответствии с расписанием занятий. 3. Этапы создания программного приложения (интерфейса пользователя базы данных) Типовой жизненный цикл программного продукта любого класса представляет собой последовательность этапов: Постановка задачи и анализ предметной области; Проектирование системы; Программирование модулей; Тестирование и отладка; Внедрение, адаптация и сопровождение программного продукта. Каждый из этапов жизненного цикла характеризуется рядом работ, выполняемых в рамках данного этапа. 1. Этап постановки задачи и анализа предметной области включает: Формулировку требований к функциональности будущего программного продукта; Определение объемов и структуры данных, хранимых и обрабатываемых в системе; Определение основных задач, которые необходимо реализовать в коде программы; Оценку требуемой надежности программной системы и др. 2. На этапе проектирования предусматривается выполнение таких работ как: Идентификацию описываемых объектов предметной области; Декомпозицию функций программной системы; Разработку моделей, визуализирующих структуру разрабатываемых программных модулей. 3. На этапе программирования модулей системы выполняется: Написание программного кода отдельных модулей; Компиляция проекта. 4. Этапы тестирования и отладки предусматривают, в том числе: Создание интерфейса пользователя для тестирования программного продукта; Разработку тестов для многофункционального тестирования и отладки; Объединение подсистем; Сопряжение с реальной аппаратурой; Создание дистрибутивного пакета. 5. Под внедрением, адаптацией и сопровождением программного продукта понимают: Выпуск документации по программной системе; Инсталляция дистрибутива программного продукта; Исправление ошибок; Обобщение опыта эксплуатации; Администрирование системы. Основой программного продукта, разрабатываемого в рамках курсовой работы, является приложение пользователя базы данных, обеспечивающего работу пользователя в архитектуре «клиент-сервер». Приложение должно обеспечивать подключение к базе данных; выполнение команд или запуск хранимых процедур базы данных; чтение, запись, модификацию записей базы данных, представление данных в удобном для пользователя виде. 3 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Приложение должно представлять дистрибутивный пакет, который можно установить на компьютере пользователя. Для тестирования приложения необходимо разработать базу данных, работу с которой обеспечивает приложение. 4. ТЕХНИЧЕСКИЕ СРЕДСТВА РЕАЛИЗАЦИИ ПРОЕКТА При реализации курсового проекта необходимо выбрать средства для создания базы данных и среду для написания программного кода. Предполагается, что разработка программного кода, тестирование, отладка, компиляция приложения, могут быть выполнены в интегрированной студии Microsoft Visual Studio. NET. 2 Студия разработана фирмой Microsoft для реализации платформы. NET Framework и поддержки всех языков, ориентированных на использование. NET классов. Создание базы данных также может быть выполнено визуальными средствами Microsoft Visual Studio. NET или средствами, представленными в Microsoft SQL Server. На примере разработки приложения «Отдел кадров предприятия» рассмотрим основные этапы курсового проектирования. 5. РЕКОМЕНДУЕМАЯ СТРУКТУРА КУРСОВОГО ПРОЕКТА 5.1. Постановка задачи 5.1.1. Назначение приложения пользователя Приложение пользователя информационной системы «Отдел кадров» предназначается для работы со следующей информацией о каждом сотруднике предприятия, хранящейся в базе данных: название отдела, в котором работает служащий; размер полученной сотрудником заработной платы; размер иных доходов сотрудника; перечень курсов для повышения квалификации, сотрудник компании. которые посещал Приложение должно обеспечивать: просмотр записей базы данных, отфильтрованных по определенным критериям (фамилии сотрудника, номеру отдела); ввод новых записей в базу данных; редактирование и модификацию имеющихся записей; удаление устаревшей информации; поиск данных по определенным критериям (фамилии сотрудника, номеру отдела); ведение справочников (по типам выплат и отделам предприятия). Приложение пользователя должно иметь следующую функциональность: Обеспечивать соединение с источником данных с помощью одного из провайдеров технологии доступа ADO. NET. В режиме активного соединения – выполнение SQL -команд на источнике данных. хранимых процедур, имеющихся в результатов выполнения хранимых процедур. Вызов базе данных; Выбор студии основан на использовании этой среды «Высокоуровневые методы информатики и программирования». 2 4 в получение рамках курса МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Отключение от источника данных и локальное хранение считанных данных. Обработку полученных данных (фильтрацию, поиск, сортировку). Представление данных с помощью элементов управления форм. Добавление, удаление, модификацию данных из форм пользователей в локальное хранилище приложение, с последующим внесением изменений в источнике данных при активном подключении. Механизмы, используемые для работы с данными должны быть различными, например, SQL -команды в текстовом исполнении и SQL -команды в виде хранимых процедур, программируемый адаптер для выполнения SQL команд или непрограммируемый объект CommandBuilder и так далее. 5.1.2. Описание области применения приложения пользователя Приложение пользователя архитектуре «клиент-сервер». должно обеспечивать заявленную функциональность в Подключение приложения должно выполняться с помощью любого провайдера данных, имеющегося в составе технологии доступа к данным ADO. NET. Приложение должно быть реализовано на одном из языков концепции. NET Framework. 5.2. Разработка базы данных информационной системы 5.2.1. Разработка базы данных Для создания базы данных под управлением SQL Server были использованы визуальные средства интегрированной студии Visual Studio. NET – компонент Server Explorer. База данных предназначена для хранения следующей информации о каждом сотруднике компании: название отдела, в котором работает служащий; размер полученной сотрудником заработной платы; размер иных доходов сотрудников; перечень курсов, которые посещал служащий компании в целях повышения квалификации. Структура базы даны, включая отношения между таблицами, показана на рис. 2.1. 5 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 2.1. Логическая модель базы данных 5.2.2. Хранимые процедуры для базы данных Для обработки данных на стороне сервера баз данных были написаны хранимые процедуры на языке SQL. Процедура 1 с входным параметром – номер отдела позволяет удалить отдел из списка отделов: CREATE PROCEDURE DeleteDep ( @DepartmentID int) AS delete from tblDepartments where DepartmentId=@DepartmentId RETURN Процедура 2 позволяет вывести список всех сотрудников фирмы: CREATE PROCEDURE ListEmployees AS select * from Employees RETURN Запуск хранимых процедур обеспечивает разработанный интерфейс пользователя. 5.3. Разработка программного кода приложения 5.3.1. Разработка MDI – приложения Для реализации приложения в виде MDI -форм ( Multi Document Interface ) была спроектирована следующая главная форма приложения (рис.3.1). Меню главной формы позволяет выполнять запуск всех остальных форм приложения. 6 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 3.1. Главная форма MDI -приложения Пример программного кода, реализующего multi document interface , представлен ниже: Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Dim f As New Form4 f.MdiParent = Me f. Show () End Sub 5.3.2. Разработка справочников приложения Для работы со справочной информацией были разработаны два справочника: Типы выплат и Отделы предприятия. На рис.3. 2 показан внешний вид справочника Типы выплат. 7 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис.3.2. Справочник Тип выплат Справочник реализован с использованием элемента управления DataGrid. Справочник позволяет просматривать данные, добавлять новые записи, модифицировать или удалять имеющиеся. Программный код, реализующий справочник приведен ниже: Imports System.Data Imports System.Data.SqlClient Dim cnn As New SqlConnection("server=Persist Security Info=False;Integrated Security=SSPI; database=HumanResources; server=ABRZH") Dim ds As New DataSet Dim da As New SqlDataAdapter("SELECT PaymentTypeID,PaymentDesc from PaymentTypes", cnn) При загрузке формы выполняется команда подключения к базе данных и выборке данных из таблицы PaymentTypes. Private Sub Form4_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim da As New SqlDataAdapter("SELECT PaymentTypeID,PaymentDesc from PaymentTypes", cnn) Прочитанные из таблицы данные, локально хранятся в объекте DataSet и отображаются с помощью DataGrid da.Fill(ds, "PaymentTypes") DataGrid1.DataSource = ds.Tables("PaymentTypes") End Sub Кнопка для перенесения всех изменений, имеющихся в локальном хранилище, в базу данных. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 8 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Dim da As New SqlDataAdapter("SELECT PaymentTypeID,PaymentDesc from PaymentTypes", cnn) Для автоматизированного обращения к таблице CommandBuilder , который позволяет выполнить все добавлению в указанной таблице. PaymentTypes создается объект команды по вставке. Удалению, Dim cb As New SqlCommandBuilder(da) Рассматриваются все возможные изменения: добавление записей, редактирование, удаление. Dim t As New DataTable t = ds.Tables("PaymentTypes").GetChanges(DataRowState.Added) If Not t Is Nothing Then da.Update(t) End If t = ds.Tables("PaymentTypes").GetChanges(DataRowState.Modified) If Not t Is Nothing Then da.Update(t) End If t = ds.Tables("PaymentTypes").GetChanges(DataRowState.Deleted) If Not t Is Nothing Then da.Update(t) End If End Sub Справочник для работы со списками отделов реализован в виде формы (рис.3.3). Рис.3.3. Справочник Отделы 9 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Кнопка SPDeleteDep реализует запуск хранимой процедуры 1 DeleteDep для удаления, указанного в качестве входного параметра, отдела. Весь программный код формы Отделы приведен ниже: Imports System.Data Imports System.Data.SqlClient Dim cnn As New SqlConnection("server=Persist Security=SSPI;database=HumanResources;server=ABRZH") Security Info=False; Integrated Dim ds As New DataSet Dim daDep As New SqlDataAdapter ("SELECT * from tblDepartments", cnn) Dim daEmp As New SqlDataAdapter("SELECT * from Employees", cnn) Dim cbDep As New SqlCommandBuilder(daDep) Dim dv As New DataView При загрузке формы выполняются команды по установлению соединения с базой данных, считыванию данных из таблиц Departments и Employees , а также отображение данных этих таблиц в связанных элементах управления. Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load daDep.Fill(ds, "Departments") daEmp.Fill(ds, "Employees") TextBox1.DataBindings.Add(New Binding("text", ds.Tables("Departments"), "DepartmentId")) TextBox2.DataBindings.Add(New Binding("text", ds.Tables("Departments"), "Description")) ComboBox1.DataSource = ds.Tables("Employees") ComboBox1.ValueMember = "EmployeeId" ComboBox1.DisplayMember = "FirstName" ComboBox1.DataBindings.Add(New "DepartmentHeadID")) Binding("SelectedValue", ds.Tables("Departments"), dv.Table = ds.Tables("Departments") End Sub Набор кнопок для перемещения по набору связанных записей двух таблиц. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.BindingContext(ds.Tables("Departments")).Position -= 1 End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.BindingContext(ds.Tables("Departments")).Position += 1 End Sub Новая запись в таблицу Departments Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim row As DataRow row = ds.Tables("Departments").NewRow 10 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE ComboBox1.SelectedIndex = 1 row("Description") = "" row("DepartmentHeadID") = ComboBox1.SelectedValue ds.Tables("Departments").Rows.Add(row) daDep.Update(ds.Tables("Departments")) ds.Tables("Departments").Dispose() daDep.Fill(ds, "Departments") dv.RowFilter = "DepartmentID=MAX(DepartmentID)" TextBox1.Text = dv(0).Item("DepartmentID") TextBox2.Text = dv(0).Item("Description") ComboBox1.SelectedIndex = 1 End Sub Метод, позволяющий отображать связанные записи Private Sub ComboBox1_SelectedIndexChanged (ByVal sender System.EventArgs) Handles ComboBox1.SelectedIndexChanged As Object, ByVal e As If ComboBox1.SelectedIndex >= 0 Then Label1.Text = ComboBox1.SelectedValue.ToString End If End Sub Добавление изменений в базу данных с помощью объекта CommandBuilder Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim cbDep As New SqlCommandBuilder(daDep) Dim table As New DataTable table = ds.Tables("Departments").GetChanges(DataRowState.Deleted) If Not table Is Nothing Then daDep.Update(table) End If table = ds.Tables("Departments").GetChanges(DataRowState.Added) If Not table Is Nothing Then daDep.Update(table) End If table = ds.Tables("Departments").GetChanges(DataRowState.Modified) If Not table Is Nothing Then daDep.Update(table) End If End Sub Кнопка Delete Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click 11 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Dim tab As DataTable tab = ds.Tables("Departments") Dim row() As DataRow Dim s As String = "DepartmentID=" & Val(TextBox1.Text) row = tab.Select(s, "DepartmentID", DataViewRowState.CurrentRows) row(0).Delete() End Sub Кнопка Modified Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Dim i As Integer dv.Sort = "DepartmentID" i = dv.Find(Val(TextBox1.Text)) If i <> -1 Then dv.AllowEdit = True dv(0).Item("Description") = TextBox2.Text dv(0).Item("DepartmentHeadID") = ComboBox1.SelectedValue End If End Sub Кнопка для реализации вызова хранимой процедуры DeleteDep. Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click daDep.DeleteCommand = New SqlCommand With (daDep.DeleteCommand) .Connection = cnn .CommandType = CommandType.StoredProcedure .CommandText = "DeleteDep" End With Необходимо описать и добавить в коллекцию.одной параметр "@DepartmentID . daDep.DeleteCommand.Parameters.Add("@DepartmentID", SqlDbType.Int, 4, "DepartmentID") daDep.Update(ds.Tables("Departments")) End Sub 3.3. Разработка основных форм приложения Заявленная в приложении функциональность была реализована в следующих основных формах: Сотрудник (рис..3.4) – форма позволяет выполнять поиск сотрудника. Сотрудники (рис.3.5) – форма позволяет выполнять просмотр всех сотрудников предприятия. Зарплаты сотрудников (рис.3.6) – форма позволяет просматривать зарплату выбранного сотрудника. 12 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Выплаты сотрудникам (рис.3.7) – форма позволяет просматривать все выплаты указанному сотруднику. Рис.3.4. Форма Сотрудник Программный код формы Сотрудник с подробными комментариями приведен ниже: Imports System.Data.SqlClient Private ds As New DataSet Private dvEmployees As New DataView Private dvSalaries As New DataView Private daEmployees As New SqlDataAdapter Private daSalary As New SqlDataAdapter Private daDepartments As New SqlDataAdapter Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cnn As New SqlConnection ("server=Persist Security=SSPI;database=HumanResources;server=ABRZH") Security Info=False;Integrated With daEmployees .SelectCommand = New SqlCommand Создание объектов команд SELECT, INSERT, UPDATE и DELETE, которые будут использоваться SQLDataAdapter для таблицы Employees With .SelectCommand Команда SELECT, используемая для извлечения и возвращения записей о сотрудниках компании .Connection = cnn .CommandText = "SELECT EmployeeId, FirstName, SurName," 13 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE .CommandText += " DateOfBirth, DateOfHire, lastReview, " .CommandText += "Department from Employees" End With 'SelectCommand Команда INSERT, предназначенная для вставки новых строк в таблицу Employees .InsertCommand = New SqlCommand With .InsertCommand .Connection = cnn .CommandText = "INSERT Employees(Firstname, Surname," .CommandText += " DateOfBirth, DateOfHire, LastReview," .CommandText += " Department) VALUES (@Firstname, @Surname, " .CommandText += "@DateOfBirth, @DateOfHire, @LastReview, @Department)" With .Parameters .Add("@Firstname", SqlDbType.VarChar, 30, "FirstName") .Add("@Surname", SqlDbType.VarChar, 30, "SurName") .Add("@DateOfBirth", SqlDbType.SmallDateTime, 8, "DateOfBirth") .Add("@DateOfHire", SqlDbType.SmallDateTime, 8, "DateOfHire") .Add("@LastReview", SqlDbType.SmallDateTime, 8, "LastReview") .Add("@Department", SqlDbType.Int, 4, "Department") End With 'Parameters End With 'InsertCommand Команда UPDATE, предназначенная для модификации существующих строк в таблице Employees .UpdateCommand = New SqlCommand With .UpdateCommand .Connection = cnn .CommandText = "UPDATE Employees Set Firstname=@FirstName, " .CommandText += "Surname=@Surname, dateOfBirth=@dateofbirth," .CommandText += " DateOfHire=@dateofhire, LastReview=@lastreview, " .CommandText += "Department=@Department WHERE EmployeeId=@EmployeeId" With .Parameters .Add("@Firstname", SqlDbType.VarChar, 30, "FirstName") .Add("@Surname", SqlDbType.VarChar, 30, "SurName") .Add("@DateOfBirth", SqlDbType.SmallDateTime, 8, "DateOfBirth") .Add("@DateOfHire", SqlDbType.SmallDateTime, 8, "DateOfHire") .Add("@LastReview", SqlDbType.SmallDateTime, 8, "lastReview") .Add("@Department", SqlDbType.Int, 4, "Department") .Add("@EmployeeId", SqlDbType.Int, 4, "EmployeeId") End With 'Parameters End With 'UpdateCommand 14 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Команда DELETE, предназначенная для удаления существующих строк из таблицы Employees .DeleteCommand = New SqlCommand With .DeleteCommand .Connection = cnn .CommandText = "DELETE Salaries WHERE EmployeeId=@EmployeeId" .CommandText = "DELETE Employees WHERE EmployeeId=@EmployeeId" .Parameters.Add("@EmployeeId", SqlDbType.Int, 4, "EmployeeId") End With 'DeleteCommand Свойства AcceptChangesDuringFill равным TRUE, благодаря чему строки , добавленные в DataSet при помощи метода Fill будут обладать начальным статусом Unchanged .AcceptChangesDuringFill = True C вяжем результирующее множество , возвращаемое оператором SELECT, с объектом DataTable с именем Employees, помещаемым внутрь объекта DataSet .TableMappings.Add("Table", "Employees") Установим значение свойства MissingSchemaAction равным AddWithKey, благодаря чему при первом запуске оператора FILL вместо отсутствующей схемы будет автоматически создана новая с информацией о первичном ключе .MissingSchemaAction = MissingSchemaAction.AddWithKey End With 'daEmployees Определим команды SELECT , INSERT , UPDATE и DELETE , предназначенные для извлечения и модификации данных по заработной плате With daSalary Оператор SELECT для выборки данных таблицы Salaries .SelectCommand = New SqlCommand With .SelectCommand .Connection = cnn .CommandText = "SELECT EmployeeId, SalaryAppliedFrom, SalaryLevel FROM Salaries" End With 'SelectCommand Команда INSERT для вставки данных в таблицу Salaries .InsertCommand = New SqlCommand With .InsertCommand .Connection = cnn .CommandText = "INSERT Salaries(EmployeeId, (@EmployeeId, @SalaryAppliedFrom, @Salarylevel)" SalaryAppliedFrom, Salarylevel) With .Parameters .Add("@EmployeeId", SqlDbType.Int, 4, "EmployeeId") .Add("@SalaryAppliedFrom", SqlDbType.SmallDateTime, 8, "SalaryAppliedFrom") .Add("@SalaryLevel", SqlDbType.Money, 8, "SalaryLevel") End With 'Parameters End With 'InsertCommand Команда UPDATE для обновления информации в таблице Salaries 15 VALUES МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE .UpdateCommand = New SqlCommand With .UpdateCommand .Connection = cnn .CommandText = "UPDATE Salaries Set SalaryAppliedFrom = @NewSalaryAppliedFrom, SalaryLevel = @Salarylevel WHERE EmployeeID = @EmployeeId and SalaryAppliedFrom = @OldSalaryAppliedFrom" With .Parameters .Add("@NewSalaryAppliedfrom", SqlDbType.SmallDateTime, 8, "salaryAppliedFrom") .Add("@SalaryLevel", SqlDbType.Money, 8, "Salarylevel") .Add("@EmployeeId", SqlDbType.Int, 4, "EmployeeId") .Add ("@OldSalaryAppliedFrom", SqlDbType.SmallDateTime, 8, "SalaryAppliedFrom") End With ' Parameters Оригинальное значение столбца SalaryAppliedFrom , перед выполнением обновления . Parameters ("@ OldsalaryAppliedFrom "). SourceVersion = DataRowVersion . Original Значение столбца SalaryAppliedFrom , после выполнения обновления .Parameters("@NewsalaryAppliedFrom").SourceVersion = DataRowVersion.Current End With 'UpdateCommand Оператор DELETE, предназначенный для удаления данных из таблицы Salaries .DeleteCommand = New SqlCommand With .DeleteCommand .Connection = cnn .CommandText = "DELETE Salaries WHERE EmployeeId=@EmployeeId" .CommandText += " AND SalaryAppliedFrom=@SalaryAppliedFrom" .Parameters.Add("@EmployeeId", SqlDbType.Int, 4, "EmployeeId") .Parameters.Add("@SalaryAppliedFrom", SqlDbType.SmallDateTime, 8, "SalaryAppliedFrom") End With 'DeleteCommand Установка свойства AcceptChangesDuringFill равным TRUE, благодаря чему строки , добавленные в DataSet при помощи метода Fill, будут обладать начальным статусом Unchanged .AcceptChangesDuringFill = True C вяжем результирующее множество , возвращаемое оператором SELECT, с объектом DataTable с именем Salaries, помещаемым внутрь объекта DataSet .TableMappings.Add("Table", "Salaries") Установим значение свойства MissingSchemaAction равным AddWithKey, благодаря чему при первом запуске оператора FILL вместо отсутствующей схемы будет автоматически создана новая с информацией о первичном ключе .MissingSchemaAction = MissingSchemaAction.AddWithKey End With 'daSalary Добавим объект SqlCommand, отвечающий за управление оператором SELECT для таблицы Departments объекта DataSet. Поскольку в данном приложении мы не намерены модифицировать таблицу Departments, нам не потребуется прибегать к помощи ' операторов INSERT , UPDATE , DELETE With daDepartments 16 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE .SelectCommand = New SqlCommand With .SelectCommand .Connection = cnn .CommandText = "select DepartmentId, Description From tblDepartments" End With 'SelectCommand Установка свойства AcceptChangesDuringFill равным TRUE, благодаря чему строки , добавленные в DataSet при помощи метода Fill, будут обладать начальным статусом Unchanged .AcceptChangesDuringFill = True C вяжем результирующее множество , возвращаемое оператором SELECT, с объектом DataTable с именем Departments, помещаемым внутрь объекта DataSet .TableMappings.Add("Table", "Departments") Установим значение свойства MissingSchemaAction равным AddWithKey, благодаря чему при первом запуске оператора FILL вместо отсутствующей схемы будет автоматически создана новая с информацией о первичном ключе .MissingSchemaAction = MissingSchemaAction.AddWithKey End With 'daDepartments Поместим данные в объект DataSet при помощи метода FILL для каждого из созданных выше объектов SQLDataAdapter daEmployees.Fill(ds) daSalary.Fill(ds) daDepartments.Fill(ds) Добавим вычисляемый столбец в таблицу Employees объекта DataSet. В нем будет храниться полное имя сотрудника. Это сделано для того, чтобы выбор сотрудника осуществлялся из единого списка ds.Tables("Employees").Columns.Add("FullName", "FirstName +' '+ SurName") System.Type.GetType("System.String"), Создадим объекты DataRelation, реализующие отношения между 'различными таблицами внутри объекта DataSet. Отношения между таблицами Salaries и Employees ds.Relations.Add("FK_Salaries_Employees", ds.Tables("Salaries").Columns("EmployeeId")) ds.Tables("Employees").Columns("EmployeeId"), Отношения между таблицами Departments и Employees ds.Relations.Add("FK_Employees_Departments", ds.Tables("Departments").Columns("DepartmentId"), ds.Tables("Employees").Columns("Department"), True) Создадим представление для таблицы Employees. Это представление будет использоваться для выбора из списка служащих по определенному критерию при выполнении редактирования dvEmployees.Table = ds.Tables("Employees") Свяжем столбцы EmployeeID и FullName таблицы Employees с элементами управления ComboBox ComboBox1.DataSource = ds.Tables("Employees") Определим столбец, возвращаемый ComboBox1.ValueMember = "EmployeeId" свойством для выбранной Определим столбец, который будет отображаться в комбинированном списке ComboBox1.DisplayMember = "FullName" 17 строки МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Выполним аналогичные действия для таблицы Departments и второго комбинированного списка ComboBox2.DataSource = ds.Tables("Departments") ComboBox2.ValueMember = "DepartmentId" ComboBox2.DisplayMember = "Description" 'Создадим представление для таблицы Salaries Это представление будет использоваться для поиска записей с сотрудников, информация о котором редактируется в настоящий момент заработной платой dvSalaries.Table = ds.Tables("Salaries") Зададим для свойства RowFilter начальное значение, равное -1, чтобы вывести в форме все строки таблицы Salaries dvSalaries.RowFilter = "EmployeeId=-1" 'определим стиль таблицы, который будет использоваться для сокрытия от пользователя столбца EmployeeID Dim dg As New DataGridTableStyle Свяжем стиль таблицы Salaries, выводимой на экран с объектом таблицы dg.MappingName = "Salaries" Воспользуемся созданным ранее представлением для таблицы Salaries. Кроме того, свяжем стиль таблицы с объектом таблицы Затем, неявным образом будут созданы объекты GridColumnStyle. Объект GridColumnStyle применяется для задания ширины отображаемого столбца EmployeeID, которую в данном случае мы сделаем равной 0. Таким образом, обеспечим сокрытие данного столбца от пользователя. DataGrid 1. DataSource = dvSalaries DataGrid1.TableStyles.Add(dg) DataGrid1.TableStyles("Salaries").GridColumnStyles("EmployeeId").Width = 0 GroupBox2.Enabled = False End Sub Кнопка EDIT Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Настроим свойство RowFilter представления для таблицы Salaries на отображение только тех записей, которые относятся к EmployeeID выбранного из списка сотрудников dvSalaries.RowFilter = "EmployeeId=" & ComboBox1.SelectedValue Зададим для текущего DataSet в качестве имени сотрудника по умолчанию имя текущего выбранного сотрудника. Так как мы не выводим на экран столбец EmployeeID, нам необходимо использовать значение по умолчанию. Поскольку данный столбец является частью первичного ключа, при вставке новой строки нам должно быть известно значение в нем. dvSalaries.Table.Columns.Item("EmployeeId").DefaultValue = ComboBox1.SelectedValue Следующий фрагмент ограничивает перечень выводимых записей о выплатах только теми строками, которые относятся к текущему сотруднику dvEmployees.RowFilter="EmployeeId='"& ComboBox1.SelectedValue & "'" Активируем группу элементов управления редактирования. Делаем неактивной группу элементов управления навигации на время редактирования GroupBox2.Enabled = True 18 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE GroupBox1.Enabled = False Выводим в поля редактирования значения соответствующих столбцов для выбранного в текущий момент сотрудника Refresh_EmployeeDetails() End Sub Private Sub Refresh_EmployeeDetails() Связываем личную информацию о сотруднике в представлении с соответствующими полями формы TextBox1.Text = dvEmployees(0).Item("FirstName") TextBox2.Text = dvEmployees(0).Item("SurName") DateTimePicker1.Value = dvEmployees(0).Item("DateOfBirth") DateTimePicker2.Value = dvEmployees(0).Item("DateOfHire") DateTimePicker3.Value = dvEmployees(0).Item("LastReview") ComboBox2.SelectedValue = dvEmployees(0).Item("Department") End Sub Кнопка Cancel Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click При нажатии на кнопку Cancel, вызывается метод RejectChanges объекта Dataset, который выполняет откат всех внесенных в текущем сеансе редактирования записей. ds.RejectChanges() Делаем недоступной часть формы, ответственную за редактирование Одновременно активизируем группу элементов управления навигации информации. GroupBox 1. Enabled = True GroupBox 2. Enabled = False Следующий фрагмент ограничивает перечень отображаемых строк таблицы Employees только теми записями, которые касаются выбранного в данный момент сотрудника dvEmployees.RowFilter = "EmployeeId=" & ComboBox1.SelectedValue Выводим в форме исходные значения столбцов, то есть значения до момента редактирования Refresh_EmployeeDetails() Устанавливаем для свойства RowFilter значение, равное -1, чтобы сведения о доходах не отображались в элементе управления "таблица" dvSalaries.RowFilter = "EmployeeId=-1" End Sub ' Кнопка UPDATE Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Сохранение изменений, внесенных при редактировании в форме при помощи представления dvEmployees(0).Item("FirstName") = TextBox1.Text dvEmployees(0).Item("SurName") = TextBox2.Text dvEmployees(0).Item("DateOfBirth") = DateTimePicker1.Value dvEmployees(0).Item("DateOfHire") = DateTimePicker2.Value 19 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE dvEmployees(0).Item("LastReview") = DateTimePicker3.Value dvEmployees(0).Item("Department") = ComboBox2.SelectedValue Обновление информации в таблице Employees и Salary daEmployees.Update(ds) daSalary.Update(ds) Сделаем поля нижней части формы недоступными для редактирования, при этом откроем доступ к панели навигации GroupBox1.Enabled = True GroupBox2.Enabled = False Установим значения свойства RowFilter равным -1. в результате чего записи о доходах не будут отображаться в элементе управления "таблица" dvSalaries.RowFilter = "EmployeeId=-1" End Sub ' Кнопка NEW Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Объявим новый объект DataRow для хранения новой строки Dim dr As DataRow Новый объект DataRow создается в рамках схемы, определенной для таблицы Employees dr = ds . Tables (" Employees "). NewRow Сбросим элемент управления "список" Departments на первую позицию в списке ComboBox2.SelectedIndex = 1 Заполним столбцы новой строки пустыми значениями и значениями по умолчанию dr("FirstName") = "" dr("SurName") = "" dr("DateOfBirth") = DateAdd(DateInterval.Year, -15, Now) dr("DateOfHire") = Now dr("LastReview") = Now dr("Department") = ComboBox2.SelectedValue 'Добавим только что созданную строку в объект DataSet ds.Tables("Employees").Rows.Add(dr) Обновим информацию в самой базе данных daEmployees.Update(ds.Tables("Employees")) daEmployees.Fill(ds, "Employees") Извлечем запись о последнем добавленном сотруднике dvEmployees.RowFilter = "EmployeeId=MAX(EmployeeId)" Зададим имя служащего в элементе управления "список" именем нового служащего ComboBox1.SelectedValue = dvEmployees(0).Item("EmployeeId") Зададим в качестве значения по умолчанию для столбца Employee таблицы 20 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Salaries имя выбранного в данный момент сотрудника, поскольку данный столбец является частью первичного ключа, он не должен оставаться незаполненным при вставке новой строки dvSalaries.Table.Columns.Item("EmployeeId").DefaultValue = ComboBox1.SelectedValue Предоставим пользователю доступ к части формы, предназначенной для редактирования. Одновременно запретим доступ к части формы, отвечающей за выборку из списка сотрудников GroupBox2.Enabled = True GroupBox1.Enabled = False Выведем в поля редактирования формы значения соответствующих столбцов новой строки, большинство из которых пока являются пустыми Refresh_EmployeeDetails() End Sub Кнопка DELETE Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click С помощью представления ограничим список выводимых записей только теми строками, для которых EmployeeID равно EmployeeID сотрудника который в данный момент выбран в элементе управления "список" Удалим запись об этом служащем dvEmployees.Sort = "EmployeeId" dvEmployees.RowFilter="EmployeeId='"& ComboBox1.SelectedValue & "'" dvEmployees(0).Delete() Обновим содержимое таблицы Employees в самой базе данных при помощи метода Update объекта Employees SQLDataAdapter daEmployees.Update(ds) End Sub Рис. 3.5. Форма Сотрудники Программный код формы Сотрудники с подробными комментариями приведен ниже: Imports System.Data.SqlClient Dim da As New SqlDataAdapter("SELECT * FROM Employees", cnn) Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load 21 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE cnn.Open() da.Fill(ds, "Employees") cnn.Close() DataGrid1.DataSource = ds.Tables("Employees") Dim dg As New DataGridTableStyle dg.MappingName = "Employees" DataGrid1.TableStyles.Add(dg) DataGrid1.TableStyles("Employees").GridColumnStyles("EmployeeId").Width = 0 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With da .InsertCommand = New SqlCommand With .InsertCommand .Connection = cnn .CommandText = "INSERT Employees(Firstname, Surname," .CommandText += " DateOfBirth, DateOfHire, LastReview," .CommandText += " Department) VALUES (@Firstname, @Surname, " .CommandText += "@DateOfBirth, @DateOfHire, @LastReview, @Department)" With .Parameters .Add("@Firstname", SqlDbType.VarChar, 30, "FirstName") .Add("@Surname", SqlDbType.VarChar, 30, "SurName") .Add("@DateOfBirth", SqlDbType.SmallDateTime, 8, "DateOfBirth") .Add("@DateOfHire", SqlDbType.SmallDateTime, 8, "DateOfHire") .Add("@LastReview", SqlDbType.SmallDateTime, 8, "LastReview") .Add("@Department", SqlDbType.Int, 4, "Department") End With End With End With da.Update(ds.Tables("Employees")) End Sub 22 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис.3.6. Зарплаты сотрудников Программный код формы Зарплаты сотрудников с подробными комментариями приведен ниже: Imports System.Data, System.Data.SqlClient Dim cnn As New SqlConnection ("server=Persist Security=SSPI;database=HumanResources;server=ABRZH") Security Info=False; Integrated Dim tabEmp As DataTable Dim tabSalary As DataTable Dim ds As New DataSet Private Sub Form8_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load LoadDataSet() End Sub Private Sub LoadDataSet() Dim da As New SqlDataAdapter("SELECT * FROM Employees; SELECT * FROM Salaries", cnn) cnn.Open() da.Fill(ds) tabEmp = ds.Tables(0) tabSalary = ds.Tables(1) cnn.Close() DataGrid1.DataSource = tabEmp DataGrid2.DataSource = tabSalary 23 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Dim Binding As BindingManagerBase = Me.BindingContext(tabEmp) AddHandler Binding.PositionChanged, AddressOf Binding_PositionChanged Binding_PositionChanged(Nothing, Nothing) End Sub Private Sub Binding_PositionChanged(ByVal sender As Object, ByVal e As EventArgs) Dim Filter As String Dim SelectedRow As DataRow Dim Index As Integer = Me.BindingContext(tabEmp).Position SelectedRow = tabEmp.Rows(Index) Filter = "EmployeeID='" & SelectedRow("EmployeeID") & "'" tabSalary.DefaultView.RowFilter = Filter End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim daEmp As New SqlDataAdapter("SELECT * FROM Employees", cnn) Dim daSalary As New SqlDataAdapter("SELECT * FROM Salaries", cnn) Dim cbEmp As New SqlCommandBuilder(daEmp) Dim cbSalary As New SqlCommandBuilder(daSalary) Dim tab As New DataTable tab = ds.Tables(1).GetChanges(DataRowState.Deleted) If Not tab Is Nothing Then daSalary.Update(tab) End If tab = ds.Tables(0).GetChanges() If Not tab Is Nothing Then daEmp.Update(tab) End If tab = ds.Tables(1).GetChanges (DataRowState.Added Or DataRowState.Modified) If Not tab Is Nothing Then daSalary.Update(tab) End If ds.Clear() LoadDataSet() End Sub 24 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис.3.7. Выплаты сотрудникам Программный код формы Выплаты сотрудникам с подробными комментариями приведен ниже: Imports System.Data, System.Data.SqlClient Dim cnn As New SqlConnection("server=Persist Security=SSPI;database=HumanResources;server=ABRZH") Security Info=False;Integrated Dim ds As New DataSet Private Sub Form6_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cmd As New SqlCommand("SELECT EmployeeId,FirstName FROM Employees;" & "SELECT * FROM Payments", cnn) Dim da As New SqlDataAdapter(cmd) da.Fill(ds) cnn.Close() Dim ParentCol As DataColumn = ds.Tables(0).Columns("EmployeeId") Dim ChildCol As DataColumn = ds.Tables(1).Columns("EmployeeId") Dim relation As New DataRelation("Emp_Payments", ParentCol, ChildCol) ds.Relations.Add(relation) Dim ColSum As New "SUM(Child(Emp_Payments).Amount)") DataColumn(" Итого ", GetType(Integer), ds.Tables(0).Columns.Add(ColSum) DataGrid1.DataSource = ds.Tables(0) Dim ColCount As New DataColumn(" "COUNT(Child(Emp_Payments).Amount)") Количество выплат ", GetType(Integer), выплата ", GetType(Integer), ds.Tables(0).Columns.Add(ColCount) DataGrid1.DataSource = ds.Tables(0) Dim ColMax As New DataColumn(" "MAX(Child(Emp_Payments).Amount)") Наибольшая 25 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE ds.Tables(0).Columns.Add(ColMax) DataGrid1.DataSource = ds.Tables(0) End Sub 5.4. Тестирование приложения пользователя По результатам выполненного полнофункционального приложения можно сделать следующие выводы: тестирования разработанного Все данные, хранящиеся в базе данных доступны для редактирования, удаления, добавления с помощью созданных форм. Хранимые процедуры, размещенные в базе данных, успешно запускаются из приложения и возвращают данные из базы данных в элементы управления форм. Приложение регулирует установление и отключение соединения с базой данных. После разрыва соединения приложение обеспечивает работу пользователя с локальной копией данных, полученных из источника данных. Формы приложения реализуют поиск, фильтрацию и сортировку полученных из источника данных. 6. ЗАКЛЮЧЕНИЕ По имеющимся результатам тестирования приложения пользователя, реализующего интерфейс к базе данных в информационной системе, можно сделать следующие выводы: Все задачи, сформулированные для реализации в интерфейсе пользователя, успешно решены. Учтены все особенности доступа к удаленным данным в режиме активного подключения и режиме отложенного доступа (работа с локальной копией данных). 7. ОСНОВНЫЕ ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ КУРСОВОГО ПРОЕКТА Курсовая работа оформляется в соответствии с Межгосударственными стандартами: ГОСТ 7.32-2001 «Отчет о научно-исследовательской работе. Структура и правила оформления», ГОСТ 7.1-2003 «Библиографическая запись. Библиографическое описание». Основные позиции этих стандартов изложены в Приложении 3. 8. ПОДГОТОВКА КУРСОВОГО ПРОЕКТА К ЗАЩИТЕ И ЗАЩИТА Получив курсовую работу после проверки руководителем, студент должен оформить ее в соответствии с предъявленными требованиями, устранить логические и стилистические ошибки, опечатки, сброшюровать (сшить), подготовить электронную презентацию (по согласованию с руководителем). Курсовую работу студент защищает перед руководителем в присутствии других студентов. Руководитель может пригласить на защиту курсовых работ других преподавателей института. На защите курсовой работы студент должен кратко изложить основное содержание работы, акцентируя внимание на самостоятельно сделанных выводах, выполненных этапах разработки. Позициями проекта, выносимыми на защиту, являются: Анализ поставленной задачи, формализация требований, выбор программных средств реализации проекта. Программный код приложения пользователя. 26 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Интерфейс приложения (дизайн, функциональность элементов управления, наглядность и адекватность интерфейса). Базу данных для тестирования приложения. Документирование этапов проектирования и программирования в пояснительной записке. Защита курсового расписанию. проекта проходит в соответствии с установленными сроками по Оценка результатов курсового проекта выполняется в соответствии с перечисленными ниже критериями. На оценку УДОВЛЕТВОРИТЕЛЬНО: Обязательное наличие пояснительной записки. Программный код приложения с комментариями, базу данных. Приложение, имеющее достаточную функциональность для работы с базой данных, имеющую не менее 3-х связанных таблиц. На оценку ХОРОШО: Обязательное наличие пояснительной записки. Программный код приложения с комментариями, базу данных. Приложение, имеющее достаточную функциональность для работы с базой данных, имеющую не менее 4-х связанных таблиц. На оценку ОТЛИЧНО: Обязательное наличие пояснительной записки. Программный код приложения с комментариями, базу данных. Приложение, имеющее достаточную функциональность для работы с базой данных, имеющую не менее 5-ти связанных таблиц. Пояснительная записка должна быть оформлена и распечатана в соответствии с описанными требованиями Приложения 3. Приложение пользователя и база данных для его тестирования, реализованные средствами студии . NET Framework или любыми другими, должны быть продемонстрированы непосредственно на компьютере. Никакой программный код или его фрагменты, имеющиеся в методических разработках по курсу, в качестве «собственной» разработки в курсовом проекте не принимается. Студент, не выполнивший этого требования, снимается с защиты проекта. 9. ПРИМЕРЫ ЗАДАНИЙ НА КУРСОВУЮ РАБОТУ Вариант 1 Интерфейс пользователя информационно-справочной системы «Агентство недвижимости» Информационно-справочная система должна обеспечивать хранение данных о жилых объектах недвижимости, предназначенных для продажи, покупки, обмена в городе СанктПетербурге и его ближайших пригородах. Информационная система основана на базе данных, которая содержит сведения об объектах недвижимости: адрес объекта недвижимости; тип квартиры, количество комнат, изолированные; 27 метраж комнат, смежные или МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE удобства: метраж кухни, тип санузла – совмещенный или изолированный, наличие ванны, наличие горячей воды, газовая или электрическая плита, этаж, всего этажей, наличие лоджий и балконов; общий метраж квартиры, тип дома (кирпичный, блочный и т.д.), серия дома (типовая серия дома). В агентстве работают менеджеры, каждый из которых является исполнителем по конкретному договору с владельцем жилья. Сведения о менеджерах также следует учитывать (фамилия, имя, должность, телефон). С владельцем объекта недвижимости заключается договор, предусматривающий условия продажи / обмена / покупки / встречной покупки при продаже, обязательства сторон (покупателя и продавца). В роли продавца выступает Агентство, но исполнителем является менеджер агентства. Информационная система должна обеспечивать хранение, поиск, подбор вариантов по указанным пользователем критериям. Вариант 2 Интерфейс пользователя информационно-справочной системы «Гостиничный комплекс» Информационно-справочная система должна обеспечивать хранение данных о номерах гостиницы: количество мест в номере: одноместный номер, двухместный, трехместный, имеющихся удобствах номера: наличие телефона, телевизора, холодильника, балкона / лоджии и так далее, дополнительном сервисе гостиницы: стирка, химчистка, вызов такси и т.д., этаже номера (наличие / отсутствие лифта), стоимости места в номере. Клиенты гостиницы могут бронировать место для проживания заранее, оплачивая эту услугу. При оплате проживания необходимо учитывать: стоимость места в номере определенной категории (1, 2 или 3 местном), дополнительные услуги, оказанные проживающему клиенту, междугородние переговоры, бронирование номера. Чек на оплату может быть оплачен наличными деньгами или безналичным способом. Вариант 3 Интерфейс пользователя информационно-справочной системы «Продажа авиабилетов» Информационно-справочная система должна обеспечивать хранение данных об авиа рейсах, выполняемых из аэропорта города. Рейс имеет следующие характеристики: номер рейса, аэропорт назначения, время в пути, тип самолета, выполняющий рейс. Рейс может быть регулярным или чартерным. Для регулярного рейса следует хранить информацию о днях недели, по которым рейс выполняется, для чартерного – даты вылета. Продажа билетов на рейс выполняется с указанием номера рейса, даты вылета, аэропорта назначения, времени в пути, номера места, стоимости билета. Стоимость билета зависит от конкретного рейса (его продолжительности, типа самолета), а также от типа салона, в котором пассажиру продано место. Билет может быть льготный по стоимости: детский, студенческий, билет военнослужащего и так далее. Бронирование билетов на рейс происходит за определенный срок (это зависит от того, регулярный или чартерный рейс). Билет может быть сдан обратно, но с потерей стоимости (шкалу потерь определите самостоятельно). 28 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Сведения о пассажирах следует также хранить в базе данных (требование безопасности). Вариант 4 Интерфейс пользователя информационно-справочной системы «Обеспечение учебного процесса в вузе» Информационно-справочная система должна обеспечивать хранение данных: о факультетах (номер, название, руководитель); о кафедрах, существующих на факультетах (номер, название, факультет, руководитель); о преподавателях, работающих на кафедрах (ФИО, уч. степень, должность, кафедра); о группах, обучающихся на кафедрах (номер, кафедра, специальность); о студентах, учащихся в группах (ФИО, группа); о специальностях, которым обучают кафедры (название, кафедра); о дисциплинах, которые ведут преподаватели (название, преподаватель); об учебных аудиториях (номер, тип – лекционная аудитория или аудитория для практических занятий). У информационной системы имеются различные пользователи (сотрудники деканата, преподаватели, студенты), для которых необходимо разработать рабочие места, учитывающие их потребности (определите самостоятельно). Вариант 5 Интерфейс пользователя информационно-справочной системы «Туристическое агентство» Информационно-справочная система должна обеспечивать хранение данных о туристических маршрутах, их направлениях, стоимости, датах прохождения, условиях. Информационная система должна обеспечивать оформление договора с клиентом, хранение сведений о клиентах для последующих рекламных кампаний. Необходимо обеспечить возможность формирования сезонных каталогов о туристических маршрутах. Маршруты могут быть организованы как групповые или как индивидуальные. В случае групповой организации каждый маршрут имеет определенное количество туристов, обеспечивающих рентабельность маршрута. Вариант 6 Интерфейс пользователя информационно-справочной системы «Учет договоров фирмы» Информационно-справочная система должна обеспечивать хранение данных о договорах, выполняемых фирмой для заказчиков. Сведения о договоре должны включать: номер договора, даты начала и окончания этапов, а также всего договора, состав (количество этапов, их назначение, стоимость, продолжительность, руководитель). Договор имеет руководителя всего договора, руководителей отдельных этапов, списки исполнителей. Каждый этап договора сдается заказчику, результат сдачи фиксируется как протокол (номер, оценка сдачи). При заключении договора устанавливается стоимость выполнения всего договора и отдельных его этапов. Стоимость выполнения этапов может корректироваться по итогам сдачи предыдущих этапов. 29 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Необходимо предусмотреть пользователей системы различных категорий: менеджеры, отвечающие за разработку и заключение договоров, руководителей, исполнителей. Вариант 7 Интерфейс пользователя информационно-справочной системы «Услуги фирмы – разработчика программного обеспечения» Информационно-справочная система должна обеспечивать хранение данных об услугах, оказываемых фирмой, занимающейся разработкой программного обеспечения. Фирма занимается разработкой и внедрением компьютерных систем. Фирма может выполнить только внедрение готовой системы, внедрение и сопровождение системы, полный цикл работ от разработки до сопровождения. Каждый проект имеет руководителя и состав исполнителей. Проект имеет сроки и общую трудоемкость в человеко-днях. Проект разбивается на отдельные работы, каждая работа оценена в трудоемкости и может быть поручена только одному исполнителю. Суммарная трудоемкость проекта складывается из суммы трудоемкости всех работ его составляющих. Каждый заказ может находиться по плану в нескольких состояниях: разработка, отладка, тестирование, подготовка документации, сдача заказчику, пробная эксплуатация, окончательное внедрение и сопровождение. Вариант 8 Интерфейс пользователя информационно-справочной системы «Организация грузоперевозок» Информационно-справочная система должна обеспечивать хранение данных об услугах, предоставляемых транспортной компанией по перевозке грузов. Информационная система должна хранить информацию о следующих объектах: имеющиеся транспортные средства компании и их технические характеристики (тип, название, государственный номер); сотрудники транспортной компании (ФИО, должность, категория); заказчики (название, адрес, контактный телефон и т.д.); рейс (адрес назначения, адрес отправления, даты отправления и прибытия, исполнитель, транспортное средство); заказы с указанием исполнителя, транспортного средства, заказчика, адреса назначения, адреса отправления, сроков доставки, характеристик груза, стоимости выполнения. Информационная система должна обеспечивать формирование рейсов с оптимальным подбором объема груза при совпадении адреса назначения. Информационная система должна выполнять расчет стоимости перевозок с учетом всех факторов: направления, расстояния, срочности, объема груза, количества задействованных в перевозке транспортных средств и обслуживающего персонала. Вариант 9 Интерфейс пользователя информационно-справочной системы «Продажа железнодорожных билетов» Информационно-справочная система должна обеспечивать хранение данных о поездах, отправляющихся с вокзалов города. 30 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Данные о поезде должны включать: номер поезда, его направление (конечная станция, станции прохождения), время отхода, время в пути, время прихода на станции маршрута следования, длительность остановок, тип поезда (скорый, пассажирский, фирменный). Продажа билетов осуществляется бронированием мест в поезде с указанием: номера билета, номера поезда, номера вагона, номера места, паспортных данных пассажира, даты отправления состава со станции следования, конечная станция следования пассажира, станция посадки, станция назначения, тип вагона (плацкартный, купейный и так далее), стоимость билета с учетом льгот (дети, студенты, другие льготные категории). В информационной системе необходимо предусмотреть различные категории пользователей: билетные кассиры, пассажиры, администраторы. Вариант 10 Интерфейс пользователя информационно-справочной системы «Поликлиника» Информационно-справочная система должна обеспечивать хранение данных о расписании приема врачей поликлиники и записи пациентов на прием. При формировании поликлиники: базы данных следует учитывать следующие особенности работы Врач поликлиники является или врачом специалистом, или участковым врачом. Каждый участковый врач обслуживает только один участок. Участок характеризуется перечнем улиц с указанием домов, которые соответствуют данному участку. Расписания врачей сформированы на неделю и не меняются. В расписании указаны часы приема, номер кабинета и день недели. Врачи работают в две смены: утреннюю и вечернюю. Каждая смена имеет свои часы начала смены и окончания смены. Для приема каждого пациента отводится строго определенное время, поэтому прием врача делится на интервалы для приема одного пациента. Каждому интервалу назначается номерок, содержащий порядковый номер и время начала приема, время окончания приема. В одном кабинете могут работать разные врачи, но только в разное время. В поликлинике ведется учет предоставленных услуг, каждый больной имеет право на бесплатные услуги, если он имеет медицинскую страховку. С этой информационной системой должны работать пациенты, которые могут записаться на прием к врачу. С информационной системой должны работать врачи: просматривать очередность записанных пациентов. С системой должна работать администрация: количество пациентов записавшихся, количество пациентов пришедших на прием, сведения о загрузке кабинетов, сведения о загрузке врачей. Вариант 11 Интерфейс пользователя информационно-справочной системы «Продажа билетов на междугородние автобусные маршруты» Информационно-справочная система должна обеспечивать хранение данных об автобусных рейсах, выполняемых с городских автовокзалов. Информационная система должна обеспечивать возможность бронирования мест на междугородние автобусы, поиска и просмотра расписаний движения автобусов в определенном направлении, все данные о рейсе (номер, дату, время в пути, стоимость, тип автобуса и так далее). 31 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Пользователями системы могут быть пассажиры, заказывающие билет в определенном направлении на определенную дату. Пассажиры должны иметь возможность поиска подходящего рейса автобуса по всем критериям: направление, время, дата, стоимость, тип автобуса. Кассиры должны иметь возможность поиска подходящего места по требованию пассажира и формирование бланка билета в автоматизированном виде. Менеджеры автовокзалов должны иметь возможность поддерживать базу данных о рейсах в актуальном состоянии. Система должна отслеживать наличие свободных мест и учитывать проданные места на всех рейсах. Вариант 12 Интерфейс пользователя информационно-справочной системы «Видеотека» Информационно-справочная система должна обеспечивать хранение данных о видеофильмах, имеющихся в базе видеотеки. Данные о видеофильме, которые следует хранить в базе данных информационной системы: Название фильма, название и автора литературного первоисточника, на основе которого снят фильм; Жанр, год выпуска, режиссер, исполнители главных ролей; Краткое содержание, субъективная оценка фильма; Награды, премии, участие фильма в кино конкурсах; Факт наличия видеофильма в видеотеке. Справочно-информационная система должна поддерживать поиск фильма по любому из реквизитов. Пользователи системы могут искать фильм не только по названию, но интересоваться творчеством определенного режиссера, известных актеров. Менеджеры видеотеки должны иметь возможность вводить сведения о вновь поступивших фильмах, фиксировать выдачу фильма пользователю, оформлять возврат фильма. Вариант 13 Интерфейс пользователя информационно-справочной системы «Справочник абитуриента» Информационно-справочная система должна обеспечивать хранение данных обо всех вузах города. Справочник должен содержать сведения о наименовании вуза, перечень специальностей, конкурс прошлого года по каждой специальности для дневной, вечерней, заочной формы обучения, размеры и условия оплаты обучения, наличии общежития для иногородних студентов и условия проживания в нем. Информационно справочная система должна помогать абитуриенту в выборе вуза и специальности, выполняя запросы по всем интересующим абитуриента вопросам. Информационно-справочная система должна иметь сервис, позволяющий сотрудникам вузов вносить новые данные, корректировать текущие сведения о вузах и их специальностях. Вариант 14 Интерфейс пользователя Информационно-справочной системы «Городские службы быта» Информационно-справочная система должна обеспечивать хранение данных об имеющихся в городе службах бытового обслуживания населения: химчистках, прачечных, ателье по ремонту 32 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE и пошиву одежды, головных уборов, ремонту и пошиву обуви, мастерских по ремонту электроаппаратуры, строительных фирм, выполняющих ремонт квартир и так далее. Пользователя системы будут потребители услуг (горожане и гости города) и сотрудники фирм, предоставляющих услуги населению. Потребители услуг должны иметь возможность поиска требуемой услуги по любому реквизиту: названию, стоимости, расстоянию фирмы от места проживания потребителя, близости к метро. Поставщики услуг должны иметь возможность поддержания сведений в системе в актуальном состоянии: добавление, удаление, изменение данных. Вариант 15 Интерфейс пользователя информационно-справочной системы «Зачисление абитуриентов в вуз» Информационно-справочная система должна обеспечивать хранение данных об абитуриента, которые подали заявления в вуз. Информационная система должна хранить сведения об абитуриенте: анкетные данные абитуриента, фотографию, оценки на вступительных экзаменах, результаты собеседования, готовность учиться на коммерческой основе. Для ввода анкетных данных в систему необходимо разработать анкету в электронном виде. Для проведения и записи оценок, полученных абитуриентами на вступительных экзаменах, следует разработать экзаменационные ведомости в электронном виде. Для анализа результатов и зачисления абитуриентов в вуз следует разработать автоматизированный алгоритм, помогающий администрации вуза принимать решение о зачислении. Пользователями системы будут: абитуриенты, которые могут самостоятельно заполнить электронную анкету, просмотреть результаты проведения экзаменов и результаты зачисления в вуз; сотрудники деканата, выполняющие все задачи по проведению приема абитуриентов в вуз; ректорат вуза, принимающий решение о зачислении абитуриентов в вуз. Вариант 16 Интерфейс пользователя информационно-справочной системы «ГИБДД» Информационно-справочная система должна обеспечивать хранение данных обо всех транспортных средствах, зарегистрированных в городе. Эти сведения должны содержать: государственный номер, марку, цвет транспортного средства, заводской и бортовой номера, дату выпуска, особенности конструкции и окраски, дату последнего техосмотра, паспортные данные владельца. Информационно-справочная система также должна хранить сведения обо всех ДТП, в которых участвовало транспортное средство, результатах расследования, виновниках аварии. База данных информационной системы должна содержать сведения о водителях, лишенных прав на управление транспортным средством, датой начала и окончания срока лишения прав. База данных должна содержать сведения об угнанных транспортных средствах. Все хранящиеся в системе данные должны быть доступны только сотрудникам ГИБДД. Система должна иметь следующие сервисы: Предоставлять возможность редактирования записей; Внесения новых сведений по всем разделам хранимой информации; 33 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Осуществлять поиск по любому реквизиту, как по транспортному средству, так и по владельцу автомобиля; Формировать сводные документы по техническим средствам, не прошедшим в срок техосмотр. Вариант 17 Интерфейс пользователя информационно-справочной системы «Спортивного клуба» Информационно-справочная система должна обеспечивать хранение данных о спортсменах, состоящих в клубе: анкетные и антропологические данные, гражданство, возраст, вид спорта, тренер, данные о личных рекордах и так далее и спортивных мероприятиях (соревнованиях, турнирах, олимпиадах и т.д.), в которых принимают участие команды клуба. Пользователями информационной системы должны быть тренеры, спортсмены, фанаты клуба, менеджеры клуба – организаторы мероприятий. Каждая из категорий пользователей должна иметь возможность поиска и просмотра списка турниров, встреч, соревнований. Болельщики клуба должны иметь возможность просмотра календаря соревнований по каждой команде, списки игроков и сведения о них поиск рекордсменов в заданном виде спорта, просмотр результатов прошедших соревнований. Тренеры и менеджеры должны иметь возможность формировать состав участников очередных соревнований с указанием всех необходимых данных о каждом из участников. Вариант 18 Интерфейс пользователя информационно-справочной системы «Автосалон» Информационно-справочная система должна обеспечивать хранение данных об имеющихся в городе автосалонах, новых и подержанных автомобилях, которые в этих автосалонах продаются. Для каждой автомашины необходимо хранить данные о марке автомобиля, годе выпуска, технических характеристиках, особенностях исполнения, техническом состоянии, стоимости автомобиля. Пользователями системы могут быть покупатели и продавцы. Для покупателей необходимо обеспечить в системе поиск необходимого варианта по всем имеющимся характеристикам: типу, цене, году выпуска и так далее. Для продавцов необходимо предусмотреть возможность поступлениях и удаления сведений о проданных автомобилях. ввода сведений о новых Вариант 19 Интерфейс пользователя информационно-справочной системы «Городской очереди на получение жилья» Информационно-справочная система должна обеспечивать хранение данных об очередниках на получение или улучшение жилищных условий. Списки очередников должны быть сформированы по районам города. Сведения об очереднике, подлежащие хранению, следующие: личные данные об очереднике (ФИО, адрес, паспорт, место работы); состав семьи: дети, иждивенцы; дата постановки на очередь; размеры имеющейся жилой площади (адрес, тип дома, площадь квартиры / комнаты, этаж, наличие удобства, наличие телефона и так далее); 34 МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE имеющиеся льготы (ветераны труда, войны, блокадники, инвалиды, дети- инвалиды и так далее). Необходимо хранить данные о предполагаемых требованиях очередников: размер будущей площади, месторасположение, удобства и т.д. Пользователями системы могут быть очередники. Для этой категории пользователей необходимо предусмотреть просмотр очередности получения жилья для разных категорий очередников (ветеранов, инвалидов, многодетных семей и т.д.). Пользователями системы будут сотрудники организации, формирующей очередь (исполкома или жилищного комитета). Эта группа пользователей должна поддерживать базу данных очередников в актуальном состоянии: иметь возможность внесения сведений о вновь поступающих на очередь, удаления клиентов, получивших жилье, формирование очередей для различных категорий граждан, поиск, сортировку и другие операции с данными. Вариант 20 Интерфейс пользователя информационно-справочной системы «Коммерческие банки города» Информационно-справочная система должна обеспечивать хранение данных о наименованиях, адресах, статусе (форме собственности) городских банках. Пользователями системы будут потенциальные вкладчики банков и банковские сотрудники. Вкладчики должны иметь возможность выбрать условия хранения личных или корпоративных средств на лицевых счетах: годовые проценты, типы вкладов, условия кредитования. Система должна предоставлять возможность выбора банка с наибольшим процентом для заданного типа вклада. Для банковских служащих информационная система должна предоставлять возможности изменения процентных ставок, условия кредитования и начисления процентов по вкладам, ведения счетов клиентов (открытие счета, пополнение счета, начисление процентов). Для администрации банков система должна предоставлять аналитическую отчетность по типам вкладов, денежных суммах, хранящихся на счетах клиентов, сведения о погашении долгов по выданным кредитам. 35