Untitled
unknown
plain_text
6 months ago
6.2 kB
4
Indexable
Never
#include <iostream> #include "windows.h" using namespace std; struct Watch { Watch *Next; char Case; union { struct { char watchName[15], Model[9], dial[10]; } Retailer; struct { char watchName[15]; int NumId; } Stock; }; char Address[40]; int Length; }; Watch *DataBase = NULL; Watch InpWatchInfo(char cs) { Watch watch; watch.Case = cs; if (watch.Case) { cout << "Производитель часов: "; cin >> watch.Stock.watchName; cout << "Номер: "; cin >> watch.Stock.NumId; } else { cout << "Производитель часов: "; cin >> watch.Retailer.watchName; cout << "Модель часов: "; cin >> watch.Retailer.Model; cout << "Цвет циферблата: "; cin >> watch.Retailer.dial; } cout << "Адрес: "; cin >> watch.Address; watch.Length = 0; return watch; } void OutWatchInfo(Watch watch) { if (watch.Case) { cout << watch.Stock.watchName << " | "; cout << watch.Stock.NumId; } else cout << watch.Retailer.watchName << " | " << watch.Retailer.Model << " | " << watch.Retailer.dial; cout << " | " << watch.Address << endl << "Длина: " << watch.Length << "зв." << endl; } Watch &AddLength(Watch &watch, int length) { watch.Length += length; return watch; } Watch *SubLength(Watch *watch, int length) { watch->Length -= length; return watch; } Watch *FoundWatchNum(int num) { Watch *p = DataBase; while (p != NULL && num--) p = p->Next; return p; } void AddWatch(int num, char cs) { Watch *q = new Watch; *q = InpWatchInfo(cs); if (DataBase == NULL) num = 0; if (num) { Watch *p = DataBase; while (p->Next != NULL && --num) p = p->Next; q->Next = p->Next; p->Next = q; } else { q->Next = DataBase; DataBase = q; } } void DeleteWatch(int num) { Watch *q; if (DataBase == NULL) return; if (num) { Watch *p = DataBase; while (p->Next != NULL && --num) p = p->Next; if ((q = p->Next) != NULL) { p->Next = q->Next; delete q; } } else { q = DataBase; DataBase = q->Next; delete q; } } int main() { SetConsoleOutputCP(CP_UTF8); Watch *p; int i, j; while (1) { cout << " Меню СУБД:" << endl << "1. Ввод данных." << endl << "2. Вывод информации о товаре." << endl << "3. Вывод всей информации." << endl << "4. Увеличить длину браслета." << endl << "5. Уменьшить длину браслета." << endl << "6. Удалить данные." << endl << "7. Закончить работу." << endl << ">"; cin >> i; switch (i) { case 1: cout << "Номер: "; cin >> i; cout << "Вариант (0-магазин, 1-наличие): "; cin >> j; AddWatch(i, j); break; case 2: cout << "Номер: "; cin >> i; if ((p = FoundWatchNum(i)) != NULL) OutWatchInfo(*p); else cout << "Часы не найдены!" << endl; break; case 3: p = DataBase; i = 0; while (p != NULL) { cout << "Часы:" << i++ << ':' << endl; OutWatchInfo(*p); p = p->Next; } break; case 4: cout << "Номер: "; cin >> i; if ((p = FoundWatchNum(i)) != NULL) { cout << "Длина: "; cin >> j; AddLength(*p, j); } else cout << "Часы не найдены!" << endl; break; case 5: cout << "Номер: "; cin >> i; if ((p = FoundWatchNum(i)) != NULL) { cout << "Насколько уменьшить длину: "; cin >> j; SubLength(p, j); } else cout << "Часы не найдены!" << endl; break; case 6: cout << "Номер: "; cin >> i; DeleteWatch(i); break; case 7: while (DataBase != NULL) { p = DataBase; DataBase = p->Next; delete p; } default: cout << "Поторите ввод!" << endl; } } }