Диплом: Автоматизация процессов управления взаимоотношениями с клиентами в службе реализации ООО "Киноафиша"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
89
Список использованной литературы
1. ГОСТ Р ИСО/МЭК 12207-2010. Информационная технология. Системная
и программная инженерия. Процессы жизненного цикла программных средств.
2. ГОСТ Р 57102-2016/ISO/IEC TR 24748-2:2011 Информационные
технологии (ИТ). Системная и программная инженерия. Управление жизненным
циклом. Часть 2. Руководство по применению ИСО/МЭК 15288
3. ГОСТ Р 56923-2016/ISO/IEC TR 24748-3:2011 Информационные
технологии (ИТ). Системная и программная инженерия. Управление жизненным
циклом. Часть 3. Руководство по применению ИСО/МЭК 12207 (Процессы
жизненного цикла программных средств)
4. ГОСТР 57193-2016. Процессы жизненного цикла систем.
5. Моисеенко Е.В., Лаврушина Е.Г. Информационные технологии в
экономике. – Владивосток: кафедра ИИКГ, Издательство ВГУЭС, 2004. - 246 с.
6. Вендров В.Я. Информационные системы в экономике. – М.: Инфра-М,
2012. – 240 с.
7. Балдин К.В., Уткин В.Б. Информационные системы в экономике. – М.:
Дашков и Ко, 2008. – 396 с.
8. Советов Б.Я., Водяхо А.И., Дубенецкий В.А., Цехановский В.В.
Архитектура информационных систем. – М.: Академия, 2012. – 288 с.
9. Советов Б.Я., Цехановский В.В., Чертовской В.Д. Представление знаний в
информационных системах. – М.: Академия, 2012. – 144 с.
10. Емельянова Н.З., Партыка Т.Л., Попов И.И. Проектирование
информационных систем. – М.: Форум, 2010. – 432 с.
11. Гвоздева Т.В., Баллод Б.А. Проектирование информационных систем. –
Ростов-на-Дону: Феникс, 2010. – 512 с.
12. Соловьев И.В., Майоров А.А. Проектирование информационных систем. –
М.: Академический Проект, 2010. – 400 с.
13. Пирогов В.Ю. Информационные системы и базы данных. Организация и
проектирование. – СПб.: БХВ-Петербург, 2011. – 528 с.
14. Мезенцев К.Н. Автоматизированные информационные системы. – М.:
Академия, 2011. – 176 с.
90
15. Серых Ю. Современный веб-дизайн. Настольный и мобильный. – М.:
Вильямс, 2017. – 384 с.
16. АИС «Кинотеатр». [Электронный ресурс].
URL:http://soft.oszone.net/program/6190/Kinoteatr/ ата обращения: 25.12.2017)
17. АИС «Премьера» [Электронный ресурс]. // Фирма R-Keeper
URL:http://rkdv.ru/avtomatization/cinema/ (дата обращения: 25.12.2017)
18. Описание BPwin 4.0. [Электронный ресурс] URL:
http://www.interface.ru/fset.asp?Url=/ca/bpwin2.htm (дата обращения:
25.12.2017)
19. Описание IntelliJ IDEA [Электронный ресурс] // Фирма JetBrains [Офиц.
сайт]. URL: https://jetbrains.ru/products/idea/ (дата обращения: 25.12.2017)
20. Описание Tedious [Электронный ресурс] // [Офиц. сайт]. URL:
http://tediousjs.github.io/tedious/ (дата обращения: 25.12.2017)
21. Описание Bizagi [Электронный ресурс] // [Офиц. сайт]. URL:
https://www.bizagi.com/en/products/bpm-suite/modeler(дата обращения: 25.12.2017)
22. PrimeReact [Электронный ресурс] // [Офиц. сайт]. URL:
https://www.primefaces.org/primereact/ (дата обращения: 25.12.2017)
91
Приложения
import React, {Component} from 'react';
import './App.css';
import {DataGrid} from 'primereact/components/datagrid/DataGrid';
import 'primereact/resources/primereact.min.css';
import 'primereact/resources/themes/omega/theme.css';
import 'font-awesome/css/font-awesome.css';
import {Panel} from "primereact/components/panel/Panel";
import {Button} from "primereact/components/button/Button";
import img from './components/movie_posters/66b7d573-f78d-44c8-8dc2-6d69d399a6a8.jpg';
import {TabPanel, TabView} from "primereact/components/tabview/TabView";
import {DataList} from "primereact/components/datalist/DataList";
import {Dialog} from "primereact/components/dialog/Dialog";
import {Accordion, AccordionTab} from "primereact/components/accordion/Accordion";
import {InputText} from "primereact/components/inputtext/InputText";
import {DataTable} from "primereact/components/datatable/DataTable";
import {Column} from "primereact/components/column/Column";
import {Lightbox} from 'primereact/components/lightbox/Lightbox';
import {Checkbox} from "primereact/components/checkbox/Checkbox";
import {InputTextarea} from "primereact/components/inputtextarea/InputTextarea";
import {GoogleMap, Marker, withGoogleMap, withScriptjs} from "react-google-maps"
import {SelectButton} from "primereact/components/selectbutton/SelectButton";
import moment from 'moment';
import 'moment/locale/ru';
import {TreeTable} from "primereact/components/treetable/TreeTable";
import {Calendar} from "primereact/components/calendar/Calendar";
class App extends Component {
constructor() {
super();
this.state = {
filmList: [],
cinemaList: [],
clientList: [],
sessionList: [],
analyticalReportDate: null,
analyticalReport: [],
selectedClient: null,
cinema: null,
film: null,
client: null,
selectedFilm: null,
showFilmDlg: false,
showSessionDlg: false,
showPurchase: false,
tickets: [],
metro_list: []
}
this.save = this.save.bind(this);
this.delete = this.delete.bind(this);
this.onCinemaSelect = this.onCinemaSelect.bind(this);
this.onFilmSelect = this.onFilmSelect.bind(this);
this.onClientSelect = this.onClientSelect.bind(this);
this.addNew = this.addNew.bind(this);
this.onTicketChange = this.onTicketChange.bind(this);
this.export = this.export.bind(this);
this.analyticalReportDateOnChange = this.analyticalReportDateOnChange.bind(this);
}
showFilmInfo(film) {
this.setState({
selectedFilm: film,
92
showFilmDlg: true
})
}
showSession(film) {
this.setState({
selectedFilm: film,
showSessionDlg: true,
showFilmDlg: false,
})
}
carTemplate(film) {
if (!film) {
return;
}
return (
<div className="ui-g-12 ui-md-3">
<Panel style={{textAlign: 'center', height: '430px'}}>
<img width="230" height="330"
src={film.big_poster}
alt={film.name} onClick={() => {
this.showFilmInfo(film)
}}/>
<div className="car-detail"><a onClick={() => {
this.showFilmInfo(film)
}}>{film.name}</a></div>
<hr className="ui-widget-content" style={{borderTop: 0}}/>
<Button onClick={() => {
this.showSession(film)
}}>Купить билеты
</Button>
</Panel>
</div>
);
}
showSessionForSelectedCinema(cinema) {
this.setState({
selectedCinema: cinema,
showSessionForSelectedCinemaDlg: true,
})
}
cinemaTemplate(car) {
if (!car) {
return;
}
return (
<div className="ui-g ui-fluid car-item">
<div className="ui-g-12 ui-md-12 car-details">
<div className="ui-g">
<div className="ui-g-2"><a href="#" onClick={() => {
this.showSessionForSelectedCinema(car)
}}>{car.name}</a></div>
<div className="ui-g-2">{car.address}</div>
<div className="ui-g-2"><i className="fa fa-circle"
style={{color: car.metro_color}}/>&nbsp;{car.metro}</div>
<div className="ui-g-2">{car.phone_number}</div>
<div className="ui-g-2"><a href={`http://${car.site}`} style={{color: '#4eafe6'}}>{car.site}</a>
</div>
</div>
<hr size={5} color="black"/>
</div>
</div>
);
93
}
renderFilmDialog() {
return <Dialog header="Подробно о фильме" visible={this.state.showFilmDlg} modal={true}
draggable={false}
positionTop={50}
width="60%"
onHide={() => this.setState({showFilmDlg: false})}>
{
this.state.selectedFilm && (<div className="ui-grid ui-grid-responsive ui-fluid"
style={{fontSize: '16px', padding: '20px'}}>
<div className="ui-grid-row" style={{textAlign: 'center'}}>
<div className="ui-grid-col-12">
<iframe width="854" height="480"
src={this.state.selectedFilm.trailer} frameborder="0"
gesture="media" allow="encrypted-media" allowfullscreen="allowfullscreen"
mozallowfullscreen="mozallowfullscreen"
msallowfullscreen="msallowfullscreen"
oallowfullscreen="oallowfullscreen"
webkitallowfullscreen="webkitallowfullscreen"/>
</div>
</div>
<div className="ui-grid-row">
<h2>{this.state.selectedFilm.name}</h2>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-2"><img width={100} height={143}
src={this.state.selectedFilm.small_poster}
alt={this.state.selectedFilm.name}/></div>
<div className="ui-grid-col-5">{this.state.selectedFilm.description}</div>
<div className="ui-grid-col-1"/>
<div className="ui-grid-col-4" style={{fontSize: '12px'}}>
<div className="ui-grid-row">
<div className="ui-grid-col-12">
Продолжительность: {this.state.selectedFilm.film_length}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">Режиссёр: {this.state.selectedFilm.director}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">Производство: {this.state.selectedFilm.country}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">В ролях: {this.state.selectedFilm.stars}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">Продюсеры: {this.state.selectedFilm.producers}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">Жанры: {this.state.selectedFilm.genre}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">Премьера: {this.state.selectedFilm.premier}</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">Возраст: {this.state.selectedFilm.age}</div>
</div>
</div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-2">
<br/>
<Button style={{width: '100px'}} onClick={() => {
94
this.showSession(this.state.selectedFilm)
}}>Купить билеты</Button>
</div>
<div className="ui-grid-col-10">
<Lightbox type="images" images={this.state.selectedFilm.images}/>
</div>
</div>
</div>)
}
</Dialog>
}
onTicketChange(e) {
let selectedTickets = [...this.state.tickets];
if (e.checked) {
selectedTickets.push(e.value)
} else selectedTickets.splice(selectedTickets.indexOf(e.value), 1);
this.setState({
tickets: selectedTickets,
resultPrice: selectedTickets.length * this.state.selectedSession
})
}
renderCinema() {
let cinema = [];
for (let i = 0; i < 80; i++) {
if (!(i % 10)) {
cinema.push(<br/>, <i>{(i / 10) + 1} </i>)
}
cinema.push(<Checkbox value={i} key={i}
onChange={this.onTicketChange}
checked={this.state.tickets.includes(i)}/>);
}
return cinema;
}
renderSessionForSelectedCinemaDialog() {
let footer = <div>
<Button style={{float: 'left'}} onClick={() => {
this.setState({showPurchase: false})
}}>Назад</Button>
<Button>Купить</Button>
</div>
const selectWhenTheSession =
[{label: `Сегодня ${moment().format('DD MMMM')}`, value: 'today'},
{label: `${moment().add(+1, 'days').format('DD ddd').toUpperCase()}`, value: 'tomorrow_1'},
{label: `${moment().add(+2, 'days').format('DD ddd').toUpperCase()}`, value: 'tomorrow_2'}
];
return <Dialog header={this.state.showPurchase ? 'Купить билеты' : 'Сеансы фильмов в
кинотеатре'}
visible={this.state.showSessionForSelectedCinemaDlg} modal={true}
draggable={false}
width="60%" footer={this.state.showPurchase ? footer : null}
onHide={() => this.setState({showSessionForSelectedCinemaDlg: false})}>
{
this.state.selectedCinema && (!this.state.showPurchase ?
<div className="ui-grid ui-grid-responsive ui-fluid"
style={{fontSize: '16px', padding: '20px'}}>
<div className="ui-grid-row">
<div className="ui-grid-col-8"><h2>{this.state.selectedCinema.name}</h2></div>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">
<SelectButton value={this.state.whenTheSession} options={selectWhenTheSession}
onChange={(e) => this.setState({whenTheSession: e.value})}/>
95
</div>
</div>
<br/>
<div className="ui-grid-row">
<div className="ui-grid-col-8"/>
<div className="ui-grid-col-4">
<div style={{textAlign: 'left'}}>
<InputText type="search" placeholder="Поиск"
size="25"/>
</div>
</div>
</div>
{this.state.filmList.map(item => {
return [<hr/>, <div className="ui-grid-row">
<div className="ui-grid-col-12">{item.name}<br/></div>
</div>, <hr/>, <div className="ui-grid-row">
{this.state.selectedCinema.session.map(session => {
return <Button onClick={() => {
this.setState({
showPurchase: true,
selectedSession: session.price
})
}}
className="ui-button-secondary">{session.time}<br/>{session.price}р</Button>
})}
</div>, <hr/>, <br/>]
})}
</div> : <div className="ui-grid ui-grid-responsive ui-fluid"
style={{fontSize: '16px', padding: '20px'}}>
<div style={{textAlign: 'center'}}>
<hr width={200} size={5} color="black"/>
<span>экран</span>
<br/>
{this.renderCinema()}
<br/>
<h3>Итого: {this.state.resultPrice}р</h3>
<br/>
<div className='ui-grid-row'>
<div className='ui-grid-col-4'/>
<div className='ui-grid-col-4'>
<h3 htmlFor="float-input">Электронная почта</h3>
<InputText placeholder="address@example.com"/>
</div>
<div className='ui-grid-col-4'/>
</div>
<div className='ui-grid-row'>
<div className='ui-grid-col-4'/>
<div className='ui-grid-col-4'>
<h3 htmlFor="float-input">Телефон</h3>
<InputText placeholder="+7"/>
</div>
<div className='ui-grid-col-4'/>
</div>
<br/>
<div className='ui-grid-row'>
<div className='ui-grid-col-4'/>
<div className='ui-grid-col-4'>
<Checkbox checked/>
<label>Согласен с условиями приобретения</label>
</div>
<div className='ui-grid-col-4'/>
</div>
96
</div>
</div>)
}
</Dialog>
}
renderSessionDialog() {
let footer = <div>
<Button style={{float: 'left'}} onClick={() => {
this.setState({showPurchase: false})
}}>Назад</Button>
<Button>Купить</Button>
</div>
const selectWhenTheSession =
[{label: `Сегодня ${moment().format('DD MMMM')}`, value: 'today'},
{label: `${moment().add(+1, 'days').format('DD ddd').toUpperCase()}`, value: 'tomorrow_1'},
{label: `${moment().add(+2, 'days').format('DD ddd').toUpperCase()}`, value: 'tomorrow_2'}
];
return <Dialog header={this.state.showPurchase ? 'Купить билеты' : 'Сеансы фильма в
кинотеатрах'}
visible={this.state.showSessionDlg} modal={true}
draggable={false}
width="60%" footer={this.state.showPurchase ? footer : null}
onHide={() => this.setState({showSessionDlg: false})}>
{
this.state.selectedFilm && (!this.state.showPurchase ?
<div className="ui-grid ui-grid-responsive ui-fluid"
style={{fontSize: '16px', padding: '20px'}}>
<div className="ui-grid-row">
<h2>{this.state.selectedFilm.name}</h2>
</div>
<div className="ui-grid-row">
<div className="ui-grid-col-12">
<SelectButton value={this.state.whenTheSession} options={selectWhenTheSession}
onChange={(e) => this.setState({whenTheSession: e.value})}/>
</div>
</div>
<br/>
<div className="ui-grid-row">
<div className="ui-grid-col-8"/>
<div className="ui-grid-col-4">
<div style={{textAlign: 'left'}}>
<InputText type="search" placeholder="Поиск"
size="25"/>
</div>
</div>
</div>
{this.state.cinemaList.map(item => {
return [<hr/>, <div className="ui-grid-row">
<div className="ui-grid-col-12">{item.name}<br/>{item.address}<br/><i
className="fa fa-circle"
style={{color: item.metro_color}}/> {item.metro}</div>
</div>, <hr/>, <div className="ui-grid-row">
{item.session.map(session => {
return <Button onClick={() => {
this.setState({showPurchase: true})
}}
className="ui-button-secondary">{session.time}<br/>{session.price}р</Button>
})}
</div>, <hr/>, <br/>]
})}
</div> : <div className="ui-grid ui-grid-responsive ui-fluid"
style={{fontSize: '16px', padding: '20px'}}>
97
<div style={{textAlign: 'center'}}>
<hr width={200} size={5} color="black"/>
<span>экран</span>
<br/>
{this.renderCinema()}
<br/>
<h3>Итого: {this.state.resultPrice}р</h3>
<br/>
<div className='ui-grid-row'>
<div className='ui-grid-col-4'/>
<div className='ui-grid-col-4'>
<h3 htmlFor="float-input">Электронная почта</h3>
<InputText placeholder="address@example.com"/>
</div>
<div className='ui-grid-col-4'/>
</div>
<div className='ui-grid-row'>
<div className='ui-grid-col-4'/>
<div className='ui-grid-col-4'>
<h3 htmlFor="float-input">Телефон</h3>
<InputText placeholder="+7"/>
</div>
<div className='ui-grid-col-4'/>
</div>
<br/>
<div className='ui-grid-row'>
<div className='ui-grid-col-4'/>
<div className='ui-grid-col-4'>
<Checkbox checked/>
<label>Согласен с условиями приобретения</label>
</div>
<div className='ui-grid-col-4'/>
</div>
</div>
</div>)
}
</Dialog>
}
save(what) {
if (what === 'cinema') {
let cinemas = [...this.state.cinemaList];
if (this.newCinema)
cinemas.push(this.state.cinema);
else
cinemas[this.state.cinemaList.indexOf(this.state.selectedCar)] = this.state.cinema;
this.setState({cinemaList: cinemas, selectedCar: null, cinema: null, displayCinemaDialog:
false});
}
if (what === 'film') {
let films = [...this.state.filmList];
if (this.newFilm)
films.push(this.state.film);
else
films[this.state.filmList.indexOf(this.state.selectedCar)] = this.state.film;
this.setState({filmList: films, selectedCar: null, film: null, displayFilmDialog: false});
}
if (what === 'client') {
let clients = [...this.state.clientList];
if (this.newClient)
clients.push(this.state.client);
else
clients[this.state.clientList.indexOf(this.state.selectedCar)] = this.state.client;
98
this.setState({clientList: clients, selectedCar: null, client: null, displayClientDialog: false});
}
}
delete(what) {
if (what === 'cinema') {
let index = this.state.cinemaList.indexOf(this.state.selectedCar);
this.setState({
cinemaList: this.state.cinemaList.filter((val, i) => i !== index),
selectedCar: null,
cinema: null,
displayCinemaDialog: false
});
}
if (what === 'film') {
let index = this.state.filmList.indexOf(this.state.selectedCar);
this.setState({
filmList: this.state.filmList.filter((val, i) => i !== index),
selectedCar: null,
film: null,
displayFilmDialog: false
});
}
if (what === 'client') {
let index = this.state.clientList.indexOf(this.state.selectedCar);
this.setState({
clientList: this.state.clientList.filter((val, i) => i !== index),
selectedCar: null,
client: null,
displayClientDialog: false
});
}
}
updateCinemaProperty(property, value) {
let cinema = this.state.cinema;
cinema[property] = value;
this.setState({cinema: cinema});
}
updateFilmProperty(property, value) {
let film = this.state.film;
film[property] = value;
this.setState({film: film});
}
updateClientProperty(property, value) {
let client = this.state.client;
client[property] = value;
this.setState({client: client});
}
onCinemaSelect(e) {
this.newCinema = false;
this.setState({
displayCinemaDialog: true,
cinema: Object.assign({}, e.data)
});
}
onFilmSelect(e) {
this.newFilm = false;
this.setState({
displayFilmDialog: true,
film: Object.assign({}, e.data)
});
}
onClientSelect(e) {

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)