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

如何做网站推广及优化/国内十大搜索引擎排名

如何做网站推广及优化,国内十大搜索引擎排名,营销策划方案内容,亚马逊网站托管怎么做目录项目梳理【项目前提】【项目内容】【项目注意】【结构设计】信息管理用户管理方法创建设计思路(整个项目都适用)运行界面图书管理方法创建设计思路(补充)运行界面读者管理方法创建设计思路(补充)运行界…

目录

  • 项目梳理
    • 【项目前提】
    • 【项目内容】
    • 【项目注意】
    • 【结构设计】
  • 信息管理
    • 用户管理
      • 方法创建
      • 设计思路(整个项目都适用)
      • 运行界面
    • 图书管理
      • 方法创建
      • 设计思路(补充)
      • 运行界面
    • 读者管理
      • 方法创建
      • 设计思路(补充)
      • 运行界面
  • 操作执行
    • 借阅操作
      • 方法创建
      • 设计思想(补充)
      • 运行界面
    • 信息维护
  • 总结

看完的朋友们如果觉得还不错,给博主一个赞吧,你的一个赞,会给博主很大的支持~蟹蟹!
在这里插入图片描述
项目代码链接,提取码: 35xa

项目梳理

【项目前提】

掌握java基本语法
熟悉使用流程控制
理解面向对象思想
熟练封装,继承,多态 熟悉使用接口,异常
熟悉使用集合 熟悉掌握I/o流相关操作

【项目内容】

项目功能结构图:
在这里插入图片描述

项目功能如下:
(1)读者信息管理:包括读者信息添加和读者信息查询与修改功能。用户登录成功之后,可以浏览所有读者的信息,也可以检索特定读者的信息;同时,可以对读者信息进行维护,包括增加、删除及修改。具体信息包括读者类型(读者的类型决定着他可以借到书的最大数量和最大归还天数)、读者姓名、出生日期、性别、电话、所在院系、注册日期等。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据

(2)图书信息管理:包括图书信息添加和图书信息查询与修改功能。用户登录成功之后,可以浏览所有图书信息和检索特定图书的信息;也可以对图书信息进行维护。包括添加图书、删除图书以及修改图书信息。具体信息包括:图书ISBN、图书名称、作者、出版社、出版日期、印刷次数、单价、图书类别等。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据

(3)图书借阅管理:包括图书借阅和图书归还功能。图书借阅功能,先输入读者的编号,然后输入要借阅的图书的信息,记录系统当前时间即借阅时间;图书归还功能,输入读者的编号,选择其名下已借阅的图书,判断当前日期即归还日期与借阅日期的差值是否超过了规定的期限,计算罚金,从而进行图书的归还操作。具体信息包括:借阅日期、归还日期、罚金。由于要计算罚金,故需要知道该读者的读者类型,根据类型判断其可借图书天数、可借图书数量等。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据

(4)基础信息维护:包括图书类别设置、读者类别设置及罚金设置。图书类别设置,可以对图书的类别进行增加、删除、修改和查询;读者类别设置可以对读者的类别进行增加、删除、修改和查询;罚金设置,可以指定超期一天的罚金标准。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据

(5)用户管理 :包括修改密码、用户添加和删除。修改密码,是指当前用户修改自己的密码;用户添加和删除,是对新增和去除系统用户时对用户信息的维护。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据

【项目注意】

1、注意命名(类名,包名,方法名,注释等),请严格遵循Java命名规则完成项目。
参考文献:https://blog.csdn.net/yang_best/article/details/42169549

2、每一个业务逻辑操作需要加上日志打印功能(用I/o流实现,比如什么时候进行了增删改等操作,需要有记录,或者发现异常了也需要将信息同步在日志文件里)

3、每个功能模块,如果有异常抛出,需要自定义异常来进行处理

【结构设计】

首先结合功能设计,设计6个实体类(存放在Entity_class文件夹):

