Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/91: Рейтинг темы: голосов - 91, средняя оценка - 4.90
0 / 9 / 1
Регистрация: 21.03.2012
Сообщений: 27
1

Описать класс "поезд", содержащий поля "пункт назначения", "номер поезда", "время отправления"

21.03.2012, 19:19. Показов 16640. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста с классом

Описать класс «поезд», содержащий следующие закрытые поля:
• название пункта назначения;
• номер поезда (может содержать буквы и цифры);
• время отправления.
• Предусмотреть свойства для получения состояния объекта.
• Описать класс «вокзал», содержащий закрытый массив поездов. Обеспечить сле¬дующие возможности:
• вывод информации о поезде по номеру с помощью индекса;
• вывод информации о поездах, отправляющихся после введенного с клавиату¬ры времени;
• перегруженную операцию сравнения, выполняющую сравнение времени от¬правления двух поездов;
• вывод информации о поездах, отправляющихся в заданный пункт назначения.
Информация должна быть отсортирована по времени отправления.
Написать про¬грамму, демонстрирующую все разработанные элементы классов.
2
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2012, 19:19
Ответы с готовыми решениями:

Описать класс "Поездка". Поля: номер поезда, пункт назначения, дни следования, время прибытия, время стоянки
Описать класс "Поездка". Поля: номер поезда, пункт назначения, дни следования, время прибытия,...

Известны сорта роз, выращиваемых тремя цветоводами: "Анжелика", "Виктория", "Гагарин", "Ave Maria", "Катарина", "Юбилейн
Известны сорта роз, выращиваемых тремя цветоводами: "Анжелика", "Виктория", "Гагарин", "Ave...

