省钱兄 JAVA 国际版答题系统 · 练习模拟考试系统源码
✅ 支持 Android + iOS + H5 三端全覆盖(国际版核心,不含小程序/公众号)
开发商:西安省钱兄网络科技有限公司
售价:¥18,888(国际版)/ ¥8,889(国内版:小程序+公众号+H5+APP)
新更新:2026年5月13日(互站网在售)
系统整体架构
层级技术选型后端框架Spring Boot 2.7.x + MyBatis-Plus 3.5.x数据库MySQL 8.0 + Redis 7.0(缓存/分布式锁/GEO)用户端UniApp 3.0(Vue3语法)→ 编译为 Android + iOS + H5管理后台Vue3 + ElementPlus + ECharts 数据看板实时通信WebSocket(答题进度实时推送)AI引擎智能推荐算法 + 知识点掌握度分析支付微信支付 + 支付宝 + PayPal/Stripe(国际版支持9种货币)部署JDK 17 + Docker + K8s(自动弹性扩容)
核心功能模块1️⃣ 多角色体系(国际版)java@PostMapping("/login")public Result<LoginVO> login(@Re LoginDTO dto) { User user = userService.login(dto); String token = JwtUtil.generateToken(user.getId(), user.getRole()); https:// role = "student" 学生 / "teacher" 教师 / "admin" 管理员 return Result.success(new LoginVO(token, user.getRole()));}
角色核心功能 学生端(Android/iOS/H5)刷题/模拟考试/错题复习/学习报告/AI推荐 教师端(Android/iOS为主)题库管理/组卷/发布考试/成绩分析/学生管理 平台总后台全局数据看板/分账管理/多语言管理/营销工具
⚠️ 国际版 vs 国内版核心差异:
特性国内版(¥8,889)国际版(¥18,888)端口小程序 + 公众号 + H5 + APPAndroid + iOS + H5(适配PAD)支付微信/支付宝微信/支付宝 + PayPal/Stripe(9种货币)语言中文10种语言(中/英/日/韩/阿拉伯语等)AI推荐知识点推荐AI深度学习推荐 + 学习路径规划合规国内法规GDPR + CCPA 隐私合规定位北斗/GPSGPS + Google Location API
2️⃣ 题库管理系统(核心亮点)⭐java/** * 题库CRUD + 批量导入导出 + 智能分类 */@Servicepublic class ceImpl implements ce { @Autowired private ; @Autowired private RedisTemte<String,Object> redisTemte; /** * 批量导入题目 - Excel/CSV解析 */ @Transactional public Result batchImport(MultipartFile file, Long subjectId) { List<> = excelParser.parse(file); https:// 1. AI自动分类(知识点/难度/题型) for ( q : ) { (subjectId); (aiClassifier.classify(())); https:// easy/medium/hard nts(aiExtractor.extract(())); .insert(q); } https:// 2. 更新题库统计缓存 redisTemte.opsForValue().set("bank:stats:" + subjectId, .countBySubject(subjectId)); return Result.success(.size() + " 题导入成功"); } /** * 智能组卷 - 按知识点/难度/题型自动生成试卷 */ public List<> smartGenerate(ExamDTO dto) { https:// ZSet按难度排序抽取 Set<ZSetOperations.TypedTuple<String>> easy = redisTemte.opsForZSet() .reverseRangeByScoreWithScores(":easy", 0, 100); Set<ZSetOperations.TypedTuple<String>> medium = redisTemte.opsForZSet() .reverseRangeByScoreWithScores(":medium", 0, 100); https:// 按配置比例抽取:简单40% + 中等40% + 困难20% List<> er = new ArrayList<>(); er.addAll(randomPick(easy, dto.getTotal() * 0.4)); er.addAll(randomPick(medium, dto.getTotal() * 0.4)); er.addAll(randomPick(hard, dto.getTotal() * 0.2)); Collections.shuffle(er); https:// 打乱顺序 return er; }}
题型说明 选择题单选/多选,支持图片题✏️ 填空题文本填空,支持正则匹配判分 编程题在线代码编辑器,支持Java/Python/C等,AI判分 判断题对/错 连线题拖拽连线(移动端优化)
| 分类维度 | 示例 |
|----------|
| 知识点 | 数据结构、算法、操作系统、网络等 |
| 难度 | 简单(30%) / 中等(50%) / 困难(20%) |
| 考试类型 | 公务员/考研/四六级/托福雅思/IT认证/驾照等 |
3️⃣ 多种练习模式
模式说明适用场景 随机练习从题库随机抽题,不限数量日常刷题 章节练习按知识点/章节专项练习针对性补强❌ 错题重做自动收集错题,专项复习考前冲刺⏱️ 模拟考试限时/限题数/智能组卷,全真模拟考前模拟 每日一练每天10题,保持学习习惯日常打卡 PK对战实时匹配对手,答题速度+正确率PK趣味学习
java/** * 模拟考试 - 分布式锁防 + 切屏检测 */@Service @Transactionalpublic class ExamServiceImpl implements ExamService { /** * 开始考试 - 防切屏/防多开 */ public Result startExam(Long examId, Long userId) { String lockKey = "exam_lock:" + examId + ":" + userId; try { Boolean locked = redisTemte.opsForValue() .setIfAbsent(lockKey, "1", 180, TimeUnit.MINUTES); if (!locked) return Result.fail("您已有未完成的考试"); Exam exam = examMapper.selectById(examId); if (exam.getStatus() != 1) return Result.fail("该考试尚未开始"); https:// 生成个人试卷(每人题目顺序不同) List<> er = ce.smartGenerate(exam); https:// 记录考试开始时间 examRecordMapper.insert(new ExamRecord(examId, userId, er, LocalDateTime.now())); return Result.success(er); } finally { redisTemte.delete(lockKey); } } /** * 交卷 - 实时判分 + 成绩发布 */ @Transactional public Result submitExam(Long recordId, List<AnswerDTO> answers) { ExamRecord record = recordMapper.selectById(recordId); if (record.getStatus() != 0) return Result.fail("考试已结束"); https:// 1. AI自动判分(选择题/判断题即时出分,编程题AI判分) int score = 0; List<Result> results = new ArrayList<>(); for (AnswerDTO a : answers) { q = .selectById(a.getId()); boolean correct = aiGrader.grade(q, a.getAnswer()); if (correct) score += (); results.add(new Result(q, correct, a.getAnswer(), ())); } https:// 2. 更新成绩 record.setScore(score); record.setTotalScore(record.gets().stream().mapToInt(::getScore).sum()); record.setStatus(1); https:// 已完成 record.setFinishTime(LocalDateTime.now()); record.setAnswers(JSON.toJSONString(results)); recordMapper.updateById(record); https:// 3. 通知用户 webSocketService.pushToUser(record.getUserId(), "exam_finished", record); return Result.success(new ExamResultVO(score, record.getTotalScore(), results)); }}
考试状态流转说明0 待开始考试未到时间 / 未开始1 进行中正在答题(切屏3次自动交卷)2 已交卷等待AI判分3 已完成成绩已发布,可查看解析4 切屏/多开检测触发
4️⃣ AI智能推荐 + 学习路径规划(国际版核心)⭐java/** * AI推荐引擎 - 基于知识图谱的个性化学习路径 */@Servicepublic class AIRecommendServiceImpl implements AIRecommendService { @Autowired private RedisTemte<String,Object> redisTemte; @Autowired private ElasticsearchClient esClient; /** * 智能推荐题目 - 多维评分 */ public List<VO> recommend(Long userId, int limit) { UserProfile profile = getUserProfile(userId); https:// 1. 薄弱知识点优先(正确率<60%的知识点) Set<String> weakPoints = profile.getWeakKnowledgePoints(); https:// AI分析 https:// 2. ES搜索匹配题目 uest request = SearchRe(s -> s .index("") .query(q -> q.bool(b -> b .should(sh -> sh.terms(t -> t.field("knowledgePoints").terms(v -> v.value(weakPoints)).boost(2.0))) .should(sh -> sh.match(m -> m.field("difficulty").query("medium").boost(1.5))) .filter(f -> f.range(r -> r.field("difficulty").gte(JsonData.of(1)).lte(JsonData.of(5)))) ) .sort(so -> so.field(f -> f.field("hotScore").order(SortOrder.Desc))) .size(limit) ); List<VO> result = esClient.search(request, VO.class).hits().stream() .map(h -> h.source()) .collect(Collectors.toList()); return result; } /** * 学习路径规划 - AI生成个性化学习计划 */ public LearningPathVO generatePath(Long userId) { UserProfile profile = getUserProfile(userId); https:// 知识点掌握度热力图 Map<String, Double> masteryMap = profile.getKnowledgeMastery(); https:// {数据结构: 0.8, 算法: 0.4...} https:// 按掌握度排序,推荐学习顺序 List<Map.Entry<String, Double>> sorted = masteryMap.entrySet().stream() .sorted(Map.Entry.comparingByValue()) https:// 掌握度低的优先 .collect(Collectors.toList()); return new LearningPathVO( sorted.stream().map(e -> e.getKey()).collect(Collectors.toList()), calculateDays(profile), profile.getTargetExam() ); }}
推荐维度权重说明 薄弱知识点40%正确率<60%的知识点优先推送⭐ 错题关联25%错题涉及的知识点关联题 难度递进20%从简单→中等→困难逐步提升 遗忘曲线15%基于艾宾浩斯遗忘曲线,定期推送复习
UniApp 前端核心页面
页面路径功能首页pages/index/index推荐题目/每日一练/学习统计/快速入口题库pages/bank/list科目分类/知识点筛选/难度筛选/搜索练习pages/practice/index随机练习/章节练习/错题重做/模式切换考试pages/exam/index考试列表/倒计时/答题界面/交卷成绩pages/score/list历史成绩/成绩分析/错题回顾/解析我的pages/user/user学习报告/收藏/设置/语言切换PK对战pages/pk/index实时匹配/答题PK/排行榜
vue<!-- pages/practice/index.vue - 刷题页面 --><temte> <view class="container"> <!-- 顶部信息栏 --> <view class="top-bar"> <text class="title">{{ currentMode }}</text> <text class="progress">{{ currentIndex }}/{{ totalCount }}</text> <text class="timer" v-if="isExam">⏱️ {{ formatTime }}</text> </view> <!-- 题目卡片 --> <view class="" v-for="(q, idx) in " :key="q.id"> <view class=""> <text class="q-type" :class="q.type">{{ }}</text> <text class="" :class="'diff-' + "> {{ Name }} </text> <text class="">{{ }}分</text> </view> <view class=""> <text>{{ idx + 1 }}. {{ }}</text> <image v-if="" :src="" class=""/> </view> <!-- 选项 --> <view class="options"> <view v-for="(opt, oi) in " :key="oi" class="option" :class="{selected: selectedAnswer === oi, correct: === oi}" @tap="selectAnswer(oi)"> <text class="opt-label">{{ String.fromCharCode(65 + oi) }}</text> <text class="opt-text">{{ opt }}</text> </view> </view> <!-- 答案解析(选后显示) --> <view v-if="showAnswer" class="answer-section"> <view class="result" :class="isCorrect ? 'correct' : 'wrong'"> {{ isCorrect ? '✅ 回答正确!' : '❌ 回答错误' }} </view> <view class="exnation"> <text class="exp-title"> 解析:</text> <text>{{ }}</text> </view> </view> </view> <!-- 底部操作 --> <view class="bottom-bar"> <button class="btn-prev" @tap="prev" :disabled="currentIndex === 0">上一题</button> <button class="btn-submit" v-if="isExam" @tap="submitExam">交卷</button> <button class="btn-next" @tap="next" :disabled="currentIndex === totalCount - 1">下一题</button> </view> </view></temte><script>export default { data() { return { : [], currentIndex: 0, selectedAnswer: -1, showAnswer: false, isCorrect: false, isExam: false, timer: 0, timerInterval: null } }, onLoad(options) { this.isExam = options.mode === 'exam'; this.loads(options.mode); if (this.isExam) this.startTimer(); }, methods: { selectAnswer(oi) { if (this.showAnswer) return; this.selectedAnswer = oi; this.showAnswer = true; this.isCorrect = oi === this.[this.currentIndex].answer; https:// 错题自动加入错题本 if (!this.isCorrect) { this.addToWrongBook(this.[this.currentIndex]); } }, next() { if (this.currentIndex < this..length - 1) { this.currentIndex++; this.selectedAnswer = -1; this.showAnswer = false; } }, async submitExam() { uni.showModal({ title: '确认交卷', content: `已答 ${this.currentIndex + 1}/${this..length} 题,确认交卷?`, success: async (res) => { if (res.confirm) { clearInterval(this.timerInterval); const ans = this..map((q, i) => ({ : q.id, answer: i <= this.currentIndex ? this.selectedAnswer : -1 })); const result = await uest({ url: `${BASE_URL}/exam/submit`, method: 'POST', data: { recordId: this.recordId, answers: ans } }); uni.navigateTo({ url: `/pages/score/result?score=${result.data.data.score}` }); } } }); } }}</script>️ 核心数据库表
表名说明题目表(内容/选项/答案/解析/知识点/难度/题型)_bank题库表(科目/分类/总数)exam考试表(名称/科目/时间/时长/及格分/状态)exam_record考试记录表(用户/成绩/答案/用时/状态)exam_考试-题目关联表(随机组卷)wrong_book错题本表(用户/题目/错误次数/后错题时间)user_profile用户画像表(知识点掌握度/学习时长/正确率)learning_pathAI学习路径表(用户/推荐知识点/计划天数)daily_practice每日打卡表(用户/日期/完成题数/正确率)pk_recordPK对战记录表
s TABLE exam_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, record_no VARCHAR(64) UNIQUE NOT NULL, user_id BIGINT NOT NULL, exam_id BIGINT NOT NULL, score DECIMAL(5,2) NOT NULL, total_score DECIMAL(5,2) NOT NULL, correct_count INT DEFAULT 0, total_count INT DEFAULT 0, duration INT COMMENT '用时(秒)', answers JSON COMMENT '答案详情', status TINYINT DEFAULT 0 COMMENT '0进行中 1已交卷 2已批改 3已完成', start_time DATETIME, finish_time DATETIME, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_user (user_id), INDEX idx_exam (exam_id), INDEX idx_status (status)); 管理后台功能
模块功能 数据看板DAU/新增用户/答题总量/正确率/热门题库/学习时长 ECharts 题库管理增删改查/批量导入/AI自动分类/知识点标签/难度设置 考试管理创建考试/智能组卷/时间设置/防配置/成绩审核 用户管理学生列表/教师列表/学习报告/信用分/封禁 成绩分析班级排名/个人轨迹/知识点掌握热力图/薄弱环节分析 AI设置推荐算法参数/学习路径规则/遗忘曲线配置 财务管理营收统计/微信对账/PayPal对账/会员套餐管理 营销工具会员套餐/限时免费/邀请奖励/拼团/优惠券 国际化10种语言切换/9种货币/GDPR数据管理 数据统计答题量/正确率趋势/完考率/ARPU/留存率
️ 部署架构┌──────────────────────────────────────────────────┐│ Nginx │├──────────┬──────────┬───────────┬──────────────────┤│ UniApp │ UniApp │ UniApp │ UniApp ││ Android │ iOS │ H5 │ │├──────────┴──────────┴───────────┴──────────────────┤│ Spring Boot 集群(微 ││ ┌─────────┐ ┌─────────┐ ┌───────────────────────┐ ││ │题库服务 │ │考试服务 │ │ AI推荐/学习路径服务 │ ││ └─────────┘ └─────────┘ └───────────────────────┘ ││ ┌─────────┐ ┌─────────┐ ┌───────────────────────┐ ││ │用户服务 │ │支付服务 │ │ WebSocket实时推送 │ ││ └─────────┘ └─────────┘ └───────────────────────┘ │├───────────────────────────────────────────────────┤│ MySQL(主从) │ Redis Cluster │ ES │ ││ PayPal/Stripe │ Seata(分布式事务) │├───────────────────────────────────────────────────┤│ Prometheus + Grafana │ Docker + K8s │└───────────────────────────────────────────────────┘ 售价与套餐(2026年5月新)
套餐价格包含内容套餐1(国际版)¥18,888源码 + 技术文档 + 部署文档(不含搭建/维护)套餐2(国际版)¥20,888源码 + 文档 + 首次搭建 + 1年维护更新 + 技术支持套餐1(国内版)¥8,889源码 + 文档 + 部署文档(小程序+公众号+H5+APP)套餐2(国内版)¥10,889源码 + 文档 + 搭建 + 1年维护 + 技术支持
后续年度技术服务费:¥2,000/年(含免费系统升级)
⚠️ 源码具有可复制性,不支持恶意退款
购买申明:禁止转卖/禁止开源社区传播/研究商业学习使用
官方联系方式(已核实 ✅)
渠道信息 ✅电话 ✅(西安省钱兄网络科技有限公司)邮@163.comCEO马晓东(96年创业者,西安科技大学毕业)公司西安省钱兄网络科技有限公司地址陕西省西安市高新区高新四路13号朗臣大厦A座11808演示站联系 QQ 710070994 获取管理后台 + 用户端演示地址购买链接互站网 https://www.huzhan.com/ 搜索"省钱兄国际版答题系统"
系统亮点总结
特性说明✅ 三端覆盖Android + iOS + H5,UniApp一套源码✅ AI智能推荐知识图谱 + 遗忘曲线 + 多维评分,个性化学习路径✅ 多种练习模式随机/章节/错题/模拟考试/PK对战/每日一练✅ 智能组卷AI按知识点/难度/题型自动生成试卷,千人千卷✅ 防系统切屏检测/多开检测/人脸验证(国际版)✅ 即时判分选择题即时出分 + 编程题AI判分 + 详细解析✅ 国际支付PayPal/Stripe支持9种货币,资金托管✅ 多语言10种语言一键切换,AI实时翻译✅ GDPR合规欧盟隐私保护,数据可导出/删除✅ 数据看板ECharts实时展示DAU/答题量/正确率/知识点热力图✅ 高并发Sentinel限流 + K8s自动弹性扩容✅ 安全合规HTTPS+AES-256+RSA-2048+GDPR/CCPA
获取源码:搜索 互站网(huzhan.com)"省钱兄国际版答题系统练习模拟考试" 或直接联系官方 QQ 710070994 获取演示站体验后下单。该系统与省钱兄的"国内版答题系统(¥8,889)"同属一个产品矩阵,国际版核心差异在于:支持 PayPal/Stripe 国际支付、10种多语言、Android+iOS 原生APP优化、Google Maps 国际地图、GDPR/CCPA 隐私合规、AI深度学习推荐引擎。相比国内版,国际版更适合出海教育创业者/海外华人学习平台/跨境培训机构。
省钱兄科技,国际版答题系统,答题练习,模拟考试