直接说重点:ASP在线考试系统的线系统源码,现在还能在不少老项目里见到。考试不是源码因为它有多先进,而是线系统很多学校、培训机构的考试内部考试平台,十几年前用ASP搭的源码,至今还在跑。线系统改不动,考试也没必要重写。源码
我手里有一套典型的线系统ASP考试系统源码,结构很直白。考试根目录下几个文件夹:admin、源码exam、线系统inc、考试db。源码db里通常是一个Access数据库,后缀.mdb,偶尔也有用SQL Server的,但ASP配Access才是标配。打开conn.asp,一行连接字符串,路径写死,密码明文。这种写法现在看很危险,当年却是常规操作。
核心逻辑在exam.asp里。考生登录后,系统从questions表随机抽题——具体抽多少道,看paper表里的配置。每道题有题型字段:单选、多选、判断。答案存在answer字段,多个选项用逗号隔开。考生提交后,check.asp拿提交的答案跟数据库比对,算分,写进score表。整个过程没有复杂算法,就是字符串比较和循环累加。
有个细节值得说:很多ASP考试系统防作弊手段很原始。比如禁止右键、禁止复制,用JavaScript弹窗警告。实际上按F12就能绕过去。还有的用Session记录考试开始时间,超时自动交卷。但Session超时默认20分钟,如果考试时长设成60分钟,考生中途去趟厕所回来可能就被踢了。改web.config或者global.asa能调,但很多源码里没写清楚,得自己翻。
后台管理部分,admin/login.asp通常有个默认账号,比如admin,密码admin888。登录后能增删题目、导出成绩、查看统计。统计功能很弱,顶多算个平均分、最高分。想按班级、按知识点分析?得自己写SQL。我见过一个版本,统计页面直接SELECT * FROM score,然后Response.Write拼表格,数据一多浏览器就卡死。
这套源码的痛点很明显。Access数据库并发差,几十人同时交卷就可能锁库。ASP本身安全性弱,SQL注入一抓一个准。但优点也突出:部署简单。IIS一装,把文件夹一拷,改下连接字符串就能跑。不需要编译,不需要框架,改个页面直接刷新就见效。对于预算有限、技术力量薄弱的单位,这很实用。
如果你现在要拿这套源码去用,建议做几件事。第一,把Access换成SQL Server,至少改成.mdf附加,并发能好点。第二,所有Request输入加过滤,别直接拼SQL。第三,后台默认密码必须改,admin目录最好改名或者加IP限制。第四,考试提交逻辑加个事务,防止部分写库失败导致成绩丢失。
网上流传的ASP考试系统源码版本很多,质量参差不齐。有的连分页都写错,RecordSet没关,跑一会儿就Server.CreateObject失败。挑的时候看两点:conn.asp有没有做错误处理,check.asp有没有防重复提交。这两处能看出作者有没有实际部署过。
最后说个真实案例。某驾校理论考试模拟系统,用的就是ASP源码改的。题库两千多道,每天几百人练手。服务器是台老戴尔,Windows Server 2003,IIS 6.0。跑了八年,直到去年才换成PHP。问为什么换,管理员说:不是不能用,是新来的技术员不会改ASP了。