Далее следует более практический пример, демонстрирующий, насколько эффективным может быть двоичный ввод-вывод. Для учета каждого предмета хранения на складе в приведенной ниже программе сначала запоминается наименование предмета, имеющееся в наличии, количество и стоимость, а затем пользователю предлагается ввести наименование предмета, чтобы найти его в базе данных. Если предмет найден, отображаются сведения о его запасах на складе.

/* Использовать классы BinaryReader и BinaryWriter для

реализации простой программы учета товарных запасов. */

using System; using System.10;

class Inventory {

static void Main() {

BinaryWriter dataOut;

BinaryReader dataln;

string item; // наименование предмета

int onhand; // имеющееся в наличии количество

double cost; // цена

try {

dataOut = new

BinaryWriter(new FileStream("inventory.dat", FileMode.Create));

}

catch(IOException exc) {

Console.WriteLine("He удается открыть файл " +

"товарных запасов для вывода");

Console.WriteLine("Причина: " + exc.Message); return;

}

// Записать данные о товарных запасах в файл, try {

dataOut.Write("Молотки"); dataOut.Write(10); dataOut.Write(3.95);

dataOut.Write("Отвертки"); dataOut.Write(18); dataOut.Write(1.50);

dataOut.Write("Плоскогубцы"); dataOut.Write(5);

dataOut.Write (4.95);

dataOut.Write("Пилы"); dataOut.Write (8); dataOut.Write(8.95);

}

catch(IOException exc) {

Console.WriteLine("Ошибка записи в файл товарных запасов");

Console.WriteLine("Причина: " + exc.Message);

} finally {

dataOut.Close();

}

Console.WriteLine() ;

// А теперь открыть файл товарных запасов для чтения, try {

dataln = new

BinaryReader(new FileStream("inventory.dat", FileMode.Open));

}

catch(IOException exc) {

Console.WriteLine("He удается открыть файл " +

"товарных запасов для ввода");

Console.WriteLine("Причина: " + exc.Message); return;

}

// Найти предмет, введенный пользователем.

Console.Write("Введите наименование для поиска: "); string what = Console.ReadLine() ;

Console.WriteLine();

try {

for (;;)    {

// Читать данные о предмете хранения, item = dataln.ReadString() ; onhand = dataln.Readlnt32() ; cost = dataln.ReadDouble();

// Проверить, совпадает ли он с запрашиваемым предметом.

// Если совпадает, то отобразить сведения о нем.

if(item.Equals(what, StringComparison.OrdinallgnoreCase)) {

Console.WriteLine(item + ": " + onhand + " штук в наличии. " +

"Цена: {0:С} за штуку", cost);

Console.WriteLine("Общая стоимость по наименованию <{0}>: {1:С}.", item, cost * onhand);

break;

}

}

}

catch(EndOfStreamException) {

Console.WriteLine("Предмет не найден.");

Перейти на страницу:

Похожие книги