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

伊犁做网站网站文件夹目录结构

伊犁做网站,网站文件夹目录结构,个人网站建设中代码下载,中国app排行榜完整代码链接#xff1a;https://gitee.com/zeng-xuehui/Java_repository/tree/master/test_11_27_1/src我们在写这个系统时#xff0c;首先需要搭建框架#xff0c;再实现业务逻辑#xff1b;图书管理系统是用户通过各种功能对图书进行操作的一个系统#xff1b;我们需要… 完整代码链接https://gitee.com/zeng-xuehui/Java_repository/tree/master/test_11_27_1/src我们在写这个系统时首先需要搭建框架再实现业务逻辑图书管理系统是用户通过各种功能对图书进行操作的一个系统我们需要通过三方面进行编写代码1、用户  2、功能 3、图书所以代码大的分为了这三部分 1、代码主要就分为三大模块和一个Main类来测试图书管理系统 2、 book包中的Book类和BookList类 Book类是用来描述书这个对象的 BookList类用来描述书架上的书 Book类代码 package book;public class Book {// book的属性private String name; // 名字private String author; // 作者private int price; // 价格private String type; // 类型private Boolean isBorrow false; // 是否借阅-初始值false// 如果这里不初始化后面有些地方使用到isBorrow这个属性就会报错// 书的初始化public Book() {}public Book(String name, String author, String type, int price) {this.name name;this.author author;this.type type;this.price price;}// 方法public void setBorrow(Boolean isBorrow) {this.isBorrow isBorrow;}public String getName() {return name;}public String getAuthor() {return author;}public int getPrice() {return price;}public String getType() {return type;}public Boolean getBorrow() {return isBorrow;}public void setName(String name) {this.name name;}public void setAuthor(String author) {this.author author;}public void setType(String type) {this.type type;}public void setPrice(int price) {this.price price;}Overridepublic String toString() {return Book{ name name \ , author author \ , price price , type type \ ((isBorrow true)? 已借阅: 未借阅) };} }BookList类代码 package book;/*** 难点数组的初始化、数组应该如何使用* 1、this.books new Book[10]; // 将书架初始化为10可以存放10本书**/public class BookList {// 存放书本private Book[] books; // 这是书架存放书本private int useSize; // 存放数量// 初始化public BookList() {this.books new Book[10]; // 将书架初始化为10可以存放10本书// 书架上有两本书所以可以通过实例代码块实现或者构造代码块实现this.books[0] new Book(java,高斯林,编程,32);this.books[1] new Book(C语言,xxxx,编程,45);this.useSize 2; // 书架上有两本书}public Book getBooks(int pos) {return this.books[pos];// 这里返回的是一本书所以返回值是Book}public void setBook(Book book, int pos) {// 书架上新增一本书新增到哪个位置this.books[pos] book;}public int getUseSize() {return useSize;}public void setUseSize(int useSize) {this.useSize useSize;} }3、 user包中的User类、Administractor类、OrdinaryUser类 User类用来描述用户这个对象的 Administractor类主要写的是管理员用户的特有方法和属性 OrdinaryUser类主要写的是普通用户的特有方法和属性 在这里的有一个难点我最初写的时候不理解功能数组的初始化 User类代码 package user;import book.BookList; import function.Function;/*** 难点在用户中定义功能数组* 1、protected Function[] functions; // 数组并没有初始化没有为数组分配空间*/public abstract class User {protected Function[] functions; // 数组并没有初始化没有为数组分配空间//用户属性private String name; // 这是用户的姓名public User(String name) {this.name name;}// 方法public abstract int menu();// 功能实现的方法public void function(int choose, BookList bookList) {// this.functions[] - 这是一个功能对象// this.functions[choose].work() - 调用对象中的方法// this.functions[choose].work(bookList);// 接口不能new但是接口可以引用对象这里接口是应用的对象Function function this.functions[choose]; // 这是功能对象function.work(bookList);} }Administractor类代码 package user;import function.*;import java.util.Scanner;/*** 难点功能数组初始化* // this既可以调用子类的成员也可以调用父类的成员* this.functions new Function[]{* new ExitSystem(),* new AddFunction(),* new ReturnFunction(),* new DeleteFunction(),* new ShowFunction()* };* 难点选择功能之后为什么没有实现对应的功能*/public class Administrator extends User{public Administrator(String name) {super(name);// this既可以调用子类的成员也可以调用父类的成员this.functions new Function[]{new ExitSystem(),new AddFunction(),new ReviseFunction(),new DeleteFunction(),new ShowFunction()};}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.print(请选择功能);Scanner scanner new Scanner(System.in);int choose scanner.nextInt();return choose;} }OrdinaryUser类代码 package user;import function.*;import java.util.Scanner;/*** 难点数组的初始化* // this既可以调用子类的成员也可以调用父类的成员* this.functions new Function[]{* new ExitSystem(),* new BorrowFunction(),* new ReturnFunction(),* new ShowFunction()* };* 难点选择功能之后为什么没有实现对应的功能*/public class OrdinaryUser extends User{public OrdinaryUser(String name) {super(name);// this既可以调用子类的成员也可以调用父类的成员this.functions new Function[]{new ExitSystem(),new BorrowFunction(),new ReturnFunction(),new ShowFunction(),new FindFunction()};}// 方法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.print(请选择功能);Scanner scanner new Scanner(System.in);int choose scanner.nextInt();return choose;// 选择之后为什么没有实现功能呢} }4、function包中的各种操作类和一个Function接口 操作类管理员的操作类、普通用户的操作类 Function接口通过操作类实现这个Function接口目的就是使操作分离 Function接口代码 package function;import book.BookList;public interface Function {// 这些功能都是对书架上的书进行操作// 所以在操作时需要将书架传过来void work(BookList bookList); }操作类代码 新增图书代码 package function;import book.Book; import book.BookList;import java.util.Scanner;public class AddFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(增加图书);Scanner scanner new Scanner(System.in);System.out.print(请输入新增图书书名);String name scanner.nextLine();System.out.print(请输入新增图书作者);String author scanner.nextLine();System.out.print(请输入新增图书类型);String type scanner.nextLine();System.out.print(请输入新增图书价格);int price scanner.nextInt();// 新增了书本所以我们需要构造出一个书的对象Book book new Book(name, author, type, price);// 新增图书所放的位置// 可以放在数组的开头也可以放在数组的中间还可以放在数组的末尾// 但是所放的位置不允许当前位置之前为空前一个位置必须有数据// 但是我们在放这本书之前需要判断书架中是否存在这本书for (int i 0; i bookList.getUseSize(); i) {Book systemBook bookList.getBooks(i);if(systemBook.getName().equals(name)) {System.out.println(书架中已存在此书新增失败);return ;}}// 走到这里说明书架上没有这本书新增成功// 但是我们应该怎么在书架中新增呢// 将书放到数组中的某个下标就新增成功bookList.setBook(book, bookList.getUseSize());bookList.setUseSize(bookList.getUseSize() 1);System.out.println(新增成功!);} }借阅图书代码 package function;import book.Book; import book.BookList;import java.util.Scanner;/*** 发现一个问题借阅图书和归还图书都没有实际的操作并没有使书架上的书减少仅仅只是显示借阅和归还* 借阅、归还图书操作并没有改变书架上的书*/public class BorrowFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(借阅图书);System.out.print(请输入借阅图书的书名);Scanner scanner new Scanner(System.in);String name scanner.nextLine();// 再进行比较存在这本书、不存在这本书int i 0;for (i 0; i bookList.getUseSize(); i) {if(bookList.getBooks(i).getName().equals(name)) {// 进入这里面说明书架中有这本书bookList.getBooks(i).setBorrow(true);System.out.println(借阅成功!);return; // 这里直接return下面就不需要再进行判断}}System.out.println(图书中没有这本书 name);} }删除图书代码 package function;import book.Book; import book.BookList;import java.util.Scanner;public class DeleteFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(删除图书);int index -1; // 用来记录要删除图书的下标System.out.print(请输入要删除图书书名);Scanner scanner new Scanner(System.in);String name scanner.nextLine();int i 0;for (i 0; i bookList.getUseSize(); i) {// 先找到对应下标的书Book book bookList.getBooks(i);if(book.getName().equals(name)) {// 走到这儿说明已经找到了这本图书// 当找到这本书就跳出循环// 将找到书的下标给到indexindex i;break;}}// 走到这里说明在书架中没有找到这本书if(i bookList.getUseSize()) {System.out.println(书架中没有要删除的这本书!);return ; // 结束当前这个方法}// 如何删除一本书先在已经有了这本书的下标index// 这里还需要考虑的是j小于多少,如果不减1的话会出现数组越界for (int j index; j bookList.getUseSize()-1; j) {// 写到这里怎么调用数组呀// 现在通过getBooks这个方法拿到了j1位置处的下标Book book bookList.getBooks(j1);// 现在这个setBook方法将book这本书放到j位置bookList.setBook(book,j);}// 还需要将最后没有使用的对象置为空bookList.setBook(null, bookList.getUseSize()-1);bookList.setUseSize(bookList.getUseSize()-1);} }退出系统代码 package function;import book.BookList;public class ExitSystem implements Function{Overridepublic void work(BookList bookList) {System.out.println(退出系统);System.exit(0);// 应该要对bookList手动回收} }查找图书代码 package function;import book.Book; import book.BookList;import java.util.Scanner;public class FindFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(查找图书);// 查找图书需要输入查找内容System.out.print(请输入要查找的图书书名);Scanner scanner new Scanner(System.in);String name scanner.nextLine();// 输入的数需要与书架上的书进行对比// 难点怎么和书架上的书进行比较// 现在就是要遍历书架上的书// 每遍历一次就要拿到一本书// 拿到一本书后返回它的下标进行比较for (int i 0; i bookList.getUseSize(); i) {// Book book bookList[i];// 这样写是错的bookList是一个类类中的Book对象才是一个数组// 由于Book数组对象是一个私有的对象所以需要提供一个方法来获取到i下标的对象Book book bookList.getBooks(i);// 上面是查找的书名所以比较的也是书名需要获取到当前下标的书名if(book.getName().equals(name)) {System.out.print(存在这本书信息如下);// 还有这里为什么直接就调用了Book类中的toString方法呢System.out.println(book);return ; // 当我们找到了就要结束这个方法}}System.out.println(没有你要找的书 name);} }归还图书代码 package function;import book.BookList;import java.util.Scanner;public class ReturnFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(归还图书);System.out.print(请输入要归还图书的书名);Scanner scanner new Scanner(System.in);String name scanner.nextLine();// 再进行比较存在这本书、不存在这本书int i 0;for (i 0; i bookList.getUseSize(); i) {if(bookList.getBooks(i).getName().equals(name)) {// 进入这里面说明书架中有这本书bookList.getBooks(i).setBorrow(false);System.out.println(归还成功!);return; // 这里直接return下面就不需要再进行判断}}System.out.println(图书中没有要归还的这本书 name);} }修改图书代码 package function;import book.Book; import book.BookList;import java.util.Scanner;public class ReviseFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(修改图书);// 请输入要修改的图书System.out.print(请输入要修改的图书);Scanner scanner new Scanner(System.in);String name scanner.nextLine();// 判断书架上是否有这本书for (int i 0; i bookList.getUseSize(); i) {Book book bookList.getBooks(i);if(book.getName().equals(name)) {// 走到这里说明书架上有这本书System.out.print(请输入要修改的图书的书名);String bookName scanner.nextLine();book.setName(bookName);System.out.print(请输入要修改的图书的作者);String bookAuthor scanner.nextLine();book.setAuthor(bookAuthor);System.out.print(请输入要修改的图书的类型);String bookType scanner.nextLine();book.setType(bookType);System.out.print(请输入要修改的图书的价格);int bookPrice scanner.nextInt();book.setPrice(bookPrice);System.out.println(修改成功!);return;}}System.out.println(书架上没有要删除的这本书 name);} }显示图书代码 package function;import book.Book; import book.BookList;public class ShowFunction implements Function{Overridepublic void work(BookList bookList) {System.out.println(显示图书);// 显示图书就是拿到一本书的下标就打印一本书for (int i 0; i bookList.getUseSize(); i) {// 先拿到这本书的下标Book book bookList.getBooks(i);System.out.println(book);}} }5、Main类测试图书管理系统 Main类代码 import book.Book; import book.BookList; import function.Function; import user.Administrator; import user.OrdinaryUser; import user.User;import java.util.Scanner;/*** * 1、找对象、创建对象、实现对象* * 2、最容易想到的两个对象-书、人* * 3、实现书这个对象但是书不止一本所以需要书架* * 4、书架是用来存放书的其中涉及的数组是难点* * 5、操作人员-普通用户、管理员用户* * 6、不用的用户所提供的操作不相同如何实现各自操作的分离* * 7、每一个操作都写成一个类当中每一个类都是对书进行操作将这个对书的操作写成一个接口每个类再去实现接口中的方法* * 8、实现一个接口数组一个是普通用户的操作接口数组一个书管理员用户的操作接口数组这样就将各自的操作分离了出来目的就是为了类型统一* * 9、用户是一个类用户的基本信息应该包含但是用户分为-普通用户、管理员用户这两个类是用户类的子类这三个类应该如何协同操作呢* * 10、我们需要一个登录页面进行操作*/ public class Main {public static User login() {System.out.print(请输入你的姓名);Scanner scanner new Scanner(System.in);String name scanner.nextLine();System.out.println(请选择你的身份1、管理员用户 2、普通用户);int choose scanner.nextInt();if(choose 1) {return new Administrator(name);}else {return new OrdinaryUser(name);}}public static void main(String[] args) {BookList bookList new BookList();// 登录页面User user login();while(true) {// 循环操作int choose user.menu(); // 返回了一个功能选择所以需要接收// 难点那么需要怎样调用这些功能呢user.function(choose,bookList);}} }
http://www.sadfv.cn/news/222102/

