Файл: Операции, производимые с данными (Типы структур данных и предметная область).pdf
Добавлен: 30.03.2023
Просмотров: 367
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 Типы структур данных и предметная область
1.2 Линейный односвязный список
1.3 Алгоритмы для производимых операций
2. Программная реализация информационно-справочной системы для работы с данными
2.1 Инструменты для разработки
2.3 Руководство пользователя и тестирование программы
info = '' # вклады из списка
for a in Bank.catalogue:
info += a.show() + '\n'
f.writelines(info) # записать все вклады из списка
f.close() # закрыть файл
# функция чтения из файла
def openFile(filename):
with open(filename, 'r', encoding = 'utf-8') as f: # открыть файл на чтение (в режиме автоматического закрытия)
bbank = [line.strip() for line in f if line.strip()] # получить список строк из файла
for fli in bbank: # для каждой строки из этого списка
params = fli.strip().split(';') # получить список параметров строки по разделителю ';'
date_obj = d.datetime.strptime(params[3].strip(), '%Y-%m-%d').date() # получить дату из четвертого параметра
dep = Deposit(params[0].strip(), params[1].strip(), params[2].strip(), date_obj,
int(params[4].strip()), int(params[5].strip()), params[6].strip()) # создать объект вклада
Bank.catalogue.append(dep) # добавить его в односвязный список
lbox.delete(0, END)
for dep in Bank.catalogue:
lbox.insert(END, dep.show())
b1['state'] = 'disabled'
# список названий элементов-полей
fields = ['Название банка', 'Название тарифа', 'Валюта', 'Условия вклада']
# словарь для формирования числовых полей
# (ключ - параметр [год, месяц, день, срок, процент], значение - пара чисел [макс. значение параметра, мин. значение параметра])
numbers = {'Год открытия вклада':(2019, 2022), 'Месяц':(1, 12), 'День':(1, 31), 'Срок вклада':(1, 5), 'Процентная ставка':(5, 15)}
# функция добавления элементов на форму (возвращает словарь элементов)
def makeForm(root, fields):
entries = {} # словарь элементов-значений с ключами-названиями полей
for field in fields: # для каждого названия поля:
row = Frame(root) # создать рамку (фрейм)
lab = Label(row, width=22, text=field+': ', anchor='w') # создать текстовую метку шириной 22, растянуть налево
ent = Entry(row) # создать поле ввода
ent.insert(0, 'Введите ' + field) # вставить текст в поле ввода
row.pack(side=TOP, fill=X, padx=5, pady=5) # сделать рамку видимой, расположив сверху и растянув по форме, с отступами от границ по 5
lab.pack(side=LEFT) # сделать метку видимой, расположив слева
ent.pack(side=RIGHT, expand=YES, fill=X) # сделать поле ввода видимым, расположив справа и растянув по форме
entries[field] = ent # добавить поле ввода в словарь в соответствие с его названием
for num in numbers.items(): # для каждого значения:
row = Frame(root) # создать рамку (фрейм)
lab = Label(row, width=22, text=num[0]+': ', anchor='w') # создать текстовую метку шириной 22, растянуть налево
ent = Spinbox(row, from_=num[1][0], to=num[1][1]) # создать регулятор типа вверх-вниз для значений даты (установить макс. и мин. параметры регулятора в зависимости от выбранного ключа)
ent.insert(0, '')
row.pack(side=TOP, fill=X, padx=5, pady=5)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries[num[0]] = ent # добавить параметр даты в словарь в соответствие с его названием
return entries
root = Tk() # создать окно
lbox = Listbox(width=120, height=30, selectmode=SINGLE) # расположить на форме список