Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- #include <cstring>
- #include <Windows.h>
- using namespace std;
- char file_name[20];
- struct teacher {
- char name[30], //ФИО учителя
- subject[20] = "",//Предмет
- classNumb[10] = "", // Класс
- city[15]; //Город
- teacher* next;
- };
- int count_lines(fstream &f) { //посчитать количество строк в списке
- char *str = new char[1024];
- int i = 0;
- while (!f.eof())
- {
- f.getline(str, 1024, '\n');
- i++;
- }
- delete str;
- return i;
- }
- teacher* newTeachers(ifstream &f) {
- teacher *k = NULL, *head = NULL;
- while (!f.eof()) {
- if (!head) {
- head = new teacher;
- f >> head->name >> head->subject >> head->classNumb >> head->city;
- head->next = k;
- k = head;
- }
- else {
- teacher *n = new teacher;
- f >> n->name >> n->subject >> n->classNumb >> n->city;
- n->next = NULL;
- k->next = n;
- k = n;
- }
- }
- k->next = NULL;
- return head;
- }
- teacher* CreateList(fstream &f, int j) { //считывание списка
- teacher *List = new teacher[j];
- f.seekg(0);
- for (int i = 0; i < j; i++) {
- f >> List[i].name >> List[i].subject >> List[i].classNumb >> List[i].city;
- }
- return List;
- }
- void OutputList(teacher *f, int size) { //вывод списка
- cout << "\n";
- cout << setw(20) << "ФИО" << setw(20) << "Предмет" << setw(10) << "Класс" << setw(15) << "Город\n";
- cout << setw(10) << "_________________________________________________________________\n";
- for (int i = 0; i < size; i++) {
- cout << setw(20) << f[i].name << setw(20) << f[i].subject << setw(10) << f[i].classNumb << setw(15) << f[i].city << endl;
- }
- }
- void OutputLine(teacher *f, int line) {
- cout << setw(20) << f[line].name << setw(20) << f[line].subject << setw(10) << f[line].classNumb << setw(15) << f[line].city << endl;
- }
- int menu_2() { //воторое меню
- cout << "\n\tМЕНЮ РАБОТЫ СО СПИСКАМИ: \n";
- cout << "1. Вывести весь список учителей\n";
- cout << "2. Добавить нового учителя (только для соотрудников школы, имеющих определенные права)\n";
- cout << "3. Поиск по определенному предмету\n";
- cout << "4. Поиск по определенному классу\n";
- cout << "5. Создать новый список\n";
- cout << "6. Выйти из программы\n";
- return 0;
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- int choose1 = 0, choose2 = 0;
- char str[20] = "";
- bool flag = true;
- int j = 0, lines;
- teacher *List;
- cout << "Добро пожаловать!" << endl;
- cout << endl;
- cout << "Программа использует только латиницу ";
- cout << endl;
- cout << endl;
- cout << "Введите имя файла: ";
- cin >> file_name;
- while (true) {
- fstream file(file_name, ios::in | ios::out | ios::binary);
- if (!file) {
- cout << file_name << " не существует!" << endl;
- return 1;
- }
- file.seekg(0);
- lines = count_lines(file);
- List = CreateList(file, lines);
- file.close();
- menu_2();
- cout << endl;
- cin >> choose2;
- cout << endl;
- if (choose2 == 1) {
- OutputList(List, lines);
- }
- if (choose2 == 2) {
- fstream File(file_name, ios::out | ios::in | ios::app);
- File << "\n";
- cout << "Введите cледующие данные о новом учителе.\n";
- while (flag) {
- cout << "\tФИО: ";
- cin >> str;
- if (strlen(str) < 20) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- File.write(str, strlen(str));
- File.write(" ", strlen(" "));
- flag = true;
- while (flag) {
- cout << "\tПредмет: ";
- cin >> str;
- if (strlen(str) < 20) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- File.write(str, strlen(str));
- File.write(" ", strlen(" "));
- flag = true;
- while (flag) {
- cout << "\tКласс: ";
- cin >> str;
- if (strlen(str) < 15) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- File.write(str, strlen(str));
- File.write(" ", strlen(" "));
- flag = true;
- while (flag) {
- cout << "\tГород: ";
- cin >> str;
- if (strlen(str) < 10) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- File.write(str, strlen(str));
- flag = true;
- File.close();
- }
- if (choose2 == 3) {
- int k = 0;
- while (flag) {
- cout << "Введите необходимый предмет (например Algebra): ";
- cin >> str;
- cout << endl;
- if (strlen(str) < 20) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- flag = true;
- cout << setw(20) << "ФИО" << setw(20) << "Предмет" << setw(10) << "Класс" << setw(15) << "Город\n";
- cout << setw(10) << "_________________________________________________________________\n";
- for (int i = 0; i < lines; i++) {
- if (_stricmp(str, List[i].subject) == 0) {
- k++;
- OutputLine(List, i);
- }
- }
- if (k == 0) cout << "\n\t Ошибка, товары не найдены!\n";
- }
- if (choose2 == 4) {
- int k = 0;
- while (flag) {
- cout << "Введите необходимый класс (например 10'A'): ";
- cin >> str;
- cout << endl;
- if (strlen(str) < 20) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- flag = true;
- cout << setw(20) << "ФИО" << setw(20) << "Предмет" << setw(10) << "Класс" << setw(15) << "Город\n";
- cout << setw(10) << "_________________________________________________________________\n";
- for (int i = 0; i < lines; i++) {
- if (_stricmp(str, List[i].classNumb) == 0) {
- k++;
- OutputLine(List, i);
- }
- }
- if (k == 0) cout << "\n\t Ошибка, товары не найдены!\n";
- }
- if (choose2 == 5) {
- char filename[25];
- cout << "Введите имя файла: ";
- cin >> filename;
- fstream NewFile(filename, ios::out | ios::in | ios::app);
- while (true) {
- NewFile << "\n";
- cout << "Введите cледующие данные о новом учителе.\n";
- while (flag) {
- cout << "\tФИО: ";
- cin >> str;
- if (strlen(str) < 20) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- NewFile.write(str, strlen(str));
- NewFile.write(" ", strlen(" "));
- flag = true;
- while (flag) {
- cout << "\tПредмет: ";
- cin >> str;
- if (strlen(str) < 20) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- NewFile.write(str, strlen(str));
- NewFile.write(" ", strlen(" "));
- flag = true;
- while (flag) {
- cout << "\tКласс: ";
- cin >> str;
- if (strlen(str) < 15) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- NewFile.write(str, strlen(str));
- NewFile.write(" ", strlen(" "));
- flag = true;
- while (flag) {
- cout << "\tГород: ";
- cin >> str;
- if (strlen(str) < 10) flag = false;
- else cout << "\t\tОшибка, введите заново\n";
- }
- NewFile.write(str, strlen(str));
- flag = true;
- NewFile.close();
- break;
- }
- }
- if (choose2 == 6) {
- cout << "Закрытие программы!\n";
- return 3;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement