Предмет: Информатика, автор: esstry

Формат файла - текстовый (храним информацию в виде текста).
Под двоичными потоками подразумевается лучше с FileStream, BinaryStream и тд, но можно StreamWriter и StreamReader.
Под использованием диалогов для ввода данных в файл подразумевается элемент SaveFileDialog(вроде как на скрине 3)
Windows Form C#

Приложения:

Ответы

Автор ответа: ЯковПервый
1

Форма:

using System;

using System.Windows.Forms;

namespace WinFormsApp2

{

   public partial class Form1 : Form

   {

       private const int AGE_LIMIT = 20;

       public Form1()

       {

           InitializeComponent();

           ActivityComboBox.SelectedIndex = 0;

       }

       private void ClearFileDataBtn_Click(object sender, EventArgs e)

       {

           HumansListBox.Items.Clear();

       }

       private void ClearReadedTextBtn_Click(object sender, EventArgs e)

       {

           ReadedFileTextBox.Clear();

       }

       private void WriteToFileBtn_Click(object sender, EventArgs e)

       {          

           var saveDialog = new SaveFileDialog()

           {

               RestoreDirectory = true,

               DefaultExt = "txt"

           };

           var res = saveDialog.ShowDialog();

           if (res != DialogResult.OK || string.IsNullOrEmpty(saveDialog.FileName))

               return;

           try

           {

               using (var writer = new StreamWriter(saveDialog.FileName))

               {

                   foreach (Human human in HumansListBox.Items)

                   {

                       string data = string.Join(Human.FIELDS_DELIMITER, human.FullName,

                           human.Birth.ToShortDateString(), human.Activity);

                       writer.WriteLine(data);

                   }

               }

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

       }

       private void GetInfoBtn_Click(object sender, EventArgs e)

       {

           var openDialog = new OpenFileDialog()

           {

               RestoreDirectory = true

           };

           var res = openDialog.ShowDialog();

           if (res != DialogResult.OK || string.IsNullOrEmpty(openDialog.FileName))

               return;

           ReadedFileTextBox.Clear();

           try

           {

               using (var reader = new StreamReader(openDialog.FileName))

               {

                   while (!reader.EndOfStream)

                   {

                       string data = reader.ReadLine();

                       if (string.IsNullOrEmpty(data))

                           continue;

                       Human human = Human.Parse(data);

                       int age = GetAge(human.Birth);

                       if (age < AGE_LIMIT && human.Activity == Activity.Unemployed)

                           ReadedFileTextBox.Text += human + Environment.NewLine;

                   }

               }

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

       }

       private void AddHumanBtn_Click(object sender, EventArgs e)

       {

           string data = string.Join(Human.FIELDS_DELIMITER, FullNameTextBox.Text,

               BirthTextBox.Text, ActivityComboBox.SelectedItem.ToString());

           try

           {

               Human human = Human.Parse(data);

               HumansListBox.Items.Add(human);

           }

           catch

           {

               MessageBox.Show("Incorrect data.");

           }

       }

       private void DeleteHumanBtn_Click(object sender, EventArgs e)

       {

           if (HumansListBox.SelectedIndex != -1)

               HumansListBox.Items.RemoveAt(HumansListBox.SelectedIndex);

       }

       private static int GetAge(DateTime birth)

       {

           var today = DateTime.Today;

           var age = today.Year - birth.Year - 1;

           age += (today.Month > birth.Month || today.Month == birth.Month && today.Day >= birth.Day)

               ? 1

               : 0;

           return age;

       }

   }

}

Human:

using System;

using System.Linq;

namespace WinFormsApp2

{

   internal enum Activity

   {

       Working,

       Studying,

       Unemployed

   }

   internal struct Human

   {

       public const string FIELDS_DELIMITER = ",";

       public static string HumansDelimiter = Environment.NewLine;

       public string FullName { get; }

       public DateTime Birth { get; }

       public Activity Activity { get; }

       public Human(string fullName, DateTime birth, Activity activity)

       {

           FullName = fullName;

           Birth = birth;

           Activity = activity;

       }

       public override string ToString()

       {

           return $"{FullName} {Birth.ToShortDateString()} {Activity}";

       }

       public static Human[] ParseMany(string text)

       {

           return text

               .Split(new string[] { HumansDelimiter }, StringSplitOptions.RemoveEmptyEntries)

               .Select(t => Parse(t))

               .ToArray();

       }

       public static Human Parse(string text)

       {

           string[] fields = text.Split(new string[] { FIELDS_DELIMITER },

               StringSplitOptions.RemoveEmptyEntries);

           string fullName = fields[0];

           DateTime birth = DateTime.Parse(fields[1]);

           Activity activity = (Activity)Enum.Parse(typeof(Activity), fields[2]);

           return new Human(fullName, birth, activity);

       }

   }

}

Приложения:

esstry: https://znanija.com/task/48789758
Похожие вопросы
Предмет: Беларуская мова, автор: елка25
Предмет: Английский язык, автор: Анюта546
Помогите!! Нужно выбрать правильный вариант
1.His father …a doctor.
a) am b)are c)is
2… your parents at home?
a) is b)are c)am
3.There …a book on the table.
a) is b) are c) no
4. …there any chairs in the room?
a) is b) are c) no
5.I `ve got… oranges, but I haven`t got …apples
a) any; some b) some; any c) no; any
6.Are there …pupils in the classroom?
a) any b) some c) no
7.my sister/room
a) my sisters room b) my sisters` room c) my sister`s room
8.girls/ school
a) girl`s school b) girls` school c) girlses school
9.I cleaned …shoes.
a) his b)my c)her
10.Do you like …job?
a) your b) their c) our
11. Angela …speak English.
a) can b) may c) must
12…I go out?
a) can b) may c) must
13.They …a big flat.
a) have got b) has got c) is
14.I… many friends.
a) haven`t got b) hasn`t …got c) isn`t…got
15.1)games 2)soup
a) many b) much
16.1)snow 2)dogs
a) many b) much
17. 1) a potato 2) a tooth
a) potatoes b) potatos a) tooths b) toothes c) teeth
18. 1) a boy 2) a man
a) boys b) boyes c) boies a) mans b)men c) mens
19.There are 30 pupils in our class.
a) thirteen b)thirty c) forty
20.My birthday is on the 6 of November,
a) sixth b)six c) sixteenth
21. English is (easy) than Chinese.
a) easyer b) more easy c)easier
22.The weather is (good) today than it was yesterday.
a) gooder b) better c) more good
23. She is … doctor.
a) an b) the c) a
24. …Moscow is …capital of …Russia
a)the; the;the b)-;the;- c)a; -;the
25. My friend usually (go) to bed at 11 p.m..
a) will go b)goes c) is going
26.I (take) my dog for a walk every day
a)take b) takes c) are taking
27. They (watch) TV now.
a)wil watch b)watches c)are watching
28.He (play) chess at the moment.
a)are playing b)is playing c)plays
29. I (phone) you tomorrow.
a)phones b) will phone c) phone
30.We (go) to the cinema next Sunday.
a)goes b) go c)will go