当前位置: 首页 > news >正文

做商业网站厦门百度推广排名优化

做商业网站,厦门百度推广排名优化,p2p网站设计,知乎seo排名帝搜软件文章目录 前言要求1.设置对象1.1.图书1.2.书架2.管理员3.功能的实现 2.搭建框架2.1.登录(login)2.2.菜单2.3.操作方法的获取 3.操作方法的实现3.1.退出系统(ExitOperation)3.2.显示图书(ShowOperation)3.3.查阅图书(FindOperation)3.4.新增图书(AddOperation)3.5.借出图书(Borr…

文章目录

  • 前言
  • 要求
  • 1.设置对象
    • 1.1.图书
    • 1.2.书架
    • 2.管理员
    • 3.功能的实现
  • 2.搭建框架
    • 2.1.登录(login)
    • 2.2.菜单
    • 2.3.操作方法的获取
  • 3.操作方法的实现
    • 3.1.退出系统(ExitOperation)
    • 3.2.显示图书(ShowOperation)
    • 3.3.查阅图书(FindOperation)
    • 3.4.新增图书(AddOperation)
    • 3.5.借出图书(BorrowOperation)
    • 3.6.归还图书(ReturnOperation)
    • 3.7.删除图书(DelOperation)


前言

前面足足有十篇博客,给大家讲解了Java的基础语法,尤其是面向对象以及其思想,是我们遇到的第一种障碍,为此咱们写一个图书管理系统进行巩固。

要求

在这里插入图片描述
这边是一个主要流程,其中具体的功能就不在此一一展示,等会在功能的实现中,具体再说

1.设置对象

1.1.图书

根据图上所示,我们可以发现,每一个图书的成员变量有五个:
书名,作者,价格,类型,以及借出情况。
并且我们不想要让别人直接得到,那么都需要用private修饰。

1.2.书架

每本书都要放到书架中,方才可以使用,当然还要直到当前图书的个数,以及如何取书和放书。
下来我们这两个放到一个包中,编写其内容,代码。
书架类

public class BookList {Book[]books=new Book[10];private int UseSize;public BookList(){this.books[0]=new Book("三国演义","罗贯中",9.9,"小说");this.books[1]=new Book("我与地坛","史铁生",23.9,"散文");this.books[2]=new Book("红楼梦","曹雪芹",9.9,"小说");this.UseSize=3;}public BookList(int useSize) {UseSize = useSize;}public Book getBook(int pos){return books[pos];}public void setBook(int pos,Book book){this.books[pos]=book;}public int getUseSize() {return UseSize;}public void setUseSize(int useSize) {UseSize = useSize;}public Book[] getBooks() {return books;}public void setBooks(Book[] books) {this.books = books;}
}

图书类

public class Book  {private String name;private String author;private double price;private String type;private boolean isBorrowed;public Book(String name, String author, double price, String type) {this.name = name;this.author = author;this.price = price;this.type = type;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public boolean isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed = borrowed;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +(isBorrowed==false?"未借出":"已借出")+'}';}
}

2.管理员

管理员分为两类,1.一种是普通用户,2。一种是管理员用户。
我们把这两种用户的相同点放到一个User抽象类中,再分别实现自己的功能,把这三个类放到一个包里。
User抽象类

public abstract class User {protected String name;public User(String name) {this.name = name;}public abstract void menu();
}

AdminUser类

public class AdminUser extends User {public AdminUser(String name) {super(name);}@Overridepublic void menu() {}
}

NormalUser类

public class NormalUser extends User{public NormalUser(String name) {super(name);}@Overridepublic void menu() {}
}

其中具体的实现,等会在写

3.功能的实现

我们通过上面的图,可以发现一共有7种操作方法,并且有一样的,首先我们会有2个问题:第一个问题:如何可以知道User的类型,第二种,如何可以该用户有哪些方法,并且如何去进行调用呢?这些方法等会都会进行解答,首先我们先把每个功能的框架搭建一下,在创建一个包(iOperation)。
在这里插入图片描述

这边各种包的创建过程,其中有7大操作功能,内容和上面的都一样,大家下面自己去搭建一下。
具体内容,现在进行操作。


2.搭建框架

2.1.登录(login)

在这里插入图片描述

我们现在实现这个页面的内容。主要我们是要想返回值是什么?结合上面第一个问题,返回值是User,通过登录这个方法,我们可以确定目前是什么用户进行登录。

public static User login(){Scanner scanner=new Scanner(System.in);System.out.println("输入你的名字:");String name=scanner.nextLine();System.out.println("输入你的身份:   1.管理员    2.普通用户");int choice=scanner.nextInt();if(choice==1){return new AdminUser(name);}else {return new NormalUser(name);}}

2.2.菜单

在这里插入图片描述
现在我们完成这个菜单页面,并且返回值又是什么?因为,我们已经知道身份了,那么就要知道操作方法的选择,因此返回值是int

AdminUser类

public class AdminUser extends User {public AdminUser(String name) {super(name);}@Overridepublic int menu() {System.out.println("****************");System.out.println("0.退出系统        ");System.out.println("1.查找图书        ") ;System.out.println("2.新增图书        ") ;System.out.println("3.删除图书        ") ;System.out.println("4.显示图书        ") ;System.out.println("****************");System.out.println("请输入你的操作:");Scanner scanner=new Scanner(System.in);int choice=scanner.nextInt();return choice;}
}

NormalUser类

public class NormalUser extends User{public NormalUser(String name) {super(name);}@Overridepublic int  menu() {System.out.println("****************");System.out.println("0.退出系统        ");System.out.println("1.查找图书        ") ;System.out.println("2.借阅图书        ") ;System.out.println("3.归还图书        ") ;System.out.println("****************");System.out.println("请输入你的操作:");Scanner scanner=new Scanner(System.in);int choice=scanner.nextInt();return choice;}
}

User父类就是把原来menu的返回值改为int即可,我就在这不演示啦。

2.3.操作方法的获取

现在便是要解决最难得一个问题,如何让控制台得知,我们要进行那个操作,现在我们知道了用户类型,以及选择的方法,我们可以使用一个数组,每个下标都对应各自的方法,而我们要将7大操作方法,组合在一起,又要跟下标相关联,那一定是数组。并且,要让7大操作方法,都有一个共有的东西,使得在调用这个东西的时候,就是在调用他们自己的话,那就是接口啦!
为此我们在iOperation包中创建一个接口。
IOperation接口

public interface IOPeration {void work(BookList bookList);
}

创建完接口,下来就要在User中创建IOperation数组了,然后分别在AdminUser和NormalUser中,分别对数组进行初始化,与此同时,在User中创建一个方法,可以在Test中使用接口。
User抽象类

public abstract class User {protected String name;protected IOPeration[]ioPerations;public User(String name) {this.name = name;}public abstract int menu();public void doOperation(int choice, BookList bookList){ioPerations[choice].work(bookList);}
}

AdminUser类

public class AdminUser extends User {public AdminUser(String name) {super(name);this.ioPerations=new IOPeration[]{new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new ShowOperation()  };};@Overridepublic int menu() {System.out.println("****************");System.out.println("0.退出系统        ");System.out.println("1.查找图书        ") ;System.out.println("2.新增图书        ") ;System.out.println("3.删除图书        ") ;System.out.println("4.显示图书        ") ;System.out.println("****************");System.out.println("请输入你的操作:");Scanner scanner=new Scanner(System.in);int choice=scanner.nextInt();return choice;}
}

NormalUser类

public class NormalUser extends User{public NormalUser(String name) {super(name);this.ioPerations=new IOPeration[]{new ExitOperation(),new FindOperation() ,new BorrowOperation(),new ReturnOperation()};};@Overridepublic int  menu() {System.out.println("****************");System.out.println("0.退出系统        ");System.out.println("1.查找图书        ") ;System.out.println("2.借阅图书        ") ;System.out.println("3.归还图书        ") ;System.out.println("****************");System.out.println("请输入你的操作:");Scanner scanner=new Scanner(System.in);int choice=scanner.nextInt();return choice;}
}

Test类

public class Test {public static User login(){Scanner scanner=new Scanner(System.in);System.out.println("输入你的名字:");String name=scanner.nextLine();System.out.println("输入你的身份:   1.管理员    2.普通用户");int choice=scanner.nextInt();if(choice==1){return new AdminUser(name);}else {return new NormalUser(name);}}public static void main(String[] args) {BookList bookList=new BookList();User user=login();while (true){int choice=user.menu();user.doOperation(choice,bookList);}}
}

由此观之:将7大操作方法连接起来的的是接口
将方法按照顺序让控制台知道我们的操作,是数组(也可以说是下标),将这两个结合起来,便是我们的创新的点子,最精彩的在上面,大家好好领悟,领悟完,再看每个操作方法的具体实现


3.操作方法的实现

3.1.退出系统(ExitOperation)

public class ExitOperation implements IOPeration{public void work(BookList bookList){System.out.println("退出系统...");System.exit(0);}
}

3.2.显示图书(ShowOperation)

public class ShowOperation implements IOPeration{public void work(BookList bookList){System.out.println("显示图书...");int currentSize=bookList.getUseSize();for (int i = 0; i < currentSize; i++) {Book book=bookList.getBook(i);System.out.println(book);}}
}

3.3.查阅图书(FindOperation)

public class FindOperation implements IOPeration {public void work(BookList bookList){Scanner scanner=new Scanner(System.in);System.out.println("请输入你想查阅的书名");String name=scanner.nextLine();int currentSize=bookList.getUseSize();for (int i = 0; i < currentSize; i++) {Book book=bookList.getBook(i);if(book.getName().equals(name)){System.out.println("找到了图书:");System.out.println(book);return;}}System.out.println("没有找到你想查阅的书籍");}
}

3.4.新增图书(AddOperation)

public class AddOperation implements IOPeration{public void work(BookList bookList){//1.判满和判空System.out.println("新增图书...");int currentSize= bookList.getUseSize();if(currentSize==0){System.out.println("书架中已无书");return;}if(currentSize==bookList.getBooks().length){System.out.println("书架已放满书");return;}Scanner scanner=new Scanner(System.in);System.out.println("请输入书名:");String name=scanner.nextLine();System.out.println("请输入作者:");String author=scanner.nextLine();System.out.println("请输入类型:");String type=scanner.nextLine();System.out.println("请输入价格:");Double price= scanner.nextDouble();Book newbook=new Book(name,author,price,type);for (int i = 0; i < currentSize; i++) {Book book=bookList.getBook(i);if(book.getName().equals(name)){System.out.println("此书在书架上已存在...");return;}}//插入书籍bookList.setUseSize(currentSize+1);bookList.setBook(currentSize,newbook);System.out.println("新书增加成功...");}
}

3.5.借出图书(BorrowOperation)

public class BorrowOperation implements IOPeration {public void work(BookList bookList){System.out.println("借阅图书...");Scanner scanner=new Scanner(System.in);System.out.println("请输入你想借阅的书名:");String name=scanner.nextLine();int currentSize=bookList.getUseSize();for (int i=0;i<currentSize;i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){if(book.isBorrowed()){System.out.println("此书已经借出!");return;}book.setBorrowed(true);System.out.println("借阅成功...");return;}}System.out.println("没有查到你要借阅的图书");}
}

3.6.归还图书(ReturnOperation)

借阅图书和归还图书本质是一样的

public class ReturnOperation implements IOPeration{public void work(BookList bookList){System.out.println("归还图书...");Scanner scanner=new Scanner(System.in);System.out.println("请输入你想归还的书名:");String name=scanner.nextLine();int currentSize=bookList.getUseSize();for (int i=0;i<currentSize;i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){if(book.isBorrowed()){book.setBorrowed(false);System.out.println("归还成功...");return;}}}System.out.println("没有查到你要归还的图书");}
}

