Автор работы: Пользователь скрыл имя, 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
Каждая страницы представляет собой 2 файла – один отвечает за графическое представление страницы, второй за логику работы.
Для отображения данных используется GridView, который после небольших настроек представляет собой отличный инструмент с табличными данными. Каждый GridView имеет свойство DataSource, который позволяет задать источник данных (в нашем случае таблицу из БД SQL Server), после этого происходит так называемое «связывание» данных и представления(data binding), которое позволяет не думать о синхронизации вида и информации т.к. об этом позаботиться логика самого компонента.
DataSource для каждой таблицы представляет собой набор SQL запросов, которые мы выбираем при конфигурировании. Например, в листинге 2 отражен DataSource для таблицы «Кафедры», которые позволяет читать, вставлять, и обновлять данные в соответствующей таблицы, а также осуществлять их проверку.
<asp:SqlDataSource ID="DepartmentsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:
SelectCommand="SELECT * FROM [Departments]"
ConflictDetection="
DeleteCommand="DELETE FROM [Departments] WHERE [DepartmentID] = @original_DepartmentID AND [DepartmentName] = @original_DepartmentName"
InsertCommand="INSERT INTO [Departments] ([DepartmentName]) VALUES (@DepartmentName)"
OldValuesParameterFormatString
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.
DepartmentsDataSource.
DepartmentsGridView.
Листинг 3 – Код для добавления строки в DepartmentsGridView
Для организации поиска по заданным критериям использовался SQL оператор LIKE, который позволяет найти все похожие на операнд записи в столбце.
Например, для поиска студента по фамилии используется следующий SQL запрос: SELECT [LastName], [FirstName], [MiddleName], [GroupName] FROM [Students] WHERE ([FirstName] LIKE '%' + @FirstName + '%'), где @FirstName искомая комбинация для запроса.
Для взаимодействия страницы поиска и страницы выдачи результатов использовался механизм обратного вызова ссылки(PostBackCallURL), который позволяет по событию нажатия кнопки перейти на другую страницу веб сайта, при этом целевой сайт получает часть информации, о том, кто был его предшественником, и сохраняет полученную информацию в объекте PreviousPage. Данный механзим позволяет получить доступ к объявленным свойствам, нашей страницы поиска и получить введенные пользователем данные.
Для динамического создания таблиц используется возможность программно скрывать элементы отображения, и динамически изменять их DataSource. Например, на листинге 4 показан код, который отображает результаты поиска студентов по фамилии.
StudentsByFirstNameData
StudentsGridView.DataSourceID = StudentsByFirstNameDataSource.
StudentsGridView.DataBind();
StudentsGridView.Visible = true;
TeachersGridView.Visible = false;
GroupsGridView.Visible = false;
DepartmentsGridView.Visible = false;
SubjectsGridView.Visible = false;
Листинг 4 – Динамическое формирование таблицы вывода результатов поиска
Стоить
отметить, как работает данная конструкция.
Во время события PageLoad(
При проектировании базы данных основным конструкторским документом является схемы базы данных, которая позволяет наглядно оценить ее содержимое, поля таблиц, связи таблиц, и ключи таблиц. На рисунке 6 показана диаграмма полученной нами базы данных, без внешних ключей.
Рисунок 6 – Структура полученной базы данных
Ранее мы уже упоминали о связывании данных, но не давали графического представления. На рисунке 7 показана обобщенная схема работы связывания данных.
Рисунок 7 – Схема работы связывания данных
Добавление
новых данных
Нет
Да
Редактирование
данных
Нет
Да
Удаление строк
данных
Поиск данных
<%@ Page Title="Кафедры" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Departments.aspx.
<asp:Content
ID="HeaderContent" runat="server" ContentPlaceHolderID="
</asp:Content>
<asp:Content
ID="Content1" runat="server" ContentPlaceHolderID="
<asp:GridView ID="DepartmentsGridView" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False"
DataSourceID="
Width="622px" DataKeyNames="DepartmentID">
<Columns>
<asp:BoundField DataField="DepartmentName" HeaderText="Кафедра"
SortExpression="
<asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/
CancelText="" DeleteImageUrl="~/Images/
EditImageUrl="~/Images/edit.
ShowEditButton="True" UpdateImageUrl="~/Images/
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="DepartmentsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:
SelectCommand="SELECT * FROM [Departments]"
ConflictDetection="
DeleteCommand="DELETE FROM [Departments] WHERE [DepartmentID] = @original_DepartmentID AND [DepartmentName] = @original_DepartmentName"
InsertCommand="INSERT INTO [Departments] ([DepartmentName]) VALUES (@DepartmentName)"
OldValuesParameterFormatString
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">
</p>
</asp:Content>
<%@ Page Title="Группы" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Groups.aspx.cs" Inherits="DeaneryWebApp._
<asp:Content
ID="HeaderContent" runat="server" ContentPlaceHolderID="
</asp:Content>
<asp:Content
ID="Content1" runat="server" ContentPlaceHolderID="
<asp:GridView ID="GroupsGridView" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False"
DataSourceID="
Width="622px" DataKeyNames="GroupID">
<Columns>
<asp:BoundField DataField="GroupName" HeaderText="Группа"
SortExpression="GroupName" />
<asp:BoundField DataField="DepartmentName" HeaderText="Кафедра"
SortExpression="
<asp:CommandField DeleteText="Удалить" EditText="Редактировать"
ShowDeleteButton="True" ShowEditButton="True" ButtonType="Image"
CancelImageUrl="~/Images/
EditImageUrl="~/Images/edit.
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="GroupsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:
SelectCommand="SELECT * FROM [Groups]"
ConflictDetection="
DeleteCommand="DELETE FROM [Groups] WHERE [GroupID] = @original_GroupID AND [GroupName] = @original_GroupName AND [DepartmentName] = @original_DepartmentName"