You are on page 1of 69

ANALYSIS

1.1 INTRODUCTION
This is a Project work undertaken in context of partial fulfillment of MIS.I have tried my best to make the complicated process of royal Estate Agent and Property Management System (e-property) as simple as possible using Structured & Modular technique & Menu oriented interface. I have tried to design the software in such a way that user may not have any difficulty in using this package & further expansion is possible without much effort. This report illustrates some of the knowledge and skills gained in the course of study. This entailed studying the necessary components and technologies that make up e-property system for an Estate Agent and to set up users satisfaction and experience during their interaction with the system. The e-property Management system is a royal estates solution to the final automation of real estate administration. It offers a homegrown solution which works with the manual current systems and leverages existing technology. It also centralizes the mountains of data and automates routing of administrative functions. This package has managements most flexible and interactive functions, thus meeting the information needs of the entire business. And, it is utterly simple for everyone to use. The Real Estate Management software is more than just another technological solution; it is systems that will revolutionaries some aspects of the way real estate firm is managed E-Property is an Estate Agent and Property Management System is a user friendly contact and property manager for real estate professionals. Save time and sell more by empowering to easily keep track of leads, manage listings, and market to new prospect. Estate Agent / Property Management System (e-Property) is complete end to end solution to cover all aspects of Estate Agent day to day activity and Property buying selling procedure for small organization.

1.2 THE E-PROPERTY ADVANTAGE


Most software's are less flexible when it comes to adoption; the Real Estate management software adopts the firms operating style. With software engineers at call the software can be reworked to fit your Real Estates firm context. This project will features easy search searching, filter all views for easy record location and also allow easy entry of Property and Vendor details with easy to use and impressive GUI.

1.3 PROJECT OBJECTIVES


The basic objective of developing this project is: Maintain client details line contact details, required property details, client type like residential and commercial client. Price limit. Preference. Maintain property details, registration of property for sale includes property address, property description, price, facilities available. Store property floor plan, property documents. Creation of thumbnail of property images for brochure. System has powerful logical access management in place, each user must be identified by login id and strict password policy is applied to secure the system. Search property for sold, rented and vice vasa.

1.4 THE INVESTIGATION


I arranged and made an interview with the manager of the royal estate Mr. Ibrahim, which I collected some, datas and I made some structured questions prior before the interview and the discussion drawn up where:

The problems of the current manual system How the current manual system operate. The amount of landlords and tenant they have. How they contact their landlords. Do they have any software that they propose to use? The information that they require from their landlords and tenants 4

1.5 SUMMARY OF THE INTERVIEW


According to my interview with Mr. Ibrahim, some number of issues comes out which draws to my final objective of the project listed above.

1.6 PROBLEM WITH THE CURRENT SYSTEM


Although there are so many Estate Agent and Property Management systems depending on the business of the organization but this development report focuses on the e-property system. The purpose of this development report was to implement some knowledge of human-computer interaction, that is, the way human interact with machines. The current system which is most widely used in the present situation of Estate Agent and Property Management system is done manually, which the estate agent will have to view different picture or visual illustrations of the entire building structure and plan on paper. The current systems poses problem in which are the records of customer landlords and tenants are file and store in the office which generate limited office space. And also the files do not have back up as in case of fire outbreak. There is time consuming getting through file to fine record of a property and record of tenants and also sold property details.

1.7 ENTITIES, ATTRIBUTES, ENTITY RELATIONSHIP DIAGRAMS


Customer CustomerID Title FirstName MiddleName LastName Nationality Occupation Address Telephone Email CustomerDocumentID Title Url CustomerID CustomersRentingID CustomerID RentIDint 5

Customer Document

Customers RentingI

Documents

DocumentsID int Title DocUrl PropertyID ImageID ImageUrl PropertyID ItemID Name nvarchar Quantity PropertyID LandlordID Title FirstName MiddleName LastName Address Telephone Email Nationality LoginID Username Password Name

Image

Item

Landlord

Login

Property

PropertyID Address Type NumberOfRooms Location LetType FloorPlan LandlordID RentedSold Amount

Rent

RentID StartDate Duration EndDate DueDate DepositAmount PropertyID Amount RentDocumentID Title Url RentID RentPaymentID Amount Date ForTheMonthOf RentIDint SoldID Date PropertyID CustomerID PriceSold SoldDocumentID Title Url SoldID

Rent Document

Rent Payment

Sold

Sold Document

ENTITY-RELATIONSHIP DIAGRAM

Login
LoginID Username

RentDocument
RentDocumentID Title Url RentID

CustomerDocument
CustomerDocumentID Title Url CustomerID

Password Name

RentPayment
RentPaymentID
FK_C ustomerDocument_Customer

FK_RentDocument_Rent

Amount Date ForTheM onthOf

Rent
RentID StartDate
FK_RentPay ment_Rent

Customer
CustomerID Title FirstName M iddleName LastName Nationality Occupation Address Telephone Email
FK_CustomersRenting_Customer

RentID

Duration EndDate DueDate DepositAmount PropertyID

FK_CustomersR enting_Rent

Amount

CustomersRenting
CustomersRentingID CustomerID RentID

FK_Sold_Customer

FK_Rent_Property

Sold
SoldID Date PropertyID CustomerID PriceSold
FK_Sold_Property

Property
PropertyID Address Type NumberOfRooms Location LetType FloorPlan LandlordID
FK_Images_Property

Images
ImageID Title ImageUrl PropertyID

FK_SoldDocument_Sold FK_Property_Landlord

RentedSold Amount

Items
ItemID Name Quantity
FK_Items_Property

SoldDocument
SoldDocumentID Title Url SoldID

Landlord
LandlordID Title FirstName M iddleName LastName Address Telephone Email Nationality
FK_Documents_Property

PropertyID

Documents
DocumentsID Title DocUrl PropertyID

1.9 DATA FLOW DIAGRAMS


Level 0

Level 1

1.10 DATA DICTIONARY


CUSTOMER TABLE

CUSROMER DOCUMENT TABLE

CUSTOMER RENTING TABLE

10

DOCUMENTS TABLE

IMAGE TABLE

ITEMS TABLE

11

LANDLORD TABLE

LOGIN TABLE

PROPERTY TABLE

12

RENT TABLE

RENT DOCUMENT TABLE

RENT PAYMENT TABLE

13

SOLD TABLE

SOLD DOCUMENTS TABLE

14

1.11 TOP DOWN DESIGN

15

1.12 OPERATING ENVIRONMENT


The following computer system requirements are needed to use the program

Hardware Requirement Processor RAM : : All Pentium series 64 Ram (Min.)

Software Requirement Operating System 200x series Support : : Window XP & All Windows VB 2010 Runtime Crystal Report

Development Tools Front End Back End : : Visual Basic 2010 SQL Server 2008

Server Computer Pentium 3 1GHz or equivalent 256Mb System Memory 2GB Free Hard Disc Space

User Computers Minimum: Pentium 2 400 or equivalent 128Mb System Memory 100Mb Free Hard Disc Space Windows XP/2000 CD-ROM Drive (for installation) Keyboard and Mouse

16

1.13 PROJECT CONSTRAINTS AND LIMITATION


I encounter few constraints and limitation while developing this software. I would like to categorize it into three areas name time, cost and project cope. Time was the biggest limitation because due to the project scope I would have loved to get additional time in order to add more features and solution tools to the software, nevertheless, I achieved the project objective. Another issue is cost, I did have access to funds during the cause of developing the software but with my limited resources the project objective was still achieved. The third constraint was meeting the scope/objective of the project and ready software with good quality.

1.14 USERS SKILL LEVEL


The user must be experienced with Windows XP or Win7 and has knowledge in all the major office applications and familiar with basic storage management techniques. The data stored in every database resides on disk somewhere (unless it is stored on one of the new main memory DBMS products).the user must understand the storage system on hardware and software, including how it interacts with the DBMS. Thus, when designing the user interface to be as similar as possible to these widely-used applications, ease of use and an intuitive front-end will be one of the key aims, so that the user will have no problem entering data and getting the correct results as early as possible.