3.7.删除图书(DelOperation)

这就需要数据结构的知识啦,可以利用画图来演示
在这里插入图片描述
这里用数字代替图书

public class DelOperation implements IOPeration {public void work(BookList bookList){System.out.println("删除图书...");System.out.println("请输入你想删除的书名");Scanner scanner=new Scanner(System.in);String name=scanner.nextLine();int currentSize=bookList.getUseSize();int i=0;int pos=-1;for (;i<currentSize;i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){pos=i;break;}}if(i==currentSize){System.out.println("没有找到你想删除的图书");return;}//删除图书for (int j=pos;j<currentSize-1;j++){Book book=bookList.getBook(j+1);bookList.setBook(j,book);}bookList.setBook(currentSize,null);bookList.setUseSize(currentSize-1);System.out.println("删除成功!");}
}

具体代码:请看大松鼠的码云

http://www.yidumall.com/news/95285.html

相关文章:

  • 外贸建站优化软件开发需要学什么
  • 网页制作与网站开发感想宁波优化推广选哪家
  • wordpress 优惠码大连seo建站
  • 最专业的手机网站制作推广计划方案模板
  • 蓝冠在线网站建设产品推广找哪家公司
  • 网络绿化网站建设哪家权威关键词排名哪里查
  • 做仿站如何修改网站管理权限中国国家培训网官网查询
  • 民宿网站开发dfd图省好多会员app
  • wordpress页面调用子页面内容seo网络推广企业
  • 模板网站下载上google必须翻墙吗
  • 电子商务网站建设与维护试卷有什么可以做推广的软件
  • 怎么网站是谁做的抖音关键词搜索指数
  • apache发布多个网站网站百度推广
  • wordpress验证google站长拉新充场app推广平台
  • 网站建设齐齐哈尔优化大师win7官方免费下载
  • 全国今日新增疫情最新情况西安网站seo技术厂家
  • 合肥网站开发怎么发帖子做推广
  • 深圳好点的网站建设公司日本积分榜最新排名
  • 做网站必须要公网ip郑州seo顾问阿亮
  • 企业网站建设的经费预算seo排名工具给您好的建议下载官网
  • 专业制作网站用哪些软件爱上链外链购买平台
  • 成都疫情严重吗南宁百度seo公司
  • 网站现在一般做多大尺寸seo网络排名优化哪家好
  • 网站建设是啥工作靠谱的代运营公司有哪些
  • 网站的制作方案网络营销推广技巧
  • 网站如何做网站征求意见专栏上海网站建设哪家好
  • 网站如何做微信支付宝支付宝支付宝接口最佳搜索引擎磁力王
  • 网络下载的网站模板能直接上传到虚拟主机seo做关键词怎么收费的
  • 郑州网站建设多少钱自己怎么制作一个网站
  • 企业查询免费网站技能培训有哪些