図書館管理システム卒業プロジェクト

図書館管理システム卒業プロジェクト

まとめ

要旨: 21世紀は情報の世紀であり、社会経済の発展に伴い社会の情報化の度合いはますます高まり、教育とテクノロジーの先駆者として学校現場でも優れたテクノロジーが導入されることが多くなっています。優れた学校経営の意思決定者は、学校の条件に合った図書館管理システムを選択したり、独自に開発したりすることを躊躇しません。

図書館管理システムには役割ベースのログイン機能が実装されており、読者は本の問い合わせ、貸し出し、返却のみが可能です。図書館員は本の貸し出し、本の返却、新刊本の保管、人事管理などの機能を実装できます。Spring は現在最も人気のある Web 開発フレームワーク テクノロジの 1 つであり、Java JDK 1.8 環境に基づいて開発されています。特定の開発プラットフォームには Idea Intellij 2020 が使用され、データベースには MySQL 5.7 が使用されます。このシステムの開発の全体的な課題は、書籍に関わるさまざまな情報の体系化、標準化、自動化を実現することです。

キーワード: SpringBoot、JavaEE、MySQL

抽象的な

要約: 21 世紀は情報の世紀です。社会経済の発展に伴い、社会の情報化の度合いもますます高まっています。学校は教育と科学技術の先駆者として、優れた技術を率先して導入することがよくあります。優秀な学校管理意思決定者は、学校に適した図書館管理システムを選択したり、独自に開発したりすることを躊躇しません。

図書館管理システムは役割ごとのログイン機能を実現しており、読者は問い合わせ、貸出、返却のみが可能です。図書館員は本の貸し出し、本の返却、新刊本の保管、人事管理などの機能を実現できます。Spring は最も人気のある Web 開発フレームワーク テクノロジの 1 つであり、Java JDK 1.8 環境に基づいています。具体的な開発プラットフォームは idea IntelliJ 2020、データベースは MySQL 5.7 です。システム開発の全体的な課題は、書籍に関わるあらゆる情報の体系化、標準化、自動化を実現することです。

キーワード: SpringBoot、JavaEE、MySQL

目次

まとめ

抽象的な

1 はじめに

1.1 研究背景と論文の意義

1.2 システム開発の意義

1.3 図書館の情報化

2 環境構築と需要分析

2.1 開発環境の概要

2.2 関連する技術的背景

2.2.1 Springフレームワーク

2.2.2 MySQL

2.2.3 マイバティス

2.3 ビジネス分析

2.3.1 データベース設計

2.3.2 エンティティの設計

2.3.3 システム業務フローチャート

3 コード設計と機能実装

3.1 MVC

3.2 ログインモジュール

3.3 管理者モジュール

3.3.1 ユーザー管理

3.3.2 書籍の管理

3.4 モジュールの貸出と返却

3.4.1 借入

3.4.2 返品

3.5 ユーザーの詳細

結論は

参考文献

謝辞

付録

1 はじめに

1.1 研究背景と論文の意義

科学技術の進歩に伴い、人間社会は徐々に情報化に向かって進んでおり、社会システムの重要な一部である豊富な文献や情報資源を有する図書館は、情報化社会においてますます重要な役割を果たしています。 1970 年代後半、改革開放の急速なペースにより、

特に1990年代以降、我が国の図書館情報ネットワーク構築は大きく進展し、図書館情報構築は新たな段階に入った。

1.2 システム開発の意義

図書館管理システムは図書館管理業務に不可欠な部分であり、その内容は図書館管理者と利用者の両方にとって重要です。したがって、図書館管理システムは、管理者または読者に十分な情報と高速なデータ処理方法を提供できる必要があります。コンピュータアプリケーションの一環として、コンピュータを使用して書籍情報を管理することには、迅速な検索、容易な検索、容易な変更、高い信頼性、大容量の記憶容量、高速なデータ処理、良好な機密性、長寿命、低コストなど、手動管理に匹敵する利点がありません。コスト、印刷のしやすさなど。これらの利点は図書館管理の効率を大幅に向上させることができ、図書館の科学的かつ標準化された管理が世界と統合されるための重要な条件でもあります。したがって、そのような一連の管理ソフトウェアを開発する必要があります。

