联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2024-04-30 08:22

Programming Languages and Techniques

Homework 11 : Student Management System

For HW11, you may work as a group (no more than 2 students). Please mention

your collaborator’s name at the top of your code files.

Like the previous assignment, this homework is also very detailed, so please

start as early as you can on it. It deals with the following topics:

● Object-Oriented Programming Design

● Inheritance

● File I/O

Introduction

In this homework, you will implement a console-based student management

system. The objective of this assignment is to design a system for students to

manage their courses. There will be three main user roles in the application: Admin,

Student, and Professor.

In the student management system, a) A student can log in to their account,

view/add/drop courses, check their course schedule, and view grades. b) A professor

can view course information they have, and view the student lists for these courses.

c) An admin can view course/student/professor lists, and add/delete

courses/students/professors. The course information will be in the courseInfo.txt

file. There will also be three files containing student/professor/admin information.

The student management system will read and parse all of the files. Once all

information has been loaded into the system, you’ll be able to log in as a(n)

student/professor/administrator to test the system.

You are expected to design several classes and to implement methods to build the

application. For example, you may create a class FileInfoReader to load the files.

You can create an abstract class User and a Professor class, Student class, and

Admin class which all extend and implement the User class. You can have a

Course class that represents a single course and a Controller class to control the

main logic of the entire system.

Below are explanations (and samples) of the pieces of information in each of the

four provided data files.

courseInfo.txt - Courses information file that contains: course ID; course name;

lecturer; days; start time; end time; capacity

CIT590; Programming Languages and Techniques; Brandon L

Krakowsky; MW; 16:30; 18:00; 110

Programming Languages and Techniques

studentInfo.txt - Student information file that contains: student ID; student name;

student username; password; course ID: course grade (could be multiple)

001; StudentName1; testStudent01; password590; CIS191: A,

CIS320: A

profInfo.txt - Professor information file that contains: prof name; prof ID; prof

username; password

Clayton Greenberg; 001; Greenberg; password590

adminInfo.txt - Admin information file that contains: admin ID; admin name; admin

username; password

001; admin; admin01; password590

Below are examples of what the system could look like. Feel free to make your

program do exactly this or make it look even fancier.

When entering the system, one can select to log in as a(n) student/professor/admin,

or quit the system.

Student Login

When logging in as a student, one can view course information, add/drop courses,

view grades, or return to the previous menu.

Programming Languages and Techniques

View all courses: All courses are displayed in the console.

After adding course CIT590 to the student’s schedule.

If one tries to add a course which has already been added to their schedule, the

system should prompt a message towards this. In addition, if one tries to add a

course which doesn’t exist in the system, the operation will not succeed.

One cannot add a course which has a time conflict with another added course.

Drop a course: If one tries to drop a course which is not on his/her schedule, the

operation will not succeed.

Programming Languages and Techniques

View grades: Grades for courses taken are displayed in the console.

Professor Login

When logging in as a professor, one can view the information for courses they

teach, view students list, or return to the previous menu.

After student StudentName2 with ID 002 has added CIT590, the lecturer can see

the student’s basic information.

Programming Languages and Techniques

Administrator Login

When choosing to login as an administrator, one can add/delete/edit/view a

course/professor/student information, or return to the previous menu.

If an admin wants to add a course that already exists in the system, the program

should prompt with a message.

Programming Languages and Techniques

If the lecturer of the course we want to add does not exist in the system, we also

need to add the new professor to the system first, otherwise, this operation will not

succeed.

When adding a new course given by a lecturer, the program needs to check if the

course has a time conflict with all of the lecturer’s other courses.

Programming Languages and Techniques

After adding a new course, we can see the newly added course CIT900 in the

system.

An admin can add a new student/professor to the system.

When adding a new student/professor, the program needs to check if the ID and

username already exists in the system.

Programming Languages and Techniques

When deleting courses/professors/students/, the program needs to check if the

courses/professors/students/ in fact exist in the system.

You may assume all input is valid.

