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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 19:58   #1
Technical59rus
 
Регистрация: 20.06.2012
Сообщений: 4
По умолчанию удаление записи по номеру и считывание с файла

Помогите с этой проблемой не могу никак разобраться
Код:
#include "StdAfx.h"
#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 bibl 
 {
	 int id;//номер записи
	string type;//Вид товара
	string firm;//Фирма
	string mfr;//Производитель
	string model;//Модель
	int price;//Цена
	struct bibl *next;
 };
struct item { bibl inf;
 struct item* next;} * top=0;

fstream f;
void add(int ID,string TYPE,string FIRM,string MFR,string MODEL,int PRICE);
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();
void udal(int *x, int m, int *n) ;


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

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

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

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

void addMenu()
{
	system("cls");
	ofstream fout("base.txt",ios::app);
    
    int ID;//номер записи
	string TYPE;//вид товара
	string FIRM;//фирма
	string MFR;//производитель
	string MODEL;//модель
	int PRICE;//цена
 
    cout<<"Введите номер записи: ";
    cin>>ID;
	cout<<"Введите тип товара: ";
	cin>>TYPE;
	cout<<"Введите фирму: ";
	cin>>FIRM;
	cout<<"Введите производителя: ";
	cin>>MFR;
	cout<<"Введите модель: ";
	cin>>MODEL;
	cout<<"Введите цену: ";
	cin>>PRICE;


	add(ID,TYPE,FIRM,MFR,MODEL,PRICE);
	system("cls");
	cout<<"Запись "<<ID<<" добавлена\n";
	 fout <<endl<<ID<<" "<<TYPE<<" "<<FIRM<<" "<<MFR<<" "<<MODEL<<" "<<PRICE;
    fout.close();
	_getch();
 
	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 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 delMenu()
{
	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)del(r);else cout<<"Запись не найдена в базе\n";
	}
	else
	{
		cout<<"Записей нет";
	}
	_getch();
}


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

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

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

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

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

void editMenu()
{
	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) edit(r);else cout<<"Запись не найдена в базе\n";
	}
	else
	{
		cout<<"Записей нет\n";
	}	
	_getch();
}
Technical59rus вне форума Ответить с цитированием
Старый 20.06.2012, 19:59   #2
Technical59rus
 
Регистрация: 20.06.2012
Сообщений: 4
По умолчанию

продолжение
Код:
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)f.close();}
	return 0;

}
Technical59rus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление записи по номеру Technical59rus Общие вопросы C/C++ 0 20.06.2012 18:11
Удаление записи из XML файла Slavytich PHP 1 01.02.2012 12:38
Неверное считывание записи из типизированного файла Boris777 Общие вопросы Delphi 3 20.12.2011 02:51
Удаление записи из файла ZotaC Общие вопросы Delphi 5 09.12.2010 19:24
Удаление записи с файла werser Помощь студентам 8 27.06.2007 06:25