Разработка системы распределённой обработки данных управления учебным процессом типа «Деканат»

Автор работы: Пользователь скрыл имя, 24 Июня 2012 в 15:42, курсовая работа

Описание работы

Заданием на курсовой проект является разработка информационный системы «Деканат». Информационные системы, подобные данной, в качестве хранилища информации выбирают базы данных т.к. информационный поток в них, легко представляется в виде таблиц. Следовательно, первым этапом построения будущей системы является разработка и создание базы данных, как основного каркаса будущей среды.

Содержание работы

1. Задание на курсовой проект…………………………………………………..3
2. Описание структуры данных………………………………………… ………4
2.1. Создание базы данных «Деканат»…………………………………….….4
2.2. Создание таблиц данных БД «Деканат»…………………………………5
2.2.1. Дизайн таблицы «Студенты»…………………………………….…6
2.2.2. Дизайн таблицы «Преподаватели»…………………………………6
2.2.3. Дизайн таблицы «Кафедры»………………………………………..7
2.2.4. Дизайн таблицы «Группы»………………………………………….7
2.2.5. Дизайн таблицы «Учебные дисциплины»……………………...….8
3. Описание назначения и особенностей реализации механизмов и процедур по всем выполненным пунктам задания……………………………………..9
4. Алгоритмическое описание реализованных механизмов и структур….…12
5. Листинг всех процедур………………………………………………………17
5.1. Разметка страниц……………………………………………………..…..17
5.2. Логика работы страницы поиска……………………………………..…25
6. Заключение…………….……………………………………………………..29
Список литературы…………………………………………………………..….30

Файлы: 1 файл

Отчет по БД Деканат.docx

— 145.33 Кб (Скачать файл)

       Каждая  страницы представляет собой 2 файла  – один отвечает за графическое  представление страницы, второй за логику работы.

       Для отображения данных используется GridView, который после небольших настроек представляет собой отличный инструмент с табличными данными. Каждый GridView имеет свойство DataSource, который позволяет задать источник данных (в нашем случае таблицу из БД SQL Server), после этого происходит так называемое «связывание» данных и представления(data binding), которое позволяет не думать о синхронизации вида и информации т.к. об этом позаботиться логика самого компонента.

       DataSource для каждой таблицы представляет собой набор SQL запросов, которые мы выбираем при конфигурировании. Например, в листинге 2 отражен DataSource для таблицы «Кафедры», которые позволяет читать, вставлять, и обновлять данные в соответствующей таблицы, а также осуществлять их проверку.

       <asp:SqlDataSource ID="DepartmentsDataSource" runat="server"

               ConnectionString="<%$ ConnectionStrings:DeaneryConnectionString %>"

               SelectCommand="SELECT * FROM [Departments]"

               ConflictDetection="CompareAllValues"

               DeleteCommand="DELETE FROM [Departments] WHERE [DepartmentID] = @original_DepartmentID AND [DepartmentName] = @original_DepartmentName"

               InsertCommand="INSERT INTO [Departments] ([DepartmentName]) VALUES (@DepartmentName)"

               OldValuesParameterFormatString="original_{0}"

               UpdateCommand="UPDATE [Departments] SET [DepartmentName] = @DepartmentName WHERE [DepartmentID] = @original_DepartmentID AND [DepartmentName] = @original_DepartmentName">

               <DeleteParameters>

                   <asp:Parameter Name="original_DepartmentID" Type="Int32" />

                   <asp:Parameter Name="original_DepartmentName" Type="String" />

               </DeleteParameters>

               <InsertParameters>

                   <asp:Parameter Name="DepartmentName" Type="String" />

               </InsertParameters>

               <UpdateParameters>

                   <asp:Parameter Name="DepartmentName" Type="String" />

                   <asp:Parameter Name="original_DepartmentID" Type="Int32" />

                   <asp:Parameter Name="original_DepartmentName" Type="String" />

               </UpdateParameters>

       </asp:SqlDataSource>

       Листинг 2 – Код описания DataSource для таблицы «Кафедры»

       Небольшим недостатком GridView является отсутствие по умолчанию возможности добавлять строки в таблицу, и для этого необходимо воспользоваться следующим способом: необходимо вставить новую строку в БД и обновить «связывание» для того чтобы были получены новые данные, и было обновлено представление, а также установить курсор редактирования на вновь созданную строку. Например, на листинге 3 представлен данный кол для таблицы «Кафедры».

       DepartmentsDataSource.InsertParameters["DepartmentName"].DefaultValue = "New"; 

       DepartmentsDataSource.Insert();

       DepartmentsGridView.EditIndex = DepartmentsGridView.Rows.Count;

       Листинг 3 – Код для добавления строки в DepartmentsGridView

       Для организации поиска по заданным критериям  использовался SQL оператор LIKE, который позволяет найти все похожие на операнд записи в столбце.

       Например, для поиска студента по фамилии используется следующий SQL запрос: SELECT [LastName], [FirstName], [MiddleName], [GroupName] FROM [Students] WHERE ([FirstName] LIKE '%' + @FirstName + '%'), где @FirstName искомая комбинация для запроса.

       Для взаимодействия страницы поиска и страницы выдачи результатов использовался  механизм обратного вызова ссылки(PostBackCallURL), который позволяет по событию нажатия кнопки перейти на другую страницу веб сайта, при этом целевой сайт получает часть информации, о том, кто был его предшественником, и сохраняет полученную информацию в объекте PreviousPage. Данный механзим позволяет получить доступ к объявленным свойствам, нашей страницы поиска и получить введенные пользователем данные.

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

       StudentsByFirstNameDataSource.SelectParameters["FirstName"].DefaultValue = searchPage.StudentQueryBox.Text;

                               StudentsGridView.DataSourceID = StudentsByFirstNameDataSource.ID;                       

                               StudentsGridView.DataBind();                                    

                               StudentsGridView.Visible = true;

                               TeachersGridView.Visible = false;

                               GroupsGridView.Visible = false;

                               DepartmentsGridView.Visible = false;

                               SubjectsGridView.Visible = false; 

       Листинг 4 – Динамическое формирование таблицы вывода результатов поиска

       Стоить  отметить, как работает данная конструкция. Во время события PageLoad(загрузка страницы) получается идентификатор нажатой пользователем кнопки, и получение введенного им значения в качестве параметра по умолчанию в запросе используемым DataSource. Далее выполняется связывание, во время которого GridView, используя SELECT запрос DataSource, получает необходимые данные.

  1. Алгоритмическое описание реализованных механизмов и структур

       При проектировании базы данных основным конструкторским документом является схемы базы данных, которая позволяет  наглядно оценить ее содержимое, поля таблиц, связи таблиц, и ключи таблиц. На рисунке 6 показана диаграмма полученной нами базы данных, без внешних ключей.

    Рисунок 6 – Структура полученной базы данных

       Ранее мы уже упоминали о связывании данных, но не давали графического представления. На рисунке 7 показана обобщенная схема  работы связывания данных.

    Рисунок 7 – Схема работы связывания данных

    Добавление  новых данных 
     
     
     
     
     
     
     
     
     
     
     
     
     
     

                    Нет 

        

                Да 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 

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

                    Нет 

                Да 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 

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

    Поиск данных 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

  1. Листинг всех процедур
    1. Разметка страниц

<%@ Page Title="Кафедры" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

    CodeBehind="Departments.aspx.cs" Inherits="DeaneryWebApp._Departments" %> 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent"> 

    <asp:GridView ID="DepartmentsGridView" runat="server" AllowPaging="True"

    AllowSorting="True" AutoGenerateColumns="False" DataSourceID="DepartmentsDataSource"

    Width="622px" DataKeyNames="DepartmentID">

        <Columns>

            <asp:BoundField DataField="DepartmentName" HeaderText="Кафедра"

                SortExpression="DepartmentName" />        

            <asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/cancel.png"

                CancelText="" DeleteImageUrl="~/Images/delete.png" DeleteText=""

                EditImageUrl="~/Images/edit.png" EditText="" ShowDeleteButton="True"

                ShowEditButton="True" UpdateImageUrl="~/Images/update.png" UpdateText="" />

        </Columns>

    </asp:GridView>

    <asp:SqlDataSource ID="DepartmentsDataSource" runat="server"

        ConnectionString="<%$ ConnectionStrings:DeaneryConnectionString %>"

        SelectCommand="SELECT * FROM [Departments]"

        ConflictDetection="CompareAllValues"

        DeleteCommand="DELETE FROM [Departments] WHERE [DepartmentID] = @original_DepartmentID AND [DepartmentName] = @original_DepartmentName"

        InsertCommand="INSERT INTO [Departments] ([DepartmentName]) VALUES (@DepartmentName)"

        OldValuesParameterFormatString="original_{0}"

        UpdateCommand="UPDATE [Departments] SET [DepartmentName] = @DepartmentName WHERE [DepartmentID] = @original_DepartmentID AND [DepartmentName] = @original_DepartmentName">

        <DeleteParameters>

            <asp:Parameter Name="original_DepartmentID" Type="Int32" />

            <asp:Parameter Name="original_DepartmentName" Type="String" />

        </DeleteParameters>

        <InsertParameters>

            <asp:Parameter Name="DepartmentName" Type="String" />

        </InsertParameters>

        <UpdateParameters>

            <asp:Parameter Name="DepartmentName" Type="String" />

            <asp:Parameter Name="original_DepartmentID" Type="Int32" />

            <asp:Parameter Name="original_DepartmentName" Type="String" />

        </UpdateParameters>

    </asp:SqlDataSource> 

    <p>

    <asp:Button runat="server" ID="AddDepartment" Text="Добавить кафедру"

            onclick="AddDepartment_Click"></asp:Button>

</p>

</asp:Content> 

<%@ Page Title="Группы" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

    CodeBehind="Groups.aspx.cs" Inherits="DeaneryWebApp._Groups" %> 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent"> 

    <asp:GridView ID="GroupsGridView" runat="server" AllowPaging="True"

        AllowSorting="True" AutoGenerateColumns="False" DataSourceID="GroupsDataSource"

        Width="622px" DataKeyNames="GroupID">

        <Columns>

            <asp:BoundField DataField="GroupName" HeaderText="Группа"

                SortExpression="GroupName" />

            <asp:BoundField DataField="DepartmentName" HeaderText="Кафедра"

                SortExpression="DepartmentName" />

            <asp:CommandField DeleteText="Удалить" EditText="Редактировать"

                ShowDeleteButton="True" ShowEditButton="True" ButtonType="Image"

                CancelImageUrl="~/Images/cancel.png" DeleteImageUrl="~/Images/delete.png"

                EditImageUrl="~/Images/edit.png" UpdateImageUrl="~/Images/update.png" />

        </Columns>

    </asp:GridView>

    <asp:SqlDataSource ID="GroupsDataSource" runat="server"

        ConnectionString="<%$ ConnectionStrings:DeaneryConnectionString %>"

        SelectCommand="SELECT * FROM [Groups]"

        ConflictDetection="CompareAllValues"

        DeleteCommand="DELETE FROM [Groups] WHERE [GroupID] = @original_GroupID AND [GroupName] = @original_GroupName AND [DepartmentName] = @original_DepartmentName"

Информация о работе Разработка системы распределённой обработки данных управления учебным процессом типа «Деканат»