Java-模拟KTV点歌(控制台程序)

一:程序框架


在这里插入图片描述

①:添加歌曲流程图
在这里插入图片描述

②:歌曲置顶
在这里插入图片描述
③:歌曲前移
在这里插入图片描述
④:退出系统
在这里插入图片描述


二:程序代码


public class KTVByLinkedList {
	//创建用户存储歌曲列表的集合
	private static LinkedList<String> linkedList=new LinkedList<String>();
	//获取用户输入信息
    private static  int acceptnum;
            public static void main(String[] args) {
            	//提示面板
            	System.out.println("------------欢迎来到点歌系统--------------");
            	testview();
            	//添加一部分歌曲列表中
           	    InintMusicList(linkedList);
				//获取用户输入符合要求的数字
			     acceptnum=getScannernum(0,3);
				if (acceptnum==-1) {
					acceptnum=getScannernum(0,3);
				}
				//接受用户输入数字,并进行相应操作
				inpuuserInfo();
			}
            
            //系统核心部分,接受用户输入数字,并进行相应操作
            private static void inpuuserInfo() {
				// TODO Auto-generated method stub
            	while (true) {
					switch (acceptnum) {
					case 0:
						//添加歌曲
						addMusic();
						break;
	                case 1:
	                	//将歌曲置顶
	                	setTop();
						break;
	                case 2:
	                	//将歌曲前移一位
	                   setBefore();
	                	break;
	                case 3:
	                	exit();
	     				break;
					default:
						//返回错误提示信息,一般不会引发;
						System.out.println("用户系统出现异常");
						break;
					}
					System.out.println("------------------------");
					testview();
					//再次获取用户输入
					 acceptnum=getScannernum(0,3);
	     				if (acceptnum==-1) {
	     					acceptnum=getScannernum(0,3);
	     				}
				}
			}
            
            //置顶歌曲
             private static void setTop() {
				// TODO Auto-generated method stub
				boolean signtop=true;
				int position;
				while(signtop){
				    System.out.println("当前歌曲信息:"+linkedList);
					System.out.println("请输入,你想将那一首歌曲置顶");	
					@SuppressWarnings("resource")
					String input=new Scanner(System.in).nextLine();
					position=linkedList.indexOf(input);
					//判断当前歌曲是否存在
					if (position==-1) {
						System.out.println("当前歌曲不存在!");
					}else{
						//判断当前歌曲是否在首位
						if (position==0) {
							System.out.println("当前歌曲已置顶!");	
						} else {
							//移除当前歌曲
							linkedList.remove(input);
							//将歌曲置顶
							linkedList.add(0,input);
							System.out.println("已将歌曲置顶:"+linkedList);
							System.out.println("你想继续置顶歌曲吗?");
							System.out.println("0:是 1:不是");
							if(getScannernum(0,1)==1)
							{
								 System.out.println("你已经返回主界面");
								 signtop=false;
								 break;
							}
						}
					}
					
				}
			}

			//前移歌曲
			private static void setBefore() {
				// TODO Auto-generated method stub
				boolean  signbefore=true;
				int position;
				while(signbefore){
			    System.out.println("当前歌曲信息:"+linkedList);
				System.out.println("请输入,你想将那一首歌曲前移");	
				@SuppressWarnings("resource")
				String input=new Scanner(System.in).nextLine();
				position=linkedList.indexOf(input);
				if (position==-1) {
				//判断当前歌曲是否存在
				 System.out.println("当前歌曲不存在!");
				}else
				{
					//判断当前歌曲是否在首位
					if (position==0) {
						System.out.println("当前歌曲已经置顶!");
					}else {
						//移除当前歌曲
						linkedList.remove(input);
						//将歌曲前移
						linkedList.add(position-1,input);
						System.out.println("已将歌曲前移:"+linkedList);
						System.out.println("你想继续前移歌曲吗?");
						System.out.println("0:是 1:不是");
						if(getScannernum(0,1)==1)
						{
							 System.out.println("你已经返回主界面");
							 signbefore=false;
							 break;
						}
					}
				}
				}
			}

			//添加歌曲
            private static void addMusic() {
				// TODO Auto-generated method stub
            	System.out.println("当前歌曲信息:"+linkedList);
            	String inputstr;
            	boolean addsign=true;
            	while (addsign) {
            		 System.out.println("请输入歌曲名称:");
    				   @SuppressWarnings("resource")
					String input1=new Scanner(System.in).nextLine();
    				    inputstr=input1;
    			    //判断用户输入歌曲是否在当前歌曲中已经存在
    			    if (linkedList.indexOf(inputstr)!=-1) {
						//存在
    			    	System.out.println("当前歌曲已经存在!");
    			    	System.out.println("请重新输入歌曲名称:");
        				@SuppressWarnings("resource")
						String input2=new Scanner(System.in).nextLine();
        				inputstr=input2;
					}
    			    linkedList.add(inputstr);
    			    System.out.println("歌曲  ["+inputstr+"] 添加成功!");
    			    System.out.println("当前歌曲信息:");
    			    System.out.println(linkedList);
    			    System.out.println("你是否继续添加歌曲");
    			    System.out.println("0:是  1:不是");
    			    if(getScannernum(0,1)==1)
    				{
    			    	addsign=false;
    				}
				}
            	System.out.println("你已经返回主界面");
			}
            
            //提示面板
			private static void testview() {
				// TODO Auto-generated method stub
            	//提示面板			
				System.out.println("0:添加歌曲至列表");
				System.out.println("1:将歌曲置顶");
				System.out.println("2:将歌曲前移一位");
				System.out.println("3:退出");
			}

			//初始时添加歌曲名称
            private static void InintMusicList(LinkedList<String> linkedList) {
				// TODO Auto-generated method stub
				linkedList.add("稻香");
				linkedList.add("夜曲");
				linkedList.add("夜的第七章");
				linkedList.add("听妈妈的话");
				linkedList.add("龙卷风");
				System.out.println("初始歌曲列表:"+linkedList);
			}
            
            //退出系统
			private static void exit() {
				// TODO Auto-generated method stub
				System.out.println("你是否要退出系统?");
				System.out.println("0:退出  1:不退出");
				if(getScannernum(0,1)==1)
				{
					 System.out.println("你已经返回主界面");
				}else{
					System.out.println("你已经退出系统,拜拜!");
					System.exit(0);	
				}
			}

			//获取用户输入指定数字
            private static int  getScannernum(int min,int max) {
            	//获取用户输入信息
				System.out.println("请输入选项数字!");
				try{
					@SuppressWarnings("resource")
					int acceptnum=new Scanner(System.in).nextInt();
					//判断用户输入情况,是否满足系统要求
					while (!(acceptnum>=min&&acceptnum<=max)) {
						 System.out.println("请重新输入选项数字!");
						 acceptnum=new Scanner(System.in).nextInt();
					}
					return acceptnum;
				}catch(Exception exception)
				{
					//用户没有按要求输入信息
					System.out.println("请按要求输入信息");
					//返回错误标识
					return -1;
				}
			}
}

三:程序调试


①:添加歌曲效果
在这里插入图片描述
②:歌曲置顶
在这里插入图片描述
③:歌曲前移
在这里插入图片描述
④:退出
在这里插入图片描述


⑤:四个模块的相互切换


在这里插入图片描述
在这里插入图片描述


相关API
LinkedList 集合API

发布了49 篇原创文章 · 获赞 17 · 访问量 4292

猜你喜欢

转载自blog.csdn.net/weixin_42753193/article/details/104926754