FLIGHT RESERVATION USING RECOMMENDATION SYSTEM BY PRASAD KEMBURU B.TECH., JAWAHARLAL NEHRU TECHNOLOGICAL UNIVERSITY, 2003 HYDERABAD, INDIA A REPORT Submitted in partial fulfillment of the requirements for the degree MASTER OF SCIENCE Department of Computing and Information Sciences College of Engineering KANSAS STATE UNIVERSITY Manhattan, Kansas 2007 Approved by: Major Professor Dr. Daniel Andresen ABSTRACT With the advancement in technology in the filed of e-commerce, the problem with information overload has been at its peak. Thus there should be some cognitive solution to the problem at hand. The first and foremost solution to this problem would be a ‘recommender system’, which is information filtering technique aimed at presenting the user with the most viable options based on certain reference characteristics. These characteristics are learnt from either explicit or implicit feedback provided by the user. But, past experiences show that that only a few numbers of users provide explicit feedback. The current ‘Flight Reservation using recommendation system’ uses implicit feedback to overcome the problem. Flight reservation systems have been implemented for years, basically from manual to computerized reservation system. The demand for fast and secure online Flight reservation systems has been increasing day by day. The effective use of the latest technology is the backbone for the design of a good system. The main objective of the project is to provide the user with desired selection options, real-time information and recommend the user of an itinerary that best fits his preferences, based on his previous purchases. The preferences are stored as a case base for future personalized recommendations. TABLE OF CONTENTS LIST OF FIGURES LIST OF DATABASE TABLES ACKNOWLWDGEMENTS 1. INTRODUCTION 1.1 FLIGHT RESERVATION CLIENT 1.2 PROBLEMS 1.3 OBJECTIVE 1.4 INTENDED AUDIENCE 1.5 OVERALL STRUCTURE 2. RELATED WORK 2.1. OTHER APPROACHES 2.2 COMPARISON WITH OTHER EXISTING METHODS 3. IMPLEMENTATION 3.1 SYSTEM ARCHITECTURE 3.2 TECNOLOGIES USED 3.3 DATABASE SCHEMA 3.4 MODULES 3.5 FLOW CONTROL 3.5.1 USER FLOW CONTROL 3.6 DESIGN 3.7 SCREEN SHOTS 4. TESTING 4.1 ANTS LOAD 4.2 ANAYLSIS 4.2.1 RESULTS 4.5 HARNESSIT – UNIT TESTING 4.5.1 CORRECTNESS 4.6 PROBLEMS FACED 4.7 LESSONS LEARNT 5. FUTURE WORK 5.1 EXTENSIONS 6. CONCLUSION REFERENCES AND/OR BIBLIOGRAPHY APPENDIX A ACKNOWLEDGEMENTS I would like to thank my major professor, Dr. Daniel Andresen, for his valuable guidance and encouragement throughout this project. I would also like to thank Dr. Scott Deloach and Dr. Neilsen for serving on my committee and for their valuable suggestions. I would like to give my word of thanks to Mrs. Doina for her generous support and invaluable guidance with my project. Finally, I would like to thank my family for their love and support. I’m grateful to them for the confidence they had in me that I would prosper in my education in the US. 1. INTRODUCTION The problem of information overload occurs when the user is provided with too many options to choose from, most of which may not be what the user is looking for. Hence an effective system would capture the user preferences from his previous purchase history and use the same in recommending one on his next visit. The user preferences are stored every time he makes a purchase. Explicit feedback from the user could be one way of collecting these preferences. But, explicit feedback often times may not be as effective, as it may result in boring the user and hence increasing the user’s frustration level. But one way of working around this problem would be to collect implicit feedback from the user by mining for information from the data stored in the user profile. The aim of this project is to use the .net framework in effectively creating an online flight reservation system that provides the user with a friendly interface and is fast and secure. The key aspect of the system being the ability to recommend the user, the itineraries that best fit his selection, based on his purchase history. The system takes in the user input and generates a list of itineraries that the user is free to select from depending on his personal preference. The input essentially contains the source, destination, and date of departure of journey. The inputs required are strongly imposed by validating the required fields, which ensures the user selections are correct and prompt. A list of results is then displayed dynamically by searching the database for the entries that meet the input criterion. The system is developed using ASP.NET with VB.NET and SQL SERVER 2000. 1.1 THE FLIGHT RESERVATION CLIENT The Flight reservation client (FRC) is a recommender system that searches for multiple airlines concurrently for flights on behalf of the user. It has a good web interface the enables the user to search for flights. The FRC takes in the user input and generates a set of itineraries that meet the input criterion. The result set usually consists of a significant amount of flights. The user might get overwhelmed by the large number of choices. Hence a recommender system is incorporated the sorts out the results set based on the user’s purchase history. To make accurate recommendations, the FRC should be able to learn the user preferences. So, the system stores information about the user preferences, every time a purchases is made. It uses the stored preferences as the sort criterion in the recommendation process. The FRC uses the feature weighting technique. 1.2 FEATURES OF THE SYSTEM The system is developed using ASP.NET using VB.net and SQL Server 2000 as back end. The FRC makes personal recommendations to users based on their purchase history. The key features of the FRC include: a) It makes personalized recommendation to each user b) It collects implicit feedback from the user as opposed to explicit feedback which is associated with a high cost of cognitive load placed on the user c) Provides the user with the ability to sort the results based on his temporary preferences. 1.3 INTENDED AUDIENCE The FRC system aims at reducing the cognitive load on the user by making recommendations based on implicit feedback. The recommendation process is not simply specific to the flight reservation domain. It could be used in any domain that involves making recommendations to users based on implicit feedback. 1.4 OVERALL STRUCTURE 1. The rest of the paper deals with the other approaches for developing this project. 2. The implementation section describes the system architecture, the database schema, the technologies used, flow control, Design of the project described using the UML diagrams, and the screen shots. 3. The Testing section describes the testing tools used to test the performance of the application and a detailed review of the results. 4. The Future work section discusses the advantages and shortcomings of the current recommendation strategy. It also some further techniques that could be investigated. 5. Finally, the Conclusion section concludes the report. 2. RELATED WORK 2.1. OTHER APPROACHES 2.2 COMPARISON WITH OTHER EXISTING METHODS 3. IMPLEMENTATION 3.1 SYSTEM ARCHITECTURE A pictorial description of the system architecture for the Flight reservation system is shown below. This has been designed using Microsoft Visio 2007. Figure 1 – SYSTEM ARCHITECTURE SYSTEM ARCHITECTURE USER Front end ASP.NET, HTML and VB.NET Middleware ASP.NET Framework, IIS SERVER SQL SERVER 2000 DATABASE The architecture of the entire system is shown in the figure 1. This project was developed using ASP.NET and VB.net. The user starts at the Search page. He could do the search for the Flights, with or without logging in. ASP.net and VB.net have been used for the creation of the Forms and the implementation respectively, while SQL Server 2000 was used as the back end. The control flow between the pages is described in the subsequent paragraphs. The user starts at the Search page. He could login straight away or perform a search, select an itinerary, confirm it and then login. Let’s look at the Flow control when the user opts to search first. The user starts with selecting the criterion for search. 1. One-way or Roundtrip by selecting the respective radio button. 2. The Source and the destination for the journey are then selected from the drop-down lists next to from and to respectively. Requirement validation has been implemented to make sure that both the entries are selected and are not the same. 3. Using the calendar control, the departure date and return date are selected. For One-way, only the departure date is selected. Again, validation has been done for the correct selection of dates in calendar control. The validation is done so that, the user doesn’t select a date that is not valid, for example a date that is before the current date. In case of Roundtrip, validation has been done so that the return date is always later then the current date. 4. The user could select the optional preferences such as the number of adult tickets, number of child tickets and the class of ticket, namely economy or business. 5. Once the required fields are selected, the user clicks the Search button. The Search results are fetched, the user is re-directed to the Results page. 6. In the Results page, the user is provided with a list of itineraries that meet the selected criterion. The user could take a look at the detailed itinerary by clicking on View Details, Which opens a new window with the complete itinerary. Clicking on the Select button redirects the user to the Confirmation page. 7. Once the user clicks the Confirm button, he is taken to the login page, where he could login and confirm the itinerary. New users could register through the Signup page. 8. After the user logs in and confirms his itinerary, he is redirected to the home (Search) page. 3.2 TECNOLOGIES USED Microsoft Visual Studio.NET The Visual Studio.NET framework includes a unified set of objects available on server and client platforms. It is the next generation of Microsoft's Visual Studio platform. Visual Studio.NET provides developers with a full-service Integrated Development Environment for building ASP.NET Web applications, XML Web Services, desktop applications, mobile applications for the .NET framework. It supports multiple languages- Visual C#.NET, VB.NET, Visual C++.NET and Visual J#.NET and provides transparent development and debugging facilities across these languages in a multilanguage solution. ASP.NET ASP.NET is a set of web development technologies marketed by Microsoft. Programmers can use this set of technologies to build web applications, Desktop Applications and XML web services. Its main features are described in the following paragraph. It builds the real world applications in an easy manner. It gives a lot of flexibility to choose the language you want to program in. It supports more than 25 .Net languages. ASP.NET rich output caching can increase the performance to a great extent. If caching is enabled, the page is executed once and the results of the web page are saved. This makes the results easily available to the next user who requests this page. ASP.NET makes it easy to call XML Web Services from the application and this allows applications to communicate the data over the Internet regardless of the programming language and OS. SQL Server 2000 Microsoft SQL Server is a relational database management system produced by Microsoft. It supports a superset of Structured Query Language SQL, the most common database language. It is commonly used by businesses for small to medium sized databases, and in the past 5 years large enterprise databases and competes with other relational database products for this market segment. [1] JavaScript JavaScript developed by Netscape is used to create dynamic web pages. It is widely used. JavaScript can put dynamic text into a HTML page, react to events, read and write HTML elements. It could be used to validate data. JavaScript works with HTML in the following manner. <html> <head> <title>JavaScript Page</title> <script LANGUAGE=“JavaScript”> <! -- actual JavaScript follows below alert (“Welcome to the Test Site!”); // ending the script --> </script> </head> <body> Content of the Page </body> </html> I have used JavaScript confirmation alerts at all the required locations. Microsoft Visio: Microsoft Visio is diagramming software for Microsoft Windows. It uses vector graphics to create diagrams. Microsoft Office Visio 2007 makes it easy for IT and business professionals to visualize, explore, and communicate complex information. Visual Paradigm 6.0 for UML: Visual Paradigm for UML is a UML CASE Tool supporting latest version of Unified Modeling Language (UML) and Business Process Modeling Notation (BPMN) from Object Management Group (OMG). In addition to the UML modeling support, it provides business process modeling, object-relational mapping generator for Java, .NET and PHP. 3.3 DATABASE SCHEMA There are 12 database tables used in the design of the FRC. Figure 1: tblUserType The tblUserType table has 2 entries to store the details about the user. The UserTypeId is a unique id which identifies the type of the user, to determine if the user is an admin (administrator) or a regular user. Figure 2: tblUser The tblUser stores the information about the Users that are registered. Every time a new User is created, the information is updated into this table. The names of the Columns are self-explanatory. The UsertypeId determines if the user is administrator or a regular user. The UserId is a unique identifier assigned to each user to distinguish him from other users registered. Figure 3: tblAirways The tblAirways stored the information about the airways in our current FRC. Airway_cd stored the airline code and AirWayName stored the name of the provider. Figure 4: tblAirport tblAirport had 3 fields that store information about all the airports, that include the airport code, airport name and the city of the airport. The Unique identifier Airport_Cd the syste distinguish between the respective airports. Figure 5: tblFlightCodes The FRC has multiple flights with the same Flight number, but at the different times of the day. Hence flights are distinguished using the unique identifier Code_Id. The table tblFlightCodes stores the flight number, the source and destination of the flight, the day of the week on which the flight runs between the respective airports and the departure time. Figure 6: tblduration This table has been used to generate the tblFlightDetails along with the above mentioned tables. It has the source, destination, airway and the time it takes to travel between those two airports for the respective airways. Figure 7: tblitinerary The table tblitinerary keeps a record of all the purchases made in the FRC. It stores the id of the user who made the purchase, the purchase date and the itinerary selected. This table is joined with the tblFlightDetails table, while displaying the purchase history of the user and is updated every time a purchase is made. Figure 8: tblFlightDetails This table is the one that holds all the pre-determined itineraries in the FRC. It stores all the information necessary for each and every itinerary. Figure 9: tblTempPrefData This table is similar to the tblItinerary, except for it stores the data directly for use in the tblPreferences. It is used for analyzing the correctness of the selections made and the preferences stored. Figure 10: tblPreferences Table tblPreferences is the key table in the entire FRC that stores the information used in the recommendation system. The respective weight for each preference is stored in this table. The individual weights of the attributes are accessed and used while sorting the result set for recommendation purposes. Figure 11: tblToTempResults The table tblToTempResults is dynamically filled on the fly, when a search is performed. It stores the search results for the onward journey until the purchase session is finished. The data is cleared once a purchase is confirmed. Figure 12: tblFroTempResults This table is similar to tblToTempResults, except for it holds the information for the return journey. Figure 6 – DATABASE SCHEMA tblFlightDetails tblAirways PK PK tblUserType AirWayName FK4 FK1 tblAirport PK Airport_Cd Airport_Name Airport_City tblFlightCodes PK FK1 FK2 FK3 FK2 Code_Id Flight_No From_Airport_Cd To_Airport_Cd Day_Of_Week Airway_Cd From_Hr From_Min tblDuration Pref_Id User_Id To_Price From_Price To_Airway From_Airway Duration tohasStopOver frohasStopOver toTimeOfDay froTimeOfDay PK Duration_Id FK1 FK2 FK3 Duration_Hr Duration_Min Duration From_Airport_Cd To_Airport_Cd Airway_Cd PK Flight_No Airway_Cd Day_Of_Week From_Airport_Cd From_Hr From_Min From_Time So_To_Hr So_To_Min So_To_Time So_Airport_Cd So_From_Hr So_From_Min So_From_Time To_Hr To_Min To_Time To_Airport_Cd So_To_Day So_From_Day To_Day hasStopOver From_So_Fair So_To_Fair From_To_Fair So_Flight_No PK User_Id To_Flight_Id Fro_Flight_Id To_Airway_Cd To_hasStopOver To_Fare Fro_Airway_Cd Fro_hasStopOver Fro_Fare To_Avg_Fare Fro_Avg_Fare Total_Avg_Tripfare to_Id To_Flight_Id To_Flight_No To_Airway_Cd To_hasStopOver To_From_To_Fair To_Depart_Airport To_Depart_Time To_Stopover_Arrv_Time To_Stopover_Airport To_Stopover_Flight_No To_Stopover_Depart_Time To_Arrive_Time To_Arrive_Airport To_Fair Total_Sort_Param Price_Param Airway_Param TimeOfDay_Param Stopover_Param tblFroTempResults PK Fro_Id Fro_Flight_Id Fro_Flight_No Fro_Airway_Cd Fro_hasStopOver Fro_From_To_Fair Fro_Depart_Airport Fro_Depart_Time Fro_Stopover_Arrv_Time Fro_Stopover_Airport Fro_Stopover_Flight_No Fro_Stopover_Depart_Time Fro_Arrive_Time Fro_Arrive_Airport Fro_Fair Total_Sort_Param Price_Param Airway_Param TimeOfDay_Param Stopover_Param UserTypeId UserType tblUser PK Pref_Id tblToTempResults PK FK3 tblTempPrefData tblPreferences PK Flight_Id AirWay_Cd tblItenary PK Itenary_Id FK3 FK1 FK2 User_Id To_Flight_Id Fro_Flight_Id Book_Date Child_Number Adult_Number ClassType UserId UserName Password LastName FirstName UserTypeId There are 6 stored procedures in the database. The names of the procedures are selfexplanatory. spGetSearchResults: This Procedure does the key job of fetching the results from the tblFlightDetails. The user input is stored in a hash table and sent as a parameter. It returns the set the itineraries that meet the criterion. spGetPurchases: This procedure joins the tblItinerary with the tblFlightDetails and returns the purchase history. The stored procedures spGetUser, spInsertItenary, spInsertTempPref, spInsertUser does the job of fetching the user information, inserting the purchase record, inserting the preferences made and inserting a new user respectively. There are 3 functions fnConvertArriveTimeToChar, fnGetArriveTime, fnGetNextDate in the database that does the job of formatting and calculating the date and time. 3.4 MODULES The modules involved in this application are: 3.4.1 a. Search for flights: This is the module that involves the loading of Search page. The dropdown lists are loaded with the airport names by accessing the tblAirport. The user can click on the login or Signup and is redirected to the Login page or Register page respectively. The user logs in, and the values are validated by testing against the tblUser from the database. If the username and password combination are correct, the user id redirected to the Search page and the logoff link is made visible. The user goes to register page by clicking on signup from the Search page or the Login page. The values entered are validated for correctness. Upon successful sign up, the user is redirected to the search page. The new user is added to the tblUser table in the database along with the information provided. The user input is read from the search page. Required field validation is done to make sure that the required input is entered. Data validation is done on the input to make sure that the values entered meet the custom validation criterion. This includes, checking to see, if the source and destination airports are the same. An alert is popped up to advising the user to select different source and destination airports. This is done using JavaScript. Similarly, Data-time validation is done in the calendar control. This assures that the data selected is not before the current date. And for a roundtrip, it makes sure that the return journey date is not before the onward journey date. Once the validations are done, the search functionality is handled. b. Get the results: This is the heart of the entire project where the results are sorted based on the recommendations and displayed. The user clicks the Search button and the input is read. The input is stored in a hash table and sent to the stored procedure “spGetSearchResults” for processing. The results are fetched and stored to the tables, tblToTempResults and tblFroTempResults for onward and return flights respectively. The contents of the tables are processed and sorted based on the Preferences from the tblPreferences. The data is then displayed in the Results page. The results are displayed in descending order of recommendation level for the particular user. The flights can be further sorted based on the user price and airline fields. The onward and return flights are selected by clicking on the respective radio button for that itinerary. c. Login/Confirm: The user selects the itineraries and confirms them by clicking on the Select button in the Results page. This module checks is the user is logged in and takes the necessary action. 1. If the user is logged in, he is directed to display itinerary / confirm page, where the user confirms the selected itinerary. 2. If the user is not logged in, he will be directed to the login page, from where, upon successful login, is directed to the confirm page. 3. If the user is not logged in and is a new user, he can register from the link to the signup page on the login page. On successful signup, he is directed to confirm page. The session is maintained through the whole process and on successful confirmation of the Itinerary; the user is taken to the search page. The preferences and the itinerary are updated in the user profile and the temporary result set is cleared. d. View Purchase History: The purchase history link appears when the user is logged in. This takes the user id and fetched the purchase history by joining the tblitinerary with the tblFlightDetails. The results are stored in a dataset and bound to the datagrid on the PurchaseHistory page. 3.5 FLOW CONTROL 3.5.1 USER FLOW CONTROL The figure 7 shows the user control flow in the FRC. The rectangle boxes represent the source files which are .aspx pages in my project. The arrows represent the flow between the .aspx pages. The user starts from the home page which is the Search.aspx. At this point he can make three choices whether to go to Login, Signup or the Results page. If the user goes to Login page or the signup page, he is directed to the search page upon successful login or signup. After the user signs in, his session is maintained and he can view his purchase history. The results page can be reached, whether the user is signed in or not. From the Flow control diagram below, the user navigates to the confirm page, any time a selection is made in the results page and the select button is clicked. This could be in three ways 1. directly from the results page, if the user is already logged in. 2. through the login page, if the user already has an account to login with. 3. from results to login and then through signup, if it’s a new user. The user can only navigate to the search page (home page) from the confirm page The User flow control diagram had been designed in Microsoft Visio 2007. Figure 1 – USER FLOW CONTROL Login Page Login.aspx Onclick_Login Onclick_Login Confirm Page DisplayIninerary.aspx Onclick_Confirm Home Page Search.aspx Onclick_search Results Page Results.aspx Onclick_PurchaseHistory Onclick_Signup View Purchase History Page Onclick_AcceptandContinue Sign Up Page Register.aspx Onclick_Select 3.6 DESIGN USE CASE DIAGRAMS: The use case diagrams overview the usage requirements for a system. But in actual development use cases provide significantly more value because they describe "the meat" of the actual requirements. The use cases describe the sequence of actions that provide something of measurable value to an actor. Figure 8 – USER SIDE USE CASE DIAGRAM ACTIVITY DIAGRAMS: Activity diagrams are typically used for business process modeling, for modeling the logic captured by a single use case or usage scenario, or for modeling the detailed logic of a business rule. Activity diagram represents the business and operational step-by-step workflows of components in a system. It shows the overall flow of control. In many ways UML activity diagrams are the object-oriented equivalent of flow charts and data flow diagrams from structured development. A very common use of activity diagrams is they enable you to depict both the basic course of action as well as the alternate courses. CLASS DIAGRAM: Class diagrams show the classes of the system, their interrelationships and the operations and attributes of the classes. The purpose of a class diagram is to depict the classes within a model. In an object oriented application, classes have attributes (member variables), operations (member functions) and relationships with other classes. The UML class diagram can depict all these things quite easily. SEQUENCE DIAGRAM: Sequence diagrams model the flow of logic within the system in a visual manner, enabling us both to document and validate your logic, and are commonly used for both analysis and design purposes. Sequence diagrams are the most popular UML artifact for dynamic modeling, which focuses on identifying the behavior within the system. USER SEQUENCE DIAGRAM 4. TESTING 4.1 ANTS LOAD 1. Testing using ANTS Load: ANTS Load is used to predict a web application's behavior and performance under the stress of a multiple user load. It does this by simulating multiple clients accessing a web application at the same time, and measuring what happens. ANTS Load is for load testing websites and web services and works particularly well for applications written using Microsoft technologies such as ASP.NET and ASP. Features: It is used to build web applications using Microsoft technologies. It can quantify performance for a reasonable (>25) number of application users. It can understand the business impact of performance. It allows simulates multiple concurrent users of a web application. It measures the performance of the application in terms of page download times, server performance and errors. Finally it indicates the business impact in terms of the abandonment prediction and frustration coefficient ANTS Load has 3 editions: ANTS Load Entry Level Edition lets you simulate up to 25 concurrent users, running on a single client computer. ANTS Load Professional Edition lets you simulate up to 100 concurrent users, running on a single client computer. ANTS Load Enterprise Edition lets you simulate thousands, or even tens of thousands, of concurrent users, running on multiple client computers. I have used the free evaluation for up to 10 users here for testing my web site. 4.2 ANAYLSIS Website performance testing tools give results that are very subjective to interpret. Ita been widely quoted that "if a web page takes longer than 10 seconds to download then a user is likely to lose interest”. Frustration was measured as being very slightly influenced by time but only if the download time was greater than 30 seconds. Lostness equals the number of page visits required to complete a task (optimal path) divided by the number of pages visited. 1.0 means the user was not lost at all. There is no upper limit! You can see in the below test result that the time to connect to each page was zero except for two pages. This shows that the web site will not be much frustrating to users. The page http://isis.oznet.ksu.edu/FCS/DesktopDefault.aspx?tabid=3 takes the maximum amount of time to connect because of the authentication, the images it has to load and the data it has to retrieve. Generally a web page consisting of images take a lot of bytes and lot of time to connect and in this application the time to connect is not too high. I have done the testing from a system connected to internet via modem and hence I can say that it would perform even better from a faster connection. Figure 2 – RESULTS This section shows the overall distribution of metrics for the FRC. The charts show what proportion of timings fall into which intervals. Figure 3 – TIME TO CONNECT This section shows you the average timings for each web page for this test. This can be used to find the fastest, and slowest, pages in the current web application. FRC The figure 25 shows that the all the web requests take time that’s less than 50 milliseconds. This emphasis on the user’s frustration level is evident that it would be low for the current application. Figure 4 – TIME TO GET FIRST BYTE The figure 26 shows the time taken for the application to get the first byte. We can see that time taken to receive the first byte is less for the majority. Moreover, the maximum time taken was just 250 milliseconds. Figure 5 – TIME TO GET LAST BYTE The figure 27 shows the time taken for the application to get the last byte. We can see that the maximum time taken to receive the last byte was 250 milliseconds. The figure 28 represents the total number of bytes received by each web request. The complexity of the application is obvious from the vast amount of the web requests receiving close to 5000-10000 bytes 4.2.1 RESULTS From the above analysis, we can conclude that: The FRC, despite being a very complex application with a lot of request to the database, performs really well in terms as is evident from the graphs. We can be assured that the application would minimize the user frustration level. The time to connect to the web page is low and hence the web page will not be abandoned by the users. The time between the first byte and the last byte received is very nominal, We can see from the figure 28 that despite the high amount of data received is the time to receive the last byte is low. Thus we can conclude that the level of lost ness while navigating through the application is very less. 5. FUTURE WORK 5.1 EXTENSIONS The FRC application is limited to only a few user preferences. The number of preference characteristic could be increased significantly. The case based reasoning works effectively for the particular user in context. A recommendation system can be made more effective by using a collaborative approach. An approach where the predictions are specific to the user, but use information gleaned from many users. The FRC generalizes the concept of multiple users by just calculating the total weight of individual preferences instead of calculating the similarity between different users. The current system gathers implicit feedback by observing the history of the user purchases. The scope of implicit feedback gathered can be extended or improved by observing the user’s action in each given sessions. 6. CONCLUSION This report describes the Flight Reservation Client (FRC), an application that enables the user search for and finds flights. The search result comprises a large number of itineraries. Hence the recommendation system cuts down the burden on the user by recommending the flight that best fit his preferences by placing them at the top. Explicit feedback leads to an increase in the user’s frustration level. The recommendation process is highly effective as it uses implicit feedback. The feedback is obtained by making some observations on the user’s purchase history. The FRC makes successful recommendations by using the technique of assigning feature weights and user specific context based recommendations. The recommendation algorithm was designed with the Flight Reservation client (FRC) application in mind. Yet, it can be applied to other domains that use implicit feedback. The key to the success of the FRC is the ability to sort the results based on user preferences and personalizing it in the recommendation process. REFERENCES AND/OR BIBLIOGRAPHY [1] “Start VB dot net.com”, “ASP.NET Features”, http://www.startvbdotnet.com/aspsite/asp/features.aspx [2] Red-Gate, “Load testing, stress testing”, http://www.red-gate.com/products/ants_load/index.htm [3] Shrijeet Nair, “Microsoft Application Test Center”, “Date: 9-17-2002”17/2002 http://www.c-sharpcorner.com/Code/2002/Sept/AppTestCenter.asp [4] [5]W3Schools, “ASP.NET Introduction”, http://www.w3schools.com/aspnet/aspnet_intro.asp [6] Microsoft Asp.Net, “ASP.NET web: Official Microsoft Asp.Net2 site”, http://asp.net/whitepaper/whyaspnet.aspx?tabindex=0&tabid=1 [7] Microsoft, “Visual Studio Extensibility”, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/act/htm/actml_c_os.asp [8] Red-Gate, “Website download time, abandonment”, http://www.redgate.com/products/ants_load/technical_papers/understanding_testing_results.htm [9] “Microsoft Visio tutorial” http://office.microsoft.com/en-us/downloads/CD010899231033.aspx [10] “Visual Paradigm documentation” http://www.visual-paradigm.com/product/vpuml/vpumldocuments.jsp [11] “Introduction to the Diagrams of UML 2.0” http://www.agilemodeling.com/essays/umlDiagrams.htm [12] [13] [14] [15] [16] [17] [18] [19] A dynamic approach to feature weighting B. Arslan, F. Ricci, N. Mirzadeh & A. Venturini eCommerce and Tourism Research Laboratory, ITC-irst via Sommarive 18, 38050 Povo, Italy [20]