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

简介: 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

相关文章
|
8月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
234 2
|
6月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
369 98
|
7月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
268 0
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
301 2
利用java8 的 CompletableFuture 优化 Flink 程序
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
243 4
|
Java 编译器
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
295 3
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
420 0
|
传感器 安全 算法
消防救援支队消防员单兵装备智能养护舱电机驱动java版程序(二)
本文探讨消防救援中智能养护舱电机驱动的Java程序设计,作为系列文章第二部分。通过自动化和智能化手段,智能养护舱提升了装备维护效率与准确性。文章详细介绍了电机驱动模块的设计与实现,包括硬件选型、PID控制策略、安全保护机制及Java程序架构,确保电机精确控制、稳定性和安全性。未来将优化功能并引入智能算法和物联网技术,进一步提升装备维护智能化水平。
|
IDE Java 开发工具
消防救援支队消防员单兵装备智能养护舱点击驱动java版程序(一)
智能消防作战服架通过电机驱动系统提升消防员作业效率和安全性。本文介绍基于Java的电机驱动程序开发,涵盖硬件准备、软件环境搭建及驱动程序实现。重点包括串口通信配置、电机控制类设计与控制逻辑实现,确保电机高效稳定运行。通过正确配置通信协议和串口参数,并添加异常处理机制,保障系统的安全性和可靠性。