Разработайте программу ввода, корректировки и удаления кораблей, привозимых и увозимых грузов - C#
Формулировка задачи:
В общем начал делать вот такое задание и столкнулся с проблемой, само задание звучит вот так:
Я создал объектную модель следующим образом:
Но как Вы заметите, классы корабли и грузы не связаны между собой, а мне нужно чтобы в них прослеживалось взаимосвязь, как ссылка что-ли на наименование корабля. Хоть данный код и работает, он построен не верно, помогите написать верно, как должно быть, заранее благодарен.
В морской торговый порт прибывают корабли, которые привозят и увозят различные грузы. О каждом корабле известна следующая информация:
- название корабля,
- порт приписки,
- водоизмещение в тоннах,
- дата выпуска.
Привозимый груз характеризуется: кораблем, на котором прибыл груз; датой прибытия; портом отправления, наименованием груза, единицей измерения (на одном корабле могут находиться различные грузы, исчисляемые в различных единицах измерения: тонны, кубометры, погонные метры, кубические метры и т.д), количеством груза, ценой единицы груза.
Увозимый груз характеризуется: кораблем, на котором отправляется груз; датой убытия; портом назначения, наименованием груза, единицей измерения, количеством груза, ценой единицы груза.
Разработайте классы: корабль, базовый класс груз, производные классы : контейнерный груз, сухой груз, жидкий груз.
Разработайте программу ввода, корректировки и удаления кораблей, привозимых и увозимых грузов.
Предусмотрите возможность получения информации по запросу о прибывших грузах за требуемый промежуток времени.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sheeps { public class MainClass { public class Sheeps // класс корабли { public string Name { get; set; } // наименование корабля public string Port_of_registry { get; set; } // порт приписки public double Displacement_in_tons { get; set; } // водоизмещение в тоннах public DateTime Date_of_issue { get; set; } // дата выпуска public Sheeps(string name, string port_of_registry, double displacement_in_tons, DateTime date_of_issue) { Name = name; Port_of_registry = port_of_registry; Displacement_in_tons = displacement_in_tons; Date_of_issue = date_of_issue; } } public abstract class Freight // абстрактный базовый класс груз { public string Name { get; set; } // наименование корабля public DateTime Arrival_date { get; set; } // дата прибытия/убытия public string Port { get; set; } // порт отправления/прибытия public abstract string Freight_name { get; } // наименование груза public string Unit_of_measure { get; set; } // единица измерения public int Quantity_of_freight { get; set; } // количество груза public Decimal Price_of_a_unit_of_cargo { get; set; } // цена за единицу груза public Freight() : base() { Quantity_of_freight = 0; } } public class Container_freight : Freight // производный класс контейнерный груз { string name; // наименование груза public Container_freight(string name_sheep, DateTime arrival_date, string port, string freight_name, string unit_of_measure, int quantity_of_freight, Decimal price_of_a_unit_of_cargo) { Name = name_sheep; Arrival_date = arrival_date; Port = port; name = freight_name; Unit_of_measure = unit_of_measure; Quantity_of_freight = quantity_of_freight; Price_of_a_unit_of_cargo = price_of_a_unit_of_cargo; } public override string Freight_name { get { return name; } } } public class Dry_freight : Freight // производный класс сухой груз { string name; // наименование груза public Dry_freight(string name_sheep, DateTime arrival_date, string port, string freight_name, string unit_of_measure, int quantity_of_freight, Decimal price_of_a_unit_of_cargo) { Name = name_sheep; Arrival_date = arrival_date; Port = port; name = freight_name; Unit_of_measure = unit_of_measure; Quantity_of_freight = quantity_of_freight; Price_of_a_unit_of_cargo = price_of_a_unit_of_cargo; } public override string Freight_name { get { return name; } } } public class Liquid_freight : Freight // производный класс жидкий груз { string name; // наименование груза public Liquid_freight(string name_sheep, DateTime arrival_date, string port, string freight_name, string unit_of_measure, int quantity_of_freight, Decimal price_of_a_unit_of_cargo) { Name = name_sheep; Arrival_date = arrival_date; Port = port; name = freight_name; Unit_of_measure = unit_of_measure; Quantity_of_freight = quantity_of_freight; Price_of_a_unit_of_cargo = price_of_a_unit_of_cargo; } public override string Freight_name { get { return name; } } } } }
Решение задачи: «Разработайте программу ввода, корректировки и удаления кораблей, привозимых и увозимых грузов»
textual
Листинг программы
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; namespace Sheeps { public partial class Form1 : Form { List<MainClass.Freight> freight = new List<MainClass.Freight>(); // коллекция класса груз List<MainClass.Sheeps> sheeps = new List<MainClass.Sheeps>(); // коллекция класса корабли public Form1(List<MainClass.Sheeps> sheeps) { InitializeComponent(); comboBox1.Items.Clear(); foreach (var sheep in sheeps) comboBox1.Items.Add(sheep.Name); this.sheeps = sheeps; } private void load() { listBox1.Items.Clear(); foreach (var p in freight) listBox1.Items.Add(p.Ship + " " + p.Arrival_date + " " + p.Port + " " + p.Freight_name + " " + p.Unit_of_measure + " " + p.Quantity_of_freight + " " + p.Price_of_a_unit_of_cargo); } private void button1_Click(object sender, EventArgs e) { this.Hide(); Form2 form2 = new Form2(sheeps); form2.Show(); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Application.ExitThread(); } private void button2_Click(object sender, EventArgs e) { if (radioButton1.Checked) freight.Add(new MainClass.Container_freight(comboBox1.Text, DateTime.Parse(dateTimePicker1.Value.ToString("dd.MM.yyyy")), textBox1.Text, textBox2.Text, textBox3.Text, int.Parse(textBox4.Text), decimal.Parse(textBox5.Text))); if (radioButton2.Checked) freight.Add(new MainClass.Dry_freight(comboBox1.Text, DateTime.Parse(dateTimePicker1.Value.ToString("dd.MM.yyyy")), textBox1.Text, textBox2.Text, textBox3.Text, int.Parse(textBox4.Text), decimal.Parse(textBox5.Text))); if (radioButton3.Checked) freight.Add(new MainClass.Liquid_freight(comboBox1.Text, DateTime.Parse(dateTimePicker1.Value.ToString("dd.MM.yyyy")), textBox1.Text, textBox2.Text, textBox3.Text, int.Parse(textBox4.Text), decimal.Parse(textBox5.Text))); load(); foreach (Control c in Controls) if (c is TextBox) ((TextBox)c).Clear(); } private void Form1_Load(object sender, EventArgs e) { load(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д