使用eclipse创建一个图书管理系统(1)-----搭建架构

2023-11-10

目录

思维导图:

图书管理系统的创建:

第一步:搭建框架-------使用者

第二步:搭建框架------被使用者

第三步:操作方法

第四步:main函数


思维导图:

 前言:

昨天学了一下使用Java语言来写一个图书管理系统,于是今天写一篇博客作为一个小笔记巩固一下自己学到的知识!博主也是刚学,可能写的不是很清楚,很明白……,希望大家谅解!

图书管理系统的创建:

第一步:搭建框架-------使用者

这个过程是最简单的,只要明确的知道自己的图书管理系统要面向的对象是谁!比如我写的,我面向的对象就是使用者:AdminUser与NormalUser,还有被使用的对象:Book与Booklist。

于是我的第一步便是创建了这几个类:

第一个:User(父类)

package User;

public  class User {
 
  protected String name;
  public User(String name) {
	// TODO Auto-generated constructor stub
	  this.name = name;
}
	
}

第二个:AdminUser(子类)

package User;

public class AdminUser extends User{
	public AdminUser(String name) {
		// TODO Auto-generated constructor stub
		super(name);//先帮父类构造
		this.name = name;//再自己构造
	}

}

第三个:NormalUser(子类)

package User;

public class NormalUser extends User{
	public NormalUser(String name) {
		// TODO Auto-generated constructor stub
		super(name);
		this.name = name;
	}

}

说明:

1.这三个类是在同一个包中的

2.至于为什么要多创建一个父类User呢?是因为这样方便向下转型! 毕竟两个子类在调用时不能统一类型,但是加一个父类就很好统一了!

第二步:搭建框架------被使用者

这个项目里面的被使用者是谁?毫无疑问是我们的书以及书架!因为你要借的是书,而书在书架上。你要动书,自然就会动书架!!!所以我们的操作对象也就确定了。

于是我的第二步就创建了这两个对象:

第一个:Book类

package Library;

public class Book {
	private String name;
	private String type;
	private String author;
	private int price;
	private boolean isBorrow;
	public Book( String name,String type,String author, int price) {
		this.name = name;
		this.type = type;
		this.author = author;
		this.price = price;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public boolean isBorrow() {
		return isBorrow;
	}
	public void setBorrow(boolean isBorrow) {
		this.isBorrow = isBorrow;
	}
	
	

}

 第二个类:Booklist

package Library;

public class Booklist {
	Book[]books = new Book[10];//创建一个Book类型的数组来当书架
	public Booklist(Book[]books) {//构造方法初始化数组
		// TODO Auto-generated constructor stub
		books[0] = new Book("三国演义", "古典小说", "罗贯中", 66);
		books[1] = new Book("水浒传", "古典小说","施耐庵", 55);
		books[2] = new Book("三体", "科幻小说", "刘慈欣", 88);		
	}
	

}

说明:

1.这两个类也是在同一个包里的

2.在Book类中使用private修饰符可以更好的封装并且能确保name,author这些变量不能随意改动。只能通过get与set方法来获取与更改。

3.在构造方法中之所以没有初始化isBorrow是因为它默认就是false。一开始我们的书架的书是没有被借出的,所以isBorrow就是false。

第三步:操作方法

操作方法的功能是多种多样的,也就是说他是多态的。于是我们便可以多态的方法来想如何实现多态。

接口:IOperation

package Operation;

import Library.Booklist;

public interface IOperation {
	public void work(Booklist booklist) ;//接口内的方法,操作的对象是Booklist。
	

}

