管理信息系统 课程设计

一、系统概要说明

      这个系统主要是模仿小米社区网站,可以供大家平时在线上交流使用,这里可以交流各种新闻信息,了解世界的最新动态,参与活动互动,为大家打造一个良好的互动交流平台。

二、网站结构设计

      主要使用了html元素制作web网页、常用网页的HTML元素,在实际的应用场景中,用已学的标签模仿制作。制作自己的导航条,认识css的盒子模型,用div等元素布局形成html文件。完成了登录与注册页面的html+css+js, 夜间模式的开启和关闭,制作网站网页共有元素的父模板html,包括顶部导航,中间区块划分,底部导航,底部说明等。汇总相关的样式形成独立的css文件,使用 js代码形成独立的js文件,形成完整的base.html+css+js。接下来进行flask项目,理解flask项目主程序,使用装饰器,设置路径与函数之间的关系。加载静态文件,父模板的继承和扩展。连接mysql数据库,创建用户模型,通过用户模型,对数据库进行增删改查,完成登录、注册、发布评论等功能。

 

三、模块详细设计

# 登陆功能:
def login_required(func): @wraps(func) def inner(*args,**kwargs): if config.FRONT_USER_ID in session: return func(*args,**kwargs) else: return redirect(url_for('front.signin')) return inner

  

#个人中心
@bp.route('/usercenter/<user_id>/<tag>')
@login_required
def usercenter(user_id,tag):
    user = FrontUser.query.filter(FrontUser.id==user_id).first()
    posts = PostModel.query.filter(PostModel.author_id == user_id).all()
    context = {
        'user':user,
        'posts':posts
    }
    if tag == '1':
        return render_template('front/front_usercenter.html',**context)
    if tag == '2':
        return render_template('front/front_user_apost.html',**context)

 

#搜索功能
@bp.route('/search/')
def search():
    qu = request.args.get('q')
    ques = PostModel.query.filter(
        and_(
            PostModel.title.contains(qu)
        )
    ).order_by('-create_time')
    board_id = request.args.get('bd', type=int, default=None)
    page = request.args.get(get_page_parameter(), type=int, default=1)
    boards = BoardModel.query.all()
    start = (page - 1) * config.PER_PAGE
    end = start + config.PER_PAGE
    total = 0

    query_obj = PostModel.query.order_by(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 = {
        'boards': boards,
        'posts': ques,
        'pagination': pagination,
        'current_board': board_id

    }

    return render_template('front/front_index.html',**context)

  

#点赞功能
@bp.route('/dianzan/',methods=['GET','POST'])
@login_required
def dianzan():
    user_id=g.front_user.id
    post_id=request.form.get('post_id')
    dianzan=DianzanModel(user_id=user_id,post_id=post_id)
    db.session.add(dianzan)
    db.session.commit()
    return redirect(url_for('front.post_detail',post_id=post_id))

  

#用户上传头像
@bp.route('/avatar/<user_id>',methods=['POST'])
@login_required
def updata_acatar(user_id):
    user = FrontUser.query.filter(FrontUser.id == user_id).first()
    f = request.files['img']
    basepath = os.path.dirname(__file__)  # 当前文件所在路径
    upload_path = os.path.join(r'C:\Users\ASUS\Desktop\godlike\static\img', f.filename)  # 注意:没有的文件夹一定要先创建,不然会提示没有该路径
    f.save(upload_path)
    user.avatar = 'img/' + f.filename
    db.session.commit()
    return redirect(url_for('front.usercenter',user_id=user.id,tag=1))

  

#用户修改密码
@bp.route('/resetpwd/',methods=['GET','POST'])
@login_required
def resetpwd():
    if request.method == 'GET':
        return render_template('front/front_resetpwd.html')
    else:
        form = ResetpwdForm(request.form)
        if form.validate():
            oldpwd = form.oldpwd.data
            newpwd = form.newpwd.data
            user = g.front_user
            if user.check_password(oldpwd):
                user.password = newpwd
                db.session.commit()
                # {"code":200,message=""}
                # return jsonify({"code":200,"message":""})
                return restful.success()
            else:
                return restful.params_error("旧密码错误!")
        else:
            return restful.params_error(form.get_error())

  

 

 

四、数据库设计

      主要数据库设计

 

 

五、成果展示

  1. 网站父模板统一布局:头部导航条、底部图片导航、中间主显示区域布局
  2. 注册、登录、注销
  3. 发布、列表显示
  4. 详情页
  5. 评论、列表显示
  6. 个人中心
  7. 搜索,条件组合搜索
  8. 文章分类、显示
  9. 点赞、收藏
  10. 修改密码、头像、上传头像
  11. 我的发布、点赞、收藏、评论
  12. 高级搜索
  13. 热门文章、推荐文章

 

 

 

 

 

 

六、个人总结

      这次的网站设计是上学期学的内容的延续,但是却又复杂很多,框架比之前更大,更是需要好好设计数据库关系等,虽然期间遇到不少问题,最后也都解决了,感谢老师和同学们的帮助。感觉自己还是要很多不足,需要多多努力。

 

posted on 2018-06-16 14:38  025林婷婷  阅读(180)  评论(0编辑  收藏  举报