Your Tasks:

1. Read and parse the provided files in Java, cleaning them up if/when

needed. You may assume the information in the files is valid.

a. Courses information file – courseInfo.txt. This file contains

information for a number of courses. The information for each course

is on a separate line. The pieces of information for each course are

separated by semicolons (“;”). We want you to read the file in and

load the information.

b. Admin information file – adminInfo.txt. This file contains basic

information for administrators including username, password, name,

and ID. You need to read the file and load the information.

c. Student information file – studentInfo.txt. This file contains basic

information for students.

d. Professor information file – profInfo.txt. This file contains basic

information for professors.

e. You may assume all of the information in the files is valid. For

example, all information for professors in the courseInfo.txt file is

Programming Languages and Techniques

given in the proInfo.txt file. We suggest that you load the list of

professors before loading the list of courses.

2. Design the student management system

We are not going to provide you with a specific design for this homework.

Feel free to design your own student management system. We do, however,

require you to have the following:

a. At the very least, you MUST have a Controller class that launches

and runs the management system. This class displays the menu,

helps with user login, accomplishes the different user operations and

continuously takes in user input. The Controller class must have the

main() method.. Note, the Controller.java file SHOULD NOT be in a

package. (See screenshot on the next page.)

Here are some other suggestions:

a. You need a FileInfoReader class that reads and parses the files.

b. You need a class that defines a Course. The Course class is expected

to have instance variables which store all of the information for the

course. It also needs to provide functionality, for example, checking if

one course has a time conflict with another course, adding/removing

students from the course, and other helper methods you may need.

c. You need classes that define a Student, Professor, and

Administrator. And they are expected to share some common

attributes and to share as much code as possible. We want you to

think hard about how you can accomplish this. This answer lies

within the scope of the object-oriented concepts we have covered in

this course. For example, you might have a User class with a subclass

Student for the functionality of student operations like

adding/dropping/viewing courses, a subclass to represent Professor,

and a subclass Admin to add/delete/view information for courses,

students and professors.

Here is an overview of the suggested class (and package) structure

described above.

Programming Languages and Techniques

Testing

Regardless of your design, we expect you to write unit tests for every public

method. The only public methods that you can leave untested are those that

perform file I/O, and simple getters and setters. You should keep the file I/O

in as few methods as possible.

You can create any number of test files and place them in any package, but

you MUST name the test files in the format “<YourClass>Test.java”. For

example, if you were to create a test file for your FileInfoReader class, you

MUST name it FileInfoReaderTest.java.

Javadocs

Add Javadocs for all classes, methods, and variables.

What to Submit

Please submit all packages and classes in your entire Java project. Make sure

it includes everything in your “src” folder.

If working in a group, both team members must submit. Include the names of

the members of your team as part of the @author tag in the Javadocs for all

of your classes.

Evaluation

You will be graded out of 40 points:

● Code writing, functionality, and design (20 pts)

o At the very least, did you write a Controller.java that launches

and runs the program?

o Did you make sure Controller.java is not in a package?

o Does the system work as expected?

o Did you make good design decisions about code reuse?

? How much code is being shared between Student,

Professor and Admin?

? How is this code sharing being achieved in your

design?

o Does the code take too long to run? (10 seconds would be too

long!)

● Loading, parsing, and navigating files (10 pts)

o Did you keep file I/O in as few methods as possible?

Programming Languages and Techniques

o Did you correctly load valid data from every file?

o What data structure(s) did you use?

● Unit testing (5 pts)

o Are your test filenames in the format <YourClass>Test.java?

For example, a test file for a class named FileInfoReader must

be named FileInfoReaderTest.java.

o Did you write unit tests for every public method (excluding

methods that perform file I/O and simple getters and setters)?

● Style & Javadocs (5 pts)

o Adding Javadocs to all methods and variables, and comments

to all non-trivial code

o Properly naming variables, using proper indentation, etc.


相关文章

【上一篇】:到头了
【下一篇】:没有了

版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp