Такое уже было - смотрел в поиске, но ничего не подошло.
Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <iomanip.h>
#include <fstream.h>
#include <windows.h>
ostream & operator<<(ostream & out,char *s)
{
char bufer[512], *p=bufer;
CharToOem(s, bufer);
while(*p) //Функция CharToOem преобразует
out<<*p++; //строку в набор символов ОЕМ.
return out;
}
class sprav_video {
private:
char manuf;
char charact;
int price;
friend ostream & operator<<(ostream &stream, sprav_video &o1);
friend void shapka();
friend void linebuild();
public:
int n;
void add();
void del();
void del2();
};
class Database: public sprav_video {
char title[40];
sprav_video *rows[15];
int col;
int sorted;
public:
Database(char *q) {strcpy(title,q); col=0; sorted=0;}
~Database() {if (col) for (int i=0; i<col; i++) delete rows[i];}
friend ostream & operator<<(ostream &stream, Database &temp);
};
ostream & operator<<(ostream &stream, Database &o1) {
stream<<o1.title<<endl;
shapka();
if (!o1.col) stream<<"База заполнена.";
else {
for (int i=0; o1.col; i++) {
stream<<*o1.rows[i];
}
}
return stream;
{
int i;
for (i=0; i<5; i++) {
stream<<*o1.rows[i];
}
}
return stream;
}
ostream & operator<<(ostream &stream, sprav_video &o1) {
stream<<"|"<<setw(10)<<o1.manuf<<" | ";
stream<<setw(30)<<o1.charact<<"|";
linebuild();
return stream;
}
/*************Удаление данных из базы*************/
void sprav_video::del()
{
ofstream outfile("videocards.txt");
cout<<"\nДанные удалены...\n";
}
/*************Добавление данных в базу************/
void sprav_video::add()
{ n++;
ofstream file("videocards.txt",ios::app);
char a[20], b[20];
int num;
int pr;
{
cout<<"\nВведите порядковый номер модели: ";
cin>>num;
cout<<"\nВведите название производителя: ";
cin>>a;
cout<<"\nПеречислите технические характеристики устройства: ";
cin>>b;
cout<<"\nУкажите цену в долларах США: ";
cin>>pr;
file<<num<<" "<<a<<" "<<b<<" "<<pr<<endl;
}
}
void shapka(void)
{
cout<<"|-------------------------------------------------------------------------|\n";
cout<<"| *** СПРАВОЧНИК *** |\n";
cout<<"| Современные модели видеокарт, их характеристики и цены |\n";
cout<<"|-------------------------------------------------------------------------|\n";
cout<<"| № | Производитель | Характеристики | Розничная цена,$ |\n";
cout<<"|-------------------------------------------------------------------------|\n";
}
void linebuild(void) {
cout<<"|-------------------------------------------------------------------------|";
}
void sprav_video::del2(){
ofstream doc ("videocards.txt");
int f_num;
cout<<" - ";
cin>>f_num;
for(int i=0;i<=n;i++){
if(num==f_num){i++;fl=1;}
doc<<num<<" "<<a<<" "<<b<<" "<<pr<<endl;}
if(fl=1)cout<<"\nЗапись удалена\n";
else cout<<"\nЗапись не удалена\n";}
int main()
{
Database *abs = new Database("\nБаза данных:\n");
sprav_video videocards;
for (int a=0; !a;){
cout<<"\nЭто справочник по современным моделям видеокарт.";
cout<<"\nПожалуйста, выберите желаемое действие:";
cout<<"\n1. Вход в качестве администратора, добавление и удаление записей.";
cout<<"\n2. Добавить запись по видеокарте.";
cout<<"\n3. Удалить запись.";
cout<<"\n4. Вывести базу на экран.";
cout<<"\n5. Выход из программы.\n";
cout <<"Ваш выбор: ";
int q;
cin>>q;
switch(q) {
case 1:
int z,o;
cout <<"\n Введите пароль для входа в качестве администратора: ";
cin>>z;
if (z==1234){
o=1;
cout<<"\n Вы зашли как администратор.\n";