已知:用户id,机构id
需求:
问题
0通过id获取用户信息(失败返回登录界面)
1判断是否具有答题资格 (chance <2)||(degree !=3)
2具有资格 true
3判断用户所在等级(低0,中1,高2) switch
4进入对应答题页面
从根据用户等级,题库随机搜索20道题 题库包含:id,题目,所有选项,正确答案 ,答题时间,题目等级(核心问题:同一天内不要重复选择)
Select * From question p where p.tid not in(select tid from answer_user_question q where q.uid = 'uid' ) Order By Rand() Limit 20
答题结束,判断正确答题数:大于18,等级+1;否则机会+1 ;
1 2 3 4 。。。
5不具有资格:退出 false
6显示用户等级,排行榜(top100 where degree='3' order by Beat_time)
流程图:
st=>start: Start
e=>end
io1=>intputoutput: getUID,FID(in)
cond1=>condition: getUserByUID
op1=>operation: regain
cond2=>condition: User.degree=3||User.chance=2
io2=>inputoutput: 已通关||机会用玩+Rank
cond3=>condition: User.degree=0
cond4=>condition: User.degree=1
cond5=>condition: User.chance=0
cond6=>condition: User.chance=1
io3=>inputoutput: get20QuestionByDegree(out)
io4=>inputoutput: get20QuestionByDegreeAndNotInLastQuestion(out)
op2=>operation: ThisQuestionSavePaper
op3=>operation: UserAnswer
op4=>operation: SaveUserAnswerInPaper
op5=>operation: caculaterScore
cond7=>condition: Score >= 18
op6=>operation: degree++
op7=>operation: chance++
op8=>operation: Rank
st->io1->cond1
cond1(yes)->cond2
cond2(yes)->cond3
cond3(yes)->cond5
cond5(yes)->io3->op2->op3->op4->op5->cond7
cond7(yes)->op6->cond1
cond7(no)->op7->cond1
cond5(no)->io4->op3->op4->op5->cond7
cond3(no)->cond4
cond4(yes)->cond5
cond4(no)->cond5
cond2(no)->op8->io2->e
cond1(no)->cp1->io1
答:answer_user表:id,uid(用户) ,fid(机构),degree(等级0,1,2,3),chance(机会)(0,1,2),Beat_Time(通过时间),cteate_DATE(创建日期), Modify_Time(修改日期),创建人create_user_id,修改人modify_user_id
question表:tid,describe(问题描述),choose_answerA(选项A),choose_answerB(选项B)choose_answerC(选项C)choose_answerD(选项D),real_answer(正确答案),answer_time(答题时间),type(类型),fid(创建机构)
考虑到拓展性问题修改question表
question : questionId,describe , answer_time,type,fid,is_flag
choose : chooseId, questionId , answer ,is_real,is_flag
user_chooseKey:id,uid,chooseid,questionid
中间表 answer_user_question (id,uid,tid)
考虑不足,再添加一个试卷表Paper,连接用户和用户作答
网友评论