codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace StudentsToBynaryFile { class Program { static void Main(string[] args) { // Список студентов List<Student> students = new List<Student>(); // Команда пользователя string command; // Имя, фамилия string firstName, secondName; // Курс int course; // Факультет string faculty; // Цикл работает пока пользователь не введёт команду: stop do { // Предлагаем пользователю ввести комманду Console.Write("\nEnter a command: "); command = Console.ReadLine(); // Проверяем какую команду ввёл пользователь и выполняем её switch (command) { case "add": // Имя Console.Write("Enter a firstName: "); firstName = Console.ReadLine(); // Фамилия Console.Write("Enter a secondName: "); secondName = Console.ReadLine(); // Курс Console.Write("Enter a course: "); course = int.Parse(Console.ReadLine()); //course = Convert.ToInt32(Console.ReadLine()); // Факультет Console.Write("Enter a faculty: "); faculty = Console.ReadLine(); Student student = new Student(); student.info = new FIO(); student.info.firstName = firstName; student.info.secondName = secondName; student.course = course; student.faculty = faculty; students.Add(student); break; case "show": for (int i = 0; i < students.Count; ++i) { Console.WriteLine("First Name: " + students.ElementAt(i).info.firstName); Console.WriteLine("Second Name: " + students.ElementAt(i).info.secondName); Console.WriteLine("Course: " + students.ElementAt(i).course); Console.WriteLine("Faculty: " + students.ElementAt(i).faculty); } break; case "save": SerializableObject obj = new SerializableObject(); obj.Students = students; MySerializer serializer = new MySerializer(); serializer.SerializeObject("output.txt", obj); break; case "load": SerializableObject obj2 = new SerializableObject(); MySerializer serializer2 = new MySerializer(); obj2 = serializer2.DeserializeObject("output.txt"); students = obj2.Students; break; case "help": Console.WriteLine("add"); Console.WriteLine("show"); Console.WriteLine("save"); Console.WriteLine("load"); Console.WriteLine("stop"); break; case "stop": break; default: Console.WriteLine("Error: incorrect command. Please, type: help"); break; } } while (command != "stop"); } } [Serializable] public class SerializableObject : ISerializable { private List<Student> students; public List<Student> Students { get { return this.students; } set { this.students = value; } } public SerializableObject() { } public SerializableObject(SerializationInfo sInfo, StreamingContext contextArg) { this.students = (List<Student>)sInfo.GetValue("Students", typeof(List<Student>)); } public void GetObjectData(SerializationInfo sInfo, StreamingContext contextArg) { sInfo.AddValue("Students", this.students); } } //information about student [Serializable] public class Student : ISerializable { public Student() { } public Student(SerializationInfo sInfo, StreamingContext contextArg) { this.course = (int)sInfo.GetValue("Course", typeof(int)); this.faculty = (string)sInfo.GetValue("Faculty", typeof(string)); this.info = (FIO)sInfo.GetValue("FIO", typeof(FIO)); } public void GetObjectData(SerializationInfo sInfo, StreamingContext contextArg) { sInfo.AddValue("Course", this.course); sInfo.AddValue("Faculty", this.faculty); sInfo.AddValue("FIO", this.info); } public int course; public string faculty; public FIO info; } //personal information [Serializable] public class FIO : ISerializable { public FIO() { } public FIO(SerializationInfo sInfo, StreamingContext contextArg) { this.firstName = (string)sInfo.GetValue("FirstName", typeof(string)); this.secondName = (string)sInfo.GetValue("SecondName", typeof(string)); } public void GetObjectData(SerializationInfo sInfo, StreamingContext contextArg) { sInfo.AddValue("FirstName", this.firstName); sInfo.AddValue("SecondName", this.secondName); } public string firstName; public string secondName; } public class MySerializer { public MySerializer() { } public void SerializeObject(string fileName, SerializableObject objToSerialize) { FileStream fstream = File.Open(fileName, FileMode.Create); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(fstream, objToSerialize); fstream.Close(); } public SerializableObject DeserializeObject(string fileName) { SerializableObject objToSerialize = null; FileStream fstream = File.Open(fileName, FileMode.Open); BinaryFormatter binaryFormatter = new BinaryFormatter(); objToSerialize = (SerializableObject)binaryFormatter.Deserialize(fstream); fstream.Close(); return objToSerialize; } } }
Private
[
?
]
Run code
Submit