Borland C++ For Dos! Есть Исходник. Нужна Поmощь

  • Автор темы Prosto23
  • Дата начала
P

Prosto23

#1
на Borland C++ for Dos .(и ничего другого)!!! ...нужна база данных студентов..
1)Вводить информацию о студенте.
2)Выводить информацию введенную.
3)Редактировать информацию о студенте.
4)Сортировка по кол ву студентов в группе.
5)Поиск студента.

Проблема есть исходник на с++ ..но там я синтаксис вообще не понимаю...
кто может переделать...плиз помогите...это курсач... просто синтаксис другой..не понимаю...
--------------------------------
//Подключаем заголовочные файлы
#include "Headers/Student.h"
#include "Headers/StudentDataBase.h"
#include <iostream>
#include <cstdio>
#include <cstring>
#include <iomanip>
#include <vector>
#include <conio.h>
#include <Windows.h>

//Деструктор
StudentDataBase::~StudentDataBase()
{
//Освобождаем память, выделенную под каждого студента
while(!studentList.empty()) {
delete[] studentList.back();
studentList.pop_back();
}
}

//Добавление студента в базу
void StudentDataBase::addStudent()
{
system("cls"); //Очистка экрана

Student* currentStudent = new Student(); //Создаем новый объект Студент

//Вводим информацию о студенте
std::cout << "Введите фамилию студента: ";
std::cin.getline(currentStudent->lastName, NAME_MAX_SIZE);

std::cout << "Введите имя студента: ";
std::cin.getline(currentStudent->firstName, NAME_MAX_SIZE);

std::cout << "Введите отчество студента: ";
std::cin.getline(currentStudent->patronymic, NAME_MAX_SIZE);

std::cout << "Введите возраст студента: ";
std::cin >> currentStudent->age;
//Перехватываем ошибки ввода, выводим сообщение и прерываем работу функции
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
delete currentStudent;
std::cerr << "\nОшибка ввода! Информация о студенте не была добавлена";
return;
}

std::cout << "Введите номер группы студента: ";
std::cin >> currentStudent->groupNumber;
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
delete currentStudent;
std::cerr << "\nОшибка ввода! Информация о студенте не была добавлена";
return;
}

std::cout << "Введите номер телефона студента: ";
std::cin >> currentStudent->phoneNumber;
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
delete currentStudent;
std::cerr << "\nОшибка ввода! Информация о студенте не была добавлена";
return;
}

studentList.push_back(currentStudent); //Добавляем студента к общему списку
std::cout << "\nСтудент добавлен.";
}

//Вывод на экран всех студентов
void StudentDataBase::showAllStudents()
{
system("cls");
std::cout << std::left;
std::cout.width(5); std::cout << "№";
std::cout.width(50); std::cout << "ФИО";
std::cout.width(7); std::cout << "Номер группы";
std::cout << std::endl;
for(size_t i=0; i<studentList.size(); ++i) {
std::cout << std::left;
std::cout.width(5); std::cout << i+1;
//Загоняем ФИО в переменную типа string, чтобы корректно вывести
std::string stFullName;
stFullName += studentList->lastName;
stFullName += ' ';
stFullName += studentList->firstName;
stFullName += ' ';
stFullName += studentList->patronymic;
///////////////////////////////////////
std::cout.width(50); std::cout << stFullName;
std::cout.width(7); std::cout << studentList->groupNumber;
std::cout << std::endl;
}
}

//Вывод подробной информации о студенте
void StudentDataBase::showDetails(unsigned int id)
{
system("cls");
std::cout << "Инфомрация о студенте.";
std::cout << "\n\nФамилия: " << studentList[id]->lastName
<< "\nИмя: " << studentList[id]->firstName
<< "\nОтчество: " << studentList[id]->patronymic
<< "\nВозраст: " << studentList[id]->age
<< "\nНомер группы: " << studentList[id]->groupNumber
<< "\nНомер телефона: " << studentList[id]->phoneNumber;
}

//Удаление студента
void StudentDataBase::removeStudent(unsigned int id)
{
delete studentList[id]; //Освобождаем выделенную память
studentList.erase(studentList.begin()+id); //Удаляем студента
}

