Главная страница
Навигация по странице:

  • Курсовая работа

  • Задание работы

  • Вид данных

  • Программа должны обеспечить

  • Листинг порограммы

  • Абстрактная Блок Схема

  • Вывод: Научился работать с линейным списком, Win forms, и абстрактными классами.

  • Курсач. Курсовая работа по дисциплине Объектноориентированное программирование


    Скачать 1.01 Mb.
    НазваниеКурсовая работа по дисциплине Объектноориентированное программирование
    Дата05.06.2019
    Размер1.01 Mb.
    Формат файлаodt
    Имя файлаКурсач.odt
    ТипКурсовая
    #80544

    Федеральное государственное автономное образовательное учреждение

    высшего профессионального образования

    Национальный Исследовательский Технологический

    Университет “МИСиС”

    _________________________________________________________________________________

    Курсовая работа

    по дисциплине:

    «Объектно-ориентированное программирование»

    Выполнил: Егоров Иван

    Проверил:

    19 вариант

    Москва 2019 г.


    Задание работы: Разработать класс, реализующий указанную в задании структуру данных. Разработать интерфейс программы, позволяющий вводить данные и получать результаты в удобной для пользователя форме. Программа должна проверить правильность вводимых данных. В случае возникновения ошибок должны выдаваться сообщения. Должна быть предусмотрена возможность получения данных из файла и запись результатов файл.
    Вид данных: Линейный список.

    Операции: Составить программу, которая содержит информацию о наличие автобусов в автобусном парке.
    Сведения об автобусе содержат:

    • номер автобуса;

    • фамилию и инициалы водителя;

    • номер маршрута;


    Программа должны обеспечить:

    • формирование данных обо всех автобусах в виде списка;

    • формирование списка автобусов выехавших из парка;

    • формирование списка автобусов оставшихся в парке;

    • вывод сведений об автобусах находящихся на маршруте и об автобусах оставшихся в парке.


    Листинг порограммы:


    1. using System;

    2. using System.Collections.Generic;

    3. using System.Collections;

    4. using System.ComponentModel;

    5. using System.Data;

    6. using System.Drawing;

    7. using System.Linq;

    8. using System.Text;

    9. using System.Threading.Tasks;

    10. using System.Windows.Forms;

    11. using System.IO;



    12. namespace BusPark

    13. {

    14. public partial class Form1 : Form

    15. {

    16. BusPark.LinkedList list = new BusPark.LinkedList();

    17. bus bus = new bus();



    18. public Form1()

    19. {

    20. InitializeComponent();





    21. openFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";

    22. saveFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";





    23. textBox2.Text = "Добро пожаловать в редактор Автобусного парка";





    24. /////////////////////////////////////////////////////////////////////////////////////////////



    25. dataGridView1.Columns.Add("0", "ID");

    26. dataGridView1.Columns[0].Width = 25;

    27. dataGridView1.Columns.Add("1", "Номер автобуса");

    28. dataGridView1.Columns.Add("2", "ФИО");

    29. dataGridView1.Columns.Add("3", "Номер маршрута");

    30. dataGridView1.Columns.Add("4", "Статус");





    31. for (int i = 0; i < dataGridView1.Rows.Count; i++)

    32. dataGridView1.Rows[i].HeaderCell.Value = i + 1;



    33. }



    34. //////////////////////////////////////////////////////////////// TODO: проверять зн-ия



    35. private void button5_Click(object sender, EventArgs e)

    36. {

    37. try

    38. {

    39. String[] words = Convert.ToString(textBox1).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

    40. string status = null;

    41. if (radioButton1.Checked) { status = "В пути"; } else if (radioButton2.Checked) { status = "В парке"; }

    42. list.AddBack(bus = new bus(int.Parse(words[2]), words[3], int.Parse(words[4]), status));

    43. }

    44. catch

    45. {

    46. MessageBox.Show("данные были введены неверно, вписывайте их также, в каком порядке они указаны в таблице");

    47. }

    48. dataGridView1.DataSource = null;

    49. dataGridView1.Rows.Clear();



    50. int k = 1;



    51. foreach (bus item in list) // вывод инфы

    52. dataGridView1.Rows.Add( k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());



    53. }



    54. private void button7_Click(object sender, EventArgs e)

    55. {

    56. try

    57. {

    58. String[] words = Convert.ToString(textBox5).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

    59. string status = null;



    60. if (radioButton3.Checked) { status = "В пути"; } else if (radioButton4.Checked) { status = "В парке"; }

    61. bus bus1 = new bus(int.Parse(words[2]), words[3], int.Parse(words[4]), status);



    62. String[] wordiks = Convert.ToString(textBox4).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);



    63. int pos = int.Parse(Convert.ToString(wordiks[2])) - 1;



    64. list.Insert(pos, bus1);

    65. }

    66. catch

    67. {

    68. MessageBox.Show("данные были введены неверно, вписывайте их также, в каком порядке они указаны в таблице");

    69. }



    70. dataGridView1.DataSource = null;

    71. dataGridView1.Rows.Clear();



    72. int k = 1;



    73. foreach (bus item in list) // вывод инфы

    74. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());





    75. }



    76. private void button6_Click(object sender, EventArgs e)

    77. {

    78. try {

    79. String[] wordiks = Convert.ToString(textBox3).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);



    80. int pos = int.Parse(Convert.ToString(wordiks[2]));



    81. list.Delete(pos);



    82. }

    83. catch

    84. {

    85. MessageBox.Show("данные были введены неверно, вписывайте их также, в каком порядке они указаны в таблице");

    86. }



    87. dataGridView1.DataSource = null;

    88. dataGridView1.Rows.Clear();



    89. int k = 1;



    90. foreach (bus item in list) // вывод инфы

    91. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());

    92. }



    93. ////////////////////////////////////////////////////////////////////////////////////



    94. private void button1_Click(object sender, EventArgs e)

    95. {

    96. dataGridView1.DataSource = null;

    97. dataGridView1.Rows.Clear();



    98. int k = 1;



    99. foreach (bus item in list) // вывод инфы

    100. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway());

    101. }



    102. private void button2_Click(object sender, EventArgs e)

    103. {

    104. dataGridView1.DataSource = null;

    105. dataGridView1.Rows.Clear();



    106. int k = 1;



    107. foreach (bus item in list)

    108. {// вывод инфы

    109. if (item.getstatus() == "В пути")

    110. {

    111. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());

    112. }

    113. }

    114. }



    115. private void button3_Click(object sender, EventArgs e)

    116. {

    117. dataGridView1.DataSource = null;

    118. dataGridView1.Rows.Clear();



    119. int k = 1;



    120. foreach (bus item in list)

    121. {// вывод инфы

    122. if (item.getstatus() == "В парке")

    123. {

    124. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());

    125. }

    126. }

    127. }



    128. private void button4_Click(object sender, EventArgs e)

    129. {

    130. dataGridView1.DataSource = null;

    131. dataGridView1.Rows.Clear();



    132. int k = 1;



    133. foreach (bus item in list) // вывод инфы

    134. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());

    135. }





    136. /////////////////////////////////////////////////////////////////////////// TODO: проверять



    137. private void button8_Click(object sender, EventArgs e)

    138. {

    139. try

    140. {

    141. if (openFileDialog1.ShowDialog() == DialogResult.Cancel)

    142. return;

    143. // получаем выбранный файл

    144. string filename = openFileDialog1.FileName;

    145. // читаем файл в строку

    146. string fileText = System.IO.File.ReadAllText(filename);



    147. String[] abzac = Convert.ToString(fileText).Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);





    148. for (int i = 0; i < abzac.Length; i++)

    149. {

    150. String[] words = Convert.ToString(abzac[i]).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);



    151. list.AddBack(bus = new bus(int.Parse(words[1]), words[2], int.Parse(words[3]), words[4] + " " + words[5]));

    152. }

    153. }catch

    154. {

    155. MessageBox.Show("неверный формат данных");

    156. }

    157. dataGridView1.DataSource = null;

    158. dataGridView1.Rows.Clear();



    159. int k = 1;



    160. foreach (bus item in list) // вывод инфы

    161. dataGridView1.Rows.Add(k++, item.getnum(), item.getname(), item.getnumway(), item.getstatus());



    162. MessageBox.Show("Файл открыт");



    163. }



    164. private void button9_Click(object sender, EventArgs e)

    165. {

    166. if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)

    167. return;

    168. // получаем выбранный файл

    169. string filename = saveFileDialog1.FileName;



    170. int k = 1;

    171. string all = "";

    172. foreach (bus item in list)

    173. {// вывод инфы

    174. all += k++ + " " + item.getnum() + " " + item.getname() + " " + item.getnumway() + " " + item.getstatus() + "\r\n";

    175. }



    176. textBox2.Text = all;

    177. // сохраняем текст в файл

    178. System.IO.File.WriteAllText(filename, all);

    179. MessageBox.Show("Файл сохранен");

    180. }

    181. }



    182. class LinkedList

    183. {

    184. private class Node

    185. {

    186. public T data;

    187. public Node next;



    188. public Node(T data, Node next)

    189. {

    190. this.data = data;

    191. this.next = next;

    192. }

    193. }



    194. private int count = 0;

    195. private Node head = null;

    196. private Node tail = null;





    197. public void AddBack(T data)

    198. {

    199. if (head == null)

    200. {

    201. head = new Node(data, null);

    202. tail = head;

    203. }



    204. else

    205. {

    206. tail.next = new Node(data, null);

    207. tail = tail.next;

    208. }



    209. ++count;

    210. }



    211. public void AddFront(T data)

    212. {

    213. if (head == null)

    214. {

    215. head = new Node(data, null);

    216. tail = head;

    217. }



    218. else

    219. {

    220. Node new_node = new Node(data, head);

    221. head = new_node;

    222. }



    223. ++count;

    224. }



    225. public void Insert(int index, T data)

    226. {

    227. if (index < 0 || index >= count)

    228. throw new ArgumentOutOfRangeException();



    229. if (index == 0)

    230. {

    231. AddFront(data);

    232. }



    233. else

    234. {

    235. Node r = head;



    236. for (int i = 1; i < index; ++i)

    237. r = r.next;



    238. Node new_node = new Node(data, r.next);

    239. r.next = new_node;



    240. ++count;

    241. }

    242. }



    243. public void Delete(int pos)

    244. {

    245. if (head != null)

    246. {

    247. Node temp = head;

    248. Node prev = head;

    249. // Console.WriteLine(temp + " " + prev);

    250. int i = 1;



    251. while (pos != i)

    252. {

    253. prev = temp;

    254. temp = temp.next;

    255. i++;

    256. }

    257. if (head == temp)

    258. head = head.next;

    259. else

    260. prev.next = temp.next;

    261. count--;

    262. }

    263. else

    264. MessageBox.Show("Список и так пустой! Удалять нечего.");

    265. }



    266. public int Count

    267. {

    268. get

    269. {

    270. return count;

    271. }

    272. }



    273. public IEnumerator GetEnumerator()

    274. {

    275. for (Node r = head; r != null; r = r.next)

    276. yield return r.data;

    277. }

    278. }





    279. class bus

    280. {

    281. private int BusNumber;

    282. private string NameOfDriver;

    283. private int NumberOfWay;

    284. private string status;



    285. public bus()

    286. {

    287. BusNumber = 0;

    288. NameOfDriver = null;

    289. NumberOfWay = 0;

    290. this.status = null;

    291. }



    292. public bus(int bnum, string name, int numbw, string status)

    293. {

    294. BusNumber = bnum;

    295. NameOfDriver = name;

    296. NumberOfWay = numbw;

    297. this.status = status;

    298. }



    299. public int getnum()

    300. {

    301. return BusNumber;

    302. }

    303. public string getname()

    304. {

    305. return NameOfDriver;

    306. }

    307. public int getnumway()

    308. {

    309. return NumberOfWay;

    310. }

    311. public string getstatus()

    312. {

    313. return status;

    314. }





    315. }

    316. }


    Абстрактная Блок Схема:



    Скриншоты работы программы:







































    Вывод: Научился работать с линейным списком, Win forms, и абстрактными классами.


    написать администратору сайта