Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApp40
- {
- class Program
- {
- // Описать функцию заполнения массивов досье,
- //функцию форматированного вывода и функцию удаления досье.
- //(+6 баллов за систему поиска по !фамилии!)
- ////Функция расширяет уже имеющийся массив на
- //1 и дописывает туда новое значение.
- //Будет 2 массива: 1) фио 2) должность.
- //Программа должна быть с меню, которое содержит пункты:
- //1) добавить досье.
- //2) вывести все досье(в одну строку через “-”
- //фио и должность с порядковым номером в начале)
- //3) удалить досье
- //4) выход
- static void Main(string[] args)
- {
- int s4et = 0;
- string[] FiO = new string[0];
- int na4FiO = 0;
- int na4Pos = 0;
- string[] Pos = new string[0];
- Console.CursorVisible = false;
- int End = 0; // убийство цикла через ескейп
- int width = Console.WindowWidth;
- HelloScreen();
- Console.ReadLine();
- int height = Console.WindowHeight;
- while (true)
- {
- WriteFirstScreen();
- ConsoleKeyInfo charKey = Console.ReadKey();
- switch (charKey.Key)
- {
- case ConsoleKey.Escape:
- End = 5;
- Console.SetCursorPosition(0, height - 2);
- Console.WriteLine();
- break;
- case ConsoleKey.A: //Добавить профиль
- AddProfile(ref FiO, na4FiO, na4Pos, ref Pos);
- na4FiO += 3; // разделение массива по 3 (Фамилия Имя Отчество)
- na4Pos++;
- int len = FiO.Length;
- for (int i = 0; i < FiO.Length; i++)
- {
- Console.WriteLine(FiO[i]);
- }
- Console.ReadLine();
- break;
- case ConsoleKey.Delete: //удалить
- if (FiO.Length == 0)
- {
- Console.Clear();
- Console.SetCursorPosition(width / 2 - 24, 9);
- Console.WriteLine("В базе отсуствуют профили");
- Console.SetCursorPosition(width / 2 - 24, 11);
- Console.WriteLine("Нажмите любую кнопку чтобы продолжить");
- Console.ReadLine();
- break;
- }
- DeleteProfile(ref FiO, na4FiO, na4Pos, ref Pos);
- na4FiO -= 3; // разделение массива по 3 (Фамилия Имя Отчество)
- na4Pos--;
- break;
- case ConsoleKey.W: //
- if (FiO.Length == 0)
- {
- Console.Clear();
- Console.SetCursorPosition(width / 2 - 24, 9);
- Console.WriteLine("В базе отсуствуют профили");
- Console.SetCursorPosition(width / 2 - 24, 11);
- Console.WriteLine("Нажмите любую кнопку чтобы продолжить");
- Console.ReadLine();
- break;
- }
- WriteName(ref FiO, na4FiO, na4Pos, ref Pos);
- break;
- //case ConsoleKey.F: // поиск по имени
- // if (FiO.Length == 0)
- // {
- // Console.Clear();
- // Console.SetCursorPosition(width / 2 - 24, 9);
- // Console.WriteLine("В базе отсуствуют профили");
- // Console.SetCursorPosition(width / 2 - 24, 11);
- // Console.WriteLine("Нажмите любую кнопку чтобы продолжить");
- // Console.ReadLine();
- // break;
- // }
- // FindFam(ref FiO, na4FiO, na4Pos, ref Pos);
- // break;
- }
- if (End == 5) // сломать цикл программы
- break;
- }
- int ver = 0;
- for (int i = 0; i < FiO.Length - 2; i += 3)
- {
- Console.Write(FiO[i] + " ");
- Console.Write(FiO[i + 1] + " ");
- Console.Write(FiO[i + 2] + " ");
- Console.Write(Pos[ver]);
- ver++;
- Console.WriteLine();
- }
- }
- static void AddProfile(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
- //не создается в функции, а main дает ссылку на массив.
- {
- Console.Clear();
- string[] tempFiO = new string[FiO.Length + 3];
- string[] tempPos = new string[Pos.Length + 1];
- for (int i = 0; i < FiO.Length; i++)
- {
- tempFiO[i] = FiO[i];
- }
- Console.WriteLine("Введите фамилию имя и отчество через пробелы");
- string line = Console.ReadLine();
- String[] words = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
- tempFiO[na4FiO] = words[0];
- tempFiO[na4FiO + 1] = words[1];
- tempFiO[na4FiO + 2] = words[2];
- FiO = tempFiO;
- for (int i = 0; i < Pos.Length; i++)
- {
- tempPos[i] = Pos[i];
- }
- Console.WriteLine("Введите должность");
- tempPos[na4Pos] = Console.ReadLine();
- Pos = tempPos;
- }
- static void HelloScreen()
- {
- int width = Console.WindowWidth;
- int height = Console.WindowHeight;
- Console.SetCursorPosition(width / 2 - 24, 7);
- Console.Write("Добро пожаловать в программу кадрового учёта");
- Console.SetCursorPosition(width / 2 - 24, 9);
- Console.Write("Вам доступны клавиши для работы *ESC* *A* *W* *DEL* *F*");
- Console.SetCursorPosition(width / 2 - 24, 11);
- Console.Write("Если хотите добавить профиль, нажмите *A*");
- Console.SetCursorPosition(width / 2 - 24, 13);
- Console.Write("Для вывода списка базы данных нажмите W");
- Console.SetCursorPosition(width / 2 - 24, 14);
- Console.Write("При выводе списка можно осуществить поиск по клавише F");
- Console.SetCursorPosition(width / 2 - 24, 16);
- Console.Write("Delete позволяет зайти в меню удаления профиля");
- Console.SetCursorPosition(width / 2 - 24, 17);
- Console.Write("Внимание! при удалении профиля порядковый номер сдвигается на 1");
- Console.SetCursorPosition(width / 2 - 24, 18);
- Console.Write("Чтобы узнать его воспользуйтесь выводом W");
- Console.SetCursorPosition(width / 2 - 24, 20);
- Console.Write("Escape чтобы выйти из программы.");
- Console.SetCursorPosition(width / 2 - 24, 21);
- Console.Write("Если зашли в меню то позволяет выйти в главное меню");
- Console.SetCursorPosition(width / 2 - 24, 23);
- Console.Write("Для продолжения нажмите любую кнопку");
- Console.ReadLine();
- Console.Clear();
- Console.SetCursorPosition(width / 2 - 24, 7);
- Console.Write("На этом введение наше закончилось");
- Console.SetCursorPosition(width / 2 - 24, 9);
- Console.Write("Для продолжения нажмите любую кнопку");
- }
- static void WriteFirstScreen()
- {
- int width = Console.WindowWidth;
- int height = Console.WindowHeight;
- Console.Clear();
- Console.BackgroundColor = ConsoleColor.White;
- Console.ForegroundColor = ConsoleColor.Black;
- for (int i = 0; i < width; i++)
- {
- for (int j = 0; j < height + 7; j++)
- Console.Write(' ');
- }
- Console.SetCursorPosition(0, 0);//сдвиг консоли убирает
- Console.WriteLine();
- for (int i = 0; i < width; i++)
- {
- Console.SetCursorPosition(i, 0);
- Console.Write("#");
- Console.SetCursorPosition(i, 2);
- Console.Write("#");
- }
- Console.SetCursorPosition(width / 2 - 25, 1);
- Console.Write("Кадровый учёт Урюпинского межбаллистического завода №46");
- Console.SetCursorPosition(width / 2 - 24, 9);
- Console.Write("Вам доступны клавиши для работы *ESC* *A* *W* *DEL* *F*");
- Console.SetCursorPosition(width / 2 - 24, 11);
- Console.Write("Если хотите добавить профиль, нажмите *A*");
- Console.SetCursorPosition(width / 2 - 24, 13);
- Console.Write("Для вывода списка базы данных нажмите W");
- Console.SetCursorPosition(width / 2 - 24, 14);
- Console.Write("При выводе списка можно осуществить поиск по клавише F");
- Console.SetCursorPosition(width / 2 - 24, 16);
- Console.Write("Delete позволяет зайти в меню удаления профиля");
- Console.SetCursorPosition(0, 0);//сдвиг консоли убирает
- Console.WriteLine();
- }
- //
- static void WriteName(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
- //не создается в функции, а main дает ссылку на массив.
- {
- int epic = 0;
- Console.Clear();
- while (epic < 2&& FiO.Length != 0)
- {
- Console.Clear();
- int s4et = 0;
- int ii = 0;
- for (int i = 0; i < FiO.Length - 2; i += 3)
- {
- Console.WriteLine(FiO[i] + ' ' + FiO[i + 1] + ' ' + FiO[i + 2] + ", должность- " + Pos[s4et] + ", а порядковый номер" + (s4et + 1));
- s4et++;
- }
- s4et = 0;
- Console.WriteLine("Для поиска нажмите F или Escape чтобы выйти");
- ConsoleKeyInfo charKey = Console.ReadKey();
- switch (charKey.Key)
- {
- case ConsoleKey.F:
- Console.Clear();
- Console.WriteLine("Введите фамилию для поиска");
- string name = Console.ReadLine();
- for (int i = 0; i < FiO.Length - 2; i += 3)
- {
- s4et++;
- ii = i;
- if (name.ToLower() == FiO[i].ToLower())
- {
- break;
- }
- }
- Console.WriteLine(FiO[ii] + ' ' + FiO[ii + 1] + ' ' + FiO[ii + 2] + ", должность- " + Pos[s4et - 1] + ", а порядковый номер" + (s4et));
- Console.WriteLine("нажмите любую клавишу чтобы продолжить");
- Console.ReadLine();
- break;
- case ConsoleKey.Escape:
- epic = 5;
- break;
- }
- s4et = 0;
- ii = 0;
- }
- }
- //
- static void FindFam(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
- //не создается в функции, а main дает ссылку на массив.
- {
- int end = 0;
- while (end < 2)
- {
- Console.Clear();
- int s4et = 0;
- int ii = 0;
- int ver = 0;
- bool r = false;
- Console.WriteLine("Введите фамилию для поиска");
- string name = Console.ReadLine();
- for (int i = 0; i < FiO.Length - 2; i += 3)
- {
- s4et++;
- ii = i;
- if (name.ToLower() == FiO[i].ToLower())
- {
- ver = 1;
- Console.WriteLine(FiO[ii] + ' ' + FiO[ii + 1] + ' ' + FiO[ii + 2] + ", должность- " + Pos[s4et - 1] + ", а порядковый номер" + (s4et));
- break;
- }
- }
- if (ver == 0)
- Console.WriteLine("Нет такой фамилии. Для продолжения нажмите\nлюбую клавишу или Escape чтобы выйти ");
- ConsoleKeyInfo charKey = Console.ReadKey();
- switch (charKey.Key)
- {
- case ConsoleKey.Escape:
- end = 5;
- break;
- }
- }
- }
- static void WriteProfile()
- {
- }
- static void DeleteProfile(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
- //не создается в функции, а main дает ссылку на массив.
- {
- int end = 0;
- while (end < 2&& FiO.Length!=0)
- {
- Console.Clear();
- string[] tempFiO = new string[FiO.Length - 3];
- string[] tempPos = new string[Pos.Length - 1];
- int s4et = 0;
- int ver = 0;
- bool r = false;
- Console.WriteLine("Введите фамилию для поиска на удаление");
- string name = Console.ReadLine();
- for (int i = 0; i < FiO.Length - 2; i += 3)
- {
- if (name.ToLower() == FiO[i].ToLower())
- {
- for (int j = i; j < FiO.Length - 3; j++)
- {
- FiO[j] = FiO[j + 3];
- }
- r = true;
- ver = 1;
- break;
- }
- s4et++;
- }
- if (r == true)
- for (int i = s4et; i < Pos.Length - 1; i++)
- {
- Pos[i] = Pos[i + 1];
- }
- for (int i = 0; i < tempFiO.Length; i++)
- {
- tempFiO[i] = FiO[i];
- }
- for (int i = 0; i < tempPos.Length; i++)
- {
- tempPos[i] = Pos[i];
- }
- if (ver == 1)
- {
- Pos = tempPos;
- FiO = tempFiO;
- Console.WriteLine("Удаление прошло успешно. Нажмите любую клавишу чтобы продолжить.Escape чтобы выйти ");
- }
- if (ver == 0)
- Console.WriteLine("Нет такой фамилии. Для продолжения нажмите\nлюбую клавишу или Escape чтобы выйти ");
- s4et = 0;
- ConsoleKeyInfo charKey = Console.ReadKey();
- switch (charKey.Key)
- {
- case ConsoleKey.Escape:
- end = 5;
- break;
- }
- }
- }
- //string[] tempFiO = new string[FiO.Length + 3]; //Делаем массив про разбиваем так 0 элемент Фамилия, 1 Имя 2 Отчество 3 Фамилия... Чтобы мы могли реализовать поиск по фамилии
- //string[] tempPos = new string[Pos.Length + 1];
- //for (int i = na4FiO; i < na4FiO + 1; i++)
- //{
- // Console.WriteLine("Фамилию имя и отчество через пробелы");
- // string line = Console.ReadLine();
- // String[] words = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
- // tempFiO[i] = words[0];
- // tempFiO[i + 1] = words[1];
- // tempFiO[i + 2] = words[2];
- //}
- //FiO = tempFiO;
- //for (int i = na4Pos; i < na4Pos + 1; i++)
- //{
- // Console.WriteLine("Введите Должность");
- // tempPos[i] = Console.ReadLine();
- //}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement