|
385 | 385 | "source": [ |
386 | 386 | "### Answer: D" |
387 | 387 | ] |
| 388 | + }, |
| 389 | + { |
| 390 | + "cell_type": "markdown", |
| 391 | + "id": "794c9d84", |
| 392 | + "metadata": {}, |
| 393 | + "source": [ |
| 394 | + "---" |
| 395 | + ] |
| 396 | + }, |
| 397 | + { |
| 398 | + "cell_type": "markdown", |
| 399 | + "id": "22ee7f73", |
| 400 | + "metadata": {}, |
| 401 | + "source": [ |
| 402 | + "# Homework Hack" |
| 403 | + ] |
| 404 | + }, |
| 405 | + { |
| 406 | + "cell_type": "code", |
| 407 | + "execution_count": 13, |
| 408 | + "id": "6da8bbc9", |
| 409 | + "metadata": { |
| 410 | + "vscode": { |
| 411 | + "languageId": "java" |
| 412 | + } |
| 413 | + }, |
| 414 | + "outputs": [ |
| 415 | + { |
| 416 | + "name": "stdout", |
| 417 | + "output_type": "stream", |
| 418 | + "text": [ |
| 419 | + "=== Student Grade Tracker System ===\n", |
| 420 | + "\n", |
| 421 | + "Creating student: Emma Rodriguez\n", |
| 422 | + "Student created successfully!\n", |
| 423 | + "\n", |
| 424 | + "--- Adding Grades for Emma ---\n", |
| 425 | + "Adding grade: 95 points\n", |
| 426 | + "Adding grade: 88 points\n", |
| 427 | + "Adding grade: 92 points\n", |
| 428 | + "Adding grade: 85 points\n", |
| 429 | + "\n", |
| 430 | + "--- Emma Rodriguez's Grade Report ---\n", |
| 431 | + "Student Name: Emma Rodriguez\n", |
| 432 | + "Total Points: 360\n", |
| 433 | + "Assignments Completed: 4\n", |
| 434 | + "Current Average: 90.00\n", |
| 435 | + "Letter Grade: A\n", |
| 436 | + "Status: Excellent work!\n", |
| 437 | + "\n", |
| 438 | + "========================================\n", |
| 439 | + "\n", |
| 440 | + "Creating student: James Wilson\n", |
| 441 | + "Student created successfully!\n", |
| 442 | + "\n", |
| 443 | + "--- Adding Grades for James ---\n", |
| 444 | + "Adding grade: 78 points\n", |
| 445 | + "Adding grade: 82 points\n", |
| 446 | + "Adding grade: 75 points\n", |
| 447 | + "\n", |
| 448 | + "--- James Wilson's Grade Report ---\n", |
| 449 | + "Student Name: James Wilson\n", |
| 450 | + "Total Points: 235\n", |
| 451 | + "Assignments Completed: 3\n", |
| 452 | + "Current Average: 78.33\n", |
| 453 | + "Letter Grade: C\n", |
| 454 | + "Status: Keep working hard!\n", |
| 455 | + "\n", |
| 456 | + "========================================\n", |
| 457 | + "\n", |
| 458 | + "Final Summary:\n", |
| 459 | + "Emma Rodriguez - Average: 90.00 (A)\n", |
| 460 | + "James Wilson - Average: 78.33 (C)\n" |
| 461 | + ] |
| 462 | + } |
| 463 | + ], |
| 464 | + "source": [ |
| 465 | + "public class Student {\n", |
| 466 | + " // === Instance variables ===\n", |
| 467 | + " private String name;\n", |
| 468 | + " private int totalPoints;\n", |
| 469 | + " private int numAssignments;\n", |
| 470 | + "\n", |
| 471 | + " // === Constructor ===\n", |
| 472 | + " public Student(String name) {\n", |
| 473 | + " this.name = name;\n", |
| 474 | + " this.totalPoints = 0;\n", |
| 475 | + " this.numAssignments = 0;\n", |
| 476 | + " }\n", |
| 477 | + "\n", |
| 478 | + " // === Void instance methods (modify state) ===\n", |
| 479 | + " /** Adds a grade (0–100 recommended) and updates totals. */\n", |
| 480 | + " public void addGrade(int points) {\n", |
| 481 | + " totalPoints += points;\n", |
| 482 | + " numAssignments += 1;\n", |
| 483 | + " System.out.println(\"Adding grade: \" + points + \" points\");\n", |
| 484 | + " }\n", |
| 485 | + "\n", |
| 486 | + " /** Prints a formatted report of the student’s performance. */\n", |
| 487 | + " public void printReport() {\n", |
| 488 | + " System.out.println(\"\\n--- \" + name + \"'s Grade Report ---\");\n", |
| 489 | + " System.out.println(\"Student Name: \" + name);\n", |
| 490 | + " System.out.println(\"Total Points: \" + totalPoints);\n", |
| 491 | + " System.out.println(\"Assignments Completed: \" + numAssignments);\n", |
| 492 | + " double avg = getAverage();\n", |
| 493 | + " System.out.println(\"Current Average: \" + format2(avg));\n", |
| 494 | + " String letter = getLetterGrade();\n", |
| 495 | + " System.out.println(\"Letter Grade: \" + letter);\n", |
| 496 | + " System.out.println(\"Status: \" + statusFor(letter));\n", |
| 497 | + " }\n", |
| 498 | + "\n", |
| 499 | + " // === Non-void instance methods (return values) ===\n", |
| 500 | + " /** Returns current average as a double; 0.0 if no assignments yet. */\n", |
| 501 | + " public double getAverage() {\n", |
| 502 | + " if (numAssignments == 0) return 0.0;\n", |
| 503 | + " return (double) totalPoints / numAssignments;\n", |
| 504 | + " }\n", |
| 505 | + "\n", |
| 506 | + " /** Returns a letter grade based on the grading scale. */\n", |
| 507 | + " public String getLetterGrade() {\n", |
| 508 | + " double avg = getAverage();\n", |
| 509 | + " if (numAssignments == 0) return \"N/A\";\n", |
| 510 | + " if (avg >= 90) return \"A\";\n", |
| 511 | + " if (avg >= 80) return \"B\";\n", |
| 512 | + " if (avg >= 70) return \"C\";\n", |
| 513 | + " if (avg >= 60) return \"D\";\n", |
| 514 | + " return \"F\";\n", |
| 515 | + " }\n", |
| 516 | + "\n", |
| 517 | + " // === Helpers (private) ===\n", |
| 518 | + " private static String format2(double x) {\n", |
| 519 | + " return String.format(\"%.2f\", x);\n", |
| 520 | + " }\n", |
| 521 | + "\n", |
| 522 | + " private static String statusFor(String letter) {\n", |
| 523 | + " switch (letter) {\n", |
| 524 | + " case \"A\": return \"Excellent work!\";\n", |
| 525 | + " case \"B\": return \"Great job!\";\n", |
| 526 | + " case \"C\": return \"Keep working hard!\";\n", |
| 527 | + " case \"D\": return \"Needs improvement.\";\n", |
| 528 | + " case \"F\": return \"See me for help.\";\n", |
| 529 | + " default: return \"No grades yet.\";\n", |
| 530 | + " }\n", |
| 531 | + " }\n", |
| 532 | + "\n", |
| 533 | + " // === Demo / main ===\n", |
| 534 | + " public static void main(String[] args) {\n", |
| 535 | + " System.out.println(\"=== Student Grade Tracker System ===\\n\");\n", |
| 536 | + "\n", |
| 537 | + " // Student 1: Emma\n", |
| 538 | + " System.out.println(\"Creating student: Emma Rodriguez\");\n", |
| 539 | + " Student emma = new Student(\"Emma Rodriguez\");\n", |
| 540 | + " System.out.println(\"Student created successfully!\\n\");\n", |
| 541 | + "\n", |
| 542 | + " System.out.println(\"--- Adding Grades for Emma ---\");\n", |
| 543 | + " emma.addGrade(95);\n", |
| 544 | + " emma.addGrade(88);\n", |
| 545 | + " emma.addGrade(92);\n", |
| 546 | + " emma.addGrade(85);\n", |
| 547 | + " emma.printReport();\n", |
| 548 | + "\n", |
| 549 | + " System.out.println(\"\\n========================================\\n\");\n", |
| 550 | + "\n", |
| 551 | + " // Student 2: James\n", |
| 552 | + " System.out.println(\"Creating student: James Wilson\");\n", |
| 553 | + " Student james = new Student(\"James Wilson\");\n", |
| 554 | + " System.out.println(\"Student created successfully!\\n\");\n", |
| 555 | + "\n", |
| 556 | + " System.out.println(\"--- Adding Grades for James ---\");\n", |
| 557 | + " james.addGrade(78);\n", |
| 558 | + " james.addGrade(82);\n", |
| 559 | + " james.addGrade(75);\n", |
| 560 | + " james.printReport();\n", |
| 561 | + "\n", |
| 562 | + " System.out.println(\"\\n========================================\\n\");\n", |
| 563 | + "\n", |
| 564 | + " // Final summary\n", |
| 565 | + " System.out.println(\"Final Summary:\");\n", |
| 566 | + " System.out.println(emma.name + \" - Average: \" + format2(emma.getAverage()) + \" (\" + emma.getLetterGrade() + \")\");\n", |
| 567 | + " System.out.println(james.name + \" - Average: \" + format2(james.getAverage()) + \" (\" + james.getLetterGrade() + \")\");\n", |
| 568 | + " }\n", |
| 569 | + "}\n", |
| 570 | + "Student.main(null);" |
| 571 | + ] |
| 572 | + }, |
| 573 | + { |
| 574 | + "cell_type": "markdown", |
| 575 | + "id": "4a0062ae", |
| 576 | + "metadata": {}, |
| 577 | + "source": [ |
| 578 | + "| **Criteria** | **Percent Weight** | **Description** | **Self-Grade** | **Comments** |\n", |
| 579 | + "| ------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------- |\n", |
| 580 | + "| **Functionality** | 40% | Program runs without errors, creates multiple Student objects, correctly adds grades, calculates averages, and assigns letter grades | **40/40** | Code compiles cleanly; tested with multiple students; outputs match expected results. |\n", |
| 581 | + "| **Method Implementation** | 30% |Includes all required methods (addGrade, getAverage, getLetterGrade, printReport) that properly access/modify instance variables | **30/30** | All methods work as intended, returning accurate averages and letter grades. |\n", |
| 582 | + "| **Code Quality** | 20% | Clean code with meaningful variable names, proper constructor, and helpful comments explaining method purposes | **20/20** | Code is clear and well-commented; minor improvement possible in formatting consistency. |\n", |
| 583 | + "| **Output & Presentation** | 10% | Clear, well-formatted output showing multiple students with different grades and formatted reports | **10/10** | Output mirrors sample with spacing, dividers, and clear structure. |\n" |
| 584 | + ] |
388 | 585 | } |
389 | 586 | ], |
390 | 587 | "metadata": { |
|
0 commit comments