# 信息技术知识大赛练题系统 **Repository Path**: oyps/information-technology-knowledge-contest-practice-system ## Basic Information - **Project Name**: 信息技术知识大赛练题系统 - **Description**: 信息技术知识大赛练题系统 - 海量题库 高效练题 - **Primary Language**: HTML/CSS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-30 - **Last Updated**: 2023-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: 2021年9月 ## README # 信息技术知识大赛练题系统 > 海量题库 高效练题 ## 功能特点 * 支持在线答题 * 支持单题实时批改 * 提供以下题库 ```json ["C", "计算机应用基础"], ["Z", "操作系统"], ["L", "离散数学"], ["4", "JavaScript语言"], ["J", "数据结构"], ["D", "多媒体技术"], ["Q", "知识产权"], ["5", "C#语言"], ["K", "数据库"], ["Y", "硬件系统"], ["1", "C语言"], ["6", "Python语言"], ["W", "网络"], ["H", "移动互联应用"], ["2", "C++语言"], ["R", "软件工程"], ["S", "数据表示和应用"], ["3", "Java语言"] ``` * 提供xxx ## 站点预览 * http://ouyangpeng.top/app/xxx/ ## 用到的库 * Bootstrap * jQuery.js * clipboard.js * hls.js ## 更新题库方法 * 首先下载最新题库Excel文件 * 将内容区所有空单元格填充为“鹏为空” * 将所有单元格内部换行替换为“鹏换行” * 将内容区所有内容复制,并粘贴至文本编辑器 * 清除不正常换行,保证一题一行 * 将所有制表符替换为“oypttt” * 清除首尾无关空行和内容 * 运行aaa.php,检查各列表项是否满足分割为数组的条件,确保各行含有9项数据 * 运行data.php,将文本数据转换为json数据,并生成bank.json * 题库就此更新完毕 ## 代码片段 ### Bootstrap4随机颜色 ```javascript function randcolor() { var list = ["primary", "secondary", "success", "danger", "warning", "info", "dark"]; return list[Math.round(Math.random() * (list.length - 1))]; } ``` ### hash多页面聚合 ```javascript function changePage(hash) { window.location.hash = hash; } window.addEventListener("hashchange", function () { // 获取hash值 var hash = window.location.hash; if (hash == "#page1" || hash == "") { $("#page1").fadeIn(500); $("#page2").hide(); $("#page3").hide(); } else if (hash == "#page2") { $("#page1").hide(); $("#page2").fadeIn(500); $("#page3").hide(); } else if (hash == "#page3") { $("#page2").hide(); $("#page1").hide(); $("#page3").fadeIn(500); } // 根据获取的hash做相应的操作 }) ``` ### 将尖括号转换为实体 ```javascript function stringToEntity(string) { return string.replace(//g, '>').replace(/\n/g, '
') } ``` ### JavaScript分页操作 * JavaScript ```javascript // 计算总页码 if (count < size) { // 总项数小于单页项数 var allPage = 1 } else if (count % size == 0) { // 不含余数 var allPage = count / size } else { // 含余数 var allPage = (count - num % size) / size + 1 } var fenyeList = new Array() if (allPage <= 6) { fenyeList = ['上一页', page + '/' + allPage, '下一页'] } else if (page == 1) { fenyeList = [1, 2, 3, 4, 5, '下一页', allPage] } else if (page == 2 || page == 3) { fenyeList = ['上一页', 1, 2, 3, 4, 5, '下一页', allPage] } else if (page == (allPage - 2) || page == (allPage - 1)) { fenyeList = [1, '上一页', (allPage - 4), (allPage - 3), (allPage - 2), (allPage - 1), allPage, '下一页'] } else if (page == allPage) { fenyeList = [1, '上一页', (allPage - 4), (allPage - 3), (allPage - 2), (allPage - 1), allPage] } else { fenyeList = [1, '上一页', (page - 2), (page - 1), page, (page + 1), (page + 2), '下一页', allPage] } var fenyeHtml = '' for (var i = 0; i < fenyeList.length; i++) { fenyeHtml += '
  • ' + fenyeList[i] + '
  • ' } // 设置分页控件 $('#page2 .pagination').html(fenyeHtml).show() // 设置页码按钮点击事件 $('#page2 .pagination a.page-link').unbind().click(function () { var wantToPage = $(this).text() if (wantToPage == '上一页' && page > 1) { scrollTop() page-- loadQuestion(type, page, 30, null, count) } else if (wantToPage == '下一页' && page < allPage) { scrollTop() page++ loadQuestion(type, page, 30, null, count) } else if (wantToPage != '上一页' && wantToPage != '下一页') { scrollTop() // 之前忘记转换为数字了,导致页码加一时直接拼接 loadQuestion(type, parseInt(wantToPage), 30, null, count) } }) ``` * HTML ```html ``` ## 作者 * 欧阳鹏 ## 开发时间 * 2021年9月16日