Музыкальный каталог
Рассмотрение структуры и схемы базы данных. Описание таблиц и архитектура приложения информационной системы "Музыкальный каталог". Изучение интерфейса пользователя: страниц регистрации, главной и страницы поиска. Приложение для работы с базами данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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