merhaba lgs puan toplama kodu paylaşiyorum umarım işniize yarar
index.html dosyası:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LGS Score Calculator</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>LGS puan hesaplama</h1>
<form id="calculator">
<div class="form-group">
<label for="math">Matematik</label>
<input type="number" id="math-correct" name="math-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="math-incorrect" name="math-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<div class="form-group">
<label for="turkish">Türkçe</label>
<input type="number" id="turkish-correct" name="turkish-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="turkish-incorrect" name="turkish-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<div class="form-group">
<label for="chemistry">Kimya</label>
<input type="number" id="chemistry-correct" name="chemistry-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="chemistry-incorrect" name="chemistry-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<div class="form-group">
<label for="physics">Fizik</label>
<input type="number" id="physics-correct" name="physics-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="physics-incorrect" name="physics-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<div class="form-group">
<label for="biology">Biyoloji</label>
<input type="number" id="biology-correct" name="biology-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="biology-incorrect" name="biology-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<div class="form-group">
<label for="history">Tarih</label>
<input type="number" id="history-correct" name="history-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="history-incorrect" name="history-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<div class="form-group">
<label for="geography">Coğrafya</label>
<input type="number" id="geography-correct" name="geography-correct" min="0" max="20" placeholder="Doğru Sayısı">
<input type="number" id="geography-incorrect" name="geography-incorrect" min="0" max="20" placeholder="Yanlış Sayısı">
</div>
<button type="submit">Hesapla</button>
</form>
<div id="result" class="result">
<p>Net Puan: <span id="net-score">0</span></p>
</div>
</div>
<script src="app.js"></script>
</body>
</html>app.js dosyası kodu:
const calculator = document.getElementById("calculator");
const result = document.getElementById("result");
const correctInputs = document.querySelectorAll("input[id$='-correct']");
const incorrectInputs = document.querySelectorAll("input[id$='-incorrect']");
const calculateScore = (correct, incorrect) => {
const points = 100;
const maxQuestions = 20;
const correctBonus = 10;
const correctScore = Math.min(correct, maxQuestions) * points;
const incorrectScore = Math.min(incorrect, maxQuestions) * points / 2;
const netScore = correctScore - incorrectScore + correctBonus * correct;
return netScore;
};
const updateResult = () => {
const correctValues = Array.from(correctInputs).map(input => parseInt(input.value, 10));
const incorrectValues = Array.from(incorrectInputs).map(input => parseInt(input.value, 10));
const totalCorrect = correctValues.reduce((acc, curr) => acc + curr, 0);
const totalIncorrect = incorrectValues.reduce((acc, curr) => acc + curr, 0);
const netScore = calculateScore(totalCorrect, totalIncorrect);
result.querySelector("#net-score").textContent = netScore;
};
correctInputs.forEach(input => input.addEventListener("input", updateResult));
incorrectInputs.forEach(input => input.addEventListener("input", updateResult));styles.css dosyası:
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 0;
padding: 0;
background-color: #1a1a1a; /* Arka plan rengi */
color: #fff; /* Metin rengi */
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
background-color: #2a2a2a; /* Container arka plan rengi */
border-radius: 20px; /* Kenarlık yuvarlatma */
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); /* Gölge */
}
h1 {
color: #4CAF50; /* Başlık rengi */
}
.form-group {
margin-bottom: 2rem;
display: flex;
align-items: center; /* Dikey hizalama */
}
label {
display: block;
margin-right: 1rem;
color: #666; /* Label rengi */
}
.form-group input[type="number"] {
flex: 1; /* Input alanlarını esnek hale getirerek diğer alanlara göre genişliklerini ayarlar */
padding: 1rem;
border: 1px solid #ddd;
border-radius: 8px;
background-color: #f5f5f5; /* Input arka plan rengi */
color: #333; /* Input metin rengi */
margin-right: 1rem;
margin-bottom: 1rem;
}
button[type="submit"] {
background-color: #4CAF50;
color: white;
padding: 1rem 2rem;
border: none;
border-radius: 8px;
cursor: pointer;
transition: background-color 0.3s ease; /* Arka plan rengi geçiş efekti */
}
button[type="submit"]:hover {
background-color: #45a049; /* Hover efekti */
}
.result {
margin-top: 2rem;
border: 2px solid #4CAF50;
padding: 2rem;
border-radius: 10px;
background-color: #f5f5f5; /* Sonuç bölgesi arka plan rengi */
}
.result p {
margin: 0;
color: #666; /* Sonuç metni rengi */
}
.result #net-score {
font-size: 2rem;
font-weight: bold;
color: #4CAF50; /* Net puan rengi */
}