Job Fair Pervasive Computing System Final Report Project Team: Dec0912 Client: Iowa State University Faculty Adviser: Daji Qiao, PhD Course Coordinator: Jason Boyd Team Members: Adam Lee Kartik Subbu Nicholas Oakman Gabriel Semonis REPORT DISCLAIMER NOTICE DISCLAIMER: This document was developed as a part of the requirements of an electrical and computer engineering course at Iowa State University, Ames, Iowa. This document does not constitute a professional engineering design or a professional land surveying document. Although the information is intended to be accurate, the associated students, faculty, and Iowa State University make no claims, promises, or guarantees about the accuracy, completeness, quality, or adequacy of the information. The user of this document shall ensure that any such use does not violate any laws with regard to professional licensing and certification requirements. This use includes any work resulting from this student-prepared document that is required to be under the responsible charge of a licensed engineer or surveyor. This document is copyrighted by the students who produced this document and the associated faculty advisors. No part may be reproduced without the written permission of the senior design course coordinator. Job Fair Pervasive Computing System Design Report Page 1 Contents List of Tables ................................................................................................................................... 5 List of Figures ................................................................................................................................. 5 Definitions ....................................................................................................................................... 6 Introduction ..................................................................................................................................... 7 Executive Summary .................................................................................................................... 7 Acknowledgement ....................................................................................................................... 7 Problem Statement ...................................................................................................................... 8 Operating Environment ............................................................................................................... 8 Intended User(s) .......................................................................................................................... 8 Students.................................................................................................................................................. 8 Employers .............................................................................................................................................. 8 Administrators ....................................................................................................................................... 9 Intended Use(s)............................................................................................................................ 9 First use ................................................................................................................................................. 9 Second use ............................................................................................................................................. 9 Third use ................................................................................................................................................ 9 Assumptions ................................................................................................................................ 9 Limitations................................................................................................................................... 9 Expected End Product ............................................................................................................... 10 Overall System Design .................................................................................................................. 10 PRE-CAREER FAIR REGISTRATION .................................................................................. 11 STUDENT REGISTRATION ................................................................................................................ 11 EMPLOYER REGISTRATION ............................................................................................................. 12 MAIN ENTRANCE CHECK-IN .............................................................................................. 13 EMPLOYER BOOTHS ............................................................................................................ 14 TEXT-MESSAGING SYSTEM ............................................................................................... 15 TERMINALS ............................................................................................................................ 15 CENTRAL SERVER ................................................................................................................ 16 Design Specifications .................................................................................................................... 17 Touchatag™ .................................................................................................................................. 17 Job Fair Pervasive Computing System Design Report Page 2 Functional Requirements ........................................................................................................... 17 Input specification ..................................................................................................................... 18 Output specification .................................................................................................................. 18 Hardware specifications ............................................................................................................ 18 Architectural Overview ............................................................................................................. 18 Application Correlation Service (ACS)................................................................................................ 19 ACS Data Repository ........................................................................................................................... 19 ACS TagID Dispatcher ........................................................................................................................ 19 ACS Block System ................................................................................................................................ 19 User interface ............................................................................................................................ 20 Touchatag™ basic fixed reader operation ................................................................................. 21 Project-Specific Touchatag™ utility: ........................................................................................ 22 Student Registration & Association .......................................................................................... 22 Functional Requirements ..................................................................................................................... 22 Input specification ............................................................................................................................... 23 Output specification ............................................................................................................................. 23 User interface specification ................................................................................................................. 23 Hardware or software specifications ................................................................................................... 23 Test plan .............................................................................................................................................. 23 Prototyping .......................................................................................................................................... 24 Employer Registration & Association ....................................................................................... 24 Functional Requirements ..................................................................................................................... 24 Input specification ............................................................................................................................... 24 Output specification ............................................................................................................................. 25 User interface specification ................................................................................................................. 25 Hardware or software specifications ................................................................................................... 25 Test plan .............................................................................................................................................. 25 Prototyping .......................................................................................................................................... 25 Entrance Check-In ..................................................................................................................... 26 Functional Requirements ..................................................................................................................... 26 Input specification ............................................................................................................................... 27 Output specification ............................................................................................................................. 27 User interface specification ................................................................................................................. 27 Hardware or software specifications ................................................................................................... 27 Employer Booth ........................................................................................................................ 28 Functional Requirements ..................................................................................................................... 29 Input specification ............................................................................................................................... 29 Output specification ............................................................................................................................. 29 User interface specification ................................................................................................................. 29 Hardware or software specifications ................................................................................................... 29 Job Fair Pervasive Computing System Design Report Page 3 Test plan .............................................................................................................................................. 29 Prototyping .......................................................................................................................................... 29 Terminals ................................................................................................................................... 30 Functional Requirements ..................................................................................................................... 30 Non-functional Requirements .............................................................................................................. 31 Input specification ............................................................................................................................... 31 Output specification ............................................................................................................................. 31 User interface specification ................................................................................................................. 31 Hardware or software specifications ................................................................................................... 32 Test plan .............................................................................................................................................. 32 Prototyping .......................................................................................................................................... 32 Implementation ............................................................................................................................. 32 Registration ............................................................................................................................... 32 Student Registration ............................................................................................................................ 32 Employer Registration.......................................................................................................................... 33 Association ................................................................................................................................ 35 Employer Stations...................................................................................................................... 36 Terminals ................................................................................................................................... 36 Career Fair Console ....................................................................................................................... 38 Database .................................................................................................................................... 40 Student and Employer Registration Tables .......................................................................................... 41 Student and Employer Association Tables ........................................................................................... 41 Employer Queue Length Table ............................................................................................................ 41 Employers Visited Table ...................................................................................................................... 41 Student-Employer Table ...................................................................................................................... 42 Database Technical Details ................................................................................................................. 42 Logging into MySQL............................................................................................................................ 42 Viewing and Deleting Data.................................................................................................................. 42 Algorithm .................................................................................................................................. 43 Matching Algorithm ............................................................................................................................. 43 Testing ........................................................................................................................................... 44 Results ........................................................................................................................................... 44 Requirements ............................................................................................................................. 44 Conclusions ............................................................................................................................... 44 Demo .................................................................................................................................................... 44 Considerations ..................................................................................................................................... 44 Resources....................................................................................................................................... 45 Material ..................................................................................................................................... 45 Job Fair Pervasive Computing System Design Report Page 4 Revised Resource Requirements .......................................................................................................... 45 Labor ......................................................................................................................................... 45 Personal Effort Data............................................................................................................................ 45 Conclusion ..................................................................................................................................... 46 References ..................................................................................................................................... 46 Appendix ....................................................................................................................................... 47 Database Table Diagram ........................................................................................................... 47 Student Registration Sequence Diagram ................................................................................... 47 Employer Registration Sequence Diagram................................................................................ 48 Old PHP Code for Prototype Registration System .................................................................... 48 index.php: ............................................................................................................................................ 48 confirm.php: ........................................................................................................................................ 49 register.php: ........................................................................................................................................ 51 Pseudo code for Next Visit Algorithm ....................................................................................... 52 List of Tables Table 1 - Definitions........................................................................................................................ 6 Table 2 - Touchatag™ Requirements ............................................................................................. 17 Table 3 - Student Registration Requirements ............................................................................... 22 Table 4 - Employer Registration Requirements............................................................................. 24 Table 5 - Entrance Check-In Requirements ................................................................................... 26 Table 6 - Employer Booth Requirements ...................................................................................... 29 Table 7 - Terminal Requirements .................................................................................................. 31 Table 8 - Revised Resource Requirements .................................................................................... 45 List of Figures Figure 1 Student Registration ........................................................................................................ 12 Figure 2 - Employer Registration ................................................................................................... 13 Figure 3 Touchatag™ .................................................................................................................... 14 Figure 4 Touchatag™ Reader........................................................................................................ 14 Figure 5 - Output from Terminal ................................................................................................... 16 Figure 6: Touchatag™ end-to-end architecture [2]......................................................................... 19 Figure 7: Touchatag™ Dashboard user interface .......................................................................... 21 Figure 8: Touchatag™ basic fixed reader operation ..................................................................... 21 Job Fair Pervasive Computing System Design Report Page 5 Figure 9 - Entrance Check-In Process Diagram ............................................................................ 26 Figure 10 - Employer Booth Setup................................................................................................ 28 Figure 11 - Employer Action Sequence Diagram ......................................................................... 28 Figure 12 - Terminal Query Sequence Diagram ........................................................................... 30 Figure 13- Student Registration..................................................................................................... 34 Figure 14 - Employer Registration ................................................................................................ 35 Figure 15 - Tag Association .......................................................................................................... 36 Figure 16 - Employer Station Representation ............................................................................... 36 Figure 17 - Terminal Screenshot with Desktop ............................................................................. 37 Figure 18-Terminal Input Form..................................................................................................... 37 Figure 19-Terminal Result Form (incorrect information) ............................................................. 38 Figure 20 - Career Fair Console .................................................................................................... 39 Figure 21 - Database Diagram ....................................................................................................... 40 Figure 22 - Hours Worked Distribution ........................................................................................ 46 Definitions Table 1 - Definitions Term Touchatag™ Definition The name of the company which makes the RFID reader and tags. Algorithm Sequence of finite instructions used for calculations and data processing CprE 489 Communication Networking Class at Iowa State University Filter A method by which unwanted elements are removed from the selection process Greedy algorithm Algorithm that makes the locally optimum choice at each stage GUI Graphical User Interface ISU Card Iowa State University Student Card RFID Radio Frequency Identification Device USB Universal Serial Bus ACS Application Correlation Service Job Fair Pervasive Computing System Design Report Page 6 API Application Programming Interface NFC Near Field Communication Introduction Executive Summary Organizing a career fair is an important task for any university to provide opportunities for students to seek employment opportunities and also for the employers to recruit employees with right skill sets. The Iowa State University (ISU) Engineering Career Fair is the second largest career fair in the entire country. Given the magnitude of the event, ensuring that the event serves its purpose, for both employers and students, is of utmost importance. The career fair process becomes complex especially when the number of students and employers is very large and ensuring students meet with the right set of employers, and vice-versa becomes essential. A system which co-ordinates the career fair in a more organized, time-efficient manner will enrich the experiences of both the employers and the students involved. Students will be able to meet maximum number of best-suited employers in a limited time based on employer and personal requirements. Such an experience involves not having to waste precious time in waiting in long queues to meet potential employers and matching employers to most suitable students. Using the system being designed by the senior design team, queues will not be as long as before and the number of most suitable employers-potential employees matches based on preferences will increase substantially. Such a system will only lead to increased co-ordination and efficiency of the career fair. Acknowledgement The Dec09-12 senior design team would like to thank Iowa State University for providing a positive learning community. The team also is thankful to the Computer Support Services (CSG) for having provided us the necessary resources for our project. The team would like to thank Dr.Qiao for having advised and guided us with a lot of patience throughout the entire duration of the project. Professor Daji has helped us along the way and inspired us to look at multiple approaches in realizing our end-goal. He was the one who suggested using the Touchatag™ system for our project, and also gave invaluable tips on how to make our system more pervasive. The team would also like to acknowledge Jason Boyd and Dr. Kamal for their help during this project. Job Fair Pervasive Computing System Design Report Page 7 Problem Statement The Dec0912 project team will develop a pervasive computing system composed of embedded systems/software and wireless networking components. The proof-of-concept system will be designed to solve complex problems with multiple constraints (e.g., real-time deadline, connectivity). The team will develop a prototype demonstration application for solving the career-fair coordination problem. Organizing the career fair is an important task for the university to provide opportunities for students to seek employment opportunities and also for the employers to recruit employees with right skill sets. The career fair process becomes complex, especially when the number of students and employers is very large; if poorly managed, it would result in students being unable to meet with the right set of employers, and employers not able to meet with the right set of students. The goal is to design a pervasive computing system that can improve the efficiency of the career fair process, with the following objectives: (i) maximize the chances of students meeting as many suitable employers as possible; (ii) maximize the chances of employers meeting as many suitable students as possible. Operating Environment The new pervasive computing system will be installed in Hilton Coliseum and Scheman Building, locations where the Engineering Career fairs are held every year at Iowa State University in Ames, IA. The centralized server’s database will be handling information of over 2000 students and over 250 employers. There will be a high-speed wireless internet network all across the coliseum, where each laptop has access to the internet and access to normal AC power sources. The Operating environment can be further defined as indoors at normal room temperature, 65-75 degrees Fahrenheit. All laptops/ computers will have USB capability to connect the Touchatag™ reader. Intended User(s) Three types of users will primarily utilize the system. Students The first type includes students. These users will be provided with adequate information regarding the system components like Touchatag™ among others for them to be able to use the system effectively. Students will utilize the system by submitting their information detailed in the student registration section. Employers The second types of users are the employers who come to ISU to recruit prospective employees. For these types of users, information such as resume of students and the number of students visited so far to the booth will be made available Job Fair Pervasive Computing System Design Report Page 8 Administrators The third types of users are the administrators of the servers and other people with special access to the transactional data. These users can modify the settings and the functionalities of the system. These users will be individuals with highly-specialized skill sets and have a fully functional knowledge of the Linux OS, MySQL, PHP scripting, and TCP/IP and HTTP protocols. Intended Use(s) Each type of user can use the system in a variety of ways. The three intended users will have the following uses of the system: First use Queue a student into an employer’s booth by either swiping an RFID tag. Dequeue a student out of an employer’s booth by either swiping an RFID tag, querying a terminal or checking into another booth. Receive text messages as to which employer to visit next. Query a terminal as to which employer to visit next. Enter their respective information into the database for storage and decision making. Second use Query the system to find out how many potential employees have visited them. Query the system to retrieve a list of resumes of potential employees who visited. Third use Troubleshoot non-performance and system efficiency issues. Oversee functioning of the system during, before and after the career fair. Resolve issues involving the Touchatag™ interface and provide a smooth platform for student and employer registration at the career fair. Assumptions Mentioned below are some of the assumptions incorporated in designing the system Wireless Internet connectivity will be provided throughout the career fair. Iowa State University will provide adequate laptops for employers and terminals. Laptops provided must have an open, useable USB slot. Laptops must have Windows XP or higher to utilize our system. All students will get their ISU cards/remember their Student ID numbers and password provided during pre-career fair registration. Students and employers have a fair understanding of the system based on the user manual guide of the system provided. Limitations The system has some limitations which must be considered when designing it. Job Fair Pervasive Computing System Design Report Page 9 The system must implement most, if not all features as mentioned in the problem statement. The user interface (front end) needs to be compact and easy to use. The system must allow for different functionalities for the different types of users. The centralized server must have a back-up if it crashes or malfunctions at all. Expected End Product The deliverables for the project will be a functional prototype of the pervasive system which is on a small scale as compared to the magnitude of the final project. So instead of 300 employers, the team will experiment with 2-4 employers and 2 students to simulate the prototype system. The other deliverables include developer-friendly programming code snippets and a highly useful and systematic user manual for all kinds of users of the system. Overall System Design Figure 0 - System Layout and Design Job Fair Pervasive Computing System Design Report Page 10 The pervasive computing system can be broken down into few major modules. It includes the pre-career fair registration module, the main entrance check-in module, employer booth modules, terminal modules and a common centralized system database. All the modules are connected to the centralized database using an Ethernet connection. PRE-CAREER FAIR REGISTRATION STUDENT REGISTRATION The student can register for the career fair in the convenience of his/her home. By going to the “Student Registration Page” at http://dec0912.ece.iastate.edu/jobfairsystem/studentregistration.html, the student can register by entering details like username, password, classification, major, job-type, phone number and carrier(optional), and also attach a resume for the employer to see. (see figure 1 under “Screenshots”) Usernames must be unique, there are no restrictions on passwords, classification includes freshman up to graduate student; majors supported include: Chemical Engineering Computer Engineering Software Engineering Electrical Engineering Industrial Engineering Mechanical Engineering Aerospace Engineering Civil Engineering Construction Engineering Agricultural Engineering Biosystems Engineering After a student has registered, he/she may change his/her information by using his/her username and password on the “Update Student Information Page” http://dec0912.ece.iastate.edu/jobfairsystem/student_login.html. There is a link to this page at the bottom of the “Student Registration Page”. The details, thus entered are used as parameters for the algorithm(*see appendix) in the system which matches employers with the most suitable students and vice-versa. The students can now enter the career fair with this password and their student ID card with them. Job Fair Pervasive Computing System Design Report Page 11 Figure 1 Student Registration EMPLOYER REGISTRATION Employers can register before the career fair by going to http://dec0912.ece.iastate.edu/jobfairsystem/employer-registration.html and inputting their name, password, and hiring criteria and positions. Employers may not re-register or change their information after registration. (See figure 2 under “Screenshots”) The employers are identified based on the Internet Protocol (IP) address, a unique 32-bit address of the machine on the Ethernet network. Associating the specific IP address to the employer before the career fair will primarily be performed once the employers are registered. Job Fair Pervasive Computing System Design Report Page 12 Figure 2 - Employer Registration MAIN ENTRANCE CHECK-IN The main entrance check-in module refers to the main entrance of the career fair where students usually swipe their ISU cards to get their name tags. At the main entrance check-in, the student enters the unique password received during pre-career fair registration to receive a unique lowrange RFID tag (Touchatag™) as shown in Figure Job Fair Pervasive Computing System Design Report Page 13 Figure 3 Touchatag™ The tag is associated to the student at this stage by using the Touchatag™ server and our system server. This association helps the system understand which person is in which employer queue or at which terminal during the career fair since the tag uniquely identifies the student. The student receives a print-out of a list of next suitable employers to go based on the matching algorithm the team has designed. To better explain the system, in case students have any sort of difficulties, there will be a student user manual available at the main entrance check-in that student can choose to read, and also online. EMPLOYER BOOTHS Once inside the career fair, the students are free to go to any employer of their choice or follow the list given out to them once they receive a text message update. To queue oneself at any employer booth the students must swipe their tags over a Touchatag™ reader (one reader provided for each employer) as shown in Figure 3 Figure 4 Touchatag™ Reader Swiping the tag causes the queue length field in the database for that employer to increase by one; thereby maintain real-time status. This not only reflects real-time queue lengths at employer booths but also helps in the implementation of the matching algorithm the system uses to print out the list of next best-suited employers for other students. Job Fair Pervasive Computing System Design Report Page 14 This swiping action also notifies the database of who is standing in line (based on the main entrance association) and sends the student’s resume to the employer’s laptop for the employer’s convenience. The action the employer takes with these resumes is entirely his/her discretion. This is a service intended primarily for students but by adding these functionalities, the team intends to increase overall utility for all types users of the system. After interaction with the employer, the student can swipe the tag again over the reader to log out of the line. The system will perform simultaneous log out (at previous employer) and log in (at new employer) if the student stands in queue for another employer. TEXT-MESSAGING SYSTEM A text-messaging system is also in place to update students real-time about which employers they should go to next based on the algorithm. This algorithm takes into account factors like present queue length at an employer, employer preferences, employers already visited, etc. to come up with an updated list of employers to go to next. To maintain the non-disruptiveness of the system, the text-messaging system sends a text to a student with the list of employers only when they show up on the system as not being in the queue for any employer to ensure no disturbances during employer-student interaction. The text messages are sent as an e-mail by the central server through a Short Messaging Service (SMS) gateway. Students may/may not subscribe for this service since they will have to pay for the incoming texts to their cell phone. TERMINALS An alternative to the text messaging service are the terminals. These terminals will be strategically located and evenly distributed throughout the coliseum to ensure maximum and efficient usage by students. These terminals are desktops/laptops equipped with the Touchatag™ reader. By swiping the card over the reader, the web interface will show the list of employers on the screen. This list can be printed off, since a printer will be attached with the terminal module. There is also another option to obtain information from the terminals. A student can enter their student ID number at the terminals using a numeric keypad to get the list of employers. Job Fair Pervasive Computing System Design Report Page 15 Figure 5 - Output from Terminal CENTRAL SERVER The central server is the heart of the system. It is connected to each component of the system via Ethernet. The central server will host the database (MySQL) and connect the web-interface to the database using PHP scripts. The algorithm will be implemented using PHP scripts as well. The database will hold information about all employers, students and terminals. Some of the information includes resumes of students, employer laptop Internet Protocol (IP) addresses used to uniquely identify them at the server, employer queue tables in the database among many things. Job Fair Pervasive Computing System Design Report Page 16 Design Specifications Touchatag™ The Touchatag™ service is the team’s online Near Field Communication (NFC) Radio Frequency Identification (RFID) device. The RFID tag and reader connect to the central server using the Touchatag™ server. This service makes it possible for the creation of applications that enable the launch of online applications with a simple touch of an RFID enabled device such as a tag. Items tagged with an RFID chip provide users with one touch, fast and easy access to on-line information and registration. In this project’s context, the tag once swiped on the reader connects to a web-page and updates, retrieves and modifies the contents of it which in turn, reflect on the central server. All this is implemented using PHP scripts and the rich Application programming interface (API) provided to a Touchatag™ user and developer. Functional Requirements Table 2 - Touchatag™ Requirements Requirement Statement Touchatag™ Functional Requirement 1 The Touchatag™ service must be able to uniquely identify each student and employer based on their already registered associations. Touchatag™ Functional Requirement 2 The Touchatag™ service must be able to access the database to create entries in the database tables to maintain the current system state real-time. Touchatag™ Functional Requirement 3 The Touchatag™ service must be able to access the database to update and modify entries in the database tables to maintain the current system state real-time. Touchatag™ Functional Requirement 4 The Touchatag™ service must be able to perform all these functions mentioned in the shortest time possible to ensure the Job Fair Pervasive Computing System Design Report Page 17 real-time nature of the system. Input specification The input for the Touchatag™ application is the action of swiping the associated tag over a reader. Since this is an NFC RFID, the detection range for these tags is small – about 4 centimeters or 1.6 inches [2]. Hence to make sure the input is detected, the user has to make sure that the tag is closer than the detection range mentioned above for it to work. Output specification The output for this device can be any action, ranging from checking the student into a line to printing out the next list of employers to go to. The output primarily depends on what web-site is associated with that tag and what the PHP script for that web-page instructs the central server to do. Hardware specifications Touchatag™ hardware consists of a small interrogator or reader (roughly the size of a deck of cards, but half the thickness) that connects to a computer through a USB port, and small adhesive passive tags that comply with the 13.56 MHz and ISO 14443 air-interface standards, as well as the Near Field Communications (NFC) protocol, an RFID platform designed for short-range secure wireless transmissions. A Touchatag™ can also be read by placing it very close to an NFC-enabled cell phone [1]. Apart from the reader and the tag, there is no real hardware components involved in this technology. Architectural Overview Job Fair Pervasive Computing System Design Report Page 18 Figure 6: Touchatag™ end-to-end architecture [2] Application Correlation Service (ACS) The Touchatag™ Application Correlation Service (ACS) is a Web service that comprises the core of Touchatag™, storing the association between unique tag IDs and actions to execute. The Touchatag™ ACS listens to Touchatag™ RFID readers. When a tag event is registered, the ACS performs logic to determine the appropriate action for the tag, and responds accordingly. The ACS has several internal components that enable its overall functionality. ACS Data Repository The ACS maintains a repository of correlation data, which includes actions for associating to tags, as well as tag, reader and user IDs and their associations to actions. ACS TagID Dispatcher When the ACS receives a tag read event, it uses the TagID Dispatcher to lookup the incoming tag ID in the Repository, and then return the correct corresponding action to the client. Currently the dispatcher component handles only tag IDs. Additional functionality will later enable the dispatcher also to handle reader ID, user ID, client type, and various types of metadata for dispatching events. ACS Block System The Block System provides the ACS with modular functionality for different types of Applications. Each of the different Applications available in the Touchatag™ dashboard uses one or more corresponding blocks on the server. Job Fair Pervasive Computing System Design Report Page 19 The Touchatag™ engineering team uses the Block System as a modular way to extend Touchatag™’s base functionality. One way that third party application developers can create new functionality is by assembling the existing ACS blocks in new configurations using Touchatag™ Configurator API. [2] User interface Any user can create their own applications using the Touchatag™ interface also known as the dashboard. By following these steps, one can create one’s own application1. 2. 3. 4. Log on to www.Touchatag.com using your account (register for no charge). Go to the Touchatag™ dashboard (www.Touchatag.com/dashboard). Click the Configure an Application button. This opens the Touchatag™ “configurator”. In the configurator, you choose the URL that you want the tag to connect to once it is swiped. 5. You then customize the selected application, giving it a name and, optionally, a description, and specifying any other fields as required. When ready, click the Use this App button to continue. 6. This choice prompts you to put a tag on your Touchatag USB reader. When the tag is detected, the wizard displays the tag ID and asks you to confirm. Click Choose this Tag to confirm the association and continue. 7. In configurator Step 4 you verify the configuration by clicking Make this Tag. This is the final step in associating an action to a tag, so the configurator closes. 8. After the association is created, it appears in your list of associated tags in the dashboard. From then on, using the physical tag on any Touchatag™ reader will trigger the actions defined in the Touchatag™ application. Job Fair Pervasive Computing System Design Report Page 20 Figure 7: Touchatag™ Dashboard user interface Touchatag™ basic fixed reader operation Figure 8: Touchatag™ basic fixed reader operation 1. A tagged object is detected by the fixed Touchatag™ USB reader. Job Fair Pervasive Computing System Design Report Page 21 2. The reader communicates relevant information, such as the tag ID, to the Touchatag™ software client. 3. The Touchatag™ software client contacts to the Touchatag™ Action Correlation Service, relaying the tag ID, the reader ID, the event type, the user’s account name, and other information. 4. The Touchatag™ Action Correlation Service registers the event information, and uses the correlation data repository to determine what actions to execute. 5. The Touchatag™ service executes any appropriate server-side actions, and then instructs the Touchatag™ software client to launch any appropriate actions on its host computer. 6. The Touchatag™ client executes actions as instructed by the service. Project-Specific Touchatag™ utility: Given the brief architectural framework and the operation information, the team intends to use the Touchatag™ service in the following way: A tag that a student possesses has a built-in ID number. When swiped, the ID number gets relayed to the Touchatag™ server, which in turn directs the communication flow to the web-site that was associated with the tag. Once the site is reached, PHP scripts on the web-site will perform certain functions that will update the database and bring up an output dependent on the kind of query. This output could be a list of employers or might just be an update in the database of the central server. The functionality of the Touchatag™ service is dependent on the API’s and the PHP code that we program. Hence, the communication back and forth from the central server to the various modules of the system is facilitated through the Touchatag™ interface. Student Registration & Association Functional Requirements Table 3 - Student Registration Requirements Requirement Statement Student Registration Requirement 1 The registration system shall display a registration form to the user, in which relevant Job Fair Pervasive Computing System Design Report Page 22 information can be entered. Student Registration Requirement 2 The system shall interpret the submitted information via a PHP script. Student Registration Requirement 3 The system shall store the data into the appropriate table on the database. Student Registration Requirement 4 The system shall notify the user if there is a failed submission. Student Registration Requirement 5 The system shall return a unique pass code to the user, which they will need in order to log in at the career fair. Input specification Username Password Classification Major Seeking Internship/Co-op/Full-time Cell Phone Number and Carrier Resume Output specification Confirmation and pass code if the registration was successful. Error message if there was a problem during submission. User interface specification The interface consists of an HTML form with several input fields, including text fields, check boxes, radio buttons, and combo boxes. A short caption preceding each input will instruct the user which information is to be entered in a particular text field. Hardware or software specifications Hardware and software requirements are minimal. The registration system can be accessed from any computer connected to the internet and capable of viewing web pages. Test plan Testing the registration system will be simple. Although the information entered will vary from student to student, there are basically only two ways which the information can affect the functionality of this system. Either there were no errors during the processing of the information, in which case the information will be stored into the database, or there was a problem, and no the database remains unchanged. If this is the case, the user must be notified of the problem that occurred. Creating a few fake registration accounts to make sure the information is being properly stored into the database, as well as testing the responses when erroneous data is entered, should be Job Fair Pervasive Computing System Design Report Page 23 sufficient for testing this part of the system. Some parts will have to be temporarily disabled during testing, such as checking that the ISU username is valid, since test information will not consist of that of real users. Prototyping Currently, a small scale version of the registration system has already been implemented, which allows the registration of a random username and password. These two fields are stored into a database table, which can be viewed either by using the Linux Mysql command, or by running a PHP script to pull the information off the MySQL server. See the Appendix section for the code of this prototype. Employer Registration & Association Functional Requirements Table 4 - Employer Registration Requirements Requirement Statement Employer Registration Requirement 1 The registration system shall display a registration form to the user, in which relevant information can be entered. Employer Registration Requirement 2 The system shall interpret the submitted information via a PHP script. Employer Registration Requirement 3 The PHP script shall also obtain the IP address of the computer which submitted the form, in order to make an association between that computer and the company name entered in the form. Employer Registration Requirement 4 The system shall store the data into the appropriate table on the database. Employer Registration Requirement 5 The system shall not store any information in the database if there is a problem or error with any of the information entered by the user. The user will be notified what went wrong during the submission. Input specification Company name Job Fair Pervasive Computing System Design Report Page 24 Major(s) which qualify for the job position(s) Minimum year of student Offering Internship/Co-op/Full-time employment Obtaining the IP address will be handled by the PHP script, the employer does not need to enter it. Output specification Confirmation message if the registration was successful. Appropriate error message if there was a problem with the submission. User interface specification The interface will be an HTML form very similar to the student registration form, with the same type of input fields. Hardware or software specifications Hardware and software requirements are minimal. If the employer’s laptop is connected to the internet, they will be able to access the registration form. Test plan Testing will follow the same procedure as testing the student registration. It will be necessary to ensure information is being properly entered into the database, and that errors in the data entered are caught by the PHP script. Prototyping Since the basic functionality of the two registration systems are the same, the student registration prototype should be adequate as far as prototyping of the registration system. For testing purposes, the current registration prototype stores the IP address of the computer which registered with the system, even though an IP is not needed for the student registration, but it ensures that this will be possible when it comes to the final implementation. Job Fair Pervasive Computing System Design Report Page 25 Entrance Check-In Get Tag Swipe Tag Entrance Check-In Process Link username with tag ID Determine Tag is unassociated Enter Username and Password Check Username Password Against Database Valid Not Valid Figure 9 - Entrance Check-In Process Diagram The entrance check-in stage is after the student registration phase. It is when the student first arrives at the career fair and wishes to obtain a tag for use in the system. The pre-registered student will pick up a random tag, swipe it over the entrance check-in station’s RFID reader, and then enter his or her username and password. Functional Requirements Table 5 - Entrance Check-In Requirements Requirement Description Entrance Check-In Functional Requirement 1 The entrance check-in system shall give each student a random Touchatag™ RFID tag. Entrance Check-In Functional Requirement 2 The entrance check-in system shall perform the association between student and tag based on student registration username, password, and Job Fair Pervasive Computing System Design Report Page 26 tag id. Entrance Check-In Functional Requirement 3 The entrance shall inform user of the success or failure of his/her association. Input specification Touchatag™ RFID tags Pre-Registered Student with username and password Touchatag™ RFID reader Desktop Computer with Desk Wireless Internet Server-side script Server Database Output specification A Touchatag™ tag that has been associated with a corresponding student and his/her information. User database has made the association between user and his/her tag. User interface specification The student will be given a random Touchatag™ tag. The tag, when swiped or placed on the Touchatag™ scanner, will connect to the database and realize that the tag has not yet been associated. This will trigger an action to send the browser to a “sign-in” screen where the student will enter his/her username. After entering user information, the ID will be associated with that particular user. Hardware or software specifications Laptops must be able to connect to power source. Laptops must be connected to the wireless internet. Laptops must be running Windows XP or Vista. Laptops must have a working browser. Job Fair Pervasive Computing System Design Report Page 27 Employer Booth Employer Wireless Internet Touchatag Reader Tag Student Figure 10 - Employer Booth Setup Figure 11 - Employer Action Sequence Diagram Job Fair Pervasive Computing System Design Report Page 28 Functional Requirements Table 6 - Employer Booth Requirements Requirement Statement Employer Booth Functional Requirement 1 The employer booth shall check in a student to the booth he/she has just swiped at if he/she is not already checked in to this particular booth. Employer Booth Functional Requirement 2 The employer booth will update the database with the student’s username, the employer that the student visited, and time of check-in. Employer Booth Functional Requirement 3 The employer station shall check out a student if he/she is already checked in. Input specification Touchatag™ RFID tag Employer entity Student entity Time Output specification An updated database. In the case of checkout, a text message to the student if student has previously entered SMS gateway information in the student pre-fair registration. User interface specification No user interface besides the reader and tag. Hardware or software specifications Laptops must be able to connect to power source. Laptops must be connected to the wireless internet. Laptops must be running Windows XP or Vista. Laptops must have a working browser. Test plan Unit Testing of PHP scripts Boundary testing of PHP script inputs Stress testing the server to simulate multiple accesses to the database. Prototyping Set up two employer laptops to simulate employer booths. Testing a tag that has already been associated and swipe it at prototype employer booth and test to make sure that that Job Fair Pervasive Computing System Design Report Page 29 user has been entered into the system with appropriate values. Check that check-out procedures work. Terminals Terminal Query Terminal Computer Touchatag Server Server Script Server Database User logs in Touchatag card id sent Parameter returned Connect to server with parameters from Touchatag server Connect to Server Return connection Status Connect to Database Return DB Connection status Query Database for info. Return Status Info List Appears on Screen User initiates printing Initiate time out counter User requests text Request sent to server script Connect to Server SMPT Server Return connection Status Connect to Database Return DB Connection status Query Database for info. Return Status Info Request to send text message via email Text sent to uer Close connection after time out or user logs out Figure 12 - Terminal Query Sequence Diagram Functional Requirements Job Fair Pervasive Computing System Design Report Page 30 Table 7 - Terminal Requirements Terminal Functional Requirement 1 Once a user authenticates, a terminal shall initiate a connection to the server/database. Terminal Functional Requirement 2 A terminal shall display on its monitor a list of employers sorted by queue length, shortest queue first. Terminal Functional Requirement 3 A terminal shall allow for printing the list on a printer Terminal Functional Requirement 4 A terminal shall allow for instructing the server to send a text message to the user’s cell phone as to which employer to visit next. Non-functional Requirements Terminal Non-functional Requirement 1 A terminal shall not allow another user to authenticate while a user is already using and authenticated on the machine. Input specification The input to a terminal shall be in form of entering user id via the terminals’ keyboard. Authentication can be made by either input method; however, choosing the options of printing a list of employers and receiving a text message must be made via the keyboard. Output specification The main output of a terminal shall be the list of employers, sorted by queue length and applicable to the user, via the terminals monitor. The terminal shall also, upon user request, print the list on a printer and/or instruct the server to send the user’s cell phone a text message as to which employer to visit next. User interface specification By default the terminals monitor shall display a user sign in screen with one text entry box. Once a user authenticates, by manually entering his user id into the box, the terminal shall display a form with the list of employers, a check box for whether to send a text message to the user, a check box for printing the list and a done button. When pressed, the done button returns the terminal to the login screen and optionally initiates sending the text and printing the list. Job Fair Pervasive Computing System Design Report Page 31 Hardware or software specifications Terminals shall be connected to a printer, and a monitor. The terminal shall also have a wireless networking card for access to the internet. Test plan Once a prototype has been built, all requirements of the terminal shall be tested. Testers shall test the terminals functional requirements by attempting to authenticate themselves with a random mix of valid and invalid user IDs by the keyboard, both while a user is already authenticated, and when the terminal is free. Testers shall also randomly request printouts and texts. Testers shall ascertain while testing that a connection is established with the server/database, the list displays on the Terminals monitor, that a printed copy of the list displayed on the monitor is printed if requested to do so, and that a text message is sent if requested. Testers shall ascertain that a terminal does not let a user log in while another user is logged in. Prototyping The prototype for the terminals shall be a fully functional terminal, capable of interacting with the server/ database and printing the list of employers. Implementation Registration Student Registration The student can register for the career fair in the convenience of his/her home. By going to the “Student Registration Page” at http://dec0912.ece.iastate.edu/jobfairsystem/studentregistration.html, the student can register by imputing username, password, classification, major, job-type, phone number and carrier(optional), and also attach a resume for the employer to see. (see figure 1 under “Screenshots”) Usernames must be unique, there are no restrictions on passwords, classification includes freshman up to graduate student; majors supported include: Chemical Engineering Computer Engineering Software Engineering Electrical Engineering Industrial Engineering Mechanical Engineering Aerospace Engineering Civil Engineering Construction Engineering Agricultural Engineering Biosystems Engineering Job Fair Pervasive Computing System Design Report Page 32 After a student has registered, he/she may change his/her information by using his/her username and password on the “Update Student Information Page” http://dec0912.ece.iastate.edu/jobfairsystem/student_login.html. There is a link to this page at the bottom of the “Student Registration Page”. It will be used by students who have: Selected a wrong major Need to update their uploaded resume Need to change or add their telephone number Employer Registration Employers can register before the career fair by going to http://dec0912.ece.iastate.edu/jobfairsystem/employer-registration.html and inputting their name, password, and hiring criteria and positions. Employers may not re-register or change their information after registration. (See figure 2 under “Screenshots”) Job Fair Pervasive Computing System Design Report Page 33 Figure 13- Student Registration Job Fair Pervasive Computing System Design Report Page 34 Figure 14 - Employer Registration Association Association describes the stage in which students can link their tag ID to their profiles and information submitted during the registration phase. Drawing from a random pile of tags which each have their own ID in our system, they will swipe the tag over the “Association Terminal” RFID scanner and, knowing that this station is not associated with an employer; our PHP script directs users to input their username and password. Job Fair Pervasive Computing System Design Report Page 35 Figure 15 - Tag Association Employer Stations Employer stations were implemented to provide functionality to our system, spatially placed according to employer locations – these stations are not owned by the employer but by our system. The figure below represents roughly how this will look. Figure 16 - Employer Station Representation Terminals Terminals are used for students to check an updated list of which employers to visit next. Notice the figure below and the lack of explorer, giving users only the option of using the machine for its intended functionality. Terminals in our system are used by job-seeking students to get an updated list of who to visit next. They can be either desktops or laptops, and do not require an RFID reader to function. In order to decrease the chance that someone will use these terminals for other reasons than it was intended for, terminals will have their “explorer” process killed – giving them no access to functions such as the start menu, web browsers, etc. The terminal program is itself a program that directs an internal web browser to a specified site and only the specified site. Job Fair Pervasive Computing System Design Report Page 36 Figure 17 - Terminal Screenshot with Desktop Realizing there might be some mischievous characters at the career fair we removed the controls on this main form, resulting in the figure below. Figure 18-Terminal Input Form Job Fair Pervasive Computing System Design Report Page 37 After users enter their username and password, provided the information entered is correct they will be directed to a new form which includes their next-to-visit information. If the users enter the wrong password they will be shown a screen indicating so. If at any time a user closes the result form by clicking the X button at the top-right, the original prompt for username and password will re-appear. For the code, please see the appendix. Figure 19-Terminal Result Form (incorrect information) Career Fair Console The career fair console program is used to monitor some of the databases used in our project for debugging purposes. Please not that in a real implementation a different method would be used to store passwords in our databases then the way used now – which is easier for testing as we must input a variety of users where passwords can get confusing if we want variety. Job Fair Pervasive Computing System Design Report Page 38 Figure 20 - Career Fair Console Job Fair Pervasive Computing System Design Report Page 39 Database Figure 21 - Database Diagram The database is used for permanent storage of any information needed by the system. It is split into seven tables which are described below. MySQL was used for the database since it is free Job Fair Pervasive Computing System Design Report Page 40 software and is easily accessed by PHP scripts. For security reasons, the database runs on the same computer as the HTTP server, and is only locally accessible. Student and Employer Registration Tables These two tables are used for storing pre-fair registration information. The columns correspond to the types of information collected on the registration forms. For both tables there are columns for a username (or company name), password, class, major, and position. The username and password are used to verify the user during the association phase, and the other columns are used by the matching algorithm to find which employer(s) a student should visit next. Additionally, the student registration table contains other information including a phone number and provider, for text messaging service, and also a resume filename. Student and Employer Association Tables These two tables contain the data stored during the association phase. For students, this consists of the username and tag ID. For employers: the company name, IP address, and booth number. When a student swipes their tag at an employer booth, the student association table is used to find the username which corresponds to that specific tag. Likewise, with the employer association table, the corresponding company can be found using the IP address of the computer which has accessed the system. Finally, the booth number is entered simply for the convenience of the students, to make it easier to locate a certain company. Employer Queue Length Table This table is used to keep track of the current queue length of each company. The PHP script containing the matching algorithm takes this information in ascending order of queue length, to ensure that student-employer matches are returned lowest queue length first. This table also stores the total number of visits to each company. This information is not used during the career fair, but may be useful afterwards to assess whether the system has accomplished its purpose of allowing students to visit more employers, and employers to talk with more students. Ideally, the difference in the number of visits between companies should be small. Employers Visited Table The main purpose of this table is to prevent the matching algorithm from returning the name of a company which the student has already visited. The first column contains the username of students. The second column is blank at the start of the fair, and each time a student visits an employer, the company name is appended to this column. Job Fair Pervasive Computing System Design Report Page 41 Student-Employer Table The difference between this table and the previous one is that in this table, the second column only holds the name of the company that the student is currently visiting, or enqueued to visit. After checking out of a booth, the company name is removed and the column is blank. An extra feature of this system is the ability for employers to obtain the names of students currently waiting in line, and download their résumé if they uploaded one. Searching this table for columns equal to the name of a certain company will determine the names of students waiting in line at that company. Database Technical Details Before the start of the career fair, the database should be returned to its initial state, in which all tables contain zero rows. The PHP scripts take care of adding any entries to the database. For instance, after a successful submission of the registration form, a new row is added to either the student or employer registration table containing the submitted information. When a student associates their username with a tag, a new row is added to the student association table, and additionally, to the employers visited and student-employer tables. Likewise, when an employer associates their company name with their IP address, information is added to the employer association table as well as the employer queue table with the initial values of zero for queue length and total visits. Under normal circumstances, manual intervention of the database is not needed nor recommended, as undesirable behavior of the system may result. However, if a situation should arise where this is necessary, for instance to clear the tables before starting the registration phase, some basic information about modifying the database is described in the following subsections. Logging into MySQL First, it is necessary to be logged into the server which is running the MySQL daemon. From a terminal, issue the command: mysql –user=[username] –pass=[password] Where [username] and [password] are replaced with the correct values. At this point, a “mysql>” prompt should be displayed. Before viewing or modifying tables, the desired database must be selected first using the command “use [database name]”. If the name of the database is not known, the command “show databases;” will display a list of all databases currently installed. So, if the name of the database is “jobfairsystem,” then the command will be “use jobfairsystem”. Viewing and Deleting Data Once the database has been selected, the command “shows tables;” will display all tables contained within the current database. To view the columns and any entries within a specific table, issue the command: SELECT * FROM [table name]; If the table is not empty, then all rows and columns in the table will be displayed. If it is desirable to clear the database: DELETE FROM [table name]; should be issued for every table in the database. Additionally, the “WHERE” clause can be used to delete only rows which match a certain value. For instance: Job Fair Pervasive Computing System Design Report Page 42 DELETE FROM [table name] WHERE [column]=[value]; There are many other commands that can be used to modify the database tables, and describing all of them is beyond the scope of this document. Any SQL reference should be useful for this. However, as stated earlier, it should normally not be necessary to manually modify the database in any way. Also it is very important that nothing is deleted or changed in the database while the career fair is currently taking place. Algorithm Matching Algorithm Purpose Given the username of a student, the matching algorithm searches all companies for at least one match in three different variables. These variables are classification, major, and job type. So for instance, a junior in Computer Engineering searching for an internship will be matched with companies offering internships for Computer Engineers who are junior classification or lower. The top three matches are returned in lowest-queue-length-first order to the student, either through a terminal, or by text messaging. A particular company name will not be returned if the student has already visited the booth for that company. The matching algorithm is the main part of solving the job fair coordination problem. Returning a suggested list of employers to visit next helps eliminate wasted time waiting in lines and/or walking around trying to determine which employer to talk to next. Implementation The algorithm is defined within a function called getNextEmployer. Since the function is needed by more than one section of the system, it is defined in its own PHP file and included wherever necessary using the PHP include function. The function takes two parameters, the first one being the username of the student. The second determines whether to send a text message. A value of 0 denotes no text message, and 1 denotes send a text message. Text messages are sent when checking out of an employer booth, unless a student has chosen not to enter their phone number when registering. Also, a student can choose whether or not to receive a text message when viewing next employer results at a terminal. Values for classification, major, and job type are taken from the registration tables. These string values are then converted to numerical values in powers of two. The reason for this is that matching can be done simply by performing a bitwise AND operation, which is more efficient than doing several string comparisons. The company queue length table is used to check the current queue length of a company. In MySQL, it is possible to retrieve data in ascending or descending order of the value in some column. In this case, the table is fetched in ascending order of queue length. This way, any matches are automatically in the correct order of lowest-queue-length first. Finally, a single string check in the second column of the employers-visited table can determine whether the student has already visited the company in question. If they have, then the company Job Fair Pervasive Computing System Design Report Page 43 is not returned and the algorithm continues until three matches are found or the end of the employer list is reached. Testing Most of our testing was done in the design phase, such as input validity testing and boundary testing. We checked out quite a number of laptops to test a number of systems using our system at the same time with multiple users. Results The team successfully presented a fully functional demo of the system to the Industry Review Panel (IRP) on Dec 10, 2009. All the components of the system worked well in unison to give the panelists an effective, error-free and unique experience while using it as prospective students. The team provided a prototype demonstration of which the requirements and results/conclusions are provided as under- Requirements 6 laptops (wirelessly connected to the Internet and Touchatag™ software installed on all of them) 3 Employer booths 1 Pre-career fair registration booth, 1 Terminal, 1 Main Entrance Check-in 1 Database Tables Snapshot Display Screen The team borrowed the required laptops from the advisor, Professor Qiao – Ph.D. Conclusions Demo The team successfully hosted 42 visitors in total to the three employer booths (with 15 unique visitors) to their system without any technical glitches. The discrepancy is explained by users testing the system multiple times. All users had a good experience when questioned at the end about our project. All the components of the system as mentioned in the requirements survived stress testing, responded appropriately to invalid inputs and helped the visitors throughout their experience via the text messaging system or the use of the terminals. Considerations The same team that demoed our system also provided useful feedback as to the improvements we could make. They include: Integrate customer feedback into the system Job Fair Pervasive Computing System Design Report Page 44 Allow for users to define preferences for employers besides key requirements/criteria Privacy issues, such as users being able to see who was at the employer before them, should be addressed The question of large scale implementation and real-case testing came up in the IRP presentation Resources Material Revised Resource Requirements Table 8 - Revised Resource Requirements Item Number of Items Cost Poster 1 $0 Touchatag™ Readers (incl. tags) 3 $120 Terminal Computers 4 borrowing Server Computer 1 free Employer Laptops 2 borrowing Totals 11 $160 Labor Personal Effort Data Job Fair Pervasive Computing System Design Report Page 45 Figure 22 - Hours Worked Distribution Conclusion By bringing together a large group of employers and students in one place, the job fair provides valuable assistance to students looking for jobs and employers looking for employees; however, these same large numbers can lead to inefficiency in students visiting employers. Students may end up waiting in a long line to visit one employer while there is another employer with no wait at all, or students could bypass an employer altogether because he didn’t know the employer was recruiting for his major. By sending students to eligible employers with the shortest line, the system will maximize the number of prospective employers the students visit, thereby maximizing their chances of getting a job, and maximizing the number of eligible students that employers meet. References [1] "RFID Journal" Tikitag Becomes Touchatag™, Adds Business Apps. 23 April 2009 <http://www.rfidjournal.com/article/articleview/4632/1/1/>. [2] "touchatag" touchatag: Technical Overview. 23 April 2009 <http://www.touchatag.com/technical-whitepaper>. Job Fair Pervasive Computing System Design Report Page 46 Appendix Database Table Diagram Student Registration Sequence Diagram Job Fair Pervasive Computing System Design Report Page 47 Employer Registration Sequence Diagram Old PHP Code for Prototype Registration System Below is the PHP code for a prototype registration system which we have already developed. Currently, it is just a simple username and password registration to demonstrate how to store data into a MySQL database, and read the data back later. Obviously, the actual registration system will incorporate more input fields. This also contains the tag identification and username association, which will probably not change much in the final design. index.php: <html><body><h1> <?php $con = mysql_connect("localhost","sd",[password removed]); if(!$con) { die('Error: Could not connect to database.'); } mysql_select_db("seniord", $con); $tagid = $_GET["id"]; $result = mysql_query("SELECT * FROM Associations WHERE TagID=$tagid"); if ($_GET["id"] < 1000 || $_GET["id"] >= 2000) { echo "Tag ID " . $_GET["id"] . " is not between 1000 and 1999."; echo "</h1>"; Job Fair Pervasive Computing System Design Report Page 48 } else { if($row = mysql_fetch_array($result)) { echo $row['TagID'] . " is already registered to " . $row['Username']; } else { echo "</body><body OnLoad=\"document.f.name.focus();\">"; echo "Tag ID " . $_GET["id"] . " is currently unregistered."; echo "<form name=\"f\" action=\"confirm.php?id=" . $_GET["id"] . "\" method=\"post\">"; echo "</h1><br>Enter username: "; echo "<input type=\"text\" name=\"name\" />"; echo "<br>Enter password: "; echo "<input type=\"text\" name=\"pass\" />"; echo "<input type=\"submit\" value=\"Submit\" />"; echo "</form>"; } } mysql_close($con); ?> </body></html> confirm.php: <html><body><h1> <?php $tagid = $_GET["id"]; $username = $_POST["name"]; $password = $_POST["pass"]; if($tagid < 1000 || $tagid >= 2000) { die('Error: ID must be between 1000 and 1999.'); } if(!$username) { die('An error has occurred'); } if(!$password) { die('An error has occurred'); } $con = mysql_connect("localhost","sd",[password removed]); if(!$con) { die('Error: Could not connect to database.'); } mysql_select_db("seniord", $con); Job Fair Pervasive Computing System Design Report Page 49 $result = mysql_query("SELECT * FROM Register ORDER BY Username ASC"); $result1 = mysql_query("SELECT * FROM Associations ORDER BY TagID ASC"); $exists = 0; $exists1 = 0; while($row = mysql_fetch_array($result)) { if($row['Username'] == $username) { $exists = 1; $userpass = $row['Password']; } } if($exists == 0) { echo "Username " . $username . " does not exist. Did you register?"; } else { while($row1 = mysql_fetch_array($result1)) { if($row1['Username'] == $username) { $exists1 = 1; $tagid1 = $row1['TagID']; } } if($userpass == $password) { if($exists1 == 1) { echo "Username " . $username . " is already "; echo "associated with tag " . $tagid1 . "."; } else { mysql_query("INSERT INTO Associations (TagID, Username) VALUES ('$tagid', '$username')"); mysql_close($con); echo "Associated "; echo $_GET["id"]; echo " with "; echo $_POST["name"] . "."; } } else { Job Fair Pervasive Computing System Design Report Page 50 echo "Incorrect password for " . $username . "."; } } ?> </h1></body></html> register.php: <html><h1> <?php $username = $_POST["username"]; $password = $_POST["password"]; $ip = $_SERVER['REMOTE_ADDR']; if(!$username || !$password) { echo "<body OnLoad=\"document.f.username.focus();\">"; echo "Registration<br><br>"; echo "</h1>"; if($username) { echo "<font color=\"red\">"; echo "* Error: You did not enter a password.<br><br><br>"; echo "</font>"; } else if($password) { echo "<font color=\"red\">"; echo "* Error: You did not enter a username.<br><br><br>"; echo "</font>"; } echo "<form name=\"f\" action=\"register.php\" method=\"post\">"; echo "Enter desired username: "; echo "<input type=\"text\" name=\"username\">"; echo "<br>Enter desired password: "; echo "<input type=\"text\" name=\"password\">"; echo "<input type=\"submit\" value=\"Submit\">"; echo "</form>"; } else { $con = mysql_connect("localhost","sd",[password removed]); if(!$con) { die('Error: Could not connect to database.'); } mysql_select_db("seniord", $con); $result = mysql_query("SELECT * FROM Register ORDER BY Username ASC"); $taken = 0; while($row = mysql_fetch_array($result)) { if($row['Username'] == $username) Job Fair Pervasive Computing System Design Report Page 51 { $taken = 1; } } echo "<body>"; if($taken == 1) { echo "Username " . $username . " is already taken."; echo "</h1>"; } else { mysql_query("INSERT INTO Register VALUES ('$username', '$password', '$ip')"); echo "Registration completed normally."; echo "</h1>"; echo "Username: " . $username; echo "<br>Password: " . $password; } } ?> </body></html> Pseudo code for Next Visit Algorithm student = current student employers = array of employers from database (already ordered by queue length) function getNextEmployer for all employers if student.major is in employer.eligibleMajors and student.classification is in employer.eligibleClassifications and student.jobTypeSeeking is in employer.jobTypesOffering and student.visited(employer) == false return employer else repeat for next employer Job Fair Pervasive Computing System Design Report Page 52