Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2012, 23:58   #1
Роман Юрьевич
Новичок
Джуниор
 
Регистрация: 19.06.2012
Сообщений: 2
По умолчанию

Ребят, помогите пожалуйста! В четверг курсовую сдавать, а запись в файл в проге не работает. Помогите чем сможете. Код ниже:
Код:
#include <iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <locale.h>
using namespace std;

int num = 0;
 
/*struct item
{
	int id;//номер записи
	string type;//Вид обуви
	string firm;//Фирма
	string mfr;//Производитель
	string model;//Модель
	int size;//Размер
    string color;//Цвет
	int price;//Цена
	

	item * next;
};*/

struct bibl 
 {
	 int id;//номер записи
	string type;//Вид обуви
	string firm;//Фирма
	string mfr;//Производитель
	string model;//Модель
	int size;//Размер
    string color;//Цвет
	int price;//Цена
 };
struct item { bibl inf;
 struct item* next;} * top=0;

fstream f;
void add(int ID,string TYPE,string FIRM,string MFR,string COLOR,string MODEL,int PRICE,int SIZE);
void del(item * q);
void view(item * q);
void addMenu();
void viewMenu();
void edit(item * r);
void editMenu();
void searchMenu();
void viewAll();
void zapic();
void chtenie();


item * first = NULL; // Первый элемент списка
item * last = NULL;  // Последний элемент списка

void add(int ID,string TYPE,string FIRM,string MFR,string COLOR,string MODEL,int PRICE,int SIZE)
{
	item * c = new item;
	
	c->inf.id = ID;
	c->inf.type = TYPE;
	c->inf.firm = FIRM;
	c->inf.mfr = MFR;
	c->inf.color = COLOR;
	c->inf.model = MODEL;
	c->inf.price = PRICE;
	c->inf.size = SIZE;
	c->next = NULL;

	//if(first == NULL)first = c;
	c->next = last;
	last = c;
}

void del(item * q)
{
	if(q == first){first = first->next;}
	else
	{
		item * d = first;
		while(d->next != q){d = d->next;}
		d->next = q->next;
		if(q == last)last = d;
		delete q;
	}
}

void view(item * q)
{
cout<<" -- "<<q->inf.id<<"\n Вид обуви: "<<q->inf.type<<". Фирма: "<<q->inf.firm<<". Производитель: "<<q->inf.mfr<<". Модель: "<<q->inf.model<<". Цвет: "<<q->inf.color<<". Цена: "<<q->inf.price<<". Размер: "<<q->inf.size<<endl;
}

void addMenu()
{
	system("cls");
    
    int ID;//номер записи
	string TYPE;//вид обуви
	string FIRM;//фирма
	string MFR;//производитель
	string COLOR;//цвет
	string MODEL;//модель
	int PRICE;//цена
	int SIZE;//размер
 
    cout<<"Введите номер записи: ";
    cin>>ID;
	cout<<"Введите тип обуви: ";
	cin>>TYPE;
	cout<<"Введите фирму: ";
	cin>>FIRM;
	cout<<"Введите производителя: ";
	cin>>MFR;
	cout<<"Введите цвет: ";
    cin>>COLOR;
	cout<<"Введите модель: ";
	cin>>MODEL;
	cout<<"Введите цену: ";
	cin>>PRICE;
	cout<<"Введите размер: ";
	cin>>SIZE;

	add(++num,TYPE,FIRM,MFR,COLOR,MODEL,PRICE,SIZE);
	system("cls");
	cout<<"Запись "<<num<<" добавлена\n";

	_getch();
 //zapic();
	system("cls");
}

void viewMenu()
{
	system("cls");
	int ID;
	cout<<"Введите номер записи: ";
	cin>>ID;
	item * r = last;
	if(r != NULL)
	{
		while(r->inf.id != ID && r->next != NULL)
		{
			r=r->next;
		}
		if(r->inf.id == ID)view(r);else cout<<"Запись не найдена в базе\n";
	}
	else
	{
		cout<<"Записей нет";
	}
	_getch();
}

void viewAll()
{
	system("cls");
	item * r = last;
	if(r != NULL)
	{
		while(r != NULL)
		{
			view(r);
			r=r->next;
		}
	}
	else
	{
		cout<<"Записей нет\n";
	}
	_getch();
}

void delMenu()
{
	system("cls");
	int ID;
	cout<<"Введите номер записи: ";
	cin>>ID;
	item * r = first;
	if(r != NULL)
	{
		while(r->inf.id != ID && r->next != NULL)
		{
			r=r->next;
		}
		if(r->inf.id == ID)del(r);else cout<<"Запись не найдена в базе\n";
	}
	else
	{
		cout<<"Записей нет";
	}
	_getch();
}

