一.项目设计到的知识

1.MVC设计模式思想(分包)

>项目分包


运用这种设计模式的优点:
MVC 是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。

>MVC简单介绍

M model业务模型(pojo/domain/bean)与现实中实体类联系
V views视图层(views)
图形化界面(gui)
C controller
用户与软件交互,处理信息
dao层(数据持久化)
提供数据
service层(处理逻辑)
处理数据
controller(javaweb里边的内容,servlet)

较详细的图示:

2.GUI(图形化界面)

其中的GUI代码案例:

package org.vector.view;

import java.awt.Cursor;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List; import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField; import org.vector.bean.Book;
import org.vector.bean.Booktype;
import org.vector.bean.Borrowbook;
import org.vector.bean.Reader;
import org.vector.bean.Readertype;
import org.vector.bean.Users;
import org.vector.serviceImpl.UsersServiceImpl; public class BookLogin extends JFrame{
public BookLogin() {
buliding();
addListeners();
}
public static String name1;
public static List<Users> list = new ArrayList<Users>();
public static List<Reader> list1 = new ArrayList<Reader>();
public static List<Book> list2 = new ArrayList<Book>();
public static List<Readertype> list3 = new ArrayList<Readertype>();
public static List<Booktype> list4 = new ArrayList<Booktype>();
public static List<Borrowbook> list5 = new ArrayList<Borrowbook>();
private JButton login,reset,register;
private JLabel name,password,label;
private JTextField name_Text;
private JPasswordField password_Text; private void buliding() {
// TODO Auto-generated method stub
setLayout(null);
background();
setTitle("图书借阅系统登录界面");
Font font = new Font("圆体", Font.BOLD, 50);
label = new JLabel("图书借阅系统");
label.setFont(font);
label.setBounds(40, 20, 400, 50);
add(label);
name = new JLabel("用户名:");
name.setBounds(45, 100, 120, 30);
add(name);
name_Text = new JTextField(20);
name_Text.setBounds(100, 100, 200, 30);
add(name_Text);
password = new JLabel("密 码:");
password.setBounds(45, 150, 120, 30);
add(password);
password_Text = new JPasswordField(20);
password_Text.setBounds(100, 150, 200, 30);
add(password_Text);
login = new JButton("登录");
login.setBounds(50, 200, 100, 35);
add(login);
reset = new JButton("重置");
reset.setBounds(150, 200, 100, 35);
add(reset);
// register = new JButton("注册");
// register.setBounds(250, 200, 100, 35);
// add(register);
setBounds(400,300,400,300);
setLocation((2000-getWidth())/2,(1000-getHeight())/2);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public void background() {
setSize(600, 500);
setLocation(100, 100);
String path = "Login.jpg";
ImageIcon background = new ImageIcon(path);
JLabel label = new JLabel(background);
label.setBounds(0, 0, this.getWidth(), this.getHeight());
JPanel imagePanel = (JPanel) this.getContentPane();
imagePanel.setOpaque(false);
this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addListeners() {
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
login.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
int flag = 0;
String name = name_Text.getText();
String password = password_Text.getText();
name1 = name;
UsersServiceImpl user = new UsersServiceImpl();
BookLogin.list.clear();
BookLogin.list.addAll(user.findUsers());
for (int i = 0; i < BookLogin.list.size(); i++) {
if(name.equals(BookLogin.list.get(i).getName())&&password.equals(BookLogin.list.get(i).getPassword())){
JOptionPane.showMessageDialog(null, "登录成功", "标题", JOptionPane.WARNING_MESSAGE);
BookLogin.this.dispose();
new BorrowbookView().setVisible(true);
flag = 1;
BookLogin.this.dispose();
new BorrowbookView().setVisible(true);
break;
}
}
if(flag == 0) {
JOptionPane.showMessageDialog(null, "登录失败,该用户不存在", "标题", JOptionPane.WARNING_MESSAGE);
}
} });
reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
BookLogin.this.dispose();
new BookLogin().setVisible(true);
}
});
// register.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent e) {
// // TODO Auto-generated method stub
// BookLogin.this.dispose();
// new UserAdd().setVisible(true);
// }
// });
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147

3.JDBC连接MySql数据库

用了c3p0对原生JDBC的封装思想,大大提高了开发者的效率。
c3p0xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- c3p0默认配置,下面还可以配置多个数据库 -->
<default-config>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mybook?characterEncoding=UTF8
</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">password</property>
<property name="initialPoolSize">6</property>
<property name="maxPoolSize">10</property>
<property name="maxIdleTime">10000</property>
</default-config>
</c3p0-config>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14


大多数情况下只用改,数据库名,账号,密码,别的默认值就行。

4.I/O流

I/O流是开发过程中,最耗费,最占用资源的一门技术,在开发中尽量减少对I/O的使用。

5.面向对象思想

面向对象的思想是在整个学java期间,都不断去学习,这种思想是潜移默化的,短时间内,往往难以清楚地理解。

