/
/
Курсовая работа
MP3 проигрыватель на языке высокого уровня C#
Введение
пользователь интерфейс программирование
Объект исследования - обработка и воспроизведение MP3 (*.mp3) файлов.
Цель работы - программная реализация настольного приложения с использованием языка программирования C#. Систематизация знаний полученных в процессе изучения курса «Объектно-ориентированное программирование».
Программа была написана с использованием языка программирования C# и среды разработки Microsoft Visual Studio 2010, также была использована библиотека Windows Media Player (wmp.dll).
1. Техническое задание
Основание для разработки: Углубление знаний языка программирования С#.
Назначение разработки: Создание программного обеспечения для воспроизведения аудиофайлов в формате MP3.
Требования к программному средству:
Программа должна открывать и воспроизводить аудиофайлы в формате mp3. Добавлять и удалять треки из плейлиста. Сохранять и открывать плейлисты. Также должна быть возможность приостанавливать и останавливать воспроизводимый файл. Перематывать дорожку и регулировать громкость.
Этапы разработки:
· Разработка технического задания.
· Проектирование пользовательского интерфейса.
· Написание кода, тестирование, исправление ошибок.
2. Проектирование пользовательского интерфейса
Главное окно программы
Реализация
Основные методы и свойства:
· wmp.settings.volume = volumeBar. Value; - Регулирование громкости.
· wmp.controls.play(); - Воспроизвести файл.
· wmp.controls.pause(); - Приостановить файл.
· wmp.controls.stop(); - Остановить файл.
· wmp.controls.currentPosition = trackBar. Value; - Текущая позиция ползунка.
· wmp.currentMedia.duration - Продолжительность файла.
· wmp.status. ToString(); - Статус файла.
· openFileDialog1. ShowDialog(); - Диалоговое окно для добавления файлов в плейлист.
· playListLB. Items. Remove (playListLB. SelectedItem); - Удаление из плейлиста.
· saveFileDialog1. ShowDialog(); - Диалоговое окно для сохранения плейлиста.
· open. ShowDialog(); - Диалоговое окно для открытия плейлиста.
3. Руководство пользователя
Главная форма содержит все элементы интерфейса и даёт доступ ко всем функциям программы.
Форма содержит плейлист и кнопки, с помощью которых осуществляются все операции.
Форма содержит следующие ЭУ:
· «Воспроизвести» кнопка, по нажатию которой воспроизводится первый файл из списка или приостановленный файл.
· Если плейлист пуст, то выводится соответствующее сообщение:
· «Пауза» кнопка, по нажатию которой воспроизводимый файл приостанавливается на текущей позиции.
· «Стоп» кнопка, по нажатию которой файл останавливается и ползунок принимает изначальное положение в начале trackBar'а.
· «+» - добавить, «-» - удалить. Кнопки по нажатию, на которые файл в плейлист добавляется или удаляется.
· «Открыть» кнопка по нажатию которой открывается диалоговое окно для выбора и открытия плейлиста.
· «Сохранить» кнопка по нажатию на который открывается диалоговое окно для сохранения плейлиста.
· Плейлист - список содержащий пути к воспроизводимым файлам. Где файлы сменяют друг друга автоматически.
Заключение
В данном курсовом проекте был разработан MP3 проигрыватель, который включает следующие возможности:
· Возможность воспроизведения, остановки и приостановки mp3 файла;
· Перематывание песни на любой промежуток времени;
· Отображение общей длительности песни;
· Возможность регулирования громкости;
· Создание и открытия плейлиста;
При разработке ПО был использован язык программирования С#. Также были получены новые навыки и возможности.
Приложение
using System;
using System. Windows. Forms;
using WMPLib;
using System.IO;
namespace A_Player
{
public partial class Form1: Form
{
public Form1 ()
{
InitializeComponent();
}
WindowsMediaPlayer wmp = new WindowsMediaPlayer();
private void Form1_Load (object sender, EventArgs e)
{
wmp.settings.volume = volumeBar. Value;
}
private void btnPlay_Click (object sender, EventArgs e)
{
if (playListLB. Items. Count == 0)
{
MessageBox. Show («Плейлист пуст»);
}
else
{
if (wmp.URL == null)
{
playListLB. SelectedIndex = 0;
wmp.URL = playListLB. SelectedItem. ToString();
wmp.controls.play();
}
else
{
wmp.controls.play();
}
}
}
private void btnPause_Click (object sender, EventArgs e)
{
wmp.controls.pause();
}
private void btnStop_Click (object sender, EventArgs e)
{
wmp.controls.stop();
}
private void volumeBar_Scroll (object sender, EventArgs e)
{
wmp.settings.volume = volumeBar. Value;
toolTip1. SetToolTip (volumeBar, volumeBar. Value. ToString());
}
private void trackBar_Scroll (object sender, EventArgs e)
{
wmp.controls.currentPosition = trackBar. Value;
toolTip1. SetToolTip (trackBar, wmp.controls.currentPositionString);
}
private void timer1_Tick (object sender, EventArgs e)
{
trackBar. Maximum = Convert. ToInt32 (wmp.currentMedia.duration);
trackBar. Value = Convert. ToInt32 (wmp.controls.currentPosition);
lblPositionTime. Text = wmp.controls.currentPositionString;
lblDurationTime. Text = wmp.currentMedia.durationString;
if (playListLB. SelectedIndex!= playListLB. Items. Count - 1)
{
if (trackBar. Value + 1 == trackBar. Maximum)
{
playListLB. SelectedIndex = playListLB. SelectedIndex + 1;
wmp.URL = playListLB. SelectedItem. ToString();
timer1. Enabled = true;
}
}
toolStripStatusLabel1. Text = wmp.status. ToString();
}
private void btnAddTrack_Click (object sender, EventArgs e)
{
if ((openFileDialog1. ShowDialog() == DialogResult.OK) && (openFileDialog1. FilterIndex == 1))
{
for (int i = 0; i < openFileDialog1. FileNames. Length; i++)
{
playListLB. Items. Add (openFileDialog1. FileNames[i]);
}
if (playListLB. SelectedItems. Count == 0)
{
playListLB. SelectedIndex = 0;
wmp.URL = playListLB. SelectedItem. ToString();
timer1. Enabled = true;
}
}
}
private void playListLB_MouseDoubleClick (object sender, MouseEventArgs e)
{
try
{
if (wmp.URL!= playListLB. SelectedItem. ToString())
{
wmp.URL = playListLB. SelectedItem. ToString();
timer1. Enabled = true;
}
}
catch
{
}
}
private void btnDelTrack_Click (object sender, EventArgs e)
{
if (wmp.URL == playListLB. SelectedItem. ToString())
{
wmp.controls.stop();
wmp.URL = «»;
}
playListLB. Items. Remove (playListLB. SelectedItem);
}
private void btnSavePL_Click (object sender, EventArgs e)
{
if (saveFileDialog1. ShowDialog() == DialogResult.OK)
{
StreamWriter sw = File. CreateText (saveFileDialog1. FileName);
if (saveFileDialog1. FilterIndex == 1 || saveFileDialog1. FilterIndex == 2)
{
for (int i = 0; i < playListLB. Items. Count; i++)
{
playListLB. SelectedIndex = i;
sw. WriteLine (playListLB. SelectedItem. ToString());
}
}
sw. Close();
}
}
private void btnOpenPL_Click (object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open. Filter = «Плейлист(*.pls)|*.pls|Текстовый документ(*.txt)|*.txt»;
if (open. ShowDialog() == DialogResult.OK)
{
StreamReader sr = File. OpenText (open. FileName);
if (open. FilterIndex == 1 || open. FilterIndex == 2)
{
while (sr. EndOfStream!= true)
{
playListLB. Items. Add (sr. ReadLine());
}
}
sr. Close();
}
}
}
}