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/parolVariant 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
- TagsVariant 4: Quiz O'yini
- Savollar bazasi (JSON)
- Kategoriyalar (math, science, etc.)
- Difficulty (oson/o'rta/qiyin)
- Score va high score
- Multi-user
- Vaqt cheklov
- StatistikaVariant 5: Kutubxona Tizimi
- Kitoblar bazasi
- Foydalanuvchilar
- Olish/qaytarish
- Muddat (deadline)
- Penalty hisoblash
- Search (nom, muallif, kategoriya)
- StatistikaVariant 6: Restoran Buyurtma Tizimi
- Menyu (kategoriyalar)
- Buyurtma qo'shish
- Savat
- Chegirma kod
- To'lov (calculation)
- Chek (text yoki PDF)
- Daily reportVariant 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
- Python 3.10+
- OOP — kamida 2-3 class
- File I/O — JSON yoki CSV bilan saqlash
- Error handling — try/except
- Modullar — kod bir nechta faylda
- GitHub — Public repo
- README.md — to'liq hujjat
- Conventional commits — 15+ commit
- 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:
# 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
## Tuzilmaloyiha/ ├── 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 + demo7. Qadam 3: GitHub setup
$ 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/.gitkeepGitHub'da yangi repo: bank-app (Public, README'siz).
$ 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 main8. Qadam 4: Skeleton kod
main.py:
"""
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:
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:
$ python3 main.pyCommit:
$ git add .
$ git commit -m "feat: skeleton structure"
$ git push9. Bugungi vazifa
Dars davomida bajaring
- G'oya tanlang (10 daqiqa)
PLAN.mdyozing (20 daqiqa)- GitHub repo yarating va sozlang (10 daqiqa)
- Skeleton kod yarating (30 daqiqa)
- README.md ni boshlang (10 daqiqa)
- Birinchi commit'lar (10 daqiqa)
Dars oxirida — repo URL'ni o'qituvchiga ko'rsating.
10. README.md namuna
# [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
MIT11. Yaxshi commit'lar
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.