Главная » Просмотр файлов » Курсовой проект

Курсовой проект (548453), страница 3

Файл №548453 Курсовой проект (Курсовой проект (2007)) 3 страницаКурсовой проект (548453) страница 32015-08-23СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

В случае если запрос будет неправильным или присутствует какая-нибудь ошибка, будет выдано сообщение и при этом указано что за ошибка, как если бы мы делали запрос на полноценной СУБД.

    1. Реализация создания отчетов

Отчеты создаются с помощью стандартного компонента ReportViewer в Microsoft Visual Studio 2005. Он позволяет получать файлы XML, выбирать набор нужных колонок для показа пользователю, отображать их в табличном виде, производить поиск по словам, посылать отчет на печать, а также экспортировать таблицу отчета в Excel.

      1. Создание SQL запроса для отчета

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

Этот SQL запрос будет выглядеть в таком виде:

SELECT Teachers_1.teacher_name AS ФИО_преподавателя, Posts.post_name AS Должность, Degrees.degree_name AS Ученая_степень,

Category.category_name AS Категория, subQueryLections.[Лекции: количество групп] AS Лекции_количество_групп,

SUM(Disciplines_learning_plan_1.week_lections_hours) * Learning_plan.weeks_number AS Лекции_число_часов,

COALESCE (subQuerySeminars.[Семинары: количество групп], 0) AS Семинары_количество_групп,

SUM(Disciplines_learning_plan_1.week_prakt_hours) * Learning_plan.weeks_number AS Семинары_число_часов,

COALESCE (subQueryLabs.[Лабораторные: количество групп], 0) AS Лабораторные_количество_групп,

SUM(Disciplines_learning_plan_1.week_labs_hours) * Learning_plan.weeks_number AS Лабораторные_число_часов,

COALESCE (subQueryKP.[Курсовой проект: количество групп], 0) AS Курсовой_проект_количество_групп,

COALESCE (subQueryKP.[Курсовой проект: число студентов], 0) AS Курсовой_проект_число_студентов,

COALESCE (subQueryTR.[Типовые расчеты: количество групп], 0) AS Типовые_расчеты_количество_групп,

COALESCE (subQueryTR.[Типовые расчеты: число студентов], 0) AS Типовые_расчеты_число_студентов,

SUM(Disciplines_learning_plan_1.consultation) AS Консультации, SUM(Disciplines_learning_plan_1.exams) AS Экзамены,

SUM(Disciplines_learning_plan_1.tests) AS Зачеты, (SUM(Disciplines_learning_plan_1.week_lections_hours)

+ SUM(Disciplines_learning_plan_1.week_prakt_hours) + SUM(Disciplines_learning_plan_1.week_labs_hours)

+ SUM(Disciplines_learning_plan_1.consultation)) * Learning_plan.weeks_number AS Всего_учебных_часов

FROM Disciplines_learning_plan AS Disciplines_learning_plan_1 INNER JOIN

Teachers AS Teachers_1 ON Disciplines_learning_plan_1.teacher_id = Teachers_1.teacher_id INNER JOIN

Posts ON Teachers_1.post_id = Posts.post_id INNER JOIN

Degrees ON Teachers_1.degree_id = Degrees.degree_id INNER JOIN

Category ON Teachers_1.category_id = Category.category_id INNER JOIN

Groups AS Groups_1 ON Disciplines_learning_plan_1.group_id = Groups_1.group_id INNER JOIN

Vid_rasch_rabot ON Disciplines_learning_plan_1.vid_rasch_zadaniya_id = Vid_rasch_rabot.vid_rasch_zadaniya_id INNER JOIN

Learning_plan ON Disciplines_learning_plan_1.id_learning_plan = Learning_plan.id_learning_plan LEFT OUTER JOIN

