Professional Documents
Culture Documents
Отчет
о прохождении стажировки по профилю специальности
Москва
2008/2009 уч.год.
МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМ
ГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ
Утверждаю
Зам. Директора по УПР
В.П. Сандул
« » 2009г.
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
на период стажировки
студента гр. П-408 специальности 230105
Иванова Евгения Станиславовича
ТЕМА ЗАДАНИЯ
Разработка электронной аудио-библиотеки
Руководители стажировки:
от предприятия Иванова Татьяна Владимировна (подпись)
от техникума Шипиев Роман Николаевич (подпись)
Индивидуальное задание рассмотрено на цикловой комиссии специальности
«Программное обеспечение ВТ и АС» (230105)
ВВЕДЕНИЕ
В данном отчете предоставлены все сведения, алгоритмы и схемы,
используемые для разработки электронной аудио-библиотеки, а также приведён
код программы и контрольный пример работы с программой.
1 ОПИСАНИЕ АЛГОРИТМА
10) Поле created_at – дата и время создания записи. Имеет тип datetime.
string.
4) Поле voted – оценка («+» или «-») голоса. Имеет тип string.
2 ТЕКСТ ПРОГРАММЫ
end
def index
@audios = Audio.find(:all, :order => "created_at DESC", :limit => 6)
@random_audio = Audio.find(:all)[rand(@audios.size)]
@popular_audios = Audio.popular(3)
end
def show
@audio = Audio.find(params[:id])
@popular_audios = Audio.popular(3)
end
def popular
@audios = Audio.paginate(:all, :order => "rating DESC",
:page => params[:page])
end
def new
@audio = Audio.new
end
def edit
@audio = Audio.find(params[:id])
end
def create
@audio = Audio.new(params[:audio])
@audio.user_id = current_user.id
@audio.save ? redirect_to(@audio) : render(:action => 'new')
end
def update
@audio = Audio.find(params[:id])
@audio.update_attributes(params[:audio]) ? redirect_to(@audio) : render(:action => 'edit')
17
end
def destroy
@audio = Audio.find(params[:id])
@audio.destroy
redirect_to audios_url
end
def add_comment
@comment = Comment.new(params[:comment])
@audio = Audio.find(params[:id])
def vote_positive
@audio = Audio.find(params[:id])
@voted_user = giveme_voted_user(@audio.id)
if (@voted_user == nil)
@vote = Vote.create!(:user_id => current_user.id, :audio_id => @audio.id, :voted => '+')
@audio.update_attribute(:rating, @audio.rating+1)
end
redirect_to(@audio)
end
def vote_negative
@audio = Audio.find(params[:id])
@voted_user = giveme_voted_user
if (@voted_user == nil)
@vote = Vote.create!(:user_id => current_user.id, :audio_id => @audio.id, :voted => '-')
@audio.update_attribute(:rating, @audio.rating-1)
end
redirect_to(@audio)
end
protected #----------
def giveme_voted_user(ided)
Vote.find_by_audio_id(ided, :conditions => ["user_id = ?", current_user.id])
end
end
18
layout 'main'
before_filter :check_administrator_role, :except => [ :show ]
def index
@categories = Category.find(:all)
end
def show
@category = Category.find(params[:id])
end
def edit
@category = Category.find(params[:id])
end
def create
@category = Category.new(params[:category])
flash[:notice] = 'Категория успешно добавлена' if @category.save
redirect_to categories_path
end
def update
@category = Category.find(params[:id])
if @category.update_attributes(params[:category])
flash[:notice] = "Категория \"#{@category.name}\" изменена!"
redirect_to categories_path
else
render :action => 'edit'
end
end
def destroy
@category = Category.find(params[:id])
@category.destroy
redirect_to categories_path
end
end
def index
if params[:q]
per_page = 9
19
query = params[:q]
@audios = Audio.find_with_ferret(query, :page => params[:page], :per_page => per_page)
end
end
end
layout 'main'
def new
end
def create
self.current_user = User.authenticate(params[:login], params[:password])
if logged_in?
if params[:remember_me] == "1"
current_user.remember_me unless current_user.remember_token?
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires =>
self.current_user.remember_token_expires_at }
end
redirect_back_or_default('/')
flash[:notice] = "Вы успешно авторизованы!"
else
render :action => 'new'
end
end
def destroy
self.current_user.forget_me if logged_in?
cookies.delete :auth_token
reset_session
flash[:notice] = "Вы вышли из системы!"
redirect_back_or_default('/')
end
end
def index
@users = User.paginate(:all, :order => 'created_at', :page => params[:page])
end
def new
end
20
def show
@user = User.find(params[:id])
end
def create
cookies.delete :auth_token
@user = User.new(params[:user])
@user.save
if @user.errors.empty?
self.current_user = @user
redirect_back_or_default('/')
flash[:notice] = "Вы зарегистрированы!"
else
render :action => 'new'
end
end
def edit
@user = current_user
end
def update
@user = User.find(current_user)
if @user.update_attributes(params[:user])
flash[:notice] = "Данные успешно изменены!"
redirect_to :action => 'show', :id => current_user.id
else
render :action => 'edit'
end
end
def destroy
@user = User.find(params[:id])
if @user.update_attribute(:enabled, false)
flash[:notice] = "Пользователь заблокирован!"
else
flash[:error] = "Ошибка!"
end
redirect_to :action => 'index'
end
end
21
cattr_reader :per_page
@@per_page = 9
belongs_to :user
belongs_to :category, :counter_cache => true
has_many :comments, :order => 'created_at'
has_many :votes
end
def self.select_list
Category.recent.map{|n| [n.name, n.id]}
end
end
22
validates_presence_of :text
validates_length_of :text, :within => 3..350
end
require 'digest/sha1'
class User < ActiveRecord::Base
attr_accessor :password
cattr_reader :per_page
@@per_page = 15
def encrypt(password)
self.class.encrypt(password, salt)
end
def authenticated?(password)
crypted_password == encrypt(password)
end
def remember_token?
23
def remember_me
remember_me_for 2.weeks
end
def remember_me_for(time)
remember_me_until time.from_now.utc
end
def remember_me_until(time)
self.remember_token_expires_at = time
self.remember_token = encrypt("#{email}--#{remember_token_expires_at}")
save(false)
end
def forget_me
self.remember_token_expires_at = nil
self.remember_token = nil
save(false)
end
def has_role?(rolename)
self.role == rolename ? true : false
end
protected
def encrypt_password
return if password.blank?
self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record?
self.crypted_password = encrypt(password)
end
def password_required?
crypted_password.blank? || !password.blank?
end
end
adapter: [используемая_база_данных]
encoding: [кодировка_бд]
database: [имя_бд]
username: [логин]
25
password: [пароль]
host: [адрес_хостинга_бд].
1) Открыть веб-обозреватель.
1) Аудио-файлы.
2) Комментарии.
2) Комментарии к аудио-файлам.
3) Данные о пользователях.
системы.
4.2 Тестирование
редактирования.
— тестирование эргономичности;
Для начала, выполнив все пункты настройки (см. пункт 3.2 «Вызов и
загрузка»), запустим серверную часть системы.
33
Рисунок 1
— Название аудио-файла;
— Дата добавления;
— Категория;
— Количество комментариев.
Рисунок 2
35
Рисунок 3
36
ЗАКЛЮЧЕНИЕ
За время прохождения стажировки была реализована программа
«Электронная аудио-библиотека»: разработаны необходимые алгоритмы и
схемы, спроектирована база данных, написан программный код и приведён
контрольный пример работы с программой. Все сведения предоставлены в
отчете.
37