开源免费的PHP无纸化模拟考试系统,基于 PHPEMS v6.0 优化。本版本重点修复BUG(包括所有非 E_NOTICE 级别错误提示),并根据需要优化新增一些功能。如果要使用旧版本请参考 PHPEMS v5.0。

因使用部分第三方扩展包,系统要求php>=7.0,默认集成扩展包如下:

扩展包

说明

支持 dd()、dump() 等方法调试代码

缓存驱动 Redis 基础扩展包,使系统支持Redis缓存

开源的微信非官方 SDK,方便在考试系统开发微信服务号相关功能

一款满足你的多种发送需求的短信发送组件

优化&新增功能

新增使用composer,可直接安装第三方扩展包

为所有数据表定义 Model ,数据库操作更灵活方便

可在线数据库迁移,请参考 tasks 目录下 Database.php

新增部分字符串和数组辅助函数,如:dd()

新增 Redis 缓存支持,请参考 tasks 目录中的 Cache.php

使用 ORM 操作数据库示例:

// 获取userid为1的用户

$user = \Model\User::find(1);

// 获取用户名

echo $user->username;

// 调试输出用户所有信息

dd($user->getAttributes());

// 获取用户的考试记录

$eh = $user->examHistories;

foreach ($eh as $result){

print_r($result->getAttributes());

}

// 获取用户开通的考场

$ob = $use->basics;

foreach($ob as $basic)

{

// 考场信息

print_r($basic->getAttributes());

// 开通时间等信息

print_r($basic->pivot->getAttributes());

}

// 获取basicid为1的考场

$basic = \Model\Basic::find(1);

// 获取考场考试科目信息

print_r($basic->subject->getAttributes());

// 获取考场的考试记录

$eh = $basic->examHistories;

foreach ($eh as $result){

print_r($result->getAttributes());

}

// 获取开通考场的用户

$ou = $basic->users;

foreach($ou as $user)

{

// 用户信息

print_r($user->getAttributes());

// 开通时间等信息

print_r($user->pivot->getAttributes());

}

// 更多方法参考 model 目录

使用 Redis 缓存数据库示例:

$client = new Predis\Client('tcp://127.0.0.1:6379');

$client->set('phpems:questions', json_encode(Cache::questions()));

$client->set('phpems:knows', json_encode(Cache::knows()));

安装和配置

安装

方式1:使用 composer 创建项目

通过 composer 指令直接创建项目

composer create-project --prefer-dist phpems/phpems phpems

如果要安装 v5.0 版本,请使用以下指令:

composer create-project --prefer-dist phpems/phpems phpems "5.*"

方式2:使用 git 创建项目

使用 git 复制项目后使用 composer 安装依赖

git clone https://github.com/oiuv/phpems.git

cd phpems && composer install

cd lib && cp config.inc.example.php config.inc.php

配置

安装完成后,根据需要修改 lib 目录下的 config.inc.php 文件,配置数据库,然后使用 tasks 目录下的数据库文件 phpems.sql 创建数据库,项目上线后务必删除 tasks 目录。

如果是 phpems v5.0 版本升级,请使用 tasks 目录下的 v5v6.sql 升级数据库。

如果是 linux 系统,需要保证 data 目录具有可写权限,否则网站无法正常访问。

默认管理员账号:peadmin,密码:peadmin

源码默认关闭错误提示,如需调试请修改 config.inc.php 中 DEBUG 为 true。

使用

考试设置

考试模块:考试设计—>科目管理(ID影响教师阅卷)—>章节—>知识点(ID影响试卷生成)

考试模块:试题管理—>普通试题管理—>添加试题—>CSV导入(对应知识点ID)

考试模块:试卷管理—>随机组卷—>试卷管理—>随机组卷

考试模块:考试设计—>考场列表—>添加考场(至此步骤考试设置完毕)

教师管理:

教师管理—>用户模块—>模型管理—>教师模型(字段管理)—>Teacher_subjects(修改字段)—>可选值列表(科目名称=ID)—>提交;

用户管理—>用户名—>修改(可管理科目打钩);

登录—>成绩管理

开启微信自动登录

config.inc.php中 USEWX 值改为 true,并配置好微信服务号的 appid 和 appsecret 即可。

第一次从服务号或小程序登录系统会自动绑定微信和考试账号,以后从服务号或小程序进入直接自动登录。

关于系统二次开发的说明:

PHPEMS 文件夹结构

api 支付相关API接口目录

app 项目的核心代码目录,应用的所有模块的类(cls)、控制器(controller)和视图模板(tpls)都在这里,其中 app 对应PC端、 phone 对应移动端、 master 对应管理后台、 teach 对应教师后台

data 缓存和日志目录,需要可写权限

files 上传的附件和公共静态文件目录,需要可写权限

lib 系统公共类和方法目录

model 数据模型目录,使用 ORM 操作数据库更为便捷

tasks 示例数据库和示例文件目录,项目上线后最好删除

