FormMain.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Data.SqlClient;
  11. namespace СУБД_Книжный_клуб
  12. {
  13. public partial class FormMain : Form
  14. {
  15. public FormMain()
  16. {
  17. InitializeComponent();
  18. }
  19. public SqlConnection Con = new SqlConnection(TxtCon);
  20. public static string TxtCon = @"Data Source=213.155.192.79,3002;Initial Catalog=BookClubKMA;Persist Security Info=True;User ID=u21kleschenkov;Password=vhk5";
  21. public class OrderItem
  22. {
  23. public string IdProduct, NameProduct;
  24. public double Cost, Discount;
  25. public int CountInStorage, Count, CountInOrder;
  26. }
  27. static List<OrderItem> LstOrder = new List<OrderItem>();
  28. /// <summary>
  29. /// Подччёт суммы заказа и суммы скидки
  30. /// </summary>
  31. /// <param name="Sum">Сумма заказа с учетом скидки</param>
  32. /// <param name="DiscountSum">Сумма скидки</param>
  33. public static void CalcOrder(ref double Sum, ref double DiscountSum)
  34. {
  35. Sum= 0;
  36. DiscountSum= 0;
  37. double CostItem = 0, DiscountItem = 0;
  38. for (int i = 0; i < LstOrder.Count; i++)
  39. {
  40. CostItem = LstOrder[i].Cost * LstOrder[i].CountInOrder;
  41. DiscountItem = CostItem * LstOrder[i].Discount / 100;
  42. DiscountSum += DiscountItem;
  43. Sum+= CostItem - DiscountItem;
  44. }
  45. }
  46. /// <summary>
  47. /// Заполнение списков товаров, имеющихся на складе
  48. /// </summary>
  49. void FillListProduct()
  50. {
  51. DgvProductList.Rows.Clear();
  52. Con.Open();
  53. string TxtQuery = @"SELECT Product.IdProduct, Product.Photo,
  54. Product.NameProduct, Manufacturer.NameManufacturer, Product.Cost,
  55. Product.Discount, Product.CountProduct, Product.Description
  56. FROM Product INNER JOIN Manufacturer ON Product.IdManufacturer =
  57. Manufacturer.IdManufacturer";
  58. SqlCommand Query = new SqlCommand(TxtQuery, Con);
  59. SqlDataReader Res= Query.ExecuteReader();
  60. while (Res.Read())
  61. {
  62. string Info = $@"Товар: {Res["NameProduct"]}
  63. Производитель: {Res["NameManufacturer"]}
  64. Описание: {Res["Description"]}
  65. Цена: {Res["Cost"]}
  66. Скидка: {Res["Discount"]}
  67. Кол-во на складе: {Res["CountProduct"]}";
  68. try
  69. {
  70. DgvProductList.Rows.Add(Res["IdProduct"], Image.FromFile(Application.StartupPath + "\\Фото\\" + Res["Photo"]), Info, Res["NameProduct"], Res["Cost"], Res["Discount"], Res["CountProduct"]);
  71. }
  72. catch
  73. {
  74. DgvProductList.Rows.Add(Res["IdProduct"], Image.FromFile(Application.StartupPath + "\\Фото\\blank.jpg" + Res["Photo"]), Info, Res["NameProduct"], Res["Cost"], Res["Discount"], Res["CountProduct"]);
  75. }
  76. }
  77. Con.Close();
  78. }
  79. private void FormMain_Load(object sender, EventArgs e)
  80. {
  81. FillListProduct();
  82. }
  83. private void CmAddToOrder_Click(object sender, EventArgs e)
  84. {
  85. PanelOrder.Visible = true;
  86. OrderItem Item = new OrderItem();
  87. Item.IdProduct = DgvProductList.SelectedRows[0].Cells[0].Value.ToString();
  88. Item.NameProduct = DgvProductList.SelectedRows[0].Cells[3].Value.ToString();
  89. Item.Cost = double.Parse(DgvProductList.SelectedRows[0].Cells[4].Value.ToString());
  90. Item.Discount = double.Parse(DgvProductList.SelectedRows[0].Cells[5].Value.ToString());
  91. Item.CountInStorage = int.Parse(DgvProductList.SelectedRows[0].Cells[6].Value.ToString());
  92. Item.CountInOrder = 1;
  93. LstOrder.Add(Item);
  94. OutPutInfo();
  95. }
  96. /// <summary>
  97. /// Вывод информации по сумме заказа и суммы скидки
  98. /// </summary>
  99. public void OutPutInfo()
  100. {
  101. double Sum = 0, DiscountSum = 0;
  102. CalcOrder(ref Sum, ref DiscountSum);
  103. LblSum.Text = $"Сумма заказа (с учетом скидки): {Sum}";
  104. LblDiscount.Text = $"Скидка: {DiscountSum}";
  105. }
  106. private void DgvProductList_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
  107. {
  108. DgvProductList.ClearSelection();
  109. DgvProductList[ e.ColumnIndex,e.RowIndex].Selected= true;
  110. }
  111. private void BtnOrder_Click(object sender, EventArgs e)
  112. {
  113. FormOrder Frm = new FormOrder();
  114. Frm.LstOrder = LstOrder;
  115. Frm.ShowDialog();
  116. OutPutInfo();
  117. FillListProduct();
  118. if(LstOrder.Count == 0)
  119. PanelOrder.Visible = false;
  120. }
  121. }
  122. }