相关文章:

  • 室内设计方案网站高端网吧设备
  • 黑龙江学校网站建设网站快速注册
  • 做网站郑州汉狮wordpress企业网站制作
  • 网站的中英文切换怎么做永康网站建设zjyuxun
  • 国外网站dns改成什么快网站开发设计培训价格
  • 网站开发翻译插件wordpress淘点金
  • 怎么做木马网站品牌设计案例网站
  • 新乡市建设局网站网址导航推广
  • wordpress打开超级慢芜湖做网站优化
  • 免费企业名录网站成都建设网官方网站
  • 湖南省建设安监局官网站翠竹营销网站设计
  • 淘宝加盟网站建设视频直播怎么赚钱的
  • 微盟网站模板网站每年空间域名费用及维护费
  • 使用循环视频做背景的网站wordpress 修改版权
  • 优化图片大小的网站如何将数据库导入网站
  • 广州微网站建设dmz100网络策划是什么
  • 西安做网站的公司wordpress 导航 图片
  • 网站空间如何搬家房屋装修设计图
  • 电商网站建设 平台扬州整站seo
  • 保定市网站销售和设计中国工商业联合会
  • 手机便宜网站建设wordpress文章设置目录
  • 某网站做参考文献的书写wordpress新建留言板
  • 杭州网站建设是什么学编程课对孩子有什么好处
  • 建设网站之前都需要准备什么问题如何在大网站做外链
  • 在一个网站的各虚拟目录中默认文档的文件名要相同短视频推广引流方案
  • 网站建设参考论文凤台县美丽乡村建设网站
  • 响应式 购物网站模板下载头像设计制作器
  • 招聘 网站建设淘宝网页设计尺寸
  • 江苏网站制作网站开发和网络工程师
  • 做博客网站的php代码沈阳网站制作招聘网