PHPEMS 路由说明

项目路由入口文件为根目录下的 index.php,如:

index.php?user-phone-login-index

以上路由访问的是 app 目录下 user/controller/login.phone.php 文件的 index 方法

PHPEMS 模板说明

视图模板在 app 文件夹下模块中的 tpl 文件夹中,编译文件在 /data/compile/目录。

/data/compile/seminar/tpls/app/%%cpl%%index.php

以上编译文件对应的是 app 目录下 seminar/tpls/app/index.tpl 文件。

PHPEMS smarty模板标签

变量

{x2;$var}

该标签会被翻译为该变量必须为在php程序中被$this->tpl->assign过后的变量。

{x2;v:var}

该标签会被翻译为该变量是在php模板中产生的临时变量,不需要assign

{x2;c:const}

该标签用于显示常量,注意,在以后的if,tree,loop等标签中,常量不需要c:,只在显示常量的本标签中需要c:

循环遍历:tree

tree标签是一个组合标签,用于遍历一个数组。规则如下

{x2;tree:遍历变量,临时指针变量,循环次数变量}

{x2;endtree}

逻辑判断:if

if标签格式:

{x2;if:判断语句}

......

{x2;elseif:判断语句}

......

{x2;else}

......

{x2;endif}

字符处理

date

将unix时间戳转换为具体时间,用法{x2;date:变量,'Y-m-d H:i:s'}

substring

字符串截取,用法{x2;substring:变量,长度数字}

realhtml

取消转义并显示带html的内容,{x2;realhtml:变量}

数据表说明

数据表

说明

basic

考场表

examhistory

考试记录表

exams

试卷表

examsession

会话表

favor

收藏表

knows

知识点表

sections

章节表

subject

科目表

openbasics

开通的考场记录表

quest2knows

知识点与试题关系表

questionrows

题冒题表

questions

试题表

questype

题型表

session

用户会话表

user

用户表

user_group

用户组表

module

模型表

module_fields

模型字段表

不使用model生成CURD sql

// 查询

// $sql = 'SELECT '.$db_fields.' FROM '.$db_tables.' WHERE '.$db_query.$db_groups.$db_orders.' LIMIT '.$db_limits;

$args = [

$db_fields, // 多列使用数组

$db_tables, // 多表使用数组

$db_query, // [['AND','usergroupid = 1'],['AND','userid >= :userid','userid',$userid]]

$db_groups, // 可选

$db_orders, // 可选

$db_limits, // 可选

];

$sql = $this->pdosql->makeSelect($args);

return $this->db->fetch($sql);

// 新增

// $sql = 'INSERT INTO '.$db_tables.' ('.implode(',', $db_field).') VALUES ('.implode(',', $db_value).')';

args = [

'username' => $username,

'userpassword' => md5($userpassword),

'useremail' => $email

];

$data = ['user', $args];

$sql = $this->pdosql->makeInsert($data);

$this->db->exec($sql);

return $this->db->lastInsertId();

// 更新

// $sql = 'UPDATE '.$db_tables.' SET '.$parsql.' WHERE '.$db_query.$db_groups.$db_orders.' LIMIT '.$db_limits;

args = ['useremail' => $email];

$data = ['user', $args, [['AND', 'userid = :userid', 'userid', $userid]]];

$sql = $this->pdosql->makeUpdate($data);

return $this->db->exec($sql);

// 删除

// $sql = 'DELETE FROM '.$db_tables.' WHERE '.$db_query.$db_groups.$db_orders.' LIMIT '.$db_limits;

$data = ['user', [['AND', 'userid = :userid', 'userid', $userid]]];

$sql = $this->pdosql->makeDelete($data);

return $this->db->exec($sql);

版权说明

PHPEMS属于开源免费程序,开发者为火眼,您可以自由修改其中属于PHPEMS原创部分的代码,原则上您只要不通过出售PHPEMS相关源代码盈利,即可免费使用本软件。

本系统基于火眼的 PHPEMS6.0(20190924) 修改,如果在安装和使用中发现问题,欢迎反馈或联系我(QQ:7300637),但如果需要付费定制,请直接联系版权所有者火眼(QQ:278768688)。

使用交流QQ群

群1:2736999

群2:274154600

群3:391191029

群4:438228249

群5:264590257

群6:466859119

群7:2554408

群8:479709205

群9:474900152

群10:498555033

