Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / отчет курсовая бд.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
6.38 Mб
Скачать

Файл 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; }

}

}

}

21

Соседние файлы в папке курсовая