图书实体:图书编号ISBN、图书名称、作者、出版社、出版日期、印刷次数、单价、图书类型
图书类型:图书类型编号、图书类型名称
读者实体:读者编号、读者姓名、出生日期、性别、电话、所在院系、注册日期
读者类型:读者类型编号、读者类型名称、可借阅天数、可借阅数量 用户:用户编号、用户名、密码
用户类型:用户账号、用户密码
借阅类型:读者编号、书籍编号、借阅日期、归还日期、罚金


然后根据操作设计,创建操作类(存放在operate文件夹里

图书信息操作:BookDao
图书类型操作:BookTypeDao
读者信息操作:ReaderDao
读者类型操作:ReaderTypeDao
用户管理操作:UserDao
借阅管理操作:BookBorrowDao


然后创建工具包Tool_class,存放自己创建的异常 BookException 和工具类 TSUtility


再创建一个包存放我们进行读写的txt文件

最后创建我们的视图包view,里面存放了有关界面的类

图书操作界面类:BookView
读者操作界面类:ReaderView
用户操作界面类:UserView
主界面类:Menu


创建后的大致结构如下:

在这里插入图片描述
在这里插入图片描述

信息管理

用户管理

方法创建

(一)先将 User 类补充完整,创建了三个成员变量 id、name、password,然后创建构造方法和set/get方法

(二)再补充 UserDao 类,这里我创建了如下方法:(注意:这里的异常都是后面写代码时补充上去的,开始创建时不用添加

    //判断账号和密码是否有效public static Users check(String name, String password) throws IOException, ClassNotFoundException{}//存入默认账号和密码(初始化)public static void initialization() throws IOException{}//查询所有信息public static List<Users> selectUser() throws IOException, ClassNotFoundException{}//添加用户信息public static int insertUser(String name, String password) throws IOException, ClassNotFoundException, BookException{}//修改用户信息public static int updateUserPWD(Integer id, String pwd) throws IOException, ClassNotFoundException, BookException{}//删除用户信息public static int deleteUser(Integer id) throws IOException, ClassNotFoundException, BookException{}

(三)最后补充 LoginView 类,因为系统是需要登录的,所以我们需要创建两个界面:loginusersManagement

    //登录界面public static void login() throws IOException, ClassNotFoundException, EOFException, InterruptedException{}//用户管理界面public static void usersManagement() throws IOException, ClassNotFoundException, BookException{}

设计思路(整个项目都适用)

敲黑板了!!!重点来了,这是贯穿整个项目的中心思想

(一)读写数据

因为该项目主要是基于文件IO流进行读写的,所以我在工具类中写了两个新的方法,用于从文件中读取和存储数据到文件,这样就避免了代码的重复使用。

而在该项目里我读写数据用的文件IO流主要是对象序列化流,先将所有数据存储到一个集合中,然后将集合存入文件中,因为需要与所有实体类相匹配,我们返回和传入的对象都是设计的Object对象

下列代码就是工具类TSUtility中新建的两个方法

    //从文件读数据public static Object readFile(File file) throws IOException, ClassNotFoundException {ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));Object o=ois.readObject();ois.close();return o;}//向文件写数据public static void returnFile(Object obj,File file) throws IOException {ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));oos.writeObject(obj);oos.close();}

但是这样使用序列化存储数据后,就发现了一个问题,若文件内容为空,就会报 EOFException 异常,我的解决方法是:先用 try/catch 将该异常捕获并抛出,然后存入初始数据值,这样后面存入其他数据时就不会再报这个异常

(二)增删改查

后面的增删改查操作,都是差不多的一个结构(如下代码),为什么要这么写呢,因为需要判断该成员的数据是否存在于文件中,根据对应的情况作异常的抛出

      boolean flag=false;for{if(){flag=true;}else{}}if(flag){}else{throw new BookException();}

运行界面

(一)登录界面:(------>LoginView类中的Login方法

该图将账号输入错误、密码输入错误、账号密码正确三种情况都展现出来了

在这里插入图片描述


(二)用户管理界面----->LoginView中的usersManagement方法

具体怎么实现的代码就不说了,上面设计思路已经讲了大部分结构


在这里插入图片描述

图书管理

方法创建

(一) 先将实体类 BookType 和 Book 补充完整,创建成员变量、构造方法和set/get方法

Book的成员变量:

    private String ISBN;private String bookname;private String author;private String publish;//出版社private String publishdate;//出版日期private int printtime;//印刷次数private double unitprice;//单价private BookType typename;//图书类型

BookType的成员变量:

    private String typeid;//图书类型编号private String typename;//图书类型名称


(二)为 BookTypeDao创建方法

//打印输出public static void printInfor(List<BookType> list){}//初始化public static void initialization() throws IOException {}//查询全部信息public static List<BookType> selectBookType() throws IOException, ClassNotFoundException {}//添加图书类型public static int insertBookType(Integer id, String typename) throws IOException, ClassNotFoundException, BookException {}//删除图书类型public static int deleteBookType(Integer id) throws IOException, ClassNotFoundException, BookException {}


为BookDao创建方法

    //打印输出public static void printInfor(List<Book> list){}//初始化public static void initialization() throws IOException, ClassNotFoundException {}//添加图书信息public static int insertBook(String ISBN, String bookname, String author, String publish, String publishdate, String  printtime, String  unitprice, BookType bt) throws IOException, ClassNotFoundException, BookException {}//查询所有图书信息public static List<Book> selectBook() throws IOException, ClassNotFoundException {}//根据其他信息查询图书信息public static List<Book> selectBookByISBN(String ISBN) throws IOException, ClassNotFoundException, BookException {}public static List<Book> selectBookByName(String bookname) throws IOException, ClassNotFoundException, BookException {}public static List<Book> selectBookByType(String type) throws IOException, ClassNotFoundException, BookException {}public static List<Book> selectBookByAuthor(String author) throws IOException, ClassNotFoundException, BookException {}public static List<Book> selectBookByPublish(String Publish) throws IOException, ClassNotFoundException, BookException {}//修改图书信息public static int update(String ISBN, String bookname, String author, String publish, String publishdate, int printtime, double unitprice, BookType bt) throws IOException, ClassNotFoundException, BookException {}//删除图书信息public static int delete(String ISBN) throws IOException, ClassNotFoundException, BookException {}

(三)为BookView创建方法

这里的借阅方法会在后面借阅时用到,它属于图书视图的一部分,故在这里就进行创建

    //图书类别设置public static void bookTypeManagement() throws IOException, ClassNotFoundException{}//图书信息管理public static void bookInforManagement() throws IOException, ClassNotFoundException{}//图书借阅管理public static void bookBorrowingManagement() throws IOException, ClassNotFoundException, ParseException, BookException{}

设计思路(补充)

这里的增删改查操作的设计跟上面用户管理的设计原理是一样的,这里我们对它进行补充

在设计BookDao之前要先把BookTypeDao设计好,因为Book实体类的成员变量中有一个是BookType的对象,关系到BookType的调用,如果不先设计好,后面就无法对BookDao进行测试

在项目注意的内容里面有一点,要求每一个业务逻辑操作需要加上日志打印功能,所以我在工具类里写了一个新的方法,每做一次逻辑操作就调用一次这个方法,就能随时更新日志了,代码如下:

    public static void logging(String op) throws IOException {SimpleDateFormat sdf=new SimpleDateFormat();String s=sdf.format(new Date());String ss=s+"——"+op;FileWriter fw=new FileWriter("D:\\JavaSE_Code\\Java_SE_Practice project2\\src\\txtFile\\journal.txt",true);fw.write(ss);fw.flush();fw.write("\r\n");fw.close();}

截取文件内一部分日志如下图:

在这里插入图片描述

运行界面

(一)图书类型管理系统

           第一步:
在这里插入图片描述
           第二步:
在这里插入图片描述
           最终界面:
在这里插入图片描述

(二)图书信息管理系统


在这里插入图片描述


读者管理

方法创建

(一)先补充 Reader类和 ReaderType类的内容

Reader类的成员变量

    private String readerid;private String name;private String sex;private int age;private String phone;private String depart;//所在院系private String regdat;//注册日期private ReaderType type;

ReaderType类的成员变量

    private String typeid;private String typename;//读者类型名称private int limit;//可借阅天数private int maxborrownum;//可借阅数量


(二)再补充 ReaderDao 类和 ReaderTypeDao 类的方法

ReaderTypeDao的方法:

注意这里的罚金设置将在图书借阅和信息维护处用到,且是与读者类型相关联的

    //打印信息public static void printInfor(List<ReaderType> list){}//初始化public static void initialization() throws IOException, ClassNotFoundException {}//查询全部读者类型信息public static List<ReaderType> selectReaderType() throws IOException, ClassNotFoundException {}//查询指定类型名的读者类型信息public static List<ReaderType> selectReaderType(String type) throws IOException, ClassNotFoundException, BookException {}//添加读者类型public static int insertReaderType(Integer id, String typename, Integer num, Integer limit) throws IOException, ClassNotFoundException, BookException {}//修改读者类型public static int updateReaderType(Integer id, String typename, Integer num, Integer limit) throws IOException, ClassNotFoundException, BookException {}//删除读者类型public static int deleteReaderType(Integer id) throws IOException, ClassNotFoundException, BookException {}//罚金设置public static Properties fineInsert(String typename,Double fine) throws IOException {}


ReaderDao的方法:

//打印信息public static void printInfor(List<Reader> list){}//初始化public static void initialization() throws BookException, IOException, ClassNotFoundException {}//读者信息添加public static int insertReader(String id, List<ReaderType> list,String name,String age,String sex, String phone, String dept, String reg) throws BookException, IOException, ClassNotFoundException {}//查询读者信息public static List<Reader> selectReader() throws IOException, ClassNotFoundException {}public static List<Reader> selectReaderById(String id) throws IOException, ClassNotFoundException, BookException {}public static List<Reader> selectReaderByName(String name) throws IOException, ClassNotFoundException, BookException {}public static List<Reader> selectReaderByType(String type) throws IOException, ClassNotFoundException, BookException {}public static List<Reader> selectReaderByDept(String dept) throws IOException, ClassNotFoundException, BookException {}//修改读者信息public static int updateReader(String id, String typename, String name, Integer age,String sex, String phone, String dept, String reg) throws IOException, ClassNotFoundException, BookException {}//删除读者信息public static int deleteReader(String id) throws IOException, ClassNotFoundException, BookException {}


(三)补充ReaderView里面的方法

注意这里的罚金设置将在图书借阅和信息维护处用到,且是与读者类型相关联的

    //读者信息管理public static void readerManagement() throws IOException, ClassNotFoundException, BookException{}//读者类型设置public static void readerCategorySetting() throws BookException, IOException, ClassNotFoundException{}//罚金设置public static void fineSetting(){}

设计思路(补充)

设计思路与前面提到的相同,这里暂时无其他补充

运行界面

读者信息管理系统的界面:

在这里插入图片描述


操作执行

借阅操作

包括图书借阅图书归还功能。图书借阅功能,先输入读者的编号,然后输入要借阅的图书的信息,记录系统当前时间即借阅时间;图书归还功能,输入读者的编号,选择其名下已借阅的图书,判断当前日期即归还日期与借阅日期的差值是否超过了规定的期限,计算罚金,从而进行图书的归还操作。具体信息包括:借阅日期、归还日期、罚金。由于要计算罚金,故需要知道该读者的读者类型,根据类型判断其可借图书天数、可借图书数量等

方法创建

(一)补充BookBorrowDao类中的方法(该类执行的借阅操作)

    //初始化public static void initialization() throws IOException, ParseException, BookException, ClassNotFoundException {}//查询指定编号读者的借书信息public static List<BorrowBook> selectBorrowByReaderId(String readerid) throws BookException, IOException, ClassNotFoundException {}//查看所有借阅信息public static void selectAllBorrow() throws IOException, ClassNotFoundException {}//图书借阅,(借阅者的编号,图书编号,借阅日期)public static int borrowBook(String readerid,String ISBN, String  borrowdate) throws IOException, ClassNotFoundException, BookException, ParseException {}//图书归还,(还书者的编号,图书编号,归还日期)public static int returnBook(String readerid,String ISBN,String returndate,List<BorrowBook> list) throws BookException, IOExceptio{}


(二)BookView中的借阅操作视图已创建好

设计思想(补充)

之前所讲所有设计思想均适用

这里要补充的一个点是:由于借阅和归还时,图书的数量是要跟着+1和-1的,所以在代码中是有通过ForEach对列表内容进行修改的,因此也发现了一个异常 ConcurrentModificationException,详情可以查看博主写的有关该异常的博客(点击此处,查看异常ConcurrentModificationException)

修改前的代码:

       for (BorrowBook b:bbl){String readerid1 = b.getReaderid();String isbn = b.getISBN();Date borrowdate1 = b.getBorrowdate();if (readerid1.equals(readerid) && isbn.equals(ISBN)){if (b.getBorrowdate()!=null && b.getReturndate()!=null){num++;}else {num++;flag=false;}}}


修改后的代码:(为何这样修改,可以参考迭代器的使用

//使用迭代器(防止异常ConcurrentModificationException)ListIterator<BorrowBook> iterator = bbl.listIterator();while (iterator.hasNext()){BorrowBook b=iterator.next();String readerid1 = b.getReaderid();String isbn = b.getISBN();Date borrowdate1 = b.getBorrowdate();if (readerid1.equals(readerid) && isbn.equals(ISBN)){if (b.getBorrowdate()!=null && b.getReturndate()!=null){num++;}else {num++;flag=false;}}}

运行界面

图书借阅和归还管理界面:

在这里插入图片描述

信息维护

信息的维护主要是对图书类型、读者类型和罚金进行设置,这里就不作多的阐述,设计思想都是一致的,相比于信息管理,是较简单的。这里要注意的是,罚金的文件读写方式并不是用的对象序列化,而是采用的 Properties 类,想要了解该类,可以参考博主的文件IO流(点击该链接,查看文件IO流)博文

总结

写完整个项目下来,我最大的感受就是:一定要先把需要的类和方法都列出来,这样在后面写代码的时候,能有一个完整的架构让我们去设计。这个项目的内容比我上一个项目要更多和更复杂,但是我却只用了跟上次一样的时间就写完了,这都是因为我在刚开始的时候就列出了所有需要的类,后面写代码的时候一目了然




学无止境
http://www.jmfq.cn/news/4974679.html

相关文章:

  • 建筑库/淄博搜索引擎优化
  • 做rap的网站/网络黄页推广大全
  • 长沙娱乐网站开发/seo怎么快速提高排名
  • 设计的好网站/谷歌竞价排名推广公司
  • logo智能设计/合肥网络推广优化公司
  • html 公司网站 代码下载/营销型网站策划书
  • 佛山网站建设价格/网络营销成功的原因
  • 凡客诚品鞋子/seo搜索引擎优化人员
  • seo建站优化价格表/个人免费网站创建入口
  • 做设计做网站/淘宝数据分析
  • 网站建设制作微商授权书/武汉网站建设
  • b2b网站如何盈利的/长沙百度网站推广公司
  • 做网站不小心复制了别人的链接/广告设计公司
  • 录像网站怎么做/成都做网络推广的公司有哪些
  • 怎么做福彩网站/百度搜索引擎平台
  • 怎呀做网站/企业邮箱网页版
  • 深圳高端网站定制公司/百度地图的精准定位功能
  • wordpress 网站底部美化/萝卜建站
  • 没网站做推广/营销模式都有哪些
  • 500网站建设/论坛发帖
  • wordpress 背景特效/搜索引擎优化的定义是什么
  • 网站设计公司业务怎么做/网站代发外链
  • 搭建什么网站好玩/推广方案经典范文
  • b2b商城网站开发/爱站网排名
  • 常见的cms网站/seo海外推广
  • seo推广优化外包公司/seo软件服务
  • 新手怎么做网站打理/外贸出口平台网站
  • 网站建设一个购买链接/nba球队排名
  • Wordpress如何加联盟广告/广州宣布5条优化措施
  • 敦煌手机网站设计/如何开展网络营销