## University Housing Management System
## Milestone 1
>proposing a project, with requirement details and user stories written down .
### Problem Statement
* Having a traditional paper system.
* The difficulty of the registration process and the consumption of a lot of time and effort.
* Student crowding during the registration process .
* miss student registration and a lot of data related due to traditional storage .
* Difficulty accessing student data when needed, especially during the student registration renewal process .
* Difficulty transferring and sorting student data and producing reports.
### Project Goals
Designing and programming a website to complete the electronic registration procedures for the student in housing and save the student's data, which is easily accessible at the need.
### System Goals
* Facilitate the student registration process.
* Create a scalable database that interacts with all system components.
* The system should be easy to use and able to understand the tasks and duties of each user.
* Facilitate data retrieval and view reports at any time.
* Give different powers to users .
### Stockholders
**1. Students :** students who reside in university housing are a key stokeholder in the University housing management system.
**2. Secretary(Admin) :** secretary who work directly with the University housing management system .
**3. Financial officer :** is the person responsible for overseeing the financial aspects of the system, including financial records, and transactions related to student housing.
**4. University officials :** university officials who oversee housing operations, and these managers may include the housing director, dean of students, or financial director.
### Features
---
#### **-Housing Options**
Information about the different housing options available to students.
##### **Scenarios :**
* Omar is a fresh student looking to live on campus in a dormitory .He wants to choose between different types of rooms offered in each housing option.
* Ahmed is a student who wants to live in university housing, he is looking for a list of services available in university housing.
* Anan is an administrator in university housing. He wants to be able to modify the housing data in order to be able to control the data through the website.
##### **User Stories :**
* As an new student, I want to be able to view a list of available on-campus housing options so that I can make an informed decision on where to live.
* As an student with a tight budget, I want to be able to filter my housing search by price range so that I can find affordable options.
* As an admin, I would like to add information on the number of available bedrooms , pricing ,so that rooms reservations are better.
##### **Specification (Tasks):**
* Explore available housing options , browse available housing options to see what’s available based on your preferences and budget.
* Develop a system for assigning students to the housing units based on availability and their stated preferences (services , number of persons on room ).
* View the pictures of the residential units to get a better understanding of the room details.
##### **Acceptance Criteria (Test Cases):**
* Test the search functionality by entering specific criteria such as price range and ensuring that the correct results are returned.
* Test the photo gallery functionality by viewing photos of different housing units and ensuring that they are clear and high-quality.
* Website usability testing for a simple and easy user experience.
* Test to ensure that the information for the data housing units is update when it changed.
---
#### **-Viewing Data And Printing Reports**
Easy of viewing and printing reports and controlling student data .
##### **Scenarios :**
* Ali is admin, I need to easily view and export student housing reports.
* Mohannad housing coordinator, I need to be able to view and manage student housing requests.
* Qasem university administrator, I need to be able to view and export student reports in the university residence.
##### **User Stories :**
* As an supervisor, I need to be able to quickly and easily view reports on student housing assignments, so that I can make informed decisions about student housing placements.
* As a students , I want to able to view and print my information at any time.
* As a students , I would like to be able to see the available rooms to live in.
* As an housing coordinator, I need to be able to easily view and manage student accommodation requests, so that I can efficiently manage student accommodation.
##### **Specification (Tasks):**
* Develop an easy-to-use dashboard that provides a quick overview of important student housing data and statistics
* Implement filters and a search function that allows administrators to easily search and quickly find the information they need.
* Implement a system for tracking and recording user activity, so that administrators can track who accessed specific data and when , ensuring data security and integrity.
##### **Acceptance Criteria (Test Cases):**
* Check that the dashboard provides a quick overview of important student housing data and statistics.
* Test that the dashboard is easy-to-use and displays information in a visually appealing way.
* Verify that the system is able to track and log user activity, such as who accessed specific data and when.
---
#### **-Easy Payment**
Ease of collecting money from the student in the same place without the need to go back to the financial administration building.
##### **Scenarios :**
* Sara, a student who has an outstanding balance from a previous semester, wants to make a payment on her outstanding balance.
* Qasim, the university's financial officer, wants to settle the university's accounts and check whether all payments made by the students have been received.
##### **User Stories :**
* As an students, I want to be able to make a payment towards my outstanding balance through the housing management system, so that I can settle my account easily and conveniently.
* As an financial officer, I want to be able to reconcile payment data between the housing management system and the university's financial system, so that I can ensure accurate accounting and reporting.
##### **Specification (Tasks):**
* Develop an automated system for reconciling payment data between the housing management system and the university's financial system.
* Create a reporting system that allows the finance officer to view payment data and generate financial reports.
##### **Acceptance Criteria (Test Cases):**
* The system should be designed to integrate with other financial management systems used by the university.
* The system should be regularly updated and maintained to ensure its accuracy and efficiency in reconciling payment data.
* The reporting system should allow the finance officer to view payment data from the housing management system and the university's financial system in one place.
---
## Milestone 2
>requirement validation and project planning, with development team and plans set up
-For more details click on the link-
-Software Engineering Project Workspaces-
[https://trello.com/b/XFWfvNMz/university-housing-management-system](https://)
| To Do | Estimate Time |
| -------- | -------- |
| Ux\Ui design |3-5 days|
| Front End |10-14 days|
| Back End |14-21 days|
| Data Base |5-7 days|
---
## Milestone 3
>1st development iteration, with unit test cases to show progress
#### -UX/UI




#### -FrontEnd
https://github.com/Ananjamal/software_project
https://trello.com/b/XFWfvNMz/university-housing-management-system
## Milestone 4
>2st development iteration
#### -BackEnd
https://github.com/Ananjamal/software_project
https://trello.com/b/XFWfvNMz/university-housing-management-system
## Milestone 5
### -Testing
#### Test Case 1 : Admin Login Success
##### Description: Verify that the admin can successfully log in with valid credentials.
##### Input: Admin username and password.
##### Expected Output: Admin is logged in and granted access to the admin dashboard.
----
#### Test Case 2 : Admin Login Failure
##### Description: Verify that the admin cannot log in with invalid credentials.
##### Input: Invalid admin username and password.
##### Expected Output: Admin login fails and an error message is displayed.
---
#### Test Case 3 : Student Login Success
##### Description: Verify that a student can successfully log in with valid credentials.
##### Input: Student username and password.
##### Expected Output: Student is logged in and granted access to the student dashboard.
---
#### Test Case 4 : Student Login Failure
##### Description: Verify that a student cannot log in with invalid credentials.
##### Input: Invalid student username and password.
##### Expected Output: Student login fails and an error message is displayed.
---
#### Test Case 5 : Admin Add Student
###### Description: Verify that the admin can add a new student to the system.
###### Input: Student details (name, username, password, etc.).
###### Expected Output: Student is successfully added to the system.
---
#### Test Case 5 : Admin Add Room
###### Description: Verify that the admin can add a new room to the system.
###### Input: Room details (room number, capacity, price, etc.).
###### Expected Output: Room is successfully added to the system.
---
#### Test Case 6 : Admin Add Room
##### Description: Verify that the admin can add a new room to the system.
##### Input: Room details (room number, capacity, price, etc.).
##### Expected Output: Room is successfully added to the system.
---
#### Test Case 7 : Admin Update Room Details
##### Description: Verify that the admin can update the details of a room.
##### Input: Updated room details (price, capacity, etc.).
##### Expected Output: Room details are successfully updated in the system.
---
#### Test Case 8 : Student View Room Details
##### Description: Verify that a student can view the details of a room.
##### Input: Room ID or number.
##### Expected Output: Student can see the room details (price, number, etc.).
---
##### Test Case 9 : Admin Assign Room to Student
##### Description: Verify that the admin can assign a room to a student.
##### Input: Student ID and room ID.
##### Expected Output: Room is assigned to the student in the system.
----
#### Test Case 10 : Admin Delete Student
##### Description: Verify that the admin can delete a student from the system.
##### Input: Student ID.
##### Expected Output: Student is successfully deleted from the system.
----
#### Test Case 11 : Admin Delete Room
##### Description: Verify that the admin can delete a room from the system.
##### Input: Room ID.
##### Expected Output: Room is successfully deleted from the system.
---
#### Test Case 12 : Student Change Password
##### Description: Verify that a student can change their password.
##### Input: Current password and new password.
##### Expected Output: Student's password is successfully updated in the system.
----
#### Test Case 13 : Admin Change Password
##### Description: Verify that the admin can change their password.
##### Input: Current password and new password.
##### Expected Output: Admin's password is successfully updated in the system.
----
#### Test Case 14 : Add Room Price by Administrator
##### Description: Verify that the administrator can add a price for a room.
##### Inputs: Room number and price.
##### Expected Result: The room price is successfully added to the system.
---
#### Test Case 15 : Student Logout
##### Description: Verify that the student can successfully log out from the system.
##### Inputs: None.
##### Expected Result: The student is logged out of the system.
---
#### Test Case 16 : Administrator Logout
##### Description: Verify that the administrator can successfully log out from the system.
##### Inputs: None.
##### Expected Result: The administrator is logged out of the system.
---
### -Refactoring
##### 1- Review the existing code: Take a thorough look at the current codebase to identify areas that can be improved or optimized.
##### 2- Identify code smells: Look for code smells such as duplicated code, long methods, complex conditionals, and poor naming conventions. These are indications of areas that can be refactored.
##### 3- Define goals: Determine the goals of the refactoring process. This could include improving code readability, enhancing performance, reducing complexity, or increasing maintainability.
##### 4- Break down large methods: If you come across large methods, break them down into smaller, more manageable functions. This helps improve code organization and readability.
##### 5- Extract reusable code: Identify code segments that are repeated in multiple places and extract them into separate functions or modules. This promotes code reuse and reduces duplication.
##### 6- Simplify conditionals: Look for complex conditional statements and simplify them by using logical operators, ternary expressions, or separate functions to improve readability and maintainability.
##### 7- Improve naming conventions: Ensure that variable, function, and class names are descriptive and meaningful. This helps improve code readability and makes the codebase more understandable for future developers.
##### 8- Eliminate unnecessary code: Remove any unused variables, functions, or imports that are no longer needed. This reduces clutter and improves code maintainability.
##### 9- Test after each refactoring: As you make changes, run the existing test cases to ensure that the functionality remains intact and that the refactoring has not introduced any bugs.
##### 10- Write new test cases: If necessary, add new test cases to cover the refactored code and ensure that all functionality is properly tested.
##### 11- Refactor incrementally: It's generally best to refactor in small, incremental steps rather than attempting to refactor the entire codebase at once. This allows for easier debugging and minimizes the risk of introducing errors.
##### 12- Review and iterate: After each refactoring step, review the changes and gather feedback from other developers if possible. Iterate on the refactoring process based on the feedback received
## Group members
* Ahmad F. Battah || **120192642**
* Anan J. Abu Tawahena || **120191610**
* Mohammed R. Abd El Al || **120191555**
* Ahmad R. Abd Alaal || **120180243**
* Mohammed R. Qassem || **120190638**