Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
firstgm
0 / 0 / 0
Регистрация: 28.01.2012
Сообщений: 3
#1

Мини База Данных фамилий с проверкой - C++

28.01.2012, 05:27. Просмотров 917. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Помогите пожалуйста написать простую программку на С++ очень буду благодарен!

Задание такое:
Существует текстовый файл, в нем какие то фамилии например: (Иванов, Петров)
В консоли вводим фамилию на русском, если введенная фамилия уже существует в текстовом файле выводим сообщение, что такая уже есть, если такой фамилии нет, добавляет ее в конец списка текстового файла.

Заранее большое всем спасибо, кто хоть как то поможет!

С уважением, firstgm
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2012, 05:27     Мини База Данных фамилий с проверкой
Посмотрите здесь:

Мини база данных :) - C++
кое в чем проблемы, если кто знает, подскажите: #include <iostream> using namespace std; int main() { setlocale(0, "Rus"); ...

Проблемы с проверкой введённых данных - C++
Никак не могу раобраться с проверкой на ввод числа, символа Которую нужно обязательно добавить Помогите пожалуйста :cry: :sorry: ...

проблема с проверкой вводимых данных - C++
#include <iostream> #include <conio.h> using namespace std; double c,f; int main() { setlocale(LC_ALL, "Russian"); ...

Вывод на экран фамилий и номеров групп для всех студентов, включенных в базу данных - C++
Описать класс Student, содержащий следующие поля: · Фамилия и инициалы · Номер группы · Успеваемость (массив из...

Удалённая база данных - запрос и вывод данных - C++
допустим у меня есть удалённая база данных в которой хранятся данные. можно ли через программу запросить эти данные и вывести в программе в...

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. - C++
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам метод: int copyTable(int a, int b) {...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
28.01.2012, 16:56     Мини База Данных фамилий с проверкой #2
Воспользоваться контейнером std::set. Даже проверять не надо.
Для удобства, можно заключить работу с набором записей в класс.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <iterator>
#include <set>
 
template <class Record>
class SetStorage {
 public:
  SetStorage(const std::string &fileName)
    : fileName_(fileName), records_() {
    readAll();
  }
  void save() { writeAll(); }
  bool empty() const { return records_.empty(); }
  size_t size() const { return records_.size(); }
  void insert(const Record &record) {
    records_.insert(record);
  }
  void erase(const Record &record) {
    records_.erase(record);
  }
  bool has(const Record &record) {
    return records_.find(record) != end();
  }
  typename std::set<Record>::iterator begin() { return records_.begin(); }
  typename std::set<Record>::const_iterator begin() const { return records_.begin(); }
  typename std::set<Record>::iterator end() { return records_.end(); }
  typename std::set<Record>::const_iterator end() const { return records_.end(); }
 private:
  void readAll() {
    std::ifstream file(fileName_.c_str());
    records_.clear();
    std::copy(std::istream_iterator<Record>(file),
      std::istream_iterator<Record>(), std::inserter(records_,
      records_.end()));
  }
  void writeAll() const {
    std::ofstream file(fileName_.c_str());
    std::copy(records_.begin(), records_.end(),
      std::ostream_iterator<Record>(file, "\n"));
  }
  std::string fileName_;
  std::set<Record> records_;
};
 
int main(int argc, char *argv[]) {
  SetStorage<std::string> fileStorage("tutor0083.txt");
  
  fileStorage.insert("Ivanov");
  fileStorage.insert("Petrov");
  fileStorage.insert("Sidorov");
 
  std::copy(fileStorage.begin(), fileStorage.end(),
    std::ostream_iterator<std::string>(std::cout, "\n"));
    
  fileStorage.save();
}
firstgm
0 / 0 / 0
Регистрация: 28.01.2012
Сообщений: 3
29.01.2012, 00:50  [ТС]     Мини База Данных фамилий с проверкой #3
Большое спасибо за ответ! Только можно ли сделать, чтоб в консоли вводить фамилию и если ее нет в списке текстового файла, она туда добавлялась ? А то сейчас консоль сама закрывается почему то сразу, а фамилии те что в коде записывает это хорошо, но чуть чуть не то.
Я очень мало разбираюсь в С++ но мне казалось, что код будет выглядеть как то попроще )
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
29.01.2012, 13:48     Мини База Данных фамилий с проверкой #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <fstream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
 
std::istream& RightShift(std::istream& is, char* const buf)
{
    is >> buf;
    OemToCharA(buf, buf);
    return is;
}
 
int main()
{
    const char* const filePath = "1.txt";
    std::fstream fs(filePath, std::ios::in);
    if(fs)
    {
        std::vector<std::string> v((std::istream_iterator<std::string>(fs)), std::istream_iterator<std::string>());
        fs.clear();
        fs.close();
        char buf[BUFSIZ];
        std::cout << "Print \"exit\" to exit\n";
        while(true)
        {
            RightShift(std::cin, buf);
            if("exit" == std::string(buf)) break;
            if(std::find(v.begin(), v.end(), buf) == v.end())
            {
                v.push_back(buf);
                std::cout << "Added\n";
            }
            else std::cout << "Already present\n";
        }
        fs.open(filePath, std::ios::out);
        if(fs)
        {
            std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(fs, "\n"));
        }
        else std::cerr << "Can't open out file\n";
    }
    else std::cerr << "Can't open in file\n";
    fs.close();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2012, 00:14     Мини База Данных фамилий с проверкой
Еще ссылки по теме:

База данных "Телеателье": создать систему управления базой данных (СУБД) - C++
Задача: Создать систему управления базой данных (СУБД) в которой предусмотреть следующие режимы: создание БД, вывод БД, добавление...

база данных - C++
Собственно, хочу написать программу с базой данных. Самое главное, хочу разобраться в совместном использовании классов, списков и...

База данных в С++. - C++
Дело такое: пишется проект, который будет регулярно читать и записывать информацию с файлов. Самое банальное - сделать всё через обычные...

База данных - C++
задание: Написать программу для работы с базой данных &quot;Почта&quot; • номер пересылки • адрес назначения • стоимость пересылки • вес ...

база данных С++ - C++
задание: Написать программу учета подписчиков на периодические издания в почтовом отделении Каждая запись содержит: • Фамилия И.О....

База данных - C++
Народ, помогите найти ошибку, плиз. База данных компьютерных игр (пример – www.ag.ru), в которой каждая игра характеризуется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
firstgm
0 / 0 / 0
Регистрация: 28.01.2012
Сообщений: 3
30.01.2012, 00:14  [ТС]     Мини База Данных фамилий с проверкой #5
Ругает 1-ю строчку - закоментировал ее //#include "stdafx.h"
запустилось, но консоль все равно почему то сразу закрывается...
Компиляция идет, все вроде норм, но консоль закрывается сразу же.
Yandex
Объявления
30.01.2012, 00:14     Мини База Данных фамилий с проверкой
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru