基于Python的信息科普平台【数据库设计、论文、源码、开题报告】

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

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

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

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

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

 第4章 系统设计

4.1 基于Django的鱼类知识网站功能结构设计

基于Django的鱼类知识网站根据现实生活中的实际情况对系统用户分为前台和后台两部分,前台部分主要包括首页,注册登录,鱼类知识,视频信息,交流论坛,新闻公告,留言板,后台管理等功能,后台部分包括系统首页,个人中心,用户管理,鱼类分类管理,鱼类知识管理,视频类型管理,视频信息管理,留言板,交流论坛,系统管理等功能,通过这些功能基本可以满足鱼类知识科普的需要。具体如下图4-1所示

图4-2 基于Django的鱼类知识网站功能结构图

4.2 基于Django的鱼类知识网站数据库设计

表 4-1 系统数据库整体信息表

本系统共包含15个表:分别是关于我们表,配置文件表,视频信息评论表表,鱼类知识评论表表,交流论坛表,留言板表,新闻公告表,视频类型表,视频信息表,收藏表表,关于我们表,用户表表,用户表,鱼类分类表,鱼类知识表等信息表

表名

说明

功能

aboutus

关于我们

主要用来存放关于我们的相关内容

config

配置文件

主要用来存放配置文件的相关内容

discussshipinxinxi

视频信息评论表

主要用来存放视频信息评论表的相关内容

discussyuleizhishi

鱼类知识评论表

主要用来存放鱼类知识评论表的相关内容

forum

交流论坛

主要用来存放交流论坛的相关内容

messages

留言板

主要用来存放留言板的相关内容

news

新闻公告

主要用来存放新闻公告的相关内容

shipinleixing

视频类型

主要用来存放视频类型的相关内容

shipinxinxi

视频信息

主要用来存放视频信息的相关内容

storeup

收藏表

主要用来存放收藏表的相关内容

systemintro

关于我们

主要用来存放关于我们的相关内容

users

用户表

主要用来存放用户表的相关内容

yonghu

用户

主要用来存放用户的相关内容

yuleifenlei

鱼类分类

主要用来存放鱼类分类的相关内容

yuleizhishi

鱼类知识

主要用来存放鱼类知识的相关内容

表 4-2 关于我们信息(aboutus)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

title

varchar(200)

NO

NO

标题

NO.4

subtitle

varchar(200)

NO

NO

副标题

NO.5

content

longtext

NO

NO

内容

NO.6

picture1

longtext

NO

NO

图片1

NO.7

picture2

longtext

NO

NO

图片2

NO.8

picture3

longtext

NO

NO

图片3

表 4-3 配置文件信息(config)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

name

varchar(100)

NO

NO

配置参数名称

NO.3

value

varchar(100)

NO

NO

配置参数值

表 4-4 视频信息评论表信息(discussshipinxinxi)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

refid

bigint(20)

NO

NO

关联表id

NO.4

userid

bigint(20)

NO

NO

用户id

NO.5

avatarurl

longtext

NO

NO

头像

NO.6

nickname

varchar(200)

NO

NO

用户名

NO.7

content

longtext

NO

NO

评论内容

NO.8

reply

longtext

NO

NO

回复内容

表 4-5 鱼类知识评论表信息(discussyuleizhishi)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

refid

bigint(20)

NO

NO

关联表id

NO.4

userid

bigint(20)

NO

NO

用户id

NO.5

avatarurl

longtext

NO

NO

头像

NO.6

nickname

varchar(200)

NO

NO

用户名

NO.7

content

longtext

NO

NO

评论内容

NO.8

reply

longtext

NO

NO

回复内容

表 4-6 交流论坛信息(forum)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

title

varchar(200)

NO

NO

帖子标题

NO.4

content

longtext

NO

NO

帖子内容

NO.5

parentid

bigint(20)

NO

NO

父节点id

NO.6

userid

bigint(20)

NO

NO

用户id

NO.7

username

varchar(200)

NO

NO

用户名

NO.8

avatarurl

longtext

NO

NO

头像

NO.9

isdone

varchar(200)

NO

NO

状态

表 4-7 留言板信息(messages)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

userid

bigint(20)

NO

NO

留言人id

NO.4

username

varchar(200)

NO

NO

用户名

NO.5

avatarurl

longtext

NO

NO

头像

NO.6

content

longtext

NO

NO

留言内容

NO.7

cpicture

longtext

NO

NO

留言图片

NO.8

reply

longtext

NO

NO

回复内容

NO.9

rpicture

longtext

NO

NO

回复图片

表 4-8 新闻公告信息(news)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

title

varchar(200)

NO

NO

标题

NO.4

introduction

longtext

NO

NO

简介

NO.5

picture

longtext

NO

NO

图片

NO.6

content

longtext

NO

NO

内容

表 4-9 视频类型信息(shipinleixing)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

shipinleixing

varchar(200)

NO

NO

视频类型

表 4-10 视频信息(shipinxinxi)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

shipinbianhao

varchar(200)

NO

NO

视频编号

NO.4

shipinmingcheng

varchar(200)

NO

NO

视频名称

NO.5

shipinleixing

varchar(200)

NO

NO

视频类型

NO.6

shipinfengmian

longtext

NO

NO

视频封面

NO.7

shipin

longtext

NO

NO

视频

NO.8

shipinjieshao

longtext

NO

NO

视频介绍

NO.9

faburiqi

date

NO

NO

发布日期

NO.10

clicktime

datetime

NO

NO

最近点击时间

NO.11

clicknum

int(11)

NO

NO

点击次数

表 4-11 收藏表信息(storeup)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

userid

bigint(20)

NO

NO

用户id

NO.4

refid

bigint(20)

NO

NO

商品id

NO.5

tablename

varchar(200)

NO

NO

表名

NO.6

name

varchar(200)

NO

NO

名称

NO.7

picture

longtext

NO

NO

图片

NO.8

type

varchar(200)

NO

NO

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

NO.9

inteltype

varchar(200)

NO

NO

推荐类型

NO.10

remark

varchar(200)

NO

NO

备注

表 4-12 关于我们信息(systemintro)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

title

varchar(200)

NO

NO

标题

NO.4

subtitle

varchar(200)

NO

NO

副标题

NO.5

content

longtext

NO

NO

内容

NO.6

picture1

longtext

NO

NO

图片1

NO.7

picture2

longtext

NO

NO

图片2

NO.8

picture3

longtext

NO

NO

图片3

表 4-13 用户表信息(users)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

username

varchar(100)

NO

NO

用户名

NO.3

password

varchar(100)

NO

NO

密码

NO.4

role

varchar(100)

NO

NO

角色

NO.5

addtime

timestamp

NO

NO

新增时间

表 4-14 用户信息(yonghu)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

yonghuzhanghao

varchar(200)

NO

NO

用户账号

NO.4

mima

varchar(200)

NO

NO

密码

NO.5

yonghuxingming

varchar(200)

NO

NO

用户姓名

NO.6

xingbie

varchar(200)

NO

NO

性别

NO.7

lianxifangshi

varchar(200)

NO

NO

联系方式

NO.8

touxiang

longtext

NO

NO

头像

表 4-15 鱼类分类信息(yuleifenlei)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

yuleifenlei

varchar(200)

NO

NO

鱼类分类

表 4-16 鱼类知识信息(yuleizhishi)表

编号

数据字段名

数据类型

允许空

是否主键

说明

NO.1

id

int

NO

PK

主键

NO.2

addtime

timestamp

NO

NO

创建时间

NO.3

zhishibiaoti

varchar(200)

NO

NO

知识标题

NO.4

yuleifenlei

varchar(200)

NO

NO

鱼类分类

NO.5

zhishifengmian

longtext

NO

NO

知识封面

NO.6

zhishifujian

longtext

NO

NO

知识附件

NO.7

zhishijianjie

longtext

NO

NO

知识简介

NO.8

faburiqi

date

NO

NO

发布日期

NO.9

clicktime

datetime

NO

NO

最近点击时间

NO.10

clicknum

int(11)

NO

NO

点击次数


第五章 系统详细设计

5.1 基于Django的鱼类知识网站前台部分设计

5.1.1 系统首页

本系统是一个专门针对鱼类知识的网站,为了满足用户的操作习惯,我们在页面设计的时候大量的参考了一些成功网站的布局。在首页布局的时候我们采用的是三段式的布局,在头部是网站的导航菜单,方便用户对各类功能进行点击和操作,中间部分是一些最新鱼类知识资讯和鱼类知识信息,基于Django的鱼类知识网站首页部分具体效果如图5-1所示

图5-1 基于Django的鱼类知识网站首页界面

5.1.2用户注册

在本基于Django的鱼类知识网站是为了鱼类知识而开发的,所以网站内可能会有大量的用户,如果不对用户进行区分的话用户在发帖和评论等操作的时候不能有效区分用户的信息。在注册的时候输入用户名+密码+姓名+联系电话等信息即可完成注册,其中电话部分我们进行了验证,必须是手机号码格式才可以注册,否则会给出相应的提示,并要求重新输入基于Django的鱼类知识网站用户注册效果如图5-2所示

图5-2 基于Django的鱼类知识网站用户注册界面

5.1.3用户登录

基于Django的鱼类知识网站的用户在注册成功之后账号相关的信息就已经存在了系统中的数据库里了,但是如果不登录还是不能有效的区分用户的发帖和评论信息的,这时候就需要用户登录后才可以进行发帖和评论相关操作了。在登录界面输入注册时的账号+密码,然后点击登录即可完成登录相关操作,基于Django的鱼类知识网站用户登陆界面如图5-3所示

图5-3 基于Django的鱼类知识网站用户登陆界面

5.1.4鱼类知识资讯

为了让用户了解更多的和鱼类知识相关的新闻资讯我们开发了鱼类知识资讯模块,在鱼类知识资讯模块中用户可以看到最新的一些鱼类知识相关的鱼类知识信息,基于Django的鱼类知识网站鱼类知识资讯列表界面效果如图5-4所示

图5-4 基于Django的鱼类知识网站鱼类知识资讯列表界面

当用户在鱼类知识信息中点击了鱼类知识信息的标题之后可以看到鱼类知识相关鱼类知识信息的详细信息,基于Django的鱼类知识网站鱼类知识资讯详情界面如图5-5所示

 

图5-5 基于Django的鱼类知识网站鱼类知识资讯详细界面

5.2 基于Django的鱼类知识网站后台部分设计

5.2.1管理员登录模块的实现

基于Python的基于Django的鱼类知识网站后台主要是给管理员使用的,管理员需要登录以后才可以对系统内的一些功能进行操作,所以系统打开之后的第一个界面就是登录界面,在登录界面中输入不同类型的账号和密码并选择角色即可完成登录,后台登录界面5-11所示

图5-11 基于Django的鱼类知识网站管理员登录页面

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();
    }
}

源码获取

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

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

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

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

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

👇下方有我的微信名片👇

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值