项目运行效果

登录界面


主界面


…绅士们,请收回你们的目光。

读者信息管理

读者信息添加


读者信息查询和修改

读者信息查询


查询成功!

读者信息修改


修改成功!

图书信息管理

图书信息添加


由于东西较多,后面的我就不一一演示了,大家有兴趣的可以自己做一个更好的。

图书信息查询

图书信息修改

图书借阅管理

图书借阅

图书归还

基础信息维护

图书类别设置

读者类别设置

罚金设置

用户管理

修改密码

用户添加

用户删除


详细的可以了解,资源里边的项目。

原文章:https://blog.csdn.net/Burial_DH/article/details/112135761

用java实现图书管理系统。的更多相关文章

  1. Java GUI 图书管理系统

    01 概述 一款功能强大的图书馆管理系统,功能齐全,小白/大学生项目实训,学习的不二之选. 02 技术 此系统使用 java awt 实现.java.awt是一个软件包,包含用于创建用户界面和绘制图形 ...

  2. 2017.12.14 Java实现-----图书管理系统

    通过对图书的增删改查操作 用数组实现 Manager类 package demo55; import java.util.*; public class Manager { Scanner sc = ...

  3. JAVA图书管理系统汇总共27个

    好多人都在搜索图书管理系统,感觉这个挺受欢迎的,所以整理了一系列的图书管理系统,让大家选择.java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/683 ...

  4. JAVA图书管理系统汇总共27个[转]

    java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/68350java+sql server图书管理系统 http://down.51cto.com/ ...

  5. 《图书管理系统——java》

    /* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名:    < ...

  6. Java图书管理系统(用Java常用集合实现)

    图书管理系统 一.需求说明 1.功能:登录,注册,忘记密码,管理员管理,图书管理. 2.管理员管理:管理员的增删改查. 3.图书管理:图书的增删改查. 4.管理员属性包括:id,姓名,性别,年龄,家庭 ...

  7. java web 项目 图书管理系统的设计与实现

     java web 项目 图书管理系统的设计与实现

  8. 基于Java SE集合的图书管理系统

    图书管理系统一.需求说明1.功能:登录,注册,忘记密码,管理员管理,图书管理.2.管理员管理:管理员的增删改查.3.图书管理:图书的增删改查.4.管理员属性包括:id,姓名,性别,年龄,家庭住址,手机 ...

  9. Java小项目迷你图书管理系统

    package 迷你图书管理系统; import java.util.Scanner; public class BookMgr { public static void main(String[] ...

随机推荐

  1. Python脚本暴力破解SSH口令以及构建僵尸网络(pxssh)

    目录 暴力破解SSH口令 SSH远端执行命令 构建僵尸网络 环境:Kali Linux  python 2.7.13 暴力破解SSH口令 Pxssh是pexpect库的ssh专用脚本,他能用预先写好的 ...

  2. UVA10905孩子们的游戏

    题意:       给你n个数字,让你用这n个数组组成一个最大的数字并输出来. 思路:       这个题目看完第一反应就是直接按照字符串排序,然后轻轻松松写完,交上去直接wa了,为什么会wa呢?感觉 ...

  3. seccomp沙盒逃逸基础——沙盒的规则编写

    seccomp沙盒逃逸基础--沙盒的规则编写 引入: 安全计算模式 seccomp(Secure Computing Mode)是自 Linux 2.6.10 之后引入到 kernel 的特性.一切都 ...

  4. SpringBoot 项目 部署 war方式

    SpringBoot部署 –war方式 步骤1部署方式 Springboot 和我们之前学习的web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢? 通常来说,Springbo ...

  5. .NET平台系列5 .NET Core 简介

    系列目录     [已更新最新开发文章,点击查看详细] 自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.N ...

  6. keep-alive与生命周期函数

    理解keep-alive keep-alive是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染 router-view也是一个组件,如果直接被keep-alive包在里面,所有路径匹 ...

  7. PageHelper简单使用

    PageHelper的简单使用 先引入对应的依赖 <dependency> <groupId>com.github.pagehelper</groupId> < ...

  8. 分布式RPC框架Dubbo实现服务治理:集成Kryo实现高速序列化,集成Hystrix实现熔断器

    Dubbo+Kryo实现高速序列化 Dubbo RPC是Dubbo体系中最核心的一种高性能,高吞吐量的远程调用方式,是一种多路复用的TCP长连接调用: 长连接: 避免每次调用新建TCP连接,提高调用的 ...

  9. PostgreSQL条件表达式

      条件表达式在日常工作中很多场景都会用到,比如某个字段为空,取另外一个字段:某个值大于多少,取什么字段,小于多少取什么字段等等.那么下面来简单的学习下PostgreSQL有那些条件表达式. 1.CA ...

  10. c语言常见编译问题

    1 . warn.c:6:2: warning: implicit declaration of function 'strcpy' [-Wimplicit-function-declaration] ...