基于Python的图书馆图书推荐系统【论文、源码、开题报告】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

4 系统总体设计

此次高校智慧图书馆个性化推荐服务系统通过Django框架。Django适合快速构建Web应用[12]。Django将MVC设计模式中的视图分成了View模块和Template模块两部分,将动态的逻辑处理交给View处理,页面通过Template来实现。Model和Template由View连在一起,如此划分后,程序中的每一部分只做一件事情,耦合度大大降低,便于开发者管理[13]

4.1系统总体模块设计

系统中的模块(Model)数据来自于MySQL数据库。为了方便用户和管理员的使用,现在将模块划分为大模块,其中有的包含小模块,保证一个模块完成一个功能,实现松耦合,现对模块进行说明。

  1. 查询借阅模块
  • 图书列表模块:该模块从数据库中将图书取出,以列表的方式展示在首页上,每个条目显示图书名称、图书分类、条形码、图书封面、图书作者、出版社、借阅价格、操作(收藏、评论、借阅)。
  • 分页模块:对于没有明确借阅目标的用户,将图书以每页六个展示给用户,并以页码供用户切换,避免网页过长,提高用户体验。
  • 搜索模块:将图书名称、作者、出版社设置为可搜索字段,以便用户可以精确搜索自己想要的图书。
  • 借阅模块:用户通过借阅按钮可以进行图书借阅。
  1. 后台模块
  • 个人中心:可以修改登录密码和个人信息。
  • 借阅模块:可以查看已借阅的图书详情,进行图书归还的操作。
  • 还书模块:可以查看已有的还书信息。
  1. 管理员模块(Django-Admin)
  • 登录模块:管理员通过输入用户名和密码进行登录。
  • 个人中心模块:可以修改个人信息和登录密码。
  • 用户模块:以列表方式展示用户信息,可以查看用户详情,对用户的注册信息进行审核、修改、删除。
  • 图书信息模块:以列表方式展示图书信息和图书分类名称,可增删改查。
  • 借阅记录模块:以列表方式显示借阅记录详情,并进行审核、修改、删除、查询的操作。
  • 归还记录模块:以列表方式显示归还记录详情,并进行审核、修改、删除、查询的操作。
  • 系统管理模块:以列表方式显示轮播图和读者服务信息,并进行修改、删除的操作。
  1. 注册、登录模块

4.2模型的设计

Django的模型通过ORM映射到数据库中,节约了开发者编写SQL语句的时间。该系统中存在6个自定义模型,下面依次进行介绍。

表4.1 管理员信息

类型

长度

注释

id

bigint

20

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

add time

timestamp

新增时间

表4.2 借阅记录表

类型

长度

注释

id

bigint

20

主键

add time

timestamp

0

创建时间

jieyuedanhao

varchar

200

借阅单号

tush u ming cheng

varchar

200

图书名称

tush u feng mian

varchar

200

图书封面

tus huf en lei

varchar

200

图书分类

gui hai zhuang tai

varchar

200

归还状态

jieyuejiage

varchar

200

借阅价格

tush us hu liang

int

11

图书数量

jieyuetianshu

int

11

借阅天数

jie yue jine

varchar

200

借阅金额

jieyueshijian

date

0

借阅时间

jieyuebeizhu

varchar

200

借阅备注

xue hao

varchar

200

学号

xing ming

varchar

200

姓名

shouji

varchar

200

手机

s fsh

varchar

200

是否审核

shh f

long text

is pay

varchar

200

是否支付

4.3 图书分类表

类型

长度

注释

id

bigint

20

主键

add time

timestamp

创建时间

tus huf en lei

varchar

200
o

图书分类

表4.4 图书信息表

类型

长度

注释

id

bigint

20

主键

add time

timestamp

创建时间

tiao xing ma

varchar

200

条形码

ben guan bian hao

varchar

200

本馆编号

tush u ming cheng

varchar

200

图书名称

tus huf en lei

varchar

200

图书分类

tush u feng mian

varchar

200

图书封面

tushuzuozhe

varchar

200

图书作者

chub an she

varchar

200

出版社

jieyuejiage

int

11

借阅价格

tush us hu liang

int

11

图书数量

tush uwe i zhi

varchar

200

图书位置

tush u xiang qing

long text

图书详情

shangjiariqi

date

上架日期

表4.5 用户表

类型

长度

注释

id

bigint

20

主键

add time

timestamp

创建时间

xue hao

varchar

200

学号

mima

varchar

200

密码

xing ming

varchar

200

姓名

xing bie

varchar

200

性别

to u xiang

varchar

200

头像

shouji

varchar

200

手机

s fsh

varchar

200

是否审核

shh f

long text

o

审核回复

表4.6 图书归还表

类型

长度

注释

id

bigint

20

主键

add time