(SELECT Teachers_3.teacher_id, Teachers_3.teacher_name, COUNT(Disciplines_learning_plan_3.group_id)

AS [Курсовой проект: количество групп], SUM(Groups_3.kol_students) AS [Курсовой проект: число студентов]

FROM Disciplines_learning_plan AS Disciplines_learning_plan_3 INNER JOIN

Teachers AS Teachers_3 ON Disciplines_learning_plan_3.teacher_id = Teachers_3.teacher_id INNER JOIN

Groups AS Groups_3 ON Disciplines_learning_plan_3.group_id = Groups_3.group_id FULL OUTER JOIN

Vid_rasch_rabot AS Vid_rasch_rabot_1 ON

Disciplines_learning_plan_3.vid_rasch_zadaniya_id = Vid_rasch_rabot_1.vid_rasch_zadaniya_id

WHERE (Vid_rasch_rabot_1.vid_rasch_zadaniya_name = 'КП')

GROUP BY Teachers_3.teacher_id, Teachers_3.teacher_name, Vid_rasch_rabot_1.vid_rasch_zadaniya_name) AS subQueryKP ON

Teachers_1.teacher_id = subQueryKP.teacher_id LEFT OUTER JOIN

(SELECT Teachers_3.teacher_id, Teachers_3.teacher_name, COUNT(Disciplines_learning_plan_3.group_id)

AS [Типовые расчеты: количество групп], SUM(Groups_3.kol_students) AS [Типовые расчеты: число студентов]

FROM Disciplines_learning_plan AS Disciplines_learning_plan_3 INNER JOIN

Teachers AS Teachers_3 ON Disciplines_learning_plan_3.teacher_id = Teachers_3.teacher_id INNER JOIN

Groups AS Groups_3 ON Disciplines_learning_plan_3.group_id = Groups_3.group_id FULL OUTER JOIN

Vid_rasch_rabot AS Vid_rasch_rabot_1 ON

Disciplines_learning_plan_3.vid_rasch_zadaniya_id = Vid_rasch_rabot_1.vid_rasch_zadaniya_id

WHERE (Vid_rasch_rabot_1.vid_rasch_zadaniya_name = 'Р')

GROUP BY Teachers_3.teacher_id, Teachers_3.teacher_name, Vid_rasch_rabot_1.vid_rasch_zadaniya_name) AS subQueryTR ON

Teachers_1.teacher_id = subQueryTR.teacher_id LEFT OUTER JOIN

(SELECT Disciplines_learning_plan_2.teacher_id, Teachers_2.teacher_name, COUNT(DISTINCT Groups_2.group_id)

AS [Лабораторные: количество групп]

FROM Disciplines_learning_plan AS Disciplines_learning_plan_2 INNER JOIN

Groups AS Groups_2 ON Disciplines_learning_plan_2.group_id = Groups_2.group_id INNER JOIN

Teachers AS Teachers_2 ON Disciplines_learning_plan_2.teacher_id = Teachers_2.teacher_id

WHERE (Disciplines_learning_plan_2.week_labs_hours > 0)

GROUP BY Disciplines_learning_plan_2.teacher_id, Teachers_2.teacher_name) AS subQueryLabs ON

Teachers_1.teacher_id = subQueryLabs.teacher_id LEFT OUTER JOIN

(SELECT Disciplines_learning_plan_2.teacher_id, Teachers_2.teacher_name, COUNT(DISTINCT Groups_2.group_id)

AS [Семинары: количество групп]

FROM Disciplines_learning_plan AS Disciplines_learning_plan_2 INNER JOIN

Groups AS Groups_2 ON Disciplines_learning_plan_2.group_id = Groups_2.group_id INNER JOIN

Teachers AS Teachers_2 ON Disciplines_learning_plan_2.teacher_id = Teachers_2.teacher_id

WHERE (Disciplines_learning_plan_2.week_prakt_hours > 0)

GROUP BY Disciplines_learning_plan_2.teacher_id, Teachers_2.teacher_name) AS subQuerySeminars ON

Teachers_1.teacher_id = subQuerySeminars.teacher_id LEFT OUTER JOIN

