https://github.com/mnitchev/movietheater
Movie theater site project with Java EE.
https://github.com/mnitchev/movietheater
Last synced: 10 months ago
JSON representation
Movie theater site project with Java EE.
- Host: GitHub
- URL: https://github.com/mnitchev/movietheater
- Owner: mnitchev
- Created: 2016-06-10T15:03:46.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-06-30T10:43:19.000Z (almost 10 years ago)
- Last Synced: 2025-06-20T06:04:36.553Z (12 months ago)
- Language: Java
- Size: 3.57 MB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#Документация по проект "РЕЗЕРВАЦИЯ НА БИЛЕТИ ЗА КИНО " проект Разработка на бизнес приложения с Java EE
Приложението има за цел да се създаде уеб приложение за резервация на билети в кино. Проектът е разработен с Eclipse IDE for Java EE Deveopers. Графичният потребителски интерфейс се реализира с употребата на HTML, CSS и jQuery. Приложението използва web server Аpache Тomee JaxRS версия 1.7.4. За система за съхранение на изходния код е използван github, където файловете на проекта са качени на адрес - https://github.com/mnitchev/100kina
Базата данни, която се използва е in memory база. Създава се всеки път при run на сървъра. За самата реализация на базата се използва JPA, достъпването до базата става с Entity Manager. EntityManager достъпва отделните таблици в базата при инстанцирането си в различните класове в пакета stoKina.dao . За инициализирането и жизнения цикъл на този, както и на останалите обекти в приложението се използва CDI и EJB.
Сигурността е покрита от следните основни положения. Приложението поддържа базови средства за аутентикация на съществуващи потребители и регистрация на нови такива. Приложението, освен това, прави разделение на потребителите в три основни групи- user, staff, administrator. User е обикновения потребител, притежаващ всички общоприети функционалности на приложението. Staff потребителите са с разширени фукционалности. Те имат възможност да могат да виждат списък с всички закупени билети за дадена прожекция. Освен това, те да могат да виждат списък с всички закупени билети за даден потребител. Служителите в киното ( и само те) могат да отбелязват присъствието на всеки дошъл на касата потребител, който предварително е извършил резервация. Единственото, по което staff се отличава от administrator потребителя, е това, че той има възможност да промени обикновено регистрирания потребител- user в staff потребител (служител). Потрбителския вход, регистрация или аутентикация, бива валидиран. Всяка стойност, която се предоставя от потребителя на приложението задължително се валидира на server-side и на client-side.
По отношение на функционалността си уеб сайтът притежава следните
основни функционалности:
Потребителите могат да се регистрират.
Потребителите могат да се идентифицират пред сайта с потребителско име и парола.
Потребителите да могат да разглеждат списък с филмите, които киното предлага.
За всеки филм, който присъства като запис в таблица Movie като част от базата данни, има точно по една прожекция.
За всяка избрана прожекция, потребителите да могат да избират място в залата. При избора може да бъдат запазени между едно и пет места. Запазването от своя страна разгръща два вида функционалност - купуване на билети за съответно посочените места от текущия потребител или резервиране на билетите. Резервираните билети се блокират и се пазят 10 минути, . При изтичане на тези минути, ако не се извърши плащане, местата се освобождават (деблокират). Системата да предлага само един тип билети – билети по редовна цена, която е фиксирана.
При преминаване към плащане, за всяко място съответства точно един билет. В резултат една резервация може да съдържа няколко билета, съответно няколко места. Приложението притежава логин и форма за регистрация. Информацията за билетите,прожекциите и потребителите на системата се съхраняват в база данни, а резервираните(блокираните) билети се пазят в конкурентен мап.
Класовете на проекта са организирани в няколко пакета – dao, filters, model, rest, services, utils. В dao пакета се помещават три класа, които отговарят за data access object съответно за билет, филм и потребител. Класовете са анотирани със анотацията Singleton и използват Entity Manager. В пакета filters се помещават класовете за секюрити часта на приложението, които проверяват за ролята на текущия потребител и изпълнението на заявката му, при грешка се извършва препращане към login.html. Също се проверява и съдържанието на зявката да не съдържа XSS атака към приложението. В пакета models се съдържат базовите класове на проекта – Movie, Ticket, User. Те се използват за записи в базата данни и са анотирани съответно с @Entity и @XmlRootElement. Полетата на класа Movie са Integer id – генериращ се автоматично идентификационен номер и String title – името на съответната прожекция. Полетата на класа Ticket са Long id - генериращ се автоматично идентификационен номер, Integer seatNumber- номер на мястото, което се резервира с този билет , String movieTitle – заглавие на филма Date timeOfEntry – дата на създаване на билета. Полетата на класа User са Long id – генериращ се автоматично идентификационен номер, String username – име на потребителя, String password – парола на потребителя, String email – e-mail на потребителя и String role – потребителски права, които могат да бъдат administrator, user, staff. В пакета rest се съдържа единствено класа RestApp, който декларира, че се използва REST архитектура за приложението. В пакета Servicies се помества и основната функционалност на проекта. Там са класовете, които отговарят за изпълнението на заявките. Класа MovieManager добавя към пътя movie и изпълнява заявките – getAllMovies, getTicketsForMovie, buyTicket и търсене по име на филм. В класа са инжектнати MovieDAO, TicketDAO и UserContext, които се използват за свързване към записаните филми и билети и текущия потребител на приложението. Класа TicketOrganizer се грижи за съхранението на запазените билети, проверката дали подаден билет е вече запазен и не е с изтекло време и взимане на всички запазени билети. TicketManager класа се грижи за заявките свързани с билета и дабовя към пътя /ticket. Той отговаря на заявките – getAllTicketsForMovie, getAllTicketsForUser, getAllReservedTickets и добавяне към резервирани и купуване на билети с дабавяне съответно към пътя /reserve и /buy с до пет query параметъра. Друг от този пакет е UserContext, отговарящ за съхранението на текущия потребител. Класа UserManager изпълнява заявки за потребителите на приложението – secure, register, login, authenticated, current, logout и добавя към пътя /user. В пакета utils се съдържа единствено класа DataBaseUtils, който служи за въвеждане на билети, филми и потребители в базата данни за тестване и онгледяване. Страниците на приложението са написани с html, css , javascript – jquery. За визуализацията е използван framework – bootstrap. Страницата login.html служи за влизане на потребителя с име и парола като визуализира формата за това.При успех препраща към program.html или рефрешва страницата. Program.html изпраща на сървъра get заявка и показва всички филми. Страницата register.html визуализира формата за регистрация на потребител със съответните му полета. Страницата register_staff.html се използва за регистрация на потребител от потребител с роля staff. Reserve.html дава възможност за изберане брой на билетите и местата, които да се заявят, и изпраща заявка за тяхната покупка или резервация на сървъра в зависимост от използвания бутон. Страницата info.html показва на потребителя всичките му билети.
Изготвили:
Божидар Димитров, 81192
Васил Николов, 81184
Даниел Шушков, 81102
Кристина Гочева, 81117
Марио Ничев, 81167