Музыкальный каталог

Рассмотрение структуры и схемы базы данных. Описание таблиц и архитектура приложения информационной системы "Музыкальный каталог". Изучение интерфейса пользователя: страниц регистрации, главной и страницы поиска. Приложение для работы с базами данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.07.2014
Размер файла 821,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

"Самарский государственный аэрокосмический университет имени академика С.П. Королева

(национальный исследовательский университет)"

Факультет информатики

Кафедра технической кибернетики

Курсовой проект

Музыкальный каталог

Выполнили студенты:

Еникеев Р.М., Адушкин А.С.

Группа: 6407

Руководитель работы:

Белоусов А.А.

Самара 2014

Оглавление

Введение

1. Структура базы данных

1.1 Схема базы данных

1.2 Описание таблиц

2. Архитектура приложения

3. Интерфейс пользователя

3.1 Страница регистрации

3.2 Главная страница

3.3 Страница поиска

3.4 Приложение для работы с базами данных

Приложение

Введение

Информационная система "Музыкальный каталог" предназначена для обеспечения удобной навигации пользователей в мире музыки. Обычным пользователям система предоставляет следующие возможности: регистрация на сервисе; поиск музыки по названиям песен; оценивание песен. Администратор может управлять базой данных с помощью отдельного приложения.

1. Структура базы данных

1.1 Схема базы данных

На рис. 1 приведена схема используемой базы данных.

Рисунок 1 -Схема базы данных.

SQL-скрипты создания таблиц приведены в приложении А.

1.2 Описание таблиц

Краткое описание таблиц используемой схемы базы данных приведено в таблице 1.

Таблица 1. Описание таблиц базы данных.

Таблица

Атрибут

Описание

artists

Содержит информацию об исполнителях альбомов.

artist_id

Уникальный идентификатор исполнителя.

name

Имя исполнителя.

albums

Содержит информацию об альбомах.

album_id

Уникальный идентификатор альбома.

name

Название альбома.

released

Год выпуска альбома.

songs

Содержит информацию о конкретной песне.

song_id

Уникальный идентификатор песни.

name

Название песни.

duration

Продолжительность песни.

users

Содержит информацию о зарегистрированных в системе пользователях.

user_id

Уникальный идентификатор пользователя.

login

Логин пользователя.

password

Пароль пользователя. Хранится в хешированном виде.

name

Имя пользователя.

album_artists

Содержит информацию об авторах альбомов. Наличие записи в данной таблице означает, что исполнитель является автором указанного альбома (связь многие-ко-многим).

album_id

Уникальный идентификатор альбома.

artist_id

Уникальный идентификатор исполнителя.

album_songs

Содержит информацию о составе альбома. Наличие записи в данной таблице означает, что песня входит в указанный альбом (связь многие-ко-многим).

album_id

Уникальный идентификатор альбома.

song_id

Уникальный идентификатор песни.

ratings

Содержит информацию об оценках пользователей.

user_id

Уникальный идентификатор пользователя.

song_id

Уникальный идентификатор песни.

rating

Оценка пользователя (от 1 до 5).

genre

Содержит информацию о жанрах песен.

genre_id

Уникальный идентификатор жанра.

name

Название жанра.

genre_songs

Содержит информацию о составе жанров. Наличие записи в данной таблице означает, что песня имеет указанный жанр (связь многие-ко-многим).

genre_id

Уникальный идентификатор жанра.

song_id

Уникальный идентификатор песни.

2. Архитектура приложения

При написании информационной системы были использованы следующие технологии:

· MySQL Community Server - свободно распространяемый сервер баз данных;

· Servlet - Web-сервер, который умеет работать с сервлетами, запускает Java-машину, которая в свою очередь выполняет сервлет, а сервлет отдает данные, которые он сформирует.

· Java Server Pages - технология, позволяющая веб-разработчикам легко создавать содержимое, которое имеет как статические, так и динамические компоненты. Наша информационная система также использует библиотеку JSTL, расширяющую спецификацию JSP;

· На уровне представления используются стандартные технологии: XHTML, CSS, JavaScript.

На рисунке 2 приведена общая архитектура приложения. Пример Servlet-класса - в приложении Б; JSP-страницы - в приложении B.

