团队成员及分工

团队: 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就弹出“播放完毕!”消息框。

代码实现:

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.IO;
 using System.Threading;

 namespace MusicPlayer
 {
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }
         public void PlaySong(int selectNum)           //被选中的音乐进行播放
         {
             MusicPlayer1.URL = playlist[selectNum];
         }
         ]; //播放列表数组
         private int num;
         public void AddFile(string path)              //添加音乐文件方法
         {
             )
             {
                 num++;
                 playlist[num] = path;
             }
         }
         public void RemoveFile(int selectNum)         //移除音乐文件方法
         {
             ; i++)
             {
                 playlist[i] = playlist[i + ];
             }
         }
         private void Addbtn_Click(object sender, EventArgs e)  //添加按钮
         {
             //打开一个过滤器,只能是以下文件
             openFileDialog1.Filter = "*.mp3|*.mp3";
             if (openFileDialog1.ShowDialog() == DialogResult.OK)
             {
                 string path = openFileDialog1.FileName;
                 FileInfo music = new FileInfo(path);
                 AddFile(music.FullName);                    //调用AddFile方法添加音乐文件
                 string Temp = Convert.ToString(num);
                 ; i <= -Temp.Length; i++)
                 {
                     Temp += ' ';
                 }
                 Temp += music.Name;             //音乐名字
                 mlist.Items.Add(Temp);          //把添加的音乐名字放在播放列表里
             }
         }
         private void Removebtn_Click(object sender, EventArgs e)  //移除按钮
         {
             )
             {
                 RemoveFile(mlist.SelectedIndex);              //移除被选中音乐文件
                 mlist.Items.RemoveAt(mlist.SelectedIndex);
             }
         }
         private void Startbtn_Click(object sender, EventArgs e)  //开始播放按钮
         {
             int Selected;
             )                  //如果播放列表没有歌曲弹出消息框
             {
                 MessageBox.Show("请您先添加歌曲!");
                 return;
             }
              && mlist.Items.Count >) //如果播放列表有歌曲但没选择,就默认播放第一个。
             {
                 Selected = ;
                 mlist.SelectedIndex = ;
             }
             else
             {
                 Selected = mlist.SelectedIndex + ;             //否则直接播放选中的那一首
             }
             PlaySong(Selected);                                 //进行播放
         }
         private void Stopbtn_Click(object sender, EventArgs e)  //停止按钮
         {
             MusicPlayer1.URL = "";                              //停止的话重新赋一个空地址
         }
         private void MusicPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
         {   //这是音乐播放完毕的时候给出个提示。
             if (MusicPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)  //播放器播放状态,如果播放结束弹出消息框
             {
                 MessageBox.Show("播放完毕!");
             }
         }
     }
 }

测试:

PSP耗时分析:

团队编程总结:

在这之前我们宿舍的舍友们基本上不会自主的去练习或者是试着写一些小程序。以至于编程的能力不是太高。所以我这次决定和我的舍友一起来做这个项目,要不然一直不练习也绝不会学到什么东西的。
接手一个项目,首先要有一个总体认识 ,整体衡量项目的各个模块及队员的情况,做到心中有数。
结合项目的要求和队员的情况,根据项目难度及个人能力合理分配任务,以便于能够充分发挥每个人的聪明才智,使项目能顺利完工。
我们首先是把这次的项目先做一个需求分析,也就是这个程序目前需要哪些功能。把功能分成一个个小任务,然后队员领取自己认为可以按时完成的任务。
沟通,协调。
因为是团队合作编程,所以我与我的队员们要及时沟通,我们基础都不算太好,难免会有搞不懂的地方,他们都会来问我,我也会细心的给予讲解。这点很好,有问题就要找Team Leader。但我不参与他们的代码编写,代码编写是他们自己的事情,我只是点拨一下,当然了我也参与到这次的代码编写中,也领取了自己的代码编写任务。我们谁有好的想法都会提出来,选择最好方案来实施,也便于项目顺利进行。

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

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

