管理信息系统 课程设计

一、系统概要说明

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

二、网站结构设计

三、模块详细设计

  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'))

六、成品展示

登录页面:

 

注册页面:

首页:

新闻列表:

底部图片导航:

修改密码:

修改、上传头像:

收藏、点赞:

详情页:

评论列表:

个人中心:

 

 

转载于:https://www.cnblogs.com/JUNJUNER/p/9186995.html

如今网络发展越来越迅猛,人们上网的途径也是越来越方便,网络在人们生活中的应用也越来越广泛,使得网络招聘求职成为目前深受招聘者喜爱的一种求职招聘环境。互联网给求职招聘者提供了丰富的资源,为他们创造出一种良好的求职招聘平台,具备现实中人才中介机构的功能。就业招聘系统为应聘者提供了方便,快捷的应聘途径,不仅信息更新快,信息数量多,而且选择余地大。对招聘单位来说,就业招聘系统不仅为他们开辟了招聘人才的新方式,而且使得工作流程更加方便,快捷,高效。使得招聘工作中的人员初选工作变得轻松简单。 对于求职者而言,就业招聘系统有着种种优点。信息量大更新快使得求职者能够更快的得到招聘信息,而通过网站的职位搜索功能可以对工作的类型,地点,待遇进行定位搜索。并且在网上求职可以跨地域求职的优点对于求职者而言,更加方便以免四处奔波。而更方便的是就业招聘系统让求职者可以在个人简历,证书复印,交通通讯等方面省下更多的经历和金钱。 对于招聘者而言,在网上发布招聘信息不仅耗费公司资源少,而且信息的发布和修改都十分方便。也更有利于公司企业实现多元化的招聘人才。而且在传统的招聘会上很难招聘合适的高技术人才,因为传统的招聘只能对某些小型的区域,而且时间仓促,无法实现与就业招聘系统能够面向全国范围招聘,而且有着很长实效的优点相比。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值