Рисунок 2 - Общая архитектура приложения.

3. Интерфейс пользователя

3.1 Страница регистрации

Рисунок 3 - Страница регистрации.

3.2 Главная страница

Рисунок 4 - Главная страница.

3.3 Страница поиска

Рисунок 5 - Страница поиска.

база данные каталог музыкальный

3.4 Приложение для работы с базами данных

Рисунок 6 - Приложение для работы с БД.

Приложение А

SQL-скрипты создания таблиц

CREATE SCHEMA IF NOT EXISTS `music` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -- ----------------------------------

-- Table `music`.`artists`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`artists` (

`id` INT NOT NULL AUTO_INCREMENT ,

`name` VARCHAR(32) NOT NULL , PRIMARY KEY (`id`) );

-- -----------------------------------------------------

-- Table `music`.`albums`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`albums` (

`id` INT NOT NULL AUTO_INCREMENT ,

`name` VARCHAR(32) NOT NULL ,

`released` DATE NOT NULL ,

PRIMARY KEY (`id`) );

-- -----------------------------------------------------

-- Table `music`.`songs`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`songs` (

`id` INT NOT NULL AUTO_INCREMENT ,

`name` VARCHAR(64) NOT NULL ,

`duration` INT NOT NULL ,

PRIMARY KEY (`id`) );

-- -----------------------------------------------------

-- Table `music`.`users`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`users` (

`id` INT NOT NULL AUTO_INCREMENT ,

`login` VARCHAR(16) NOT NULL ,

`password` VARCHAR(32) BINARY NOT NULL ,

`name` VARCHAR(16) NOT NULL ,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `login_UNIQUE` (`login` ASC) );

-- -----------------------------------------------------

-- Table `music`.`album_artists`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`album_artists` (

`album` INT NOT NULL ,

`artist` INT NOT NULL ,

PRIMARY KEY (`album`, `artist`) ,

INDEX `fk_album_artists__albums_idx` (`album` ASC) ,

INDEX `fk_album_artists__artists_idx` (`artist` ASC) ,

CONSTRAINT `fk_album_artists__albums`

FOREIGN KEY (`album` )

REFERENCES `music`.`albums` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_album_artists__artists`

FOREIGN KEY (`artist` )

REFERENCES `music`.`artists` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION);

-- -----------------------------------------------------

-- Table `music`.`album_songs`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`album_songs` (

`album` INT NOT NULL ,

`song` INT NOT NULL ,

PRIMARY KEY (`album`, `song`) ,

INDEX `fk_album_songs__albums_idx` (`album` ASC) ,

INDEX `fk_album_songs__songs_idx` (`song` ASC) ,

CONSTRAINT `fk_album_songs__albums`

FOREIGN KEY (`album` )

REFERENCES `music`.`albums` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_album_songs__songs`

FOREIGN KEY (`song` )

REFERENCES `music`.`songs` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION);

-- -----------------------------------------------------

-- Table `music`.`ratings`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`ratings` (

`user` INT NOT NULL ,

`song` INT NOT NULL ,

`rating` TINYINT UNSIGNED NOT NULL ,

PRIMARY KEY (`user`, `song`) ,

INDEX `fk_ratings__users_idx` (`user` ASC) ,

INDEX `fk_ratings__songs_idx` (`song` ASC) ,

CONSTRAINT `fk_ratings__users`

FOREIGN KEY (`user` )

REFERENCES `music`.`users` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_ratings__songs`

FOREIGN KEY (`song` ) REFERENCES `music`.`songs` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION);

-- -----------------------------------------------------

-- Table `music`.`genre`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`genre` (

`id` INT NOT NULL AUTO_INCREMENT ,

`name` VARCHAR(64) NOT NULL ,

PRIMARY KEY (`id`) );

-- -----------------------------------------------------

-- Table `music`.`genre_songs`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `music`.`genre_songs` (

`genre` INT NOT NULL ,

`song` INT NOT NULL ,

PRIMARY KEY (`genre`, `song`) ,

INDEX `fk_genre_songs__genres_idx` (`genre` ASC) ,

INDEX `fk_genre_songs__songs_idx` (`song` ASC) ,

CONSTRAINT `fk_genre_songs__genres`

FOREIGN KEY (`genre` )

REFERENCES `music`.`genre` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_genre_songs__songs`

FOREIGN KEY (`song` )

REFERENCES `music`.`songs` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION);

