Představ si, že vaše škola nemá žádné rozvrhy, žádné známky, žádné seznamy žáků. Všichni by byli zmatení! Nebo si představ obchod, kde nikdo neví, kolik má zboží na skladě nebo kolik co stojí. To by byl chaos! Aby takové velké organizace fungovaly, potřebují něco, co sbírá, ukládá a zpracovává informace. Tomu říkáme informační systém. Je to jako mozek, který všechno řídí a pamatuje si.
Informační systém je soubor lidí, počítačů, programů a pravidel, které společně sbírají, ukládají, zpracovávají a poskytují informace.
Informační systém (IS) je organizovaný systém pro sběr, ukládání, zpracování a šíření dat a informací, který pomáhá lidem a organizacím plnit jejich úkoly a rozhodovat se.
IS je důležitý, protože:
Každý informační systém má svůj účel, tedy důvod, proč existuje a k čemu slouží.
Informační systémy používá mnoho různých lidí. Každý z nich má v systému jinou roli a jiné oprávnění. Je to jako ve hře – každý hráč má jinou postavu s jinými schopnostmi.
Uživatel je člověk, který s informačním systémem pracuje.
Oprávnění určuje, co smí konkrétní uživatel v informačním systému dělat (např. prohlížet, měnit, mazat data).
Je to jako mít klíče od různých místností. Ne každý smí do každé místnosti.
| Uživatel (Role) | Co smí dělat (Oprávnění) | Co nesmí dělat |
|---|---|---|
| Žák | Prohlížet si své známky, rozvrh, docházku. | Měnit známky, mazat rozvrh. |
| Učitel | Zadávat známky, zapisovat docházku, vytvářet a úprava rozvrhu pro svou třídu. | Měnit známky jiným učitelům, mazat data o celé škole. |
| Ředitel | Vidět všechna data, měnit rozvrhy celé školy, přidávat a odebírat uživatele. | (Téměř nic nesmí, ale musí být velmi opatrný!) |
Informační systémy jsou dnes všude – ve školách, v obchodech, u lékaře, na úřadech. Učíme se je používat, abychom si zjednodušili život. Je ale důležité si uvědomit, že každý systém má svá pravidla a že naše role v něm určuje, co smíme a co ne. Respektování těchto pravidel a pochopení, proč existují, je základem zodpovědného chování v digitálním světě.
Každý informační systém má svou architekturu – způsob, jak jsou jeho části uspořádány a jak spolu komunikují.
Nejběžnější model. Klient (tvůj počítač, prohlížeč nebo aplikace) posílá požadavky na server, který zpracuje požadavek a vrátí odpověď. Například: když se přihlásíš do školního systému, tvůj prohlížeč (klient) pošle přihlašovací údaje serveru, který je ověří a vrátí ti stránku s tvými známkami.
Moderní systémy mají tři oddělené vrstvy:
Výhoda tohoto uspořádání: můžeš změnit design (prezentační vrstva) bez změny logiky, nebo změnit databázi bez změny aplikace.
ERP (Enterprise Resource Planning) jsou komplexní systémy, které propojují všechny části firmy. Místo toho, aby mělo každé oddělení svůj systém, mají všichni jeden společný.
Typické moduly ERP: Finance (účetnictví, fakturace), HR (zaměstnanci, mzdy), Výroba (plánování, materiál), Sklady (zásoby, příjem/výdej), CRM (zákazníci, obchod).
Příklady: SAP (největší, používají velké firmy), Microsoft Dynamics, Oracle.
Bezpečnost je kritická – systémy obsahují citlivá data (osobní údaje, finance, zdravotní záznamy).
Vývoj informačního systému je dlouhodobý projekt, který prochází několika fázemi. Pochopení těchto fází je důležité pro každého, kdo bude pracovat v IT.
Nejdůležitější fáze! Sběr požadavků od budoucích uživatelů, studie proveditelnosti (je to vůbec technicky a finančně možné?), analýza současného stavu. Chyba v analýze = drahé opravy později.
Na základě analýzy se navrhuje architektura systému, datový model (jaké tabulky, jaké vztahy), uživatelské rozhraní (wireframy, prototypy). Výstupem je dokumentace, podle které se bude programovat.
Vlastní programování. Vývojáři píší kód podle návrhu, testeři hledají chyby. Používají se různé metodiky (Waterfall, Agile, Scrum).
Instalace systému u zákazníka, migrace dat ze starého systému, školení uživatelů. Kritická fáze – první dojmy jsou důležité.
Nejdelší fáze – může trvat roky. Opravy chyb, aktualizace, přidávání nových funkcí, technická podpora uživatelů.
Kde bude systém běžet? Existují dvě základní možnosti:
Systém běží na serverech poskytovatele (AWS, Azure, Google Cloud). Zákazník platí průběžně za využití. Výhody: Nízké počáteční náklady, flexibilní škálování, nemusíš se starat o hardware. Nevýhody: Závislost na poskytovateli, data jsou "někde jinde", dlouhodobě může být dražší.
Systém běží na serverech, které vlastní a spravuje zákazník. Výhody: Plná kontrola nad daty, žádná závislost, může být levnější dlouhodobě. Nevýhody: Velká počáteční investice, potřeba IT oddělení, omezená kapacita.
| Aspekt | Cloud | On-premise |
|---|---|---|
| Náklady | Průběžné platby (OpEx) | Velká počáteční investice (CapEx) |
| Škálování | Flexibilní, rychlé | Omezené kapacitou |
| Kontrola | Menší kontrola | Plná kontrola |
API (Application Programming Interface) umožňuje systémům komunikovat:
Jako budoucí IT specialista budeš informační systémy nejen používat, ale také navrhovat, programovat a spravovat. Tato sekce ti dá základy, na kterých budeš stavět.
Každý informační systém potřebuje databázi. Než začneš programovat, musíš navrhnout, jak budou data uložena:
Entita je "věc", o které chceš ukládat informace (uživatel, produkt, objednávka). Atribut je vlastnost entity (jméno, cena, datum).
Entity jsou propojeny vztahy. Základní typy:
Primární klíč (PK) jednoznačně identifikuje záznam (většinou ID). Cizí klíč (FK) odkazuje na primární klíč jiné tabulky a vytváří propojení.
-- Příklad tabulek pro školní IS
CREATE TABLE Tridy (
id INT PRIMARY KEY,
nazev VARCHAR(50),
rocnik INT
);
CREATE TABLE Studenti (
id INT PRIMARY KEY,
jmeno VARCHAR(100),
prijmeni VARCHAR(100),
trida_id INT,
FOREIGN KEY (trida_id) REFERENCES Tridy(id)
);
Většina moderních IS jsou webové aplikace. Základní technologie:
# Python Flask - jednoduchá autentizace
from flask import Flask, request, session
app = Flask(__name__)
app.secret_key = 'tajny_klic'
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
# Ověření v databázi (zjednodušeno)
if check_user(username, password):
session['user'] = username
session['role'] = get_user_role(username)
return 'Přihlášení úspěšné'
else:
return 'Špatné heslo', 401
RBAC (Role-Based Access Control) je systém, který řídí, co může uživatel dělat, na základě jeho role. Jako IT specialista budeš tento systém implementovat.
# Python - jednoduchý RBAC
def check_permission(user_role, required_permission):
permissions = {
'admin': ['read', 'write', 'delete', 'manage_users'],
'teacher': ['read', 'write'],
'student': ['read']
}
return required_permission in permissions.get(user_role, [])
# Použití
if check_permission(current_user.role, 'write'):
save_data()
else:
print("Nemáš oprávnění!")
Při vývoji IS pracuje více programátorů na jednom projektu. Git je nástroj, který sleduje změny v kódu a umožňuje spolupráci:
# Základní Git příkazy
git init # Vytvoř nový repozitář
git add . # Přidej změny
git commit -m "Popis změn" # Ulož změny
git push # Nahraj na server (GitHub)
git pull # Stáhni změny od kolegů
Pokračujeme v projektu Evidence studentů. V této kapitole vytvoříš kompletní CLI aplikaci.
# main.py
"""Hlavní program - Evidence studentů."""
from models.student_db import StudentDB
def zobraz_menu():
print("\n" + "=" * 50)
print(" 📚 EVIDENCE STUDENTŮ")
print("=" * 50)
print("1. Zobrazit všechny studenty")
print("2. Přidat studenta")
print("3. Upravit studenta")
print("4. Smazat studenta")
print("5. Vyhledat studenta")
print("6. Statistiky")
print("7. Známky studenta")
print("0. Konec")
print("-" * 50)
def zobraz_studenty(studenti):
if not studenti:
print("\n📭 Žádní studenti nenalezeni.")
return
print(f"\n📋 Nalezeno {len(studenti)} studentů:\n")
print(f"{'ID':4} | {'Jméno':15} | {'Příjmení':15} | {'Třída':6} | {'Email':25}")
print("-" * 75)
for s in studenti:
print(f"{s['id']:4} | {s['jmeno']:15} | {s['prijmeni']:15} | "
f"{s['trida'] or '-':6} | {s['email'] or '-':25}")
def pridej_studenta(db):
print("\n➕ PŘIDÁNÍ STUDENTA")
jmeno = input("Jméno: ").strip()
prijmeni = input("Příjmení: ").strip()
email = input("Email: ").strip() or None
trida = input("Třída (např. 9.A): ").strip() or None
if not jmeno or not prijmeni:
print("❌ Jméno a příjmení jsou povinné!")
return
id = db.pridej(jmeno, prijmeni, email, trida)
print(f"\n✅ Student přidán s ID: {id}")
def uprav_studenta(db):
print("\n✏️ ÚPRAVA STUDENTA")
id = int(input("ID studenta k úpravě: "))
student = db.najdi(id)
if not student:
print("❌ Student nenalezen!")
return
print(f"Aktuální údaje: {student['jmeno']} {student['prijmeni']}")
print("(Enter = ponechat stávající hodnotu)")
jmeno = input(f"Jméno [{student['jmeno']}]: ").strip()
prijmeni = input(f"Příjmení [{student['prijmeni']}]: ").strip()
email = input(f"Email [{student['email']}]: ").strip()
trida = input(f"Třída [{student['trida']}]: ").strip()
zmeny = {}
if jmeno: zmeny['jmeno'] = jmeno
if prijmeni: zmeny['prijmeni'] = prijmeni
if email: zmeny['email'] = email
if trida: zmeny['trida'] = trida
if zmeny:
db.aktualizuj(id, **zmeny)
print("✅ Student aktualizován!")
else:
print("ℹ️ Žádné změny.")
def smaz_studenta(db):
print("\n🗑️ SMAZÁNÍ STUDENTA")
id = int(input("ID studenta ke smazání: "))
student = db.najdi(id)
if not student:
print("❌ Student nenalezen!")
return
potvrdit = input(f"Opravdu smazat {student['jmeno']} {student['prijmeni']}? (ano/ne): ")
if potvrdit.lower() == 'ano':
db.smaz(id)
print("✅ Student smazán!")
else:
print("ℹ️ Zrušeno.")
def main():
db = StudentDB()
print("\n🎉 Vítej v Evidenci studentů!")
while True:
zobraz_menu()
volba = input("Vyber možnost: ").strip()
if volba == "1":
zobraz_studenty(db.vsichni())
elif volba == "2":
pridej_studenta(db)
elif volba == "3":
uprav_studenta(db)
elif volba == "4":
smaz_studenta(db)
elif volba == "5":
dotaz = input("Hledej: ")
zobraz_studenty(db.vyhledej(dotaz))
elif volba == "6":
stat = db.statistiky()
print(f"\n📊 Celkem {stat['pocet']} studentů v {stat['pocet_trid']} třídách")
elif volba == "7":
id = int(input("ID studenta: "))
# TODO: Zobraz známky studenta
print("ℹ️ Funkce známek bude implementována v další kapitole.")
elif volba == "0":
print("\n👋 Nashledanou!")
break
else:
print("❌ Neplatná volba!")
if __name__ == "__main__":
main()
evidence-studentu/
├── .git/
├── .gitignore
├── README.md
├── main.py # ✅ Hlavní program
├── db/
│ ├── __init__.py
│ └── connection.py # ✅ Připojení k MySQL
├── models/
│ ├── __init__.py
│ └── student_db.py # ✅ CRUD operace
├── sql/
│ ├── schema.sql # Vytvoření tabulek
│ └── queries.sql # Ukázkové dotazy
└── tests/
└── test_student.py
V další kapitole: Dokončíš projekt a přidáš export dat.