10.5 Файлдармен жұмыс жасағанда сериализация мен десериализацияны қолдану мысалы
Студенттер туралы есепте сериализация мен десериализация процесстерін қолдану мысалын қарастырайық.
10.2-есеп. Диалог режімінде студенттердің саны 20-дан аспайтын массивті құру керек. Әрбір жазбада студенттің тегі, топ атауы, емтихан балы, жасы жазылады. Монитор экранында жазбалар массивін қарап шығуды алдын ала қарастыру керек.
Жазбалар массивін монитор экранында көрсетуді, файлға жазбалар массивін сериализациялау және файлдан жазбалар массивін десериализациялау процесстерін қолдануды, файлды қайтадан қарап шығуды қарастыру керек. Бағдарламада менюді қолдану керек.
Есептің шартына сәйкес 4 өрісі бар құрылымды құрайық: студенттің аты, топ атауы, емтихан балы, студент жасы.
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication1
{
[Serializable]
struct Stydent
{
public String Name; //студенттің аты
public String Grup; // тобы
public int Ball; // балл
public int Let; // жасы
}
class Program
{
public static Stydent[] Styds = new Stydent[20];
public static int kol = 0;
public static void sozd()
{
int b;
string buf;
Console.WriteLine("Toptagi stydentter sani <= 20 !!");
buf = Console.ReadLine();
kol = Convert.ToInt32(buf);
for (int i = 0; i < kol; i++)
{
Console.WriteLine("{0}-stydenttin atin engiziniz", i + 1);
buf = Console.ReadLine();
Styds[i].Name = buf;
Console.WriteLine("{0}-stydenttin tobin engiziniz", i + 1);
buf = Console.ReadLine();
Styds[i].Grup = buf;
Console.WriteLine("{0}-stydenttin balin engiziniz", i + 1);
buf = Console.ReadLine();
b = Convert.ToInt32(buf);
Styds[i].Ball = b;
Console.WriteLine("{0}-stydenttin shasin engiziniz", i + 1);
buf = Console.ReadLine();
b = Convert.ToInt32(buf);
Styds[i].Let = b;
}
}
public static void zapf()
{
//сериализация үшін ағынды құрамыз:
FileStream StreamOut = new FileStream("Sytds.dat",
FileMode.Create, FileAccess.Write);
//екілік пішімді қолданамыз:
BinaryFormatter fmt = new BinaryFormatter();
fmt.Serialize(StreamOut, Styds); // объекттерге сериализациялау
StreamOut.Close(); // ағынды жабамыз
}
public static void printm()
{
Console.WriteLine("{0,20}, {1, 20}, {2, 10}, {3, 10}",
"Ati", "Tobi", "Ball", "Shasi");
foreach (Stydent T in Styds)
{
if (T.Ball > 0)
Console.WriteLine("{0,20}, {1, 20}, {2, 10}, {3, 10}",
T.Name, T.Grup, T.Ball, T.Let);
}
}
public static void vvod()
{
int i = 0;
//десериализация үшін ағынды құрамыз:
FileStream StreamIn = new FileStream("Sytds.dat",
FileMode.Open, FileAccess.Read);
// екілік пішімді қолданамыз:
BinaryFormatter fmt = new BinaryFormatter();
Styds = (Stydent[])fmt.Deserialize(StreamIn);//Десериализациялау
kol = 0;
while (Styds[i].Ball > 0) { kol++; i++; }
StreamIn.Close(); // ағынды жабамыз
}
public static void Main()
{
int k = 0;
string buf;
while (k < 6)
{
Console.WriteLine("1 - Massivti kyry");
Console.WriteLine("2 - Massivti failga shazy");
Console.WriteLine("3 - Massivti shigary");
Console.WriteLine("4 - faildan massivti oky");
Console.WriteLine("5 - Massivti shigary");
Console.WriteLine("6 - Shigy");
Console.WriteLine("Menu punktterin tandaniz");
buf = Console.ReadLine();
k = Convert.ToInt32(buf);
switch (k)
{
case 1: sozd(); break;
case 2: zapf(); break;
case 3: printm(); break;
case 4: vvod(); break;
case 5: printm(); break;
default: break;
}
}
}
}
}
Бағдарлама жұмысы:
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
1
Toptagi stydentter sani <= 20 !!
3
1-stydenttin atin engiziniz
Бедаш Дмитрий
1-stydenttin tobin engiziniz
09-ВТ-1
1-stydenttin balin engiziniz
90
1-stydenttin shasin engiziniz
18
2-stydenttin atin engiziniz
Жумашев Ержегит
2-stydenttin tobin engiziniz
09-ВТ-1
2-stydenttin balin engiziniz
85
2-stydenttin shasin engiziniz
19
3-stydenttin atin engiziniz
Аскарова Дина
3-stydenttin tobin engiziniz
09-ИС-1
3-stydenttin balin engiziniz
89
3-stydenttin shasin engiziniz
18
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
2
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
3
Ati, Tobi, Ball, Shasi
Бедаш Дмитрий, 09-ВТ-1, 90, 18
Жумашев Ержегит, 09-ВТ-1, 85, 19
Аскарова Дина, 09-ИС-1, 89, 18
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
6
Бағдарламаны екінші рет іске қосқанда:
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
4
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
5
Ati, Tobi, Ball, Shasi
Бедаш Дмитрий, 09-ВТ-1, 90, 18
Жумашев Ержегит, 09-ВТ-1, 85, 19
Аскарова Дина, 09-ИС-1, 89, 18
1 - Massivti kyry
2 - Massivti failga shazy
3 - Massivti shigary
4 - faildan massivti oky
5 - Massivti shigary
6 - Shigy
Menu punktterin tandaniz
Бағдарламада есептің шартына сәйкес төрт әдіс қолданылған. (студенттер массивін шығару әдісі екі рет қолданылған).
Достарыңызбен бөлісу: |