Приложение Б

Пример Сервлета

import java.io.*;

import java.util.*;

import java.sql.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Authentication extends HttpServlet {

private ServletConfig config;

public void init(ServletConfig config)

throws ServletException {

this.config = config;

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Connection connection = null;

PrintWriter out = response.getWriter();

ResultSet rs;

String userName = new String("");

String passwrd = new String("");

String name = new String("");

response.setContentType("text/html");

try {

Class.forName("com.mysql.jdbc.Driver");

Properties properties = new Properties();

properties.setProperty("user", "root");

properties.setProperty("password", "123");

properties.setProperty("useUnicode", "true");

properties.setProperty("characterEncoding", "utf8");

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/music", properties);

//Заносим данные в базу

String sql = "select login,password,name from users";

Statement s = connection.createStatement();

s.executeQuery(sql);

rs = s.getResultSet();

while (rs.next()) {

userName = rs.getString("login");

passwrd = rs.getString("password");

name = rs.getString("name");

}

rs.close();

s.close();

} catch (Exception e) {

System.out.println("Exception is ;" + e);

}

if (userName.equals(request.getParameter("login"))

&& passwrd.equals(request.getParameter("pass"))) {

HttpSession session = request.getSession(true);

session.setAttribute("name", name);

RequestDispatcher dispatcher= config.getServletContext().getRequestDispatcher("/music0.jsp");

dispatcher.forward(request, response);

} else {

out.println("You are not an authentic person");

}

}}

Приложение В

Пример JSP-страницы

<%@page import="java.sql.Date"%>

<%@page import="java.sql.Statement"%>

<%@page import="java.sql.DriverManager"%>

<%@page import="java.util.Properties"%>

<%@page import="java.sql.ResultSet"%>

<%@page import="java.sql.Connection"%>

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Music Catalog</title>

<link href="newcss.css" rel="stylesheet">

<link href="newcss1.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->

<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->

<!--[if lt IE 9]>

<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>

<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>

<![endif]-->

</head>

<%HttpSession s = request.getSession(true);

Connection connection = null;

ResultSet rs;

String song = new String("");

String artist = new String("");

String album = new String("");

String genre = new String("");

Date released = null;

int duration = 0;

int ids = 0;

int ida = 0;

int idg = 0;

int idu = 0;

int idar = 0;

int rating = 0;

response.setContentType("text/html");

try {

Class.forName("com.mysql.jdbc.Driver");

Properties properties = new Properties();

properties.setProperty("user", "root");

properties.setProperty("password", "123");

properties.setProperty("useUnicode", "true");

properties.setProperty("characterEncoding", "utf8");

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/music", properties);

String sql = "select * from songs where name ='" + request.getParameter("search") + "'";

Statement st = connection.createStatement();

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

duration = rs.getInt("duration");

ids = rs.getInt("id");

}

sql = "select * from album_songs where song ='" + ids + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

ida = rs.getInt("album");

}

sql = "select genre from genre_songs where song ='" + ids + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

idg = rs.getInt("genre");

}

sql = "select * from albums where id ='" + ida + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

released = rs.getDate("released");

album = rs.getString("name");

}

sql = "select * from genre where id ='" + idg + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

genre = rs.getString("name");

}

sql = "select artist from album_artists where album ='" + ida + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

idar = rs.getInt("artist");

}

sql = "select * from artists where id ='" + idar + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

artist = rs.getString("name");

}

sql = "select * from users where name ='" + s.getAttribute("name") + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

idu = rs.getInt("id");

}

sql = "select * from ratings where user ='" + idu + "' and song='" + ids + "'";

st.executeQuery(sql);

rs = st.getResultSet();

while (rs.next()) {

rating = rs.getInt("rating");

}

s.setAttribute("idu", idu);

s.setAttribute("ids", ids);

rs.close();

st.close();

} catch (Exception e) {

System.out.println("Exception is ;" + e);

}

%>

<body>

<div id="container">

