Java唐诗学习系统

《面向对象程序设计》课程设计题目

第 2 题 唐诗学习系统
【涉及知识点】
1. Java语言的文件操作
2. Java中的异常处理
3. 数据的输入和输出。
4. String、StringBuilder和StringBuffer的应用

【题目介绍】
为什么要学习唐诗?
你去旅游,看到了美景,别人在说,这儿风景真好,鸟真多。读唐诗的你却可以脱口而出:雁引愁心去,山衔好月来。
大学毕业,朝夕相处四年的舍友各奔东西。临行前的聚会,每个人眼眶红红的,想说点啥,但是又不知道说什么。你若读过唐诗,你就会安慰好友:某愁前路无知己,天下谁人不识君。
所以,我们有必要设计一款“唐诗学习系统”,来帮助大家学习古诗,陶冶情操。

【功能要求】
【基础功能】
给出一个文本文档“唐诗三百首.txt”,内容是一些唐朝诗人的选集。观察此文件的内容格式,完成下列工作:
1、读取“唐诗三百首.txt”,将其全部内容追加到一个字符串对象中【1】;
2、采取合适的手段分离出每首诗【2】,然后执行如下操作:
(1)按标题搜索一首诗;
(2)按作者搜索诗集,返回这位作者的所有唐诗;
(3)按某个词语或者诗句搜索诗,返回包含特定内容的所有唐诗;
(4)随机选取一首诗,显示其标题和内容,让用户猜这首诗的作者是谁,并显示结果。
【扩展功能】
另创建一个文件夹“诗人”,遍历“唐诗三百首.txt”中所有的诗,按作者分类,在“诗人”文件夹中为每个作者创建一个txt文件,将此作者的诗集复制到此文件中。

提示:
【1】String为字符串常量,这就导致每次对String的修改操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。举个简单的例子:
1 String str=“abc”;
2 System.out.println(str);
3 str=str+“de”;
4 System.out.println(str);
  如果运行这段代码会发现先输出“abc”,然后又输出“abcde”,好像是str这个对象被更改了,其实,这只是一种假象罢了,JVM对于这几行代码是这样处理的,首先创建一个String对象str,并把“abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了,所以,str实际上并没有被更改,也就是前面说的String对象一旦创建之后就不可更改了。所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。
所以当需要对字符串进行大量修改的时候,建议使用 StringBuffer或者StringBuilder 类。和String类不同的是,StringBuffer和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。
【2】StringBuffer类或者StringBuilder类的对象都可以调用toString()方法返回一个String对象,分割字符串可以考虑调用String类的String[] split(String regex)方法。

源码下载

链接:https://pan.baidu.com/s/1g5W58uquEBH5P67N0rR8Nw?pwd=1111
提取码:1111

Java唐诗学习系统相关推荐

  1. 【附源码】计算机毕业设计java在线学习系统的设计与开发设计与实现

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  2. java在线学习系统源码_java学习成长之路(基础,源码,项目,实战)

    获取一下学习资源请关注微信公众号:Java编程指南 我为自学编程的或初学java的小伙伴们准备了一整套完整的学习资源和文章,还有我自己在自学路上的一些总结和学习线路,希望能帮到小伙伴们,如果有什么疑问 ...

  3. 微信小程序java在线学习系统平台 视频课程学习

    运行环境 jdk版本:1.8 及以上 ide工具:IDEA ,微信小程序开发工具 数据库: mysql 编程语言: Java tomcat: 8.0 及以上 java框架:SSM maven: 3.6 ...

  4. java在线学习系统源码_Java在线考试系统源码

    今天给大家演示的是一款由jsp+mysql+ssm框架实现的学生在线考试系统,,今天这个考试系统功能比较完善,支持单选.多选.简答题型,试题可以批量导入,导入时可选择多种方式导入,比如导入到试题库,导 ...

  5. 零基础参加java培训的系统学习路线

    ​ 零基础想要学习java技术,那么最好的选择就是参加java培训,进行系统的学习,以下就是小编为大家整理的零基础参加java培训的系统学习路线,希望能够帮助到正在学习java技术的零基础同学. 零基 ...

  6. Java I/O系统学习系列三:I/O流的典型使用方式

    尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适 ...

  7. Java I/O系统学习系列二:输入和输出

    编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇 ...

  8. Java I/O系统学习系列一:File和RandomAccessFile

    I/O系统即输入/输出系统,对于一门程序语言来说,创建一个好的输入/输出系统并非易事.因为不仅存在各种I/O源端和想要与之通信的接收端(文件.控制台.网络链接等),而且还需要支持多种不同方式的通信(顺 ...

  9. 【高级Java架构师系统学习】最新Java高级面试题汇

    性能调优 影响MySQLServer 性能的相关因素 商业需求对性能的影响 系统架构及实现对性能的影响 Query语句对系统性能的影响 Schema设计对系统的性能影响 硬件环境对系统性能的影响 My ...

最新文章

  1. ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1
  2. 杭电1789贪心java实现
  3. 第二阶段冲刺10天 第五天
  4. WUTOJ 1284: Gold Medal(Java)
  5. 玩cf出现outofmemory_CF画质粗糙平衡感人,却能历经十年经久不衰,靠的是什么?...
  6. 《MySQL DBA修炼之道》——1.4 MySQL权限
  7. java判断float相等_在java中判断两个浮点型(float)数据是否相等的案例
  8. excel的ADO读取ORACLE,【VBA研究】利用ADO让普通人用excel读取oracle数据库表的通用办...
  9. 关于Python你必须知道的常识
  10. Oracle索引状态查询与索引重建
  11. oracle执行计划结果分析_优化体系--sql整体优化(调优工具分析)
  12. 合格证标签图片_合格证图片_合格证模板_合格证设计素材下载
  13. 网页页面缩小放大的快捷键
  14. ABAP基本数据类型
  15. 微信h5缓存清理技巧
  16. 斗地主手牌最少手数的搜索
  17. 基于机智云平台的泵站智能巡检系统
  18. GOPATH 与工作空间
  19. 移动端 UI设计尺寸(一)篇
  20. 失眠脑子一直在想事情,试试这些高质量睡眠小妙招

热门文章

  1. Java虚拟机(JVM)-- Dump内存快照
  2. c语言能够输出形如金字塔型的数 如1 22 333 4444 55555
  3. c语言肤色检测,基于肤色的人脸检测
  4. java调用扫描仪_通过Java调用Dynamsoft .NET TWAIN SDK控制扫描仪扫描文档
  5. 1688API接口工具
  6. 确定sw1开关信号输入端口_老电工教大家变频器,怎么接入浮球液位调节信号
  7. 物联网设备数据流转之数据如何实时推送至前端:WebSocket服务端推送
  8. Last_Error: Slave SQL thread retried transaction 10 time(s) in vain, giving up. Consider raising the
  9. Android EditText 手机号344格式化输入的最佳实现
  10. 什么是PCB中的net和vl孔