Marks Sheet Generator

Enter student names and marks to generate a clean marks sheet. Grades are calculated automatically. Print or save as PDF.

Advertisement
# Student name Marks obtained Total marks Percentage Grade Result
Total students
Class average
Passed
Failed
Advertisement

Related tools

let students=[{name:'',marks:''}]; function getTotal(){return+document.getElementById('total-marks').value||100;} function getGrade(pct){ if(pct>=90)return{g:'A+',c:'A'};if(pct>=80)return{g:'A',c:'A'};if(pct>=70)return{g:'B+',c:'B'}; if(pct>=60)return{g:'B',c:'B'};if(pct>=50)return{g:'C',c:'C'};if(pct>=40)return{g:'D',c:'D'};return{g:'F',c:'F'}; } function render(){ const total=getTotal(); const tbody=document.getElementById('ms-body'); tbody.innerHTML=students.map((s,i)=>{ const pct=s.marks!==''&&s.marks!==null?(+s.marks/total*100):null; const grade=pct!==null?getGrade(pct):null; const passed=pct!==null&&pct>=40; return ` ${i+1} ${total} ${pct!==null?pct.toFixed(1)+'%':'—'} ${grade?grade.g:'—'} ${pct!==null?(passed?'Pass':'Fail'):'—'} `; }).join(''); updateSummary(); } function recalcAll(){render();} function addStudent(){students.push({name:'',marks:''});render();} function removeStudent(i){if(students.length>1){students.splice(i,1);render();}} function clearSheet(){if(confirm('Clear all student data?')){students=[{name:'',marks:''}];render();}} function updateSummary(){ const total=getTotal(); const filled=students.filter(s=>s.marks!==''); if(!filled.length){document.getElementById('summary').style.display='none';return;} const marks=filled.map(s=>+s.marks/total*100); const avg=marks.reduce((a,b)=>a+b,0)/marks.length; const passed=marks.filter(p=>p>=40).length; document.getElementById('s-total').textContent=students.length; document.getElementById('s-avg').textContent=avg.toFixed(1)+'%'; document.getElementById('s-pass').textContent=passed; document.getElementById('s-fail').textContent=filled.length-passed; document.getElementById('summary').style.display='block'; } function updateHeader(){ const cn=document.getElementById('class-name').value; const tn=document.getElementById('teacher-name').value; document.getElementById('print-title').textContent=cn||'Marks Sheet'; document.getElementById('print-sub').textContent=tn?'Teacher: '+tn:''; } // Start with 10 empty rows document.addEventListener('DOMContentLoaded',()=>{ students=Array(10).fill(null).map(()=>({name:'',marks:''})); render(); document.getElementById('related-grid').innerHTML=TOOLS.filter(t=>t.category==='teacher'&&t.slug!=='marks-sheet-generator').slice(0,4).map(buildToolCard).join(''); });