1、报告模板ktv滨州学院计算机科学技术系Java语言程序设计课后作业题目 姓名 学号 专业 班级 年 月 日 成绩 教师签名 问 题 描 述 及 分 析(根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么)1 模拟ktv点歌系统做基于java控制台的程序。2 将歌曲的名字,歌手名字,歌曲内容保存。3 能够从文件中读取大量歌曲的信息,并保存。4 对歌曲能够按歌名排名,也能按歌手名字保存。5 能通过歌名查找相关信息,也能按歌手查找相关信息。6 能添加歌曲。设计思路描述调试过程中遇到的问题及解决办法(调试过程中遇到的主要问题及解决方法,得到的结论)问题1:歌名和歌手字符串不能比较。解决办法:
2、转换成char类型数组,逐个比较,并比较ACSII的值。class MusicNameComparator implements Comparator 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(name1i=name2i&iname1.length&iname2.
3、length)i+; return name1i-name2i; 结论:字符串转换成char类型数组,逐个比较,并比较ACSII的值。问题2:文件读取时,信息分类解决办法:public void AddByFile (List allMusic) String musname,lyric,singer; tryBufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(123.txt); String data = null; data=br.readLine(); while(data!=n
4、ull)Music music=new Music(); for(int j=0;j3;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(); cat
5、ch(IOException ioe) ioe.toString(); 结论:用BufferedReader.readline();从文件里一行一行读取。总 结(对结果进行分析,设计心得,重点突出特色及改进设想)1.加深对java集合框架的理解。2.加深对 comparator接口的练习,对Collections.sort(List list,Comparator);的使用3.对String.indexof();的使用。可以返回字符串是否存在相应的字串。4.加深了对面向对象思想的理解。和接触面向接口的思想。附 录(参考资料等)import java.util.Comparator;public
6、 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 voi
7、d 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
8、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 c
9、lass MusicNameComparator implements Comparator 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(name1i=name2i&iname1.length&iname2.length)i+; return name1i-name
10、2i; class MusicSingerComparator implements Comparator 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(singer1i=singer2i&isinger1.length&isinger2.length)i+; return si
11、nger1i-singer2i; 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 St
12、ring PlayLsit; private List allMusic; public List GetallMusic() return this.allMusic; public MusicManner(String name) this.PlayLsit=name; allMusic=new ArrayList(); AddByFile(allMusic); public void AddByFile (List allMusic) String musname,lyric,singer; try BufferedReader br = new BufferedReader(new I
13、nputStreamReader(new FileInputStream(123.txt); String data = null; data=br.readLine(); while(data!=null) Music music=new Music(); for(int j=0;j3;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
14、); 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
15、(输入歌手:); 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(
16、); 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().equ
17、als(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 IndexMusicOfName(String keyword) List list=new ArrayList(); for(Musi
18、c tempmusic:this.allMusic) if(tempmusic.GetMusName().indexOf(keyword)!=-1) list.add(tempmusic); printmusiclistbyname(list); return list; public void printmusiclistbyname(List list) for(Music music:list) System.out.println(music.GetMusName()+n); public List IndexMusicOfSinger(String keyword) List lis
19、t=new ArrayList(); for(Music tempmusic:this.allMusic) if(tempmusic.GetSinger().indexOf(keyword)!=-1) list.add(tempmusic); printmusiclistbysinger(list); return list; public void printmusiclistbysinger(List list) for(Music music:list) System.out.println(music.GetSinger()+n); import java.util.Scanner;p
20、ublic 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) ca
21、se 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(希望有您要找的
22、结果.); 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.IndexMusicOfSi
23、nger(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();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1