著者のホームページ:デザイナー Xiao Zheng
著者の簡単な紹介: JAVA テクノロジ、システム カスタマイズ、リモート ガイダンスに重点を置いた 3 年間の JAVA フルスタック開発経験、エンタープライズ デジタル トランスフォーメーションに専念、CSDN カレッジおよび Blue Bridge クラウド コースの認定講師。
タイトル | 説明する |
---|---|
プロジェクトの種類 | オープンソースプロジェクト |
ソースコードウェアハウス | https://gitee. com / yyzwz / ky 001 \color{red}{https://gitee.com/yyzwz/ky001}https _ _://ジーティー。_ _ _ com / yyz w z / ky 001 _ _ |
付加価値サービス | https://bbs.csdn.net/topics/617132402 |
プロジェクトコード | ky001 |
付加価値サービス | [ドキュメント、展開、説明\color{red}{ドキュメント、展開、説明}ドキュメント、展開、説明] 「オープンソース プロジェクト サービス標準」 |
今年も卒業シーズンが到来し、新卒者に対して学校では理論的な知識だけを教えているが、就職は難しいというのがほとんどの新卒者の常態である。
最近、クラスメートが「コンピュータ サイエンスの学部生として仕事を見つけるために習得する必要があるスキルは何ですか?」という質問に答えるのを手伝いました。それが私のオープンソース プロジェクトを書きたいという欲求を呼び起こしました。
オープンソース プロジェクトとは、ソース コードが公開されており、誰でも表示、使用、変更、配布できるソフトウェアまたはその他の種類のプロジェクトを指します。オープンソース プロジェクトの目的は、より多くの人が参加できるようにすることで、協力、共有、革新を促進し、ソフトウェアの品質と機能を向上させることです。
初心者が Java フルスタックをよりよく始めるのに役立つように、 23 23にリリースされる予定です23が終わるまでに50 50を開発する初心者が学び、使用できるように、 50セットのオープンソース プロジェクトがファンに還元されます。
この記事は、最初のオープン ソース プロジェクトである「図書館管理システム」であり、図書館モジュール、書籍タイプ モジュール、書籍モジュール、書籍貸出モジュール、およびアナウンス モジュールが含まれています。学生はこのプロジェクトを使用して練習し、 Vue と Spring Boot フレームワークをより明確に理解します。
目次
1 システム紹介
図書館管理システムは、図書館リソースを管理するために使用されるソフトウェア システムであり、図書館モジュール、書籍タイプ モジュール、書籍モジュール、書籍貸出モジュール、およびアナウンス モジュールを含みます。
図書館モジュールはシステムの中核となるモジュールであり、図書館名、住所、連絡先などの図書館の基本情報を管理するために使用されます。管理者は、このモジュールを通じてライブラリ情報を追加、変更、削除できます。
書籍タイプモジュールは書籍の分類情報を管理するために使用されます。管理者は、このモジュールに文学、歴史、テクノロジーなどのさまざまな書籍タイプを追加して、読者が書籍を見つけて借りやすくすることができます。
書籍モジュールはシステム内で最も重要なモジュールの 1 つであり、書籍のタイトル、著者、出版社、ISBN などの書籍の基本情報を管理するために使用されます。管理者は、このモジュールで書籍情報の追加、変更、削除、書籍の在庫数量の設定を行うことができます。
図書貸出モジュールは読者向けシステムの中核となるモジュールの一つであり、読者はこのモジュールを通じて図書の貸出状況を確認したり、図書の貸し出しや返却を行うことができます。このシステムは、貸出記録と返却日を自動的に記録し、読者に本の返却を促します。
お知らせモジュールは、ライブラリ関連の通知やお知らせを読者に公開するために使用されます。管理者は、このモジュールでお知らせを公開し、お知らせの有効期間を設定できます。読者はこのモジュールを通じて最新の発表情報を確認できます。
図書館管理システムは、図書館リソースを効率的に管理し、便利な貸出サービスを提供し、図書館関連の情報やお知らせをタイムリーに読者に公開することができます。
2つの機能モジュール
2.1 ログイン登録モジュール
図書館管理システムでは、ユーザーがアカウント番号、パスワード、グラフィック認証コードを入力してログインを完了することができます。インターフェースは次のとおりです。
ユーザーがアカウントを持っていない場合は、次の図に示すように、セルフサービス登録を完了してシステムにログインできます。
システムに入ると、インターフェイスは次の図のようになります。
2.1 ライブラリモジュール
図書館モジュールは図書館管理システムの中核モジュールの 1 つであり、主に図書館の基本情報の管理を担当します。
図書館モジュールは、図書館の名前、住所、連絡先などの図書館の基本情報を記録し、管理します。この情報は読者にとって重要です。読者はクエリ システムを通じて図書館の場所と連絡先情報を知ることができ、本を簡単に借りることができます。主なインターフェイスを次の図に示します。
ライブラリ モジュールを使用すると、管理者はライブラリの設定を管理できます。ライブラリ モジュールは、ライブラリに関する関連情報を提供できます。追加インターフェイスは次の図に示すとおりです。
図書館モジュールは図書館管理システムに不可欠な部分であり、図書館の基本情報、設定、リソース、統計データの管理およびクエリ機能を提供し、図書館の管理効率と読者の貸出体験の向上に役立ちます。
2.2 ブック型モジュール
書籍管理システムでは、書籍の分類と管理に書籍タイプ モジュールが重要であるため、書籍タイプ モジュールが必要です。主なインターフェイスは次の図に示されています。
書籍タイプ モジュールを使用すると、管理者は書籍を分類して管理できます。本を種類別に分類することで、読者は興味のある本を簡単に見つけて借りることができます。たとえば、本は文学、歴史、技術などに分類でき、読者は自分の興味やニーズに応じて借りることができます。本のタイプ モジュールの追加インターフェイスを次の図に示します。
Book Type モジュールは、書籍を簡単に検索する方法を提供します。読者は本の種類に基づいて検索し、必要な本をすぐに見つけることができます。これにより、読者の検索効率が向上し、時間を節約できます。編集インターフェイスは次の図に示されています。
ブックタイプモジュールは、図書館管理システムにおいて重要な役割を果たしており、書籍を分類して管理することで、読者が本を見つけて借りるのに便利であると同時に、貸出制限や個人向けの推奨機能などの機能も提供します。図書館管理システムと読者の効率が向上します。経験的に、不要な書籍タイプについては、次の図に示すように、ユーザーが削除できます。
2.3 書籍モジュール
書籍管理システムには書籍モジュールが必要です。書籍モジュールはシステム内で最も重要なモジュールの 1 つであり、書籍の基本情報を管理するために使用されます。主なインターフェイスは次のとおりです。
書籍モジュールは、書籍のタイトル、著者、出版社、ISBN などの書籍の基本情報を記録および管理します。管理者は、書籍情報の正確性と完全性を確保するために、このモジュールで書籍情報を追加、変更、削除できます。書籍入力インターフェイスは次の図に示されています。
読者は、book モジュールを通じて書籍をクエリおよび取得できます。書名、著者、ISBNなどのキーワードから興味のある本をすぐに見つけることができ、書籍検索の効率が向上します。
ブック モジュールは、書籍管理システムで重要な役割を果たし、読者が書籍リソースを簡単に取得して使用できるようにするだけでなく、書籍管理システムの効率的な運用を保証します。下の図に書籍編集インターフェイスを示します。
2.4 図書貸出モジュール
図書館管理システムには、図書貸出モジュールが必要です。貸出モジュールはシステムのコア モジュールの 1 つであるためです。図書貸出プロセスのすべての側面を処理する責任があります。図書貸出モジュールのメイン インターフェイスを次の図に示します。 。
図書貸出モジュールは、貸出記録を記録・管理します。
読者は、借入記録を照会することで、借入履歴、現在の借入状況、その他の情報を知ることができます。
管理者は本モジュールを利用することで、貸出記録の統計・分析を行い、図書の貸出状況を把握し、より合理的な図書購入計画を立てることができます。
下図のように「追加」ボタンをクリックすると図書の貸出登録が完了します。
以下の図に示すように、読者は借用の詳細を問い合わせることができます。
以下の図に示すように、管理者は「返却」ボタンをクリックして学生の書籍返却申請を完了できます。
図書貸出モジュールは、図書館管理システムに欠かせない貸出管理、貸出記録管理などの機能を提供し、読者に便利な貸出サービスを提供するとともに、管理者に貸出データ管理機能を提供します。
2.5 アナウンスモジュール
アナウンスモジュールは、図書館管理システムにおいて、閲覧者や管理者との情報交換やコミュニケーションを実現するために必要であり、主なインターフェースを下図に示します。
お知らせモジュールは、読者や管理者に重要なお知らせやお知らせを発行するために使用できます。たとえば、図書館の臨時休館、貸出ルールの変更、本の購入計画などの重要な情報をお知らせモジュールを通じて公開し、読者に確実に知らせることができます。管理者は、次の図に示すように、お知らせを投稿できます。
3 ソースコード分析
3.1 ライブラリモジュールの設計
エンティティクラス:
@Table(name = "a_library")
@TableName("a_library")
@ApiModel(value = "图书馆")
public class Library extends ZwzBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "图书馆名称")
private String title;
@ApiModelProperty(value = "图书馆地址")
private String address;
@ApiModelProperty(value = "门头照片")
private String image;
@ApiModelProperty(value = "开业状态")
private String status;
@ApiModelProperty(value = "备注")
private String remark;
}
クエリインターフェイス:
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询图书馆")
public Result<IPage<Library>> getByPage(@ModelAttribute Library library ,@ModelAttribute PageVo page){
QueryWrapper<Library> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(library.getTitle())) {
qw.like("title",library.getTitle());
}
if(!ZwzNullUtils.isNull(library.getAddress())) {
qw.like("address",library.getAddress());
}
IPage<Library> data = iLibraryService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Library>>().setData(data);
}
3.2 ブック型モジュール設計
エンティティクラスの設計:
@Table(name = "a_book_type")
@TableName("a_book_type")
@ApiModel(value = "图书类型")
public class BookType extends ZwzBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "图书类型")
private String title;
@ApiModelProperty(value = "类型状态")
private String status;
@ApiModelProperty(value = "排序值")
private BigDecimal sortOrder;
@ApiModelProperty(value = "备注")
private String remark;
}
クエリインターフェイス:
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询图书类型")
public Result<IPage<BookType>> getByPage(@ModelAttribute BookType bookType ,@ModelAttribute PageVo page){
QueryWrapper<BookType> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(bookType.getTitle())) {
qw.like("title",bookType.getTitle());
}
if(!ZwzNullUtils.isNull(bookType.getStatus())) {
qw.eq("status",bookType.getStatus());
}
IPage<BookType> data = iBookTypeService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<BookType>>().setData(data);
}
3.3 書籍モジュールの設計
エンティティクラスの設計:
@Table(name = "a_book")
@TableName("a_book")
@ApiModel(value = "图书")
public class Book extends ZwzBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "图书名称")
private String title;
@ApiModelProperty(value = "出版社")
private String press;
@ApiModelProperty(value = "图书类型")
private String type;
@ApiModelProperty(value = "ISBN")
private String isbn;
@ApiModelProperty(value = "图片")
private String image;
@ApiModelProperty(value = "备注")
private String remark;
}
クエリインターフェイス:
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询图书")
public Result<IPage<Book>> getByPage(@ModelAttribute Book book ,@ModelAttribute PageVo page){
QueryWrapper<Book> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(book.getTitle())) {
qw.like("title",book.getTitle());
}
if(!ZwzNullUtils.isNull(book.getIsbn())) {
qw.like("isbn",book.getIsbn());
}
IPage<Book> data = iBookService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Book>>().setData(data);
}
3.4 図書貸出モジュールの設計
エンティティクラスの設計:
@Table(name = "a_book_borrowing")
@TableName("a_book_borrowing")
@ApiModel(value = "图书借阅")
public class BookBorrowing extends ZwzBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "图书ID")
private String bookId;
@ApiModelProperty(value = "图书名称")
private String bookName;
@ApiModelProperty(value = "图书ISBN")
private String bookIsbn;
@ApiModelProperty(value = "借阅人ID")
private String userId;
@ApiModelProperty(value = "借阅人")
private String userName;
@ApiModelProperty(value = "借阅时间")
private String time1;
@ApiModelProperty(value = "借阅状态")
private String status;
@ApiModelProperty(value = "归还时间")
private String time2;
}
クエリインターフェイス:
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询图书借阅")
public Result<IPage<BookBorrowing>> getByPage(@ModelAttribute BookBorrowing bookBorrowing ,@ModelAttribute PageVo page){
QueryWrapper<BookBorrowing> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
qw.eq("user_id",currUser.getId());
if(!ZwzNullUtils.isNull(bookBorrowing.getBookName())) {
qw.like("book_name",bookBorrowing.getBookName());
}
if(!ZwzNullUtils.isNull(bookBorrowing.getUserName())) {
qw.like("user_name",bookBorrowing.getUserName());
}
IPage<BookBorrowing> data = iBookBorrowingService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<BookBorrowing>>().setData(data);
}
3.5 アナウンスモジュールの設計
エンティティクラスの設計:
@Table(name = "a_notice")
@TableName("a_notice")
@ApiModel(value = "公告")
public class Notice extends ZwzBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "公告标题")
private String title;
@ApiModelProperty(value = "公告内容")
private String content;
@ApiModelProperty(value = "图片")
private String image;
@ApiModelProperty(value = "发布状态")
private String status;
}
クエリインターフェイス:
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询公告")
public Result<IPage<Notice>> getByPage(@ModelAttribute Notice notice ,@ModelAttribute PageVo page){
QueryWrapper<Notice> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(notice.getTitle())) {
qw.like("title",notice.getTitle());
}
if(!ZwzNullUtils.isNull(notice.getContent())) {
qw.like("content",notice.getContent());
}
IPage<Notice> data = iNoticeService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Notice>>().setData(data);
}
4. 免責事項
- このプロジェクトはオープン ソースであり、個人的な研究のみを目的としています。GPL-3.0 オープン ソース契約に従っています。商用認可については、ブロガーに問い合わせてください。そうでない場合は、その結果について責任を負うことになります。
- ブロガーは、このソフトウェアによって構築されたアプリケーション システムのすべてのコンテンツおよび独立した知的財産権を所有し、最終的な解釈権を有します。
- ご質問がございましたら、倉庫問題にメッセージを残してください。確認後、できるだけ早く返信させていただきます。関連する意見は適切に考慮されますが、採用されることを確約または保証するものではありません。
このシステム コードをダウンロードする、またはこのシステムを使用するユーザーは、以下の内容に同意する必要があります。同意しない場合はダウンロードしないでください。
- あなたは、このソフトウェアを自発的に使用/開発し、このソフトウェアを使用するリスクを理解し、このソフトウェアを使用するリスクを負担することに同意するものとします。
- このソフトウェアを使用して構築されたウェブサイトの情報内容、およびそれに伴う著作権紛争、法的紛争および結果については、ブロガーとは一切関係がなく、ブロガーは一切の責任を負いません。
- いかなる状況においても、ブロガーは、このソフトウェアの使用または使用不能から生じる合理的に予測することが困難な損失 (商業的利益の損失、事業の中断、およびビジネス情報の損失を含みますが、これらに限定されません) に対して責任を負いません。
- ブロガーは、本ソフトウェアを使用する際のリスクを十分に理解した上で、個別の技術サポートや使用保証を提供することを約束するものではなく、また、本ソフトウェアによって引き起こされる予期せぬ問題については一切の責任を負いません。