Срочно! Плачу 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;
}