На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Учет нарушений ПДД (Python, tkinter, customtkinter, sqlite3)

Задание

Ввести и сохранить в файле данные следующей структуры: ф.,и.,о. водителя, номер и марка автомашины (5-7 марок), год приобретения, количество нарушений.

Организовать просмотр исходных данных и вывести список нарушителей (сортировка по количеству нарушений по возрастанию метод Шелла), с указанием ф.,и.,о. водителя, номера машины и количества нарушений.

Ввод и вывод данных организовать в виде таблиц. Отладку программы производить на примере файла, состоящего не менее чем из 15 записей.  Кроме этой версии, мной написана еще одна с базой данных. 

Функционал программы

  • выводит данные в соответствие с заданием
  • добавление данных
  • редактирование данных
  • удаление данных
  • поиск данных
  • обновление данных. 

Содержание отчета к программе

Введение. 3

1 Теоретические основы разработки приложений на языке Python. 4

1.1 Python как современный язык программирования. 4

1.2 Сравнение библиотек tkInter, PyQt, wxPython и их сравнение с WinForms 6

1.3 Пример разработки приложения на языке Python с графическим интерфейсом. 17

2 Практическая часть. 21

2.1 Постановка и описание задачи. 21

2.2 Техническое задание на разработку приложения «ГАИ. Учёт нарушений ПДД»  21

2.3 Описание процесса разработки приложения «ГАИ. Учёт нарушений ПДД». 22

2.4 Техническое задание на разработку приложения «ГАИ. Учёт нарушений ПДД (расширенная версия)». 26

2.5 Описание процесса разработки приложения «ГАИ. Учёт нарушений ПДД (расширенная версия)». 28

Заключение. 33

Список использованных источников. 34

Приложение. 35

Приложение А. Полный код программы. 35

Приложение Б. Полный код программы (версия с базой данных) 36

Фрагмент программного кода

import tkinter as tk


class DriverTable(tk.Tk):
    def __init__(self, drivers):
        super().__init__()
        self.title("Driver Information")

        self.table = tk.Frame(self)
        self.table.pack()

        headings = ['Full Name', 'Car Number', 'Car Brand', 'Violations']
        for i, heading in enumerate(headings):
            label = tk.Label(self.table, text=heading, relief=tk.RIDGE)
            label.grid(row=0, column=i, sticky="nsew")

        for i, driver in enumerate(drivers):
            label = tk.Label(self.table, text=driver.full_name, relief=tk.RIDGE)
            label.grid(row=i + 1, column=0, sticky="nsew")
            label = tk.Label(self.table, text=driver.car_number, relief=tk.RIDGE)
            label.grid(row=i + 1, column=1, sticky="nsew")
            label = tk.Label(self.table, text=driver.car_brand, relief=tk.RIDGE)
            label.grid(row=i + 1, column=2, sticky="nsew")
            label = tk.Label(self.table, text=driver.violations, relief=tk.RIDGE)
            label.grid(row=i + 1, column=3, sticky="nsew")

        for i in range(4):
            self.table.columnconfigure(i, weight=1)

        for i in range(len(drivers) + 1):
            self.table.rowconfigure(i, weight=1)


if __name__ == "__main__":
    class Driver:
        def __init__(self, full_name, car_number, car_brand, year_of_purchase, violations):
            self.full_name = full_name
            self.car_number = car_number
            self.car_brand = car_brand
            self.year_of_purchase = year_of_purchase
            self.violations = violations


    def read_data(filename):
        drivers = []
        with open(filename, 'r', encoding='utf-8') as file:
            for line in file:
                data = line.strip().split(', ')
                driver = Driver(data[0], data[1], data[2], int(data[3]), int(data[4]))
                drivers.append(driver)
        return drivers


    def shell_sort(drivers):
        n = len(drivers)
        gap = n // 2
        while gap > 0:
            for i in range(gap, n):
                temp = drivers[i]
                j = i
                while j >= gap and drivers[j - gap].violations > temp.violations:
                    drivers[j] = drivers[j - gap]
                    j -= gap
                drivers[j] = temp
            gap //= 2


    filename = 'data.txt'
    drivers = read_data(filename)
    shell_sort(drivers)

    app = DriverTable(drivers)
    app.mainloop()

