Final Python Report Printout
Final Python Report Printout
By
Chavan Om Surendra
Roll No. 06
Guide: Prof.
M .. Mohite
UNIVERSITY OF MUMBAI
(2023-2024)
CERTIFICATE
This is to certify the project entitled “Advanced To-Do List” is a bonafide work of
“Chavan Om Surendra (06), Gurav Aryush Sanjay (19), Gouda Rudrapratap Arun (18),
Parkar Kirtish Ajit (74), Ansari Arif Ashik Ali (01)” submitted to be University of
Mumbai in partial fulfillment of the requirement for the award of the “S.E.” in “Computer
Engineering”.
(Prof. M.Mohite)
Guide
Examiners
1. .........................................
2. .........................................
Date :
Place:
DECLARATION
We declare that this written submission represents our ideas in our own words and
where other ideas or words have been included, we have adequately excited and
referenced the original sources. We also declare that We have adhered to all principles of
academic honesty and integrity and have not misrepresented or fabricated or falsified any
idea/data/fact/source in our submission. We understand that any violation of the above
will be cause for disciplinary action by the Institute and can also evoke penal action from
the sources which have thus not been properly cited or from whom proper permission has
not been taken when needed.
1. Introduction 1
1.1 Introduction to Motivation 2
1.2 Problem Statement 3
1.3 Objectives 4
1.4 Scope
2.Review of literature 6
2.1 Review Papers
3. Requirement Analysis 9
3.1 Software Requirements
3.2 Hardware Requirements
5. Implementation 14
6. Conclusion 20
7.References 22
ABSTRACT
The project titled “Web-Based Messenger Using Python with Socket Programming” presents
the development of a scalable, real-time messaging platform designed for seamless
communication among users within a local network or across the internet. The system is
capable of supporting up to 300 concurrent users, making it a suitable solution for
environments such as educational institutions, corporate offices, or other small to medium-
sized networks that require an efficient and reliable messaging tool.
At its core, the platform follows a client-server architecture, where the server is responsible for
handling multiple client connections simultaneously. The server ensures the real-time
exchange of messages between users by maintaining continuous, active connections and
ensuring the reliable delivery of messages using socket programming. The system utilizes
TCP/IP protocols to guarantee that messages are transmitted accurately and in the correct
order, ensuring that the user experience is smooth and uninterrupted.
One of the key features of this system is its ability to function on both local and hosted
environments, allowing users to connect via IP addresses and port numbers, thus providing
flexibility in terms of accessibility. The server can be hosted to allow remote access, enabling
users to communicate even when they are not on the same local network. The application’s design
is focused on simplicity and ease of use, providing users with a platform that delivers instant
messaging with minimal setup.
This project demonstrates the practical application of network communication principles,
highlighting key concepts such as socket-based messaging, multi-threaded server management,
and the scalability of real-time communication systems. The architecture and design of the
system ensure that it can efficiently handle multiple users and scale as needed, making it suitable
for diverse environments where communication is essential.
Future versions of the platform could include additional features such as file sharing, group
chats, message history, and improved user management. These enhancements would make the
system more versatile, providing users with a comprehensive tool for collaboration and
communication. Overall, this project serves as both an educational tool for understanding
network programming and a practical solution for internal messaging needs, with the potential
to evolve into a fully-featured communication platform.
CHAPTER NO 1
INTRODUCTION
1
Introduction
In today's fast-paced world, effective time management and task tracking are essential for both personal
and professional success. Many people rely on to-do list applications to stay organized. However, many
of the existing tools are either too simplistic or overly complex. The motivation behind this project is:
To create a simple, user-friendly yet feature-rich task manager.
To help users categorize, prioritize, and organize tasks efficiently.
To enable offline access without requiring internet or third-party logins.
With the growing demands of modern life, students and professionals are often overwhelmed by tasks
and deadlines. This pressure leads to:
Missed deadlines due to disorganized schedules.
Reduced productivity and poor prioritization.
Increased stress and decreased task visibility.
The motivation behind this project stems from the need to build a personalized productivity assistant
that doesn’t depend on internet access, subscriptions, or mobile applications. This tool is intended to:
Empower users to take control of their daily responsibilities.
Reduce reliance on commercial task managers.
Deliver a simple, distraction-free experience for planning and execution.
2
1.2 Problem Statement
Most available to-do list managers either lack essential task management features or require internet
connectivity and logins. There is a need for an advanced, locally run desktop application that
provides:
Easy task creation and editing.
Categorization, prioritization, and sorting.
Task completion toggles and due date support.
Data persistence through saving/loading JSON files.
Despite a variety of tools available for task management, users still face challenges:
Inability to modify UI and workflow according to personal needs.
No integration of common features like filters, sorting, color cues in a single, simple
application.
Poor support for task classification by type or urgency.
Lack of flexibility in exporting or importing data.
Hence, the problem this project addresses is the absence of a customizable, standalone task manager
that operates efficiently without external dependencies or unnecessary complexity.
3
1.3 Objectives
4
1.4 Scope
Functional Scope:
The system will:
Provide CRUD (Create, Read, Update, Delete) functionalities for tasks.
Display tasks in a tabular (Treeview) format.
Enable sorting and filtering with real-time responsiveness.
Include built-in categories and priorities for better organization.
Technical Scope:
Developed using Python 3.x and Tkinter GUI toolkit.
Uses JSON for file-based persistence (save/load).
Does not require any external Python packages or databases.
Limitations:
No synchronization with external calendars or mobile apps.
No background reminder/notification service.
Does not support team or shared task management.
Despite limitations, this scope ensures a strong focus on core features essential for personal
productivity.
5
CHAPTER NO.2
Review of Literature
6
1.1 Review Papers
To design a functional and effective to-do list management application, it's important to understand
the academic and technological background of productivity tools, task management
methodologies, and human-computer interaction (HCI). Several research papers, articles, and
surveys have explored the design principles, cognitive science, and user behavior associated
with task management tools. Below is a review of relevant literature:
8
CHAPTER NO.3
Requirement Analysis
9
3.1 Software Requirements
To develop and run the Advanced To-Do List Manager, the following software components are
essential:
Python Environment
Python Version: 3.6 or higher
Tkinter: Included with standard Python installations
Additional Libraries:
o tkcalendar for date selection widgets
o Pillow for image handling (if incorporating icons or images)
o json for data serialization and storage
o Development Tools
Integrated Development Environment (IDE):
o Visual Studio Code
o PyCharm Community Edition
o IDLE (comes with Python)
The application is lightweight and doesn't demand high-end hardware. However, for optimal
performance, the following specifications are recommended:
Minimum Requirements
Processor: Dual-core CPU (2.0 GHz or higher)
RAM: 4 GB
Storage: 50 MB of free disk space
Display: 1024x768 resolution
Recommended Requirements
Processor: Quad-core CPU (3.0 GHz or higher)
RAM: 8 GB
Storage: 100 MB of free disk space
Display: 1920x1080 resolution
These specifications ensure smooth operation, especially when handling a large number of
tasks or utilizing advanced features like sorting and filtering.
10
CHAPTER NO.4
11
4.1Flow Chart
4.2UML Diagram
12
4.3 Data Flow Diagram
13
CHAPTER NO.5
Implementation
14
Program
import tkinter as tk
from tkinter import messagebox, ttk, filedialog
import json
from datetime import datetime
import os
class EnhancedTodoListApp:
def __init__(self, root):
self.root = root
self.root.title("Advanced To-Do List Manager")
self.root.geometry("700x600")
self.root.minsize(600, 500)
self.root.config(bg=self.colors["background"])
# Data structures
self.tasks = []
self.current_filter = "All"
self.current_sort = "Date Added"
self.categories = ["Work", "Personal", "Shopping", "Health", "Other"]
# Create header
self.create_header()
def create_header(self):
header_frame = tk.Frame(self.main_frame, bg=self.colors["primary"], padx=10, pady=5)
header_frame.pack(fill=tk.X)
def create_task_input(self):
input_frame = tk.Frame(self.main_frame, bg=self.colors["background"], pady=10)
input_frame.pack(fill=tk.X)
# Task entry
tk.Label(input_frame, text="Task:", bg=self.colors["background"]).grid(row=0, column=0,
padx=5, pady=5, sticky=tk.W)
self.task_entry = tk.Entry(input_frame, width=30, font=('Helvetica', 12))
self.task_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W+tk.E)
self.task_entry.bind('<Return>', lambda event: self.add_task())
# Category dropdown
tk.Label(input_frame, text="Category:", bg=self.colors["background"]).grid(row=0, column=2,
padx=5, pady=5, sticky=tk.W)
self.category_var = tk.StringVar(value=self.categories[0])
self.category_combo = ttk.Combobox(input_frame, textvariable=self.category_var,
values=self.categories, width=10)
self.category_combo.grid(row=0, column=3, padx=5, pady=5)
# Priority dropdown
tk.Label(input_frame, text="Priority:", bg=self.colors["background"]).grid(row=1, column=0,
padx=5, pady=5, sticky=tk.W)
self.priority_var = tk.StringVar(value="Medium")
priority_combo = ttk.Combobox(input_frame, textvariable=self.priority_var, values=["High",
"Medium", "Low"], width=10)
priority_combo.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W)
16
# Due date entry
tk.Label(input_frame, text="Due date:", bg=self.colors["background"]).grid(row=1, column=2,
padx=5, pady=5, sticky=tk.W)
self.due_date_entry = tk.Entry(input_frame, width=12, font=('Helvetica', 10))
self.due_date_entry.insert(0, "DD/MM/YYYY")
self.due_date_entry.grid(row=1, column=3, padx=5, pady=5)
self.due_date_entry.bind("<FocusIn>", lambda event: self.due_date_entry.delete(0, tk.END) if
self.due_date_entry.get() == "DD/MM/YYYY" else None)
self.due_date_entry.bind("<FocusOut>", lambda event: self.due_date_entry.insert(0,
"DD/MM/YYYY") if not self.due_date_entry.get() else None)
# Add button
add_button = tk.Button(input_frame, text="Add Task", command=self.add_task,
bg=self.colors["secondary"], fg="white", font=('Helvetica', 10, 'bold'),
padx=10, pady=5, relief=tk.GROOVE)
add_button.grid(row=0, column=4, rowspan=2, padx=10, pady=5)
input_frame.grid_columnconfigure(1, weight=1)
def create_task_list(self):
# Create a frame for the task list
list_frame = tk.Frame(self.main_frame, bg=self.colors["background"])
list_frame.pack(fill=tk.BOTH, expand=True, pady=10)
# Filter
tk.Label(filter_frame, text="Filter:", bg=self.colors["background"]).pack(side=tk.LEFT,
padx=5)
self.filter_var = tk.StringVar(value="All")
filter_options = ["All", "Active", "Completed"] + self.categories
filter_combo = ttk.Combobox(filter_frame, textvariable=self.filter_var, values=filter_options,
width=10)
filter_combo.pack(side=tk.LEFT, padx=5)
filter_combo.bind("<<ComboboxSelected>>", lambda event: self.apply_filter())
# Sort
tk.Label(filter_frame, text="Sort by:", bg=self.colors["background"]).pack(side=tk.LEFT,
padx=5)
self.sort_var = tk.StringVar(value="Date Added")
sort_combo = ttk.Combobox(filter_frame, textvariable=self.sort_var,
values=["Date Added", "Priority", "Due Date", "Alphabetical"], width=12)
sort_combo.pack(side=tk.LEFT, padx=5)
sort_combo.bind("<<ComboboxSelected>>", lambda event: self.sort_tasks())
# Search
tk.Label(filter_frame, text="Search:", bg=self.colors["background"]).pack(side=tk.LEFT,
17
# View menu
view_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="View", menu=view_menu)
view_menu.add_command(label="Show All Tasks", command=lambda: [app.filter_var.set("All"),
app.apply_filter()])
view_menu.add_command(label="Show Active Tasks", command=lambda:
[app.filter_var.set("Active"), app.apply_filter()])
view_menu.add_command(label="Show Completed Tasks", command=lambda:
[app.filter_var.set("Completed"), app.apply_filter()])
# Help menu
help_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Help", menu=help_menu)
help_menu.add_command(label="About", command=lambda: messagebox.showinfo("About",
"Advanced To-Do List Manager\nVersion 1.0"))
help_menu.add_command(label="Help", command=lambda: messagebox.showinfo("Help",
"Double-click a task to toggle its completion status.\n"
"Right-click a task for additional options.\n"
"Use the filters and sorting options to organize your tasks.\n"
"Save your tasks to a file to keep them for later."
))
if __name__ == "__main__":
root = tk.Tk()
app = EnhancedTodoListApp(root)
create_menu(root, app)
root.mainloop()
18
Output
19
CHAPTER NO.6
Coclusion
20
Conclusion
The To-Do App project, developed using Python, demonstrates how a simple yet effective desktop
application can be created to manage day-to-day tasks. The project primarily uses the Tkinter library
to design the Graphical User Interface (GUI), enabling users to interact with the app in a more
intuitive and visual manner.
Throughout the development process, several core Python programming concepts were implemented,
including functions, loops, conditional statements, file handling, and event-driven programming. The
app allows users to add new tasks, delete existing ones, and mark tasks as complete, thereby
supporting basic task management functionality.
In addition, the project highlights the importance of data persistence by enabling the app to save tasks
between sessions using text files (or optionally, a lightweight database like SQLite). This ensures that
users do not lose their data upon exiting the application.
From a user interface standpoint, attention was given to the layout design, button styling, and
responsive interaction, making the application both practical and user-friendly. This project also
opens doors to future enhancements, such as:
Adding due dates and priority levels for tasks
Integrating notifications or reminders
Syncing tasks with cloud storage or mobile devices
Adding animations or sound effects for better UX
Implementing voice commands for hands-free task management
In conclusion, this project not only fulfills its objective of creating a functional to-do list application
but also serves as a valuable learning experience in Python programming, GUI design, and real-world
problem-solving. It lays a solid foundation for building more complex and feature-rich applications in
the future.
21
CHAPTER NO.7
References
22
References
23