3.Алгоритмы
Рис. 2. Алгоритм функции Main
Рис. 3. Алгоритм функции Load
No
No
Рис. 4. Алгоритм функции FindType
4. Интерфейс
Взаимодействие с пользователем осуществляется при помощи меню и диалогов. При запуске программы на экране появляется на экране окно с «Меню», где пользователь может выбрать нужное действие (просмотр, добавление новой записи, поиск и выход).
Рис. 5. Меню программы
При выборе пункта «Просмотр» на экране появляется информация из файла.
Рис. 6. Вывод БД на экран
При выборе пункта "Добавление новой записи" на экране появляются подсказки с полями, которые необходимо заполнить.
Рис. 7. Добавление новой записи.
При выборе пункта "Поиск" пользователю предлагается выбор критерия для поиска. После выбора критерия, требуется ввести либо тип, либо цветность печати. Если записей в БД с соответствующим критериям нет, будет выведено сообщение: «В базе данных нет запрашиваемых значений».
Рис. 8. Меню поиска
При вводе года или страны на экран выводится информация об искомых принтерах.
Рис. 9. Результат выполнения поиска
5. Функции
В таблице 1 приведены функции программы работы с БД.
Таблица 1. Функции
Функция |
Описание |
Разработчик |
Main |
Основная программа |
Ядрихинская А.В. |
Menu() |
Функция вывода основного меню. Возвращает вводимое пользователем значение. |
Ядрихинская А.В. |
ChoiseMenu() |
Функция вывода меню поиска. Возвращает вводимое пользователем значение. |
Ядрихинская А.В. |
Add(List<Printer> list) |
Функция добавления записи в список принтеров |
Ядрихинская А.В. |
Show(List<Printer> list) |
Функция вывода списка принтеров на экран |
Ядрихинская А.В. |
FindType(List<Printer> list) |
Функция поиска по типу и вывода на экран найденных записей |
Ядрихинская А.В. |
FindColorful(List<Printer> list) |
Функция поиска по цветности печати и вывода на экран найденных записей |
Ядрихинская А.В. |
Load(List<Printer> list, string link) |
Функция загрузки БД из файла в список |
Ядрихинская А.В. |
Save(List<Printer> list, string link) |
Функция сохранения БД в файле |
Ядрихинская А.В. |
6. Листинги
В листингах 3, 4, 5, 6, 7, 8, 9, 10 и 11 приведены процедуры Main, Menu(), ChoiseMenu(), Write(List<Printer> list), Show(List<Printer> list), FindType(List<Printer> list), FindColorful(List<Printer> list), Load(List<Printer> list, string link) и Save(List<Printer> list, string link) соответственно.
Листинг 3. Функция Main()
static void Main(string[] args)
{
int p = 0, f = 0;
List<Printer> printers = new List<Printer>();
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string Textfile = path + "//ydr.txt";
Console.WriteLine("\n База данных принтеров");
Load(printers, Textfile);
do
{
p = Menu();
switch (p)
{
case 1: Show(printers); break;
case 2: Add(printers); break;
case 3:
do
{
f = ChoiseMenu();
switch (f)
{
case 1: FindType(printers); break;
case 2: FindColorful(printers); break;
case 0: Console.WriteLine("\n Выход из меню поиска"); break;
default: break;
}
} while (f != 0);
break;
case 0: Console.WriteLine("\n До свидания!"); break;
default: break;
}
} while (p != 0);
Save(printers, Textfile);
}
Листинг 4. Функция Menu()
static int Menu()
{
int ch;
Console.WriteLine("--------------------------------------------------------------------------------");
Console.Write(" 1 - Просмотр \n 2 - Добавить \n 3 - Поиск \n 0 - Выход\n Ваш выбор: ");
ch = System.Convert.ToInt32(Console.ReadLine());
Console.WriteLine("--------------------------------------------------------------------------------");
return ch;
}
Листинг 5. Функция ChoiseMenu()
static int ChoiseMenu()
{
int ch;
Console.Write(" \n 1 - Поиск по типу \n 2 - Поиск по цветности печати \n 0 - Выход\n Ваш выбор: ");
ch = System.Convert.ToInt32(Console.ReadLine());
return ch;
}
Листинг 6. Функция Add(List<Printer> list)
static void Add(List<Printer> list)
{
Console.Write("\nДобавление новой записи.");
int i = list.Count;
Console.Write("\nНаименование: ");
string n = Console.ReadLine();
Console.Write("Тип принтера: ");
string t = Console.ReadLine();
Console.Write("Цвет принтера: ");
int c = System.Convert.ToInt32(Console.ReadLine());
Console.Write("Цветность печати: ");
string cf = Console.ReadLine();
Console.Write("Стоимость: ");
int p = System.Convert.ToInt32(Console.ReadLine());
Printer novoe = new Printer(n, t, c, cf, p);
list.Add(novoe);
Console.WriteLine("");
}
Листинг 7. Функция Show(List<Printer> list)
static void Show(List<Printer> printer)
{
int i = 0;
Console.WriteLine("-----------------------------------------------------------------------------------------------");
Console.WriteLine("\n{0,-20} {1,-15} {2,-4} {3,-10} {4}", "Наименование", "Тип принтера", "Цвет", "Цветность печати", "Стоимость (руб.);
Console.WriteLine("-----------------------------------------------------------------------------------------------");
for (i = 0; i < printer.Count; i++)
{
Console.WriteLine("\n{0,-20} {1,-15} {2} {3,-10} {4}", printer[i].title, printer[i].type, printer[i].color, printer[i].colorful, printer[i].price);
}
Console.WriteLine("-----------------------------------------------------------------------------------------------");
}
Листинг 8. Функция FindType(List<Printer> list)
static void FindType(List<Printer> printer)
{
string crit;
int j = 0;
Console.Write("\n Тип принтера: ");
crit = Console.ReadLine();
Console.WriteLine("-----------------------------------------------------------------------------------------------");
Console.WriteLine("\n{0,-20} {1,-15} {2,-4} {3,-10} {4}", "Наименование", "Тип принтера", "Цвет", "Цветность печати", "Стоимость");
Console.WriteLine("-----------------------------------------------------------------------------------------------");
for (int i = 0; i < printer.Count; i++)
if (crit.ToLower() == printer[i].type.ToLower())
{
Console.WriteLine("\n{0,-20} {1,-15} {2} {3,-10} {4}", printer [i].title, printer[i].type, printer[i].color, printer[i].colorful, printer[i].price);
j++;
}
if (j == 0)
Console.WriteLine(" В базе данных нет запрашиваемых значений");
Console.WriteLine("-----------------------------------------------------------------------------------------------");
}
Листинг 9. Функция FindColorful(List<Printer> list)
static void FindColorful(List<Printer> printer)
{
string crit;
int j = 0;
Console.Write("\n Цветность печати: ");
crit = Console.ReadLine();
Console.WriteLine("-----------------------------------------------------------------------------------------------");
Console.WriteLine("\n{0,-20} {1,-15} {2,-4} {3,-10} {4}", "Наименование", "Тип принтера", "Цвет", "Цветность печати", "Стоимость");
Console.WriteLine("-----------------------------------------------------------------------------------------------");
for (int i = 0; i < printer.Count; i++)
if (crit.ToLower == printer[i].colorful.ToLower())
{
Console.WriteLine("\n{0,-20} {1,-15} {2} {3,-10} {4}", printer [i].title, printer[i].type, printer[i].color, printer[i].colorful, printer[i].price);
j++;
}
if (j == 0)
Console.WriteLine(" В базе данных нет запрашиваемых значений");
Console.WriteLine("-----------------------------------------------------------------------------------------------");
}
Листинг 10. Функция Load(List<Printer> list, string link)
static void Load(List <Printer> printer, string link)
{
if (System.IO.File.Exists(link))
{
System.IO.StreamReader sr = new System.IO.StreamReader(link);
while (!sr.EndOfStream)
{
string title = sr.ReadLine();
string type = sr.ReadLine();
string color = sr.ReadLine();
string colorful = sr.ReadLine();
string sprice = sr.ReadLine();
int price = System.Convert.ToInt32(sprice);
printer.Add(new Printer(title, type, color, colorful, price));
}
sr.Close();
}
}
Листинг 11. Функция Save(List<Printer> list, string link)
static void Save(List<Printer> printer, string link)
{
bool mode = false;
if (System.IO.File.Exists(link))
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(link, mode);
for (int j = 0; j < film.Count; j++)
{
sw.WriteLine(printer[j].title);
sw.WriteLine(printer[j].type);
sw.WriteLine(printer[j].color);
sw.WriteLine(printer[j].colorful);
sw.WriteLine(System.Convert.ToString(printer[j].price));
}
Console.WriteLine("База успешно перезаписана");
sw.Close();
}
}
