Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика.госы.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.22 Mб
Скачать
  1. Класс «Почтовый адрес». Создать и уничтожить объекты этого класса. Поиск по заданным критериям и вывод результатов на экран (по улице, по району).

С++

// Pochta.h

#include <iostream>

#include <iomanip>

using namespace std;

const int l_name = 30;

class Pochta {

public:

Pochta (int lName = 30);

~ Pochta ();

// операция извлечения (ввода)

friend istream& operator >>(istream&, Pochta &);

// операция вставки (вывода)

friend ostream& operator <<(ostream&, Pochta &);

public:

char* pName;

int group;

int mark[5];

};

// Pochta.cpp

#include " Pochta.h"

#include "GetFunc.h"

Pochta:: Pochta (int lName) { pName = new char[lName + 1]; }

Pochta::~ Pochta () { if (pName) delete [] pName; }

// операция извлечения (ввода)

istream& operator >> (istream& in, Pochta & ob) {

cout << "\nVvedite dannie v formate" << endl;

cout << "Pochtovii Adres <Enter>:"

<< endl;

in.getline (ob.pName, l_name);

return in;

}

// операция вставки (вывода)

ostream& operator << (ostream& out, Pochta & ob) {

out << setw(30) << setiosflags(ios::left);

out << ob.pName << " ";

return out;

}

  1. Класс «Комплексные числа». Операция сложения/умножения.

код на C# Комплексные числа public partial class Form1 : Form { public Form1() { InitializeComponent(); } int x1, x2, y1, y2; private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e)//сложение { x1 = Convert.ToInt32(textBox1.Text); y1 = Convert.ToInt32(textBox2.Text); x2 = Convert.ToInt32(textBox3.Text); y2 = Convert.ToInt32(textBox4.Text); textBox5.Text = (x1 + x2).ToString() + "+i" + (y1 + y2).ToString(); } private void button2_Click(object sender, EventArgs e)//умножение { x1 = Convert.ToInt32(textBox1.Text); y1 = Convert.ToInt32(textBox2.Text); x2 = Convert.ToInt32(textBox3.Text); y2 = Convert.ToInt32(textBox4.Text); textBox5.Text = (x1*x2 - y1*y2).ToString() + "+i" + (y1*x2 + x1*y2).ToString(); }}

  1. Структура прайс (название товара; магазин; цена). Программа должна: 1) ввод с клавиатуры данных в массив типа прайс; 2) вывести информацию о товаре магазина, введенного с клавиатуры (если данные введены некорректно – соответствующее сообщение).

C#

Структура Price public partial class Form1 : Form { public Form1() { InitializeComponent(); } struct Price//описание структуры { public string name, shop; public int price; public Price(string name, string shop, int price) { this.price = price; this.name = name; this.shop = shop; } } List<Price> list = new List<Price>(); private void button1_Click(object sender, EventArgs e)//добавление записи { list.Add(new Price(textBox1.Text, textBox2.Text, Convert.ToInt32(textBox3.Text))); } private void button2_Click(object sender, EventArgs e)//поиск { int i = 0, count = 0; while (i != list.Count) { if (list[i].shop == textBox4.Text) { dataGridView1.Rows.Add(list[i].name,list[i].price); count++; } i++; } if (count == 0) { MessageBox.Show("Склад магазина пуст!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }

  1. Структура «Аэрофлот» (название пункта назначения; номер рейса; тип самолета). Программа должна: 1) ввод данных в массив типа «Аэрофлот»; 2) вывод номера рейса и типа самолета, влетающего в пункт назначения, введенного с клавиатуры.

C#

Структура Samolet public partial class Form1 : Form { public Form1() { InitializeComponent(); } struct Price//описание структуры { public string name, nomer; public int samolet; public Price(string name, string shop, int price) { this.samolet = samolet; this.name = name; this.nomer = nomer; } } List<Samolet> list = new List<Samolet>(); private void button1_Click(object sender, EventArgs e)//добавление записи { list.Add(new Samolet(textBox1.Text, textBox2.Text, Convert.ToInt32(textBox3.Text))); } private void button2_Click(object sender, EventArgs e)//поиск { int i = 0, count = 0; while (i != list.Count) { if (list[i].nomer == textBox4.Text) { dataGridView1.Rows.Add(list[i].name,list[i].samolet); count++; } i++; } if (count == 0) { MessageBox.Show("Проверьте правильно ли введен номер!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }

SQL

Select Name_cl

from CLIENT, ZAKAZ

where (CLIENT.Client=ZAKAZ.Client_id)

And ZAKAZ.Tovar=’Книга’

Order by Name_cl ASC

WHERE - предложение команды SELECT и других DML команд, которое позволяет вам устанавливать предикаты, условие которых может быть или верным или неверным для любой строки таблицы. Команда извлекает только те строки из таблицы, для которых такое утверждение верно. Пример: SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’; - такой запрос выведет только те строки, которые будут соответствовать условию WHERE, а именно все строки в которых столбец user_name имеет значение Алексей. ORDER BY - условие для сортировки выбранных строк. Имеет 2 критерия ASC и DESC. ASC (сортировка от А до Я или от 0 до 9)  DESC (противоположно от ASC).  Пример: SELECT id, city, birth_day FROM users_base ORDER BY user_name ASC; - такой запрос выведет значения отсортированные по столбцу user_name от А до Я (A-Z; 0-9) Также это условие можно использовать совместно с условием WHERE.  Пример: SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’ ORDER BY id ASC; DISTINCT (Отличный) — аргумент, который обеспечивает вас способом устранять двойные значения из вашего предложения SELECT. Т.е. если у вас имеются повторные значения в столбце, допустим, user_name то DISTINCT выведет вам только одно, например у вас в базе есть 2 человека по имени Алексей то запрос с использованием функции DISTINCT выведет вам только 1 значение, которое встретит первым...  Пример: SELECT DISTINCT user_name FROM users_base; - такой запрос выведет нам значения всех записей в столбце user_name но они не будут повторяться, т.е. если вы имели бесконечное число повторяющихся значений, то они показаны не будут…

AND - берет два Буля (в форме A AND B) как аргументы и оценивает их по отношению к истине, верны ли они оба. Пример: SELECT * FROM users_base WHERE city = ‘Ростов’ AND user_name = ‘Александр’; - выведет все значения из таблицы где в одной строке встречается название города (в данном случае Ростов и имя пользователя Александр.

OR - берет два Буля (в форме A OR B) как аргументы и оценивает на правильность, верен ли один из них. SELECT * FROM users_base  WHERE city = ‘Ростов’ OR user_name = ‘Александр’; - выведет все значения из таблицы где в строке встречается название города Ростов или Имя пользователя Александр. NOT - берет одиночный Булев (в форме NOT A) как аргументы и заменяет его значение с неверного на верное или верное на неверное. SELECT * FROM users_base  WHERE city = ‘Ростов’ OR NOT user_name = ‘Александр’; - выведет все значения из таблицы где в одной строке встретится имя города Ростов или имя пользователя не будет ровно Александр. IN - определяет набор значений в которое данное значение может или не может быть включено. SELECT * FROM users_base  WHERE city IN ( ‘Владивосток’, ‘Ростов’); - такой запрос выведет все значения из таблицы в которых встретятся наименования указанных городов в столбце city

Between - похож на оператор IN. В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться что делает предикат верным. SELECT * FROM users_base  WHERE id BETWEEN 1 AND 10; - выводит все значения из таблицы которые будут находиться в диапазоне от 1 до 10 в столбце id

COUNT - производит номера строк или не NULL значения полей, которые выбрал запрос. SELECT COUNT (*) FROM users_base ; - выведет количество строк в данной таблице. SELECT COUNT (DISTINCT user_name) FROM users_base ; - выведет кол-во строк с именами пользователей (не повторяющихся)

SUM - производит арифметическую сумму всех выбранных значений данного поля. SELECT SUM (id) FROM users_base ; - выведет сумму значений всех строк столбца id.

AVG - производит усреднение всех выбранных значений данного поля. SELECT AVG (id) FROM users_base ; - выведет среднее значение всех выбранных значений столбца id  MAX - производит наибольшее из всех выбранных значений данного поля. MIN - производит наименьшее из всех выбранных значений данного поля.

Отчёты наши по Лаптевой:

2 Лаба

  1. Произвести вход в систему SQL Plus.

  2. Произвести соединение с сервером.

  3. Создать таблицу STUDENT с полями id_stud (идентификатор), surname (фамилия), name (имя), email (электронный адрес).

  4. Ввести в таблицу следующие данные:

id_stud

surname

name

email

100

Иванов

Сергей

qwert@mail.ru

200

Сидоров

Иван

asd123@rambler.ru

300

Иванчиков

Сергей

zx123@hotbox.ru

  1. Просмотреть структуру таблицы.

  2. Просмотреть содержимое таблицы. В случае отображения «шапки» таблицы через определенное количество строк, необходимо использовать команду – set pagesize 100.

  3. Добавить новые поля: gruppa, stipend (с двумя знаками после запятой), birthday (дата рождения).

  4. Установить всем студентам стипендию 1200,50 р.

  5. Добавить даты рождения студентов: 12-09-1989, 30-04-1988, 23-07-1989.

  6. Изменить стипендию у студента Сидорова, увеличив ее в 1,5 раза.

  7. Создать таблицу STUDENT1, которая является точной копией таблицы STUDENT .

  8. Создать уникальный индекс для таблицы STUDENT.

  9. Создать таблицу OZENKA с полями: дисциплина, оценка. При необходимости создать ключевое поле. Заполнить таблицу.

  10. Вывести на экран информацию о Петрове и всех его оценках.

  11. Вывести на экран всю информацию из БД.

Код программы:

SQL> CREATE TABLE student (id_stud int, surname varchar(30), name varchar(30), mail varchar(30));

Table created.

SQL> insert into student values(100, 'Ivanov','Sergey','qwert@mail.ru');

1 row created.

SQL> insert into student values(200, 'Sidorov','Ivan','asd123@rambler.ru');

1 row created.

SQL> insert into student values(300, 'Ivanchikov','Sergey','zx123@horbox.ru');

1 row created.

SQL> select * from student

2 ;

ID_STUD SURNAME NAME

---------- ------------------------------ ------------------------------

MAIL

------------------------------

100 Ivanov Sergey

qwert@mail.ru

200 Sidorov Ivan

asd123@rambler.ru

300 Ivanchikov Sergey

zx123@horbox.ru

SQL> set pagesize 100;

SQL> select * from student;

ID_STUD SURNAME NAME

---------- ------------------------------ ------------------------------

MAIL

------------------------------

100 Ivanov Sergey

qwert@mail.ru

200 Sidorov Ivan

asd123@rambler.ru

300 Ivanchikov Sergey

zx123@horbox.ru

SQL> alter table student add (gruppa varchar(10), stipend number(7,2), birthday

2 date);

Table altered.

SQL> update student set stipend=1200.50;

3 rows updated.

SQL> update student set birthday=to_date('1989/09/12','yyyy/mm/dd') where id_stu

d=100;

1 row updated.

SQL> update student set birthday=to_date('1988/04/30','yyyy/mm/dd') where id_stu

d=200;

1 row updated.

SQL> update student set birthday=to_date('1989/07/23','yyyy/mm/dd') where id_stu

d=300;

1 row updated.

SQL> UPDATE student

2 SET stipend=1200.50*1.5

3 WHERE surname='Sidorov';

1 row updated.

SQL> CREATE TABLE student1 AS

2 SELECT *

3 FROM student

4 ;

Table created.

SQL> alter table student add primary key (id_stud);

Table altered.

SQL> CREATE TABLE ozenka(

2 surname varchar(40),

3 disciplina varchar(40),

4 ocenka int

5 );

Table created.

SQL> INSERT INTO ozenka VALUES('Ivanov','IT', 4);

1 row created.

SQL> INSERT INTO ozenka VALUES('Sidorov','Visio', 5);

1 row created.

SQL> INSERT INTO ozenka VALUES('Ivanchikov','Oracle', 5);

1 row created.

SQL> INSERT INTO ozenka VALUES('Ivanov','Maya', 5);

1 row created.

SQL> INSERT INTO ozenka VALUES('Sidorov','Pascal', 3);

1 row created.

SQL> INSERT INTO ozenka VALUES('Ivanchikov','Visio', 4);

1 row created.

SQL> INSERT INTO ozenka VALUES('Ivanov','C++', 4);

1 row created.

SQL> INSERT INTO ozenka VALUES('Sidorov','C#', 5);

1 row created.

SQL> INSERT INTO ozenka VALUES('Ivanchikov','C Builder', 4);

1 row created.

SQL> select * from student, ozenka where student.surname='Ivanov' and ozenka.fam

iliya='Ivanov';

SQL> select ozenka.familiya, ozenka.disciplina, ozenka.ocenka

2 from ozenka

3 where ozenka.familiya='Ivanov';

3лаба

Задание А.

  1. Проанализировать задание категории В.

  2. Изменить структуру таблиц согласно заданию.

  3. Добавить записи в таблицы.

  4. Построить схему данных из таблиц СТУДЕНТ, ОЦЕНКА и ДИСЦИПЛИНА.

Задание В. Ответить на следующие вопросы.

  1. Учится ли в данном университете конкретный человек (например, Петрова Алина Сергеевна)?

  2. В какой группе? Какой специальности?

  3. Вывести на экран номера и названия всех специальностей в алфавитном порядке?

  4. Входит ли он в число студентов, у которых стипендия в диапазоне от 600 до 1000 рублей?

  5. Вывести на экран студентов конкретной группы в обратном порядке фамилий?

  6. Получить список студентов, сдавших все экзамены в данную сессию.

  7. Получить список студентов конкретной группы, не явившихся в день экзамена.

  8. Кто из студентов не сдал тот или иной экзамен в январе?

  9. Какую сумму необходимо выделить на группу для выдачи стипендии?

  10. Вывести информацию о среднем арифметическом балле всех экзаменов студентов?

Код программы:

SQL> alter table student ADD(spec char(20));

Table altered.

SQL> UPDATE student SET spec = 'PMI' WHERE id_stud=200;

1 row updated.

SQL> UPDATE student SET spec = 'FMO' WHERE id_stud=300;

1 row updated.

SQL> UPDATE student SET spec = 'PI' WHERE id_stud=100;

1 row updated.

SQL> CREATE TABLE spec(

2 id_spec int,

3 name char(20));

SQL> INSERT INTO spec VALUES(1,'PI');

1 row created.

SQL> INSERT INTO spec VALUES(2,'FMO');

1 row created.

SQL> INSERT INTO spec VALUES(3,'PMI');

1 row created.

Table created.

1)

SQL> select count(*) from student WHERE name = 'Sergey' and surname = 'Ivanov';

COUNT(*)

----------

1

2)

SQL> SELECT GRUPPA, SPEC FROM student WHERE name = 'Sergey' and surname ='Ivanov';

GRUPPA SPEC

---------- --------------------

PIB-301 PI

3)

SQL> SELECT * FROM spec ORDER BY name;

ID_SPEC NAME

---------- --------------------

2 FMO

1 PI

3 PMI

4)

SQL> SELECT COUNT(*) FROM student WHERE name = 'Sergey' and surname='Ivanov' and

stipend BETWEEN 600 AND 1000;

COUNT(*)

----------

0

5)

SQL> select * from student WHERE gruppa = 'PIB-301' ORDER BY surname DESC;

ID_STUD SURNAME NAME

---------- ------------------------------ ------------------------------

MAIL GRUPPA STIPEND BIRTHDAY

------------------------------ ---------- ---------- ---------

SPEC

--------------------

400 Petrov Petr

mail@mail.ru PIB-301 1200.5 21-MAY-89

PI

100 Ivanov Sergey

qwert@mail.ru PIB-301 1200.5 12-SEP-89

PI

6)

SQL> select DISTINCT student.surname from student, ozenka where student.surname=

ozenka.surname and ozenka.ocenka>2;

SURNAME

------------------------------

Ivanov

Ivanchikov

Sidorov

7)

SQL> UPDATE ozenka SET ocenka = NULL WHERE surname='Ivanov' and DISCIPLINA='IT';

SQL> SELECT surname FROM ozenka WHERE ocenka IS NULL

2 ;

SURNAME

----------------------------------------

Ivanov

8)

SQL> SELECT surname FROM ozenka WHERE ocenka=2 OR ocenka IS NULL;

SURNAME

----------------------------------------

Ivanov

Sidorov

9)

SQL> SELECT SUM(stipend) FROM student;

SUM(STIPEND)

------------

4201.75

10)

SQL> SELECT AVG(ocenka) FROM ozenka;

AVG(OCENKA)

-----------

4

4лаба

  1. Задать определение переменных beg, end как начальное значение и конечное значение. При этом использовать ключевое слово define.

  2. Определить студентов, которые родились в период между начальным и конечным датовыми значениями. Использовать как макроподстановки через символ ‘&’.

  3. Вывести данные о студентах, которые учатся в определенных группах. Использовать список групп (ключевое слово IN).

  4. Задать новую переменную total_sum. Определить ее как сумму годового дохода (месячная_стипендия*12).

  5. Вывести на экран список студентов с годовым доходом.

  6. Вывести на экран список студентов с годовым доходом в алфавитном порядке.

  7. Вычислить сумму стипендии для каждой группы студентов.

  8. Вычислить среднюю стипендию для каждой группы студентов.

  9. Найти минимальную стипендию среди всех стипендий.

  10. Найти разницу между средней стипендией и самой минимальной.

  11. Сколько студентов в группе pi-401?

  12. Вывести группы, в которых более 15 человек.

Из двух таблиц:

  1. Вывести студентов, у которых средний балл = 4,5.

  2. Вывести студентов, у которых средний балл = 4,5 в обратном алфавитном порядке.

  3. Вывести студентов с суммарными баллами по всем предметам.

  4. Вывести средний балл успеваемости каждой группы.

Код программы:

1)

SQL> define beg=to_date('1988/09/12','yyyy/mm/dd')

SQL> define end=to_date('1990/09/12','yyyy/mm/dd')

2)

SQL> SELECT surname FROM student WHERE birthday BETWEEN &beg and &end;

old 1: SELECT surname FROM student WHERE birthday BETWEEN &beg and &end

new 1: SELECT surname FROM student WHERE birthday BETWEEN to_date('1988/09/12'

,'yyyy/mm/dd') and to_date('1990/09/12','yyyy/mm/dd')

SURNAME

------------------------------

Ivanov

Ivanchikov

3)

SQL> select * from student WHERE gruppa IN ('PIB-301','FMO-301');

ID_STUD SURNAME NAME

---------- ------------------------------ ------------------------------

MAIL GRUPPA STIPEND BIRTHDAY

------------------------------ ---------- ---------- ---------

SPEC

--------------------

100 Ivanov Sergey

qwert@mail.ru PIB-301 1200.5 12-SEP-89

PI

300 Ivanchikov Sergey

zx123@horbox.ru FMO-301 1200.5 23-JUL-89

FMO

4)

SQL> define total_sum=12;

SQL> SELECT surname, stipend*&total_sum FROM student;

old 1: SELECT surname, stipend*&total_sum FROM student

new 1: SELECT surname, stipend*12 FROM student

SURNAME STIPEND*12

------------------------------ ----------

Ivanov 14406

Sidorov 21609

Ivanchikov 14406

5)

SQL> SELECT surname, stipend*&total_sum FROM student ORDER BY surname;

old 1: SELECT surname, stipend*&total_sum FROM student ORDER BY surname

new 1: SELECT surname, stipend*12 FROM student ORDER BY surname

SURNAME STIPEND*12

------------------------------ ----------

Ivanchikov 14406

Ivanov 14406

Sidorov 21609

6)

SQL> SELECT SUM(stipend) FROM student GROUP BY gruppa;

SUM(STIPEND)

------------

1200.5

1800.75

1200.5

7)

SQL> SELECT surname, stipend*&total_sum FROM student ORDER BY surname;

old 1: SELECT surname, stipend*&total_sum FROM student ORDER BY surname

new 1: SELECT surname, stipend*12 FROM student ORDER BY surname

SURNAME STIPEND*12

------------------------------ ----------