7 min read

Course Registration with RateMyProfessor

Course Registration with RateMyProfessor

2021 Spring Personal Project

GitHub - IlMinCho/Course-Registration-with-RateMyProfessor
Contribute to IlMinCho/Course-Registration-with-RateMyProfessor development by creating an account on GitHub.

The user entry is based on the students who want to register for the course, and in the backend section, the courses provided by the college are represented, and the evaluation data of the professors in each courses is received as text data from RateMyProfessors website. If possible, it will also create one more front-end part that can be entered by the professor so that professor can check which students have applied for their classes and check what classes students have been taking.

- The basic framework is to make course registration possible according to the number of students who can apply for a course on the part of the student user side. In addition, managing classes based on class information or professor evaluation is the basic framework of the administrator side.

- Students should fill in their student number, major, and classes they have taken before signing up.

- The administrator should display the contents of the course name, course time, number of students who can apply, and the contents of the professor's evaluation.

- The professor should fill in the class he teaches, so that the information of the students who have applied for his class can be viewed.


Software UML (Unified Modeling Language)

- Login

-

filePrefix: string

fileLocation

+

loginID : string

From ui

+

password: string

From ui

+

userType : string

From ui

 

 

 

+

checkID() – connect binary txt.file

Checking the ID / Password

+

Loginbutton() -> checkID

UI

+

CreateAccountButton() -> Show-Account()

UI

- Account

-

filePrefix: string

fileLocation

+

userType : string

 

+

ID : string

 

+

Password: string

 

+

username: string

 

+

Gender : string

 

+

Major : string

 

+

Email : string

 

+

creatID() -> to binary / text file

Id,password(binary) / other (text)

+

createButton() -> creatID()

 

- Admin

-

filePrefix: string

fileLocation

-

Colum( course, instructor, rate, meeting, credits, seats ): enum

 Course list data information

+

courseDisplay()

From courseData.txt

+

rateDisplay()

From rateData.txt

+

addButton() -> show-addCourse()

 

+

editButton() -> show-editCourse()

Return -> index;

+

deleteButton()

Delete the data based on index

+

refreshButton() -> courseDisplay()

 

- addCourse

-

filePrefix: string

fileLocation

+

courseName :string

From Ui

+

Instructor :string

From Ui

+

Prorate : string

From Ui

+

Meeting : string

From Ui

+

Credits: string

From Ui

+

seats: int

From Ui

+

updataButton()

To courseData

- editCourse

-

filePrefix: string

fileLocation

-

Index:int

From admin

+

courseName :string

get index / courseData.txt

+

Instructor :string

get index / courseData.txt

+

Prorate : string

get index / courseData.txt

+

Meeting : string

get index / courseData.txt

+

Credits: string

get index /courseData.txt

+

setSelectedData()

Show information in the blank

+

editButton()

To courseData.txt

- Student

-

filePrefix: string

fileLocation

-

Colum( course, instructor, rate, meeting, credits, seats ): enum

 Course list data information

+

coursesDisplay()

From courseData /

If seat ==0; doesn’t show the course

+

createStudentFile()

Create user_course.txt

+

studentCourses()

From user_course.txt

+

addButton()

Get data from CouresData.txt / To user_course.txt

/ int seat -1 on courseData.txt

+

deleteButton()

To user_course.txt /

Int seat +1 on courseData.txt

+

refreshButton() -> courseDisplay()/studentCourses()

 


User and Software Manuals ( Windows )

1.     Before running the Program

-      Copy the path to the folder.

-      Then go to all the header files and paste them to the path to the filePrefix =”here”.

2.     Login Page

-      User type, ID and, password must be entered in order to LogIn.

-      If you don't have an account, you have to create one. ( -> Create ID )

-   Existing saved account information

( Student: ilmin / 123123 , Administrator: admin / 123123 )

3.   Create Account

-      After selecting the user type, you must enter all the information as shown.

-  All your information will be stored in userData.txt in the source folder, and your ID and password will be saved as idAndPassword.txt in a binary file.

4. Administrator Page

- You can add, delete, and edit course information from the Administrator page.

- The Course list on the left shows information from (courseData.txt) added by the administrator and can be found on the administrator page even if the avail seats are zero. ( Student page can`t find )

- The professor Rate has read the information in rateData.txt, which is obtained from rateMyprofessor's website.

- Press the add button and add course. After adding, you need to press the refresh button to check the information.

- In the course list, you have to select the course you want to modify, click the edit button, modify the information, and press the confirmation button. And the click the refresh button

- If you want to remove the course, you can select a course from the list and press the delete button.

- Information in the processor rate can only be modified by going to the rateData.txt file.

5. Student Page

- Upon entering this page, a file named userID_Course.txt will be created in the source folder, which will store the course information added by the user.

- Course information from the admin page is displayed, and if you click the add button after selecting the course you want from the list, the information will appear in your courses.

- Select the course you want to remove from your course list and click the delete button to automatically remove it.


Work Time line

1. Plan for the Week ( 3/8 ~ 3/14 )

- Think about what components to put into each user in the program. ( User1(Student) / User2(Professor)? / Admin(College) )

- Get Bunker Hill professor rate Data from ‘RateMyProfessor’ website and

organize it.

2. Plan for the Week ( 3/22 ~ 3/28 )

- Imagine how the program will run as you write the initial UML.

- Still, Get professor Data from the website. ( Save as txt file )

3. Plan for the Week ( 3/29 ~ 4/4 )

- Create a basic frame by writing code in visual studio based on UML

4. Plan for the Week ( 4/5 ~ 4/11 )

- Find and fix uml-based coding errors

( This week did not do it properly because it was doing something else. )

5. Plan for the Week ( 4/12 ~ 4/18 )

- Find and fix uml-based coding errors

- Study QT and make basic design frame

- Login page build with txt.file

6. Plan for the Week ( 4/19 ~ 4/25 )

- Doing input/output Stream with txt.file for Admin. ( assignment ‘Using Streams and Exceptions’ )

- Doing input/output Stream with txt.file for User also.

- Account page build with binary file

7. Plan for the Week ( 4/26 ~ 5/2 )

- Finish input/output Stream and “Exception” ( assignment ‘Using Streams and Exceptions’ )

- admin Page build with txt.file

8. Plan for the Week ( 5/3 ~ 5/9 )

- Finish the admin page with design part ( picture and font / graphics )

- start student page ( how to deal with available seat in txt file)

9. Plan for the Week ( 5/10 ~ 5/16 )

- Finish student page

- Check overall operation and modifications

- Create user interface / Take Demonstration Video

10. Plan for the Week ( 5/17 ~5/19 )

- Final Project Reflection / Projection


Challenges Experienced & Areas For Improvement

• Future Enhancements with Web Scraping Technology:

In the dynamic landscape of technology, continuous improvement and adaptation are crucial. One of the forward-looking enhancements I'm considering for my projects involves the integration of web scraping technology. This tool can play a pivotal role in keeping the data fresh, relevant, and extensive.

• Automated Data Retrieval:

The primary objective of introducing a web scraper is to automate the process of data collection. By programming the scraper to systematically extract information from specified web sources, we can ensure that our database remains up-to-date without manual intervention. This is especially vital in fields where data is continually evolving, such as market trends, scientific research, or social media analytics.

• Expanding Data Horizons:

Another significant advantage is the potential to process and analyze a broader range of data. Currently, the scope of data we work with is limited by manual collection methods. With a web scraper, we can expand our reach to a vast array of online resources, exponentially increasing the volume and variety of data available for analysis.


Reflection

Project Genesis: As a Computer Science student at Bunker Hill, I embarked on a transformative journey through a self-initiated project. Faced with the challenges of class registration, I leveraged my burgeoning programming skills to devise a solution, leading to the creation of a unique class registration program.

Triumphs of Perseverance: This endeavor was not just a technical project; it was a testament to resilience. Every obstacle encountered and overcome reinforced a valuable life lesson: the zenith of accomplishment lies in unwavering persistence. This project, in particular, was monumental in reinforcing my belief that with determination, any challenge can be surmounted.

Navigating Uncharted Territories: A significant aspect of this journey was my foray into QT programming – a domain previously unexplored by me. It was an exhilarating experience of applying classroom theory to real-world problems. I meticulously researched, utilizing every resource at my disposal, demonstrating that the internet is a vast repository of knowledge waiting to be tapped.

Refining Problem-Solving Skills: The project was rife with intricate challenges, especially in text file processing. It was a continuous process of questioning, refining, and selecting the most efficient data organization methods. This not only honed my technical skills but also bolstered my confidence in tackling unknown problems with a research-driven approach.

Embracing Areas for Growth: Through this journey, I recognized the vastness of what I have yet to learn, spanning programming languages, data handling efficiencies, and design aesthetics. This realization does not deter me; rather, it fuels my ambition to join the ranks of those proficient in these areas.

Looking Ahead: This experience has empowered me to conceive and execute my own projects, transcending beyond the classroom. Post-COVID, I eagerly anticipate sharing my insights and engaging in collaborative ventures at Bunker Hill. My next step is to delve deeper into a specific field within programming, furthering my growth in this ever-evolving discipline.