// kurs_inf.cpp : main project file.
#include "StdAfx.h"
#include
#include
#include
using namespace std;
struct Star {
char Name[50];
float Mass, Radius, Age, Temperature, Luminosity;
Star *Next;
Star *Prev;
};
void ShowMenu();
Star * OpenBase();
Star * AddNewRec(Star Rec, Star *Head, Star *Tail);
void AddRec();
void Show(Star *Head);
void DelRec();
void Search();
void Save();
void main() {
char OperCode;
Star *Head;
Head = OpenBase();
do {
ShowMenu();
cout << "\nДля выполнения операции введите соответствующий код:\t";
cin >> OperCode;
switch (OperCode) {
case '1' : Show(Head); break;
case '2' : AddRec(); break;
case '3' : DelRec(); break;
case '4' : Search(); break;
case '5' : Save(); break;
}
}
while (OperCode != '6');
}
void ShowMenu() {
/*clrscr;*/
cout << "\nПрограмма базы данных. Доступные операции:";
cout << "\n\tПоказать всю БД (1)\n\tДобавить запись (2)\n\tУдалить запись (3)\n\tПоиск по базе (4)\n\tСохранить БД (5)\n\tВыход (6)";
}
Star * OpenBase() {
char Filename[50];
ifstream File;
Star NewStar;
Star *Tail, *Head;
Tail = NULL;
Head = NULL;
cout << "\nВведите полное имя файла с БД: ";
cin >> Filename;
File.open(Filename, ios::in);
while (!File.eof()) {
File >> NewStar.Name;
File >> NewStar.Mass;
File >> NewStar.Radius;
File >> NewStar.Age;
File >> NewStar.Temperature;
File >> NewStar.Luminosity;
AddNewRec(NewStar, Head, Tail);
}
return(Head);
}
Star * AddNewRec(Star Rec, Star *Head, Star *Tail) {
Star *PNew;
PNew = new Star;
*PNew = Rec;
(*PNew).Next = NULL;
if (Head == NULL) {
Head = PNew;
(*PNew).Prev = NULL;
} else {
(*Tail).Next = PNew;
(*PNew).Prev = Tail;
}
Tail = PNew;
return(Tail);
}
void Show(Star *Head) {
Star *P = Head;
while (P != NULL) {
cout << "\n" << (*P).Name << " " << (*P).Mass << " " << (*P).Radius << " " << (*P).Age << " " << (*P).Temperature << " " << (*P).Luminosity;
P = (*P).Next;
}
}