 第二个类:AddOperation

package Operation;

import Library.Booklist;

public class AddOperation implements IOperation{
	public void work(Booklist booklist) {//重写方法,使这个方法变为Addoperation的方法
		System.out.println("添加图书!");
	}

}

第二个类:DelOperation

package Operation;

import Library.Booklist;

public class DelOperation implements IOperation {
	public void work(Booklist booklist) {//重写方法,使work方法变成DelOperation的方法
		System.out.println("删除图书!");
	}

}

第三个类:FindOperation

package Operation;

import Library.Booklist;

public class FindOperation implements IOperation {
   public void work(Booklist booklist){//重写work方法使之成为FindOperation的方法
	   System.out.println("查阅图书!");
   }
}

第四个类:DisplayOperation

package Operation;

import Library.Booklist;

public class DisplayOperation implements IOperation {
public void work(Booklist booklist) {
	System.out.println("显示图书!");
}
}

第五个类:isBorrowOperation

package Operation;

import Library.Booklist;

public class isBorrowOperation implements IOperation {
public void work(Booklist booklist) {
	System.out.println("借阅图书!");
}
}

第六个类:returnOperation

package Operation;

import Library.Booklist;

public class returnOperation implements IOperation{
	public void work(Booklist booklist) {
		System.out.println("归还图书!");
	}

}

说明:

1.这里的接口就是为了实现多态,方便以后的调用。

2.接口里的方法是只能定义不能写的。

3.每个继承接口的方法都要重写接口内的方法从而形成自己的方法

4.这些类和接口都在同一个包里面

第四步:main函数

就像我以前写C语言的小游戏有test.c源文件来实现游戏逻辑一样,用Java语言实现一个图书管理系统也要有一个单独的main函数来实现图书管理系统的逻辑!

在与User同样的包里创建main函数:

package User;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

 结语:

现在我们就把图书管理系统的框架搭建完成了!接下来要做的就是实现图书管理系统的逻辑!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用eclipse创建一个图书管理系统(1)-----搭建架构 的相关文章

  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口

随机推荐

  • 在IntelliJ IDEA中查看代码覆盖率

    在IDEA中使用Junit测试时 时常需要考虑代码覆盖率 以下是查看代码覆盖率的方法 在test class右键选择 more run debug gt Run Test with Coverage 使用时发现会出现没有Branch Cov
  • ubuntu上安装最新的docker社区版

    如果安装有老的docker先删除老的版本 sudo apt get remove docker docker engine docker io 老的镜像 存储 网络信息保留在 var lib docker 下 可以自行删除 新的社区版本叫d
  • 矩阵的转置怎么编程用C语言,将一个3x3的矩阵转置,怎样用c语言写?

    include
  • 学建模时常遇到的问题(看专业解答)

    常做到一半就卡住 那是不是操作时有问题 没有处理好 选择面数选不中 选择线选不中 还只能用最初始的命令 这些有一种可能就是你操作模型时 按到了空格键 然后界面就会锁死 按空格键就阔以取消啦 还有一个情况就是 进入可编辑模式之后 对模型进行点
  • 权限提升-MYSQL数据库提权

    基础知识 1 需要了解掌握的权限 后台权限 网站权限 数据库权限 接口权限 系统权限 域控权限等 2 权限获取方法简要归类说明 后台权限 SQL注入 数据库备份泄露 默认或弱口令等获取帐号密码进入 网站权限 后台提升至网站权限 RCE或文件
  • zookeeper到nacos的迁移实践

    本文已收录 https github com lkxiaolou lkxiaolou 欢迎star 技术选型 公司的RPC框架是dubbo 配合使用的服务发现组件一直是zookeeper 长久以来也没什么大问题 至于为什么要考虑换掉zook
  • azkaban上传zip报错:Error Chunking during uploading files to db

    上传时页面报 Instalation Failed Error Chunking during uploading files to db 查看web server日志 2021 11 26 11 20 38 253 0800 INFO P
  • vue图片上传组件

    vue图片上传组件 最近在做项目的时候顺便补充了一下公司项目的公共组件库 刚刚手头事情告一段落 就来做个笔记 首先来看看最终效果 1 不允许删除 2 允许用户删除 显示删除按钮 实现的效果就是上图显示内容 接下来说说组件布局那部分直接上代码
  • 循环神经网络-LSTM

    参考 长期以来 隐变量模型存在着长期信息保存和短期输入缺失的问题 解决这一问题的最早方法之一是长短期存储器 long short term memory LSTM Hochreiter and Schmidhuber 1997 它有许多与门
  • 教你如何更改windows10系统默认字体