timestamp

o

创建时间

hai shud an hao

varchar

200

还书单号

tush u ming cheng

varchar

200

图书名称

tus huf en lei

varchar

200

图书分类

tush u feng mian

varchar

200

图书封面

tush us hu liang

int

11

图书数量

jieyueshjian

varchar

200

借阅时间

hai shuri qi

date

还书日期

tush uping fen

varchar

200

图书评分

tush uping jia

long text

O

图书评价

ha is hubei zhu

varchar

200

还书备注

xue hao

varchar

200

学号

xing ming

varchar

200

姓名

shouji

varchar

200

手机

s fsh

varchar

200

是否审核

shh f

long text

0

审核回复

4.3系统的E-R图

     下面展示了该高校智慧图书馆个性化推荐服务系统用户层面的E-R图,通过E-R图,我们很清晰的看到图书管理统中实体与实体之间的联系。如图4.1所示。

图4.1高校智慧图书馆个性化推荐服务系统的E-R图

从管理员的层面来说,管理员可以管理此系统中的所有实体,保证系统的正常运行。

4.4小

本章介绍了高校智慧图书馆个性化推荐服务系统各个模块以及之间的相互联系,从宏观角度上介绍了每一个模块的作用,而后通过表格的方式介绍了每一个模型的属性,最后通过一张ER图将整个模型串联起来,说明了实体间的联系。

5 系统详细设计与实现

5.1系统前台功能模块

用户以游客的身份进入到高校智慧图书馆个性化推荐服务系统前台,在网站首页可以查看首页、图书信息、书友圈、读者服务、个人中心、后台管理等内容,用户如果需要进行其他操作,则需要进行注册及登录,网站首页页面如图5-1所示。

图5-1网站首页界面图

点击注册用户,在注册页面通过输入学号、密码、姓名、手机等信息完成用户注册操作;点击登录,用户通过输入账号和密码,输入无误即可登录到系统前台,用户注册及登录如图5-2所示。

图5-2用户注册及登录界面图

图书信息图书信息搜索页面,用户可以通过输入图书名称和新增图书分类进行搜索的操作;在图书信息详情页面,用户可以查看图书名称、图书图片、条形码等图书信息详情,并进行收藏、评论、图书借阅等操作;具体操作页面下图所示。

图5-3-1图书信息搜索界面图

图5-3-2图书信息详情界面图

图5-3-3图书借阅界面图

5.2管理员功能模块

管理员登录,管理员在进入系统前需要在登录页面根据要求填写用户名和密码,选择角色,点击登录进行登录操作,如图5-7所示。

图5-7管理员登录界面图

管理员登录系统后,可以对个人中心、用户管理、图书分类管理、图书信息管理、借阅记录管理、归还记录管理、管理员管理、书友圈、系统管理功能模块进行相应的操作管理,管理员功能页面如图5-8所示。

图5-8管理员功能界面图

图书信息管理图书信息管理页面管理员可以通过输入图书名称、图书分类进行查询的操作,还可以对图书信息进行新增、修改、查看评论、回复评论、删除等操作,具体操作页面如图5-11所示。

图5-11图书信息管理界面图

5.3 小结

  本章介绍了系统的各个模块和实现功能,并通过图片展示了实现效果,每个模块的编写都以用户为中心,方便用户为原则设计的。

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​

👇下方有我的微信名片👇

  • 47
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你生成一份基于Python图书馆管理系统码。该系统的功能包括:添加、删除和修改书籍信息,检查书籍借阅情况,以及借阅和归还书籍。以下是基本的代码框架: ``` class Book: def __init__(self, id, title, author, genre): self.id = id self.title = title self.author = author self.genre = genre self.available = True def __repr__(self): return f"{self.id} - {self.title} by {self.author} ({self.genre})" class Library: def __init__(self): self.books = [] self.members = {} def add_book(self, id, title, author, genre): book = Book(id, title, author, genre) self.books.append(book) def remove_book(self, id): for book in self.books: if book.id == id: self.books.remove(book) def edit_book(self, id, title, author, genre): for book in self.books: if book.id == id: book.title = title book.author = author book.genre = genre def view_books(self): for book in self.books: print(book) def check_out_book(self, id, member): for book in self.books: if book.id == id: if book.available: book.available = False self.members[member].append(book) print(f"{book.title} has been checked out by {member}.") else: print(f"Sorry, {book.title} is already checked out.") def check_in_book(self, id, member): for book in self.members[member]: if book.id == id: book.available = True self.members[member].remove(book) print(f"{book.title} has been checked in by {member}.") def add_member(self, member): self.members[member] = [] def remove_member(self, member): del self.members[member] def view_members(self): for member in self.members: print(member) ``` 这只是一个简单的框架,你需要根据具体需求添加更多的功能。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值