C# 面向对象(Mp3案例完善)
2023-09-11 14:20:51 时间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 面向对象7._13_Mp3完善
{
class Program
{
static void Main(string[] args)
{
PlaySongps = new PlaySong();
ps.Inof();
Console.ReadLine();
}
}
//歌曲信息列表
class Song
{
public Song() { }
public Song(String title, string singer, intlength)
{
this.titile = title;
this.singer = singer;
this.length = length;
}
///
/// 歌曲名
///
public String titile{set;get;}
public String singer { set; get; }
public int length { set; get; }
}
class PlaySong
{
List list = new List();
///
/// 载入本地歌曲
///
private int listLenght; //获取到列表长度(有几首歌)
public void bianli() {
listLenght= 0;
foreach(Song item in list)
{
Console.Write(" "+(listLenght+1)+"."+item.titile+" - "+item.singer+" ");
time(item.length);
listLenght++;
}
}
public void Inof()
{
Console.WriteLine("您的当前播放列表是:");
Console.WriteLine();
Console.WriteLine("++ ——————————— ++");
Console.WriteLine();
bianli();
Console.WriteLine();
Console.WriteLine("++ ——————————— ++");
Console.WriteLine();
Console.WriteLine(" 请您输入功能序号 :");
Console.WriteLine();
Console.WriteLine("1.播放歌曲 2.载入本地歌曲 3.上一首 4.下一首 5.暂停 6.添加歌曲 7.退出播放器");
int n =int.Parse(Console.ReadLine());
switch(n)
{
case 1:
play();
break;
case 2:
load();
break;
case 3:
upSong();
break;
case 4:
downSong();
break;
case 5:
stop();
break;
case 6:
downLoad();
break;
case 7:
return;
default :
break;
}
}
public void load()
{
Song s1 =new Song("灰色头像", "许嵩", 356);
Song s2 =new Song("坏孩子", "许嵩", 303);
Song s3 =new Song("城府", "许嵩", 287);
Song s4 =new Song("因为了解", "汪苏泷", 196);
Song s5 =new Song("送你的读白", "许嵩", 314);
list.Add(s1);
list.Add(s2);
list.Add(s3);
list.Add(s4);
list.Add(s5);
Console.WriteLine("++ ——————————— ++");
Console.WriteLine();
bianli();
Console.WriteLine();
Console.WriteLine("++ ——————————— ++");
Inof();
}
public void downLoad()
{
Song s =new Song();
Console.Write("请输入您要下载的歌曲名称:");
s.titile =Console.ReadLine();
Console.Write("请输入您要下载的歌手名称:");
s.singer =Console.ReadLine();
Console.Write("请输入您要下载歌曲的时长:");
s.length=int.Parse( Console.ReadLine());
list.Add(s);
listLenght++;
Console.WriteLine("您的歌曲下载成功!");
Console.WriteLine();
Inof();
}
private int index = 0; //记录播放的歌曲
public void play()
{
Console.WriteLine();
if (index< 0)
{
Console.WriteLine("当前列表没有歌曲!");
}
if (index< listLenght)
{
Console.WriteLine("正在播放:" +list[index].titile);
}
Console.WriteLine();
Inof();
}
public void upSong()
{
if (index< 0) {
Console.WriteLine("当前列表没有歌曲");
}
index =index - 1 < 0 ? 0: index - 1;
if (index- 1 < 0)
{
Console.WriteLine("当前播放已经是第一首音乐:" + list[0].titile);
}
else
{
Console.WriteLine("正在播放:" +list[index].titile);
}
Console.WriteLine();
Inof();
}
public void downSong()
{
if (index< 0)
{
Console.WriteLine("当前列表没有歌曲");
}
index =index + 1 > listLenght ? listLenght : index+1;
if (index+1 > listLenght)
{
Console.WriteLine("当前播放已经是最后一首音乐:");
}
else
{
Console.WriteLine("正在播放:" +list[index].titile);
}
Console.WriteLine();
Inof();
}
public void stop()
{
Console.WriteLine("暂停播放:"+list[index].titile);
Console.WriteLine();
Inof();
}
///
/// 转换时间格式 00:00:00
///
///
public void time(int time)
{
TimeSpants = new TimeSpan(0, 0, time);
Console.WriteLine(" " +(ts.Minutes).ToString().PadLeft(2, '0') + ":" +(ts.Seconds).ToString().PadLeft(2, '0'));
}
}
}
相关文章
- C# 调用WebApi
- .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
- 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- C# IL DASM 使用-破解c#软件方法
- C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能
- C#学习记录——圣诞快乐之圣诞树代码
- C#,初学琼林(03)——计算数组最小、最大值(Min, Max)的源程序
- C#开发实战经典案例(清华大学出版社)练习源码1.4G
- C#获取容器窗体中控件Location问题
- C# DotNet基本类库
- C#悬浮窗口 图像背景
- C#中一种替换switch语句更优雅的写法
- C# socket ipv6初体验
- 在C#, DataGridView把某行设定为CurrentRow
- c#的显性转换,和隐形转换相关细节
- C#下 观察者模式的另一种实现方式IChangeToken和ChangeToken.OnChange
- C#实现RSA签名及认证
- C#-Linq-Join两个DataTable
- c#代码规则,C#程序中元素的命名规范