Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Runtime.Serialization.Formatters.Binary;
- namespace Salary1
- {
- [Serializable]
- abstract class Employee
- {
- public string Name { get; set; }
- public double Salary { get; set; }
- public double Tax { get; set; }
- public Employee(string name, double tax)
- {
- Name = name;
- Tax = tax;
- Salary = GetSalary();
- }
- protected abstract double GetSalary();
- }
- [Serializable]
- class FixedSalary : Employee
- {
- public FixedSalary(string name, double tax)
- : base(name, tax) { }
- protected override double GetSalary()
- {
- return Tax;
- }
- }
- [Serializable]
- class TimeSalary : Employee
- {
- public TimeSalary(string name, double tax)
- : base(name, tax) { }
- protected override double GetSalary()
- {
- return 20.8 * 8 * Tax;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- #region Create journal
- List<Employee> journal = new List<Employee>();
- journal.Add(new FixedSalary("Roma Mak", 1000));
- journal.Add(new FixedSalary("Nikolay Murtov", 780));
- journal.Add(new FixedSalary("Diana Reva", 610));
- journal.Add(new FixedSalary("Dmitriy Stokov", 1190));
- journal.Add(new FixedSalary("Dmitriy Stobov", 1190));
- journal.Add(new TimeSalary("Ivan Lisov", 4));
- journal.Add(new TimeSalary("Svetlana Orekhova", 5.5));
- journal.Add(new TimeSalary("Oleg Lugniy", 5));
- journal.Add(new TimeSalary("Mila Werhova", 8));
- #endregion
- #region Sorting
- var sortJournal = journal.OrderByDescending(a => a.Salary).ThenBy(a => a.Name).ToList();
- int counter = 1;
- foreach (var item in sortJournal)
- {
- Console.WriteLine("{0}) {1} : {2}", counter++, item.Name, item.Salary);
- }
- Console.ReadKey();
- Console.Clear();
- var sortOne = journal.OrderByDescending(a => a.Salary).ThenBy(a => a.Name).Take(5).ToList();
- counter = 1;
- foreach (var item in sortOne)
- {
- Console.WriteLine("{0}) {1} : {2}", counter++, item.Name, item.Salary);
- }
- Console.ReadKey();
- Console.Clear();
- var sortTwo = journal.OrderByDescending(a => a.Salary).ThenBy(a => a.Name).Reverse().Take(3).ToList();
- counter = 1;
- foreach (var item in sortTwo)
- {
- Console.WriteLine("{0}) {1} : {2}", counter++, item.Name, item.Salary);
- }
- #endregion
- #region WriterReader
- counter = 1;
- Console.ReadKey();
- Console.Clear();
- var binary = new BinaryFormatter();
- using (FileStream fs = new FileStream("data.dat", FileMode.Create))
- {
- binary.Serialize(fs, sortJournal);
- }
- var result = binary.Deserialize(File.Open("data.dat", FileMode.Open)) as List<Employee>;
- foreach (var item in result)
- {
- Console.WriteLine("{0} : {1}", item.Name, item.Salary);
- }
- #endregion
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement