最近看诗词大会,感觉里面的选手都超级厉害,于是最近阅读了好多之前读书时代背过好多遍但没有领会意境的诗词, 无比感叹古人的文采。这些都是中华民族无价的瑰宝,于是突发奇想,写一个诗词答题小程序,能让现在的人们也参与进来,领略中国诗词的博大精深。
首先第一步,写个小demo玩一玩:
public class Test1024 {
public static void main(String[] args) {
//map后续会负责统计每题的正确率
HashMap<String,String> map = new HashMap<>();
map.put("君不见高堂明镜悲白发","朝如青丝暮成雪");
map.put("白日依山尽","黄河入海流");
map.put("欲穷千里目","更上一层楼");
//用于判断,后期对接数据库
String[][] strings = new String[3][2];
strings[0][0] = "君不见高堂明镜悲白发";
strings[0][1] = "朝如青丝暮成雪";
strings[1][0] = "白日依山尽";
strings[1][1] = "黄河入海流";
strings[2][0] = "欲穷千里目";
strings[2][1] = "更上一层楼";
// JOptionPane.showMessageDialog(null
//弹出确认框
String gratePerson = null;
JOptionPane.showConfirmDialog(null, "欢迎您,确认开始挑战吗", "诗词挑战大会", JOptionPane.PLAIN_MESSAGE);
//输入框
int score = 0;
//循环答题
for (int i = 0; i < strings.length; i++) {
String str = JOptionPane.showInputDialog("题目:" + strings[i][0] + " 当前分数:" + score + "当前擂主" + gratePerson);
if (!str.equals(strings[i][1])) {
JOptionPane.showConfirmDialog(null,"您没有挑战成功","答错啦",JOptionPane.CLOSED_OPTION);
break;
}else score += 10;
}
if (score == 30) {
gratePerson = JOptionPane.showInputDialog(null,"您已全部通关,分数为:" + score +"大侠请留名","恭喜",JOptionPane.OK_OPTION);
}
}
}
上边就是简单的一个小demo,就是根据诗词的上半句,用户答出诗词的下半句,这只是其中一种玩法,后期还会进行多种玩法的开发,先简单写一下需求文档:
产品功能:
1.游客模式:不登录,直接玩,只能玩一个答题模块,且没有用户积分系统
2.用户注册、登录系统;
3.用户登录后能够根据产品导航进入不同的答题模块,答题模块有:
1. 上句猜下句:共10题,答对一题加10分,满分100分;
2. 一字成诗(根据一个字说出一句包含这个字的诗词)等等。
3. 。。。。。。
4.用户积分系统,每次答题积分的10%计入用户积分,每日上限10分;
数据库设计:
三大模块:
user_info用户登录注册表:
user_id 用户id
user_name 用户名
user_phone 用户手机
user_password 用户密码
user_answer_info用户积分记录表:
user_id 用户id
user_points 用户积分
user_accuracy 用户正确率(分模块)
poem_content 诗词内容模块(存储诗词数据,尽管有的答题模块用不到所有的诗词数据,但是以后答题模块扩展的话可能还要使用到,所以一个数据条将就是一个诗词的全部数据):
poem_title 诗词题目
poem_author 诗词作者
poem_author_dynasty 诗词作者朝代
poem_1 诗词第一句
poem_2 诗词第二句
poem_3 诗词第三句
poem_4 诗词第四句
数据库大概就是这样设计,后续有功能再考虑是否加表或者分表。
技术栈:
前端:vue+elementUI
后端:springboot
三大模块:
1.用户注册(增)、登录(查)、注销(删除)、修改(密码或者用户名的修改)
2.用户积分:积分累加(改,当每次答题之后进行积分的计算与累加),积分过期系统,每天判断计时,积分有效期1年,(删)
3.诗词:增(管理员新增诗词信息,热心用户新增诗词信息(需要审核)),诗词修改、勘误(改),删除(一般用不到),最重要的是查(每次用户进行答题的时候都要进行数据库的查询)
查询有两种方案:
3.1.因为用户每次答题是10道,所以在用户点击开始答题时就进行题目的加载,将10道题目全部查出来进行缓存;
3.2.用户每答一道题,在点击下一道时就会访问数据库进行查找。
然后用户输入答案之后进行检查,检查答案是否正确。
项目周期:预计总工时100h完成,因为每天很忙只有一个小时的空闲时间,差不多在2021年12月下旬开发完成。
今天是1024程序员节,祝各位程序员同志们每天都能早睡早起,健康帅气!身体是最重要的哦!