void searchMenu()
{
	system("cls");
	string FIRM;
	int f=0;
	cout<<"Введите тип обуви: ";
	cin>>FIRM;
	item * r = first;
	if(r != NULL)
	{
		while(r != NULL)
		{
			if(r->inf.firm == FIRM){view(r); f=1;}
			r=r->next;
		}
		if(f==0)cout<<"Запись не найдена в базе\n";
	}
	else
	{
		cout<<"Записей нет";
	}
	
	_getch();
}

void edit(item * r)
{
	system("cls");
	int ID;//номер записи
	string TYPE;//вид обуви
	string FIRM;//фирма
	string MFR;//производитель
	string COLOR;//цвет
	string MODEL;//модель
	int PRICE;//цена
	int SIZE;//размер

    cout<<"Введите номер записи: ";
    cin>>ID;
	cout<<"Введите тип обуви: ";
	cin>>TYPE;
	cout<<"Введите фирму: ";
	cin>>FIRM;
	cout<<"Введите производителя: ";
	cin>>MFR;
	cout<<"Введите цвет: ";
    cin>>COLOR;
	cout<<"Введите модель: ";
	cin>>MODEL;
	cout<<"Введите цену: ";
	cin>>PRICE;
	cout<<"Введите размер: ";
	cin>>SIZE;

    r->inf.id = ID;
	r->inf.type = TYPE;
	r->inf.firm = FIRM;
	r->inf.mfr = MFR;
	r->inf.color = COLOR;
	r->inf.model = MODEL;
	r->inf.price = PRICE;
	r->inf.size = SIZE;

	system("cls");
	cout<<"Запись изменена";
}

Последний раз редактировалось Stilet; 20.06.2012 в 07:36.
Роман Юрьевич вне форума Ответить с цитированием
Старый 19.06.2012, 23:59   #2
Роман Юрьевич
Новичок
Джуниор
 
Регистрация: 19.06.2012
Сообщений: 2
По умолчанию

Код:
void editMenu()
{
	system("cls");
	int ID;
	cout<<"Введите номер записи: ";
	cin>>ID;
	item * r = first;
	if(r != NULL)
	{
		while(r->inf.id != ID && r->next != NULL)
		{
			r=r->next;
		}
		if(r->inf.id == ID)edit(r);else cout<<"Запись не найдена в базе\n";
	}
	else
	{
		cout<<"Записей нет\n";
	}	
	_getch();
}
void zapic()
{item *r;
f.open("bible.txt", ios_base::app | ios_base::binary);
if(!f.is_open())
    {
        cout << "Error Opening bible.dat\n";
        _getch();
		//return -1;
    }
r=last;
while(!r)
{f.write((char*)&(r->inf),sizeof(bibl));
r=r->next;
}
//f.close






}

int main()
{
	SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
	//setlocale( LC_CTYPE, ".1251" );

	int menu = -1;
	while(menu != 0)
	{
		system("cls");
		cout<<"1)  Добавить запись\n"
			<<"2)  Изменить запись\n"
			<<"3)  Поиск записи по фирме\n"
			<<"4)  Просмотр одной записи (по номеру)\n"
			<<"5)  Просмотр всех записей\n"
			<<"6)  Удаление записи (по номеру)\n"
			<<"0)  Выход\n";
		cin>>menu;
		if(menu == 1)addMenu();
		if(menu == 2)editMenu();
		if(menu == 3)searchMenu();
		if(menu == 4)viewMenu();
		if(menu == 5)viewAll();
		if(menu == 6)delMenu();
	
		if(menu == 0){zapic();f.close();}}

	return 0;
}

Последний раз редактировалось Stilet; 20.06.2012 в 07:41.
Роман Юрьевич вне форума Ответить с цитированием
Старый 20.06.2012, 07:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
string type;//Вид обуви
string firm;//Фирма
string mfr;//Производитель
И не будет работать. string это объект а не образмеренная структура (проще говоря тупо 4-х байтовый адрес), от эти 4 байта в файл и вылезут
Если нет времени то попробуй побыстрячку заменить все на char<обязательно размер>].
Т.е. в структурах не должно быть указателей, если хочешь сохранять именно таким способом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.06.2012, 13:14   #4
Technical59rus
 
Регистрация: 20.06.2012
Сообщений: 4
По умолчанию функции

ну объявили как чар с величиной какой то, а в самих функциях тогда что писать?
void add(int ID,string TYPE,string FIRM,string MFR,string COLOR,string MODEL,int PRICE,int SIZE)
ну и следовательно во всех остальных, если просто чар то ошибка
Technical59rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл Intess Общие вопросы C/C++ 5 20.11.2011 02:47
Запись информации в файл в файл Anubys Win Api 0 04.11.2011 23:27
Запись в файл Akimich Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.08.2010 08:05
запись в файл street-walker Помощь студентам 4 21.06.2010 22:42