
Introduction
I want to talk about one interesting problem that arose before me and my colleague at the university. Although now and summer, but life there is not quenched for a minute. All fussing, processing documents, counting applicants, if all summarized - the season of entry into universities. I study at the technical faculty of the university, and I study well, so we were offered to write an electronic queue for admission of applicants. Without hesitation, my colleague and I (both in group and work) agreed. The reason for not wanting to use some kind of ready-made products for the university was the exorbitant price of these developments, which was about 300t.r. Maybe not a lot, but for our city the price is high, which is probably why they decided to attract students from their university, to all other things, this is also a good experience in the industry.
Retreat - as it was before
Last year everything was terrible: the applicant comes with his parents, asks who is the last person in the queue for filing documents, and is waiting in the wings (yes, exactly an hour, because sometimes the clock had to sit). Then the released secretary went out into the corridor and with a loud voice asked who was next for such and such a specialty. After the applicant has applied for one specialty, he stands in a different line, in order to apply for another specialty. This year everything had to change ...
Task
We were given the task “To develop such a system that would allow the applicant not to worry where he stands and not stand in several queues if he enters several specialties”.
Provided the following information:
“The admissions committee is in three classrooms. A total of 28 tables and 28 secretaries, 10 secretaries in two rooms and 8 in the third. Each secretary is assigned a specialty. While the stream of applicants is small, the secretary accepts documents only in his specialty. When the flow of applicants becomes large, so that the secretaries would not sit idle, they begin to accept documents from other specialties of their faculty. ”')
It turns out that we have only 28 lines. For example, in Sberbank, in order to get up in two queues, you must take two tickets, and there is a possibility that while you are serving in one queue, you may be called to another. We considered this unacceptable for our case and made it possible to stand simultaneously in several queues.
Brainstorm
Brainstorming the task allowed us to make a brief summary of the development, which later had to be followed:
- The queue should be one for one person.
- The applicant would just have to sit and wait for him to be called.
- Secretaries processing applications must be provided with a convenient system of “obtaining” the applicant for service
- There should be a convenient way to display the queue of applicants
- Implement the possibility of assigning priority and non-priority specialties to the table
After that, immediately began to collect ideas on how to implement it all. Microsoft SQL SERVER 2005 and Delphi became the initial data for the development. There were a lot of ideas and several times they were revised, but in the end, the idea of ​​a system of applications was still formed.
It was decided to divide the system into 4 programs:
- Program for displaying information on the big screen (using a projector) in the place where applicants will be waiting
- Program for secretaries, allowing you to take applicants
- Program for a person who will sit at the entrance and register entrants into the system
- A program for the administrator who can configure the parameters of the tables and track the queue of applicants.
Since the time for development and testing was short, namely, 1 month, I had to reject all kinds of delights and make the program interface as simple as possible.
The program "Display" - output queue
The interface of the queue display program was decided to do the following: the last 15 messages are displayed about which entrant, which audience and which table to go to.
The “Next” program is a convenient tool for secretaries.
We were asked to make the interface for the secretarial program as simple as possible, and so that it would be impossible to do something extra. At first we wanted to make a program with one button “Next”, but then it turned out that the applicant could not come, except to come. So, one more button was added to the interface and a window with information in which specialties are displayed, to which the applicant actually goes. The specialties for which the applicant has already formed are highlighted in green. After pressing the button, the program interface is blocked for a certain time in order to avoid accidental clicks.
Applicant Registration Program
The program for registration of applicants in the system was also implemented on the basis of simplicity. We were told that the maximum applicant can apply for 5 different specialties. Well 5 so 5, we said to ourselves and made the following interface.
The program "Control Panel"
The program for the administrator did not need to be equipped with highly convenient interfaces, so it was made on the basis of calculation (I set it up once and for all). For example, we were told to make it so that in the event of a strong influx of applicants (and on some days the number of people served could reach 200-300 people), we could set up tables so that each table could accept all applicants. No sooner said than done. There was an opportunity for each table to fix the main specialties and, in addition to them, side. From the queue of secondary specialties, applicants would be taken only if there were no one in the main line.
Program features:
- Adding new specialties
- Adding new tables
- Attaching to the tables of priority and non-priority specialties
- View statistics: How many applicants are in line and for what specialty; which applicant is now standing
- Determining the approximate waiting time of the applicant in the queue
System Logic - Ideal VS Reality
Inside the university immediately after the entrance sits a secretary who registers the applicants. He learns from the applicant's specialty for which he wants to go, enters them in his program and issues an individual number to the applicant. The applicant with this number is held in the waiting room, where he periodically looks at the big screen, which shows the movement of the queue.
The appearance of a new record on the screen is accompanied by a sound signal and the applicant does not miss his turn, unless he leaves somewhere. After the appearance of information about your room, audience and table where you need to go, the applicant goes to the place specified by the program. There he is already awaited by the secretary for registration. After registration, the applicant either returns to the waiting room (if he has more specialties for which you need to apply) or goes home happy.
This happens if we consider the ideal case: the system works perfectly, and the applicant is the ideal applicant who keeps a close eye on everything and is not late.
In reality, the cases are different. The applicant can skip the recording on the monitor, move away for water or simply go about his business. In this case, it is impossible to give the secretary a long time to spend valuable time, because, in addition to the applicant who’s gone, there are those who want to get formalized as soon as possible. In the system, we give one minute for the applicant to wait for the secretary (the secretary can wait more for his discretion, but he can neither complete the call for the applicant, call the next one, nor even close the program), then the secretary can click on the “Late” button , and exclude the late applicant for 2 minutes from the queue. That is, the late entrant is excluded from the queue for 2 minutes, then the program itself returns it to the queue, and not the last, but the same number that was given to it (after all, if put to the end, the applicant can wait until the end of the day). But endlessly it is also not profitable to return an applicant, besides, if there are 3-4 such applicants, they can simply paralyze the queue, so if the applicant does not come for the third time, we throw him out of the queue for half an hour (in case he drove off on business). In half an hour we return him to the queue and if he is again 3 times late, the exception from the queue will be completely.
Program logic
The program "Display" to display the queue of applicants
This program is used to notify applicants about the movement of the queue. After the next button is pressed by the secretary, a record of this action is entered into the database. This program takes all the records from the database and displays them on the screen. New entries are displayed below, highlighted in gray. Appeared records gradually rise up. That is, the newer records supplant the oldest. If the applicant is late, the program displays next to the record that has already appeared that the applicant was late and was temporarily excluded from the queue (in our case it was decided to select such applicants with faint red and write “Delayed” about them).
There are also additional actions that the program performs for the convenience of queuing:
- If a person is late, it is marked in red. If the entry with information about the lateness has not yet left the screen, and the person has already returned to the queue and a new entry has appeared with him, then all entries about his lateness are erased. They can only mislead the applicant.
- If a person is fully formed, and the secretary has pressed the button “Design is over”, and the record of the applicant is still on the screen, then it is deleted. That is, all applicants with fully completed documents are removed from the screen. Made in view of the release of useful space for new applicants
Secretary Program
The program hangs on the desktop at the secretaries. To call the applicant, you must click on the "Next" button. If there is someone in the queue, the program will display the number of the applicant, his specialty and add the applicant to the table from which information is displayed in the waiting room. There is one important thing to note. If the applicant is on several specialties, the program additionally blocks it, so that he cannot be called at the same time by another table, otherwise the meaning of this system would be lost. If the applicant has arrived, the secretary draws it up and after all registration he presses the button “Design completed”, if the secretary did not wait for the applicant, he presses the button “Late” and calls the next applicant.
Important points of the program:
- After pressing the “Next” button for 1 minute, all program elements are blocked. First, to prevent double pressing of buttons, and second, to prevent accidental closing of the program
- During the registration of the applicant program can not be closed or call the menu, you can just press either the button "Late" or "Registration is over"
- If there was no one in the queue, the program displays a message about it and starts monitoring the base for the appearance of someone in the queue. As soon as someone appears in the queue, the program will notify you with a message and the appearance of a green bar for visual notification. It was done so that the secretaries did not have to poke at the “Next” button to check whether someone appeared in the queue or not.
- When you press any button, this is followed by a mandatory lock for 10 seconds to avoid double or accidental pressing
- Each table has a login and password.
Applicant Registration Program
Perhaps the easiest program in the system. The secretary selects from the 1st to the 5th specialties, presses the “Register” button, a unique number of the registered entrant appears in the program, the secretary issues a number to the entrant. It also implemented protection against accidental clicks in the form of a 5-second wait after each registration.
Administration program
This program does not participate in the queue process, but participates in the system administration.
Problems that might arise
- One of the main problems could be the hangup or shutdown of the secretary’s computer during the registration of the applicant. After all, the program would not have time to let the database know that the applicant was registered, and he would not return to the queue. To do this, the administration program was given the opportunity to edit the applicant's employment flag field. Since such cases are rare (never occurred in the course of the program), it is not difficult for one entrant to correct one field for one applicant
- Disable the server. This is generally an outstanding event. However, even this could not be so scary. And in this case, when cutting down the server, only the connection with the database is lost, the programs continue to function normally. The main thing in this case is the organizational point - to warn the secretaries for some time not to press anything in the program at all, so that the whole system situation remains unchanged. After turning on the server, the programs would contact the base again and continue to work from the place where they finished
- Force majeure in the form of floods, earthquakes and other things. To envisage such situations was not rational in our case, so we decided to close our eyes to this =)
Problem that arose
Yes, there was only one problem during the program. If during the appearance of a new applicant in the queue for about 0.1 seconds, the “Next” button was pressed by two secretaries belonging both to the same specialty, then this applicant would appear twice on the screen with the queue and go to both secretaries. It happened so that three secretaries clicked =) The problem was quickly resolved, but the program needed to be fixed. Without hesitation, when you click the Next button, instead of first selecting the applicant, and then ticking the employment, we decided to enter a hash. First, the applicant was assigned a hash, then he was selected, and only then the hash was erased, and at the same time a tick was placed. When sampling, of course, was taken into account - there is a hash or not. After testing and verification, it turned out that the program is not affected by this bug anymore.
Work results
At the moment, the period for accepting documents has come to an end (at least at our university) and some conclusions can be made on the results of the program:
- About 3,500 applicants were served
- In the most visited day there were over 250 applicants
- With the program, each applicant saves on average 50% (when submitting documents for two specialties, and over 80% when applying for three or more) time compared to a normal queue
- There is no psychological stress like “Who is the last?”
- You always know about how many people you will go through
- Not dangerous to leave for a couple of minutes for fear of losing your turn.
- The burden on secretaries who had to go out every time and ask if someone was in their specialty decreased
- System failure has never happened, given the turnkey development time - 1 month
- Electronic queuing is convenient