17

DESIGN
2.1

SYSTEM DEVELOPMENT METHODS

Visual Basic

Visual basic 2008 is built on the Windows Server System to take major advantage of the OS and which comes with a host of different servers which allows for building, deploying, managing and maintaining Windows Based solutions. The Windows Server System is designed with performance as priority and it provides scalability, reliability. Visual Studio 2008 provides developers with new ways to build smart clients. These new features, which both enhance application functionality and improve developer productivity, include easier design integration, expanded deployment options, more versatile logon and personalization services, and better data access and synchronization. Effective smart client development begins with good application design. Visual Studio makes integrating UI designers into the development process easier by supporting common formats such as Extensible Application Markup Language (XAML) and giving designers more direct control over the layout, controls, and data binding of an applications UI With Visual Studio 2008, developers can easily leverage new platform technologies to deliver more compelling applications to their customers. Visual Studio enables them to effortlessly incorporate new Windows Presentation Foundation features into both existing Windows Forms applications and new applications. They can also move their applications to the new Windows Vista look and feel easily with enhancements to the Microsoft Foundation Class Library (MFC) and Visual C++. Visual Studio 2008 also enables improved interoperability between native and managed code The advantage of Visual Basic Studio includes Rapid Application Development (RAD) Support. Powerful Windows-based Applications Simplified Deployment Powerful, Flexible, Simplified Data Access Improved Coding Direct Access to the OS Platform Object-Oriented Constructs Deliver Rich User Experiences Collaborate with UI Designers COM Interoperability

Sql server
A database server is a computer that stores the data and serves information to a user's computer when they request it. There are several types of database server systems, including Microsoft's SQL 2008 servers. Many companies use Structured Query Language (SQL), Oracle, Sybase, and MySQL servers to manage their company's collection of information. When it came to choose backend for an enterprise level application I have so many options, like Oracle, Sybase, 18

MySQL, however I decided to choose Microsoft SQL Server 2008 as my database, and it has so many features which is ideal for visual basic based application.

Advantages of using sql server


