需求:实现下面功能
欢迎进入小说管理系统
请选择菜单
1.上传小说
2.查看所有小说
3.删除小说
4.下载小说
5.阅读小说
阅读小说时要实现分页功能,每页显示100个字符且有以下选项
1.首页 2.上一页 3.下一页 4.尾页 5.退出阅读
提示:
创建一个小说类(小说编号,小说名,作者,上传后的路径);用一个list来存储当前的小说数量;固定一个用户目录用来存储用户上传的小说;阅读功能可以用一个变量来标记当前页;
思路:
上传小说,就把用户指定的路径下的文件通过流复制到我们事先设定好的一个文件夹中
查看所有小说时,直接遍历list即可
通过遍历查找对应id的小说对象,然后从list中删除该对象,最后把该对象中存储的小说路径下的小说删除
下载小说可以从小说对象的路径中复制到用户指定目录
阅读分页需要知道小说字符个数,然后/100来编号,最后使用skip()函数来达到目的
给list存档,每次选择系统功能前都先要反序列化出来list;每次执行完上传,删除功能后都应该序列化list;
入口函数:Main函数
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
while(true){
System.out.println("欢迎进入小说管理系统");
System.out.println("请选择菜单");
System.out.println("1.上传小说");
System.out.println("2.查看所有小说");
System.out.println("3.删除小说");
System.out.println("4.下载小说");
System.out.println("5.阅读小说");
//1.反序列化
JQNovelTool.deserialize();
String input = new Scanner(System.in).nextLine();
if (!input.matches("\\d")){
System.out.println("请输入对应选项");
continue;
}
int sel = Integer.parseInt(input);
switch(sel){
case 1:{
if(JQNovelTool.upload()){
System.out.println("上传成功");
//序列化
JQNovelTool.serialize();
}
else
System.out.println("上传失败");
}
break;
case 2:{
System.out.println("已上传的小说");
JQNovelTool.showNovels();
}
break;
case 3:{
System.out.println("请输入您要删除的小说编号");
if (JQNovelTool.remove()){
System.out.println("删除成功");
//序列化
JQNovelTool.serialize();
}else{
System.out.println("没有对应小说编号");
}
}
break;
case 4:{
System.out.println("请输入您要下载的小说编号");
if(JQNovelTool.download())
System.out.println("下载成功");
else
System.out.println("没有对应小说编号或目录");
}
break;
case 5:{
System.out.println("请输入您要阅读的小说编号");
if (!JQNovelTool.read())
System.out.println("没有对应小说编号");
}
break;
default:
System.out.println("暂时没有对应的功能,敬请期待");
break;
}
}
}
}
工具类:JQNovelTool
public class JQNovelT