Java项目实战—歌曲管理系统

声明:本人仅整理了代码,方便大家进行调试优化,功能上还存在很多纰漏,欢迎大家评论区讨论
代码原地址放于文章末尾

一、实验目的:
掌握类的定义,JAVA应用程序的设计与实现。

二、实验内容:
开发环境
Eclipse + JDK + List/Map + File
系统中的对象
歌曲(Song.java):编号、歌名、语言(中文/英文)、类别(流行/通俗)、歌手
系统功能描述
对已有的曲目进行管理:
查找歌曲信息(按歌名\语言\歌手\类别等进行查询)
增加歌曲
删除某歌曲
技术要求
List/Map,File, 输入输出流对象
画面参考
三、实验要求:

  1. 通过实验掌握文件输入输出流的使用方法;
  2. 程序必须能够从键盘接收字符串并保存在文件中;
  3. 程序必须能够读出文件内容显示在屏幕上;
  4. 数据保存在文件中;

四、实验步骤:

  1. 分析需求,设计类并画出类框图;
  2. 实现类,完成相应功能
  3. 调试运行程序。

代码展示

以下为 Song.java 部分代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Set;public class Song {private int sid;private String sname;private String category;private String singer;public Song() {}public Song(int sid, String sname, String category, String singer) {super();this.sid = sid;this.sname = sname;this.category = category;this.singer = singer;}public int getSid() {return sid;}public void setSid(int sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public String getSinger() {return singer;}public void setSinger(String singer) {this.singer = singer;}}

以下为 SongDao.java 部分的代码

import java.util.List;public class SongDao {private List<Song> songList;public SongDao() {}public SongDao(List<Song> songList) {super();this.songList = songList;}//    新增歌曲public void add(Song song) {songList.add(song);}//    查询歌曲//    按id查找public Song search(int sid) {for (Song song : songList) {if (song.getSid() == sid) {return song;}}return null;}//    按对象查找public Song search(Song song) {if (song == null) {return null;}return search(song.getSid());}//    删除歌曲//按id删除歌曲public void delete(int sid) {Song song = search(sid);if (song != null) {songList.remove(song);}}//按对象删除歌曲public void delete(Song song) {if (song != null) {delete(song.getSid());}}public List<Song> getSongList() {return songList;}public void setSongList(List<Song> songList) {this.songList = songList;}
}

以下为 SongService.java 部分的代码

import java.util.List;public class SongService {private SongDao dao;public SongService() {super();// TODO Auto-generated constructor stub}public SongService(SongDao dao) {super();this.dao = dao;}public void add(Song song) {dao.add(song);}public Song search(int sid) {return dao.search(sid);}public Song search(Song song) {return dao.search(song);}public void delete(Song song) {dao.delete(song);}public void delete(int id) {dao.delete(id);}public List<Song> trace() {return dao.getSongList();}public void alter(Song song) {}public SongDao getDao() {return dao;}public void setDao(SongDao dao) {this.dao = dao;}}

以下为 SongView.java 部分的代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.util.ArrayList;
import java.util.List;
import javax.swing.text.AbstractDocument.BranchElement;public class SongView {private SongService service;public SongView() {super();//TODO Auto-generated constructor stub}public SongView(SongService service) {super();this.service = service;}public void show() throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));boolean stop = false;while (!stop) {System.out.println("****************************************************\n"+ "                                       **歌曲管理** \n"+ "    1-----------------------------------查找歌曲\n"+ "    2-----------------------------------增加歌曲\n"+ "    3-----------------------------------删除歌曲\n"+ "    4-----------------------------------显示所有歌曲\n"+ "    5-----------------------------------退出系统\n"+ "****************************************************\n"+ "                                       **input [1-5]:");String line = br.readLine();int command = Integer.parseInt(line);switch (command) {case 1:System.out.println("Sccording to id or complete info?Input[lor2]");line = br.readLine();command = Integer.parseInt(line);if (command == 2) {System.out.println("Input song's id");String sid = br.readLine();int id = Integer.parseInt(sid);System.out.println("Input song's name:");String sname = br.readLine();System.out.println("Input singer's name");String singerName = br.readLine();System.out.println("Input song's category");String category = br.readLine();Song song = new Song(id, sname, category, singerName);print(service.search(song));} else {System.out.println("Input song's id");String sid = br.readLine();int id = Integer.parseInt(sid);print(service.search(id));}break;case 2:System.out.println("Input new song's id");String sid = br.readLine();int id = Integer.parseInt(sid);System.out.println("Input new song's name");String sname = br.readLine();System.out.println("Input new singer's name");String singerName = br.readLine();System.out.println("Input song's category");String category = br.readLine();Song song = new Song(id, sname, category, singerName);service.add(song);break;case 3:System.out.println("请输入待删除歌曲的编号");sid = br.readLine();id = Integer.parseInt(sid);service.delete(id);System.out.println("Delete seccessfully");break;case 4:List<Song> list = service.trace();print(list);break;case 5:stop = true;System.out.println("Byebye");break;default:System.out.println("Error in input, try again");break;}}}public void print(Song song) {System.out.printf("%-10s%-15s%-15s%-15s\n", "ID", "NAME", "SINGER", "CATEGORY");System.out.println("----------------------------------------------------------------------");System.out.printf("%-15d%-20s%-25s%-20s\n", song.getSid(), song.getSname(), song.getSinger(), song.getCategory());}public void print(List<Song> list) {System.out.printf("%-10s%-15s%-15s%-15s\n", "ID", "NAME", "SINGER", "CATEGORY");System.out.println("----------------------------------------------------------------------");for (Song song : list)System.out.printf("%-15d%-20s%-25s%-20s\n", song.getSid(), song.getSname(), song.getSinger(), song.getCategory());}public static void main(String[] args) {SongView view = new SongView();SongService service = new SongService();SongDao dao = new SongDao();List<Song> list = new ArrayList<>();dao.setSongList(list);service.setDao(dao);view.setSongService(service);try {view.show();} catch (Exception e) {// TODO: handle exceptionSystem.out.println(e);}}public SongService getSongService() {return service;}public void setSongService(SongService songService) {this.service = songService;}
}

转载于:https://www.cnblogs.com/kazama/p/10181095.html

Java项目实战---歌曲管理系统相关推荐

  1. java项目实战-超市管理系统(三)页面设计源码

    一.duan.page.MainPage package duan.page;import java.util.ArrayList;import duan.dao.GoodsDao; import d ...

  2. Java项目实战(企业人事管理系统)-李兴华-专题视频课程

    Java项目实战(企业人事管理系统)-7733人已学习 课程介绍         本课程主要为Java项目开发课程,在整体课程之中主要以一个实际的雇员信息管理项目为例,讲解了企业人事系统的基础开发,在 ...

  3. 【Java项目实战】在线音乐播放器(从需求到产品完整解析)

    准备工作必看:[Java项目实战]在线音乐播放器(前期准备) 核心功能 登录.注册 上传音乐 删除某一个音乐信息 删除选中的音乐信息 查询音乐(包含查找指定/模糊匹配的音乐) 添加音乐到"喜 ...

  4. JAVA项目实战开发电商项目案例(十)订单与支付模块

    文章目录 1项目架构 2项目采用技术 3订单与支付模块功能演示 4如何开发支付宝的支付模块以及订单模块 4.1首先需要编写前端页面以及JS文件 4.2其次需要编写JAVA后台接口 4.3支付模块分析 ...

  5. Vue项目实战 —— 后台管理系统( pc端 ) 第三篇

    ​前期回顾    ​  Vue项目实战 -- 后台管理系统( pc端 ) 第二篇_0.活在风浪里的博客-CSDN博客前期回顾 Vue项目实战 -- 后台管理系统( pc端 ) 第一篇 _0.活在风浪里 ...

  6. Vue项目实战 —— 后台管理系统( pc端 ) 第一篇

    前期回顾     我只写注释 -- 让Ai写代码_0.活在风浪里的博客-CSDN博客前期回顾 Vue项目实战 -- 哔哩哔哩移动端开发-- 第二篇_0.活在风浪里的博客-CSDN博客https://b ...

  7. Java项目01-菜谱管理系统控制台实现

    Java项目01-菜谱管理系统控制台实现: 源代码及展示视频请到资源处下载,也可私聊本人提供免积分百度云下载,另外后续还有Java Swing+数据库实现的界面项目哦! 系统主界面: Java Swi ...

  8. 怒江java培训班_智慧树知到答案Java项目实战(黑龙江联盟)查题公众号

    智慧树知到答案Java项目实战(黑龙江联盟)查题公众号 更多相关问题 读长沙小丽的东南亚"新马泰"旅游日记,结合地图,回答问题.(8分)(3)小丽在马来西亚观光,随处可见()A.油 ...

  9. 完成我的第一个java项目“评标人才库管理系统”——环境配置+创项目

    完成我的第一个java项目"评标人才库管理系统"--环境配置+创项目 idea配置maven环境 创建第一个Spring项目 idea配置maven环境 1.下载maven htt ...

最新文章

  1. 梦幻桌面wmv_【 梦幻桌面 】梦幻桌面(DreamScene桌面美化工具)新版下载 - U大师
  2. 运算符重载(c++细节篇二)
  3. python获取文件字节数_python关于文件操作中的字符个数和字节数
  4. 局域网内抢网速_路由器要不要每天重启?多亏宽带师傅透露,难怪网速一天比一天慢...
  5. stream获取filter
  6. spock测试_使用Spock测试您的代码
  7. jaxb xsd生成xml_使用JAXB和Jackson从XSD生成JSON模式
  8. python面向过程是基于面向对象的_Python5.1-面向对象与面向过程
  9. Pytorch中参数和模型的保存与读取
  10. linux文件编码无法修改,在Linux系统中修改文本的字符编码的方法
  11. python模板语言_你应该(或许)没使用过的 3 种 Python 模板语言 | Linux 中国
  12. python怎么做项目_...内学习python和django,并做出一个项目需要怎么准备,可以做什么......
  13. tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤
  14. mysql登录密码mysql重置root密码
  15. 巴比特独家 | 我们梳理98家新三板公司年报,发现企业布局区块链6大特点
  16. JAVA架构师实战第二章 HTMLCSSJAVASCRIPT
  17. 2020-4-24 Open Web Application Security Project (OWASP)
  18. python派森编程_派森(Python)官方下载_派森(Python)最新版_派森(Python)v2.7.14官方正式版-华军软件园...
  19. 笔记本电脑运行特别慢怎么解决
  20. HTML和web窗体的区别(转载)

热门文章

  1. 缓存字节流BufferedInputStream使用及原理解析
  2. 盏茶python(五) 函数
  3. 微信小程序自定义Notify
  4. 放下助人情结,尊重他人命运
  5. 记一次网站被攻击WebShell分析
  6. ICLR 2022为博客单独设置Track,Andrej Karpathy复现LeCun论文入选!
  7. JavaScript:JavaScript特效
  8. 白宫召见科技巨头 讨论AI潜在风险 以确保人们从创新中受益
  9. c语言long unsigned int,关于c ++:如何安全地将unsigned long int转换为int?
  10. 【C函数】sysinfo获取系统相关信息