Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 6 С++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.85 Mб
Скачать

1.1.12Реализации основного модуля проекта

На рисунке 6.14 представлен текст основного модуля программы.

#include <QtCore/QCoreApplication>

#include "functions.h"

#include "types.h"

#include "windows.h"

#include <iostream>

#include<QFile>

FILE *fLst; //объявление указателя файловой переменной

//для работы с файлом,в котором находится список

int Start=-1;//Смещение(адрес) первого элемента списка

//инициализируем -1,т.е. список пустой

char getCommand();

int main(int argc, char *argv[])

{

char ch;

QCoreApplication a(argc, argv);

setlocale(LC_ALL, "Russian");

do {

ch=getCommand();

switch(ch){

case '1': {

char fName[15];

cout<<"Bведите имя файла->";

cin>>fName;

fLst = openFile(fName,Start);

cout<<endl;

if (fLst) {

cout<<"Файл открыт успешно\n";

} else {

cout<<"Ошибка открытия файла\n";

exit(1);

};//if

cout<<endl;

}

break;

case '2': {

if (fLst!=NULL) {fclose(fLst);

fLst=NULL;Start=-1;

cout<<"Список (файл) закрыт"<<endl;

};

}

break;

case '3': showList(fLst,Start);

break;

case '4': {

int np;TSStudF stud,studNew;

np=newPosInFile(fLst);//Теперь в переменной np находится №записи (смещение),

//куда можно записать новый элемент списка

cout<<"Введите ФИО студента->";cin>>studNew.fam;

cout<<endl<<"Введите средний бал студента->";cin>>studNew.bal;

cout<<endl;

studNew.Next=-1;

//Записываем элемент в файл

fseek(fLst,np,SEEK_SET);

fwrite(&studNew,sizeof(TSStudF),1,fLst);

//Читаем заголовок списка для получения адреса первого элемента

fseek(fLst,sizeof(TSStudF),SEEK_SET);

fread(&stud,sizeof(TSStudF),1,fLst);

//Добавляем элемент в список

addToSortList(fLst,Start,np); //Start мог измениться во время выполнения

//подпрограммы,поэтому необходимо обновить в файле

//адрес первого элемента списка. Записываем в файл

fseek(fLst,sizeof(TSStudF),SEEK_SET);

stud.Next=Start;

fwrite(&stud,sizeof(TSStudF),1,fLst);

//Вывод списка на экран

showList(fLst,Start);

cout<<endl;

}

break;

case '5': {

//Здесь будет удаление элемента из списка

cout<<endl;

}

break;

case '6': {

//Здесь будет поиск элемента по ключу

cout<<endl;

}

break;

case '7': {

//Здесь будет удаление всего списка

cout<<endl;

}

break;

case '8':

if (fLst!=NULL) fclose(fLst);

exit(0);

break;

}

cout<<"\nДля продолжения нажмите * ->";

cin>>ch;

}while(true);

return a.exec();

}

char getCommand()

{

char ch;//номер выбранного пункта меню (в символьном варианте)

system("cls");

SetConsoleTitleA("LAB N6");

cout<<"Выберите операцию со списком: \n";

cout<<endl;

cout<<"1.Открыть/создать список (и файл)\n";

cout<<endl;

cout<<"2.Закрыть текущий файл\n";

cout<<endl;

cout<<"3.Вывод списка на экран\n";

cout<<endl;

cout<<"4.Добавить элемент в отсортированный список\n";

cout<<endl;

cout<<"5.Удалить элемент из списка\n";

cout<<endl;

cout<<"6.Найти элемент в списке по ключу\n";

cout<<endl;

cout<<"7.Удалить список\n";

cout<<endl;

cout<<"8.Выход из программы\n";

cout<<"---------------------------------\n";

cout<<endl;

cout<<"Выберите операцию для списка \n";

cin>>ch;

return ch;

}

Рисунок 6.14 – Текст основного модуля программы