phpemspro模拟考试无试题_GitHub - BoobooWei/phpems: 基于开源免费的PHP无纸化模拟考试系统phpems 6.0优化,适配php7.3。...相关推荐

  1. phpemspro模拟考试无试题_GitHub - maosea0125/phpems: PHPEMS在线模拟考试系统

    2015-12-01(3.1)更改功能 1.修复3.0中已知bug 2.教师端增加成绩分析统计 3.优化系统安全性 4.编辑器增加上传音频模块 2015-06-29(3.0)更改功能 1.数据库连接更 ...

  2. phpemspro模拟考试无试题_在线考试系统PHPEMS小白安装教程

    最近一直想做一个考试系统,当然,不是自己开发,是用别人已经开发好的程序来搭建,尝试了许久找了许久,还是没有符合自己期待的那种程序,看来只有自己学编程上路了.在GitHub和码云上找到两个比较优秀的源码 ...

  3. exls导入数据库 php_建站程序推荐:开源免费的PHP在线模拟考试系统PHPEMS可商用...

    现在最新版为PHPEMS6.0和PHPEMS PRO1.0 该系统基于PHP进行开发,是一款集在线考试.视频播放在线支付等功能 PHPEMS6.0 属于开源免费程序,您可以自由修改其中属于PHPEMS ...

  4. [开源免费] ZXTouch - iOS11-14 iOS13 模拟触摸 模拟点击 比触动精灵和AutoTouch更好用的插件

    由于目前市面上能找到的模拟触摸库都只支持到iOS11,而主流的iOS版本已经到了14,于是自己写了一个模拟触摸.模拟点击的库,支持iOS11 - 14 Github链接:https://github. ...

  5. 开发流媒体服务器_Github选出10大开源免费的RTSP流媒体项目

    Github选出 TOP 10开源免费的RTSP流媒体项目,以下是具体排名及星星数. 1.Easydarwin 星星数:4,307 Easydarwin是国内团队开发的开源流媒体框架.它是基于Go语言 ...

  6. opencv python考勤_GitHub - liqq1228/python-opencv: 基于python opencv人脸识别的员工考勤系统...

    项目及作者说明 一个基于 Opencv.dlib 人脸识别的员工考勤系统,作者某双一流A类大学里的一流学生,写于2018/09/,Python 学习期间. 开源版及商业版说明 开源版 商业版 人脸录入 ...

  7. python人脸考勤系统_GitHub - jykcc/python-opencv: 基于python opencv人脸识别的员工考勤系统...

    项目及作者说明 一个基于 Opencv.dlib 人脸识别的员工考勤系统,作者某双一流A类大学里的一流学生,写于2018/09/,Python 学习期间. 开源版及商业版说明 开源版 商业版 人脸录入 ...

  8. 全国中小学教师计算机水平考试,中小学教师计算机水平考试笔试试题

    中小学教师计算机水平考试笔试试题 2008年8月16日中小学教师计算机水平考试试题 一.单选题 1.( c )是输入设备. A.绘图仪 B.扫描仪 C.键盘 D.手写笔 2.下列数中最小的数是( a ...

  9. 为什么用计算机题库打开的是用WPS,一级计算机考试WPS试题及答案

    一级计算机考试WPS试题及答案 为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是小编搜索整理的一级计算机考试WPS试题及答案,供参考练习,预祝考生们考出自己理想的成绩! 一级计算机考 ...

最新文章

  1. linux系统管理命令,压缩命令
  2. border:none 与border:0的区别
  3. C++基础04-类基础
  4. 成交量与股价的关系图解
  5. Hive一些参数设置
  6. 两个数相乘积一定比每个因数都大_两个多位数相乘,积一定比每一个因数都大。[ ]...
  7. mysql删除选课为空的学生_MySQL一些简单的操作题
  8. 【Unity Shaders】Mobile Shader Adjustment —— 为手机定制Shader
  9. 安防无战事:一场 10213 亿元的误会
  10. 搭建Eclipse 2020安卓开发环境
  11. 远程办公软件华为云WeLink高效视频会议指南(下篇:视频会议怎么记录会议纪要?)
  12. 可以嵌入ppt的课堂点名器_宏大智慧课堂支招:孩子和学霸的差距,就在课上课下55分钟里...
  13. 微信小程序标签样式的优先级
  14. DSPE-PEG-NHS;磷脂-聚乙二醇-活性脂,可用于基因转染和疫苗传递(科研试剂)
  15. dve 二维数组信号 显示波形_VCS-DVE
  16. 我与Java的那些年和那些事
  17. 自定义Windows 10开始菜单的10种方法
  18. Linux终端一直输出login,Linux tty pty console区别
  19. Objective C定义私有方法
  20. 北航软件工程考研非全上岸经验贴

热门文章

  1. 微型计算机出现于 年代初期,半导体材料介绍,第一代、第二代、第三代、第四代半导体材料分类...
  2. NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS分析和改进神经辐射场
  3. Unity搭配Kinect制作仿节奏光剑的游戏
  4. 【BZOJ 3155】Preprefix sum(树状数组)
  5. 机器学习 第三讲 机器学习基础、机器学习算法(K-近邻算法、朴素贝叶斯算法)
  6. python分析并爬取今日头条的视频链接
  7. 【java】Weblogic12C部署xcf项目(jdk1.8)记录-2018年4月29日
  8. 按键开关多功能LED灯控制芯片,多模式手电筒控制IC
  9. 在AVR中PIN的含义
  10. 【观察】Akamai:做中国泛娱乐企业出海的“加速器”