Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лаб.работы / Мет.ук. к л.р.6.doc
Скачиваний:
71
Добавлен:
12.03.2016
Размер:
300.54 Кб
Скачать

Задание 3

Изменить программу, созданную на C# на основе задания 3 лабораторной работы № 5. В класс индивидуального варианта добавить метод diskIn(), который записывает поля объекта в файл и метод diskOut(), который читает поля объекта из файла. В метод main() добавить запись массива объектов класса индивидуального варианта в файл и чтения их из файла с использованием методов diskIn() и diskOut() .

Пример 2

В листинге 3 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, а также осуществляется поиск информации о рейтинге студента по его фамилии. Исходный список студента сортируется по фамилии в алфавитном порядке. В программе имеется возможность записи списка студентов в текстовый файл и чтение списка студентов из текстового файла.

Для создания программы использовалась среда разработки MS Visual C# 2010 Express.

Создание проекта в MS Visual C# 2010 Express: Файл -> Создать проект -> Консольное приложение.

Компиляция, сборка и выполнение проекта: Отладка -> Начать отладку (F5).

На рисунке 5 показан результат выполнения программы.

Листинг 3

using System;

using System.IO;

namespace Primer3

{

class Student : IComparable<Student>

{

private string fam;

private string name;

private int grade; //рейтинг

public Student(string fam, string name, int grade)

{

this.fam = fam;

this.name = name;

this.grade = grade;

}

public Student() { }

public String getfam() { return fam; }

public String getname() { return name; }

public int getgrade() { return grade; }

public void input()

{

Console.Write("Фамилия: "); fam = Console.ReadLine();

Console.Write("Имя: "); name = Console.ReadLine();

Console.Write("Рейтинг: "); grade = int.Parse(Console.ReadLine());

if (grade < 0 || grade > 100)

throw new Exception("Ошибка: Рейтинг должен быть от 0 до 100!");

}

public void output()

{

Console.Write("{0,-15}{1,-15}{2}\n", fam, name, grade);

}

public void diskOut(StreamWriter sw)

{ sw.WriteLine(fam);

sw.WriteLine(name);

sw.WriteLine(grade);

}

public void diskIn(StreamReader sr)

{ fam = sr.ReadLine();

name = sr.ReadLine();

grade = int.Parse(sr.ReadLine());

if (grade < 0 || grade > 100)

throw new Exception("Ошибка в содержимом файла: Рейтинг должен быть от 0 до 100!");

}

public int CompareTo(Student obj)

{

return fam.CompareTo(obj.getfam());

}

}

class Program

{

public static void Main(String[] args)

{int p=0; int n=0; Student[] st = null;

bool ff = true;

try

{ do

{ Console.WriteLine("Введите: ");

Console.WriteLine("1 - Ввод списка студентов и запись в файл");

Console.WriteLine("2 - Чтение списка студентов из файла");

Console.Write(">");

p = int.Parse(Console.ReadLine());

if (p == 1)

{ ff = false;

Console.Write("Введите кол-во студентов: ");

n = int.Parse(Console.ReadLine());

st = new Student[n];

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

{ st[i] = new Student();

st[i].input();

}

StreamWriter sw = new StreamWriter("E:\\Student.txt", false, System.Text.Encoding.Default);

sw.WriteLine(n);

for(int i = 0; i<n; i++)

st[i].diskOut(sw);

sw.Close();

}

if (p == 2)

{ ff = false;

StreamReader sr = new StreamReader("E:\\Student.txt", System.Text.Encoding.Default);

n=int.Parse(sr.ReadLine());

st = new Student[n];

for (int i = 0; i < n; i++)

{ st[i] = new Student();

st[i].diskIn(sr);

}

sr.Close();

}

} while(ff);

Array.Sort(st);

Console.WriteLine("Список студентов: ");

Console.Write("{0,-15}{1,-15}{2,-10}\n", "Фамилия", "Имя", "Рейтинг");

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

st[i].output();

int min = st[0].getgrade();

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

if (st[i].getgrade() < min)

min = st[i].getgrade();

Console.Write("Укажите фамилию студента: ");

string fam = Console.ReadLine();

string f; int fl = 0;

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

{

f = st[i].getfam();

if (f.Equals(fam))

{

Console.Write("Рейтинг студента " + fam + " - " + st[i].getgrade());

fl = 1;

}

}

if (fl == 0) Console.Write("Нет в списке студента " + fam);

Console.WriteLine("\nСписок студентов с минимальным рейтингом: ");

Console.Write("{0,-15}{1,-15}{2,-10}\n", "Фамилия", "Имя", "Рейтинг");

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

if (st[i].getgrade() == min)

st[i].output();

Console.ReadKey(true);

}

catch (FormatException e)

{ Console.WriteLine("Это НЕ число!!!" + e.Message);}

catch (Exception e)

{ Console.WriteLine(e.Message);}

Console.ReadKey();

}

}

}

Рисунок 5 – Результат выполнения программы

14

Соседние файлы в папке Лаб.работы