收藏 分销(赏)

报告模板-ktv.doc

上传人:Fis****915 文档编号:555795 上传时间:2023-12-11 格式:DOC 页数:12 大小:101KB 下载积分:6 金币
下载 相关 举报
报告模板-ktv.doc_第1页
第1页 / 共12页
报告模板-ktv.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
滨州学院计算机科学技术系 《Java语言程序设计》课后作业 题目 姓名 学号 专业 班级 年 月 日 成绩 教师签名 问 题 描 述 及 分 析 (根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么) 1. 模拟ktv点歌系统做基于java控制台的程序。 2. 将歌曲的名字,歌手名字,歌曲内容保存。 3. 能够从文件中读取大量歌曲的信息,并保存。 4. 对歌曲能够按歌名排名,也能按歌手名字保存。 5. 能通过歌名查找相关信息,也能按歌手查找相关信息。 6. 能添加歌曲。 设计思路描述 N 打印列表 模糊查找 返回到主面板 Y 播放 精确查找 根据歌手查找歌曲 根据歌名查找歌曲 点歌面板 4.退出 3.删除歌曲 2.添加歌曲 1.点歌 主控制面板 调试过程中遇到的问题及解决办法 (调试过程中遇到的主要问题及解决方法,得到的结论) 问题1:歌名和歌手字符串不能比较。 解决办法: 转换成char类型数组,逐个比较,并比较ACSII的值。 class MusicNameComparator implements Comparator<Music> { @Override public int compare(Music arg0, Music arg1) { // TODO Auto-generated method stub char name1[]=arg0.GetMusName().toCharArray(); char name2[]=arg1.GetMusName().toCharArray(); int i=0; while(name1[i]==name2[i]&&i<name1.length&&i<name2.length)i++; return name1[i]-name2[i]; } } 结论: 字符串转换成char类型数组,逐个比较,并比较ACSII的值。 问题2:文件读取时,信息分类 解决办法:public void AddByFile (List<Music> allMusic){ String musname,lyric,singer; try{BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("123.txt"))); String data = null; data=br.readLine(); while(data!=null){ Music music=new Music(); for(int j=0;j<3;j++) { if(j%3==0){ musname=data; music.SetMusName(musname);} else if(j%3==1){ singer=data; music.SetSinger(singer);} else if(j%3==2){ lyric=data; music.SetLyric(lyric); allMusic.add(music);} data=br.readLine(); } } Collections.sort(allMusic, new MusicNameComparator()); } catch(IOException ioe) { ioe.toString();} } 结论:用BufferedReader.readline();从文件里一行一行读取。 总 结 (对结果进行分析,设计心得,重点突出特色及改进设想) 1.加深对java集合框架的理解。 2.加深对 comparator<T>接口的练习,对Collections.sort(List<T> list,Comp arator<? Super T>);的使用 3.对String.indexof();的使用。可以返回字符串是否存在相应的字串。 4.加深了对面向对象思想的理解。和接触面向接口的思想。 附 录 (参考资料等) import java.util.Comparator; public class Music { private String Number; private String MusName; private String Singer; private String Lyric; public Music() { this.MusName="Null"; this.Singer="Null"; this.Lyric="Null"; } public Music(String musName,String singer,String lyric) { this.MusName=musName; this.Singer=singer; this.Lyric=lyric; } public void SetMusName(String name) { this.MusName=name; } public void SetSinger(String singer) { this.Singer=singer; } public void SetLyric(String lyric) { this.Lyric=lyric; } public String GetMusName() { return this.MusName; } public String GetSinger() { return this.Singer; } public String GetLyric() { return this.Lyric; } public String toString() { return "\n歌名:"+this.MusName+"\n歌手:"+this.Singer+"\n歌词:"+this.Lyric; } public void play() { System.out.println("正在播放。。。\n"+this.Lyric); } } class HappyMusic extends Music { public HappyMusic(String musName, String singer, String lyric) { super(musName, singer, lyric); // TODO Auto-generated constructor stub } } class MusicNameComparator implements Comparator<Music> { @Override public int compare(Music arg0, Music arg1) { // TODO Auto-generated method stub char name1[]=arg0.GetMusName().toCharArray(); char name2[]=arg1.GetMusName().toCharArray(); int i=0; while(name1[i]==name2[i]&&i<name1.length&&i<name2.length)i++; return name1[i]-name2[i]; } } class MusicSingerComparator implements Comparator<Music> { @Override public int compare(Music o1, Music o2) { // TODO Auto-generated method stub char singer1[]=o1.GetSinger().toCharArray(); char singer2[]=o2.GetSinger().toCharArray(); int i=0; while(singer1[i]==singer2[i]&&i<singer1.length&&i<singer2.length)i++; return singer1[i]-singer2[i]; } } import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Scanner; public class MusicManner { private String PlayLsit; private List<Music> allMusic; public List<Music> GetallMusic() { return this.allMusic; } public MusicManner(String name) { this.PlayLsit=name; allMusic=new ArrayList<Music>(); AddByFile(allMusic); } public void AddByFile (List<Music> allMusic) { String musname,lyric,singer; try{ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("123.txt"))); String data = null; data=br.readLine(); while(data!=null) { Music music=new Music(); for(int j=0;j<3;j++) { if(j%3==0) { musname=data; music.SetMusName(musname); } else if(j%3==1) { singer=data; music.SetSinger(singer); } else if(j%3==2) { lyric=data; music.SetLyric(lyric); allMusic.add(music); } data=br.readLine(); } } Collections.sort(allMusic, new MusicNameComparator()); } catch(IOException ioe) { ioe.toString(); } } public void AddByUser() { Music music=new Music(); Scanner input=new Scanner(System.in); System.out.println("输入歌名:"); music.SetMusName(input.next()); System.out.println("输入歌手:"); music.SetSinger(input.next()); System.out.println("输入歌词:"); music.SetLyric(input.next()); this.allMusic.add(music); } public void SortMusicByName() { Collections.sort(this.allMusic, new MusicNameComparator()); } public void SortMusicBySinger() { Collections.sort(this.allMusic, new MusicSingerComparator()); } public Music GetMusicByName(String name){ Music music=null; for(Music tempmusic:this.allMusic){ if(tempmusic.GetMusName().equals(name)){ music=tempmusic; break; } } return music; } public Music GetMusicBySinger(String singer) { Music music=null; for(Music tempmusic:this.allMusic) if(tempmusic.GetSinger().equals(singer)){ music=tempmusic; break; } return music; } public void DeleByUser(String name) { Music music; if((music=GetMusicByName(name))!=null){ allMusic.remove(music); System.out.println("删除成功!"); } else System.out.println("歌曲不存在!"); } public List<Music> IndexMusicOfName(String keyword){ List<Music> list=new ArrayList<Music>(); for(Music tempmusic:this.allMusic){ if(tempmusic.GetMusName().indexOf(keyword)!=-1){ list.add(tempmusic); } } printmusiclistbyname(list); return list; } public void printmusiclistbyname(List<Music> list) { for(Music music:list) System.out.println(music.GetMusName()+"\n"); } public List<Music> IndexMusicOfSinger(String keyword){ List<Music> list=new ArrayList<Music>(); for(Music tempmusic:this.allMusic){ if(tempmusic.GetSinger().indexOf(keyword)!=-1){ list.add(tempmusic); } } printmusiclistbysinger(list); return list; } public void printmusiclistbysinger(List<Music> list) { for(Music music:list) System.out.println(music.GetSinger()+"\n"); } } import java.util.Scanner; public class MusicTest { public static void main(String[] args) { // TODO Auto-generated method stub MusicManner ktv=new MusicManner("大家乐"); Scanner input=new Scanner(System.in); int command; while(( command=read1(input))!=4){ switch(command) { case 1: Music music; while((command=read2(input))!=3) switch(command) { case 1: ktv.printmusiclistbyname(ktv.GetallMusic()); System.out.println("请输入歌名:"); String name=input.next(); if((music=ktv.GetMusicByName(name))!=null) { System.out.println(music.toString()); music.play(); } else { System.out.println("很抱歉,没有找到相应的歌。正在查找相似的歌名..."); ktv.IndexMusicOfName(name); System.out.println("希望有您要找的结果."); continue; } continue; case 2: ktv.printmusiclistbysinger(ktv.GetallMusic()); System.out.println("请输入歌手:"); String singer=input.next(); if((music=ktv.GetMusicBySinger(singer))!=null) { System.out.println(music.toString()); music.play(); } else { System.out.println("很抱歉,没有找到相应的歌。正在查找相似的歌手..."); ktv.IndexMusicOfSinger(singer); System.out.println("希望有您要找的结果."); } continue; } continue; case 2: ktv.AddByUser(); System.out.println("step2"); continue; case 3: System.out.println("step3"); System.out.println("请输入要删除歌曲的名字:"); String name=input.next(); ktv.DeleByUser(name); continue; case 4: System.out.println("quit"); return; default: System.out.println("default"); } } System.out.println("欢迎下次光临。"); } public static int read1(Scanner input) { System.out.println("欢迎来到:大家乐点歌系统!请选择:1.点歌 2.添加歌曲 3.删去歌曲 4.退出"); return input.nextInt(); } public static int read2(Scanner input) { System.out.println("请选择:1.歌名 2.歌手 3.返回"); return input.nextInt(); } } 11
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服