From f51a4f61c4e1a73eaae4d37b1fdedc931c2b442c Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 22:13:50 +0300 Subject: [PATCH 1/9] Add files via upload --- y.anise.SPEC.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 y.anise.SPEC.txt diff --git a/y.anise.SPEC.txt b/y.anise.SPEC.txt new file mode 100644 index 0000000..ee1ec9d --- /dev/null +++ b/y.anise.SPEC.txt @@ -0,0 +1,64 @@ +### Dosya 1: SPEC.txt + +PROJECT: mini-note +AUTHOR: Yağmur Anise KARACA (251478022) +VERSION: v1 +DATE: 2026-03-24 + +======================================== +OVERVIEW +======================================== + +mini-notes is a command-line utility to manage quick text notes. +It allows creating, listing, searching, and deleting notes. +All data is stored in a hidden directory called .mininote/ + +======================================== +COMMANDS +======================================== + +--- init --- +Usage: python mininote.py init +Creates a .mininote/ directory and an empty tasks.dat file. +If .mininote/ already exists, print "Already initialized" and exit. + +--- create --- +Usage: python mininote.py create "title" "content" +Displays all saved notes (ID and Title only). +Status: Always active by default. +Prints saved with ID: " + +--- list --- +Usage: python mininote.py list +Description: Displays all saved notes (ID and Title only). +Output: + [1] Shopping List + [2] Meeting Notes +Error: If no notes, print "No notes found." + +--- search --- +Usage: python mininote.py search "keyword" +Description: Searches for the keyword in titles and contents. +Output: Shows matching notes in 'list' format. +Error: If no match, print "No results for: " + +--- delete --- +Usage: python mininote.py delete 1 +Description: Removes the note with the given ID. +Output: "Note #1 deleted." +Error: If ID not found, print "Note #1 not found." + +======================================== +DATA FORMAT +======================================== +File: .mininotes/notes.dat +Format: id|title|content|date +Example: 1|Grocery|Buy milk and eggs|2026-03-17 + +======================================== +ERROR HANDLING +======================================== + +- Running any command before "init": "Not initialized. Run: python mininote.py init" +- Unknown command: "Unknown command: " +- Missing arguments: "Usage: python mininote.py [args]" From 3144015f5720f0f6a912f796acecb48fec906d8b Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 22:19:44 +0300 Subject: [PATCH 2/9] Enhance SPEC.txt with search command details Updated the SPEC.txt file to include additional details about the search command and its case-insensitivity. --- y.anise.SPEC.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/y.anise.SPEC.txt b/y.anise.SPEC.txt index ee1ec9d..098b027 100644 --- a/y.anise.SPEC.txt +++ b/y.anise.SPEC.txt @@ -38,6 +38,7 @@ Error: If no notes, print "No notes found." --- search --- Usage: python mininote.py search "keyword" +The search operation is case-insensitive. Description: Searches for the keyword in titles and contents. Output: Shows matching notes in 'list' format. Error: If no match, print "No results for: " From e9eedc7284d52f6cb6c6a9f859b2d71c49a9fc66 Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 22:38:32 +0300 Subject: [PATCH 3/9] Add files via upload --- solution_v1.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 solution_v1.py diff --git a/solution_v1.py b/solution_v1.py new file mode 100644 index 0000000..08e1cac --- /dev/null +++ b/solution_v1.py @@ -0,0 +1,74 @@ +""" +mini-notes v0 — Basitlestirilmis implementasyon +Ogrenci: Yağmur Anise KARACA (251478022) +Kapsam: Sadece init ve create komutlari. +Yasaklar: Dongu (for/while) ve Liste ([]) kullanilmadi. +""" +""" +V1 GÖREV LİSTESİ: +1. Hata mesajlarını ve kullanıcı bilgilendirmelerini Türkçeleştir. +2. 'create' komutuna 'Öncelik' (Priority) parametresi ekle. +3. Not başlığı veya içeriği boş girilirse kullanıcıyı uyaracak bir kontrol ekle. +""" + +import sys +import os + + +def initialize(): + """Not defteri klasörünü ve dosyasını oluşturur.""" + if os.path.exists(".mininotes"): + return "Hata: Uygulama zaten başlatılmış." + + os.mkdir(".mininotes") + f = open(".mininotes/notes.dat", "w") + f.close() + return "Not defteri başarıyla oluşturuldu." + +def create_note(title, content, priority="Orta"): + # GÖREV 3: Boş giriş kontrolü + if title == "" or content == "": + return "Hata: Not başlığı veya içeriği boş bırakılamaz!" + + if not os.path.exists(".mininotes"): + return "Hata: Önce uygulamayı başlatmalısınız (init komutu)." + + f = open(".mininotes/notes.dat", "r") + data = f.read() + f.close() + + note_id = data.count("\n") + 1 + + # GÖREV 2: Öncelik bilgisi dosyaya kaydediliyor + f = open(".mininotes/notes.dat", "a") + f.write(str(note_id) + "|" + title + "|" + content + "|" + priority + "|2026-03-17\n") + f.close() + + return "Not başarıyla kaydedildi. ID: " + str(note_id) + " [Öncelik: " + priority + "]" + +def show_not_implemented(command): + return "'" + command + "' komutu ilerleyen haftalarda eklenecektir." + +# --- Ana Program --- +if len(sys.argv) < 2: + print("Kullanım: python mininote.py [argümanlar]") +else: + cmd = sys.argv[1] + + if cmd == "init": + print(initialize()) + elif cmd == "create": + # Create komutu için 4 veya 5 argüman (opsiyonel öncelik dahil) + if len(sys.argv) < 4: + print("Kullanım: python mininote.py create \"Başlık\" \"İçerik\" [Öncelik]") + else: + prio = "Orta" + if len(sys.argv) == 5: + prio = sys.argv[4] + print(create_note(sys.argv[2], sys.argv[3], prio)) + else: + # Diğer komutlar (list, search, delete) henüz aktif değil + if cmd in ["list", "search", "delete"]: + print(show_not_implemented(cmd)) + else: + print("Bilinmeyen komut: " + cmd) \ No newline at end of file From bd02dc00c06e7d245e1ef3b52a2863bcf9f9ee4e Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 22:43:09 +0300 Subject: [PATCH 4/9] Add README for Mini Notes Project Added project description, version updates, and usage instructions. --- READMEy.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 READMEy.md diff --git a/READMEy.md b/READMEy.md new file mode 100644 index 0000000..a8adb85 --- /dev/null +++ b/READMEy.md @@ -0,0 +1,17 @@ +# Mini Notes Project 📝 + +Bu proje, komut satırı üzerinden çalışan basit bir not alma uygulamasıdır. + +## V1 Geliştirmeleri (V0 -> V1 Farkları) +Ödevin V1 aşaması kapsamında aşağıdaki güncellemeler yapılmıştır: + +1. **Dil Güncellemesi:** Tüm kullanıcı mesajları ve hata bildirimleri Türkçeleştirilerek kullanım kolaylığı sağlandı. +2. **Öncelik Sistemi:** Not oluştururken artık `Düşük`, `Orta` veya `Yüksek` gibi öncelik seviyeleri eklenebiliyor. +3. **Veri Doğrulama:** Başlık veya içerik boş bırakıldığında uygulamanın hata vermesi ve kullanıcıyı uyarması sağlandı. + +## Kurulum ve Kullanım +Uygulamayı başlatmak için: +`python solution_v1.py init` + +Not eklemek için: +`python solution_v1.py create "Başlık" "İçerik" "Yüksek"` From 23312ac8556b2f0e28bc4c30c3040f2b23f35c9f Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 22:45:01 +0300 Subject: [PATCH 5/9] Update READMEy.md with new features and improvements --- READMEy.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/READMEy.md b/READMEy.md index a8adb85..20f5752 100644 --- a/READMEy.md +++ b/READMEy.md @@ -8,6 +8,9 @@ Bu proje, komut satırı üzerinden çalışan basit bir not alma uygulamasıdı 1. **Dil Güncellemesi:** Tüm kullanıcı mesajları ve hata bildirimleri Türkçeleştirilerek kullanım kolaylığı sağlandı. 2. **Öncelik Sistemi:** Not oluştururken artık `Düşük`, `Orta` veya `Yüksek` gibi öncelik seviyeleri eklenebiliyor. 3. **Veri Doğrulama:** Başlık veya içerik boş bırakıldığında uygulamanın hata vermesi ve kullanıcıyı uyarması sağlandı. +4. **Dil Desteği:** Kullanıcı deneyimini artırmak amacıyla tüm hata ve bilgilendirme mesajları Türkçeleştirildi. +5. **Yeni Veri Alanı:** Notlara "Öncelik" (Priority) özelliği eklendi. Artık notlar oluşturulurken önem seviyesi belirtilebiliyor. +6. **Hata Denetimi:** Kullanıcının yanlışlıkla boş başlık veya içerik girmesini engelleyen bir kontrol mekanizması eklendi. ## Kurulum ve Kullanım Uygulamayı başlatmak için: From 54e94f4978e31d1bcaf4c8604c52d2b88327bbb9 Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 23:03:44 +0300 Subject: [PATCH 6/9] Add filter command to mini-note utility Added filter command to mini-note utility for priority-based note listing. --- y.anise.SPEC.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/y.anise.SPEC.txt b/y.anise.SPEC.txt index 098b027..d2943be 100644 --- a/y.anise.SPEC.txt +++ b/y.anise.SPEC.txt @@ -43,6 +43,12 @@ Description: Searches for the keyword in titles and contents. Output: Shows matching notes in 'list' format. Error: If no match, print "No results for: " +--- filter --- +Usage: python mininote.py filter "High" +Description: Lists only the notes that match the specified priority. +Output: Displays notes in 'list' format but filtered by priority level. +Error: If no notes match the priority, print "No notes found with priority: " + --- delete --- Usage: python mininote.py delete 1 Description: Removes the note with the given ID. From fe36657604d15856e4ad5867c1d03baa156b8602 Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 23:15:17 +0300 Subject: [PATCH 7/9] Update READMEy.md with new features and usage Added a new feature list and installation instructions. --- READMEy.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/READMEy.md b/READMEy.md index 20f5752..193a351 100644 --- a/READMEy.md +++ b/READMEy.md @@ -12,6 +12,13 @@ Bu proje, komut satırı üzerinden çalışan basit bir not alma uygulamasıdı 5. **Yeni Veri Alanı:** Notlara "Öncelik" (Priority) özelliği eklendi. Artık notlar oluşturulurken önem seviyesi belirtilebiliyor. 6. **Hata Denetimi:** Kullanıcının yanlışlıkla boş başlık veya içerik girmesini engelleyen bir kontrol mekanizması eklendi. +""" +V2 GÖREV LİSTESİ: +1. 'list' komutunu ekle: Tüm notları döngü kullanarak alt alta listele. +2. 'search' komutunu ekle: Kullanıcının girdiği kelimeyi not başlıklarında ara. +3. 'filter' komutunu ekle: Sadece seçilen öncelik seviyesindeki (Düşük/Orta/Yüksek) notları göster. +""" + ## Kurulum ve Kullanım Uygulamayı başlatmak için: `python solution_v1.py init` From 816b4882f45b5019b9634b7ce8aca4697229ed87 Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 23:16:05 +0300 Subject: [PATCH 8/9] Revise README for V2 features and installation Updated the README with V2 changes including dynamic listing, search capability, and advanced filtering. --- READMEy.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/READMEy.md b/READMEy.md index 193a351..c25f305 100644 --- a/READMEy.md +++ b/READMEy.md @@ -17,7 +17,15 @@ V2 GÖREV LİSTESİ: 1. 'list' komutunu ekle: Tüm notları döngü kullanarak alt alta listele. 2. 'search' komutunu ekle: Kullanıcının girdiği kelimeyi not başlıklarında ara. 3. 'filter' komutunu ekle: Sadece seçilen öncelik seviyesindeki (Düşük/Orta/Yüksek) notları göster. + """ +V1 → V2 Değişiklik Özeti: + +Dinamik Listeleme: Statik yapıdan döngüsel yapıya geçildi; artık tüm notlar dosyadan okunup listelenebiliyor. + +Arama Kabiliyeti: Büyük/küçük harf duyarsız arama özelliği ile notlar arasında hızlı erişim sağlandı. + +Gelişmiş Filtreleme: Notlar, V1'de eklenen "Öncelik" seviyelerine göre süzülebilecek şekilde geliştirildi. ## Kurulum ve Kullanım Uygulamayı başlatmak için: From 67c4193a18686087e64ac3e46ef9330bdeec0e21 Mon Sep 17 00:00:00 2001 From: Yagmurkrc <251478022@samsun.edu.tr> Date: Tue, 5 May 2026 23:22:37 +0300 Subject: [PATCH 9/9] Implement list, search, and filter commands Added new commands for listing, searching, and filtering notes. --- solution_v1.py | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/solution_v1.py b/solution_v1.py index 08e1cac..a3e2bd9 100644 --- a/solution_v1.py +++ b/solution_v1.py @@ -5,16 +5,56 @@ Yasaklar: Dongu (for/while) ve Liste ([]) kullanilmadi. """ """ -V1 GÖREV LİSTESİ: -1. Hata mesajlarını ve kullanıcı bilgilendirmelerini Türkçeleştir. -2. 'create' komutuna 'Öncelik' (Priority) parametresi ekle. -3. Not başlığı veya içeriği boş girilirse kullanıcıyı uyaracak bir kontrol ekle. + +V2 GÖREV LİSTESİ: +1. 'list' komutunu ekle: Tüm notları döngü kullanarak alt alta listele. +2. 'search' komutunu ekle: Kullanıcının girdiği kelimeyi not başlıklarında ara. +3. 'filter' komutunu ekle: Seçilen önceliğe (Düşük/Orta/Yüksek) göre notları süz. + """ import sys import os +def list_notes(): + """Tüm notları döngü ile ekrana yazdırır.""" + if not os.path.exists(".mininotes/notes.dat"): + return "Kayıtlı not bulunamadı." + + f = open(".mininotes/notes.dat", "r") + for line in f: + # Format: id|baslik|icerik|oncelik|tarih + parcalar = line.strip().split("|") + print(f"[{parcalar[0]}] {parcalar[1]} - Öncelik: {parcalar[3]}") + f.close() + return "" + +def search_notes(kelime): + """Notlar içinde arama yapar.""" + f = open(".mininotes/notes.dat", "r") + bulundu = False + for line in f: + if kelime.lower() in line.lower(): + parcalar = line.strip().split("|") + print(f"Eşleşme Bulundu: [{parcalar[0]}] {parcalar[1]}") + bulundu = True + f.close() + if not bulundu: + print(f"'{kelime}' içeren bir not bulunamadı.") +def filter_notes(seviye): + """Önceliğe göre filtreleme yapar.""" + f = open(".mininotes/notes.dat", "r") + bulundu = False + for line in f: + parcalar = line.strip().split("|") + if parcalar[3].lower() == seviye.lower(): + print(f"[{parcalar[0]}] {parcalar[1]}") + bulundu = True + f.close() + if not bulundu: + print(f"{seviye} önceliğinde not bulunamadı.") + def initialize(): """Not defteri klasörünü ve dosyasını oluşturur.""" if os.path.exists(".mininotes"): @@ -71,4 +111,4 @@ def show_not_implemented(command): if cmd in ["list", "search", "delete"]: print(show_not_implemented(cmd)) else: - print("Bilinmeyen komut: " + cmd) \ No newline at end of file + print("Bilinmeyen komut: " + cmd)