Фрагмент программного кода

import tkinter as tk
from tkinter import ttk
import sqlite3
from PIL import ImageTk
import customtkinter


# customtkinter.set_appearance_mode("dark")
# customtkinter.set_default_color_theme("dark-blue")


# Класс Main
def open_update_dialog():
    Update()


class Main(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.tree = None
        self.refresh_img = ImageTk.PhotoImage(file='refresh.png')
        self.search_img = ImageTk.PhotoImage(file='search.png')
        self.delete_img = ImageTk.PhotoImage(file='delete.png')
        self.update_img = ImageTk.PhotoImage(file='edit.png')
        self.add_img = ImageTk.PhotoImage(file='add.png')
        self.init_main()
        self.db = db
        self.view_records()

    # Главное окно
    def init_main(self):
        title_label = tk.Label(root, text="Учёт нарушений", font=("Arial", 15, "bold"),
                               border=12, relief=tk.GROOVE, bg="blue", foreground="yellow")

        title_label.pack(side=tk.TOP, fill=tk.X)

        toolbar = tk.Frame(bg='beige', bd=2)
        toolbar.pack(side=tk.TOP, fill=tk.X)

        btn_open_dialog = tk.Button(toolbar, text='Добавить нарушение', command=self.open_dialog, bg='beige',
                                    bd=0, compound=tk.TOP, image=self.add_img)
        btn_open_dialog.pack(side=tk.LEFT)

        btn_edit_dialog = tk.Button(toolbar, text='Редактировать', bg='beige', bd=0, image=self.update_img,
                                    compound=tk.TOP, command=open_update_dialog)
        btn_edit_dialog.pack(side=tk.LEFT)

        btn_delete_dialog = tk.Button(toolbar, text='Удалить', bg='beige', bd=0, image=self.delete_img,
                                      compound=tk.TOP, command=self.delete_records)
        btn_delete_dialog.pack(side=tk.LEFT)

        btn_search = tk.Button(toolbar, text='Поиск', bg='beige', bd=0, image=self.search_img,
                               compound=tk.TOP, command=self.open_search_dialog)

        btn_search.pack(side=tk.LEFT)

        btn_refresh = tk.Button(toolbar, text='Обновить', bg='beige', bd=0, image=self.refresh_img,
                                compound=tk.TOP, command=self.view_records)
        btn_refresh.pack(side=tk.LEFT)

        columns = ('ID', 'full_name', 'brand', 'violations')

        self.tree = ttk.Treeview(self, columns=columns, height=15, show='headings')

        self.tree.column('ID', width=30, anchor=tk.CENTER)
        self.tree.column('full_name', width=365, anchor=tk.CENTER)
        self.tree.column('brand', width=120, anchor=tk.CENTER)
        self.tree.column('violations', width=110, anchor=tk.CENTER)

        self.tree.heading('ID', text='ID')
        self.tree.heading('full_name', text='ФИО')
        self.tree.heading('brand', text='Марка')
        self.tree.heading('violations', text='Нарушения')

        self.tree.pack(side=tk.LEFT)

        scroll = tk.Scrollbar(self, command=self.tree.yview)
        scroll.pack(side=tk.LEFT, fill=tk.Y)
        self.tree.configure(yscrollcommand=scroll.set)

Структура проекта

Скриншот архива с проектом

Пояснения по запуску программы

Для запуска приложения необходимо скачать python с оффициального сайта, установить. Скачать PyCharm с оффициального сайта - https://www.jetbrains.com/pycharm/download/#section=windows, выбираем версию Community, устанавливаем, ставим все галочки. С помощью клика по правой кнопке мыши (ПКМ), открываем папку с проектом.

Купить 3000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

admin

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

3000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

КР Python. На продажу.rar
8249555
Оцени работу

рейтинг

Учет нарушений ПДД (Python, tkinter, customtkinter, sqlite3)
Программа написана на Python, предназначена для учета нарушений ПДД. Подробнее в самом задании.
Категория: Образование
Стоимость: 3000,00