虽然比最早的预定晚了整整一个星期但这核心功能最后一篇终于还是来了。

  如果你已经经历了用户系统的洗礼,相信代码实现应该已经没有太大的难度,所以我们重点关注一下设计好的流程。

一、任务系统

  首先是新建任务的窗口,把各类需要的输入框摆上去,然后调用一个添加任务的接口即可。

  新建成功,跳转至任务列表页面,好像也叫任务大厅? 

  单击任务即可进入任务详情页面

  下方提供了一个按钮,希望加入该任务的用户可以发送参加任务的请求(这里出现了一个小bug,没有负责人应该显示Nobody的,但是因为0号用户强行设置为了System Message,忘记在这改了,小问题,不影响)

  参加竞选的人可以写一小段说明,大概是说我为啥想加入你们这个项目之类的。

  对于发起人的任务详情页,增加了两个标签页,一个可以用来维护任务的主要信息,如更改任务描述,修改DDL,追加金额等,一个可以查看已报名成为负责人的人,可以Accept或者Refuse,Accept之后任务直接进入招募翻译者的状态。如果到DDL了没人报名则任务失败,否则自动选取最早报名的人成为负责人。

  负责人的任务详情界面多出来三个标签页,分别是从候选人里挑翻译者,管理翻译者,提交最终译文给发布者。

  管理翻译者的部分又分为两个标签页,分别是给该翻译者分配任务,以及查看其提交的译文并给出评论。分配任务我是用两个整数记录该翻译者负责的是原文的哪个区间段,并且提供了一个小工具,负责人只需将光标移动到相应位置上按下change就可以自动生成光标的位置。

  翻译者只有一个工作页面,可以对照自己需要翻译的原文输入相应译文,同时下方会显示来自负责人的评论信息。

  翻译者提交译文后,负责人可以直接生成将所有译文直接拼接得到的总译文,可以进行修改,最终提交给发布者。

  发布者可以在管理页看到当前已经提交的译文,如果觉得ok可以将任务设置为完成状态,任务一旦进入完成状态,其他人能看见的就只有任务信息概要,只有发布者多出来一个查看原文和最终译文的窗口。

  大致说一下代码结构。任务对象里面包含4种指针,分别指向该任务的发布者子任务,负责人子任务,译者子任务列表,候选人列表,每个子任务类记录它从属于哪个任务以及对应的是哪个用户。候选人就只记录了用户和竞选词。

  每一类子任务里面有相应的成员函数进行操作,例如发布者子任务里就有修改任务信息,选择候选人的接口。

  事实上任务类里面记录相应角色的用户是谁,然后将子任务的接口整合到大任务里面也没有区别,这里的子任务类有强行体现继承的意味(它要求里让实现这些类我有什么办法= =)。

  在数据库中需要3张表,分别记录任务、候选人、翻译者。候选人和翻译者数据表都需要记录它是哪个用户,从属于哪个任务。也就是所有任务的翻译者都在一张表中。

二、消息系统

  在刚才的例子中,我们可以看见所有的操作都会自动生成对话,例如报名成功,成为候选人,就会自动发送一条我想加入你的任务的信息给对方。

  这个消息界面大约是全程序最难写也是响应最慢的页面实现方式是每一个对话信息都在左侧生成一个小用户框,在右侧生成一个对话页面,但是大部分对话页面都是隐藏掉的,单击左侧的头像或名字可以隐藏当前对话页面,显示新的对话页面。

  具体来说每个用户使用一个消息列表,包含了与他有关联的所有消息。当一个信息产生时,就加入受影响的两个用户的消息列表。当用户登录时,从数据库加载所有跟他有关系的消息,当用户登出时,将其登录期间产生的新消息都放入数据库,事实上相当于每次有用的都只有当前用户的消息列表。

  数据库中记录了该消息的发出者,接收者,内容和是否已读。关于已读的问题注意到用户登录期间除系统提示外不会产生以自己为接收者的信息,所以只需要记录该用户读过来自哪些用户的信息,登出时更新即可,反正按照设计只要它一打开跟这个用户的聊天框所有未读信息都被置为已读。

  实在不知道该写些什么,泥萌有啥问题再来私戳我吧。

