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

news2024/10/3 4:32:09

目录

思维导图:

图书管理系统的创建:

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

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

第三步:操作方法

第四步: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

	}

}

 结语:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

演出剧院门票售票预约小程序开发制作功能介绍

基于微信小程序的票务预约小程序,广泛适用于演出主办方、剧院、艺术中心、活动中心售票、景区门票售票、儿童游乐园售票、会务签到、展会售票签到、教育培训报名预约、健身预约功能。 多场景售票支持: 售票软件支持多种场景的售票,支持选座、…

python3+Scrapy:爬虫框架问题合集 【参考转载大佬文章 + 自己解决方法】

1、发送请求403报错排查 参考链接链接: 使用scrapy做爬虫遇到的一些坑:爬虫使用scrapy爬取网页返回403错误大全以及解决方案 参考链接链接: 使用scrapy做爬虫遇到的一些坑:网站常用的反爬虫策略,如何机智的躲过反爬虫Crawled (403) 参考链接…

javaEE 初阶 — Cookie 与 Session

文章目录 Cookie 的四个问题Cookie 的典型应用Cookie 与 Session 的区别代码示例体现两者的关联关系1. 设计思路2. 编写前端登录页面3 编写 LoginServlet 处理登录请求3.1 服务器是如何组织会话的 4. 编写 IndexServlet 生成主页4.1 抓包观察交互过程 Cookie 的四个问题 1、Coo…

Doris(25):Doris的函数—Bitmap函数

1 BITMAP_AND(BITMAP lhs, BITMAP rhs) 计算两个输入bitmap的交集,返回新的bitmap. select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(2))) cnt; select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(1))) cnt; 2 BITMAP_CONTAINS(BITMAP bitmap, BIGINT input…

VGAM | tobit模型

专注系列化、高质量的R语言教程 推文索引 | 联系小编 | 付费合集 本篇来介绍tobit模型,使用的工具包是VGAM。 library(VGAM) 目录如下: 1 Tobit分布2 tobit模型3 运行模型 例1例2例34 其他 1 Tobit分布 tobit模型主要应用于因变量存在删失的情况。以正态…

交换机-Exchanges

交换机 Exchanges 概念 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简…

Threejs进阶之十:让模型移动到鼠标点击的指定位置

上一节中我们实现了物体沿指定轨迹移动的动画效果,这一节我们来实现让模型移动到鼠标点击的制定位置的动画效果。 先看下实现后的最终效果 要实现上面的动画效果,我们需要通过以下步骤来实现 第一步,监听鼠标事件 我们需要监听鼠标的点击事…

2 ROS2话题通讯基础(2)

ROS2话题通讯基础 2.5 自定义话题通讯2.5.1 自定义话题通讯的一般流程2.5.2 创建自定义话题消息简单例子2.5.3 快速创建C/C和Python自定义话题通讯的Student.msg 2.6 使用C/C实现自定义话题通讯2.6.1 创建C/C自定义话题发布方功能包并编写节点文件2.6.2 配置C/C自定义话题发布方…

如何选择适合企业的网盘?必须要考虑这几个方面

随着云存储技术的发展,传统的文件存储服务已逐渐不能满足企业日益增长的文件应用、共享和存储需求。越来越多的企业开始将目光转移到企业网盘上。 在选择企业网盘工具时,比较重要的有两个方面,一个是数据的安全性,一个是协同办公。…

Java 将增加虚拟线程,挑战 Go 协程

Java19 正式发布,带来了一个 Java 开发者垂涎已久的新特性 —— 虚拟线程。在 Java 有这个新特性之前,Go 语言的协程风靡已久,在并发编程领域可以说是叱咤风云。随着国内 Go 语言的快速发展与推广,协程好像成为了一个世界上最好语…

K8S二进制单节点 一键部署K8S_V1.21.x

1、安装前注意事项 安装shell脚本在文章最后位置 1、提前配置静态IP 把脚本的IP 192.168.1.31 换成你的IP 2、创建安装包路径 /home/software/shell 所有的tar包 shell脚本 放在这里 3、免密登录配置所有节点 提前下载镜像如下: [rootmaster01 ~]# docker image…

Ubuntu搜狗输入法安装指南

Ubuntu搜狗输入法安装指南 Ubuntu搜狗输入法安装指南搜狗输入法已支持Ubuntu1604、1804、1910、2004、2010Ubuntu20.04及以上安装搜狗输入法步骤 Ubuntu搜狗输入法安装指南 下载地址:https://shurufa.sogou.com/ 计算为amd64的选择x86_64,以下教程来源…

ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(配准与对齐)

文章目录 1.rgb、depth相机标定矫正1.1.标定rgb相机1.2.标定depth相机1.3.rgb、depth相机一起标定(效果重复了)1.4.取得标定结果1.4.1.得到的标定结果的意义:1.5.IR、RGB相机分别应用标定结果1.5.1.openCV应用标定结果1.5.2.ros2工程应用标定…

[stable-diffusion-art] 指北-2 如何为sd提出好的prompt

https://stable-diffusion-art.com/how-to-come-up-with-good-prompts-for-ai-image-generation/https://stable-diffusion-art.com/how-to-come-up-with-good-prompts-for-ai-image-generation/1.prompt可以促使模型生成以前不存在的高质量的图片,例如:…

windows如何使用脚本打开多个软件

文章目录 windows如何使用脚本打开多个软件问题缘由省流版本制作脚本步骤新建文本找到文件的安装位置方法一:方法二: 总结 windows如何使用脚本打开多个软件 问题缘由 因为强迫症,不想让软件自启,会导致开机变慢,电脑…

Lecture7 处理多维特征的输入(Multiple Dimension Input)

以实际代码出发,逐行讲解。 完整代码: import numpy as np import torch import matplotlib.pyplot as plt# load data xy np.loadtxt(C:\\Users\\14185\\Desktop\\diabetes.csv, delimiter,, dtypenp.float32) x_data torch.from_numpy(xy[:, :-1])…

226. 翻转二叉树【58】

难度等级:容易 上一篇算法: 543. 二叉树的直径【71】 力扣此题地址: 226. 翻转二叉树 - 力扣(Leetcode) 1.题目:226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返…

DAY 52 LVS+Keepalived群集

Keepalived工具介绍 普通集群容易出现的问题 企业应用中,单台服务器承担应用存在单点故障的危险。 单点故障一旦发生, 企业服务将发生中断,造成极大的危害。 Keepalived工具 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&…

v2c - 从Verilog 转换到 C语言的工具

文章目录 一、如何安装1.下载二进制文件2.基准测试 二、如何使用v2c的应用描述工具流程使用 v2c 转换器的工作示例 三、注意事项情形一:拼接:{4{x}}情形1-1 y&{x,x,x,x}情形1-2 y&{x,x,…

【C++】string 类的实现

目录 构造函数赋值重载关于浅拷贝 迭代器容量相关reserveresize 修改push_backappendinserterase关于npos 流运算符重载流插入流提取 构造函数 无参数构造和传参构造 通过对参数设置缺省值为空串""同时满足无参构造和传参构造成员 _size 和 _capacity 均是针对有效…