//Метод выбора студента (для обработки ошибок ввода)
unsigned int StudentDataBase::chooseStudent()
{
std::cout << "\n\nВведите номер студента: ";
unsigned int id;
std::cin >> id;
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
std::cout << "\nОшибка ввода!";
std::cout << "\n\nНажмите любую клавишу...";
_getch();
return -1;
}
std::cin.sync();
if(id>studentsAmount() || id==0) {
std::cout << "\nСтудента с таким номером не существует.";
std::cout << "\n\nНажмите любую клавишу...";
_getch();
return -1;
}
return id-1;
}

//Редактировать информацию о студенте
void StudentDataBase::editStudent(unsigned int id)

{
while(true) {
unsigned int temp;
showDetails(id);
std::cout << "\n\n\n"
<< "1. Изменить фамилию\n"
<< "2. Изменить имя\n"
<< "3. Изменить отчество\n"
<< "4. Изменить возраст\n"
<< "5. Изменить номер группы\n"
<< "6. Изменить номер телефона\n"
<< "0. Вернуться в предыдущее меню\n";
char ch = _getch();
switch (ch) {
case '1':
std::cout << "\n\nВведите фамилию студента: ";
std::cin.getline(studentList[id]->lastName, NAME_MAX_SIZE);
break;
case '2':
std::cout << "\n\nВведите имя студента: ";
std::cin.getline(studentList[id]->firstName, NAME_MAX_SIZE);
break;
case '3':
std::cout << "\n\nВведите отчество студента: ";
std::cin.getline(studentList[id]->patronymic, NAME_MAX_SIZE);
break;
case '4':
std::cout << "\n\nВведите возраст студента: ";
std::cin >> temp;
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
std::cerr << "\nОшибка ввода! Информация не была изменена";
std::cout << "\n\nНажмите любую клавишу для продолжения..."; _getch();
}
else
studentList[id]->age = temp;
break;
case '5':
std::cout << "\nВведите номер группы студента: ";
std::cin >> temp;
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
std::cerr << "\nОшибка ввода! Информация не была изменена";
std::cout << "\n\nНажмите любую клавишу для продолжения..."; _getch();
}
else
studentList[id]->groupNumber = temp;
break;
case '6':
std::cout << "\nВведите номер телефона студента: ";
std::cin >> temp;
if(!std::cin.good()) {
std::cin.clear();
std::cin.sync();
std::cerr << "\nОшибка ввода! Информация не была изменена";
std::cout << "\n\nНажмите любую клавишу для продолжения..."; _getch();
}
else
studentList[id]->phoneNumber = temp;
break;
case '0':
return;
}
}
}

//Поиск студента по одному из параметров
void StudentDataBase::findStudent(const char* name, unsigned int data, int state)
{
while(true) {
system("cls");
std::vector<int> index;
std::cout << std::left;
std::cout.width(5); std::cout << "№";
std::cout.width(50); std::cout << "ФИО";
std::cout.width(7); std::cout << "Номер группы";
std::cout << std::endl;
switch(state) {
case 1:
for(size_t i=0; i<studentList.size(); i++) {
if(!std::strcmp(name, studentList->lastName))
index.push_back(i);
}
break;
case 2:
for(size_t i=0; i<studentList.size(); i++) {
if(!std::strcmp(name, studentList->firstName))
index.push_back(i);
}
break;
case 3:
for(size_t i=0; i<studentList.size(); i++) {
if(!std::strcmp(name, studentList->patronymic))
index.push_back(i);
}
break;
case 4:
for(size_t i=0; i<studentList.size(); i++) {
if(data==studentList->age)
index.push_back(i);
}
break;
case 5:
for(size_t i=0; i<studentList.size(); i++) {
if(data==studentList->groupNumber)
index.push_back(i);
}
break;
case 6:
for(size_t i=0; i<studentList.size(); i++) {
if(data==studentList->phoneNumber)
index.push_back(i);
}
break;
}
for(size_t i=0; i<index.size(); i++) {
Student* currentStudent = getStudentById(index);
std::cout << std::left;
std::cout.width(5); std::cout << i+1;
//Загоняем имя в переменную типа string
std::string stFullName;
stFullName += currentStudent->lastName;
stFullName += ' ';
stFullName += currentStudent->firstName;
stFullName += ' ';
stFullName += currentStudent->patronymic;
///////////////////////////////////////
std::cout.width(50); std::cout << stFullName;
std::cout.width(7); std::cout << currentStudent->groupNumber;
std::cout << std::endl;
}
std::cout << "\n\nНажмите любую клавишу...";
_getch();
break;
}
}