Дан массив строк: "red", "green", "black", "white", "blue". Запишите в файл элементы массива построчно (в новой строке)
пишу так но не помогает: static void Main(string args) { string...

Описать базовый класс "Точка". Производные: "Окружность" и "Правильный треугольник"
Помогите, пожалуйста. Базовый класс «Точка». Классы «Окружность» и «Правильный треугольник»...

1
0 / 9 / 1
Регистрация: 21.03.2012
Сообщений: 27
08.04.2012, 00:06  [ТС] 2
Лучший ответ Сообщение было отмечено MaZaHaKa как решение

Решение

Вообщем вот, сделал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace poezda_vokzal
{
    class Program
    {
        static void Main(string[] args)
        {
            Vokzal vokzal = new Vokzal();
            int Kol = 4;
            for (int i = 0; i < Kol; i++)
            {
                vokzal.Add();
            }
            vokzal[0].ShowInfo();
            vokzal[1].ShowInfo();
            vokzal[2].ShowInfo();
            vokzal.ShowLastTime();
            vokzal.ShowEndPunct();
            Console.ReadKey();
        }
    }
 
    class Vokzal      //КЛАСС ВОКЗАЛ
    {
        List<Poezd> Poezda = new List<Poezd>();     //объявление коллекции поездов
 
        public Poezd this[int index]    //пользовательский индексатор для класса
        {
            get
            {
                return Poezda[index];
            }
            set
            {
                if (index >= 0 && value is Poezd)
                {
                    Poezda.Add(value);
                    Poezda.Sort();
                }
            }
        }
 
        public void Add()       //метод добавления поезда в коллекцию
        {
            int namber = 0;
            bool flag = true;
            while(flag)
            {
                try
                {
                    Console.Write("Введите номер поезда: ");
                    namber = Convert.ToInt32(Console.ReadLine());
                    flag = !flag;
                }
                catch
                {
                    Console.WriteLine("Неверный формат номера");
                }
            }
 
            Console.Write("Введите конечный пункт назначения: ");
            string EndPunct = Console.ReadLine();
            Poezd poezd = new Poezd(EndPunct, namber);
            Poezda.Add(poezd);
            Poezda.Sort();
        }
 
        public void ShowLastTime()  //метод для вывода информации поездов отправляемых после заданного времени
        {
            Console.Write("Введите время для сравнения: ");
            Poezd p1 = new Poezd("null", 1);
            for (int i = 0; i < Poezda.Count; i++)
                if (p1 < this[i])
                    this[i].ShowInfo();
        }
 
        public void ShowEndPunct() //метод для вывода ин-ии о поездах, отправляющихся в заданный пункт назначения
        {
            Console.Write("Введите пункт назначения: ");
            string punkt = Console.ReadLine();
            int num=0;
            for (int i = 0; i < Poezda.Count; i++)
            {
                if (Poezda[i].EndPunct == punkt)
                {
                    Console.WriteLine(Poezda[i]);
                    num++;
                }
            }
            if (num == 0)
                Console.WriteLine("В заданный пункт назначения поезда не ходят!");
        }
 
    }
 
    class Poezd: IComparable     //КЛАСС ПОЕЗД
    {
        String endPunct;            //поле понкта назначения
        public String EndPunct      //свойство поля пункта назначения
        {
            get { return endPunct; }
            set { endPunct = value; }
        }
 
        int namber;                 //поле номера поезда
        public int Namber           //свойство поля номера поезда
        {
            get { return namber; }
            set 
            {
                if(value>0)
                    namber = value; 
            }
        }
 
        DateTime time;              //поле времени отправления
        public DateTime Time        //свойство поля времени отправления
        {
            get { return time; }
            set { time = value; }
        }
 
        void SetTime()       //метод для ввода времени
        {
            while (true)
            {
                int hour = 0;
                int minute = 0;
                Console.Write("Введите время отправления поезда [hour.minute]: ");
                string t = Console.ReadLine();
                string h = "";
                string m = "";
                int q;
                bool flag = false;
                for (int i = 0; i < t.Length; i++)
                {
                    if (!flag)
                    {
                        if (Int32.TryParse(Convert.ToString(t[i]), out q))
                        {
                            h = h + t[i];
                        }
                        else
                        {
                            flag = true;
                            continue;
                        }
                    }
                    if (flag)
                    {
                        if (Int32.TryParse(Convert.ToString(t[i]), out q))
                        {
                            m = m + t[i];
                        }
                    }
                }
                try
                {
                    hour = Int32.Parse(h);
                    minute = Int32.Parse(m);
                    Time = new DateTime(2012, 12, 12, hour, minute, 0);
                    return;
                }
                catch
                {
                    Console.WriteLine("Введен неверный формат времени");
                }
 
            }
        }
 
        public Poezd(string EndPunct, int Namber)       //Перегруженный конструктор класса
        {
            this.EndPunct = EndPunct;
            this.Namber = Namber;
            SetTime();
        }
        public Poezd(string EndPunct, int Namber, DateTime Time)       //Перегруженный конструктор класса
        {
            this.EndPunct = EndPunct;
            this.Namber = Namber;
            this.Time = Time;
        }
 
        public int CompareTo(object input)   //реализования метода интерфейса IComparable для сортировки поездов по времени отправления
        {
            if (input is Poezd)
            {
                Poezd p1 = (Poezd)input;
                if (this.Time > p1.Time)
                    return 1;
                else if (this.Time < p1.Time)
                    return -1;
                else
                    return 0;
            }
            return 0;
        }
 
        public override string ToString()    //переопределение метода ToString()
        {
            string info = String.Format("Поезд №{0} следует в пункт назначения {1}. Время отправления: {2}.{3}!",
                Namber,EndPunct,time.Hour,time.Minute);
            return info;
        }
        public void ShowInfo()      //вывод информации о поезде
        {
            Console.WriteLine(ToString());
        }
 
        public static bool operator >(Poezd p1, Poezd p2)   //Перегрузга оператора >
        {
            if (p1.Time > p2.Time)
                return true;
            return false;
        }
        public static bool operator <(Poezd p1, Poezd p2)   //Перегрузга оператора <
        {
            if (p1.Time < p2.Time)
                return true;
            return false;
        }
        public static bool operator ==(Poezd p1, Poezd p2)   //Перегрузга оператора ==
        {
            if (p1.Time == p2.Time)
                return true;
            return false;
        }
        public static bool operator !=(Poezd p1, Poezd p2)   //Перегрузга оператора !=
        {
            if (p1.Time != p2.Time)
                return true;
            return false;
        }
    }
}

А вот другое задание к этой-же работе:
Выполнить задания лабораторной работы 8(т.е код которой выше), используя для хранения экземпляров разработанных классов стандартные параметризованные коллекции. Во всех классах реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю на усмотрение студента.
Можете объяснить как это делать
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2012, 00:06

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Методом вычислить тип треугольника: "не существует", "тупоугольный", "прямоугольный", "остроугольный"
Помогите пожалуйста С помощью метода вычислить тип треугольника::cry: 1) если первый параметр...

Построить иерархию классов "Студент", "преподаватель", "персона", "заведующий кафедрой"
Построить иерархию классов: Студент, преподаватель, персона, заведующий кафедрой 1) Разработать...

Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т""
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма public class...

Напишите программу, которая подсчитывает, сколько учащихся получило "2", "3", "4" и "5"
Помогите, пожалуйста, с решением следующей задачи: учащиеся сдают экзамены по нескольким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.