interface ILink {
public void add(Object data) ; // 这个方法向链表之中保存对象
public int size() ; // 取得链表的长度
public boolean isEmpty() ; // 判断该链表是否有数据
public Object get(int index) ; // 根据索引取得链表中保存的数据
public boolean contains(Object obj) ;// 查询某个数据是否存在
public void remove(Object obj) ; // 删除不需要的数据
public void set(int index,Object data) ; // 根据索引修改指定数据
public void clean() ; // 清空链表
public Object [] toArray() ; // 变为对象数组后输出
}
class LinkImpl implements ILink {
// Node类可以描述出对象保存的先后顺序
private class Node { // 这个类用户不需要知道,只有本类使用
private Object data ; // 保存数据
private Node next ; // 保存下一个节点
// 保证每一个Node创建的时候都有要保存的数据
public Node(Object data) {
this.data = data ;
}
// 第1次执行:this = LinkImpl.root
// 第2次执行:this = LinkImpl.root.next
// 第3次执行:this = LinkImpl.root.next.next
public void addNode(Node newNode) { // 设置节点关系
if (this.next == null) { // 当前节点之后有位置
this.next = newNode ; // 保存新节点
} else { // 如果没有位置
this.next.addNode(newNode) ;
}
}
// 第1次执行:this = LinkImp.root
// 第2次执行:this = LinkImp.root.next
public Object getNode(int index) {
if (LinkImpl.this.foot ++ == index) {
return this.data ;
} else {
return this.next.getNode(index) ;
}
}
// 第1次:this = LinkImpl.root.next,previous = LinkImp.root
public void removeNode(Node previous,Object obj) {
if (this.data.equals(obj)) {
previous.next = this.next ;
} else { // 之前已经判断过要删除的数据存在
this.next.removeNode(this,obj) ;
}
}
public boolean containsNode(Object data) {
if (this.data.equals(data)) {
return true ;
} else {
if (this.next != null) {
return this.next.containsNode(data) ;
} else {
return false ;
}
}
}
public void setNode(Object obj,int index) {
if (LinkImpl.this.foot ++ == index) {
this.data = obj ;
} else {
this.next.setNode(obj,index) ;
}
}
public void toArrayNode() {
LinkImpl.this.retObj [LinkImpl.this.foot ++] = this.data ;
if (this.next != null) {
this.next.toArrayNode() ;
}
}
}
// *******************************
private Node root ; // 表示根节点
private int count = 0 ;
private int foot = 0 ; // 查找使用
private Object retObj [] ; // 返回的对象数组
// ************* 覆写接口中的方法 **********
public void add(Object data) {
// 1、数据本身不包含有先后的顺序
// 需要将数据包装在Node类对象之中,因为Node可以描述先后关系
if (data == null) { // 数据为null
return ; // 结束调用
}
// 2、将数据包装在Node类对象之中
Node newNode = new Node(data) ;
// 3、处理根元素
if (this.root == null) { // 现在没有根元素
this.root = newNode ; // 将第一个节点保存为根元素
} else {
this.root.addNode(newNode) ;// 交由Node处理
}
this.count ++ ;
}
public int size() {
return this.count ;
}
public boolean isEmpty() {
return this.count == 0 && this.root == null ;
}
public Object get(int index) {
if (this.isEmpty()) { // 为空元素
return null ;
}
if (index >= this.count) { // 超过了保存数量
return null ;
}
this.foot = 0 ;
return this.root.getNode(index) ;
}
public boolean contains(Object obj) {
if (this.isEmpty()) {
return false ;
}
return this.root.containsNode(obj) ;
}
public void remove(Object obj) {
if (!this.contains(obj)) { // 数据不存在
return ; // 结束方法
}
// 链表里面最关注的是根节点
if (this.root.data.equals(obj)) { // 根节点要删除
this.root = this.root.next ; // 下一个作为根节点
} else { // 根节点判断完了
this.root.next.removeNode(this.root,obj) ;
}
this.count -- ;
}
public void set(int index,Object data){
this.foot = 0 ;
if (this.isEmpty()) { // 为空元素
return ;
}
if (index >= this.count) { // 超过了保存数量
return ;
}
this.root.setNode(data,index) ;
}
public void clean() {
this.root = null ;
this.count = 0 ;
}
public Object [] toArray() {
if (this.isEmpty()) {
return null ;
}
this.foot = 0 ;
this.retObj = new Object [this.count] ;
this.root.toArrayNode() ;
return this.retObj ;
}
}
interface Pet{//定义宠物标准
public String getName();
public int getAge();
}
class PetShop
{
private ILink allPets;
public PetShop(){
this.allPets = new LinkImpl();
}
public void add(Pet pet){
this.allPets.add(pet);
}
public void delete(Pet pet){
this.allPets.remove(pet);
}
public ILink search(String keyWord){
ILink result=new LinkImpl();
Object obj[]=this.allPets.toArray();
for (int x=0;x<obj.length ;x++ )
{
Object o = obj[x];
Pet p = (Pet)o;
if(p.getName().contains(keyWord)){
result.add(p);
}
}
return result;
}
}
class Dog implements Pet
{
private String name;
private int age;
public Dog(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public boolean equals(Object obj){
if(this==obj){
return true;
}
if(obj==null){
return false;
}
if(!(obj instanceof Dog)){
return false;
}
Dog p = (Dog)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public String toString(){
return"狗名字:"+this.name+",年龄:"+this.age;
}
}
class Cat implements Pet
{
private String name;
private int age;
public Cat(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public boolean equals(Object obj){
if(this==obj){
return true;
}
if(obj==null){
return false;
}
if(!(obj instanceof Cat)){
return false;
}
Cat c = (Cat)obj;
return this.name.equals(c.name)&&this.age==c.age;
}
public String toString(){
return"猫名字:"+this.name+",年龄:"+this.age;
}
}
public class Test
{
public static void main(String args[]){
PetShop shop=new PetShop();
shop.add(new Dog("黑毛",1));
shop.add(new Dog("小毛",1));
shop.add(new Dog("大毛",1));
shop.add(new Dog("毛毛", 1));
shop.add(new Cat("黑小猫",1));
shop.add(new Cat("黑大猫",1));
ILink result = shop.search("黑");
Object obj[]=result.toArray();
for(int x=0;x<obj.length;x++){
System.out.println(obj[x]);
}
}
}
分享到:
相关推荐
Java宠物店是一个典型的基于Java技术开发的管理应用程序,它集成了用户登录、信息修改、数据存储以及商品购买等多种功能,为模拟实际宠物商店的运营提供了便捷的平台。通过这个项目,我们可以深入学习Java编程语言、...
宠物商店项目是北大青鸟ACCP8.0课程中的一部分,专注于Java数据库编程的教学。这个项目旨在帮助学生理解和掌握如何使用Java语言与数据库进行交互,特别是在实际应用中的操作。在这个项目中,学生们将使用IntelliJ ...
"Java JDBC宠物商店"是一个基于Java编程语言,利用JDBC(Java Database Connectivity)技术与MySQL数据库交互,构建的Web应用程序。这个系统旨在模拟一个实际的宠物商店运营环境,可能包括宠物展示、购买、用户管理...
【asp.net 网上宠物商店】项目是一个基于ASP.NET技术构建的在线电子商务平台,专门用于销售宠物及其相关产品。这个项目充分利用了ASP.NET的强大功能,结合SQL Server 2000作为后端数据库,为用户提供了一个高效、...
宠物店管理系统是一个基于互联网技术,运用JavaWeb开发的软件应用,旨在将传统的宠物店运营模式与现代信息技术相结合,提升管理效率和服务质量。该系统利用jsp(JavaServer Pages)作为前端展示,结合MySQL数据库...
〖面向对象(高级)〗_实例分析:宠物商店源代码分析: 业务实体和业务逻辑分开的,并且在表示层上也有逻辑处理。业务实体部分从前到后都有用到。实际上,在传递数据的时候就是传递的一个实体,而不是像我们一般用的一...
在宠物商店模板中,这些插件可以用于创建吸引人的滑动图片展示,展示宠物商品或者店内活动。 4. **易用性和可定制性**:Bootstrap的代码结构清晰,易于理解和修改。设计师可以根据宠物商店的品牌特色和需求,通过...
【C# ASP.NET宠物商店管理系统】是一个基于C#编程语言和ASP.NET框架开发的Web应用程序,主要用于管理和运营一个在线宠物商店。系统集成了完整的数据库,能够处理包括商品管理、订单处理、用户账户管理在内的多种业务...
《网上宠物商店》ASP.NET项目是一个典型的电子商务应用实例,它结合了ASP.NET技术,用于创建一个功能完善的在线购物平台,专注于宠物产品销售。这个项目涵盖了Web开发中的多个关键知识点,包括但不限于以下方面: 1...
在宠物商店里,宠物主人可以出卖、购买宠物 每一笔买入、卖出的业务,店家都会记录在账 商店可以根据需求自己培育宠物品种 系统角色 宠物、主人、宠物商店、账目 提交结果 创建数据库表的脚本文件、系统类图、程序...
宠物商店项目是一个旨在连接宠物主人和宠物商店的交互平台,主要功能包括宠物购买与销售、账单管理和新品种培育。这个项目使用了Java作为后端开发语言,Oracle作为数据库管理系统,构建了一个完整的业务流程。 首先...
宠物商店源码是一个基于MVC(Model-View-Controller)模式开发的应用程序,主要用于演示和教育目的,让学生能够逐步理解并实践三层架构的设计思想。在IT行业中,三层架构是一种常见的软件设计模式,它将应用程序分为...
【宠物商店】是一个适合新手入门的Java编程项目,旨在帮助初学者掌握面向对象设计和数据库应用的基本知识。项目中,开发者模拟了一个简单的宠物商店管理系统的实现,包括了类的设计、数据库交互以及用户界面的展示。...
《Python项目开发实战_PetStore宠物商店_编程案例解析实例详解课程教程》是关于使用Python语言构建PetStore宠物商店项目的实战教程。项目涵盖了Python面向对象编程、wxPython图形用户界面编程以及Python数据库编程等...
《Sun J2EE宠物店例子》是一个经典的教程,它深入浅出地讲解了J2EE(Java 2 Platform, Enterprise Edition)技术在实际应用中的运用,特别是如何构建一个完整的电子商务平台。这个例子通过一个模拟的宠物商店应用,...
Java宠物店源代码是一个经典的Java编程学习项目,它模拟了一个简单的宠物商店的业务流程,涵盖了对象导向编程、GUI设计、数据库交互等多个Java开发的核心概念。这个项目通常用于教学目的,帮助初学者理解如何将实际...
宠物商店项目是一个基于Java开发的数据库应用程序,旨在模拟现实世界的宠物商店运营,提供宠物主人与商店之间的交互功能。该项目的核心目标是实现一个完整的业务流程,包括用户登录、宠物买卖、账单管理和新品培育等...
宠物店管理系统项目java代码 基于java的宠物管理系统 宠物管理代码 简单的Java练习,作为大一狗的我,写的一个作业, 作为一名新人,这是我这个废柴大一狗大一狗的练习作业,要用什么似懂非懂的DAO程序设计模式写要求...
宠物商店的Java代码通常涉及到一个基于Java编程语言的宠物商店管理系统的实现,它可能包括了对宠物信息、库存管理、客户订单以及支付等核心功能的处理。在这个项目中,开发者利用了Java Database Connectivity (JDBC...
宠物店创业计划书 1、执行总结 项目介绍:该宠物店致力于为顾客提供全方位的宠物服务,包括但不限于宠物美容、宠物用品销售、宠物寄养、防疫接种以及宠物的个性化造型设计。我们的目标是打造一个集专业性与创新性于...