Music Player团队项目(一)的更多相关文章

  1. Java团队项目总结

    Java团队项目总结 1.项目实现情况 项目概述: 我们团队项目准备实现一个有关于大富翁有的游戏程序. 大富翁游戏,以经营权为主要的游戏方式,通过购买经营权与架构经营的星级服务来获得最大的利益,当其他 ...

  2. 团队项目(第二周)—GG队

    项目需求规格分析 队员信息 队员 学号 叶尚文(队长) 3116008802 蔡晓晴 3216008808 杜婷萱 3216008809 龙剑初 3116004647 于泽浩 3116004661 项 ...

  3. AxureRp 打开SVN上的团队项目

    打开Axure,在菜单项中,点击 "团队" 菜单,选择 "获取团队项目": 切换到 "SVN" 选项, 填写正确的Axure项目的路径,打开 ...

  4. 团队项目——编写项目的Spec

    团队项目--编写项目的Spec 一.Spec的目标        spec主要用来说明软件的外部功能,和用户的交互情况,主要用来说明软件内部的设计.图片编辑器是与生活息息相关的一个必备软件,随的流行, ...

  5. [BI项目记]-搭建代码管理环境之创建团队项目

    此篇主要介绍如何基于TFS环境创建团队项目来进行项目代码的版本管理工作,这一系列将侧重于BI项目,当然对于其它项目也同样适用. 在TFS里开始一个项目,我们首先需要创建一个团队项目. 在Team Ex ...

  6. tfs中如何创建团队项目及如何操作团队项目

    创建团队项目集合 tfs server管理控制台\团队项目集合页面.选择'创建集合'链接,按向导即可创建项目集合. 创建团队项目 创建好团队项目集合后,就要开始创建团队项目了. 进入vs,连接上tfs ...

  7. Surprise团队项目总结

    Surprise团队项目总结 项目实现情况 实现人人模式:2个用户在同一台电脑上进行切磋下棋,即实现五子棋游戏的基本功能 实现人机模式:初级模式已经实现,可以进行人机交互,但是还没达到智能判断下棋点 ...

  8. 团队项目——站立会议 DAY11

    团队项目--站立会议 DAY11        团队成员介绍(5人):张靖颜.何玥.钟灵毓秀.赵莹.王梓萱        今日(2016/5/20),站立会议已进行了两周时间,将这一周所遇到的问题和心 ...

  9. 团队项目——站立会议 DAY8

    第八次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:在反复修改和审查后,处理功能模块代码出错处,完善并运行. 2.钟灵毓秀:再次检查代码,运行报错处的代码修改 ...

随机推荐

  1. 不小心rm删除文件怎么办

    不小心rm删除文件怎么办 rm 命令的副作用越来越显现.而且rm掉之后的东西想找回来很困难.有2个原则: 1 永远不要在root下操作,尤其是rm命令 2 写一个别名,代替rm 我就是在~/.bash ...

  2. 161201、常用 SQL Server 规范集锦

    常见的字段类型选择   1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 4.自增长标识建议采用bigi ...

  3. dom4j读写XML文件

    XML文件格式: <?xml version="1.0" encoding="UTF-8"?> <company> <employ ...

  4. symfony中twig的流程控制if,for用法

    流程控制 if 语句 if语句在twig中的作用如同if语句在PHP中的一样.1.你可以通过下面这个简单的例子来判断表达式的结果是否正确. {% if online == false %} <p ...

  5. hdwiki中model模块的应用

    control中调用model原则是这样的,如果你的这个model在本control中大部分方法中都要用到,那么,就写在构造函数里面.例如,名字为doc的control的构造函数如下: functio ...

  6. mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从

    注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...

  7. Convert.ChangeType转换泛型的性能损失测试

    经常要传入参数包,当时一直是用泛型+ChangeType解决的.测试了下,看来这样确实慢了. 另外,可能都会认为Release发布之后会被优化掉.但测试了Release和Debug结果一样慢,比较失望 ...

  8. linux内核2.4.x网络接口分析层次图

    http://blog.csdn.net/wswifth/article/details/5108744 今天大概分写了下<Linux内核2.4.x的网络接口源码的结构[转]>中的结构层次 ...

  9. uva 1025,城市的间谍

    题目链接:https://uva.onlinejudge.org/external/10/1025.pdf 题意: 地铁是线性的,有n个站,编号(1~n),M1辆从左至右的车,和M2辆从右至左的车,发 ...

  10. Poj(1469),二分图最大匹配

    题目链接:http://poj.org/problem?id=1469 COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...