<div id="header"><h1 class="text-left1">Music catalog</h1>

<p class="text-right userName" href="#"> Hello, <%=s.getAttribute("name")%> </p>

</div>

<div id="content">

<ul>

<%if (ids != 0) {%>

<li><a class="linkColor" href="#" data-toggle="modal" data-target="#musicInfo1">Song: <%=request.getParameter("search")%></a></li>

<li><a class="linkColor" href="#" data-toggle="modal" data-target="#musicInfo2">Artist:<%=artist%></a></li>

<li><a href="#" data-toggle="modal" data-target="#musicInfo3">Album:<%=album%></a></li>

<li><a href="#" data-toggle="modal" data-target="#musicInfo4">Released:<%=released%></a></li>

<li><a href="#" data-toggle="modal" data-target="#musicInfo5">Duration:<%=duration%></a></li>

<li><a href="#" data-toggle="modal" data-target="#musicInfo5">Genre:<%=genre%></a></li>

<%if (rating == 0) { %>

<form role="form" action="Raiting" method="POST">

<li><a href="#" data-toggle="modal" data-target="#musicInfo5">Rating:<select name="mySelect">

<option>1</option>

<option>2</option>

<option>3</option>

<option>4</option>

<option>5</option>

</select></a></li>

<button id="submitSearch">estimate</button>

</form>

<%} else {%><li><a href="#" data-toggle="modal" data-target="#musicInfo5">Rating:<%=rating%></a></li>

<%}%>

<%} else {%> <li><a href="#" data-toggle="modal" data-target="#musicInfo5">Song not found please try again</a></li>

<%}%>

</ul>

</div>

<div id="sidebar">

<form role="form" action="music.jsp" method="POST">

<div id="sidebarUp">

<p class="text-left2">Write a song</p>

<input id="musicSearch" name="search"/>

<button id="submitSearch">SEARCH</button>

</div>

</form>

</div>

<script src="js/bootstrap.min.js"></script>

</body>

</html>

Размещено на Allbest.ru


Подобные документы

  • Разработка базы данных "Доставка товара" в среде MS Access, ее структуры, объектов (таблиц, запросов, форм, отчетов, макросов). Анализ предметной области базы данных, описание ее схемы, полей таблиц, разработанных объектов. Требования к работе приложения.

    контрольная работа [2,6 M], добавлен 07.08.2013

  • Проект реляционной базы данных, ее нормализация. Поиск данных с помощью фильтра и запросов. Пример создания и работы с БД "Музыкальный каталог" (Музыка.accdb). Установление связей с помощью одноименных полей, являющихся в главной таблице первичным ключом.

    методичка [1,7 M], добавлен 25.04.2015

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • Система управления базами данных (СУБД). Программные средства, предназначенные для создания, наполнения, обновления и удаления базы данных. Структура, модели и классификация баз данных. Создание каталогов, псевдонимов, таблиц, шаблонов и форм СУБД.

    презентация [1,1 M], добавлен 09.01.2014

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.

    курсовая работа [399,1 K], добавлен 26.08.2019

  • Проектирование базы данных для автоматизации деятельности по учету автотранспорта ГИБДД Вяземского района. Выбор инструментария для разработки базы данных и приложения по её ведению. Описание интерфейса и физической структуры приложения баз данных.

    курсовая работа [2,2 M], добавлен 28.06.2011

  • Разработка концептуальной модели базы данных "Чемпионат авто": описание предметной области, каталог задач, описание таблиц, схема данных, ER-диаграмма. Проектирование реляционной модели "Спортивный комплекс". Реализация и результат работы базы данных.

    курсовая работа [3,7 M], добавлен 14.06.2011

  • Создание тестирующих и игровых программ. Степень сложности и художественного оформления интерфейса пользователя. Создание справочной системы. Корректное отображение символов. Создание системы управления базами данных в среде Delphi и таблиц базы данных.

    методичка [1,0 M], добавлен 24.10.2012

  • Определение понятия и общее описание базы данных как упорядоченной информационной системы на носителе информации. Описание предметной области и разработка приложения базы данных, содержащей информацию о расписании занятий, для преподавателей кафедры.

    курсовая работа [1,3 M], добавлен 08.08.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.