c++小学期大作业攻略(四)任务系统+站内信的更多相关文章

  1. c++小学期大作业攻略(一)环境配置

    UPDATE at 2019/07/20 20:21 更新了Qt连接mysql的方法,但是是自己仿照连VS的方法摸索出来的,简单测试了一下能work但是不保证后期不会出问题.如果你在尝试过程中出现了任 ...

  2. c++小学期大作业攻略(二)整体思路+主界面

    写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...

  3. c++小学期大作业攻略(五)基于QSS的样式美化

    这回真的是最后一篇了. 前面说过,我们开发过程中暂时不搭理样式问题,等最后再一起处理,那么现在就是最后处理时刻了!看到网上说QSS跟CSS差不多,我还觉得自己可以干回老本行了,结果用起来发现,QSS是 ...

  4. c++小学期大作业攻略(三)用户系统

    Update at 2019/07/22 14:16 发现一个大坑,我们后期是打算用QSS统一堆样式进行美化的,于是我把之前对QLabel进行的setAlignment全部去掉了,打算统一丢进Qss里 ...

  5. c++小学期大作业攻略(零)建议+代码结构(持续更新)

    当前已经做好的exe,数据库是连服务器的,但是头像是存在本地的文件系统里面: https://cloud.tsinghua.edu.cn/d/059ef6b1f9a149ce879b/files/?p ...

  6. 内连接、左外连接、右外连接、全外连接、交叉连接(CROSS JOIN)-----小知识解决大数据攻略

    早就听说了内连接与外连接,以前视图中使用过.这次自考也学习了,只是简单理解,现在深入探究学习(由于上篇博客的出现)与实践: 概念 关键字: 左右连接 数据表的连接有: 1.内连接(自然连接): 只有两 ...

  7. mac攻略(四) -- brew使用

    1.介绍 brew是一个mac新用户需要了解的必备命令,它是mac下的软件包管理软件,类似centos下的yum.ubuntu下的apt-get,免去了自己手动编译安装的不方便. 很多时候作为一个用户 ...

  8. 小编接地气——第六届中国云计算大会攻略Q&A

    2014年5月20-23日,第六届中国云计算大会在北京召开. 花个1000多元,在工作日请假来參加大会,不能让大家白跑一趟而是物有所值. 小编写了大会攻略Q&A,分享给各位 Q:为什么要參加关 ...

  9. 超时空英雄传说2复仇魔神完全攻略&秘技

    ╓─╥───────────────────────────────────────────────────╥─╖ ║ ║ 超 時 空 英 雄 傳 說 2 ║ ║ ║ ║ --復 仇 魔 神-- ║ ...

随机推荐

  1. Vue.js项目实战-多语种网站(租车)

    首先来看一下网站效果,想写这个项目的读者可以自行下载哦,地址:https://github.com/Stray-Kite/Car: 在这个项目中,我们主要是为了学习语种切换,也就是右上角的 中文/En ...

  2. WPF 枚举使用

    1.model class JX_Unit { public enum SumUnit { KW = 1, L = 2, Kt = 3, } } 2.viewModel public string w ...

  3. Android中获取实时网速(2)

    一.实现思路: 1.Android提供有获取当前总流量的方法 2.上一秒 减去 下一面的流量差便是网速 3.注意计算 二.计算网速的工具类: package imcs.cb.com.viewappli ...

  4. NBIOT实现UDP协议的发送和接收(包含软件升级)

    源码下载: nbiot_module程序(java netbean) -> 提取码 UdpServer程序(C# vs2010) -> 提取码 QQ:505645074 前提条件:开NB卡 ...

  5. 【已采纳】supervisor在服务器端(linux),如何一直运行你的python代码

    正式开始之前,说一下我的项目是放在虚拟环境里的,具体什么是虚拟环境,怎么创建,请自行百度噢!   一.安装 源码安装 先下载最新的supervisor安装包:https://pypi.python.o ...

  6. 多任务学习Multi-task-learning MTL

    https://blog.csdn.net/chanbo8205/article/details/84170813 多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理 ...

  7. odoo10学习笔记十六:定时任务

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189382.html 一:定义定时器数据模型 模型中定义需要用到的字段.定时方法 from odoo im ...

  8. Python从零开始——字典Dict

    一:Python字典知识概览 . 二:字典常见操作 三:字典内置操作函数

  9. idea快捷键的使用

    IntelliJ IDEA 问题解决:1.乱码,主要是快捷键的字样显示乱码 中文字体显示乱码? 2.菜单项等的字体太小,怎么能设置下? -------------------------------- ...

  10. 201871010107-公海瑜《面向对象程序设计(java)》第十周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第十周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...