Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ-Лабораторная 3.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
236 Кб
Скачать
☆

Пример приложения, использующего классы

Рассмотрим приложение, основанное на рассмотренной иерархии классов. В приложение поместим главную форму, форму добавления экземпляров классов, форму просмотра всех экземпляров классов и форму запроса.

На главной форме поместим меню (рис. ):

Рис. Главная форма приложения

Кроме двух классов иерархии, создадим класс Global для размещения полей, видимых всем формам:

class Global

{

public struct st

{

public string name, place;

public int age, ball, group;

};

public static st st1;

public static stud A1=new stud();

public static stud A2 = new stud();

public static grad_stud B1=new grad_stud();

public static grad_stud B2 = new grad_stud();

public static FileStream aFile;

public static StreamWriter sw;

public static StreamReader sr; }

Форма добавления (рис. )

Рис. Форма добавления студента

На форме есть компонента groupBox, содержащая две компоненты radioButton для выбора типа добавляемого объекта, при выполнении события radioButton1_CheckedChanged поля, связанные с местом распределения, становятся невидимы; для аналогичного события для второй кнопки они становятся видимыми:

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{ label5.Visible = false;

textBox1.Visible = false; }

private void radioButton2_CheckedChanged(object sender, EventArgs e)

{ label5.Visible = true;

textBox1.Visible = true; }

После заполнения необходимых полей в зависимости от нажатой кнопки создается и инициализируется определенный экземпляр определенного класса, например, при нажатии кнопки «Первый студент» выполняется код:

private void button5_Click(object sender, EventArgs e)

{Global.st1.name=textBox2.Text;

Global.st1.age = Convert.ToInt32(maskedTextBox1.Text);

Global.st1.ball = Convert.ToInt32(maskedTextBox2.Text);

Global.st1.group = Convert.ToInt32(maskedTextBox3.Text);

Global.A1 = new stud(Global.st1.name, Global.st1.age, Global.st1.ball,

Global.st1.group); }

Заполняются поля структуры и инициализируктся экземпляр Global.A1.

Форма просмотра содержит компоненту ListBox; при загрузке формы выполняется код для добавления в список значений метода Info() для каждого объекта:

private void Form3_Load(object sender, EventArgs e)

{ listBox1.Items.Clear();

if (Global.A1!=null)

listBox1.Items.Add(Global.A1.info());

if (Global.A2!=null)listBox1.Items.Add(Global.A2.info());

if (Global.B1!=null)listBox1.Items.Add(Global.B1.info());

if (Global.B2!=null)listBox1.Items.Add(Global.B2.info()); }

Форма запроса имеет вид (рис. ):

Рис. Форма просмотра

При нажатии кнопки выполняется код:

private void button1_Click(object sender, EventArgs e)

{int cnt=0;

if (Global.B1.get_place() == textBox1.Text)

cnt++;

if (Global.B2.get_place() == textBox1.Text)

cnt++;

MessageBox.Show(Convert.ToString(cnt)); Close(); }

Код записи объектов в файл:

Global.aFile = new FileStream("stud.txt", FileMode.Create);

Global.sw = new StreamWriter(Global.aFile);

Global.sw.Close();

Global.aFile = new FileStream("stud.txt", FileMode.Append);

Global.sw = new StreamWriter(Global.aFile);

// Записатьданныевфайл

Global.sw.WriteLine("{0},{1},{2},{3},{4}", Global.A1.GetType(), Global.A1.Name, Global.A1.Age,

Global.A1.Ball,Global.A1.Group);

Global.sw.WriteLine("{0},{1},{2},{3},{4}", Global.A2.GetType(), Global.A2.Name, Global.A2.Age,

Global.A2.Ball, Global.A2.Group);

Global.sw.WriteLine("{0},{1},{2},{3},{4},{5}", Global.B1.GetType(), Global.B1.Name, Global.B1.Age,

Global.B1.Ball, Global.B1.Group,Global.B1.Place);

Global.sw.WriteLine("{0},{1},{2},{3},{4},{5}", Global.B2.GetType(), Global.B2.Name, Global.B2.Age,

Global.B2.Ball, Global.B2.Group,Global.B2.Place);

Global.sw.Close();

Код чтения объектов из файла:

stringlin,ob;

char[] separator = new char[] { ',' };

string[] slov = new string[6];

Global.aFile = new FileStream("stud.txt", FileMode.Open);

Global.sr = new StreamReader(Global.aFile);

Global.A1 = new stud();

Global.A2 = new stud();

Global.B1 = new grad_stud();

Global.B2 = new grad_stud();

lin = Global.sr.ReadLine();

slov = lin.Split(separator);

ob=slov[0];

if (ob == ("WindowsFormsApplication2.stud"))

{Global.A1.Name=slov[1];

Global.A1.Age=Convert.ToInt32(slov[2]);

Global.A1.Ball=Convert.ToInt32(slov[3]);

Global.A1.Group=Convert.ToInt32(slov[4]);

}

lin = Global.sr.ReadLine();

slov = lin.Split(separator);

Global.A2.Name=slov[1];

Global.A2.Age=Convert.ToInt32(slov[2]);

Global.A2.Ball=Convert.ToInt32(slov[3]);

Global.A2.Group=Convert.ToInt32(slov[4]);

lin = Global.sr.ReadLine();

slov = lin.Split(separator);

Global.B1.Name=slov[1];

Global.B1.Age=Convert.ToInt32(slov[2]);

Global.B1.Ball=Convert.ToInt32(slov[3]);

Global.B1.Group=Convert.ToInt32(slov[4]);

Global.B1.Place=slov[5];

lin = Global.sr.ReadLine();

slov = lin.Split(separator);

Global.B2.Name=slov[1];

Global.B2.Age=Convert.ToInt32(slov[2]);

Global.B2.Ball=Convert.ToInt32(slov[3]);

Global.B2.Group=Convert.ToInt32(slov[4]);

Global.B2.Place=slov[5];

Global.sr.Close();

30