From 57de47d41ae96cbb2dd0b85a944f9d4feadfb19c Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Sun, 28 Apr 2024 12:43:00 +0300 Subject: [PATCH] proj0.1 --- __pycache__/dbtable.cpython-311.pyc | Bin 6815 -> 7543 bytes dbtable.py | 9 +- main.py | 178 ++++++++++++---------------- tables/cath_table.py | 1 + 4 files changed, 88 insertions(+), 100 deletions(-) diff --git a/__pycache__/dbtable.cpython-311.pyc b/__pycache__/dbtable.cpython-311.pyc index 41ebd25efdf74608916f5ec030a9c404fe487b7e..5bf930ce04b66869afdb9e1f7b86055c47253ddc 100644 GIT binary patch delta 679 zcmbPl`rV3eIWI340}yN#)k|~Xp2(NRm^QIAft$aDAxbcXF_=M9VB@W)tc*7%A7CqF zl-+E^zL$wnY4QioH9&GM*9u03$!^?NC*S84Wz3oED`LdTRKt|QG&xY*mltSg6_BU} ziLd}gBqyKe;1{R@3a7AwNQmU*dYk^cQ01^!h zH~3^`l+3T6Rew?5;EKG#MLvTL<{KQ`9hEbT=9|wlUtn@w+5VEU{Y7QRE6R=+rJb%w zJ6+^=y2#-qhpNtarp+9ii~Q;JhcE+H|LSkBMAs_+Q$xdP_jQ*R` z#ZEJ_1_DJiCr1fuvnJ-`0Hx9;lmx;-s=x#&PBeuk&y)y~as~;yfe3#P5e6cnKt${$ zNkztYla(ZsY*<)@KQO=v9!6H74-9aEjf0i{0|T58VPjSLzyK!%CU2DNWlWlEFQsT7 V!N@50fdM=D5iI@%hinnZ!2oYat{?ya delta 322 zcmexvHQ$tPIWI340}$*uqL!w@HIXlkF=1k90xM%MgC_sR2Txg9AMguxa80&nk)FiJ zHu*K152M^>3--NCjLMV0ajpT9i@8=XDo*y{zPkB7Uo<15_GW8=DrQEb&D(^hGch_& z_7hWMa{!wExni<`q|WALVv88r{DAx-|H*z5?Tp@&uSsaJ1%Lz`C$mYaFnVm(mORbK z>I)RnoGd4%&6=2#1C-L1RuTZK3I-|V1<49dj+G7)bpr9dK|~OU2m=w3lTS)3GTxv3 wS~`iJl~woy1DxQS93vw)xl^W>F>bQBtfGA&Bct302JGZVu=p1ovS2p=0K2hK5&!@I diff --git a/dbtable.py b/dbtable.py index 850d97c..62d7719 100644 --- a/dbtable.py +++ b/dbtable.py @@ -24,7 +24,6 @@ class DbTable: res = sorted(self.columns().keys(), key = lambda x: x) if 'id' in res: res.remove('id') - return res def table_constraints(self): @@ -39,6 +38,14 @@ class DbTable: cur.execute(sql) self.dbconn.conn.commit() return + + def delete(self, val): + sql = "DELETE FROM " + self.table_name() + sql += " WHERE " + "".join(self.column_names_without_id()) + sql += "=" + "'" + "".join(val) + "';" + cur = self.dbconn.conn.cursor() + cur.execute(sql) + self.dbconn.conn.commit() def drop(self): sql = "DROP TABLE IF EXISTS " + self.table_name() diff --git a/main.py b/main.py index 5a46e58..124728b 100644 --- a/main.py +++ b/main.py @@ -60,14 +60,6 @@ class Main: cth.drop() return -# def show_main_menu(self): -# menu = """Добро пожаловать! -# Основное меню (выберите цифру в соответствии с необходимым действием): -# 1 - просмотр людей; -# 2 - сброс и инициализация таблиц; -# 9 - выход.""" -# print(menu) -# return def show_main_menu(self): menu = """Привутствуем в меню, выберите действие: 1 - просмотр категорий; @@ -90,25 +82,87 @@ class Main: print("Выбрано неверное число! Повторите ввод!") return "0" else: - return next_step + return next_step; - def show_people(self): - self.person_id = -1 - menu = """Просмотр списка блюд! -№\tНазвание\tВремя приготовления\tКатегория""" + def show_cath(self): + self.cath_id = -1 + menu = """Просмотр списка категорий! +№\tНазвание\n------------------------""" print(menu) - lst = DishTable().all() + lst = CathTable().all() for i in lst: - print(str(i[3]) + "\t" + str(i[2]) + "\t\t" + str(i[1]) + "\t\t\t" + str(i[0])) - menu = """Дальнейшие операции: + print(str(i[1]) + "\t" + str(i[0])) + menu = """------------------------\nДальнейшие операции: 0 - возврат в главное меню; - 3 - добавление нового человека; - 4 - удаление человека; - 5 - просмотр телефонов человека; + 3 - добавление новой категории; + 4 - удаление категории; + 5 - просмотр блюд в категории; 9 - выход.""" print(menu) return + def after_show_cath(self, next_step): + while True: + if next_step == "4": + CathTable().delete(input('Введите название удаляемой категории: ')) + return "1" + elif next_step == "6" or next_step == "7": + print("Пока не реализовано!") + next_step = "5" + elif next_step == "5": + next_step = self.show_dish_in_cath() + elif next_step != "0" and next_step != "9" and next_step != "3": + print("Выбрано неверное число! Повторите ввод!") + return "1" + else: + return next_step + + def show_add_cath(self): + data = [] + data.append(input("Введите название (1 - отмена): ").strip()) + if data[0] == "1": + return + while (len(data[0].strip()) == 0)or(len(data[0].strip()) > 32): + if (len(data[0].strip()) > 32): + data[0] = input("Название слишком длинное! Введите название заново (1 - отмена):").strip() + if data[0] == "1": + return + else: + data[0] = input("Название не может быть пустым! Введите название заново (1 - отмена):").strip() + if data[0] == "1": + return + CathTable().insert_one(data) + return + + def show_dish_in_cath(self): + if self.cath_id == -1: + while True: + name = input("Укажите название категории для вывода блюд (0 - отмена):") + while len(name.strip()) == 0: + name = input("Пустая строка. Повторите ввод! Укажите название категории для вывода блюд (0 - отмена):") + if name == "0": + return "1" + cath = CathTable().find_by_position(int(name)) + if not cath: + print("Введено неверное название!") + else: + self.cath_id = int(cath[1]) + self.cath_obj = cath + break + print("Выбрана категория: " + self.cath_obj[1]) + print("Блюда:") + lst = DishTable().all_by_cath_id(self.cath_id) + for i in lst: + print(i[1]) + menu = """Дальнейшие операции: + 0 - возврат в главное меню; + 1 - возврат в просмотр категорий; + 6 - добавление нового блюда; + 7 - удаление блюда; + 9 - выход.""" + print(menu) + return self.read_next_step() + def main_cycle(self): current_menu = "0" next_step = None @@ -118,96 +172,22 @@ class Main: next_step = self.read_next_step() current_menu = self.after_main_menu(next_step) elif current_menu == "1": - self.show_people() + self.show_cath() next_step = self.read_next_step() - current_menu = self.after_show_people(next_step) + current_menu = self.after_show_cath(next_step) elif current_menu == "2": self.show_main_menu() elif current_menu == "3": - self.show_add_person() + self.show_add_cath() current_menu = "1" print("До свидания!") return - def test(self): - DbTable.dbconn.test() + def test(self): + DbTable.dbconn.test() m = Main() - # Откоментируйте эту строку и закоментируйте следующую для теста # соединения с БД # m.test() -m.main_cycle() - - - # def after_show_people(self, next_step): - # while True: - # if next_step == "4": - # print("Пока не реализовано!") - # return "1" - # elif next_step == "6" or next_step == "7": - # print("Пока не реализовано!") - # next_step = "5" - # elif next_step == "5": - # next_step = self.show_phones_by_people() - # elif next_step != "0" and next_step != "9" and next_step != "3": - # print("Выбрано неверное число! Повторите ввод!") - # return "1" - # else: - # return next_step - - # def show_add_person(self): - # # Не реализована проверка на максимальную длину строк. Нужно доделать самостоятельно! - # data = [] - # data.append(input("Введите имя (1 - отмена): ").strip()) - # if data[0] == "1": - # return - # while len(data[0].strip()) == 0: - # data[0] = input("Имя не может быть пустым! Введите имя заново (1 - отмена):").strip() - # if data[0] == "1": - # return - # data.append(input("Введите фамилию (1 - отмена): ").strip()) - # if data[1] == "1": - # return - # while len(data[1].strip()) == 0: - # data[1] = input("Фамилия не может быть пустой! Введите фамилию заново (1 - отмена):").strip() - # if data[1] == "1": - # return - # data.append(input("Введите отчество (1 - отмена):").strip()) - # if data[2] == "1": - # return - # PeopleTable().insert_one(data) - # return - - - # def show_phones_by_people(self): - # if self.person_id == -1: - # while True: - # num = input("Укажите номер строки, в которой записана интересующая Вас персона (0 - отмена):") - # while len(num.strip()) == 0: - # num = input("Пустая строка. Повторите ввод! Укажите номер строки, в которой записана интересующая Вас персона (0 - отмена):") - # if num == "0": - # return "1" - # person = PeopleTable().find_by_position(int(num)) - # if not person: - # print("Введено число, неудовлетворяющее количеству людей!") - # else: - # self.person_id = int(person[1]) - # self.person_obj = person - # break - # print("Выбран человек: " + self.person_obj[2] + " " + self.person_obj[0] + " " + self.person_obj[3]) - # print("Телефоны:") - # lst = PhonesTable().all_by_person_id(self.person_id) - # for i in lst: - # print(i[1]) - # menu = """Дальнейшие операции: - # 0 - возврат в главное меню; - # 1 - возврат в просмотр людей; - # 6 - добавление нового телефона; - # 7 - удаление телефона; - # 9 - выход.""" - # print(menu) - # return self.read_next_step() - - - +m.main_cycle() \ No newline at end of file diff --git a/tables/cath_table.py b/tables/cath_table.py index 8c81193..369e087 100644 --- a/tables/cath_table.py +++ b/tables/cath_table.py @@ -15,6 +15,7 @@ class CathTable(DbTable): def find_by_position(self, num): + sql = "SELECT * FROM " + self.table_name() sql += " ORDER BY " sql += ", ".join(self.primary_key())