没有合适的资源?快使用搜索试试~ 我知道了~
java上机报告3——记事本1
资源详情
资源评论
资源推荐
Java 课程上机报告
上机题目:Java 高级语言特征
张俊华 16030199025 (组长)
李金鑫 16030199026
李天浩 16030199027
上机时间:2017/04/08 08:00-12:00
地点:EIII-204
一、 小组名单
学号
姓名
工作
16030199025
张俊华
完成程序、练习例程、调试、小组讨论
16030199026
李金鑫
完成程序、练习例程、调试、小组讨论
16030199027
李天浩
完成程序、练习例程、调试、小组讨论
二、题目
实验目标:
熟悉 Java 的泛型;了解 Java 的泛型特点;初步掌握 Java 的泛型编程方法。
实验要求:
1.练习 PPT 中 7,21,31,53,64,70,74,79,81,83,94,99 页的小练习,尝
试对小练习中各部分进行修改,并观察修改后的执行效果。
2.编写一个程序,程序提供记事本功能:
(1)构建记事本类,该类能存储不定数量的记录;能获得已经存储的记录数量;能
追加记录;能展示已经存储的全部记录或其中任何一条记录;能删除已经存储的全部
记录或其中任何一条记录。
(2)构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用户的操
作请求。
程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根据用户的
功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
三、题目分析:
本实验要求编写一个程序,实现以下功能:
1. 根据用户输入储存记录
2. 能对记录进行追加、展示、删除操作
3. 良好的交互
1. 根据用户输入储存记录:
Java 的 ArrayList 类采用可变大小的数组实现了 List 接口。除了实现 List 接口,该
类还提供了访问数组大小的方法,ArrayList 对象会随着元素的增加其容积自动扩大。
这些特性适用于题目要求,故使用 ArrayList 储存记录。
但是,直接使用 ArrayList 并不是最佳选择,本题应该构建一个类对 ArrayList 进行
封装,避免其他类对 ArrayList 直接调用。提高程序的安全性与拓展性,减少不同类
之间的耦合。
2. 对记录的追加、展示、删除
构建 NotesBox 类,该类含有对 ArrayList 进行操作的方法,其他类通过对 NotesBox
方法的调用,实现对记录的操作
3. 实现良好人机交互的用户界面:
构建界面类,通过 System.out.println 向用户输出提示信息,并通过 Scanner 类接
收用户输入。
四、程序实现:
张俊华:
1.实验环境:
IntelliJ IDEA 2017.1.2
Build #IU-171.4249.39, built on April 25, 2017
JRE: 1.8.0_112-release-736-b16 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
2.实现过程:
在开始编写程序前先对程序的整体结构和各个类之间的关系进行设计。定义三个类:
NotesBox:对 ArrayList 进行操作,读写数据
Actions:程序功能和逻辑的实现
UserInterface:与用户交互,包括控制台的输入与输出
在 NotesBox 中编写了以下方法:
public static int getListSize() {
/**
*
返回
notes
个数
*@param
*@return size
个数
*@exception
*@author
张俊华
16030199025
*/
return notesList.size();
}
public static int addNote(int index, String note) {
/**
*
写入一个
note
*@param note
需要写入的字符串
*@return index
写入位置
*@exception
*@author
张俊华
16030199025
*/
if (index == -1)
notesList.add(note);
//序号为-1 则直接末尾追加
else
notesList.add(index, note);
//否则插入到指定序号前
return notesList.indexOf(note);
//返回这个 note 在 list 中的位置
}
public static String getNote(int index) {
/**
*
获取序号为
index
的
note
*@param index
序数
*@return
*@exception
*@author
张俊华
16030199025
*/
return notesList.get(index);
}
public static void delNote(int index) {
/**
*
删除指定序号的
note
*@param index
序数
*@return
*@exception
*@author
张俊华
16030199025
*/
notesList.remove(index);
}
public static void delAllNote() {
/**
*
清空笔记本
*@param
*@return
*@exception
*@author
张俊华
16030199025
*/
notesList.clear();
}
在 Actions 中实现了记事本的各种功能,比如 addNote、delNote、showNote 等,这些方法调
用 UserInterface 中的方法和 NotesBox 中的方法对用户的输入进行处理和响应。
例如:删除一条笔记
public static void delNote() {
/**
*
删除一条
note
*@param
*@return
*@exception
*@author
张俊华
16030199025
*/
Prompt.TipDelNote(1);
int index = ScanTerminal.ScanIndex();
//获取删除序号
Prompt.TipDelNote(2);
PrintTerminal.PrintNote(NotesBox.getNote(index));
Prompt.TipDelNote(3);
//询问是否删除
if (ScanTerminal.ScanChoise().equals("y")) {
NotesBox.delNote(index);
Prompt.TipDelNote(4);
}
//执行删除操作
else {
Prompt.TipDelNote(5);
}
//取消操作
}
程序执行时发现,当用户请求的序号超出了 ArrayList 范围时,Java 会抛出异常并终止运
行,为了防止用户错误的输入导致程序崩溃,改进代码,加入异常处理:
public static boolean userChoise(){
/**
*
获取用户想执行的功能
*@param
*@return boolean
是否进行了选择
*@exception
*@author
张俊华
16030199025
*/
Prompt.TipShowMenu();
//打印菜单
String choise = ScanTerminal.ScanChoise();
try {
if (choise.equals("1")) {
Actions.addNote();
} else if (choise.equals("2")) {
Actions.showNote();
} else if (choise.equals("3")) {
Actions.delNote();
} else if (choise.equals("4")) {
Actions.showAllNote();
} else if (choise.equals("5")) {
Actions.delAllNote();
} else if (choise.equals("6")) {
Actions.searchNote();
} else if (choise.equals("q")) {
return false;
剩余22页未读,继续阅读
优游的鱼
- 粉丝: 70
- 资源: 316
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0