Professional Documents
Culture Documents
Project Report
Project Report
SCHOOL,
JODHPUR
Certificate
This is to certify that Uday Boyal of St. Anne's Sr. Sec. School of Class
XII-A has successfully completed his Computer Science Project entitled
To-do List Management System under the guidance of Mrs Archana
Agarwal. He has taken proper care and shown utmost sincerity in
completion of this project. I certify that the project is up to my
expectation and as per proper guidelines issued by C.B.S.E.
Acknowledgment
I would like to express my deepest appreciation to my teacher
Mrs Archana Agarwal who provided me the golden opportunity
to do this wonderful project of Computer Science.
Index
⮚ Certificate
⮚ Acknowledgment
⮚ Introduction
⮚ Abstract
⮚ System Requirements
⮚ How to use?
⮚ Menu Design
⮚ Source Code
⮚ Files
⮚ Bibliography
Introduction
Abstract
The application not only assists users in creating and modifying tasks
but also stores and retrieves these tasks for future reference. It ensures
that users' to-do lists persist across sessions, enabling them to maintain
their task lists over time. The system offers a straightforward, yet
efficient, solution for users to manage their daily commitments and
streamline their productivity.
System Requirements
How to Use?
Menu Design
Home Page: -
Upon Log in: -
Source Code
import tkinter as tk
from PIL import ImageTk, Image
import time
root = None
def sign_up(event=None):
global root
root.destroy()
while True:
us = input("Enter username to sign up: ")
print()
if us == "":
print("Please enter a valid username")
print()
continue
else:
break
def log_in_main(event=None):
global root
root.withdraw()
def find_date(username):
a = username
with open(f"{a}.txt", 'a+') as F:
F.seek(0)
b = F.readlines()
if b == []:
print("For using the To-do list, you should have dates, so
please enter some of them!!")
print()
with open(f"{a}.txt", 'a+') as F1:
F1.seek(0)
lst = []
while True:
c = input("Enter a Date: ")
print()
st = c + '\n'
lst = lst + [st]
ch = input("Do you want to continue? (Y/N) ")
print()
if ch != "Y":
break
F1.writelines(lst)
print("Now the following dates have been added")
print()
F1.seek(0)
nb = F1.readlines()
for i in nb:
print(i)
ch = input("Enter the date to see/modify the list: ")
print()
else:
print("The following dates are already present")
print()
for i in b:
ni = i.split('\n')
print(ni[0])
print()
while True:
ch = input("Do you want to add some more dates? (Y/N) ")
print()
if ch == "Y":
with open(f"{a}.txt", 'a+') as F1:
lst = []
while True:
c = input("Enter a Date: ")
print()
st = c + '\n'
lst = lst + [st]
ch = input("Do you want to continue? (Y/N) ")
print()
if ch != "Y":
break
F1.writelines(lst)
print("Now the following dates have been added")
print()
F1.seek(0)
nb = F1.readlines()
for i in nb:
print(i)
while True:
print()
ch = input("Enter the date to see/modify the
list: ")
print()
adf = ch + '\n'
if adf in b:
return ch, a
else:
print()
print("Please enter a valid date")
print()
continue
elif ch == "N":
while True:
ch = input("Enter the date to see/modify the list: ")
print()
adf = ch + '\n'
if adf in b:
return ch, a
else:
print("Please enter a valid date")
print()
continue
else:
print("Please enter a valid choice")
print()
continue
def log_in():
while True:
F.seek(0)
rd = F.readlines()
for i in rd:
srd = i.split('\t')
if us in srd:
while True:
ps = input("Enter password: ")
print()
nps = ps + '\n'
if nps != srd[1]:
print("Please enter the correct password")
print()
continue
else:
return us
else:
print("This username is not present in our database.")
print("Please sign up for this username!!")
print()
continue
a = log_in()
b = find_date(a)
to_do_list_programming(b[0], b[1])
def exit_app(event=None):
global root
root.destroy()
print("Thanks for using the application!! Have a great Day!!")
global root
def load_tasks():
try:
with open(f"{df}_{us}.txt", "a+") as F:
F.seek(0)
tasks.extend([line.strip() for line in F])
except FileNotFoundError:
print("File not found")
def save_tasks():
with open(f"{df}_{us}.txt", "w") as F:
for task in tasks:
F.write(f"{task}\n")
def show_tasks():
if tasks == []:
print("No tasks in the list.")
else:
print("Tasks:")
task_number = 1
for task in tasks:
print(f"{task_number}. {task}")
task_number += 1
print()
def add_task():
task = input("Enter the task: ")
print()
tasks.append(task)
print("Task added!")
print()
save_tasks()
def mark_completed():
show_tasks()
if not tasks:
return
task_index = int(input("Enter the task number to mark as
completed: ")) - 1
print()
if 0 <= task_index < len(tasks):
if not tasks[task_index].startswith("[Completed]"):
tasks[task_index] = f"[Completed] {tasks[task_index]}"
print("Task marked as completed!")
print()
save_tasks()
else:
print("Task is already marked as completed.")
else:
print("Invalid task number.")
print()
def update_task():
show_tasks()
if not tasks:
return
task_index = int(input("Enter the task number to update: ")) - 1
if 0 <= task_index < len(tasks):
updated_task = input("Enter the updated task: ")
tasks[task_index] = updated_task
print("Task updated!")
print()
save_tasks()
else:
print("Invalid task number.")
print()
def remove_task():
show_tasks()
if not tasks:
return
task_index = input("Enter the task number to remove: ")
if not task_index.isdigit():
print("Please enter a valid task number.")
return
task_index = int(task_index) - 1
if 0 <= task_index < len(tasks):
removed_task = tasks.pop(task_index)
print(f"Task '{removed_task}' removed!")
print()
save_tasks()
else:
print("Invalid task number.")
print()
load_tasks()
while True:
print("Menu:")
print("1. Show Tasks")
print("2. Add Task")
print("3. Mark Completed")
print("4. Remove Task")
print("5. Update Task")
print("6. Exit this menu")
print()
if choice == '1':
show_tasks()
elif choice == '2':
add_task()
elif choice == '3':
mark_completed()
elif choice == '4':
remove_task()
elif choice == '5':
update_task()
elif choice == '6':
save_tasks()
time.sleep(2)
root.deiconify()
break
def log_sin():
global root
time.sleep(2)
root = tk.Tk()
root.title("To-do List Management System")
root.geometry("1300x650")
root.mainloop()
log_sin()
Data Dictionary
“Users.txt” (which contain all the signed up users)
The above photo is “Exit.png” save this image as PNG, i.e., Portable
Network Graphics to the path where the programme given above is
saved.
The above photo is “Log in.png” save this image as PNG, i.e., Portable
Network Graphics to the path where the programme given above is
saved.
The above photo is “Sign up.png” save this image as PNG, i.e.,
Portable Network Graphics to the path where the programme given
above is saved.
Limitations & Enhancements
⮚ You have to log in again and again for editing dates, i.e., after
exiting the to-do list's functioning, then the dates will not show
again and you have to login again to modify other dates.