Главная » Просмотр файлов » maran program engineering

maran program engineering (830029), страница 19

Файл №830029 maran program engineering (Маран Программная инженерия) 19 страницаmaran program engineering (830029) страница 192021-02-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Повторение табельных номеров не допускается, поэтому будет удален один студент или ни одного.CREATE PROCEDURE dbo.Del( @par1 char(50))--входной параметр без значения по умолчаниюAS--удалить студента с заданным табельным номером102DELETE FROM Students Where TabNum=@par1RETURNДобавление данных. Приводим простейший вариант этого оператора, внем должны быть заданы значения для всех полей, и в INTO они должны бытьв такой последовательности, как в таблице.CREATE PROCEDURE dbo.INSRT(@ng char(10), -- номер группы@sp VarChar(50)) -- специальностьASINSERT INTO Groups Values(@ng, @sp)Изменение данныхCREATE PROCEDURE dbo.Updte(@TabNum1 char(10), -- табельный номер@f1 varchar(50)) --фамилияAS--поменять фамилию студента с заданным табельным номеромUPDATE Students SET Fam=@f1 WHERE TabNum=@TabNum1RETURNВсе хранимые процедуры обновления данных будут приведены в исполнение немедленно, без какого-либо предупреждения, если они только не противоречат заложенным в базу данных ограничениям.

В случае такой необходимости это следует предусмотреть в клиентской части.Функции. Функция, возвращающая одно значение.CREATE FUNCTION dbo.Scal(@par1 int ) --входной параметрRETURNS int-–тип возвращаемого значенияASBEGINDECLARE @n int-- локальная переменнаяSET @n=(SELECT COUNT(*) -- количество студентов,-- ростом выше заданногоFROM StudentsWHERE Rost>@par1)RETURN @n-- возвращать @nENDФункции, возвращающие таблицу.Функция, состоящая из одного оператора.CREATE FUNCTION dbo.Function2( @par1 int, @par2 int )RETURNS TABLE-- возвращает таблицуAS-- вывести фамилии и имена студентов,103-- массой тела в заданном интервалеRETURN SELECT Fam, Name1 FROM StudentsWHERE Ves BETWEEN @par1 AND @par2Функция общего вида.

В функции задана структура таблицы, которая затем заполняется данными.CREATE FUNCTION dbo.Function3( @par1 DateTime)RETURNS @tabl TABLE (Fam1 varchar(20),Nm Varchar(20))AS-- Вывести фамилии и имена студентов,--родившийся после заданной даты.BEGININSERT INTO @tablSELECT Fam,Name1 FROM StudentsWHERE DataR>@par1RETURN5.5.2. Структура проектаВ созданном для работы с базами данных проекте предусмотрены следующие возможности:• Просмотр таблиц базы данных с возможностью изменения или без этого.• Извлечение данных с помощью хранимых процедур и функций.• Внесение изменений с помощью хранимых процедур.• Использование хранимых данных в качестве исходных при решении задач.• Запись в базу данных результатов решения задач.Создаем новый проект WindowsForms.

По умолчанию будет создано SDIприложение. Структура меню (создание меню было рассмотрено выше).ФайлВыходПросмотрТаблицаРедактированиеИзвлечениеданныхСкалярныеТабличныеИзменениеданныхДобавлениеОбработкаПолучениерезультатаИзменениезначенийУдалениеДля связывания проекта с источником данных используем компонентBindingSource из палитры Данные (Data).1. Определим значение его свойства DataSource.

Для этого имеется сериядиалоговых окон, в которых по очереди выбираем базу данных, наборданных, создадим новое подключение, выберем SQLServer, имя сервера и имя базы данных и подключим все компоненты, предлагаемые вдиалоговом окне для этого. В нашем случае — все перечисленные выше таблицы, представление, хранимые процедуры и функции.1042. Определим значения его свойства DataMember, оно имеет выпадающий список, в который включены наши две таблицы, представление ифункции, возвращающие таблицу. Всех их по очереди и подключим.В результате внизу под формой появятся следующие компоненты:Data0512Set — набор данных, который представляет в проекте всю базу данных;studentstableAdapter, groupstableadapter, famSpectableAdapter, function2TableAdapter, function3TableAdapter — все адаптеры обеспечивают связь с соответствующей частью базы данных.

Поменяем у всех названных компонентов атрибутдоступа (Modifiers) на public, чтобы обеспечить доступ к ним из других форм.В программном модуле созданного окна внесем следующие дополнения:public partial class Form1 : Form{public static Data0512DataSet ds;//представляет базу данныхpublic staticData0512DataSetTableAdapters.QueriesTableAdapter qa;// представляет запросы, его назначение будет видно позжеpublic Form1(){InitializeComponent();ds = new Data0512DataSet(); //запуск конструкторовqa = new Data0512DataSetTableAdapters.QueriesTableAdapter();}private void выходToolStripMenuItem_Click(object sender,EventArgs e){Close(); //выход из приложения}... Класс Form1 продолжается!После этих подготовительных действий займемся созданием и запуском форм.5.5.3. Просмотр данных без измененийФорма для просмотра таблиц базы данных (рис. 5.9) без возможностивнесения изменений (точнее, на экране изменения ввести можно, но они не будут сохранены).

Форма показана после нажатия кнопки «Студенты» и показывает эту таблицу.105Рис. 5.9Программа этой формыpublic partial class Form2 : Form{public Form1 f1; //для связи с формой Form1public Form2(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){ // извлечение данных из таблицы Students,//передача только в одну сторонуdataGridView1.DataSource =f1.studentsTableAdapter.GetData();}private void button2_Click(object sender, EventArgs e){dataGridView1.DataSource =f1.groupsTableAdapter.GetData();}private void button3_Click(object sender, EventArgs e){dataGridView1.DataSource =f1.famSpecTableAdapter.GetData();}private void Form2_Load(object sender, EventArgs e){ // При каждом открытии этой формы адаптер загружается// заново, чтобы отражать последние измененияf1.studentsTableAdapter.Fill(f1.data0512DataSet.Students);f1.groupsTableAdapter.Fill(f1.data0512DataSet.Groups);} }106Создание и открытие этой формы из главной формы, форма модальная для предотвращения внесения изменений в данные во время просмотра.private void таблицаToolStripMenuItem_Click(object sender,EventArgs e){Form2 f2;f2 = new Form2();f2.f1 = this; //Передача сообщения в другой классf2.ShowDialog();}5.5.4.

Просмотр и изменение данныхДля обеспечения изменений данных в таблицах Students и Groups необходимо организовать прямую связь между самими таблицами в базе данных и ихпредставлениями на форме. Для этого нанесем на Form1 еще два компонентаBindingSource, свяжем их с базой данных, как было описано выше, но на последней стадии установления связи выберем из предложенных только по однойтаблице. Получим компоненты BindingSource2 и BindingSource3 (атрибут доступа у обоих должен быть public), но в их свойствах DataMember выберемтолько Students и Groups.

Форма для редактирования таблиц представлена нарис. 5.10, форма показана после нажатия кнопки «Показать студент».Рис. 5.10Кнопки изменения при открытии формы «серые» и откроются только после открытия соответствующей таблицы. Программный модуль этой формы:public partial class Form3 : Form{public Form1 f1;//для связис Form1public Form3(){InitializeComponent();}private void button1_Click(object sender, EventArgs e)107{ // связь с таблицей Students через bindingSource2dataGridView1.DataSource = f1.bindingSource2;button2.Enabled = true;button4.Enabled = false;}private void button2_Click(object sender, EventArgs e){ // сохранение внесенных измененийf1.studentsTableAdapter.Update(f1.data0512DataSet.Students);}private void button3_Click(object sender, EventArgs e){ // связь с таблицей Students через bindingSource3dataGridView1.DataSource = f1.bindingSource3;button4.Enabled=true;button2.Enabled=false;}private void button4_Click(object sender, EventArgs e){// сохранение внесенных измененийf1.groupsTableAdapter.Update(f1.data0512DataSet.Groups);}} }Открытие этой формы:private void представлениеToolStripMenuItem_Click(object sender, EventArgs e){Form3 f3;f3 = new Form3();f3.f1 = this;f3.ShowDialog();}5.5.5.

Извлечение данныхРеализация извлечения данных зависит от того, будет извлечено однозначение (с помощью хранимой процедуры или функции, возвращающей скалярное значение) или целая таблица (с помощью функции). Форму Form4 мы неприводим ввиду ее простоты: на ней только поле для ввода одного числовогозначения, две командные кнопки и поле для вывода результата. Ее модуль приведен ниже:public partial class Form4 : Form{108public Form4(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){ // qa статическая переменная,// можем обратиться через имя классаint? k1, k2;k2=null;k1 = Int32.Parse(textBox1.Text);Form1.qa.CountStudents(k1, ref k2);/* Вызов хранимой процедуры CountStudents, второйпараметр выходной, поэтому аргумент должен иметьатрибут ref, но такие аргументы должныиметь начальное значение.*/label1.Text = "" + k2; ;}private void button2_Click(object sender, EventArgs e){int? k1, k2;k1 = Int32.Parse(textBox1.Text);k2 = Form1.qa.Scal(k1);// Вызов функции Scal, возвращающую одно значениеlabel1.Text = "" + k2; ;}} }Для вывода извлеченных функцией таблиц предусмотрена Form5(рис.

5.11) форма показана после вызова функции function2 (Верхняя кнопка).Рис. 5.11Модуль этой формы:public partial class Form5 : Form{109public Form1 f1;public Form5(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){ //вызов функции function2int k1,k2;k1 = Int32.Parse(textBox1.Text);k2 = Int32.Parse(textBox2.Text);dataGridView1.DataSource =f1.function2TableAdapter.GetData(k1,k2);}private void button2_Click(object sender, EventArgs e){ //вызов функции function3DateTime d1;d1 = Convert.ToDateTime(textBox3.Text);dataGridView1.DataSource =f1.function3TableAdapter.GetData(d1);}}Открытие этой формы традиционное, и мы его не приводим.5.5.6. Изменение данных хранимыми процедурамиВ данном приложении новые значения будут введены с экрана. Таким жеобразом можно записать в базу данных и результаты вычислений.

Рассмотримтри вида изменений:• Добавление новой записи.• Изменение полей записи.• Удаление записи.Для выполнения всех названных операций создана Form6 (рис. 5.12).Рис. 5.12110Его модуль:public partial class Form6 : Form{public Form6(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){ // добавление записи в Groupsstring sgr, ssp;sgr=textBox1.Text;ssp=textBox2.Text;try{ //Проверим, не возникла ли исключительная ситуация.// Например, при повторении ключей.Form1.qa.INSRT(sgr, ssp);//Запуск хранимой процедуры INSRTtextBox1.Text = "";textBox2.Text = "";}catch{MessageBox.Show("Некорректные данные, добавление невозможно");}}private void button2_Click(object sender, EventArgs e){string s1;DataRow dr;s1 = textBox3.Text;try{dr = f1.data0512DataSet.Students.FindByTabNum(s1);/* Проверим, имеется ли такой студент.Если нет - возникает исключительная ситуация.Если да - спросим "Надо ли удалить?"*/if (DialogResult.Yes == MessageBox.Show(this, "Удалить"+dr["Fam"]+" " +dr["Name1"]+"?","Подтверждение удаления", MessageBoxButtons.YesNo))111Form1.qa.Del(s1);textBox3.Clear();f1.studentsTableAdapter.Fill(f1.data0512DataSet.Students);// Обновим представление таблицы в нашем приложении}catch{MessageBox.Show("Такого студента нет");}}private void button3_Click(object sender, EventArgs e){string s1, s2;DataRow dr;s1 = textBox4.Text;s2 = textBox5.Text;try{dr = f1.data0512DataSet.Students.FindByTabNum(s1);/*Проверим, имеется ли такой студентЕсли нет - возникает исключительная ситуацияЕсли да - спросим "Надо ли менять фамилию?"*/if (DialogResult.Yes == MessageBox.Show(this,"Студент "+dr["Fam"]+" "+dr["Name1"]+".

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

Тип файла
PDF-файл
Размер
6,76 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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