1.3 図書館の情報化

図書館の情報化は、初期の図書館業務管理の情報化から、図書館のさまざまな業務プロセスの体系的かつネットワーク化された管理、そして個別の文献目録のオンライン照会を中心とした大規模なリソース共有システムの確立へと進化してきました。21 世紀に入ると、コンピュータ ネットワークと情報技術を使用して、情報管理とさまざまなキャリア上の物理文書の多面的なオンライン クエリを徐々に実現できるようになりました。図書館のコンピュータ情報管理とは、図書館の書籍、定期刊行物、オーディオおよびビデオ資料、その他のキャリア文書の収集、収集、配布、検索、および通常の業務管理を含む、従来の図書館業務の手動操作をコンピュータ管理に変えることです。コンピュータ技術を活用し、効率的かつ正確な情報管理を行う業務。その基本的な目的は、地域、地域、国、国間での資源の共有を実現することです。リソース共有の目的を達成するには、一定の基準を策定する必要があり、各システムがその基準に従う場合にのみ、異なるシステム間でオンラインクエリとリソース共有を実現できます。

2 環境構築と需要分析

2.1 開発環境の概要

Javaバージョン:Jdk1.8

フロントエンド: html、js、thymeleaf、semanticui

バックエンド: Java、spring、springboot、springmvc、mybatis

データベース: mysql

2.2 関連する技術的背景

2.2.1 Springフレームワーク

