Разработайте программу ввода, корректировки и удаления кораблей, привозимых и увозимых грузов - 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();
        }
    }
}

Оцени полезность:

11   голосов , оценка 4.545 из 5
Похожие ответы