Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

695_Poletajkin_A.N._Uchebno-metodicheskoe_posobie_Realizatsija_zhiznennogo_ch.1_

.pdf
Скачиваний:
10
Добавлен:
12.11.2022
Размер:
1.76 Mб
Скачать

}

//Специальные операции с записями

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

public PData ChangeCurrentToLastAndCut(int n)

{

lock (this)

{

ListNode currFirst = firstNode; ListNode currLast = lastNode; for (int i = 1; i < n; i++)

currFirst = currFirst.Next;

PData RemuveItem = currFirst.Data; if (firstNode != lastNode)

do

{

currLast = currFirst;

while (currLast.Next != lastNode) currLast = currLast.Next;

currLast.Data = lastNode.Data; ; currLast.Next = null;

lastNode = currLast;

} while (currLast != currFirst); return RemuveItem;

}

}

//Специальные операции с записями

//Заменяет указанную запись следующей по списку

ивовзращает

//удаленные данные.

public PData Left1(int n)

{

ListNode current = firstNode; for (int i = 1; i < n; i++) current = current.Next;

if (current.Next == null)

{

PData d = RemuveFromBack(); return d;

}

else

{

91

PData d = current.Data; current.Data = current.Next.Data; if (current.Next.Next == null)

{

current.Next = null; lastNode = current;

}

return d;

}

}

//Проверка спаска на пустоту public bool IsEmpty()

{

lock (this)

{

return firstNode == null;

}

}

//Модификация записи списка

public PData EditRow(PData newItem, int posItem)

{

ListNode current = firstNode; for (int i = 1; i < posItem; i++)

current = current.Next; PData d = current.Data; current.Data = newItem; return d;

}

public void ClearList()

{

firstNode = lastNode = null;

}

// Вывод ФИО пенсионеров

virtual public int PrintPension()

{

ListNode current = firstNode; Console.WriteLine("\nСписок сотрудников

пенсионного возраста:"); int n = 0; do

{

92

// Для мужчин

if ((current.Data.Pol.ToUpper() == "М") && (current.Data.Age >= 60))

{

Console.WriteLine("{0} {1} {2}", current.Data.Surname, current.Data.Firstname, current.Data.Lastname);

n++;

}

// Для женщин

if ((current.Data.Pol.ToUpper() == "Ж") && (current.Data.Age >= 55))

{

Console.WriteLine("{0} {1} {2}", current.Data.Surname, current.Data.Firstname, current.Data.Lastname);

n++;

}

current = current.Next;

} while (current != lastNode); return n;

}

// Вывод содержимого списка на консоль virtual public int Print(string s, bool pak)

{

lock (this)

{

if (IsEmpty())

{

Console.WriteLine("Пустой " + name); return 0;

}

Console.WriteLine(s + " " + name + ": "); ListNode current = firstNode;

int n = 0;

while (current != null)

{

Console.Write(" {0} {1} {2} {3} {4} {5} {6}\n", current.Data.TabNom, current.Data.Surname, current.Data.Firstname,

93

current.Data.Lastname, current.Data.Age, current.Data.Pol, current.Data.Adress);

current = current.Next; n++;

}

if (pak)

{

Console.WriteLine("\n"); Console.ReadKey();

}

return n;

}

}

// Вывод содержимого списка в файл virtual public bool Printf(string s)

{

if (IsEmpty())

{

Console.Write(" Список " + name + " пустой,

действие отменяется."); return false;

}

// FileInfo f = new FileInfo(@"D:\data" + s +

".txt");

StreamWriter fs = new StreamWriter(@"D:\data" + s + ".txt");

fs.WriteLine(name);

ListNode current = firstNode; while (current != null)

{

fs.Write("{0} {1} {2} {3} {4} {5} {6}" + Convert.ToChar(13), current.Data.TabNom, current.Data.Surname, current.Data.Firstname, current.Data.Lastname, current.Data.Age, current.Data.Pol, current.Data.Adress); current = current.Next;

}

fs.WriteLine();

fs.Close(); return true;

}

94

} // Конец класса List

//Определение класса EmptyListException public class EmptyListException :

ApplicationException

{

public EmptyListException(string name) : base("Список" + name + "пуст!")

{ }

}

} // Конец пространства имен LinkedListLibrary

Архив с полным текстом файла Program.cs:

List_Test.rar

Исполняемый файл приложения (двойной клик):

95

96

Учебное издание

Алексей Николаевич Полетайкин

Учебно-методическое пособие по выполнению

лабораторных работ по дисциплине «Программная инженерия»

Часть I. Реализация жизненного цикла программного обеспечения

Учебно-методическое пособие

Редактор И. В. Нечта

Подписано в печать 09.11.2016,

формат бумаги 60x84/16, отпечатано на ризографе, шрифт 10, п. л. 6,1, заказ № 150, тираж 25 экз.

Редакционно-издательский отдел СибГУТИ 630102, г. Новосибирск, ул. Кирова, 86, офис 105 тел. (383) 269-83-56

97