(SELECT Disciplines_learning_plan.teacher_id, Teachers.teacher_name, COUNT(DISTINCT Groups.group_id) AS [Лекции: количество групп]

FROM Disciplines_learning_plan INNER JOIN

Groups ON Disciplines_learning_plan.group_id = Groups.group_id INNER JOIN

Teachers ON Disciplines_learning_plan.teacher_id = Teachers.teacher_id

WHERE (Disciplines_learning_plan.week_lections_hours > 0)

GROUP BY Disciplines_learning_plan.teacher_id, Teachers.teacher_name) AS subQueryLections ON

Teachers_1.teacher_id = subQueryLections.teacher_id

GROUP BY Teachers_1.teacher_name, Posts.post_name, Degrees.degree_name, Category.category_name, Learning_plan.weeks_number,

subQueryLections.[Лекции: количество групп], subQuerySeminars.[Семинары: количество групп],

subQueryLabs.[Лабораторные: количество групп], subQueryTR.[Типовые расчеты: количество групп],

subQueryTR.[Типовые расчеты: число студентов], subQueryKP.[Курсовой проект: количество групп],

subQueryKP.[Курсовой проект: число студентов]



Данный запрос был сделан средствами MS Visual Studio 2005, а также личным редактированием 

      1. Интерфейс отчета

Когда пользователь нажимает на кнопку создания отчета в главном MDI окне, происходит выполнение SQL запроса, результатом которого являются данные будущего отчета. Эти данные сохраняются в форме XML документа, и уже по этим данным ReportViewer отображает отчет в понятной форме.

В первую очередь, вызывается класс OptionsDialogReport. Пользователю показывается следующее окно,



в котором он может выбрать нужные поля для отображения их в отчете. В нашем примере, выберем все поля и нажмем кнопку «ок».

Появляется следующее окно – это окно является потомком класса BaseReport – базового класса создания отчетов. В этом окне есть возможность переопределить набор отображаемых полей (колонок) в меню «Опции», а также экспортировать данные в Excel, где пользователь сможет по своему желанию изменить внешний вид отчета. Например, изменить заголовок.



  1. Приложение

Приведем исходный код базового класса редактирования таблиц БД (BaseFormEditor)

namespace Mpei.Editors

{

public partial class BaseFormEditor : Form

{

public BaseFormEditor()

{

// Инициализирует компоненты фомры

InitializeComponent();

// Заполняет таблицу

init();

}



// ----------- Методы, которые надо перекрыть ------------------------------------------

/** Возвращает данные таблицы */

virtual protected System.Data.DataTable getDataTable()

{

MessageBox.Show("Перекройте метод getDataTable()!");

return null;

}

/** Возвращает заголовок формы */

virtual protected String getFormCaption()

{

MessageBox.Show("Перекройте метод getFormCaption()!");

return "Базовая форма";

}



/** Сохраняет данные для всех таблиц. Должен быть перекрыт в потомках! */

virtual protected void updateTables()

{

MessageBox.Show("Перекройте метод updateTables()!");

}



/** Заполняет таблицы данными */

virtual protected void fillTables()

{

MessageBox.Show("Перекройте метод fillTables()!");

}



/** Инициализирует таблицы */

virtual protected void initDataTable()

{

MessageBox.Show("Перекройте метод initDataTable()!");

}



/** Возвращает колонки таблицы */

virtual protected DataGridViewColumn[] getTableColumns()

{

MessageBox.Show("Перекройте метод getTableColumn()!");

return new DataGridViewColumn[0];

}



virtual protected String getMainSourceName()

{

MessageBox.Show("Перекройте метод getMainSourceName()!");

return "";

}



// ----------- Обработка событий фрейма ------------------------------------------------

/** Нажатие на кнопку "Применить" */

Характеристики

Тип файла
Документ
Размер
474,5 Kb
Тип материала
Высшее учебное заведение

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6461
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее