- •Аннотация.
- •Оглавление
- •Введение.
- •Цель курсовой работы.
- •Задание на выполнение курсовой работы.
- •Концептуальная модель данных.
- •Логическая структура данных.
- •Этапы реализации системы.
- •6.1. Запросы.
- •6.2. Индексы.
- •6.3. Роли.
- •6.4. Процедуры.
- •6.5. Триггеры.
- •Руководство пользователя-клиента.
- •Руководство инструктора.
- •Руководство администратора.
- •Список литературы
- •Листинг программ. Интерфейс для пользователя hikingtrips. Файл Form2.Cs
- •Файл Form1.Cs
- •Файл Form4.Cs
- •Файл Form3.Cs
- •Файл Form5.Cs
- •Файл Form6.Cs
- •Листинг программ. Интерфейс для инструктора hikingtripsinstructors. Файл Form1.Cs
- •Файл Form2.Cs
Файл Form2.Cs
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Drawing.Printing;
using System.Drawing;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Reflection.Metadata;
namespace hikingtripsforinstructors
{
public partial class Form2 : Form
{
private const string connectionString = "server=localhost;database=hikingtrips;uid=root;password=Fuckingpassword2;";
int selectedIndex1;
int selectedIndex2;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
LoadRoutes();
}
private void button6_Click(object sender, EventArgs e)
{
var pdfPath = "C:\\Users\\ACER\\Desktop\\PeopleOnRoutes.pdf";
peopleOnRoutesPDF();
MessageBox.Show($"PDF with the graph was successfully saved {pdfPath}");
}
private void button2_Click(object sender, EventArgs e)
{
extraInfoAboutRoutes();
}
private void button3_Click(object sender, EventArgs e)
{
extraInfoAboutHalts();
}
private void button5_Click(object sender, EventArgs e)
{
var data = GetDataFromDatabase();
var chartImage = CreateChart(data);
var pdfPath = "C:\\Users\\ACER\\Desktop\\RouteVisitReport.pdf";
SaveChartToPdf(chartImage, pdfPath);
MessageBox.Show($"PDF with the graph was successfully saved {pdfPath}");
}
private void button7_Click(object sender, EventArgs e)
{
LoadEquipment();
}
private void button4_Click(object sender, EventArgs e)
{
string description = textBox1.Text;
damageDescription(description);
}
private void LoadRoutes()
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
string query = "SELECT route_id, title FROM routes";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
MySqlDataAdapter adapter = new MySqlDataAdapter(command);
DataTable routesTable = new DataTable();
adapter.Fill(routesTable);
dataGridView1.DataSource = routesTable;
}
}
}
private void peopleOnRoutesPDF()
{
iTextSharp.text.Document document = new iTextSharp.text.Document();
PdfWriter.GetInstance(document, new System.IO.FileStream(@"C:\Users\ACER\Desktop\PeopleOnRoutes.pdf", System.IO.FileMode.Create));
if (dataGridView1.SelectedRows.Count > 0)
{
selectedIndex1 = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["route_id"].Value);
using (MySqlConnection connection2 = new MySqlConnection(connectionString))
{
string query2 = "SELECT c.last_name, c.first_name, c.middle_name, c.phone_number FROM costumers AS c JOIN teams AS tm ON c.user_id = tm.user JOIN trip AS tp ON tm.trip = tp.trip_id JOIN routes AS r ON tp.route = r.route_id WHERE r.route_id = @ind";
MySqlCommand command2 = new MySqlCommand(query2, connection2);
command2.Parameters.AddWithValue("@ind", selectedIndex1);
MySqlDataAdapter da = new MySqlDataAdapter(command2);
DataTable dt = new DataTable();
da.Fill(dt);
connection2.Open();
MySqlDataReader reader2 = command2.ExecuteReader();
if (reader2.Read())
{
document.Open();
document.Add(new Paragraph("Information about people, who visited selected route:"));
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
document.Add(new Paragraph(item.ToString()));
}
document.Add(new Paragraph(Environment.NewLine));
}
document.Close();
}
reader2.Close();
connection2.Close();
}
}
}
private void extraInfoAboutRoutes()
{
iTextSharp.text.Document document = new iTextSharp.text.Document();
PdfWriter.GetInstance(document, new System.IO.FileStream(@"C:\Users\ACER\Desktop\Routes.pdf", System.IO.FileMode.Create));
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
string query = "SELECT route_id, title, duration_in_hours, point_of_departure, price FROM routes";
MySqlCommand command = new MySqlCommand(query, connection);
MySqlDataAdapter da = new MySqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
document.Open();
document.Add(new Paragraph("Information about routes:"));
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
document.Add(new Paragraph(item.ToString()));
}
document.Add(new Paragraph(Environment.NewLine));
}
document.Close();
}
reader.Close();
connection.Close();
}
}
private void extraInfoAboutHalts()
{
iTextSharp.text.Document document = new iTextSharp.text.Document();
PdfWriter.GetInstance(document, new System.IO.FileStream(@"C:\Users\ACER\Desktop\Halts.pdf", System.IO.FileMode.Create));
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
string query = "SELECT * FROM halts";
MySqlCommand command = new MySqlCommand(query, connection);
MySqlDataAdapter da = new MySqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
document.Open();
document.Add(new Paragraph("Information about halts:"));
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
document.Add(new Paragraph(item.ToString()));
}
document.Add(new Paragraph(Environment.NewLine));
}
document.Close();
}
reader.Close();
connection.Close();
}
}
private void LoadEquipment()
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM rent";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
MySqlDataAdapter adapter = new MySqlDataAdapter(command);
DataTable routesTable = new DataTable();
adapter.Fill(routesTable);
dataGridView2.DataSource = routesTable;
}
}
}
private void damageDescription(string description)
{
if (dataGridView2.SelectedRows.Count > 0)
{
selectedIndex2 = Convert.ToInt32(dataGridView2.SelectedRows[0].Cells["rent_id"].Value);
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
string query = "INSERT INTO damage_of_equipment (description, rent) VALUES (@text, @rent)";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@text", Convert.ToString(description));
command.Parameters.AddWithValue("@rent", Convert.ToString(selectedIndex2));
command.ExecuteNonQuery();
}
}
}
MessageBox.Show("Description was saved");
}
private List<RouteVisitData> GetDataFromDatabase()
{
var routeVisits = new List<RouteVisitData>();
using (var connection = new MySqlConnection(connectionString))
{
connection.Open();
string query = "SELECT routes.title, count(teams.user) from teams INNER JOIN routes ON route_id = teams.trip GROUP BY title";
using (var command = new MySqlCommand(query, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
routeVisits.Add(new RouteVisitData
{
RouteName = reader.GetString(0),
TotalVisitors = reader.IsDBNull(1) ? 0 : reader.GetInt32(1)
});
}
}
}
}
return routeVisits;
}
private Bitmap CreateChart(List<RouteVisitData> data)
{
var bitmap = new Bitmap(800, 600);
using (var graphics = Graphics.FromImage(bitmap))
{
graphics.Clear(Color.White);
Pen pen = new Pen(Color.Blue, 2);
int margin = 50;
int maxVisitors = 0;
foreach (var entry in data)
{
if (entry.TotalVisitors > maxVisitors)
{
maxVisitors = entry.TotalVisitors;
}
}
graphics.DrawLine(Pens.Black, margin, margin, margin, bitmap.Height - margin);
graphics.DrawLine(Pens.Black, margin, bitmap.Height - margin, bitmap.Width - margin, bitmap.Height - margin);
int barWidth = (bitmap.Width - 2 * margin) / data.Count;
for (int i = 0; i < data.Count; i++)
{
int x = margin + i * barWidth;
int y = bitmap.Height - margin - (data[i].TotalVisitors * (bitmap.Height - 2 * margin) / maxVisitors);
int height = bitmap.Height - margin - y;
graphics.FillRectangle(Brushes.Blue, x, y, barWidth - 5, height);
graphics.DrawString(i.ToString(), new System.Drawing.Font("Arial", 10), Brushes.Black, x + (barWidth - 5) / 2 - 10, y - 20);
}
}
return bitmap;
}
private void SaveChartToPdf(Bitmap chartImage, string pdfPath)
{
using (FileStream stream = new FileStream(pdfPath, FileMode.Create))
{
using (MySqlConnection connection2 = new MySqlConnection(connectionString))
{
string query = "SELECT routes.title, count(teams.user) from teams INNER JOIN routes ON route_id = teams.trip GROUP BY title";
MySqlCommand command2 = new MySqlCommand(query, connection2);
MySqlDataAdapter da2 = new MySqlDataAdapter(command2);
DataTable dt2 = new DataTable();
da2.Fill(dt2);
connection2.Open();
MySqlDataReader reader2 = command2.ExecuteReader();
if (reader2.Read())
{
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A3, 10, 10, 10, 10);
PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(chartImage, System.Drawing.Imaging.ImageFormat.Png);
pdfDoc.Add(pdfImage);
int i = 0;
int j = 0;
foreach (DataRow row in dt2.Rows)
{
foreach (var item in row.ItemArray)
{
if (j % 2 == 0)
{
pdfDoc.Add(new Paragraph($"{i}: {item.ToString()}"));
i++;
j++;
}
else
{
pdfDoc.Add(new Paragraph($"Number of visits: {item.ToString()}"));
j++;
}
}
pdfDoc.Add(new Paragraph(Environment.NewLine));
}
pdfDoc.Close();
}
}
}
}
public class RouteVisitData
{
public string RouteName { get; set; }
public int TotalVisitors { get; set; }
}
}
}
