RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1598384
Accepted
Davit Kobalia
Davit Kobalia
Asked:2024-10-31 17:52:10 +0000 UTC2024-10-31 17:52:10 +0000 UTC 2024-10-31 17:52:10 +0000 UTC

帮助重构

  • 772

我为我公司的 Java 后端职位空缺编写了一个测试,以下是包含任务的文档文本:

User ManagProject 标题:图书馆管理系统 该项目旨在创建一个图书馆管理系统,这是一个帮助图书馆工作人员以简单有效的方式管理图书、顾客(图书馆用户)和图书借阅的软件工具。
主要功能: ement:创建和管理图书管理员帐户。允许图书馆员登录。

Book Management:
    Add new books with details like title, author, ISBN, and genre.
    Edit and update book info.
    Remove books from the library.
    Display a list of all library books.

Patron Management:
    Add new patrons with their names, contact info, and membership status.
    Edit and update patron details.
    Remove patrons from the library.
    Show a list of all library patrons.

Borrowing System:
    Enable library patrons to borrow books.
    Track due dates for borrowed books.
    Allow librarians to mark books as returned.
    Notify patrons if they have overdue books.

Search and Filtering:
    Create a search feature for books and patrons based on criteria like title, author, and name.
    Add options to sort and filter lists of books and patrons.

Reporting:
    Generate reports that display overdue books and transaction history.
    Provide statistics about the library's book collection and patron activity.   Technical Details:

User Interface:
    Design an easy-to-use web-based interface for librarians.
    Ensure it works well on different screen sizes.

Security:
    Set up user login and access control for librarians.
    Safeguard sensitive information, like passwords and patron data.

Database:
    Use a relational database (e.g., MySQL, PostgreSQL) to store book, patron, and transaction data.
    Create a suitable database structure and relationships.

Performance:
    Optimize how the system fetches data from the database.
    Ensure the system can handle multiple users at once.

Scalability:
    Design the system to grow smoothly as the library's needs expand.   Technology Stack:

Backend: Java (with Spring Boot)
Frontend: HTML, CSS, JavaScript
Database: Relational (e.g., MySQL, PostgreSQL)
Security: Spring Security
Database Access: Hibernate
User Interface Templating: Thymeleaf or similar   Project Deliverables:

The project's source code.
Documentation (README) explaining how to set up and run the application.
Brief documentation describing the project's structure and design choices.
Source code should be provided as a git repository.   Evaluation Criteria:   The project will be assessed based on:

Functionality: Does the system meet all functional requirements?
User Interface: Is the interface user-friendly and adaptable to different devices?
Code Quality: Is the code well-organized, readable, and maintainable?
Security: Is user authentication and data protection implemented correctly?
Database Design: Does the database structure fit the project's needs?
Documentation: Is there clear documentation for setting up and using the application?
Error Handling: Does the application handle errors gracefully?
Performance: How efficiently does the application perform its tasks?

通过测试后,他们说很明显“是我自己写的”(确实如此)并告诉我改正然后再试,但不幸的是他们没有告诉我任务到底出了什么问题。我自己找不到具体需要纠正的地方,如果您能告诉我,我会很高兴这是Github上该项目的链接。

java
  • 1 1 个回答
  • 43 Views

1 个回答

  • Voted
  1. Best Answer
    Alex Krass
    2024-10-31T21:06:21Z2024-10-31T21:06:21Z

    立即声明:你可以发表很多评论,但被调查者和检查员的观点不会一致,这并不是事实。因此,建议从原始来源中找出他们不喜欢的内容以及应该纠正的内容。我可以代表我自己简单地说明我到底在哪里看到了问题以及可以改进的地方。

    1. git中项目的解释文件的设计是通过带有markdown标记的readme.md文件,它不是用三行不太清晰的文字写的。

    2. 数据库是通过存储在单独的地方并在数据库上单独运行的SQL文件来设计的。除了该方案与应用程序相关之外,它的一部分还包括插入代码。在源代码中,甚至有两个重复的类DataInitializer.java和UserDataInitializer.java用于此目的。

    3. 数据库模式必须满足要求;出于未知原因或出于什么目的而做了某些事情;

    系统中的角色位于单独的表中,用户也位于单独的表中。顺便说一句,这两个词都可以被数据库保留,因此它们通常写角色/用户并坚持以复数形式使用相同的名称。那么为什么 user.role 文本字段存在于这个模式中呢?

    或者书籍及其发行,有一个描述发行的借阅表。那么为什么 books 表中存在 books.patron_id 呢?为什么是交易而不是贷款历史?贷款表本身已经包含所有必要的信息;您甚至不需要添加单独的历史记录(出于礼貌,您可以添加计划归还日期来跟踪实际归还和延迟)。

    这是如果它是本质上的,但不是本质上的,你仍然可以把它穿上。例如,一本书可能有多个作者和多个流派。尽管数据库允许(COMMENT 选项),但模式中没有注释。状态和其他东西会经历魔法常量,这就是 transactions.transaction_type 的情况,如果它只是文本而不与任何东西绑定的话。

    另一个 patreon 可以被认为是相同的用户。如果该服务希望允许用户自己在终端上搜索书籍,建议为他们提供单独的权限和登录访问权限。然后 patreon 表将作为冗余而自行消失。仅按权限分配,同时员工本身也可以是同一用户。

    在这些情况下,图表可能如下所示。

    在此输入图像描述

    1. 使用 UX/UI

    想象一下自己是该计划的一名员工,并思考什么会方便,什么不会。例如,如果我去一个有书籍的部分,我想以一种方便的方式使用它们。

    我首先看到的是,大多数书籍都无法查看,出于某种原因,我必须单独单击借书按钮,否则我根本无法在列表中找到它们。你可以用过滤器做同样的事情,而不是强迫一个人以不同的形式走来走去。

    如果图书馆有几千本书,那么我会向下滚动到按钮,直到晚上:)为什么它们不在顶部,您是否尝试过向数据库添加五本书以上?超过五个用户?如果我需要交叉搜索,它没有实现。对于这一切,有 Pageable 和 CriteriaBuilder。有一些值得努力的事情。

    没有统计信息,比如每个月借、还、迟还的书有多少本?嗯,有一点adaptable to different devices:仔细检查应用程序在不同屏幕上的行为。

    一般来说,考虑方便性。

    1. 最后是代码本身。

    文件夹和文件结构没有什么太大问题。代码本身也被格式化为控制器/服务/存储库的正常分解。然后很难说检查员希望看到什么,因为有不同的做法和使用方法。这是您需要与检查员核实的地方。

    人们只能推测普通 DTO 的主题,而不是实体,它们应该彼此分离。并且还检查可以填充在那里(注释@Max、@Min、@NotNull 等)。

    Get/Post 不需要有不同的地址;它们可以在一个 @GetMapping("/book/create") + @PostMapping("/book/create") 上正常工作。

    • 3

相关问题

  • wpcap 找不到指定的模块

  • 如何以编程方式从桌面应用程序打开 HTML 页面?

  • Android Studio 中的 R.java 文件在哪里?

  • HashMap 初始化

  • 如何使用 lambda 表达式通过增加与原点的距离来对点进行排序?

  • 最大化窗口时如何调整元素大小?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5