Golden_Stream (Ответ_на_вопрос) все записи автора
Здесь есть программисты , работающие с языком с++ ?
очень нужна ваша помощь!
Нужно написать код программы.. сделать базу данных по этому заданию:
Имеется следующая информация о телевизорах на складе:
> наименование;
> фирма-изготовитель;
> стоимость;
> размер экрана;
> количество на складе.
Выведите стоимости названия телевизоров и их количество на складе.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
как пример дана такая программа:
/*
//Эта программа последовательно читает файл
//произвольного доступа; создает текстовый файл счетов;
//обновляет данные, уже записанные в файл;
//создает новые данные в файле; удаляет старые данные из файла;
//выдает общий счет.
#include
#include
#include
#include
#include
struct Client{
int Num;
char lastName[15];
char firstName[10];
float balance; };
int enterChoice ();
// в эти функции будет передаваться в нашем случае
//программное имя My_base, тип которого fstream&- ссылка на класс файлового ввода-вывода
void textFile(fstream&);
void updateRecord(fstream&);
void newRecord(fstream&);
void deleteRecord(fstream&);
void outputLine (ostream&,Client);
void common_account(fstream&);
int main ()
{
// здесь режимы открытия файла для ввода и для вывода
fstream My_base ("d:\\base.dat", ios::in | ios::out);
if ( ! My_base)
{
cerr << "The file can't be opened!" << endl;
exit(1);
}
// для выбора нужного пункта
int choice;
while ( (choice = enterChoice () ) !=6)
{
switch (choice)
{
case 1: textFile (My_base);
break;
case 2: updateRecord(My_base);
break;
case 3: newRecord(My_base);
break;
case 4: deleteRecord (My_base);
break;
case 5: common_account (My_base);
break;
default: cerr << "Incorrect choice" << endl;
break;
}
My_base.clear () ; // сброс индикатора конца файла
}
return 0;
}
// приглашение выбрать пункт меню
int enterChoice ()
{
cout << endl << "Your Choice:" << endl
// создание текстового файла счетов с именем print.txt для печати
<< "1 - create a text format file of accounts" << endl
<< " \"print.txt\" for print"<< endl
//изменение уже имеющихся данных
<< "2 - update an account" << endl
// добавление новых счетов
<< "3 - add a new account" <
/ удаление счетов
<< "4 - delete an account" << endl
// общий счет
<< "5 - the common account" <
/ конец работы с базой данных
<< "6 - the end of the work" <> menuChoice;
return menuChoice;
}
// описание функции для создания форматированного текстового файла, предназначенного для печати
void textFile (fstream &readFromFile)
{
// программное имя PrintFile связали с файлом print.txt
ofstream PrintFile ("d:\\print.txt", ios:: out);
if (! PrintFile)
{
cerr << "The file cannot be opened" << endl;
exit (1);
}
PrintFile << setiosflags (ios :: left) << setw(6)<< "Num"
<< setw(16) << "Last Name" << setw(11) << "Name"
<
/ вывод осуществляется в файл
readFromFile.read ( (char *) &client, sizeof (client) );
}
}
//------------------------------------------------------------------------------
// изменение баланса счета
void updateRecord (fstream &updateFile) {
int account;
do
{
// введите номер счета, который должен быть изменен
cout<<"Input the account which should be changed (1-100): ";
cin >> account;
}
while (account < 1 || account > 100) ;
Client client;
// выход на нужную запись
updateFile.seekg ( (account - 1) * sizeof (client) );
// чтение
updateFile.read ( (char *) &client, sizeof (client) );
if (client.Num != 0)
{
outputLine (cout, client) ;
// введите расходы (charges) со знаком (-) или доплату (extra charges) со знаком (+)
cout << endl << "Input charges ( + ) or extra charges (-) : ";
// сделка
float transaction;
cin >> transaction;
client.balance += transaction;
updateFile.seekp ( (account - 1) * sizeof (client) );
// запись
updateFile.write ( (char *)&client, sizeof (client) );
outputLine (cout, client);
} else
cerr << "Account No. " << account
<< " not filled in" << endl; // не заполнен
}
// создание и вставка новой записи
void newRecord(fstream &insertInFile)
{
// введите новый счет
cout << "Input a new account number (1-100) : ";
int account;
cin >> account;
Client client;
insertInFile.seekg ( (account - 1) + sizeof (client) );
insertInFile.read ((char *) &client, sizeof (client));
if (client.Num == 0)
{
cout <<"Input LastName, FirstName, balance" <>client.lastName >> client.firstName >>client.balance;
client.Num = account;
insertInFile.seekp( (account - 1) *sizeof(Client));
insertInFile.write((char *) &client, sizeof (Client));
}
else // счет уже содержит информацию
cerr<<"Account No. "<< account
<< " contains already some information" << endl;
}
// удаление существующей записи
void deleteRecord(fstream &deleteFromFile)
{
// введите номер счета для удаления
cout<<"Input the account number for moving off (1-100): ";
int account;
cin >> account;
Client client;
deleteFromFile.seekg((account - 1) * sizeof(client));
deleteFromFile.read((char *) &client, sizeof (client));
if (client.Num != 0)
{
Client blankClient = {0,"", "", 0};
deleteFromFile.seekp((account - 1) * sizeof(client));
deleteFromFile.write((char *)&blankClient, sizeof(client));
// номер счета был удален
cout<<"Account Number "<< account
<< " was deleted" << endl;
}
else
// счет пустой
cout <<"Account No. " << account << "is empty" << endl;
}
// вывод строки с информацией о клиенте
void outputLine (ostream &output, Client c)
{
output << setiosflags (ios::left) << setw(6) << c.Num
<< setw(16) << c.lastName << setw(11) << c.firstName
<< setiosflags(ios::showpoint | ios::right)
<< setw(15) << setprecision(5) << c.balance << endl;
}
// вычисление общего счета
void common_account(fstream &CalculationinFile)
{
float Comm_Account=0;
CalculationinFile.seekg(0);
Client client;
CalculationinFile.read((char *) &client, sizeof(client));
while (!CalculationinFile.eof())
{
if (client.Num != 0)
Comm_Account += client .balance;
CalculationinFile.read((char *) &client, sizeof(client));
}
printf ("The common account = %lf\n", Comm_Account) ;
}
*/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
у меня лишь получилось это......
#include //для основной работы
#include //для использования формата ввода-вывода
#include //для записи и чтения из файла
#include
#include
#include
#include //для русификатора
//----------------------------------------------------------
struct table
{
char Naimenovanie[20];
char Firma[25];
float Stoimost;
double Razmer;
int Kolichestvo;
};
int enterChoice();
void NewRecord(fstream&); //функция для добавления новой записи
//функция для чтения из файла (добавить)
void Exit(fstream&); //функция для выхода из программы
//---------------------------------------------------------------
int main()
{
ofstream My_base("1.txt");//создаёт поток записи в файл 1.txt
if(!My_base)//проверяем открытие файла 1.txt
{
cout<<"File not open";
exit(-1);
}
//-----------------------------------------------------------------
int Vibor; //для выбора нужного пункта
while ( (Vibor = enterChoice () ) !=2)
{
switch (Vibor)
{
case 1: NewRecord(My_base);
break;
default: cerr << "Incorrect choice" << endl;
break;
}
My_base.clear(); //сброс индикатора конца файла
}
return 0;
//--------------------------------------------------------
int enterChoice() //приглашение выбрать пункт меню
{
cout<> menuChoice;
return menuChoice;
}
void NewRecord (fstream &insertInFile) //описание функции, которая создаёт и вставляет новые записи в файл
{
cout<>account;
Client client;
insertInFile.seekg ( (account - 1) + sizeof (client) );
insertInFile.read ((char *) &client, sizeof (client));
if (client.Num == 0)
{
cout <<"Input LastName, FirstName, balance" <>client.lastName >> client.firstName >>client.balance;
client.Naimenovanie = account;
insertInFile.seekp( (account - 1) *sizeof(Client));
insertInFile.write((char *) &client, sizeof (Client));
}
else // счет уже содержит информацию
cerr<<"Account No. "<< account
<< " contains already some information" << endl;
}
*/