The benefit of SQL servers is the ease of use and maintenance. Since many people are familiar with Microsoft products, using the visual interface of SQL server is not as intimidating as other programs. Many SQL servers are intended for use with large data sets and to handle many users. When you are dealing with multiple users and huge amounts of data, you need a system that is reliable (meaning it doesn't crash much) and safe (meaning it is difficult for unauthorized access). In the 2008 release of SQL, a new feature is Performance Studio. This collection of tools, writes Schlichting, can be used together to troubleshoot, monitor and tune your system to prevent problems that lead to system crashes. Also, in SQL Server, you have tools such as Policy-Based Management that allows database administrators to define policies for the data and to receive alerts when the policies are violated. You can also encrypt the entire database, including your data and log files, making your server safer from attacks. There are External Key Management features that allow you to support third-party certificates and encryption information in a separate section, so you can handle credit-card processing and remain compliant with current laws for the credit card industry. Other future includes:

Backup Encryption. Executed at backup time to prevent tampering. External Key Management. Storing Keys separate from the data. Auditing. Monitoring of data access. Data Compression. Fact Table size reduction and improved performance. Resource Governor. Restrict users or groups from consuming high levels or resources SQL Server Integration Service. Improved multiprocessor support and faster lookups. MERGE. TSQL command combining Insert, Update, and Delete. SQL Server Analysis Server. Stack improvements, faster block computations. SQL Server Reporting Server. Improved memory management and better rendering. Microsoft Office 2007. Use OFFICE as an SSRS template. SSRS to WORD. SQL 200 Support Ends. Mainstream Support for SQL 2000 is coming to an end.

19

2.2 SYSTEM SECURITY


System security is one of the main objectives of this system because data is the most important asset of this system. I intend to achieve by allocating who access what conception e.g. employee will be given login details which only give them access to what they are required to access. Also the management will be given login detail which they can change anytime and these details grant them access to the whole system. Any user without login details to this system will not be able to access the system. I believe this method of password protection is the best because SQL database passwords are terribly difficult to hack, storing the password elsewhere in a separate file, the Windows registry or even in a database table compromises security.

2.3 SYSTEM TEST STRATEGY


The test strategy of the system has the following objectives: Software security problems are becoming even more severe. I intend to perform security test in order to address the security issue. Performance test is also important; this testing will be carried out in order to observe if the software can retrieve records from the database in less than a minute. Software performance is a major concern. Usability test: Usability testing is the process by which the human-computer interaction characteristics of a system are measured, and weaknesses are identified for correction. Ease of learning Navigation User satisfaction General appearance I will test the effectiveness of the security on the user interface: Valid password gains access to the system Invalid password rejected and system access denied Database: Testing will be done on the database integrity to see if it working properly. Form Test: few records will be adding to the system to see if the form is working properly and if it connecting with the database

2.4 SYSTEM FLOW CHART

20

2.5 DESIGN OF USER INTERFACE


Many technological innovations rely upon User Interface Design to elevate their technical complexity to a usable product. Technology alone may not win user acceptance and subsequent marketability. The User Experience, or how the user experiences the end product, is the key to acceptance. And that is where User Interface Design enters the design process. While product engineers focus on the technology, usability specialists focus on the user interface. For greatest efficiency and cost effectiveness, this working relationship should be maintained from the start of a project to its rollout. When applied to computer software, User Interface Design is also known as Human-Computer Interaction or HCI. While people often think of Interface Design in terms of computers, it also refers to many products where the user interacts with controls or displays.

Deign of input forms


Login form Textbox for user login

Button for user login

Admin Form

Creating admin password.

Displays admin user names and password

Removing added user password 21

Main Menu Form Menu tool bar Search detail icons

Display property details with pictures

Property form

Property details

Floor plan picture

Displays room items

Display property images

22

Landlord Form

Landlord details

Saving button

Deleting landlord button Displays all landlords

Customer Form
Entering Customer detail

Display scan picture from files

Saving customer info 23

Radio button for selecting sale or rent

Selecting date

Property OP

Removing doc. button

Clearing all the items for new operation button

Payment Form

Link to history form which display payment info.

24

History form
Display rent history

More Info Table

Display pictures Of floor plan of the property

Display items that are in the property

Display the picture views of the property Next and previous button to display the pictures of the property 25

IMPLEMENTATION AND TESTING


3.1 DETAILS OF SQL STATEMENTS
Customer Table SELECT CustomerID, Title, FirstName, MiddleName, LastName, Nationality, Occupation, Address, Telephone, Email FROM Customer WHERE (CustomerID IN (SELECT CustomerID FROM CustomersRenting WHERE (RentID = @RentID))) ORDER BY FirstName Property Table SELECT PropertyID, Address, Type, NumberOfRooms, Location, LetType, FloorPlan, LandlordID, RentedSold, Amount FROM Property SELECT Address, Amount, FloorPlan, LandlordID, LetType, Location, NumberOfRooms, PropertyID, RentedSold, Type FROM Property WHERE (Address = @Address) SELECT PropertyID, Address, Type, NumberOfRooms, Location, LetType, FloorPlan, LandlordID, RentedSold, Amount FROM Property WHERE (PropertyID = @PropertyID) UPDATE SET WHERE Sold Table SELECT FROM SoldID, Date, PropertyID, CustomerID, PriceSold Sold Property RentedSold = @RentedSold (PropertyID = @PropertyID)

26

Rent Table SELECT FROM RentID, StartDate, Duration, EndDate, DueDate, DepositAmount, PropertyID, Amount Rent

SELECT RentID, StartDate, Duration, EndDate, DueDate, DepositAmount, PropertyID, Amount FROM Rent WHERE (PropertyID = @PropertyID) ORDER BY RentID DESC SELECT FROM WHERE RentID, StartDate, Duration, EndDate, DueDate, DepositAmount, PropertyID, Amount Rent (RentID = @RentID)

Rent Payment Table SELECT FROM RentPaymentID, Amount, Date, ForTheMonthOf, RentID RentPayment

SELECT RentPaymentID, Amount, Date, ForTheMonthOf, RentID FROM RentPayment WHERE (RentID = @RentID) ORDER BY RentPaymentID DESC Rent Document Table SELECT FROM RentDocumentID, Title, Url, RentID RentDocument

Customer Renting Table SELECT FROM CustomersRentingID, CustomerID, RentID CustomersRenting

Landlord Table SELECT LandlordID, Title, FirstName, MiddleName, LastName, Address, Telephone, Email, Nationality FROM Landlord WHERE (LandlordID = @LandlordID) ORDER BY FirstName Items Table SELECT ItemID, Name, Quantity, PropertyID FROM Items WHERE (PropertyID = @PropertyID) 27

3.3 DETAILS OF VARIABLES

Real estate management module This module caters for the management of E-Property. Following is a brief description of the functionalities of this module. Registering landlords This feature allows the user to register the landlords for those managing other peoples properties. This is done only once at the beginning of system adoption or when a new landlord comes. These details are then used to facilitate other transactions Registering tenants At the center of E-Property management is the tenant. Thats this system captures as much details about the tenants occupying agency houses as possible. These details are: name, ID number, postal address number, telephone number, mobile numbers (two different numbers), and email address.

28

3.4
Test No 1

SYSTEM TESTING
Test Testing to see if the program start correctly and the security box appear ready for input Testing for invalid name and password Testing the main menu appearance after login Test for main menu button functionality (if the buttons are opening the right forms. Test for adding details unto the database using customer table. Testing for constraint to check if column allowed null Testing for operation to see if the datas are entered correctly and saved. Test on more info to see more information on a particular property on the main menu Test on Rent Payment table to check if it save and displays payment history Test on search option on all the forms to see if the result is accurate Test for Admin adding, deleting and changing of password. Test result Work correctly. See figure 1

2 3 4 5 6 7 8 9

Appears correctly. See figure 2 See figure 3 Right form was open. See figure 4 Responds was good. See figure 5 Record was successfully added See figure 6 See figure 7 See figure 8 See figure 9

10 11

Accurate result. See figure 10, 11 See figure 12

29

Evidence of testing
Test Figure 1: The program starts up successfully and the logon screen is displayed
As you can see, the logon screen is displayed and waiting for input

Test Figure 2: Password invalid, when a wrong name or password is incorrect a message will
appears warning that wrong password.

30

Test Figure 3: If a login detail is correct then program will display the main menu.

Test Figure 4: Checking functionality of the program, this test show that the customer button is
working properly.

31

Test Figure 5: This test show performing adding customer detail into the database.

Test Figure 6: Screen shot showing test on constrain. If the necessary column are not filled with
details the program constraint indicates that column does not allows null.

32

Test Figure 7: Test on property operation which show rent or sale operation. When the rent is
entered it shows down on the task bar that the rented property has been saved.

Test Figure 8: Test on more info to see more information on a particular property on the main
menu when searching for property, it display all the necessary information of the property the ground plan and view of the property.

33

Test Figure 9: Test on Rent Payment table to check if it save and displays payment history of the
tenant.

Test Figure 10: Test on search, which displays all the property available in the database.

34

Test Figure 11: Test on searching base on the option chosen from the search menu.

Test Figure 12: Test on admin table which show adding and deleting of admin user name and
password.

35

Data Set

36

3.5 SOURCE CODE LISTING Admin Source code


Public Class Admin Private Sub LoginBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoginBindingNavigatorSaveItem.Click Me.Validate() Me.LoginBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Login' table. You can move, or remove it, as needed. Me.LoginTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Login) End Sub Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click ' this allows you to save the new user and password details. Try LoginBindingNavigatorSaveItem.PerformClick() Catch ex As Exception ToolStripStatusLabel1.Text = ex.Message End Try End Sub Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewButton.Click 'this allow you to add new user. Try BindingNavigatorAddNewItem.PerformClick() Catch ex As Exception ToolStripStatusLabel1.Text = ex.Message End Try End Sub Private Sub RemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RemoveButton.Click 'the removeButton allow you to remove the new user details added above. Try BindingNavigatorDeleteItem.PerformClick() Catch ex As Exception ToolStripStatusLabel1.Text = ex.Message End Try End Sub End Class 37

Customer Source Table


Public Class Customer Private Sub CustomerBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CustomerBindingNavigatorSaveItem.Click Me.Validate() Me.CustomerBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub Private Sub Customer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Customer' table. You can move, or remove it, as needed. Me.CustomerTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Customer) Try BindingNavigatorAddNewItem.PerformClick() NationalityComboBox.SelectedIndex = -1 TitleComboBox.SelectedIndex = -1 Catch ex As Exception End Try End Sub Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click Dim docAdapter As RoyalEstateDatabaseDataSetTableAdapters.CustomerDocumentTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.CustomerDocumentTableAdapter Try CustomerBindingNavigatorSaveItem.PerformClick() For Each xRow As DataGridViewRow In DocDataGridView.Rows Try docAdapter.Insert(xRow.Cells(0).Value, xRow.Cells(1).Value, CustomerIDTextBox.Text) Catch ex As Exception MessageBox.Show("could not save document " & xRow.Cells(0).Value & " " & ex.ToString, "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Next CustomerToolStripStatusLabel.Text = "Customer saved..." Catch ex As Exception End Try End Sub Private Sub NewCustomerButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewCustomerButton.Click 38

'this code allow yout o select and also clear the nationality box. Try BindingNavigatorAddNewItem.PerformClick() NationalityComboBox.SelectedIndex = -1 TitleComboBox.SelectedIndex = -1 CustomerToolStripStatusLabel.Text = "" DocDataGridView.Rows.Clear() Catch ex As Exception End Try End Sub Private Sub DocBrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DocBrowseButton.Click If DocTitleTextBox.Text <> "" And LastNameTextBox.Text <> "" And CustomerIDTextBox.Text <> "" Then DocOpenFileDialog.ShowDialog() Try CustomerBindingNavigatorSaveItem.PerformClick() Dim desPath As String = Application.StartupPath & "\pics\CustomerDoc\" & LastNameTextBox.Text & " " & CustomerIDTextBox.Text & " " & DocTitleTextBox.Text & ".png" Dim sourcePath As String = DocOpenFileDialog.FileName My.Computer.FileSystem.CopyFile(sourcePath, desPath, True) DocScanTextBox.Text = desPath Catch ex As Exception MessageBox.Show("enter document title and customer details completely first...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else MessageBox.Show("enter document title and customer details completely first...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub DocAddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DocAddButton.Click DocDataGridView.Rows.Add(DocTitleTextBox.Text, DocScanTextBox.Text) DocTitleTextBox.Text = "" DocScanTextBox.Text = "" End Sub Private Sub DocRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DocRemoveButton.Click Try My.Computer.FileSystem.DeleteFile(DocDataGridView.CurrentRow.Cells(1).Value) DocDataGridView.Rows.Remove(DocDataGridView.CurrentRow) Catch ex As Exception MessageBox.Show("Could not delete the row for some reason...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) 39

End Try End Sub End Class

Login Table Source codes


Public Class Login Private Sub LoginButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoginButton.Click Dim loginTable As RoyalEstateDatabaseDataSet.LoginDataTable = New RoyalEstateDatabaseDataSet.LoginDataTable Dim loginAdapter As RoyalEstateDatabaseDataSetTableAdapters.LoginTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.LoginTableAdapter loginAdapter.Fill(loginTable) Dim pass As Boolean = False For Each x As DataRow In loginTable.Rows 'this code allow you to enter password which is set at the admin table. when u enter wrong password the hidden lebel show you enter wrong password. If UsernameTextBox.Text = x.Item(1) Then If PasswordTextBox.Text = x.Item(2) Then Main.Enabled = True pass = True Exit For End If End If Next If pass = True Then Me.Close() Else StatusLabel.Text = "Wrong username or password" End If End Sub Private Sub UsernameTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsernameTextBox.TextChanged StatusLabel.Text = "" End Sub Private Sub PasswordTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PasswordTextBox.TextChanged StatusLabel.Text = "" End Sub Private Sub Login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class

40

Main table Sources Codes


Public Class Main 'allow you the enter new landlord. Private Sub LandlordToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LandlordToolStripMenuItem.Click NewLandlord.ShowDialog() End Sub 'allow you to enter property detals. Private Sub PropertyToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PropertyToolStripMenuItem.Click Properties.ShowDialog() End Sub 'allows you to enter customer details. Private Sub CustomerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CustomerToolStripMenuItem.Click Customer.ShowDialog() End Sub 'deplays and allow you to choose either rent or sale and enter details. Private Sub SalesRentToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalesRentToolStripMenuItem.Click PropertyOps.ShowDialog() End Sub 'allows yout o enter rentpayment detail Private Sub RentPaymentToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentPaymentToolStripMenuItem.Click RentPayment.ShowDialog() End Sub Private Sub PropertyBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PropertyBindingNavigatorSaveItem.Click Me.Validate() Me.PropertyBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet._Property' table. You can move, or remove it, as needed. Me.PropertyTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet._Property) LocationComboBox.SelectedIndex = 0 TypeComboBox.SelectedIndex = 0 NumberComboBox.SelectedIndex = 0 End Sub 41

'The DataRepeater "repeats" a group of related controls by creating multiple instances in a scrolling view. This enables users to view several records at the same time Private Sub DataRepeater1_DrawItem(ByVal sender As System.Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) Handles DataRepeater1.DrawItem Dim picTable As RoyalEstateDatabaseDataSet.ImagesDataTable = New RoyalEstateDatabaseDataSet.ImagesDataTable Dim picAdapter As RoyalEstateDatabaseDataSetTableAdapters.ImagesTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.ImagesTableAdapter Dim lbl As Label lbl = CType(e.DataRepeaterItem.Controls(PropertyIDLabel1.Name), Label) CType(e.DataRepeaterItem.Controls(LinkLabel1.Name), LinkLabel).Tag = lbl.Text Try picAdapter.FillByPropertyID(picTable, lbl.Text) Catch ex As Exception End Try If picTable.Rows.Count > 0 Then CType(e.DataRepeaterItem.Controls(FloorPlanPictureBox.Name), PictureBox).ImageLocation = picTable.Rows(0).Item(2) End If End Sub ' the filter help filter only the data needed. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchButton.Click Dim filter As String = "" If RentRadioButton.Checked Then filter = "LetType = 'For Rent'" Else filter = "LetType = 'For Sale'" End If If LocationComboBox.Text <> "All" Then filter += " AND Location = '" & LocationComboBox.Text & "'" End If If TypeComboBox.Text <> "All" Then filter += " AND Type = '" & TypeComboBox.Text & "'" End If If NumberComboBox.Text <> "All" Then filter += " AND NumberOfRooms = '" & NumberComboBox.Text & "'" End If If CheckBox1.Checked Then filter += " AND RentedSold = 'Yes'" Else filter += " AND RentedSold = 'No'" End If PropertyBindingSource.Filter = filter End Sub 42

Private Sub ShowAllLinkLabel_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles ShowAllLinkLabel.LinkClicked PropertyBindingSource.Filter = "" End Sub Private Sub Main_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Login.ShowDialog() End Sub Private Sub AdministratorsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AdministratorsToolStripMenuItem.Click Admin.ShowDialog() End Sub Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Passage.propertyid = CType(DataRepeater1.CurrentItem.Controls(LinkLabel1.Name), LinkLabel).Tag MoreInfo.ShowDialog() End Sub Private Sub AmountLabel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AmountLabel1.Click End Sub End Class

More Info Source code Table


Public Class MoreInfo Dim imagecount As Integer = 0 Dim imageTable As RoyalEstateDatabaseDataSet.ImagesDataTable = New RoyalEstateDatabaseDataSet.ImagesDataTable Dim imageAdapter As RoyalEstateDatabaseDataSetTableAdapters.ImagesTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.ImagesTableAdapter Private Sub MoreInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet._Property' table. You can move, or remove it, as needed. imagecount = 0 Label2.Text = Passage.propertyid Me.PropertyTableAdapter.FillByPropertyID(Me.RoyalEstateDatabaseDataSet._Property, Label2.Text) Dim itemTable As RoyalEstateDatabaseDataSet.ItemsDataTable = New RoyalEstateDatabaseDataSet.ItemsDataTable Dim itemAdapter As RoyalEstateDatabaseDataSetTableAdapters.ItemsTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.ItemsTableAdapter imageAdapter.FillByPropertyID(imageTable, Passage.propertyid) PreviousButton.Enabled = False If imageTable.Rows.Count <= 0 Then 43

ImageCountLabel.Text = "No Images" Else PictureBox1.ImageLocation = imageTable.Rows(imagecount).Item(2) ImageCountLabel.Text = "1 of " & imageTable.Rows.Count ImageTitleLabel.Text = imageTable.Rows(imagecount).Item(1) End If If imagecount >= imageTable.Rows.Count - 1 Then NextButton.Enabled = False Else NextButton.Enabled = True End If 'Getting the items of the property itemAdapter.FillByPropertyID(itemTable, Passage.propertyid) FlowLayoutPanel1.Controls.Clear() For Each x As DataRow In itemTable.Rows Dim Lablex As New Label Lablex.ForeColor = Color.Black Lablex.Text = x.Item(1) & " (" & x.Item(2) & ")" FlowLayoutPanel1.Controls.Add(Lablex) Next End Sub Private Sub NextButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NextButton.Click imagecount = imagecount + 1 PictureBox1.ImageLocation = imageTable.Rows(imagecount).Item(2) ImageCountLabel.Text = imagecount + 1 & " of " & imageTable.Rows.Count ImageTitleLabel.Text = imageTable.Rows(imagecount).Item(1) If imagecount >= imageTable.Rows.Count - 1 Then NextButton.Enabled = False End If If imagecount > 0 Then PreviousButton.Enabled = True End If End Sub Private Sub PreviousButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PreviousButton.Click imagecount = imagecount - 1 PictureBox1.ImageLocation = imageTable.Rows(imagecount).Item(2) ImageCountLabel.Text = imagecount + 1 & " of " & imageTable.Rows.Count ImageTitleLabel.Text = imageTable.Rows(imagecount).Item(1) If imagecount < imageTable.Rows.Count - 1 Then NextButton.Enabled = True End If If imagecount = 0 Then PreviousButton.Enabled = False End If 44

End Sub Private Sub MoreInfo_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Dim landlordTable As RoyalEstateDatabaseDataSet.LandlordDataTable = New RoyalEstateDatabaseDataSet.LandlordDataTable Dim landlordAdapter As RoyalEstateDatabaseDataSetTableAdapters.LandlordTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.LandlordTableAdapter Try landlordAdapter.FillByLandlordID(landlordTable, LandlordIDLabel1.Text) LandLLabel.Text = landlordTable.Rows(0).Item(1) & " " & landlordTable.Rows(0).Item(2) & " " & landlordTable.Rows(0).Item(3) & " " & landlordTable.Rows(0).Item(4) Catch ex As Exception End Try End Sub End Class

New Landlord Source Codes


Public Class NewLandlord Private Sub LandlordBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LandlordBindingNavigatorSaveItem.Click Me.Validate() Me.LandlordBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub Private Sub NewLandlord_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Landlord' table. You can move, or remove it, as needed. Me.LandlordTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Landlord) NewButton.PerformClick() End Sub ' adding new items Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewButton.Click TitleComboBox.SelectedIndex = -1 NationalityComboBox.SelectedIndex = -1 BindingNavigatorAddNewItem.PerformClick() End Sub 'saving the items added Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click LandlordBindingNavigatorSaveItem.PerformClick() End Sub 'delating the items added Private Sub DeleteButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteButton.Click BindingNavigatorDeleteItem.PerformClick() 45

End Sub End Class

Property Source Codes


Public Class Properties Protected listxp As ListControl Private Sub PropertyBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PropertyBindingNavigatorSaveItem.Click Me.Validate() Me.PropertyBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub 'refreshed the table adaptor for the new property saved on the main form. Private Sub Properties_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Main.PropertyTableAdapter.Fill(Main.RoyalEstateDatabaseDataSet._Property) End Sub Private Sub Properties_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Documents' table. You can move, or remove it, as needed. Me.DocumentsTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Documents) 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet._Property' table. You can move, or remove it, as needed. Me.PropertyTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet._Property) Dim landlordTable As RoyalEstateDatabaseDataSet.LandlordDataTable = New RoyalEstateDatabaseDataSet.LandlordDataTable Dim landlordAdapter As RoyalEstateDatabaseDataSetTableAdapters.LandlordTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.LandlordTableAdapter landlordAdapter.Fill(landlordTable) Try LandlordComboBox.Items.Clear() Catch ex As Exception End Try ' inserting the new datas in tables Dim ArrayListx As New ArrayList For Each x As DataRow In landlordTable.Rows Dim landlordx As New Landlord(x.Item(2) & " " & x.Item(4), x.Item(0)) ArrayListx.Add(landlordx) Next LandlordComboBox.DataSource = ArrayListx LandlordComboBox.DisplayMember = "Name" LandlordComboBox.ValueMember = "Id" LandlordComboBox.SelectedValue = "Id" Try 46