Spring フレームワークは、[Rod Johnson](https://baike.baidu.com/item/Rod Johnson/1423612) によって開始されたオープンソースのJ2EEアプリケーション フレームワークであり、Bean ライフサイクル管理コンテナ (軽量コンテナ) のための軽量フレームワークです。Spring は、開発者が J2EE 開発で遭遇する多くの一般的な問題を解決し、強力な IOC、AOP、および Web MVC 機能を提供します。Spring は単独でアプリケーションを構築するために使用できますが、Struts、Webwork、Tapestry などの多くの Web フレームワークと組み合わせて使用​​したり、 Swing などのデスクトップ アプリケーションAP と組み合わせたりすることもできます。したがって、Spring は JEE アプリケーションだけでなく、デスクトップ アプリケーションや小規模アプリケーションでも使用できます。Spring フレームワークは主に、Spring Core、Spring AOP、Spring ORM、Spring DAO、Spring Context、Spring Web、Spring Web MVC の 7 つの部分で構成されます。

2.2.2 MySQL

MySQL は、PHP や Java などの主流のプログラミング言語と密接に統合された、安全でクロスプラットフォームの効率的なデータベース システムです。このデータベース システムは、オリジナルの MySQL 開発者である David Axmark と Michael Monty Widenius によって 1995 年に設立されたスウェーデンの会社 MySQL AB によって開発、リリース、サポートされています。

2.2.3 マイバティス

MyBatis は、通常の SQL クエリ、ストアド プロシージャ、および高度なマッピングをサポートする優れた永続層フレームワークです。MyBatis では、ほぼすべてのJDBCコード、パラメータの手動設定、結果セットの取得が不要になります。MyBatis は、構成とオリジナルのマッピングに単純な XML または注釈を使用し、インターフェースと Java POJO (Plain Ordinary Java Object、通常の Java オブジェクト) をデータベース内のレコードにマッピングします。

2.3 ビジネス分析

2.3.1 データベース設計

以下の図 2-1 に示すように:

画像

図 2-1 データベースの構造

表 2-1 データベースの構造

2.3.2 エンティティの設計

ブックエンティティ

画像

図 2-2 書籍エンティティ

ユーザーエンティティ

画像

図 2-3 ユーザーエンティティ

パラメータエンティティ

画像

図 2-4 パラメータエンティティ

借入主体

画像

図 2-5 借入主体

2.3.3 システム業務フローチャート

画像

図2-6 システムのビジネスプロセス

3 コード設計と機能実装

3.1 MVC

このシステムの設計の最大の特徴は、MVC 階層設計思想を採用していることです. システム インターフェイスは、プレゼンテーション層とデータ接着層として Web ページを使用します. いくつかの一般的なロジック処理ニーズを実行するために、ビジネス ロジック層は論理処理用のデータを提供するためにデータ層が作成され、データ アクセスのためにデータ モデル層が作成されます。

画像

図 3-1 MVC モデル

3.2 ログインモジュール

画像

システムを使用する場合は、図 3-2 に示すように、ログイン モジュールを使用してシステム インターフェイス効果にログインする必要があります。

図 3-2 ログインインターフェイス

「送信」ボタンをクリックする際の処理コードは以下のとおりです。

@RequestMapping("/login")
public String login(User user, RedirectAttributes attributes,Model model, HttpSession session){
    
    
    String username = user.getUsername();
    String password = Md5.getMD5String(user.getPassword());
    User user1 = userMapper.findUserByUsername(username);
    System.out.println(user1.toString());
    if (user1!=null){
    
    
        if (user1.getPassword().equals(password)){
    
    
            session.setAttribute("username",username);
            session.setAttribute("isadmin",user1.getIsadmin());
            session.setAttribute("id",user1.getId());
            return "redirect:index";
        }else{
    
    
            model.addAttribute("msg2","密码输入错误");
            return "login";
        }
    }else{
    
    
        model.addAttribute("msg1","用户名不存在");
        return "login";
    }
}

(1) このコード行は、ユーザーが管理情報セッションであるかどうかを取得します。setAttribute(“isadmin”,user1.getIsadmin());

(2) ログインパスワードはMD5で暗号化されています。

String password = Md5.getMD5String(user.getPassword());

ログインが失敗すると、次のようなプロンプトが表示されます。 図 3-3

画像

図 3-3 ログイン プロンプト インターフェイス

正常にログインしてデータを取得し、ホームページに戻ります

画像

図 3-4 ホームページのインターフェース

コード

@RequestMapping("/index")
public String index(Model model, HttpSession session){
    
    
    Param param = paramMapper.findParamByName("views");
    if(param!=null){
    
    
        paramMapper.updateParamById(param.getId());
    }else{
    
    
        paramMapper.addParam(
            new Param(UUID.randomUUID().toString().replace("-",""),
                      "views",1)
        );
    }
    Integer views = paramMapper.findParamByName("views").getNum();
    List<Book> books = bookMapper.findAllBooks();
    Integer sum = 0;
    for (Book b :
         books) {
    
    
        sum += b.getNum();
    }
    model.addAttribute("views",views);
    System.out.println("sum:"+sum);
    model.addAttribute("total",sum);
    model.addAttribute("books",books);
    model.addAttribute("num",books.size());
    model.addAttribute("isadmin",session.getAttribute("isadmin"));
    return "index";
}

3.3 管理者モジュール

3.3.1 ユーザー管理

画像

図 3-5 ユーザー管理インターフェイス

ユーザー管理コード

消去

@RequestMapping("/user_delete")
public String user_delete(@RequestParam("id") String id){
    
    
    System.out.println(id);
    userMapper.deleteUserById(id);
    userBorrowMapper.deleteUserBorrowByUserId(id);
    return "redirect:user";
}

更新する

画像

図 3-6 ユーザー更新ページ

コード

@RequestMapping("/update_user")
public String update_user(User user){
    
    
    System.out.println("update_user:"+user.toString());
    userMapper.updateUserById(user);
    return "redirect:user";
}

3.3.2 書籍の管理

書籍管理ホームページ

画像

図 3-7 書籍管理インターフェイス

コード

@RequestMapping("/book")
public String book(Model model,HttpSession session){
    
    
    Param param = paramMapper.findParamByName("views");
    if(param!=null){
    
    
        paramMapper.updateParamById(param.getId());
    }else{
    
    
        paramMapper.addParam(
            new Param(UUID.randomUUID().toString().replace("-",""),
                      "views",1)
        );
    }
    Integer views = paramMapper.findParamByName("views").getNum();
    List<Book> books = bookMapper.findAllBooks();
    Integer sum = 0;
    for (Book b :
         books) {
    
    
        sum += b.getNum();
    }
    System.out.println("sum:"+sum);
    model.addAttribute("total",sum);
    model.addAttribute("books",books);
    model.addAttribute("num",books.size());
    model.addAttribute("views",views);
    model.addAttribute("username",session.getAttribute("username"));
    model.addAttribute("isadmin",session.getAttribute("isadmin"));
    return "book";
}

消去

@RequestMapping("/book_delete")
public String book_delete(@RequestParam("id") String id){
    
    
    System.out.println(id);
    Book book = bookMapper.findBookById(id);
    Integer booknum = book.getNum();
    if (booknum>1){
    
    
        bookMapper.updateBookNumById(id);
    }else{
    
    
        userBorrowMapper.deleteUserBorrowByBookId(id);
        bookMapper.deleteBookById(id);
    }
    return "redirect:book";
}

更新する

画像

図 3-8 書籍更新ページ

コード

@RequestMapping("/book_update")
public String book_update(Book book,Model model){
    
    
    bookMapper.updateBookById(book);
    return "redirect:book";
}

に追加

画像

図 3-9 書籍追加ページ

コード

@RequestMapping("/add_book")
public String add_book(Book book){
    
    
    book.setId(UUID.randomUUID().toString().replace("-",""));
    bookMapper.addBook(book);
    return "redirect:book";
}

検索

画像

図3-10 図書管理図書の検索結果ページ

コード

@RequestMapping("/book_search")
public String book_search(String keywords,Model model,HttpSession session){
    
    
    System.out.println("keywords:"+keywords);
    List<Book> books = bookMapper.findBooksByKeywords(keywords);
    Integer sum = 0;
    for (Book b :
         books) {
    
    
        sum+=b.getNum();
    }
    model.addAttribute("books",books);
    model.addAttribute("num",books.size());
    model.addAttribute("sum",sum);
    model.addAttribute("isadmin",session.getAttribute("isadmin"));
    return "search_book_page";
}

3.4 モジュールの貸出と返却

3.4.1 借入

画像

図 3-11 書籍の詳細ページ

コードを借りる

@RequestMapping("/borrow")
public String borrow(@RequestParam("id") String id,Model model,HttpSession session){
    
    
    String uid = (String)session.getAttribute("id");
    String bid = id;
    Book book = bookMapper.findBookById(id);
    UserBorrow userBorrow = userBorrowMapper.findUserBorrowByUidAndBid(uid,id);
    if (userBorrow==null){
    
    
        String tid = UUID.randomUUID().toString().replace("-","");
        userBorrow = new UserBorrow(tid,uid,bid,1,new Date(System.currentTimeMillis()),null);
        userBorrowMapper.addUserBorrow(userBorrow);
    }else{
    
    
        userBorrowMapper.updateUserBorrowByIdBorrow(userBorrow.getId(),1);
    }
    UserBorrow userBorrow1 = userBorrowMapper.findUserBorrowByUidAndBid(uid,bid);
    model.addAttribute("book",book);
    model.addAttribute("username",session.getAttribute("username"));
    model.addAttribute("isBorrow",userBorrow1.getIsValid());
    return "book_detail";
}

3.4.2 返品

画像

図 3-12 書籍の詳細ページ

リターンコード

@RequestMapping("/return_book")
public String return_book(@RequestParam("id") String id,Model model,HttpSession session){
    
    
    String uid = (String)session.getAttribute("id");
    String bid = id;
    Date returnTime = new Date(System.currentTimeMillis());
    UserBorrow userBorrow = userBorrowMapper.findUserBorrowByUidAndBid(uid,id);
    userBorrowMapper.updateUserBorrowByIdReturn(userBorrow.getId(),0,returnTime);
    UserBorrow userBorrow1 = userBorrowMapper.findUserBorrowByUidAndBid(uid,id);
    System.out.println("return_book:"+userBorrow1.toString());
    Book book = bookMapper.findBookById(id);
    model.addAttribute("book",book);
    model.addAttribute("username",session.getAttribute("username"));
    model.addAttribute("isBorrow",userBorrow1.getIsValid());
    return "book_detail";
}

3.5 ユーザーの詳細

画像

図 3-13 ユーザー詳細ページ

コード

@RequestMapping("/user_profile")
public String user_profile(@RequestParam("id") String id,Model model,HttpSession session){
    
    
    List<Profile> books = bookMapper.findBookListOfUserByUserId(id);
    //     System.out.println("user_profile:book="+books.get(0).toString());
    User temp = userMapper.findUserById((String) session.getAttribute("id"));
    System.out.println("user_profile:user="+temp.toString());
    model.addAttribute("user",temp);
    model.addAttribute("books",books);
    return "user_profile";
}

結論は

この設計では、MySQL を使用してバックエンド データベースを作成し、Idea IntelliJ ツールを使用してライブラリ管理システムの機能操作を実装します。このライブラリ管理システムはライブラリ管理の基本機能を実現しており、デバッグと実行後、システムが実現可能で拡張可能であることがわかります。ただし、データベースをさらに改善して計画する必要があり、システムをより効率的で使いやすいものにするためにオペレーティング システムをさらに改善する必要があります。

この卒業制作を通して、私は以下の点に気づきました。
(1) この開発プロセスを通じて、ソフトウェア開発の概念を獲得しました。ソフトウェア開発はユーザーのニーズから始まり、すべての作業はユーザーのニーズを中心に回ります。まずユーザーのニーズを満たす必要があります。開発プロセスでは、理論と実践の組み合わせが重視され、過去に学んだ知識が活用されます。ソフトウェア開発の理論的基礎となるものであり、しっかりした基礎を持ってシステム開発を完了する必要があります。

(2) システムで使用されるオブジェクト指向統合開発環境は、開発者に対話型の開発方法を提供し、ユーザーがコードを記述してシステムをデバッグできるようにコンパイルします。アプリケーションは、フォームやコンポーネント用のさまざまなツールを使用して設計できます。

(3) デザインにおいては、生徒同士のチームワークの大切さを感じますが、自主的なデザインではありますが、先生やクラスメートの協力なしには実現できません。

(4) システムにはまだ欠陥があり、システム構成や環境の変化によって実装が制限されたり、一部の機能の設計が十分に包括的ではなかったりするため、今後の作業と研究で引き続き改善され、より完全なものになるでしょう。オリジナルの基礎。

(5) 実践的な操作を通じて、これまで学んだことを統合すると同時に知識を広げ、参考書を選択したり、マニュアルや文献を参照したりする能力を養うことができます。独立して考え、徹底的な調査を行い、問題を分析し、解決する能力を養います。

(6) 実際のコンパイルシステムの解析、設計、プログラミング、デバッグを通じて、ソフトウェア技術の解析手法と工学設計手法を習得する。コース設計で遭遇した問題点を踏まえ、今後の学習では以下の点に注意していきたいと思います。
1. 専門コースを真剣に受講し、実践でさらに訓練する。
2. プログラムを作成するときは、慎重かつ厳密に行ってください。
3. デザインするときは、情報を入手し、忍耐強く、衝動的にならないようにする必要があります。
4. 教科書の知識をよく学び、教科書の知識の要点をマスターし、それに基づいて柔軟に活用できるようにする。
5. 空き時間にさらに多くのプログラムを作成し、プログラムのデバッグ時間を節約するために、プログラムの初期のデバッグ中に発生する一般的なエラーに習熟してください。

一般的に言えば、レベルが低く、プロジェクト開発の経験が浅く、卒業プロジェクトの期間が短いため、このシステムにはまだ不十分な点が多く、さらに改善する必要があります。この卒業制作を通じて、自分の知識が足りず、市場の需要に十分に対応できないことに気づきました。今後の勉強と仕事において、あらゆる面で知識を向上させ、継続的に拡大するように努力していきます。継続的な学習と改善を通じて、さらにレベルアップしていきたいと考えています。

参考文献

参考例:

a 単行本、会議録、論文、報告書

[1] Liu Guojun、Chen Shaoye、Wang Fengzhu、図書館カタログ [M]、北京: 高等教育出版局、1957 年。

[2] Xin Ximeng. 情報技術および情報サービスに関する国際シンポジウム議事録: コレクション A [C]. 北京: 中国社会科学出版社、1994.

[3] Zhang Zhusheng. 微分半動的システムの不変集合 [D]. 北京: 北京大学数学学部数学研究所、1983 年。

[4] Feng Xiqiao. 原子炉圧力配管および圧力容器の LBB 解析 [R]. 北京: 清華大学核エネルギー技術設計研究所、1997. b 雑誌記事

[5] Jin Xianhe、Wang Changchang、Wang Zhongdong、他、部分放電のオンライン検出のためのデジタル フィルタリング技術 [J]、清華大学ジャーナル (自然科学版)、1993、33(4): 62-67。 c 特別な分析文献

[6] Zhong Wenfa. 可燃性毒物の配分における非線形計画法の応用 [C]. Zhao Wei. オペレーション リサーチの理論と応用 - 中国オペレーション リサーチ協会第 5 回会議予稿集 [C]. 西安: 発行西安電子科学技術学会著、1996: 468-471. d 新聞記事

[7] Xie Xide. 学習のための新しいアイデアの作成 [N]. People's Daily, 1998-12-25 (10). e 国際基準と国家基準

[8] GB/T16159-1996、中国語ピンイン正書法の基本規則[S]. f 特許

[9] Jiang Xizhou. 温外適用のための準備スキーム: 中国、88105607.3[P].1989-07-26. g 電子文献

[10] 王明良、中国学術雑誌標準化データベース システム エンジニアリングの進歩 [EB/OL]、http://www.Cajcd.edu.cn/pub/wml.txt/980810-2.html、1998 年 8 月- 16 /1998-10-04。

[3] Zhang Zhusheng. 微分半動的システムの不変集合 [D]. 北京: 北京大学数学学部数学研究所、1983 年。

[4] Feng Xiqiao. 原子炉圧力配管および圧力容器の LBB 解析 [R]. 北京: 清華大学核エネルギー技術設計研究所、1997. b 雑誌記事

[5] Jin Xianhe、Wang Changchang、Wang Zhongdong、他、部分放電のオンライン検出のためのデジタル フィルタリング技術 [J]、清華大学ジャーナル (自然科学版)、1993、33(4): 62-67。 c 特別な分析文献

[6] Zhong Wenfa. 可燃性毒物の配分における非線形計画法の応用 [C]. Zhao Wei. オペレーション リサーチの理論と応用 - 中国オペレーション リサーチ協会第 5 回会議予稿集 [C]. 西安: 発行西安電子科学技術学会著、1996: 468-471. d 新聞記事

[7] Xie Xide. 学習のための新しいアイデアの作成 [N]. People's Daily, 1998-12-25 (10). e 国際基準と国家基準

[8] GB/T16159-1996、中国語ピンイン正書法の基本規則[S]. f 特許

[9] Jiang Xizhou. 温外適用のための準備スキーム: 中国、88105607.3[P].1989-07-26. g 電子文献

[10] 王明良、中国学術雑誌標準化データベース システム エンジニアリングの進歩 [EB/OL]、http://www.Cajcd.edu.cn/pub/wml.txt/980810-2.html、1998 年 8 月- 16 /1998-10-04。

[11] Wan Jinkun. 中国大学ジャーナルの要約 (1983-1993). 英語版 [DB/CD]. 北京: 中国百科事典出版社, 1996.

おすすめ

転載: blog.csdn.net/weixin_41405524/article/details/132637558