diff --git a/Task Manager Application(homework) b/Task Manager Application(homework) new file mode 100644 index 0000000..f48d31f --- /dev/null +++ b/Task Manager Application(homework) @@ -0,0 +1,80 @@ +tasks = [] +next_sequence_number = 1 + +def add_task(): + global next_sequence_number + task_name = input("Enter task name: ") + + # Find the next available sequence number + sequence_number = next_sequence_number + next_sequence_number +=1 + + task = { + "sequence_number": sequence_number, + "task_name": task_name, + "status": "Pending" + } + tasks.append(task) + print(f"Task '{task_name}' added with sequence number {sequence_number}.") + +def complete_task(): + sequence_number = int(input("Enter sequence number of task to complete: ")) + for task in tasks: + if task["sequence_number"] == sequence_number: + task["status"] = "Completed" + print(f"Task '{task['task_name']}' marked as completed.") + return + print(f"Task with sequence number {sequence_number} not found.") + +def delete_task(): + sequence_number = int(input("Enter sequence number of task to delete: ")) + for task in tasks: + if task["sequence_number"] == sequence_number: + task["status"] = "Deleted" + print(f"Task '{task['task_name']}' deleted.") + return + print(f"Task with sequence number {sequence_number} not found.") + +def list_completed_tasks(): + completed_tasks = [task for task in tasks if task["status"] == "Completed"] + if completed_tasks: + print("Completed Tasks:") + for task in sorted(completed_tasks, key=lambda x: x["sequence_number"]): + print(f"- {task['sequence_number']}: {task['task_name']}") + else: + print("No completed tasks found.") + +def list_all_tasks(): + if tasks: + print("All Tasks:") + for task in sorted(tasks, key=lambda x: x["sequence_number"]): + print(f"- {task['sequence_number']}: {task['task_name']} ({task['status']})") + else: + print("No tasks found.") + +while True: + print("\nTask Manager") + print("1. Add Task") + print("2. Complete Task") + print("3. Delete Task") + print("4. List Completed Tasks") + print("5. List All Tasks") + print("6. Exit") + + choice = input("Enter your choice: ") + + if choice == '1': + add_task() + elif choice == '2': + complete_task() + elif choice == '3': + delete_task() + elif choice == '4': + list_completed_tasks() + elif choice == '5': + list_all_tasks() + elif choice == '6': + print("Exiting...") + break + else: + print("Invalid choice. Please try again.") diff --git a/__pycache__/base_class.cpython-312.pyc b/__pycache__/base_class.cpython-312.pyc new file mode 100644 index 0000000..418f599 Binary files /dev/null and b/__pycache__/base_class.cpython-312.pyc differ diff --git a/base_class.py b/base_class.py new file mode 100644 index 0000000..c363fde --- /dev/null +++ b/base_class.py @@ -0,0 +1,106 @@ +import json,sys +class base_class: + + def __init__(self): + self.__status = ['completed','Pending'] + + def menu_list(self): + create_menu_list = [ + { + "text":"Add a new task Press 1", + "type":"int" + }, + { + "text":"Complete a task Press 2", + "type":"int" + }, + { + "text":"Delete a task Press 3", + "type":"int" + }, + { + "text":"List completed tasks Press 4", + "type":"int" + }, + { + "text":"List all tasks with their status Press 5", + "type":"int" + }] + return create_menu_list + + def add_new_task(self): + try: + task = input("Please Enter Task") + status = input("Please Enter status") + data = self.__read_json_data() + id = self.__create_sequence_id() + data.append({"id":id,"task":task,"status":status}) + self.__write_data_in_file(data) + return "New customer added" + except Exception as e: + print(e) + + def complete_task(self): + try: + id = int(input("Please Enter the task id which you want to update ")) + rows = self.__read_json_data() + for i in rows: + i["status"] = "completed" + self.__write_data_in_file(rows) + return "Successfully updated" + except Exception as e: + print(e) + + def delete_task(self): + try: + id = int(input("Please Enter the task id which you want to delete ")) + data = self.__read_json_data() + filtered_data = [item for item in data if item["id"] != id] + self.__write_data_in_file(filtered_data) + return "Successfully deleted" + except: + print("There is some Error") + def view_list_task(self): + try: + data = self.__read_json_data() + text = '' + for i in data: + text += "SR.NO: "+str(i['id'])+" Task: "+i['task']+" Status: "+i["status"]+"\n" + return text + except Exception as e: + print("There is some error to read data") + + def __find_missing_numbers(self,seq): + if not seq: + return 1 + full_range = set(range(min(seq), max(seq) + 1)) + missing = sorted(full_range - set(seq)) + if not missing: + return max(seq) + 1 + else: + return missing[0] + + def __create_sequence_id(self): + data = self.__read_json_data() + list_id = [] + for ids in data: + list_id.append(ids["id"]) + return self.__find_missing_numbers(list_id) + + def __read_json_data(self): + try: + f = open('data.json') + data = json.load(f) + f.close() + return data + except Exception as e: + print("There is some error to reada data") + + def __write_data_in_file(self,data): + try: + data = sorted(data, key=lambda x: x["id"]) + with open("data.json",'w') as file: + file.seek(0) + return json.dump(data, file, indent = 4) + except: + return "There is some error to data write in file" diff --git a/data.json b/data.json new file mode 100644 index 0000000..a06dd5e --- /dev/null +++ b/data.json @@ -0,0 +1,12 @@ +[ + { + "id": 1, + "task": "dad", + "status": "completed" + }, + { + "id": 2, + "task": "Athis is test", + "status": "completed" + } +] \ No newline at end of file diff --git a/week 3.py b/week 3.py new file mode 100644 index 0000000..370f7aa --- /dev/null +++ b/week 3.py @@ -0,0 +1,48 @@ +list_tasks = {} +available_nums = [] +task_counter = 1 + +def get_task_num(): + global task_counter + return available_nums.pop(0) if available_nums else task_counter + +while True: + action = input("\n[A]dd [D]elete [Q]uit: ").strip().lower() + + if action == 'a': + name = input("Task name: ") + status = input("Status [C]ompleted / [P]ending: ").strip().lower() + + if status not in ['c', 'p']: + print(" Enter C or P only.") + continue + + stat = ("Completed", "Not pending") if status == 'c' else ("Not completed", "Pending") + num = get_task_num() + list_tasks[num] = {"Task Name": name, "Statuse is ": stat} + if not available_nums: task_counter += 1 + print(f" Task {num} added.") + + elif action == 'd': + try: + num = int(input("Task number to delete: ")) + if num in list_tasks: + del list_tasks[num] + available_nums.append(num) + available_nums.sort() + print(f" Task {num} deleted.") + else: + print(" Task not found.") + except: + print(" Invalid number.") + + elif action == 'q': + print(" Goodbye!") + break + + else: + print(" Invalid choice.") + + print("\n Task list:") + for n in sorted(list_tasks): + print(f"Task {n}: {list_tasks[n]}") diff --git a/zahid-team-leader-question1.py b/zahid-team-leader-question1.py new file mode 100644 index 0000000..58c0aad --- /dev/null +++ b/zahid-team-leader-question1.py @@ -0,0 +1,21 @@ +from base_class import base_class +base_function = base_class() + +try: + menu_list = base_function.menu_list() + for menu in menu_list: + print(f"{menu["text"]}\n") +except Exception as e: + print(e) +try: + menu_choice = int(input("Please Select from above menu ")) + if(menu_choice == 1): + print(base_function.add_new_task()) + elif(menu_choice == 2): + print(base_function.complete_task()) + elif(menu_choice == 3): + print(base_function.delete_task()) + elif(menu_choice == 4): + print(base_function.view_list_task()) +except Exception as e: + print("You selected Wrong option") \ No newline at end of file