成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

圖書(shū)管理系統(tǒng)【JavaWeb:部署開(kāi)發(fā)環(huán)境、解決分類(lèi)、圖書(shū)、前臺(tái)頁(yè)面模塊】

djfml / 3271人閱讀

摘要:前言鞏固開(kāi)發(fā)模式,做一個(gè)比較完整的小項(xiàng)目成果圖該項(xiàng)目包含了兩個(gè)部分,前臺(tái)和后臺(tái)。前臺(tái)用于顯示后臺(tái)用于管理該項(xiàng)目可分為個(gè)模塊來(lái)組成分類(lèi)模塊,用戶(hù)模塊,圖書(shū)模塊,購(gòu)買(mǎi)模塊,訂單模塊。

前言

鞏固Servlet+JSP開(kāi)發(fā)模式,做一個(gè)比較完整的小項(xiàng)目.

成果圖

該項(xiàng)目包含了兩個(gè)部分,前臺(tái)和后臺(tái)。

前臺(tái)用于顯示

后臺(tái)用于管理

該項(xiàng)目可分為5個(gè)模塊來(lái)組成:分類(lèi)模塊,用戶(hù)模塊,圖書(shū)模塊,購(gòu)買(mǎi)模塊,訂單模塊。

搭建環(huán)境 建立包結(jié)構(gòu)

導(dǎo)入開(kāi)發(fā)包

前臺(tái)分幀頁(yè)面

index.jsp【沒(méi)有body標(biāo)簽的】

  
    
    
  

head.jsp


歡迎來(lái)到購(gòu)物中心

body是空白的jsp頁(yè)面

效果:

后臺(tái)分幀頁(yè)面

manager.jsp【嵌套了framset標(biāo)簽,也是沒(méi)有body標(biāo)簽的】


    

    
        
        
    

head.jsp


后臺(tái)管理

left.jsp


分類(lèi)管理



圖書(shū)管理

訂單管理

body.jsp是空白的

效果:

分幀的文件夾目錄結(jié)構(gòu)

值得注意的是:

文件夾的名字不能使用“manager”,不然會(huì)出現(xiàn):403 Access Denied錯(cuò)誤

frameset標(biāo)簽是可以嵌套的,分列用“cols”,分行用“rows”

導(dǎo)入工具類(lèi)和方法的代碼

過(guò)濾中文亂碼數(shù)據(jù)

HTML轉(zhuǎn)義

DAOFactory

JDBC連接池

UUID工具類(lèi)

c3p0.xml配置文件

這些代碼都可以在我的博客分類(lèi):代碼庫(kù)中找到!

分類(lèi)模塊

首先,我們來(lái)做分類(lèi)模塊吧

創(chuàng)建實(shí)體Category
    private String id;
    private String name;
    private String description;

    //各種setter、getter
在數(shù)據(jù)庫(kù)創(chuàng)建表
CREATE TABLE category (

  id          VARCHAR(40) PRIMARY KEY,
  name        VARCHAR(10) NOT NULL UNIQUE ,
  description VARCHAR(255)


);
編寫(xiě)CategoryDAO
/**
 * 分類(lèi)模塊
 *  1:添加分類(lèi)
 *  2:查找分類(lèi)
 *  3:修改分類(lèi)
 *
 *
 * */
public class CategoryImpl {

    public void addCategory(Category category) {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        String sql = "INSERT INTO category (id, name, description) VALUES(?,?,?)";
        try {
            queryRunner.update(sql, new Object[]{category.getId(), category.getName(), category.getDescription()});

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public Category findCategory(String id) {
        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());
        String sql = "SELECT * FROM category WHERE id=?";

        try {
            Category category = (Category) queryRunner.query(sql, id, new BeanHandler(Category.class));

            return category;

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
 
    }

    public List getAllCategory() {
        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());
        String sql = "SELECT * FROM category";

        try {
            List categories = (List) queryRunner.query(sql, new BeanListHandler(Category.class));

             return categories;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
     
    }
}
測(cè)試DAO
public class demo {

    @Test
    public void add() {

        Category category = new Category();
        category.setId("2");
        category.setName("數(shù)據(jù)庫(kù)系列");
        category.setDescription("這是數(shù)據(jù)庫(kù)系列");

        CategoryImpl category1 = new CategoryImpl();
        category1.addCategory(category);

    }

    @Test
    public void find() {

        String id = "1";
        CategoryImpl category1 = new CategoryImpl();
        Category category = category1.findCategory(id);

        System.out.println(category.getName());
    }
    @Test
    public void getAll() {


        CategoryImpl category1 = new CategoryImpl();
        List categories = category1.getAllCategory();

        for (Category category : categories) {
            System.out.println(category.getName());
        }
    }

}
抽取成DAO接口
public interface CategoryDao {
    void addCategory(Category category);

    Category findCategory(String id);

    List getAllCategory();
}
后臺(tái)頁(yè)面的添加分類(lèi)

在超鏈接上,綁定顯示添加分類(lèi)的頁(yè)面

添加分類(lèi)

顯示添加分類(lèi)的JSP頁(yè)面


分類(lèi)名稱(chēng):
分類(lèi)描述:

處理添加分類(lèi)的Servlet

        if (method.equals("add")) {

            try {
                //把瀏覽器帶過(guò)來(lái)的數(shù)據(jù)封裝到bean中
                Category category = WebUtils.request2Bean(request, Category.class);
                category.setId(WebUtils.makeId());

                service.addCategory(category);
                request.setAttribute("message", "添加分類(lèi)成功!");

            } catch (Exception e) {
                request.setAttribute("message","添加分類(lèi)失敗");
                e.printStackTrace();
            }
            request.getRequestDispatcher("/message.jsp").forward(request, response);

        }

效果:

后臺(tái)頁(yè)面的查看分類(lèi)

在超鏈接上,綁定處理請(qǐng)求的Servlet

        else if (method.equals("look")) {

            List list = service.getAllCategory();
            request.setAttribute("list", list);
            request.getRequestDispatcher("/background/lookCategory.jsp").forward(request, response);

        } 

顯示分類(lèi)頁(yè)面的JSP



    暫時(shí)還沒(méi)有分類(lèi)數(shù)據(jù)哦,請(qǐng)你添加把



    

        
分類(lèi)名字 分類(lèi)描述 操作
${category.name} ${category.description} 刪除 修改

效果:

圖書(shū)模塊 分析

在設(shè)計(jì)圖書(shū)管理的時(shí)候,我們應(yīng)該想到:圖書(shū)和分類(lèi)是有關(guān)系的。一個(gè)分類(lèi)可以對(duì)應(yīng)多本圖書(shū)。

為什么要這樣設(shè)計(jì)?這樣更加人性化,用戶(hù)在購(gòu)買(mǎi)書(shū)籍的時(shí)候,用戶(hù)能夠查看相關(guān)分類(lèi)后的圖書(shū),而不是全部圖書(shū)都顯示給用戶(hù),讓用戶(hù)一個(gè)一個(gè)去找。

設(shè)計(jì)實(shí)體
    private String id;
    private String name;
    private String author;
    private String description;
    private double price;

    //記住圖片的名稱(chēng)
    private String image;

    //記住分類(lèi)的id
    private String category_id;

    //各種setter和getter
設(shè)計(jì)數(shù)據(jù)庫(kù)表
CREATE TABLE book (
  id          VARCHAR(40) PRIMARY KEY,
  name        VARCHAR(10) NOT NULL UNIQUE,
  description VARCHAR(255),
  author      VARCHAR(10),
  price       FLOAT,
  image       VARCHAR(100),
  category_id VARCHAR(40),
  CONSTRAINT category_id_FK FOREIGN KEY (category_id) REFERENCES category (id)

);
編寫(xiě)DAO

/**
 * 圖書(shū)模塊
 * 1:添加圖書(shū)
 * 2:查看圖書(shū)
 * 3:查找圖書(shū)的分頁(yè)數(shù)據(jù)【圖書(shū)一般來(lái)說(shuō)有很多,所以要分頁(yè)】
 */
public class BookDaoImpl {

    public void addBook(Book book) {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        String sql = "INSERT INTO book (id,name,description,author,price,image,category_id) VALUES(?,?,?,?,?,?,?)";
        try {
            queryRunner.update(sql, new Object[]{book.getId(), book.getName(), book.getDescription(), book.getAuthor(), book.getPrice(),book.getImage(), book.getCategory_id()});

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public Book findBook(String id) {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        String sql = "SELECT * FROM book WHERE id=?";

        try {
            return (Book) queryRunner.query(sql, id, new BeanHandler(Book.class));
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**得到圖書(shū)的分頁(yè)數(shù)據(jù)*/
    public List getPageData(int start, int end) {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        String sql = "SELECT * FROM book limit ?,?";

        try {
            return (List) queryRunner.query(sql, new BeanListHandler(Book.class), new Object[]{start, end});
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**得到按照分類(lèi)圖書(shū)的分頁(yè)數(shù)據(jù)*/
    public List getPageData(int start, int end,String category_id) {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        //WHERE字句在limit字句的前邊,注意Object[]的參數(shù)位置!
        String sql = "SELECT * FROM book WHERE category_id=? limit ?,?";

        try {
            return (List) queryRunner.query(sql, new BeanListHandler(Book.class), new Object[]{ category_id,start, end});
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 得到圖書(shū)的總記錄數(shù)
     */
    public int getTotalRecord() {
        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

        String sql = "SELECT COUNT(*) FROM book";

        try {
            return (int) queryRunner.query(sql, new ScalarHandler());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 得到分類(lèi)后圖書(shū)的總記錄數(shù)
     * getCategoryTotalRecord
     */
    public long getCategoryTotalRecord(String category_id) {

        try {
            QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());

            String sql = "SELECT COUNT(*) FROM book WHERE category_id=?";
            return (long) queryRunner.query(sql, category_id, new ScalarHandler());

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}
測(cè)試DAO
public class BookDemo {

    BookDaoImpl bookDao = new BookDaoImpl();


    @Test

    public void add() {
        Book book = new Book();
        book.setId("5");
        book.setName("SQLServer");
        book.setAuthor("我也不知道");
        book.setImage("33333332432");
        book.setPrice(33.22);
        book.setDescription("這是一本好書(shū)");
        book.setCategory_id("2");

        bookDao.addBook(book);
    }

    @Test
    public void look() {

        List bookList = bookDao.getPageData(3, 3);

        for (Book book : bookList) {
            System.out.println(book.getName());
        }

        List books = bookDao.getPageData(0,2,"2");

        for (Book book : books) {
            System.out.println(book.getName());

        }
    }

    @Test
    public void find() {
        String id = "2";
        Book book = bookDao.findBook(id);

        System.out.println(book.getName());
    }


}
抽取成DAO接口
public interface BookDao {
    void addBook(Book book);

    Book findBook(String id);

    List getPageData(int start, int end);

    List getPageData(int start, int end, String category_id);

    long getTotalRecord();

       long getCategoryTotalRecord(String category_id);
}
編寫(xiě)Service層
    /*添加圖書(shū)*/
    public void addBook(Book book) {
        bookDao.addBook(book);

    }

    /*查找圖書(shū)*/
    public Book findBook(String id) {
        return bookDao.findBook(id);
    }

    /*查找圖書(shū)*/
    public Book findBook(String id) {
        return bookDao.findBook(id);
    }

    /*獲取圖書(shū)的分頁(yè)數(shù)據(jù)*/
    public Page getPageData(String pageNum) {
        
        Page page=null;
        if (pageNum == null) {
            page = new Page(1, bookDao.getTotalRecord());
        } else {
            page = new Page(Integer.valueOf(pageNum), bookDao.getTotalRecord());
        }

        List books = bookDao.getPageData(page.getStartIndex(), page.getLinesize());
        page.setList(books);
        
        return page;

    }

    /*獲取圖書(shū)分類(lèi)后的分頁(yè)數(shù)據(jù)*/
    public Page getPageData(String currentPageCount,String category_id) {

        Page page=null;
        if (currentPageCount == null) {
            page = new Page(1, bookDao.getCategoryTotalRecord(category_id));
        } else {
            page = new Page(Integer.valueOf(currentPageCount), bookDao.getCategoryTotalRecord(category_id));
        }

        List books = bookDao.getPageData(page.getStartIndex(), page.getLinesize(), category_id);
        page.setList(books);
        return page;

    }

后臺(tái)添加圖書(shū)

后臺(tái)要添加圖書(shū)的時(shí)候,應(yīng)該說(shuō)明圖書(shū)的類(lèi)型是什么。

要想在顯示添加圖書(shū)的頁(yè)面上知道全部類(lèi)型的id,就要經(jīng)過(guò)Servlet把類(lèi)型的集合傳送過(guò)去

綁定鏈接
添加圖書(shū)
傳送類(lèi)型集合的Servlet
        String method = request.getParameter("method");
        BussinessServiceImpl service = new BussinessServiceImpl();

        if (method.equals("addUI")) {

            List list = service.getAllCategory();
            request.setAttribute("list", list);
            request.getRequestDispatcher("/background/addBook.jsp").forward(request, response);

        } 
顯示JSP頁(yè)面
圖書(shū)名稱(chēng):
作者:
圖書(shū)價(jià)錢(qián):
類(lèi)型:
上傳圖片
詳細(xì)描述
處理表單數(shù)據(jù)Servlet
else if (method.equals("add")) {

            //上傳文件和普通數(shù)據(jù)分割開(kāi),封裝到Book對(duì)象上
            Book book = uploadData(request);

            book.setId(WebUtils.makeId());
            service.addBook(book);
            request.setAttribute("message", "添加圖書(shū)成功");
            request.getRequestDispatcher("/message.jsp").forward(request, response);
        }

uploadData()方法代碼

    private Book uploadData(HttpServletRequest request) {

        Book book = new Book();
        try{

            //1.得到解析器工廠
            DiskFileItemFactory factory = new DiskFileItemFactory();

            //2.得到解析器
            ServletFileUpload upload = new ServletFileUpload(factory);

            //設(shè)置編碼
            upload.setHeaderEncoding("UTF-8");


            //為上傳表單,則調(diào)用解析器解析上傳數(shù)據(jù)
            List list = upload.parseRequest(request);  //FileItem

            //遍歷list,得到用于封裝第一個(gè)上傳輸入項(xiàng)數(shù)據(jù)fileItem對(duì)象
            for(FileItem item : list){

                if(item.isFormField()){

                    //得到的是普通輸入項(xiàng)
                    String name = item.getFieldName();  //得到輸入項(xiàng)的名稱(chēng)
                    String value = item.getString("UTF-8");

                    //使用BeanUtils封裝數(shù)據(jù)
                    BeanUtils.setProperty(book, name, value);
                }else{

                    //得到上傳輸入項(xiàng)

                    //得到上傳文件名全路徑
                    String filename = item.getName();

                    //截取文件名
                    filename = filename.substring(filename.lastIndexOf("")+1);

                    InputStream in = item.getInputStream();   //得到上傳數(shù)據(jù)

                    int len = 0;
                    byte buffer[]= new byte[1024];

                    //如果沒(méi)有這個(gè)目錄,就創(chuàng)建它
                    String savepath = this.getServletContext().getRealPath("/image");
                    File file = new File(savepath);
                    if (!file.exists()) {
                        file.mkdir();
                    }

                    FileOutputStream out = new FileOutputStream(savepath + "" + filename);
                    while((len=in.read(buffer))>0){
                        out.write(buffer, 0, len);
                    }
                    //設(shè)置圖片的名字
                    book.setImage(filename);

                    in.close();
                    out.close();

                    //關(guān)閉臨時(shí)文件
                    item.delete();
                }
            }

        }catch (Exception e) {
            e.printStackTrace();
        }
        return book;
    }

效果:

后臺(tái)顯示圖書(shū)模塊

由于我們用的是分頁(yè)技術(shù),所以我們導(dǎo)入之前寫(xiě)過(guò)的Page類(lèi)和jsp吧.....這些代碼可以在我分類(lèi)的代碼庫(kù)中找到

綁定超鏈接

查看圖書(shū)
Servlet處理請(qǐng)求
        else if (method.equals("look")) {

            String currentPageCount = request.getParameter("currentPageCount");
            Page page = service.getPageData(currentPageCount);

            request.setAttribute("page",page);
            request.getRequestDispatcher("/background/listBook.jsp").forward(request, response);
        }
顯示圖書(shū)JSP頁(yè)面

Servlet端傳過(guò)來(lái)的是Page對(duì)象,而不是list集合

可以根據(jù)記載在Book對(duì)象的圖片名稱(chēng),弄一個(gè)超鏈接,超鏈接指向服務(wù)端的圖片,這樣就可以查看圖片了!




    暫時(shí)還沒(méi)有任何圖書(shū)哦





   
           
書(shū)名 作者 價(jià)錢(qián) 描述 圖片 操作
${book.name} ${book.author} ${book.price} ${book.description} 查看圖片 刪除 修改

效果:

前臺(tái)頁(yè)面

看回我們前臺(tái)頁(yè)面的成果圖,我們可以把整個(gè)body頁(yè)面看成是三個(gè)div

body占整個(gè)div

導(dǎo)航條是一個(gè)div

顯示圖書(shū)的地方是一個(gè)div

設(shè)計(jì)好大概的布局

html代碼引入css

    

HTML三個(gè)div

這是導(dǎo)航條
這是書(shū)籍的地方
這是頁(yè)碼

CSS代碼:

#body {
    position: relative;
}


#category {
    border: 1px solid #000;
    position: absolute;
    width: 300px;
    height: 400px;
    float: left;
    left: 200px;
    top: 70px;;
}

#bookandpages {
    border: 1px solid #000000;
    position: absolute;
    width: 600px;
    height: 600px;;
    float: left;
    left: 500px;
    margin-left: 50px;
}

#books {
    border: 1px solid #000;
    width: 600px;
    height: 550px;;
}

#page {
    border: 1px solid #000;
    position: absolute;
    height: 48px;
    width: 600px;
}

大概的布局

IndexServlet

在顯示首頁(yè)的下部分的時(shí)候,應(yīng)該先去尋找一個(gè)Servlet來(lái)把數(shù)據(jù)交給對(duì)應(yīng)的JSP

因?yàn)槲覀兊腏SP一般都是放在WEB-INF下,是不能直接訪問(wèn)的。還有就是JSP往往是需要我們后臺(tái)的數(shù)據(jù)的,因此我們使用Servlet來(lái)獲取得到數(shù)據(jù),再交由JSP來(lái)展示就最好不過(guò)了。

    

Servlet代碼:

        //得到所有的分類(lèi)數(shù)據(jù),給body頁(yè)面
        BussinessServiceImpl service = new BussinessServiceImpl();
        List categories = service.getAllCategory();
        request.setAttribute("categories", categories);
        String currentPageCount = request.getParameter("currentPageCount");

        //得到所有分類(lèi)的圖書(shū),給body頁(yè)面
        Page page = service.getPageData(currentPageCount);
        request.setAttribute("page", page);

        request.getRequestDispatcher("/client/body.jsp").forward(request,response);
JSP顯示數(shù)據(jù)
書(shū)籍分類(lèi) :
  • ${categories.name}
  • CSS代碼:

    重要的是:如果div浮動(dòng)都黏貼在一起了,那么在后邊多加個(gè)div,用于清除浮動(dòng)效果

    #body {
        position: relative;
    }
    
    #category {
        border: 1px solid #000;
        position: absolute;
        width: 300px;
        height: 400px;
        float: left;
        left: 200px;
        top: 70px;;
    }
    
    #bookandpages {
        border: 1px solid #000000;
        position: absolute;
        width: 780px;
        height: 538px;;
        float: left;
        left: 500px;
        margin-left: 50px;
    }
    
    #books{
        margin-left: 50px;
        margin-top: 30px;
    }
    #image{
        float: left;
    }
    #bookinfo{
        float: left;
    }
    #page {
        height: 62px;
        width: 780px;
        position: fixed;
        margin-left: 549px;
        margin-top: 477px;
        text-align: center;
        line-height: 50px;
    }

    效果:

    按照分類(lèi)顯示圖書(shū)

    我們可以根據(jù)左邊的導(dǎo)航條來(lái)顯示相對(duì)應(yīng)的分類(lèi)圖書(shū)。

    Servlet代碼:

            BussinessServiceImpl service = new BussinessServiceImpl();
            String currentPageCount = request.getParameter("currentPageCount");
            String category_id = request.getParameter("category_id");
    
            Page page = service.getPageData(currentPageCount, category_id);
            List  categories = service.getAllCategory();
    
            request.setAttribute("page", page);
            request.setAttribute("categories", categories);
            request.getRequestDispatcher("/client/body.jsp").forward(request,response);
    效果:

    如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號(hào):Java3y
    

    文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/68592.html

    相關(guān)文章

    • Java3y文章目錄導(dǎo)航

      摘要:前言由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

      KevinYan 評(píng)論0 收藏0
    • JavaWeb圖書(shū)管理系統(tǒng)【總結(jié)】

      摘要:存在則購(gòu)物項(xiàng)的數(shù)量提供購(gòu)買(mǎi)功能,參數(shù)是和。用戶(hù)想要購(gòu)買(mǎi)商品時(shí),判斷用戶(hù)是否登陸了,還要判斷購(gòu)物車(chē)是否存在購(gòu)物車(chē)使用來(lái)保存,不存在則創(chuàng)建。得到未發(fā)貨的全部訂單和已發(fā)貨的全部訂單,其實(shí)就是檢索出不同狀態(tài)的全部訂單。 感想 該項(xiàng)目是目前為止,我寫(xiě)過(guò)代碼量最多的項(xiàng)目了.....雖然清楚是沒(méi)有含金量的【跟著視頻來(lái)寫(xiě)的】,但感覺(jué)自己也在進(jìn)步中...... 寫(xiě)的過(guò)程中,出了不少的問(wèn)題.....非常多...

      張率功 評(píng)論0 收藏0
    • 基于SSM實(shí)現(xiàn)的圖書(shū)管理系統(tǒng)

      摘要:功能相對(duì)完整,界面美觀大方下面展示一下系統(tǒng)的部分功能系統(tǒng)登陸圖書(shū)分類(lèi)管理圖書(shū)信息管理圖書(shū)借閱管理讀者信息管理系統(tǒng)管理以上是基于實(shí)現(xiàn)的圖書(shū)館管理系統(tǒng)的部分功能實(shí)現(xiàn),系統(tǒng)功能完整,運(yùn)行無(wú)誤,比較適合做畢業(yè)設(shè)計(jì)或課程設(shè)計(jì)使用。 項(xiàng)目類(lèi)別: BS-XX-075 運(yùn)行環(huán)境: 開(kāi)發(fā)工具:IDEA / E...

      不知名網(wǎng)友 評(píng)論0 收藏0
    • JavaWEB開(kāi)發(fā)21——綜合項(xiàng)目(圖書(shū)商城)

      數(shù)據(jù)庫(kù) create database productstore character set utf8 collate utf8_bin; USE productstore; -- 用戶(hù)表 CREATE TABLE `user` ( `id` INT(11) AUTO_INCREMENT, `userName` VARCHAR(20) , `password` VARCHAR(20)...

      raledong 評(píng)論0 收藏0
    • Vue-book 2.0 一個(gè)移動(dòng)端簡(jiǎn)單的全棧 web APP

      摘要:本項(xiàng)目是一個(gè)簡(jiǎn)單的全棧項(xiàng)目,前端新手可以拿來(lái)練練手。項(xiàng)目實(shí)現(xiàn)了一些簡(jiǎn)單的功能,后臺(tái)可以對(duì)圖書(shū)進(jìn)行錄入錄出掃碼或手動(dòng),前臺(tái)顯示錄入的圖書(shū),并且前臺(tái)注冊(cè)登錄后可以將書(shū)的訂單發(fā)給服務(wù)器,并存到服務(wù)器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺(jué)得不錯(cuò)就來(lái)個(gè) star 吧 ^_^】 說(shuō)明(菜鳥(niǎo)請(qǐng)進(jìn),大神繞道 ~) 前端...

      wh469012917 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    閱讀需要支付1元查看
    <