zoukankan      html  css  js  c++  java
  • Music Player团队项目(一)

    团队成员及分工

    团队: Blue 团队共有六人

    姓名:     学号后四位:       贡献分:

    张   宇(队长)  1152          1+1.8=2.8分

    侯贺琦          1027          1+0.7=1.7分

    张玉冕          1153          1+0.3=1.3分

    康   贺          1169          1+0.3=1.3分

    丁志愿          1011          1+0.4=1.4分

    李锦城          1040          1+0.5=1.5分

    1.确定团队成员绩效评估方法 -->个人在团队中的绩效

    2.需求分析及设计思路     由张 宇、李锦城负责

    3.界面设计及文档记录     由侯贺琦、张玉冕负责

    4.具体代码编写(程序设计) 每个成员都要认领自己认为可以完成的任务

    5.测试与调试                由丁志愿、康 贺负责

    目标:为了顺利完成团队任务,促进每一个成员的学习。

    A 每次集合是否按时到场

    B 是否能促进团队的团结。

    C 是否能按时在团队合作中按时完成编码任务

    D 是否能按时提交每日的工作日志

    达到以上要求,根据每个人对团队所做的贡献来评分,凡做一件不利于团队团结和项目进度的行为皆扣相应的分数。

     姓名

    张宇

    侯贺琦

    李锦城

    康贺

    张玉冕

    丁志愿

    是否按时到会

    100

    100

    100

    70

    100

    100

    会上积极发言

    100

    100

    90

    100

    80

    100

    按时完成各自任务

    100

    90

    95

    90

    80

    90

    提交每日的工作日志

    100

    90

    80

    80

    90

    80

     工作状况分值

    400

    380

    365

    340

    350

    370

    用户需求:

    用户需要一个MP3播放器,程序能够打开MP3文件,并可以播放这个文件。

    用户故事:作为一个经常对着电脑的学生,希望能拥有一款MP3播放器,以便于听听歌曲来放松一下自己。

    具体设计思路:

    1.要让程序知道文件的路径,可以用一个添加按钮来实现。点击按钮打开文件选择窗口,打开一个过滤器:openFileDialog1.Filter = "*.mp3|*.mp3";从而让程序只获取mp3文件。
    2.打开这个文件:这个时候其实我们是把它的信息 歌名放在了播放列表里面。在播放列表里面它是有一个索引的。
    3.播放这个文件:我们是用COM组件,添加了一个WindowsMediaPlayer,这样只需要把需要播放歌曲的索引赋给这个WMP的URL就行了。就是告诉它播放哪一个歌曲。从而实现播放。
    4.播放完关闭文件,然后程序可以给个播放完的提示:这个我们是判断一下WMP中的PlayState播放状态来确定歌曲是否播放完毕,如果状态为Ended就弹出“播放完毕!”消息框。

    代码实现:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Windows.Forms;
     9 using System.IO;
    10 using System.Threading;
    11 
    12 namespace MusicPlayer
    13 {
    14     public partial class Form1 : Form
    15     {
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20         public void PlaySong(int selectNum)           //被选中的音乐进行播放
    21         {
    22             MusicPlayer1.URL = playlist[selectNum];
    23         }
    24         private string[] playlist = new string[1000]; //播放列表数组
    25         private int num;
    26         public void AddFile(string path)              //添加音乐文件方法
    27         {
    28             if (num < 1000)
    29             {
    30                 num++;
    31                 playlist[num] = path;
    32             }
    33         }
    34         public void RemoveFile(int selectNum)         //移除音乐文件方法
    35         {
    36             for (int i = selectNum; i < num - 1; i++)
    37             {
    38                 playlist[i] = playlist[i + 1];
    39             }
    40         }
    41         private void Addbtn_Click(object sender, EventArgs e)  //添加按钮
    42         {
    43             //打开一个过滤器,只能是以下文件
    44             openFileDialog1.Filter = "*.mp3|*.mp3";
    45             if (openFileDialog1.ShowDialog() == DialogResult.OK)
    46             {
    47                 string path = openFileDialog1.FileName;     
    48                 FileInfo music = new FileInfo(path);   
    49                 AddFile(music.FullName);                    //调用AddFile方法添加音乐文件
    50                 string Temp = Convert.ToString(num);
    51                 for (int i = 1; i <= 2-Temp.Length; i++)
    52                 {
    53                     Temp += ' ';
    54                 }
    55                 Temp += music.Name;             //音乐名字
    56                 mlist.Items.Add(Temp);          //把添加的音乐名字放在播放列表里
    57             }
    58         }
    59         private void Removebtn_Click(object sender, EventArgs e)  //移除按钮
    60         {
    61             if (mlist.SelectedIndex >= 0)
    62             {
    63                 RemoveFile(mlist.SelectedIndex);              //移除被选中音乐文件
    64                 mlist.Items.RemoveAt(mlist.SelectedIndex);
    65             }
    66         }
    67         private void Startbtn_Click(object sender, EventArgs e)  //开始播放按钮
    68         {
    69             int Selected;
    70             if (mlist.Items.Count <= 0)                  //如果播放列表没有歌曲弹出消息框
    71             {
    72                 MessageBox.Show("请您先添加歌曲!");
    73                 return;
    74             }
    75             if (mlist.SelectedIndex < 0 && mlist.Items.Count >0) //如果播放列表有歌曲但没选择,就默认播放第一个。
    76             {
    77                 Selected = 1;
    78                 mlist.SelectedIndex = 0;
    79             }
    80             else
    81             {
    82                 Selected = mlist.SelectedIndex + 1;             //否则直接播放选中的那一首
    83             }
    84             PlaySong(Selected);                                 //进行播放
    85         }
    86         private void Stopbtn_Click(object sender, EventArgs e)  //停止按钮
    87         {
    88             MusicPlayer1.URL = "";                              //停止的话重新赋一个空地址
    89         }
    90         private void MusicPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    91         {   //这是音乐播放完毕的时候给出个提示。
    92             if (MusicPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)  //播放器播放状态,如果播放结束弹出消息框
    93             {
    94                 MessageBox.Show("播放完毕!");
    95             }
    96         }
    97     }
    98 }

    测试:

    PSP耗时分析:

     

    团队编程总结:

    在这之前我们宿舍的舍友们基本上不会自主的去练习或者是试着写一些小程序。以至于编程的能力不是太高。所以我这次决定和我的舍友一起来做这个项目,要不然一直不练习也绝不会学到什么东西的。
    接手一个项目,首先要有一个总体认识 ,整体衡量项目的各个模块及队员的情况,做到心中有数。
    结合项目的要求和队员的情况,根据项目难度及个人能力合理分配任务,以便于能够充分发挥每个人的聪明才智,使项目能顺利完工。

    我们首先是把这次的项目先做一个需求分析,也就是这个程序目前需要哪些功能。把功能分成一个个小任务,然后队员领取自己认为可以按时完成的任务。
    沟通,协调。
    因为是团队合作编程,所以我与我的队员们要及时沟通,我们基础都不算太好,难免会有搞不懂的地方,他们都会来问我,我也会细心的给予讲解。这点很好,有问题就要找Team Leader。但我不参与他们的代码编写,代码编写是他们自己的事情,我只是点拨一下,当然了我也参与到这次的代码编写中,也领取了自己的代码编写任务。我们谁有好的想法都会提出来,选择最好方案来实施,也便于项目顺利进行。

    下面是侯贺琦同学的总结:

    团队项目总结之个人总结:
    对于这次作业,我们的大队长张宇同学起到了很大的带头作用,把我们几个发动起来,很懒的几个人,很感动。张宇同学对此软件的分析很到位,所以我理解的很迅速,尽管我的基础不好,但还是听懂几分,还有分配任务,大队长把任务分成几个小任务,歌曲的插入、列表、移除、播放、提示列表无歌曲,以及播放完毕提示,在空闲时队长给我的讲解也十分到位,我提的问题也都详细的一一讲解,令我茅塞顿开顺利完成任务,在接下来的软件制作当中我也会极力配合张宇同学,让老师给我们的软件打个高分。

  • 相关阅读:
    Vuex核心属性(上)
    layui 将json字符串以表格的形式展现出来
    Vue 路由懒加载 和 路由导航守卫
    jq遍历服务器发送过来的json字符串
    前端的发展
    关于定义函数的几种方式 及(箭头函数)
    js 子页面获取父页面的值
    关于数组的响应式方法和非响应式方法
    python3 -- random 模块
    多任务编程 -- multiprocessing 模块(创建多进程、进程池使用、进程间通信)
  • 原文地址:https://www.cnblogs.com/yumaster/p/4935669.html
Copyright © 2011-2022 走看看