## 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 ![](https://i.imgur.com/BaUIuK6.jpg) ![](https://i.imgur.com/yW13vSm.jpg) ![](https://i.imgur.com/2mGXQeF.jpg) ![](https://i.imgur.com/pRLb0Po.jpg) #### -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**