Skip to content

10-dars: Yakuniy loyiha — 1-qism (Rejalashtirish)

Dars

Davomiyligi: 90 daqiqa Maqsad: Loyihani rejalashtirish, GitHub'da setup, skeleton kod yaratish.

1. Foundation yakuni — yakuniy loyiha

6 oy davomida o'rgangan barcha bilimni birga ishlatish.

Bu loyiha GitHub portfolioning bir qismi bo'ladi. Ish berib turganlar ham ko'radi.

2. Loyiha variantlari

7 ta variant. Birini tanlang yoki o'zingizning g'oyangiz.

Variant 1: Bank Boshqaruv Tizimi (CLI)

- Akkaunt yaratish
- Pul kiritish/olish/transfer
- Tranzaksiya tarixi (JSON saqlash)
- Foiz hisoblash
- Bir nechta foydalanuvchi
- Login/parol

Variant 2: Talabalar Reyting Tizimi

- Talaba qo'shish/o'chirish
- Fanlar bo'yicha ball
- O'rtacha hisoblash
- Reyting tartibi
- Excel/CSV eksport
- Statistika
- Diagramma (matplotlib)

Variant 3: To-Do List (kengaytirilgan)

- Kategoriyalar
- Priority (yuqori/o'rta/past)
- Deadline
- Reminder
- Statistika
- Search
- JSON saqlash
- Tags

Variant 4: Quiz O'yini

- Savollar bazasi (JSON)
- Kategoriyalar (math, science, etc.)
- Difficulty (oson/o'rta/qiyin)
- Score va high score
- Multi-user
- Vaqt cheklov
- Statistika

Variant 5: Kutubxona Tizimi

- Kitoblar bazasi
- Foydalanuvchilar
- Olish/qaytarish
- Muddat (deadline)
- Penalty hisoblash
- Search (nom, muallif, kategoriya)
- Statistika

Variant 6: Restoran Buyurtma Tizimi

- Menyu (kategoriyalar)
- Buyurtma qo'shish
- Savat
- Chegirma kod
- To'lov (calculation)
- Chek (text yoki PDF)
- Daily report

Variant 7: Weather App (API bilan)

- OpenWeatherMap API
- Shahar bo'yicha ob-havo
- 5 kunlik prognoz
- Sevimli shaharlar (JSON)
- Tarix
- Konversiya (C/F)

3. Loyiha talablari

Majburiy

  1. Python 3.10+
  2. OOP — kamida 2-3 class
  3. File I/O — JSON yoki CSV bilan saqlash
  4. Error handling — try/except
  5. Modullar — kod bir nechta faylda
  6. GitHub — Public repo
  7. README.md — to'liq hujjat
  8. Conventional commits — 15+ commit
  9. requirements.txt — agar tashqi kutubxona bo'lsa

Qo'shimcha (bonus)

  • Tashqi kutubxona (requests, matplotlib)
  • Type hints
  • Docstrings
  • Unit testlar
  • GUI (tkinter)
  • API integratsiya

4. Loyiha rejasi — qadamlar

5. Qadam 1: G'oya tanlash

Tanlash mezonlari:

  • Sizga qiziq (motivatsiya muhim)
  • Real foyda (kim foydalanadi?)
  • Murakkablikga moslangan (juda oson — yetarli emas, juda qiyin — tugamaydi)

6. Qadam 2: Reja yozish

PLAN.md faylida:

markdown
# Loyiha rejasi

## Nomi: [Loyiha nomi]

## Maqsad
[2-3 jumla — nima qiladi]

## Auditoriya
[Kim foydalanadi]

## Imkoniyatlar (Features)

### MVP (Minimum Viable Product)
- [ ] Feature 1
- [ ] Feature 2
- [ ] Feature 3

### Future (kelajak uchun)
- [ ] Feature X
- [ ] Feature Y

## Tuzilma

loyiha/ ├── main.py ├── models/ │ ├── account.py │ └── transaction.py ├── data/ │ └── accounts.json ├── utils/ │ └── helpers.py ├── README.md └── requirements.txt


## Classlar

### Account
- Attributlari: id, owner, balance, pin
- Methodlar: deposit, withdraw, transfer

### Transaction
- ...

## Data storage
[JSON shaklini ko'rsating]

## Reja (kunlar bo'yicha)
- Kun 1: skeleton + setup
- Kun 2: asosiy funksiyalar
- Kun 3: file I/O
- Kun 4: testing
- Kun 5: README + demo

7. Qadam 3: GitHub setup

bash
$ mkdir bank-app
$ cd bank-app
$ git init
$ touch README.md PLAN.md .gitignore
$ python3 -m venv venv
$ source venv/bin/activate

.gitignore:

__pycache__/
*.pyc
venv/
.env
*.log
.DS_Store
data/*.json
!data/.gitkeep

GitHub'da yangi repo: bank-app (Public, README'siz).

bash
$ git remote add origin https://github.com/USER/bank-app.git
$ git add .
$ git commit -m "chore: initial setup"
$ git branch -M main
$ git push -u origin main

8. Qadam 4: Skeleton kod

main.py:

python
"""
Bank Boshqaruv Tizimi
Foundation 6-oy yakuniy loyiha
"""

def main():
    print("=== BANK BOSHQARUV TIZIMI ===")
    
    while True:
        print("\n1. Akkaunt yaratish")
        print("2. Login")
        print("3. Chiqish")
        choice = input("Tanlov: ")
        
        if choice == "1":
            print("[TODO] Akkaunt yaratish")
        elif choice == "2":
            print("[TODO] Login")
        elif choice == "3":
            print("Xayr!")
            break
        else:
            print("Noma'lum tanlov")


if __name__ == "__main__":
    main()

models/account.py:

python
class Account:
    """Bank akkaunt."""
    
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance
    
    def deposit(self, amount):
        # TODO
        pass
    
    def withdraw(self, amount):
        # TODO
        pass
    
    def __str__(self):
        return f"{self.owner}: {self.balance}"

Sinab ko'ring:

bash
$ python3 main.py

Commit:

bash
$ git add .
$ git commit -m "feat: skeleton structure"
$ git push

9. Bugungi vazifa

Dars davomida bajaring

  1. G'oya tanlang (10 daqiqa)
  2. PLAN.md yozing (20 daqiqa)
  3. GitHub repo yarating va sozlang (10 daqiqa)
  4. Skeleton kod yarating (30 daqiqa)
  5. README.md ni boshlang (10 daqiqa)
  6. Birinchi commit'lar (10 daqiqa)

Dars oxirida — repo URL'ni o'qituvchiga ko'rsating.

10. README.md namuna

markdown
# [Loyiha nomi]

Kichik tavsif (1-2 jumla).

![Screenshot yoki demo gif]

## Imkoniyatlari

- ✅ Feature 1
- ✅ Feature 2
- ⏳ Feature 3 (in progress)

## O'rnatish

\`\`\`bash
git clone https://github.com/USER/repo.git
cd repo
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
\`\`\`

## Foydalanish

\`\`\`bash
python3 main.py
\`\`\`

## Texnologiyalar

- Python 3.10+
- [boshqa kutubxonalar]

## Tuzilma

\`\`\`
loyiha/
├── main.py
├── ...
\`\`\`

## Ekran ko'rinishlari

[Screenshots]

## Muallif

[Ism Familiya] — [@username](https://github.com/username)

Foundation 6-oy yakuniy loyihasi.

## Litsenziya

MIT

11. Yaxshi commit'lar

bash
git commit -m "chore: initial setup"
git commit -m "docs: add PLAN.md"
git commit -m "feat: add Account class skeleton"
git commit -m "feat: implement deposit method"
git commit -m "feat: implement withdraw method"
git commit -m "feat: add transaction history"
git commit -m "feat: JSON persistence"
git commit -m "fix: handle negative amounts"
git commit -m "refactor: extract validation logic"
git commit -m "docs: update README"
git commit -m "test: add unit tests"

15+ commit — minimal. Har feature — alohida commit.

12. Bugun tugaganidan keyin

Bu hafta davomida:

  • Loyihani rivojlantiring
  • Kunlik commit qiling
  • Savol bo'lsa o'qituvchidan so'rang

11-dars — loyihani tugatish. 12-dars — Foundation yakuniy imtihon va prezentatsiya.

Topshiriqlar (uy)

1 — Reja

PLAN.md faylini yakunlang (Drive yoki GitHub).

2 — GitHub repo

Public repo, README boshlangan.

URL'ni Drive yoki email orqali jo'nating.

3 — Skeleton

Birinchi commit'lar bilan. Kamida:

  • main.py (skeleton)
  • Bir nechta class fayli
  • README boshlangan
  • .gitignore
  • requirements.txt

4 — Birinchi feature

Loyiha eng asosiy featureni amalga oshiring.

Misol: Bank — "Akkaunt yaratish va balansni ko'rish".

Commit qiling, push qiling.

5 — Daily commit

Bu hafta har kuni eng kamida 1 commit.

Yashil kvadratlar — yaxshi signal.

Keyingi dars

11-dars: Yakuniy loyiha — 2-qism →

Master IT o'quv markazi — o'qitish rejasi