BindingNavigatorAddNewItem.PerformClick() Catch ex As Exception MessageBox.Show("Please click the new property button", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try End Sub ' selecting landlords this does not allow null. Private Sub LandlordComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LandlordComboBox.SelectedIndexChanged If LandlordComboBox.SelectedIndex = -1 Then LandlordIDTextBox.Text = "" Else Try LandlordIDTextBox.Text = LandlordComboBox.SelectedValue Catch ex As Exception End Try End If End Sub 'getting pictures from the files Private Sub FloorPlanBrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FloorPlanBrowseButton.Click If AddressTextBox.Text = "" Then MessageBox.Show("Enter property address first", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Else DocOpenFileDialog.ShowDialog() Dim desPath As String = Application.StartupPath & "\pics\FloorPlan\" & AddressTextBox.Text & ".png" Dim sourcePath As String = DocOpenFileDialog.FileName My.Computer.FileSystem.CopyFile(sourcePath, desPath, True) FloorPlanPictureBox.ImageLocation = desPath FloorPlanTextBox.Text = desPath End If End Sub 'getting pictures from files Private Sub DocBrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DocBrowseButton.Click If DocTitleTextBox.Text = "" Then MessageBox.Show("Enter document title", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Else DocOpenFileDialog.ShowDialog() Dim desPath As String = Application.StartupPath & "\pics\PropertyDoc\" & AddressTextBox.Text & " " & DocTitleTextBox.Text & ".png" Dim sourcePath As String = DocOpenFileDialog.FileName My.Computer.FileSystem.CopyFile(sourcePath, desPath, True) DocScanTextBox.Text = desPath End If 47

End Sub 'lebeling and adding picture Private Sub DocAddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DocAddButton.Click If DocTitleTextBox.Text <> "" And DocScanTextBox.Text <> "" Then Try DocDataGridView.Rows.Add(DocTitleTextBox.Text, DocScanTextBox.Text) DocTitleTextBox.Text = "" DocScanTextBox.Text = "" Catch ex As Exception MessageBox.Show("error adding document...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else MessageBox.Show("Enter the document title and the scan path", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub 'removing picture file Private Sub DocRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DocRemoveButton.Click Try My.Computer.FileSystem.DeleteFile(DocDataGridView.CurrentRow.Cells(1).Value) DocDataGridView.Rows.Remove(DocDataGridView.CurrentRow) Catch ex As Exception MessageBox.Show("Could not delete the row for some reason...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub 'adding items Private Sub ItemAddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ItemAddButton.Click If ItemTextBox.Text <> "" And QtyComboBox.Text <> "" Then Try ItemDataGridView.Rows.Add(ItemTextBox.Text, QtyComboBox.Text) ItemTextBox.Text = "" QtyComboBox.SelectedIndex = -1 Catch ex As Exception MessageBox.Show("error adding item...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else MessageBox.Show("Enter the item and its quantity...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub 'removing items added 48

Private Sub ItemRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ItemRemoveButton.Click Try ItemDataGridView.Rows.Remove(ItemDataGridView.CurrentRow) Catch ex As Exception MessageBox.Show("Could not delete the row for some reason...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub SaveAllButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveAllButton.Click Try PropertyBindingNavigatorSaveItem.PerformClick() Dim propertyTable As RoyalEstateDatabaseDataSet.PropertyDataTable = New RoyalEstateDatabaseDataSet.PropertyDataTable Dim propertyAdapter As RoyalEstateDatabaseDataSetTableAdapters.PropertyTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.PropertyTableAdapter propertyAdapter.FillByAddress(propertyTable, AddressTextBox.Text) Dim propertyIndex As Integer = propertyTable.Rows(0).Item(0) 'Dim DocTable As RoyalEstateDatabaseDataSet.DocumentsDataTable = New RoyalEstateDatabaseDataSet.DocumentsDataTable Dim DocAdapter As RoyalEstateDatabaseDataSetTableAdapters.DocumentsTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.DocumentsTableAdapter Dim ItemAdapter As RoyalEstateDatabaseDataSetTableAdapters.ItemsTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.ItemsTableAdapter Dim ImageAdapter As RoyalEstateDatabaseDataSetTableAdapters.ImagesTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.ImagesTableAdapter For Each x As DataGridViewRow In DocDataGridView.Rows Try DocAdapter.Insert(x.Cells(0).Value, x.Cells(1).Value, propertyIndex) Catch ex As Exception MessageBox.Show("could not save property document " & x.Cells(0).Value & " .... " & ex.ToString, "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit For End Try Next For Each s As DataGridViewRow In ItemDataGridView.Rows Try ItemAdapter.Insert(s.Cells(0).Value, s.Cells(1).Value, propertyIndex) Catch ex As Exception MessageBox.Show("could not save property item " & s.Cells(0).Value & " .... " & ex.ToString, "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit For End Try Next For Each imagex As ListViewItem In ImageListView.Items Dim urlpath As String = Application.StartupPath & "\pics\PropertyImage\" & AddressTextBox.Text & " " & imagex.ImageKey & ".png" 49

Dim title As String = imagex.Tag.ToString Try ImageAdapter.Insert(title, urlpath, propertyIndex) Catch ex As Exception MessageBox.Show("could not save property image " & imagex.ImageKey & " .... " & ex.ToString, "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Next PropertyToolStripStatusLabel.Text = "Property details saved..." Catch ex As Exception PropertyToolStripStatusLabel.Text = "SAVE ABORTED " & ex.Message End Try End Sub 'clearing the whole table. Private Sub NewPropertyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewPropertyButton.Click Try BindingNavigatorAddNewItem.PerformClick() ImageListView.Items.Clear() DocDataGridView.Rows.Clear() ItemDataGridView.Rows.Clear() ImageUrlTextBox.Text = "" ImageTextBox.Text = "" ItemTextBox.Text = "" RentedSoldComboBox.SelectedIndex = -1 QtyComboBox.SelectedIndex = -1 DocTitleTextBox.Text = "" DocScanTextBox.Text = "" LandlordComboBox.SelectedIndex = -1 LetTypeComboBox.SelectedIndex = -1 NumberOfRoomsComboBox.SelectedIndex = -1 LocationComboBox.SelectedIndex = -1 TypeComboBox.SelectedIndex = -1 FloorPlanTextBox.Text = "" FloorPlanPictureBox.ImageLocation = Nothing PropertyToolStripStatusLabel.Text = "" Catch ex As Exception MessageBox.Show("Save current records first", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub ImageBrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImageBrowseButton.Click If AddressTextBox.Text <> "" And ImageTextBox.Text <> "" Then DocOpenFileDialog.ShowDialog() Dim desPath As String = Application.StartupPath & "\pics\PropertyImage\" & AddressTextBox.Text & " " & ImageTextBox.Text & ".png" Dim sourcePath As String = DocOpenFileDialog.FileName 50

Try My.Computer.FileSystem.CopyFile(sourcePath, desPath, True) ImageUrlTextBox.Text = desPath Catch ex As Exception End Try ImageListView.BeginUpdate() PropertyImageList.Images.Add(ImageTextBox.Text, Image.FromFile(desPath)) Dim li As New ListViewItem(AddressTextBox.Text & " " & ImageTextBox.Text, ImageTextBox.Text) li.Tag = ImageTextBox.Text ImageListView.Items.Add(li) ImageListView.EndUpdate() Else MessageBox.Show("enter the property address and image title", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub ImageRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImageRemoveButton.Click ImageListView.BeginUpdate() For Each i As ListViewItem In ImageListView.SelectedItems Dim desPath As String = Application.StartupPath & "\pics\PropertyImage\" & AddressTextBox.Text & " " & i.ImageKey & ".png" PropertyImageList.Images.RemoveByKey(i.ImageKey) i.Remove() 'My.Computer.FileSystem.DeleteFile(desPath,) Next ImageListView.EndUpdate() End Sub Private Sub AmountTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AmountTextBox.TextChanged End Sub Private Sub AmountLabel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub End Class Public Class Landlord Private mName As String Private mId As Integer Public Sub New(ByVal LandlordName As String, ByVal LandlordId As Integer) Me.mName = LandlordName Me.mId = LandlordId End Sub Public ReadOnly Property Name() As String Get Return mName End Get End Property 51

Public ReadOnly Property Id() As String Get Return mId End Get End Property End Class

Property OP Source Codes


Public Class PropertyOps Dim ArrayListy As New ArrayList Private Sub PropertyOps_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Rent' table. You can move, or remove it, as needed. Me.RentTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Rent) 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Customer' table. You can move, or remove it, as needed. Me.CustomerTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Customer) 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.Sold' table. You can move, or remove it, as needed. Me.SoldTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.Sold) 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet._Property' table. You can move, or remove it, as needed. Me.PropertyTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet._Property) Try BindingNavigatorAddNewItem.PerformClick() BindingNavigatorAddNewItem1.PerformClick() Catch ex As Exception End Try PropertyComboBox.SelectedIndex = -1 Dim customerTable As RoyalEstateDatabaseDataSet.CustomerDataTable = New RoyalEstateDatabaseDataSet.CustomerDataTable Dim customerAdapter As RoyalEstateDatabaseDataSetTableAdapters.CustomerTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.CustomerTableAdapter customerAdapter.Fill(customerTable) Try SalesCustomerComboBox.Items.Clear() RentCustomerComboBox.Items.Clear() Catch ex As Exception End Try 'putting items in table Dim ArrayListx As New ArrayList For Each x As DataRow In customerTable.Rows Dim customerx As New Customers(x.Item(2) & " " & x.Item(4), x.Item(0)) ArrayListx.Add(customerx) Next SalesCustomerComboBox.DataSource = ArrayListx 52

SalesCustomerComboBox.DisplayMember = "Name" SalesCustomerComboBox.ValueMember = "Id" SalesCustomerComboBox.SelectedValue = "Id" RentCustomerComboBox.DataSource = ArrayListx RentCustomerComboBox.DisplayMember = "Name" RentCustomerComboBox.ValueMember = "Id" RentCustomerComboBox.SelectedValue = "Id" End Sub ' selecting sale or rent Private Sub SaleRadioButton_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaleRadioButton.CheckedChanged If SaleRadioButton.Checked = True Then SalesGroupBox.Enabled = True RentGroupBox.Enabled = False Else SalesGroupBox.Enabled = False RentGroupBox.Enabled = True End If End Sub Private Sub PropertyComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PropertyComboBox.SelectedIndexChanged If PropertyComboBox.SelectedIndex = -1 Then PropertyIDTextBox.Text = "" PropertyIDTextBox1.Text = "" Else PropertyIDTextBox.Text = PropertyComboBox.SelectedValue PropertyIDTextBox1.Text = PropertyComboBox.SelectedValue End If End Sub Private Sub SalesCustomerComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalesCustomerComboBox.SelectedIndexChanged If SalesCustomerComboBox.SelectedIndex = -1 Then CustomerIDTextBox.Text = "" Else Try CustomerIDTextBox.Text = SalesCustomerComboBox.SelectedValue Catch ex As Exception End Try End If End Sub ' entering sale and doc tiltle Private Sub SalesBrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalesBrowseButton.Click If SalesDocTitleTextBox.Text = "" Then MessageBox.Show("Enter document title", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Else DocOpenFileDialog.ShowDialog() 53

Try SoldBindingNavigatorSaveItem.PerformClick() Dim desPath As String = Application.StartupPath & "\pics\SaleDoc\" & PropertyComboBox.Text & SalesDocTitleTextBox.Text & SoldIDTextBox.Text & ".png" Dim sourcePath As String = DocOpenFileDialog.FileName My.Computer.FileSystem.CopyFile(sourcePath, desPath, True) SalesDocScanTextBox.Text = desPath Catch ex As Exception MessageBox.Show("enter document title and sale details completely first...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End Sub 'adding the entered sale and doc tiltle Private Sub SalesAddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalesAddButton.Click If SalesDocTitleTextBox.Text <> "" And SalesDocScanTextBox.Text <> "" Then Try SalesDocDataGridView.Rows.Add(SalesDocTitleTextBox.Text, SalesDocScanTextBox.Text) SalesDocTitleTextBox.Text = "" SalesDocScanTextBox.Text = "" Catch ex As Exception MessageBox.Show("error adding document...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else MessageBox.Show("Enter the document title and the scan path", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub 'removing the added doc. Private Sub SalesDocRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalesDocRemoveButton.Click Try My.Computer.FileSystem.DeleteFile(SalesDocDataGridView.CurrentRow.Cells(1).Value) SalesDocDataGridView.Rows.Remove(SalesDocDataGridView.CurrentRow) Catch ex As Exception MessageBox.Show("Could not delete the row for some reason...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub SoldBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SoldBindingNavigatorSaveItem.Click Me.Validate() Me.SoldBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub 54

Private Sub SalesSaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalesSaveButton.Click Dim docAdapter As RoyalEstateDatabaseDataSetTableAdapters.SoldDocumentTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.SoldDocumentTableAdapter Dim propertyAdapter As RoyalEstateDatabaseDataSetTableAdapters.PropertyTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.PropertyTableAdapter Try SoldBindingNavigatorSaveItem.PerformClick() For Each xRow As DataGridViewRow In SalesDocDataGridView.Rows Try docAdapter.Insert(xRow.Cells(0).Value, xRow.Cells(1).Value, SoldIDTextBox.Text) propertyAdapter.UpdateQueryRentedSold("Yes", PropertyIDTextBox.Text) Catch ex As Exception MessageBox.Show("could not save document " & xRow.Cells(0).Value & " " & ex.ToString, "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Next PropertyOpsToolStripStatusLabel.Text = "Sold property saved..." Catch ex As Exception End Try End Sub Private Sub RentCustomerAddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentCustomerAddButton.Click If RentCustomerComboBox.Text <> "" Then Dim customerx As New Customers(RentCustomerComboBox.Text, RentCustomerComboBox.SelectedValue) RentCustomersListBox.DataSource = Nothing ArrayListy.Add(customerx) RentCustomersListBox.DataSource = ArrayListy RentCustomersListBox.DisplayMember = "Name" RentCustomersListBox.ValueMember = "Id" RentCustomersListBox.SelectedValue = "Id" End If End Sub Private Sub RentCustomerRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentCustomerRemoveButton.Click If RentCustomersListBox.SelectedIndex = -1 Then MessageBox.Show("there is no selected customer to remove...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Else ArrayListy.RemoveAt(RentCustomersListBox.SelectedIndex) RentCustomersListBox.DataSource = Nothing RentCustomersListBox.Items.Remove(RentCustomersListBox.SelectedItem) RentCustomersListBox.DataSource = ArrayListy RentCustomersListBox.DisplayMember = "Name" RentCustomersListBox.ValueMember = "Id" 55

RentCustomersListBox.SelectedValue = "Id" End If End Sub ' setting the duration date Private Sub DurationComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DurationComboBox.SelectedIndexChanged If DurationComboBox.Text = "1 Month" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 1, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "2 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 2, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "3 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 3, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "4 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 4, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "5 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 5, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "6 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 6, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "7 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 7, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "8 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 8, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "9 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 9, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "10 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 10, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "11 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 11, StartDateDateTimePicker.Value) ElseIf DurationComboBox.Text = "12 Months" Then EndDateDateTimePicker.Value = DateAdd(DateInterval.Month, 12, StartDateDateTimePicker.Value) End If End Sub Private Sub RentBrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentBrowseButton.Click If RentDocTitleTextBox.Text = "" Then 56

MessageBox.Show("Enter document title", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) Else DocOpenFileDialog.ShowDialog() Try RentBindingNavigatorSaveButton.PerformClick() Dim desPath As String = Application.StartupPath & "\pics\RentDoc\" & PropertyComboBox.Text & RentDocTitleTextBox.Text & RentIDTextBox.Text & ".png" Dim sourcePath As String = DocOpenFileDialog.FileName My.Computer.FileSystem.CopyFile(sourcePath, desPath, True) RentDocScanTextBox.Text = desPath Catch ex As Exception MessageBox.Show("enter document title and sale details completely first...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End Sub Private Sub RentBindingNavigatorSaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentBindingNavigatorSaveButton.Click Me.Validate() Me.RentBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub Private Sub RentAddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentAddButton.Click If RentDocTitleTextBox.Text <> "" And RentDocScanTextBox.Text <> "" Then Try RentDocDataGridView.Rows.Add(RentDocTitleTextBox.Text, RentDocScanTextBox.Text) RentDocTitleTextBox.Text = "" RentDocScanTextBox.Text = "" Catch ex As Exception MessageBox.Show("error adding document...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else MessageBox.Show("Enter the document title and the scan path", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub RentDocRemoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentDocRemoveButton.Click Try My.Computer.FileSystem.DeleteFile(RentDocDataGridView.CurrentRow.Cells(1).Value) RentDocDataGridView.Rows.Remove(RentDocDataGridView.CurrentRow) Catch ex As Exception MessageBox.Show("Could not delete the row for some reason...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) 57

End Try End Sub Private Sub RentSaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentSaveButton.Click Dim docAdapter As RoyalEstateDatabaseDataSetTableAdapters.RentDocumentTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.RentDocumentTableAdapter Dim customersRentingAdapter As RoyalEstateDatabaseDataSetTableAdapters.CustomersRentingTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.CustomersRentingTableAdapter Dim propertyAdapter As RoyalEstateDatabaseDataSetTableAdapters.PropertyTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.PropertyTableAdapter Try RentBindingNavigatorSaveButton.PerformClick() For Each xRow As DataGridViewRow In RentDocDataGridView.Rows Try docAdapter.Insert(xRow.Cells(0).Value, xRow.Cells(1).Value, RentIDTextBox.Text) propertyAdapter.UpdateQueryRentedSold("Yes", PropertyIDTextBox.Text) Catch ex As Exception MessageBox.Show("could not save document " & xRow.Cells(0).Value & " " & ex.ToString, "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Next For t As Integer = 0 To RentCustomersListBox.Items.Count - 1 RentCustomersListBox.SelectedIndex = t customersRentingAdapter.Insert(RentCustomersListBox.SelectedValue, RentIDTextBox.Text) Next PropertyOpsToolStripStatusLabel.Text = "Rented property saved..." Catch ex As Exception PropertyOpsToolStripStatusLabel.Text = ex.Message End Try End Sub 'clearing forms fro new user. Private Sub OpsButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpsButton.Click Try ArrayListy.Clear() RentCustomersListBox.DataSource = Nothing RentCustomersListBox.DataSource = ArrayListy RentDocTitleTextBox.Text = "" RentDocScanTextBox.Text = "" RentDocDataGridView.Rows.Clear() DurationComboBox.SelectedIndex = -1 BindingNavigatorAddNewItem1.PerformClick() PropertyOpsToolStripStatusLabel.Text = "" Catch ex As Exception End Try 58

Try SalesCustomerComboBox.SelectedIndex = -1 SalesDocTitleTextBox.Text = "" SalesDocScanTextBox.Text = "" SalesDocDataGridView.Rows.Clear() BindingNavigatorAddNewItem.PerformClick() PropertyOpsToolStripStatusLabel.Text = "" Catch ex As Exception End Try PropertyComboBox.SelectedIndex = -1 End Sub End Class Public Class Customers Private mName As String Private mId As Integer Public Sub New(ByVal CustomerName As String, ByVal CustomerId As Integer) Me.mName = CustomerName Me.mId = CustomerId End Sub Public ReadOnly Property Name() As String Get Return mName End Get End Property Public ReadOnly Property Id() As String Get Return mId End Get End Property End Class

Rent Payment Source Codes


Public Class RentPayment Private Sub RentPaymentBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentPaymentBindingNavigatorSaveItem.Click Me.Validate() Me.RentPaymentBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub Private Sub RentPayment_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet._Property' table. You can move, or remove it, as needed. 59

Me.PropertyTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet._Property) 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.RentPayment' table. You can move, or remove it, as needed. Me.RentPaymentTableAdapter.Fill(Me.RoyalEstateDatabaseDataSet.RentPayment) Try BindingNavigatorAddNewItem.PerformClick() Catch ex As Exception End Try End Sub Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewButton.Click Try BindingNavigatorAddNewItem.PerformClick() PropertyComboBox.SelectedIndex = -1 ForTheMonthOfComboBox.SelectedIndex = -1 OverLabel.Text = "0 days" TenantsListBox.Items.Clear() ToolStripStatusLabel1.Text = "" Catch ex As Exception ToolStripStatusLabel1.Text = ex.Message End Try End Sub 'saving added items Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click Try RentPaymentBindingNavigatorSaveItem.PerformClick() ToolStripStatusLabel1.Text = "Rent payment saved..." Catch ex As Exception ToolStripStatusLabel1.Text = ex.Message End Try End Sub ' allows you to select rented property Private Sub PropertyComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PropertyComboBox.SelectedIndexChanged Dim rentTable As RoyalEstateDatabaseDataSet.RentDataTable = New RoyalEstateDatabaseDataSet.RentDataTable Dim rentAdapter As RoyalEstateDatabaseDataSetTableAdapters.RentTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.RentTableAdapter rentAdapter.FillByPropertyID(rentTable, PropertyComboBox.SelectedValue) If rentTable.Rows.Count <= 0 And PropertyComboBox.SelectedIndex <> -1 Then MessageBox.Show("This property is not rented or not for rent at all", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Information) Else RentIDTextBox.Text = rentTable.Rows(0).Item(0) AmountTextBox.Text = rentTable.Rows(0).Item(7)

60

Dim overduedays As Integer = DateDiff(DateInterval.Day, rentTable.Rows(0).Item(4), Now.Date) OverLabel.Text = overduedays & " days" Dim customersrentingTable As RoyalEstateDatabaseDataSet.CustomerDataTable = New RoyalEstateDatabaseDataSet.CustomerDataTable Dim customersrentingAdapter As RoyalEstateDatabaseDataSetTableAdapters.CustomerTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.CustomerTableAdapter customersrentingAdapter.FillByRentID(customersrentingTable, RentIDTextBox.Text) For Each x As DataRow In customersrentingTable.Rows TenantsListBox.Items.Add(x.Item(2) & " " & x.Item(4)) Next End If End Sub ' display moreinfo of the payment and does not all null Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked If RentIDTextBox.Text = "" Then MessageBox.Show("Please select a rented property...", "Royal Estate", MessageBoxButtons.OK, MessageBoxIcon.Information) Else RentPaymentHistory.ShowDialog() End If End Sub End Class

Rent Payment History Source Codes


Public Class RentPaymentHistory Private Sub RentPaymentBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RentPaymentBindingNavigatorSaveItem.Click Me.Validate() Me.RentPaymentBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.RoyalEstateDatabaseDataSet) End Sub ' display the rentpropert info. Private Sub RentPaymentHistory_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'RoyalEstateDatabaseDataSet.RentPayment' table. You can move, or remove it, as needed. Me.RentPaymentTableAdapter.FillByRentID(Me.RoyalEstateDatabaseDataSet.RentPayment, RentPayment.RentIDTextBox.Text) Dim rentTable As RoyalEstateDatabaseDataSet.RentDataTable = New RoyalEstateDatabaseDataSet.RentDataTable Dim rentAdapter As RoyalEstateDatabaseDataSetTableAdapters.RentTableAdapter = New RoyalEstateDatabaseDataSetTableAdapters.RentTableAdapter 61

rentAdapter.FillByRentID(rentTable, RentPayment.RentIDTextBox.Text) PropertyLabel.Text = RentPayment.PropertyComboBox.Text StartDateLabel.Text = rentTable.Rows(0).Item(1) DurationLabel.Text = rentTable.Rows(0).Item(2) DepositLabel.Text = rentTable.Rows(0).Item(5) RentAmountLabel.Text = rentTable.Rows(0).Item(7) End Sub End Class

3.6 GANTT CHART E-PROPERTY MANAGEMENT SYSTEM GANTT CHART

62

MAINTENANCE AND SUPPORT


4.1 SYSTEM MAINTENANCE
System maintenance is very important to this software in order to correct faults, to improve performance, or to adapt the system to a new environment. Database maintenance includes will also include checking for signs of corruption in the database, looking for problem areas, rebuilding indexes, removing duplicate records, and checking for any abnormalities in the database which might signal a problem. The goal is to keep the database operating smoothly for users, so that ideally they never need to think about maintenance issues. A database which is not maintained can become sluggish, and people may start to experience problems when trying to access records. So I intend to avoid this problem. One important aspect of database maintenance will be simply backing up the database so that if anything happens, there will be another copy available. I still a have to improve the system functionality that will set the system to perform automatic back-up, maybe sending a backup to another location every day, every week, or within any other set period of time.

4.2

DETAILED REFERENCE TO DOCUMENTATION


Comments litter the source code read them if anything seems unobvious. Data dictionary is in Analysis, Data dictionary. Table descriptions are in Analysis, Entities, Attributes, Entity relationship diagrams. Variable descriptions appear in Implementation and Testing, Details of variables. Details of forms can be found in Design, Design of user interface. Details of algorithms can be found in Design, Algorithms and Implementation and Testing, Detailed algorithms. For details of SQL statements, look in Implementation and Testing, Details of SQL statements.

63

EVALUATION
5.1

MY EVALUATION

The end product that I have produced is very useable and stable. All the objective of this application has been achieved. The system provides the user with less complicated interface to work with; the query aspect is embedded in the software so the users do not need to write any code. The user deals with the buttons and other GUI tools only. The program accepts entry of new client, landlords detail, new property details, tenant details etc. Also information about customer, details and property details can be stored, edit and delete with ease. Easy to use applications have been achieved. Another important achievement is the security issue, this system provide maximum security for the companys data, login are been given to authorized employee and management staff. With this login restrictions authorized access to the system is not possible. Also the system provides back-up for datas in case of any accident. Finally, am satisfied with the system performance, it has been able to retrieve data in less than a minute. I strongly believe this application will help the company achieved it daily business task. Though the system still require some expanded functionality of that is required of todays software, this will be achieved in due time.

5.2 PERFORMANCE CHECKING


The program takes seconds to load from disk to memory then then further display the login dialog box on the screen. When the password is entered it takes few more seconds for the program to activate the main menu of the program. Navigating the database is especially very quick affair. Lists are displayed within a second. Moving from one client or houses details to the next is very quick Searching the database is also very quick due to indexing of the tables Deleting records is very easy and is done within seconds. Entering a new client, house etc. typically takes under minutes, based on the typing speed of the user.

5.2 RECOMMENDATIONS
Drawing from the functionalities of the system, I can see beyond reasonable doubt that the system is successful and I can recommend it to small estate management on the Cyprus Island.

64

USER MANUAL
6.1 INSTALLATION INSTRUCTIONS

To install the software an installation file is needed. Installation file can be copy using USB flash Installation file can be copy using CD

To install program, insert USB or CD to the USB port or CD-Drive. Run the installation file and follow the instruction careful. Click on install button and follow the instruction careful. When installation is complete, go to Programs and click on E-Property System. Login property will appear, type the authorized password and user name to proceed

If login detail is correct main menu will appear else error provider will tell you that you entered incorrect Username or password.

65

If correct login is entered the main menu will appear depending on users privilege, software is ready for use.

HOW SYSTEM WORKS


E-Property management system is a MENU-Driven Application. It has database that will enable the user store records e.g. Landlord information, Property information such as picture of the property and floor plan of the property. The system also stored other details like customers and payment details. Users can perform functions like add, delete, save, search of property.

66

FEATURES AND FUNCTIONS


On the main menu there are a couple of buttons to help user navigate the software. On the menu bar, there is new, edit and operation option. And there is a search option: this enable you to select the desire search that you want. On the new; which drops down on click show you three options, Landlord, Property and Customer. Landlord menu help you fill in the details of the landlords. The Property Menu help you fill the property details, including pictures. The customer menu helps you fill the Customer details. On the edit menu, by clicking it you will see the administrator menu, which help you create the admin security password. On the operation option, there the sale/rent option and rent payment. Sale/rent option allows you to register the property which is rented or the house which is sold.
While the rent payment allow you to see the records history of the tenant which have paid their rent.

67

Overview
How to use the forms Landlord Form

After successful login if user clicks on the new on the tool bar, a drop menu will appear the user will click form, the form will appear. To add new landlord details, Click on the new button and fill in the required details into the right text box. Under menu you can click delete to delete or save button save to database. PROPERTY FORM

68

User can add the required details of the property form when you click the form on the menu bar. After all the required details have been added user can click save all button to save the records on database. CUSTOMER FORM

Also the user can locate the customer form on the menu bar, after which the required details will be added. There is also option provided to add and remove scan document. After which user can click on saved document and also click on new customer button to add new customer details. ADMIN FORM

The admin form helps secure unauthorized users. Users can change the security password and also add more. When you click the edit on the menu bar, then you see the admin form. Fill in the required details and save. User can add new and also remove the previous once.

69

SAVE/RENT FORM

On the form, there are two options, when a user wants to use the sale form, on top of the form there is radio button for sale and rent, when you click any of the button the other form becomes unusable. The user can use the required form which he or she selected. When the required details have been filled then the user can click the save sale button to save or save rent button. After which if the user wants to add new operation then the user can click on the new operation button on the bottom of the form. RENT PAYMENT FORM

The form is located on the menu bar under the operation option, when user clicks on it. The form will open; user can add tenant details and the money which the tenant pays. Then click the save button to save the records onto the database and user can click on the new rent button for a new tenant detail. At the right side of the form under the month, there is a payment history link when user clicks on it take you to another form which shows you the payment history of the tenants. 70

REFERENCE
Visual Basic 2008, n.d retrieved from http://www.microsoft.com/vstudio on 3rd march 2011. SQL Server 2008, n.d retrieved from http://www.ehow.com/list_5993393_advantages-sql-server2008.html#ixzz1FYOHZoHX on 3rd march 2011 User Interface Design, 2011 retrieved from http://www.usernomics.com/user-interface-design.html on the 25th April 2011.DevShed Practices Tutorials n.d. By Deepa L, (c) Melonfire retrieved from http://www.devshed.com/c/a/Practices/Writing-A-User-Manual-part-2/ on 16th May 2011.

71