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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2017, 23:55   #1
drelay
Новичок
Джуниор
 
Регистрация: 28.06.2017
Сообщений: 1
По умолчанию Доделать Базу Данных С++

Срочно! Плачу 500 рублей за плевую, но срочную работу. Актуально до вечера 29.06.2017г.
Связь со мной :
Во вконтакте: https://vk.com/maksabramov
Телефон (только для смс): +79032441280

Суть задания: создать программу для работы с базой данных с нуля. Файл для БД создается программой для последующего заполнения.
В базе данных должна записываться информация о каждом студенте:
Имя Фамилия Отчество Группа Возраст Пол.
Главные условия задания сделать функционал, (саму базу будет заполнять преподаватель через консоль).
Функции: Добавление записи о студенте, редактировании, удалении, просмотра всех записей, сортировки по заданным параметрам : по группе, по фамилии, и т.д.
Собственно, часть программы я сделал сам (и с помощью), но осталось доделать (переделать):
1. Просмотр листа студентов (загружая данные с файла).
2. Сортировка по параметрам: Пол, группа, фамилия, возраст. (сортировка так же должна брать данные с файла). Набросок сортировки по фамилиям есть, но он работает только с временными данными, нужно сделать чтобы из файла брал.
3. На свое усмотрение переделать плохие места.

ВАЖНО: Используется с++11 (-std=c++11)

Срок: до вечера 29.06.2017 или до 6.00 по МСК 30.06.2017.

Код:
Код:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iomanip>
#include <stdlib.h>

#define VVOD cout << "Введите фамилию: ";\
cin >> p[i].surname;\
cout << "Введите имя: ";\
cin >> p[i].name;\
cout << "Введите отчество: ";\
cin >> p[i].patr;\
cout << "Укажите пол: ";\
cin >> p[i].sex;\
cout << "Введите курс: ";\
cin >> p[i].clas;\
cout << "Введите возраст: ";\
cin >> p[i].age;
 
#define FIND_ERR cout << "Студент не найден!";
 
 
using namespace std;
 #pragma pack(push,1)
struct student {
 
    bool status = false;// сигнализирует о том, заполнена ли эта структура или, например, удалена
    char surname[50], name[50], patr[50], sex[50], clas[50];
    int age;
 
};
 #pragma pack(pop)

int add_new(student*, int);//добавить нового студента
int del_n(student*, int);//удалить студента
int change_n(student*, int);//изменить студента
int show_origin(student*, int);//показать список
int show_sort(student*, int);//показать сортированный список
int save(student*, short);//сохраняет БД в файл
int compare(const void *, const void *);

     FILE *outbin;
int main() {
 
 
    setlocale(LC_ALL, ("Russian"));
    int n = 10;
    student *p = new student[n];
 
    while (1) {
        setlocale(LC_ALL, ("Russian"));
        system("cls");
        cout << "\n=========== Список студентов ===========";
        cout << "\n\n                                          ";
        cout << "\n========================================";
        cout << "\n  1. Добавить запись о новом студенте";
        cout << "\n  2. Список студентов";
        cout << "\n  3. Список студентов с сортировкой";
        cout << "\n  4. Редактировать запись о студенте";
        cout << "\n  5. Удалить запись о студенте";
        cout << "\n  6. Сохранить БД в файл";
        cout << "\n  7. Выйти из программы";
        cout << "\n========================================";
        cout << "\n";
        cout << "\n Выберите пункт меню:";
        char choice;
        choice = getche();
        system("cls");
        switch (choice)
        {
        case '1':           add_new(p, n);          break;
        case '2':           show_origin(p,n);        break;
        case '3':           show_sort(p, n);            break;
        case '4':           change_n(p, n);         break;
        case '5':           del_n(p, n);            break;
        case '6':           save(p, n);         break;
        case '7': //Закрытие программы
            cout << "\n\n";
            cout << "\t\t     Закрытие программы...";
            cout << "\n\n";
            exit(0);
        }
        system("pause");
    }
    system("pause");
    return 0;
}
 
int add_new(student* p, int n) {
    for (auto i = 0; i < n; i++) {
        if (!p[i].status) {
            VVOD
                p[i].status = true;
            return 0;
        }
    }
    cout << "База переполнена!";
}
 
int del_n(student* p, int n) {
    cout << "Введите точную фамилию, для удаления студента из базы: ";
    string search;
    cin >> search;
    for (auto i = 0; i < n; i++) {
        if (p[i].status && p[i].surname == search) {
            p[i].status = false;
            return 0;
        }
    }
    FIND_ERR
        return 1;
}
 
int change_n(student* p, int n) {
    cout << "Введите точную фамилию, для изменения студента в базе: ";
    string search;
    cin >> search;
    for (auto i = 0; i < n; i++) {
        if (p[i].status && p[i].surname == search) {
            VVOD
                return 0;
        }
    }
    FIND_ERR
        return 1;
}
     
int show_origin(student* p, int n) {
ifstream fileout ("outbin.dat", std::ios::binary);
 for (auto i = 0; i < n; i++) {
  fileout.read((char*)&n, sizeof n);
    for(auto i = 0; i < n; i++)           
                {
            cout << "\n=========== Список студентов ===========\n";
            cout << "Фамилия: " << p[i].surname << endl;
            cout << "Имя: " << p[i].name << endl;
            cout << "Отчество: " << p[i].patr << endl;
            cout << "Пол: " << p[i].sex << endl;
            cout << "Курс: " << p[i].clas << endl;
            cout << "Возраст: " << p[i].age << endl << endl;
               }
  fileout.close(); 

           cout << "\n\n";
           system("pause");
           return 0;
    }
}
int show_sort(student* p, int n) {
    student *p2 = new student[n];
    for (auto i = 0; i < n; i++) {
        p2[i] = p[i];
    }
    qsort(p2, n, sizeof(student), compare);
    show_origin(p2, n);
    return 0;
}
 
int compare(const void * val1, const void * val2) {
    student *p1 = (student*)val1;
    student *p2 = (student*)val2;
    return strcmp(p1->surname, p2->surname);
}
 
int save(student* p, short n) {
    ofstream fileout("outbin.dat", ios::binary);
    fileout.write((char*)&n, sizeof n);
    for (auto i = 0; i < n; i++) {
        fileout.write(reinterpret_cast<char*>(&p[i]), sizeof(student));
    }
    fileout.close();
    return 0;
}
drelay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать базу данных «Видеопрокат». Запись базы данных содержит: №диска, название фильма, фамилия клиента, взявшего диска, количест kostyan199731 Паскаль, Turbo Pascal, PascalABC.NET 0 13.05.2015 19:43
Доделать базу данных Access. до завтра oxy1mron Microsoft Office Access 2 04.06.2013 20:04
Сохранение данных из Edit в базу данных (не Access) Denis3 БД в Delphi 5 18.03.2013 16:45
Создать базу данных west23 Microsoft Office Access 2 11.02.2010 21:20