码迷,mamicode.com
首页 > 其他好文 > 详细

管理信息系统 课程设计

时间:2018-06-16 14:31:57      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:version   mem   lse   print   index   课程设计   rest   pre   cms   

一、系统概要说明

  本系统是一个关于新闻中心的系统,系统总体包括头部导航条、底部图片导航、中间主显示区域布局;用户不仅可以注册、登录、注销系统,还可以发布、搜索、点赞、收藏、评论新闻;用户也可以在个人中心中修改密码、头像、上传头像;此外,本系统具有热门文章、推荐文章和文章分类的显示,用户可以根据自己的需要阅读新闻。

二、网站结构设计

技术分享图片

三、模块详细设计

  1. 发布、列表显示:用户在登录后可以在新闻中心发布新闻,新闻会在列表中根据发布时间排序。
  2. 新闻详情信息页:用户可以在首页列表中点击新闻标题进入新闻详情页,在详情页中可以发表自己对这篇新闻的评论。
  3. 评论列表:在详情页中,新闻下方会有用户评论的列表,列表按照评论时间排序。
  4. 个人中心:用户可以修改自己的账号密码、上传和修改头像,还可以查看自己的评论、文章、点赞和收藏。
  5. 搜索:在系统导航栏中,可以输入文章关键字进行搜索。
  6. 文章分类:对发布的新闻进行分类,包括:财经新闻、体育新闻、娱乐新闻三个板块。用户可以选择类别查看自己感兴趣的新闻。
  7. 点赞、收藏功能:在新闻列表中,用户可以对自己感兴趣的文章进行收藏和点赞。
  8. 热门文章、推荐文章:在新闻中心首页会有热门文章和根据用户点击量形成的推荐文章供用户阅读。

四、数据库设计

alembic_version表:

技术分享图片

 

 

banner表:

技术分享图片

 

board表:

技术分享图片

 

cms_role表:

技术分享图片

 

cms_role_user表:

技术分享图片

 

cms_user表:

技术分享图片

 

comment表:

技术分享图片

 

front_user表:

技术分享图片

 

post表:

技术分享图片

 

五、系统实现的关键算法与数据结构

关键算法与数据结构:

bp = Blueprint("front",__name__)

@bp.route(/)
def index():
    board_id = request.args.get(bd, type=int, default=None)
    banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)  # 轮播图的排序优先显示
    boards = BoardModel.query.all()
    page = request.args.get(get_page_parameter(), type=int, default=1)
    start = (page - 1) * config.PER_PAGE
    end = start + config.PER_PAGE

    sort = request.args.get(sort, type=int, default=1)
    posts = None
    pasts = None
    total = 0
    query_obj = None

    if sort == 1:
        query_obj = PostModel.query.order_by(PostModel.create_time.desc())
    elif sort == 2:
        query_obj = PostModel.query.order_by(PostModel.create_time.desc())
    elif sort == 3:
        query_obj = PostModel.query.order_by(PostModel.create_time.desc())

    elif sort == 4:

        query_obj = db.session.query(PostModel).outerjoin(CommentModel).group_by(PostModel.id).order_by(
        func.count(CommentModel.id).desc(), PostModel.create_time.desc())

    if board_id:
        query_obj = query_obj.filter_by(board_id=board_id)
        posts = query_obj.slice(start, end)
        total = query_obj.count()
    else:
        posts = query_obj.slice(start, end)
        total = query_obj.count()

    pagination = Pagination(bs_version=3, page=page, total=total, outer_window=0, inner_window=2)
    context = {
        banners: banners,
        boards: boards,
        posts: posts,
        pagination: pagination,
        current_board: board_id
    }
    return render_template(front/front_index.html, **context)

#详情页
@bp.route(/p/<post_id>/)
def post_detail(post_id):
    post = PostModel.query.get(post_id)
    if not post:
        abort(404)
    return render_template(front/front_pdetail.html,post=post)

#评论
@bp.route(/acomment/,methods=[POST])
@login_required
def add_comment():
    form=AddCommonPostForm(request.form)
    if form.validate():
        content=form.content.data
        post_id=form.post_id.data
        post=PostModel.query.get(post_id)
        if post:
            comment=CommentModel(content=content)
            comment.post=post
            comment.author=g.front_user
            db.session.commit()
            return restful.success()
        else:
            return restful.params_error(没有这篇帖子)
    else:
        return restful.params_error(form.get_error())

@bp.route(/apost/,methods=[GET,POST])
@login_required
def apost():
    if request.method == GET:
        boards = BoardModel.query.all()
        return render_template(front/front_apost.html,boards=boards)
    else:
        form = AddPostForm(request.form)
        if form.validate():
            title = form.title.data
            content = form.content.data
            board_id = form.board_id.data
            board = BoardModel.query.get(board_id)
            if not board:
                return restful.params_error(message=没有这个板块!)
            post = PostModel(title=title,content=content)
            post.board = board
            post.author=g.front_user
            db.session.add(post)
            db.session.commit()
            return restful.success()
        else:
            return restful.params_error(message=form.get_error())

#注册
class SignupView(views.MethodView):
    def get(self):
        return_to = request.referrer
        if return_to and return_to != request.url and safeutils.is_safe_url(return_to):
            return render_template(front/front_signup.html,return_to=return_to)
        else:
            return render_template(front/front_signup.html)

    def post(self):
        form = SignupForm(request.form)
        if form.validate():
            telephone = form.telephone.data
            username = form.username.data
            password = form.password1.data
            user = FrontUser(telephone=telephone,username=username,password=password)
            db.session.add(user)
            db.session.commit()
            return restful.success()
        else:
            print(form.get_error())
            return restful.params_error(message=form.get_error())

#登录
class SigninView(views.MethodView):
    def get(self):
        return_to = request.referrer
        if return_to and return_to != request.url and return_to != url_for("front.signup") and safeutils.is_safe_url(return_to):
            return render_template(front/front_signin.html,return_to=return_to)
        else:
            return render_template(front/front_signin.html)

    def post(self):
        form = SigninForm(request.form)
        if form.validate():
            telephone = form.telephone.data
            password = form.password.data
            remember = form.remeber.data
            user = FrontUser.query.filter_by(telephone=telephone).first()
            if user and user.check_password(password):
                session[config.FRONT_USER_ID] = user.id
                if remember:
                    session.permanent = True
                return restful.success()
            else:
                return restful.params_error(message=手机号或密码错误!)
        else:
            return restful.params_error(message=form.get_error())

bp.add_url_rule(/signup/,view_func=SignupView.as_view(signup))
bp.add_url_rule(/signin/,view_func=SigninView.as_view(signin))

六、成品展示

登录页面:

 

技术分享图片

注册页面:

技术分享图片

首页:

技术分享图片

新闻列表:

技术分享图片

底部图片导航:

技术分享图片

修改密码:

技术分享图片

修改、上传头像:

技术分享图片

收藏、点赞:

技术分享图片

详情页:

技术分享图片

评论列表:

技术分享图片

个人中心:

 

 技术分享图片

管理信息系统 课程设计

标签:version   mem   lse   print   index   课程设计   rest   pre   cms   

原文地址:https://www.cnblogs.com/JUNJUNER/p/9186995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!