    以管理员身份运行命令提示符 打开注册表 定位到HKEY LOCAL MACHINE SOFTWARE Microsoft WindowsNT CurrentVersion Fonts 在右边找的Microsoft YaHei Microso
  • 常用继电器模块的PCB设计与实物分享

    今天分享一下自己做的一块继电器模块 因为之前有用到继电器模块的原理图 索性自己画了一下 原理图如图所示 一 原理图 继电器模块还是比较简单的 就是通过三极管的开关作用来使电路导通 从而来控制继电器的磁铁通电吸合内部的衔铁 其高低电平的触发其
  • Day6 - Python第三方模块xpinyin、faker、pymysql、Redis、rediscluster、xlrd、xlutils、openpyxl、request

    一 第三方模块 安装第三方模块 第一种方式 1 将pip命令加入到环境变量 且将python的安装目录下scripts目录加入到环境变量里面 2 pip install 数据库名称 pip install xpinyin python2 e
  • 用超级厉害的VS Code工具来嗨皮编程吧!

    用超级厉害的VS Code工具来嗨皮编程吧 目录 用超级厉害的VS Code工具来嗨皮编程吧 第一步 安装VS Code 第二步 插件宝藏等你来挖 1 装插件如虎添翼 3 快捷键 让编码更轻松 嗨皮 各位同行的学习小伙伴们 今天我来为你们介
  • 关于git cherry-pick

    项目开发过程中 经常遇到多分支的代码库管理 将提交的代码修改从一个分支转移到另一个分支是常见需求 这时分两种情况 一种情况 需要另一个分支的所有代码变动 那么就采用合并 git merge 另一种情况 只需要部分代码变动 某几个提交 这时可
  • Spring Cloud Alibaba,中国 Javaer 的福音,为微服务续上 18 年

    h2 Spring Cloud Alibaba 中国 Javaer 的福音 为微服务续上 18 年 nbsp h2 p 热 p p a href https my oschina net u 3820517 h4cd a nbsp 发布于
  • Vue指令 关于---v-html_指令 和 v-test_指令 详解

    要学会大大方方的表达爱意 爱不是冷冰冰 爱是炙热的 永远都是 笨蛋才会说反话 笨蛋才会把喜欢的人越推越远 一 在讲解 v test 指令 和v html 指令 前我么先回顾一些基本指令 v bind 单项绑定解析表达式 可简写为 xxx v
  • day6-列表的遍历,增删查改,比较运算,列表推导式,列表的相关函数

    列表基础学习 一 遍历列表 1 遍历列表 二 列表的增删查改操作 1 增 1 列表 append 元素 2 列表 insert 下标 元素 2 删 删除元素 1 del 列表 下标 2 列表 remove 元素 3 列表 pop 下标 列表
  • Win7、Win10系统封装后GHO文件太大?是因为虚拟内存没关、休眠文件没删!

    很多镜像文件封装好都是3 5g的 而最近我自己封装系统 封装完是8g 百度才知道是C盘有休眠文件大概5 4g 下图是我正在用的电脑删除休眠文件后的大小对比 删除休眠文件方法 1 在开始栏的 附件 里面找到 命令提示符 右击 以管理员身份运行
  • 文举论金:3.17黄金原油全面走势分析策略指导。

    市场没有绝对 涨跌没有定势 所以 对市场行情的涨跌平衡判断就是你的制胜法宝 欲望 有句意大利谚语 让金钱成为我们忠心耿耿的仆人 否则 它就会成为一个专横跋扈的主人 空头 多头都能赚钱 唯有贪心不能赚 是你掌控欲望还是欲望掌控你 古人云 不积
  • 使用eclipse创建一个图书管理系统(1)-----搭建架构

    目录 思维导图 图书管理系统的创建 第一步 搭建框架 使用者 第二步 搭建框架 被使用者 第三步 操作方法 第四步 main函数 思维导图 前言 昨天学了一下使用Java语言来写一个图书管理系统 于是今天写一篇博客作为一个小笔记巩固一下自己