ISOM3028 - Advanced Computer Programming
2023/2024
Section 001
Assignment 1 Due Date: 9 April 2024 (IN CLASS)
___________________________________________________________________________
Note: Submit both hardcopy (printed format) and softcopy.
1. For hardcopy, you are required to submit sample inputs and outputs. You need to mention
the author name, i.e. your name, and student no.
2. For softcopy, please compress all the class and program files and send the compressed file
through UMMoodle. Add comments to your code. Save your compressed file as
“bc0xxxx_Ass1.zip”. Please remember to use your student number as part of compressed file
name.
You are required to create a Student Management System for school use. The system should allow
the user to add new a student, retrieve student information, update student information, and display
student information in the system.
Instructions:
1. Create a class named "Student" which extends from “Person” class, with the following
attributes:
• studentID (String): unique identifier for each student (Note: the studentId should be a string
of four digits, i.e. “0123”)
• name (String): name of the student
• gender (String): gender of the student
• major (String): sutdent’s major
• midtermScore (double): the student’s midterm score
• finalScore (double): the student’s final exam score
• midtermWeight (double): the weight of midterm score contributing to the final grade, with
default value 0.4
• finalWeight (double): the weight of final exam score contributing to the final grade, with
default value 0.6
• finalGrade (double): calculated from midterm score and final exam score and their weights
You decide which attributes should be defined in Person.
2. Implement a constructor in the "Student" class that initializes the name, gender, studentID,
major, midtermScore, and finalScore.
2
3. Implement the set and get methods for name, gender, and major fields. Only set methods for
midtermScore, finalScore; and only get method for studentID.
4. Override the toString() method to format your output of student information. Student
information contains name, ID, major, midtermScore, finalScore, and finalGrade. Hint:
toString() is predefined by Java. Learn this method first.
5. Implement a calculateTotalGrade() method to calculate the finalGrade.
6. Create a class named "ScoreManagement" to manage the scores of the students. This class
should have the following methods:
• enrollStudent (Student student): Adds a new student to the system. Use ArrayList.
• findStudent (String studentID): Retrieves student info. based on the studentID.
• dropStudent(String studentID): drop a student from the system based on the studentID.
• inputScores(String studentID, double midtermScore, double finalScore): give midterm
score and final exam score based on the studentID. Call the “findStudent”,
“setMidtermScore”, and “setFinalScore” methods.
• modifyStudentInfo(String studentID, String newName, String newMajor, double
midtermscore, double finalscore): Change student name, major, and the scores based on
studentID.
• gradeSummaryStatistics() : Displays the max, min, and average of the final grades of all
students.
7. Create a “StudentScoreManagementSystem” class with main method to test your Student
Management System. In the main method, create an instance of the "ScoreManagement" class
and display the following menu containing five functions and the system will ask the user to
input a menu item to execute a particular function:
Menu:
1. 1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice:
For 1), the system should ask the user to input the new student name, gender ,ID (with a validity
check, invalid then input again), major, midtermScore, and finalScore. Then, it will display the
new student information on screen; for 2), the system will ask the user to input a student ID
and it will display the student information if the employee is found; otherwise display error
message "Student not found."; for 3), the system will ask user to input student ID, new name,
3
and new major. Then, it will modify the corresponding information of the student based on the
ID input. If the student is not found, display error message "Student not found."; for 4), the
system will display the grade; for 5), the program will be terminated. For menu item 1) to 4),
the system will display the menu and ask user to input menu item again when the corresponding
function has been finished.
YOUR TASK:
Run the program, add the five students below to your program, find student 0002 and 0005,
then modify student 0002 and 0005’s information with the scores in parentheses, find 0002
and 0005 again to make sure their information is corrected. Show the grade summary statistics.
Then exist.
Print out all the information shown in your console. One example with the first three students
are shown in Sample I/O.
Testing data: (Try to add the following student data into the system)
Student name: David Chan
Gender: M
ID: 0001
Major: BIDA
Midterm score: 75
Final exam score: 80
Student name: Allen Lai
Gender: M
ID: 0002
Major: BIDA
Midterm score: 52(58)
Final exam score: 71
Student name: Amy Liu
Gender: F
4
ID: 0003
Major: BIDA
Midterm score: 90
Final exam score: 85
Student name: Grace Pan
Gender: F
ID: 0004
Major: BIDA
Midterm score: 72
Final exam score: 88
Student name: Lucy Lee
Gender: F
ID: 0005
Major: BIDA
Midterm score: 58
Final exam score: 76(80)
Sample I/O: (Fonts in red color are input data, only three students are added in this example.
You should add all the five students.)
Menu:
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 1
Enter name: David Chan
5
Enter gender (M/F): M
Enter ID (4-digit string): 01
Invalid ID format. Please enter a 4-digit string.
Enter ID (4-digit string): 0001
Enter major: BIDA
Enter midterm score: 75
Enter final exam score: 80
Student{name='David Chan', id='0001', major='BIDA', midtermScore=75.0, finalScore=80.0,
totalGrade=78.0}
Menu:
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 1
Enter name: Allen Lai
Enter gender (M/F): M
Enter ID (4-digit string): 0002
Enter major: BIDA
Enter midterm score: 52
Enter final exam score: 71
Student{name='Allen Lai', id='0002', major='BIDA', midtermScore=52.0, finalScore=71.0,
totalGrade=63.4}
Menu:
6
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 1
Enter name: Amy Liu
Enter gender (M/F): F
Enter ID (4-digit string): 0003
Enter major: BIDA
Enter midterm score: 90
Enter final exam score: 85
Student{name='Amy Liu', id='0003', major='BIDA', midtermScore=90.0, finalScore=85.0,
totalGrade=87.0}
Menu:
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 2
Enter student ID: 0002
Student{name='Allen Lai', id='0002', major='BIDA', midtermScore=52.0, finalScore=71.0,
totalGrade=63.4}
Menu:
7
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 3
Enter student ID: 0002
Enter new name: Allen Lai
Enter new major: BIDA
Enter new midterm score: 58
Enter new final exam score: 71
Menu:
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 2
Enter student ID: 0002
Student{name='Allen Lai', id='0002', major='BIDA', midtermScore=58.0, finalScore=71.0,
totalGrade=65.8}
Menu:
1. Add student
2. Find student
3. Modify student information
8
4. Grade summary statistics
5. Exit
Enter your choice: 4
Max Grade: 87.0
Min Grade: 65.8
Average Grade: 76.93333333333333
Menu:
1. Add student
2. Find student
3. Modify student information
4. Grade summary statistics
5. Exit
Enter your choice: 5
请加QQ:99515681 邮箱:99515681@qq.com WX:codinghelp
- 全球“最独特”的一台华为 nova 6 5G 版手机是什么样子的?
- 拼多多抖音淘宝京东,谁是真低价?
- 老杨第一次再度抓握住一瓶水,他由此产生了新的憧憬
- 丰田章男称未来依然需要内燃机 已经启动电动机新项目
- B站更新决策机构名单:共有 29 名掌权管理者,包括陈睿、徐逸、李旎、樊欣等人
- 苹果罕见大降价,华为的压力给到了?
- 三明列东又有房子要拆迁!住这里的人要发了!
- 放大招后,广州又忍不住了…
- 私募积极加仓,百亿股票私募仓位指数创出近八周新高
- 他,传闻中马云最想见的人
- 升级的脉脉,正在以招聘业务铺开商业化版图
- 如何经营一家好企业,需要具备什么要素特点
- 智慧驱动 共创未来| 东芝硬盘创新数据存储技术
- 创意驱动增长,Adobe护城河够深吗?
- 全力打造中国“创业之都”名片,第十届中国创业者大会将在郑州召开