Java在线考试系统

摘要

随着教学的改革进一步深入和可测功能建设的逐步完善,对每门课程的考试必须规范化、系统化、科学化和智能化。目前,国内外已有许多考试系统,它们为提高教师工作质量和教学的现代化进程起到重要作用。但它们在功能上和性能上都存在着一些缺陷,尤其是实用性、网络化上。研究并开发新的实用性、智能化、网络化考试系统以帮助教师在工作和学生在学习中方便地使用它,是目前亟待解决的问题。

本系统由一个公共模块和两个主要功能模块组成:数据库连接公用模块、在线考试模块和系统管理模块。其中考试模块主要进行考生登录系统后,进行在线考试,提交试卷后自动判卷显示成绩;系统管理模块主要包括考生信息、分数和管理员添加等功能。

关键词: 组卷策略 网上测试 查询

Abstract

With the developments of the farther reform in education and with the developments gradually perfect in course,the students master and comprehend each examination of each course must be standardization,systematization science, intelligentize. Now ,there are the existent domestic and international examination system,they have important effects to enhance teacher’ working quantity and accelerate the modern teaching course. But there are some defects in the functions and performances,particularly on the practicability and the network.Researching the existent problems of the examination systems,developing the new intelligence and network of it in order to teachers and students during the working and studying expediently use the examination database,those need to solve the problems currently.

   This system is composed by a public module and two main functionsmodules:Database connection module,on-line test module and system administration module.After test module mainly carries on the examinee to land the system,Carries on the on-line test,after submits the examination paper automatically to sentence thevolume demonstration result;The system administration module mainly includes function and so onexaminee information,score and manager increase.

Keywords :Intelligence   Tactics of the test paper    Network test   Intelligent query

目录

Abstract

 

1 系统开发背景及意义

1.1  系统开发背景

1.2  系统开发意义

2章网上考试系统需求分析

2.1现状分析

2.2可行性分析

2.2.1经济可行性

2.2.2技术可行性

2.3设计目标

2.4功能要求

2.5系统开发环境配置

2.6系统开发工具

2.6.1开发语言—JSPJava Server Page

2.6.2数据库—MySQL5.1

3 网上考试系统设计

3.1数据库设计

3.1.1数据库需求分析

3.1.2数据库概念结构设计

3.1.3数据库逻辑结构设计

3.2系统结构设计

3.2.1页面模块化设计

3.2.2 MVC模式设计(Jsp+Servlet+JavaBean

4 网上考试系统实现

4.1系统架构介绍

4.1.1  数据库的链接,创建数据源

4.1.2访问数据库的JavaBean

4.1.3 核心代码实现(框架的引入)

4.1.4用户及管理员登录模块页面

4.1.4系统主要模块页面

4.1.5学生考试模块的实现页面

4.1.6教师添加试题制作试卷模块的实现

结束语

参考文献

绪 论

考试是检验教学效果的重要手段,也是促进学生学习的重要手段,是教学过程中的一个重要环节。学生考试成绩的优劣,不但反映其对教学内容和应掌握知识的分析、理解、吸收、运用的能力,更反映教师对教学内容的把握和熟练程度。

传统的学校教学中,进行一场考试,要求老师编写试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。

而网上考试系统不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。加上数据库技术的利用,大大简化了传统考试的过程,因此在线考试是电子化教学的不可缺少的辅助手段。在当今信息时代,计算机技术与网络技术越来越广地应用于各个领域,改变着人们的学习、工作、生活乃至思维方式,也引起了教育领域的重大变革。将计算机与网络技术应用于现代高等教育中,是现代高等教育发展的需要,也是改革教育模式,提高学校教学效果和教学效率、提高科研和管理水平的必要手段。

第1章 系统开发背景及意义

1.1  系统开发背景

随着计算机技术、网络技术迅速发展和高校校园网功能的日益完善,很多高校建立了基于校园网的网络信息管理平台,为提高教学管理水平提供了先进的管理手段。目前,基于网络的在线考试系统己经成为现代考试方式的有力补充和发展。相对于传统的笔试,网络在线考试不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。

1.2  系统开发意义

很多学校学生的期末考试仍采用任课教师(个人或集体)考前出题的方式。为解决学生压题,考前漏题,补(缓)考试题与正式考试试题题量及难度差异问题,教务管理部门通常要求教师同时出多套试卷,其题量与难度要求相同,并且要同时给出答案和评分标准。这样做虽能解决一些问题,但给教师增加了很大的工作负担,若上下届学生的同一门课程由同一教师承担,则难免几届学生用相同几套试卷;若由不同教师任课出题,则上下届学生的成绩之间又不具有可比性。

若建立题库,每次考试前由题库中题目随机生成试卷,则可较好地解决考教分离的问题,也可将广大教师从每学期末繁重的命题工作中解放出来。近年来,部分学校陆续开发了一些基于微机的题库系统,并作为成果向其它学校推广,但这些题库一般都是结合本校具体情况,针对单一课程的小型题库,甚至某些学校购得的题库系统中的题目本身是不可维护的,即使题目已不适合自己的学生考试使用,也无法更新题库中的题目。

为解决题库系统中存在的这些问题, 作者经过研究几种不同的网上系统,经充分的考虑,最后给出了一个较为理想的题库系统解决方案,并结合当前比较使用的B/S结构开发一个功能完备的网上考试系统。


第2章网上考试系统需求分析

2.1现状分析

传统的考试方法要求组织者提前命题试卷,然后约定一个统一时间,让所有考生到考场里进行考试。这种模式如图2-1 所示:

       编辑考题

印刷大量试卷

安排考场,时间,监考人员

学生集体考试

         阅卷,统计成绩

图2-1 传统考试模式

这种模式存在有较多的问题:

命题:由于考试要求统一进行,所有考生都考同样的一份试卷,所以试卷的命题工作便一定得非常谨慎小心,试题太难或太容易,都达不到考试目的,尤其是对于一个大规模的考试,(比如计算机等级考试,英语四,六级考试等),如何正确把握试卷的难度,一直都是让命题教师最为头痛的问题之一。而如何不在考试之前使命好的试题泄漏出去,也是组织者费尽心思。

试卷印刷:对于大规模的考试,试卷印刷费工费时,成本高,对纸张资源也是一种浪费。对于涉及地域范围较广的考试(如英语四,六级考试),还要考虑试卷大的长途运送费用。在考试的印刷和运输过程中同样有试题泄漏出去的问题,任何一个环节出了问题,都可能使前面有的工作付诸流水。

考场的安排:监考人员的培训与管理。对于大规模的考试,尤其是到了考试密集期(如期末,期中)。诸多学科的考试都要陆续开始的时候,对于教室资源和教师数量相对紧张的学校,如何安排考场,调配监考人员,是一件相对繁琐而又复杂的事情。如果考试再涉及到不同地域之间的同步,如英语四,六级的考试,还要考虑更多的问题。

进行考试:由于同一次考试的试卷相同,要杜绝考生作弊是一个普遍的难题,因此,历届组织考试的人动了很多脑筋,如分AB卷,加强监考,加重对作弊者的惩罚程度等,但这些都没能从根本上杜绝作弊。不同地域监考的严格程度,考试时问控制的严格程度,也很难达到统一。过多人为因素的加入,也使得考试的公正性下降。

判卷:考试结束后,采用人工判卷比较容易出错,并可能出现人为造成的不公正现象。

2.2可行性分析

可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。

2.2.1经济可行性

主要是对项目的经济效益进行评价,利用计算机来实现网上考试以成为适应当今教学管理的方式。开发一套能满足网上考试系统的软件是十分必要的,实现试卷管理和试卷生成自动化,在减少由于认为失误而早成损失的同时,也可以使教师减少工作量。本系统在经济上是可以接受的,并且本系统实施后可以显著提高考试效率,有助于学院完全实现网络化管理。所以本系统在经济上是可行的。

2.2.2技术可行性

技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。

软件方面,网络化考试需要的各种软件环境都已具备,数据库服务器方面则有MySQL,均能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。其灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。

硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。

2.3设计目标

在线考试系统的总体目标:

  1. 在线考试系统可以帮助教师完成一个考试从题目设计,考试安排,考试实施,考卷批改到分数计算总结的所有工作。
  2. 所有的考试数据和其它数据库需要一种主流的方式进行存储和管理,例如使用数据库技术。
  3. 考试数据的存放和处理必须对考试保密,需要一定的安全性保障。
  4. 题目最好有一定的稳定性和随机性。稳定性可以保证每一次考试对每一个考生是公平的,随机性可以避免作弊的发生。
  5. 考试的部分客观题在考生考完之后系统就能自动评分,并保存考生的主观题答案。

2.4功能要求

系统应该具备的基本功能:

用户类别:登录系统的身份定为三种,一是管理员,二是普通老师,三是学生,只有被授权的用户才可以使用本系统的资源。

权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生可以参加在线考试, 查询考生成绩;普通教师可以阅卷等。管理员可以在线制作试卷,控制考试、成绩查询、添加试题、科目信息、查询考生成绩, 批量删除学生信息(按照年级)。

在线考试功能:考生输入学号密码和验证码登陆系统后,选择对应的试卷可进行考试。答题中,有倒计时的功能,考试结束时还没提交就自动交卷,系统将自动对客观题进行评分。

在线制作试卷:管理员可在线制作试卷,可将特定的考题添加到相应的考卷中

控制考试功能:可设定每次的考试时间。

考生管理功能:可新增学生用户,修改考生信息,删除考生信息,同时查看考生的信息。

考生成绩查询功能:提供考生详细查询。

试卷审批功能:只有考题添加满的考卷才可设定时间,只有设定过时间的考卷才可以用于考试.

除了实现上述功能以外,在线考试系统还应该具有友好、简洁的界面,安全性要高,稳定性要强。

2.5系统开发环境配置

选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;令一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都是非常容易,而且性能优越。具体如下:

  1. 开发工具:Eclipse
  2. 辅助开发工具: Dreamweaver 8
  3. 数据库:MySQL5.0
  4. 服务器 :Apache Tomcat6.0
  5. 运行环境 :安装JDK1.6支持Java运行。
  6. 技术:前台网页的设计采用JSP技术制作。负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户由Action处理,JavaBean则负责数据的处理。

2.6系统开发工具

本系统是基于JSP+MySQL5.1数据库技术实现的,现对JSP技术和SQL Server 2005数据库作简要的介绍。

2.6.1开发语言—JSP(Java Server Page)

JSP页面由HTML代码和嵌入其中的Java代码所组成。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的等特点。JSP的技术的优势:

一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不需要做任何更改。

系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。

JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。

高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。

可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。

多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

2.6.2数据库—MySQL5.1

MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。

SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。

第3章 网上考试系统设计

3.1数据库设计

在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。详细设计过程如下介绍。

3.1.1数据库需求分析

需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。

3.1.1.1系统基本信息

综合以上分析,要实现上面的所有功能模块,数据库共要设计十一个表,它们分别是:科目表、考卷表、考卷考题表、考题答案表、考题表、选项表、考题类型表、考生作答表,成绩表,序列表,用户表。

3.1.1.2系统层次图

系统总体的层次图如下图3-1所示:

图3-1系

统层次图

1.1.3系统数据流程图

系统数据流程图如下图3-2所示

图3-2数据流程图

3.1.2数据库概念结构设计

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。

概念数据模型独立于具体的数据处理的细节和数据库管理系统。这次设计仍采用传统的实体联系图作为概念设计的工具。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。系统E-R图如下图3-3所示:

图3-3 系统E-R图

3.1.3数据库逻辑结构设计

对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。

3.1.3.1关系模式设计

该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。该系统的关系模式如下图3-4所示:

图3-4 概念关系模型图

3.1.3.2完整性设计

完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。
3.1.4数据字典

数据字典如下表所示,将数据库中每个表中的字段进行了详细的描述。

表1  用户基本信息表 t_user

表名

t_user

字段名

数据类型(精度范围)

字段含义

其他

  user_id

Integer

用户 编号

PK

  user_no

VARCHAR(15)

用户登陆账号

not  null

user_pwd

VARCHAR(20)

用户登陆的口令

not  null

user_name

VARCHAR(20)

用户的姓名

 not  null

user_role

VARCHAR(4)

用户的角色

 not  null

user_is_login

VARCHAR(4)

用户是否登陆

not  null

user_sex

VARCHAR(4)

用户的性别

not  null

user_identification

VARCHAR(20)

用户的身份证号码

not  null

user_hometown

VARCHAR(50)

用户的籍贯

not  null

user_policyFace

VARCHAR(10)

用户政治面貌

null

user_isable

VARCHAR(4)

用户是否有效

not  null

user_email

VARCHAR(20)

用户邮箱

null

user_telephone

VARCHAR(20)

用户的联系方式

null

补充说明

用户是否登陆:Y 已经登陆,  N 还未登陆

用户的性别: F 表示男,  M 表示女

用户的角色: M, 管理员, S: 考生  T:教师

用户是否有效:删除用户的时候会置此字段为F,  默认为Y

表2  试题类型表 t_question_type

表名

t_question_type

字段名

数据类型(精度范围)

字段含义

其他

  type _id

Integer

试题类型的编号

PK

  type_name

VARCHAR(20)

  试题类型的名字

not  null

补充说明

试题类型为: 单选题, 多选题, 填空题, 判断题, 简答题, 论述题

表3  课程表 t_course

表名

t_course

字段名

数据类型(精度范围)

字段含义

其他

  course_id

Integer

课程序列号

PK

  course_no

VARCHAR(20)

课程编号

not  null

  course_name

VARCHAR(20)

课程名字

not  null

  course_isable

VARCHAR(4)

课程是否可用

not  null

补充说明

课程编号可作为用户查询的接口

当课程被删除的时候置isable为N, 默认为Y

表4  试题库 t_question_base

表名

t_question_base

字段名

数据类型(精度范围)

字段含义

其他

question_id

Integer

试题序列号

PK

question_type

Integer

试题对应的类型

not  null  FK1

question_course

Integer

试题对应的课程

not  null  FK2

question_isable

VARCHAR(4)

试题是否可用

not  null

question_text

VARCHAR(500)

试题题干

not  null

补充说明

Eg: 试题  为  地理课程  下面的  单选题

当删除试题的时候置question_isable为N, 默认的为Y


表5  试题选项 t_question_option

表名

t_question_option

字段名

数据类型(精度范围)

字段含义

其他

option_id

Integer

选项序列号

PK

option_question_id

Integer

选项对应的试题

not  null  FK1

option_value

VARCHAR(200)

选项的内容

not  null

补充说明

表6  试题答案 t_question_answer

表名

t_question_answer

字段名

数据类型(精度范围)

字段含义

其他

answer_id

Integer

答案序列号

PK

answer_question_id

Integer

答案对应的试题

not  null  FK1

answer_value

VARCHAR(300)

答案的内容

not  null

补充说明

单选内容: A

多选内容: ABC

填空题,简答题和论述题都为文本文字

判断题内容为. T或F

表7  试卷库 t_paper

表名

t_paper

字段名

数据类型(精度范围)

字段含义

其他

paper_id

Integer

试卷序列号

PK

paper_course_id

Integer

试卷对应的课程

not  null  FK1

paper_isavailable

VARCHAR(4)

试卷是否可用

not  null  

paper_statue

VARCHAR(4)

试卷状态

not  null

paper_isable

VARCHAR(4)

试卷是否有效

not  null

补充说明

如果试卷中的题目总分为100则试卷可用, 可用为Y 不可用为N, 默认为N

试卷状态O表示打开,C表示关闭,默认为C

paper_isable默认为Y, 当删除试卷的时候为N

表8 试卷试题表  t_paper_question

表名

t_paper_question

字段名

数据类型(精度范围)

字段含义

其他

pap_que_id

Integer

试卷试题序列号

PK

paper_id

Integer

试卷序列号

not  null  FK1

question_id

Integer

试题序列号

not  null  FK

补充说明

此表为  试卷和试题 之间的关系表

表9 考生作答表  t_response

表名

t_response

字段名

数据类型(精度范围)

字段含义

其他

response_id

Integer

考生作答序列号

PK

 user_id

Integer

考生序列号

not  null  FK1

pap_que_id

Integer

试卷试题序列号

not  null  FK

response_value

VARCHAR(1000)

考生作答

not  null

补充说明

表10考生成绩表  t_score

表名

t_score

字段名

数据类型(精度范围)

字段含义

其他

score_id

Integer

考生成绩序列号

PK

 user_id

Integer

考生序列号

not  null  FK1

teacher_id

Integer

阅卷人序列号

not  null  FK

course_id

Integer

课程序列号

not  null  FK

score_value

Float

考生 成绩

not  null

补充说明

表11    序列表t_sequence

表名

t_sequence

字段名

数据类型(精度范围)

字段含义

其他

seq_name

VARCHAR(20)

序列名字

PK

 current_value

Integer

序列当前值

not  null

Increment_value

Integer

序列的增加值

not  null

补充说明

 序列培训函数使用, 用来生成各种主键

CREATE  FUNCTION  nextval(seq_name VARCHAR(50))

 RETURNS int(11)

BEGIN

      UPDATE sequence

                SET          current_value = current_value + increment

            WHERE name = seq_name;

            RETURN currval(seq_name);

   END

CREATE  FUNCTION  currentval(seq_name VARCHAR(50))

 RETURNS  int(11)

BEGIN

        DECLARE value INTEGER;

       SET value = 0;

       SELECT current_value INTO value

       FROM sequence

       WHERE name = seq_name;

  RETURN value;

END

3.2系统结构设计

3.2.1页面模块化设计

模块化设计的要求不仅是为了提高代码的重用性,更重要的是为了提高代码的可维护性和稳定性。一个模块化程度高、结构清晰的应用程序,在程序维护时的便利性是可想而知的。最初设计方案时,就要规划好哪些模块是可以提出来多次使用,哪些模块虽只使用一次,但提出来之后能使代码更清晰等。

网上考试系统是一个典型的数据库开发应用程序,本系统主要用管理员、教师和学生三大模块组成,各模块功能如下:

管理员模块:该模块主要是对系部、专业、班级、课程进行管理,添加修改学生、教师、信息,添加试题、试卷和审核教师制作的试卷等。

教师模块:该模块主要是教师通过登录该系统能够修改个人信息,添加试题,在线制作试卷,阅卷等。

学生模块:该模块主要是学生通过登录该系统能够修改个人信息(只能修改密码),进行考试等。

3.2.2 MVC模式设计(Jsp+Servlet+JavaBean)

MVC(Model View Controller)是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

  视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。JSP页面处于表现层,也就是视力(View即V)的角色。

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。JavaBean则负责数据的处理,也就是模型(Model即M)的角色。

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。Servlet用来处理请求的事务,充当控制器(Controller即C)的角色,Servlet负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。

初始的请求由Servlet来处理,Servlet调用商业逻辑和数据处理代码,并创建Bean来表示相应的结果(模型)。然后Servlet确定哪个页面适合于表达这些特定的结果,并将请求转发到相应的页面(JSP页面即为视图),由Servlet确定哪个业务逻辑适用,应该用哪个JSP页面相应结果(Servlet就是控制器)。

第4章 网上考试系统实现

4.1系统架构介绍 

本系统采用Struts2+Ibatis2.3+Spring2.5 做架构,其中Struts2主要做请求的管理,Spring 主要做后台业务类的组合(包括对象的创建和对象的组合),Ibatis持久层框架做数据库的访问,对外提供用户使用的接口(SqlMapClient). 为了使实现清晰可见将系统后台业务代码分了三层:Action层,Service层,Dao层.其中Action主要做请求的接受和请求的发送,由Struts2的核心配置文件struts.xml做控制,将相应的请求提交到Action的特定的方法中,处理完毕后做相应的跳转.  Service层会有一个Dao层类作为其属性, 通过Spring注入,Action层会有一个Service层的类作为其属性,通过Spring注入. Dao类通过继承SqlMapclientDaoSupport获取其sqlMapclient接口对数据库进行访问,被执行的sql语句放置在Ibatis的各个配置文件中,三个框架协调工作。

4.1.1  数据库的链接,创建数据源 

配置数据源创建连接池,再通过JavaBean连接到数据源再对数据库进行操作。

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。连接池可以极大的改善用户的 Java 应用程序的性能,同时减少全部资源的使用。连接池主要的优点有:减少连接创建时间、简化的编程模式、受控的资源使用。连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,不过如果超过该水平,应用程序将崩溃而不仅仅是变慢。

配置连接池:

1.首先要将mysql的驱动包放在tomcat/lib目录下

2.在应用服务器Tomcat 里的/conf下建立一个jdbc.properties文件,里面写入链接Mysql的各种属性,包括驱动,链接的url,数据库用户名,数据库密码等信息。

JDBC.Driver=org.gjt.mm.mysql.Driver

JDBC.ConnectionURL=jdbc:mysql://localhost:3306/online

JDBC.Username=root

JDBC.Password=root

3.在applicationContext.xml中将数据库属性文件引入:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

      <property name="locations">

        <list>

           <value>

              /WEB-INF/conf/jdbc.properties

           </value>

        </list>

      </property>

    </bean>

   4. 配置数据源, 通过前面引入的属性文件创建id为dataSourse的数据源

     <bean id="dataSource"

class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName"

value="${JDBC.Driver}">

</property>

<property name="url"

value="${JDBC.ConnectionURL}">

</property>

<property name="username" value="${JDBC.Username}"></property>

<property name="password" value="${JDBC.Password}"></property>

</bean>

4.1.2访问数据库的JavaBean

JavaBean是一种Java语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成为属性。众所周知,属性名称符合这种模式,其他Java类可以通过自省机制发现和操作这些JavaBean属性。

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、Applet程序或应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

JSP的一个重要特性就是可以用JavaBean实现功能的扩展。将大部分功能放在JavaBean中完成,以使JSP页面程序更干净简洁、利于维护。JavaBean可以很方便的用来捕获页面表单的输入并完成各种业务逻辑的处理。

连接数据库的JavaBean——Conn。通过JSP页面调用此JavaBean,可以实现对数据库的连接,数据表的添加、删除、更新等操作。

4.1.3 核心代码实现(框架的引入)

1,通过配置将Spring引入到系统中

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

         /WEB-INF/conf/applicationContext.xml

       </param-value>

  </context-param>

  <listener>

    <listener-class>

    org.springframework.web.context.ContextLoaderListener

</listener-class>

  </listener>

2,通过拦截器将struts2进入到系统中

<filter>

    <filter-name>struts</filter-name>

    <filter-class>

    org.apache.struts2.dispatcher.FilterDispatcher

  </filter-class>

  </filter>

<filter-mapping>

    <filter-name>struts</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

3,过滤器转码的实现

   Web.xml中的配置:

  <filter>

  <filter-name>encodingFilter</filter-name>

    <filter-class>

        com.line.test.common.EncodingFilter

   </filter-class>

  </filter>

  <filter-mapping>

    <filter-name>encodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

转码实现类,将编码转换成GBK中文编码

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain filter) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) arg0;

HttpServletResponse response = (HttpServletResponse) arg1;

response.setCharacterEncoding("GBK");

request.setCharacterEncoding("GBK");

response.setContentType("text/html;charset=GBK");

filter.doFilter(request, response);

}

4, 批量的从Excel中添加考生

public void addManyKaoshengService(File excelFile, HttpServletRequest request){

   

POIFSFileSystem   fs   =   null;

    HSSFWorkbook   wb   =   null;

    

      try {

fs   =   new   POIFSFileSystem(new   FileInputStream(excelFile));

wb   =   new   HSSFWorkbook(fs);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

HSSFSheet   sheet   =   wb.getSheetAt(0);

HSSFRow   row   =   null;

HSSFCell   cell   =   null;

String userName;

    String userNo;

    String userSex;

String user_identification;

String userPlocyface;

String user_hometown;

String user_telephone;

String user_email;

int rows = wb.getNumberOfSheets();

for(int i=1; i<rows; i++){

row   =   sheet.getRow(i);

cell = row.getCell(0);

userName = cell.getStringCellValue();

cell = row.getCell(1);

userSex = cell.getStringCellValue();

cell = row.getCell(2);

userNo = cell.getNumericCellValue()+"";

cell = row.getCell(3);

userPlocyface = cell.getStringCellValue();

cell = row.getCell(4);

user_hometown = cell.getStringCellValue();

cell = row.getCell(5);

user_identification = cell.getNumericCellValue()+"";

cell = row.getCell(6);

user_telephone = cell.getNumericCellValue()+"";

cell = row.getCell(7);

user_email = cell.getStringCellValue();

this.getKaoshengDao().addManyKaosheng(userName, userNo, userSex, user_identification, userPlocyface, user_hometown, user_telephone, user_email);

}

request.setAttribute("addResult", "添加结束");

}

4.1.4用户及管理员登录模块页面

用户登录页面比较简单,为加强安全性,登录过程中设置有6位数的验证码在登录操作过程中,一般发生的错误有:用户名.密码或验证码为空,登录帐号内容不为数字,验证码输入错误,用户输入了错误的用户名或密码、用户直接单击了登录按钮,对上述情况的判断就要通过login_Dao.java,login_Service.java,Login_Action.java文件来实现。用户包括系统管理员,教师和考生,登录界面

如图4-1所示:

图4-1 学生登录面

在登录页面时,当用户提交了登录资料后,就由“Login_Service.java”这个Action进行验证,它的工作主要是判断用户登录的帐号和密码是否一致。完成这些工作就必须连接存储用户数据库取出相关信息记录。如果用户输入了错误的用户名和密码,返回到登录界面并提示登录出错信息,如图4-3所示:

图4-3登录错误提示页面

若用户提交正确的用户和密码后,如果记录验证无误,Login_Action.java中的login()方法中会根据相应的角色跳转到相应的界面,如果登录成功会将用户的登录状态设置为Y,以防同一个用户登录多次以加强系统的安全性.

public String loginServices(String userNo, String userPwd, String userRole,

String logImg, HttpServletRequest request) {

HttpSession session = request.getSession();

String randPic = (String) session.getAttribute("randPic");

if (logImg != null && randPic != null && randPic.equals(logImg)) {

TUser user = this.getLoginDao().login(userNo, userPwd, userRole);

if (user != null) {

String userIsable = user.getUserIsable();

if (userIsable != null && userIsable.equals("Y")) { // 此用户是否已经被删除

String userIsLogin = user.getUserIsLogin();

if (userIsLogin != null && userIsLogin.equals("N")) { String userR = user.getUserRole();

if (userR != null && userR.equals("M")) {

request.setAttribute("managerWelcome", user);

session.setAttribute("user", user);

this.getLoginDao().setLogined(user.getUserId());

return "managerIndex";

} else if (userR != null && userR.equals("T")) {

request.setAttribute("teacherWelcome", user);

session.setAttribute("user", user);

this.getLoginDao().setLogined(user.getUserId());

return "teacherIndex";

} else if (userR != null && userR.equals("S")) {

// 登录的用户为考生

request.setAttribute("studentWelcome", user);

session.setAttribute("user", user);

this.getLoginDao().setLogined(user.getUserId());

return "studentIndex";

} else {

request.setAttribute("result", "系统忙,请您重试!");败

return "login";

}

} else {

request.setAttribute("result", "此用户已经进入本系统!");

return "login";

}

} else {

request.setAttribute("result", "此用户不存在!");

return "login";

}

} else {

request.setAttribute("result", "帐号密码或角色输入有误,请重试!"); return "login";

}

} else {

request.setAttribute("result", "验证码输入有误!");

return "login";

}

}

4.1.4系统主要模块页面

整个系统都采用JSP+JavaBean+Servlet模式实现。JSP+JavaBean+servlet模式的运用实现了代码的重复利用;是系统程序易编写、易维护、易使用;并且可以在任何安装了Java运行环境的平台上使用而不需要重新编译。

系统首页如图4-4(考生登录主页面)、4-5(系统管理员登录主页面)、4-6(教师登录主页面)所示。

                      图4-4 考生登录成功主页

4-5系统管理员


教师登录系统进入教师主页面页面如图4-6所示:

图4-6 教师登录首页

系统管理员考生添加页面: 其中对考生学号通过ajax做了合法性验证, 使用js对身份证号码,联系方式,电子邮箱等进行了合法性验证, 考生籍贯采用js三级联动进行选择. 考生的添加有两种方式,一种是直接通过页面做添加,一种是通过Excel文件进行批量插入, 使用后者大大的提高了系统的性能.

图4-5 系统管理员添加考生页面

图4-6 系统管理员教师添加页面

 图4-7 系统管理员添加考题(单选题)页面

图4-8 多选题添加成功后显示添加的内容

图4-9 考卷管理页面,可添加删除考卷,查看考卷详细信息,点击查看按钮之后,可以对”可用来考试的考卷”进行考试时间的设置.

不同用户登录系统后显示的界面都是简单都是一些功能的链接。外观是一个DIV+CSS的后台管理模版。

4.1.5学生考试模块的实现页面

考生可以通过首页登录进入选择考试页面,如上图所示。在该页面考生能查看考试科目和开考时间,可以修改个人的密码。修改密码成功后将自动注销重新登录。

如果到了开始考试的时间“是否考试”中就会由“等待考试”变成“开始考试”的连接了,考生可以点击此处进入到考试页面。考试页面有倒计时显示,如果时间到了系统会自动提交。

图4-10,对考卷进行时间的设置,使用js日历方便用户操作,提高了系统性能. 

图4-11, 考生参加考试,当点击提交考卷的时候考卷将被提交并算出相应的主观题得分.当考试时间到了之后弹出警告框,考生点击确定之后提交考卷并且计算得出其主观题得分 

学生考试界面如下图4-7所示。

图4-7 考试页面

4.1.6教师添加试题制作试卷模块的实现

教师登录到系统后通过左边的管理菜单了解到自己拥有那些功能:题库信息查看、添加题库,试卷信息查看,添加试卷,阅卷管理等。题库添加:先选择所添加试题的科目和题型再进行添加。系统设置了选择题,填空题,问答题。

教师可以在线制作试卷,设置考试的科目、时间、考试时间段、题型分布、分值分布、考题数量等,考题数量必须根据系统提示题库总数量设置,不能把考题数量超出题库的总数量。

结束语

通过这次毕业设计,对很多东西有了新的认识和新的见解,认识问题的和思考解决办法有了本质上的进步,特别是对一个系统开发的模式有了更深的认识,对专业技能的运用更熟练。

网上考试系统的开发过程中也遇到了很多问题,开始做需求时不确定考试系统到底应该具备那些功能,只知道主要功能就是有试题能考试,但具体流程,怎样实现这些功能就很模糊,所以查看了很多资料才理清楚。数据库设计也是个难点,不明确要实现哪些功能就不能很好的把数据库设计好。设计数据库就是开发一个系统的核心。设计数据库一定要思路清晰,各个数据的流向各个表之间的关系一定要弄清楚,透彻。数据库设计出错了对以后整个系统的影响是最直接的。所以做需求时一定要做好需求分析,考虑完善,数据库设计要谨慎。总之需求分析时能做好就能降低需求变更,再加上设计时考虑到的技术可行性就可以大幅度的降低需求变更。

最终还是完成了预定的需求功能。看到自己独立完成并可以使用的系统给了我很大信心。在本系统的设计过程和论文编写过程中,很多老师、同学都给与了我许多无私的帮助,尤其是我的导师给我的论文提出了很多宝贵的修改意见,在这里我向这些无私帮助我的人表示衷心的感谢。


参考文献

[1]  赵韶平.Power Designer系统分析与建模. 清华大学出版社,2004.8

[2]  Bruce Eckel编.《Java编程思想第3版》.机械工业出版社, 2005.9

[3]  李芝兴. 杨瑞龙编.《Java程序设计之网络编程》.清华大学出版社,2006.3

 [4]  赵森. 中文SQL Server 2005 程序设计教程. 冶金工业出版社, 2006.7

[5]  杨学全.SQL Server实例教程.电子工业出版社,2007.9

[6]  郝玉龙.Java EE 编程技术.清华大学出版社,2008.6

[7] Liang Y.D.Java语言程序设计基础篇.机械工业出版社,2008.6

[8] 江开耀.软件工程与开发技术.西安电子科大出版社,2009.2

[9] 刘志成.UML建模实例教程.电子工业出版社,2009.11

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
java 在线考试系统java MF000001 : DJINGH MF000002 : k58fun MF000003 : 65skuv MF000004 : sh9n4g MF000005 : 6HD85G MF000006 : hjsung MF000007 : 56fjid MF000008 : juff5s MF000009 : 68shud MF000010 : 5du8a6 MF000011 : hdua45 MF000012 : hud6hj MF000013 : husn56 MF000014 : dehi34 MF000015 : hsung5 MF000016 : 45fjis MF000017 : huugn9 MF000018 : khnf54 MF000019 : hudn56 MF000020 : khfunw MF000021 : djdhnd MF000022 : hfjsgk MF000023 : hyaugn MF000024 : 586shu MF000025 : hud85y MF000026 : hudng9 MF000027 : hungyk MF000028 : 83hyqk MF000029 : hydhyq MF000030 : hyang5 MF000031 : hsf7qw MF000032 : hyafng MF000033 : sbhf53 MF000034 : fhung8 MF000035 : hungsg MF000036 : dhyfgn MF000037 : dnhufa MF000038 : jusngh MF000039 : nhdugk MF000040 : 58sfhu MF000041 : 66dkjg MF000042 : hsung9 MF000043 : dhuisg MF000044 : hunssg MF000045 : jhsug6 MF000046 : 846hys MF000047 : husngk MF000048 : fnshug MF000049 : 64dhua MF000050 : syhkfn MF000051 : 587san MF000052 : wayhfp MF000053 : fhuang MF000054 : shugny MF000055 : huangm MF000056 : nushg5 MF000057 : dgbhyg MF000058 : husngk MF000059 : fhusgn MF000060 : fhajgj MF000061 : dhungk MF000062 : wyufng MF000063 : sjoifn MF000064 : huangk MF000065 : asgugn MF000066 : husngk MF000067 : nusbgy MF000068 : nshung MF000069 : nusgnj MF000070 : bufhng MF000071 : nsugnk MF000072 : qyhgjm MF000073 : nuwhgn MF000074 : nwhfiu MF000075 : husngj MF000076 : nhupfk MF000077 : afnhuf MF000078 : 68sjui MF000079 : 19jsgn MF000080 : skiunf MF000081 : husngk MF000082 : nufang MF000083 : gusnfc MF000084 : 57pudn MF000085 : nuyahg MF000086 : sufhim MF000087 : snuidm MF000088 : bundsg MF000089 : Nshunf MF000090 : jytqnf MF000091 : bhuang MF000092 : buuang MF000093 : adhuqm MF000094 : buangj MF000095 : bwgang MF000096 : busngp MF000097 : usnhgk MF000098 : byagng MF000099 : buangj MF000100 : bghang MF000101 : sdhung MF000102 : 26whgn MF000103 : shungf MF000104 : byafnh MF000105 : 92busy MF000106 : 84tdnu MF000107 : bufang MF000108 : 46snky MF000109 : nushgn MF000110 : 76dhbf MF000111 : buganj MF000112 : shungj MF000113 : ytwbfk MF000114 : husngj MF000115 : buangh MF000116 : 89tdfh MF000117 : huysan MF000118 : dhungj MF000119 : hungkt MF000120 : hysnfk MF000121 : 49hynf MF000122 : hysabf MF000123 : 36shuf MF000124 : hanukf MF000125 : buynsh MF000126 : dyhfng MF000127 : nugkhy MF000128 : juhfng MF000129 : busngj MF000130 : sbuagn MF000131 : KJJFIS MF000132 : jisghd MF000133 : nhusgn MF000134 : ynfhgu MF000135 : NUSGNH MF000136 : nuhsgk MF000137 : 59UHNF MF000138 : 45fhun MF000139 : 58shun MF000140 : nusgkk MF000141 : 87ahud MF000142 : jugsjh MF000143 : hunsgk MF000144 : HUSNGJ MF000145 : 86shun MF000146 : buygng MF000147 : nusgnm MF000148 : bdyugn MF000149 : bunghs MF000150 : nuagnk MF000151 : bugnhs MF000152 : hugnkd MF000153 : 56DFGJ MF000154 : 56AKIG MF000155 : hng5dj MF000156 : hunfjg MF000157 : bunfng MF000158 : nhunsg MF000159 : ynahgj MF000160 : nuhgjj MF000161 : hynsjg MF000162 : huangj MF000163 : bungjd MF000164 : nhusng MF000165 : BUGHJL MF000166 : buakhg MF000167 : hunfjg MF000168 : yuanhg MF000169 : 59yudn MF000170 : 69SHUN MF000171 : busngj MF000172 : bunsng MF000173 : buwhng MF000174 : bungjd MF000175 : budnkg MF000176 : bunsgj MF000177 : 56JUGB MF000178 : nusngk MF000179 : bungjg MF000180 : nusigm MF000181 : 58dfgm MF000182 : 9hufnk MF000183 : bhusgn MF000184 : 5shunf MF000185 : mnjisg MF000186 : budnfj MF000187 : 46ghun MF000188 : 65husn MF000189 : busngj MF000190 : nushgk MF000191 : nusgjj MF000192 : 36hung MF000193 : iungjd MF000194 : nushgn MF000195 : synghk MF000196 : nhusng MF000197 : yhdgng MF000198 : hynsgk MF000199 : jyuang MF000200 : yhfung MF000201 : bungkd MF000202 : busngh MF000203 : nuusgs MF000204 : wythfn MF000205 : bynagj MF000206 : bunsgk MF000207 : buanhg MF000208 : bksgnh MF000209 : byhnag MF000210 : huyanf MF000211 : nbuhgj MF000212 : byangj MF000213 : bunsgj MF000214 : wyhgnj MF000215 : hunagj MF000216 : husngu MF000217 : hunfhg MF000218 : ygufng MF000219 : hyngki MF000220 : nhyudn MF000221 : tyfnjg MF000222 : nuhgjk MF000223 : qtyfbg MF000224 : tyungh MF000225 : tyhgnj MF000226 : yhfung MF000227 : bynfhg MF000228 : busngh MF000229 : dstngh MF000230 : yhfnhg MF000231 : buhnfj MF000232 : gybhgh MF000233 : wyhfun MF000234 : wtngju MF000235 : byhngf MF000236 : wthfun MF000237 : gyhfng MF000238 : buyang MF000239 : husnfh MF000240 : bgyfgk MF000241 : fgyhdn MF000242 : hufngj MF000243 : yndsgj MF000244 : busngj MF000245 : bysgjg MF000246 : hundgj MF000247 : fgungh MF000248 : buynfh MF000249 : nuhfjg MF000250 : byunsg MF000251 : busngj MF000252 : abugnf MF000253 : bungjd MF000254 : dgyngj MF000255 : nusngj MF000256 : bufngh MF000257 : nbusgj MF000258 : gshusg MF000259 : syhngj MF000260 : husgnj MF000261 : hugdmn MF000262 : dhunge MF000263 : yujhgn MF000264 : sfgngj MF000265 : whnjfh MF000266 : husngj MF000267 : ynhgdj MF000268 : hyngjf MF000269 : nhydng MF000270 : btghfn MF000271 : fjiugj MF000272 : ghnduf MF000273 : hunfjg MF000274 : yujghm MF000275 : tyhhuf MF000276 : bysngj MF000277 : jysjgh MF000278 : husgmg MF000279 : yhdfug MF000280 : hunfjg MF000281 : tsghhj MF000282 : fgnghg MF000283 : nudgih MF000284 : ngyngk MF000285 : ehyfgi MF000286 : bysngj MF000287 : nudgjh MF000288 : budnhf MF000289 : nusngk MF000290 : bgdjgd MF000291 : hudnhg MF000292 : dnhufg MF000293 : yhgnds MF000294 : wdhyuf MF000295 : wdghun MF000296 : wsdhng MF000297 : awfvjh MF000298 : fdhung MF000299 : srtfhn MF000300 : weasng MF000301 : kxjh23 MF000302 : xer5w6 MF000303 : q4eb68 MF000304 : l2b5gf MF000305 : 4ks7gh MF000306 : 23iyun MF000307 : c8li1r MF000308 : 3pqm9z MF000309 : 5ymb1d MF000310 : 7ytewf MF000311 :i1vgd6 MF000312 : fjep65 MF000313 : kl82uy MF000314 : rt74en MF000315 : ec85g2 MF000316 : hv9t3w MF000317 : yu03we MF000318 : jk05p4 MF000319 : m4jv6f MF000320 : vb8net MF000321 : t15nfw MF000322 : w90plg MF000323 : a50ycx MF000324 : z64lkh MF000325 : b7h0gm MF000326 : m5k1fp MF000327 : 4zdlde MF000328 : y9ogs2 MF000329 : b3r7kg MF000330 : v2yiuz MF000331 : d6xvc7 MF000332 : mdo69w MF000333 : js6wy9 MF000334 : ti6lvf MF000335 : s6pivn MF000336 : hpsvir MF000337 : tqp868 MF000338 : g00gel MF000339 : bd0ird MF000340 : ui354u MF000341 : g7lhsv MF000342 : fd87yi MF000343 : n4tmvu MF000344 : jtylr2 MF000345 : z87kjg MF000346 : 7hjfrx MF000347 : p63xde MF000348 : g89knv MF000349 : 59utbv MF000350 : k21jnm MF000351 : 9ap6jd MF000352 : x8pqvc MF000353 : t4loea MF000354 : 5caqz4 MF000355 : b6esld MF000356 : jkbc91 MF000357 : u6djgr MF000358 : 82hvnw MF000359 : 67kqdf MF000360 : x8j502 MF000361 : 4unzjg MF000362 : z2kpoi MF000363 : 63hmde MF000364 : 72zdge MF000365 : 67ybdk MF000366 : jhdyw6 MF000367 : sa82kg MF000368 : d43dfw MF000369 : z21yew MF000370 : 1hgdtg MF000371 : a5fdnb MF000372 : 19dayn MF000373 : nv37ge MF000374 : zy5gde MF000375 : ujw4d5 MF000376 : z8fdf6 MF000377 : t1qzpd MF000378 : ztdfd3 MF000379 : eldoq2 MF000380 : tpmdf8 MF000381 : wknu6e MF000382 : gt4ebn MF000383 : sg29im MF000384 : 9alnbm MF000385 : 2k4h9e MF000386 : yyp8kq MF000387 : hf386t MF000388 : ec61gv MF000389 : qrd6dz MF000390 : b75hox MF000391 : z3x5v6 MF000392 : v1dkp9 MF000393 : r3udol MF000394 : 9afvx7 MF000395 : et4dpi MF000396 : je09jh MF000397 : gt20rb MF000398 : ho0leg MF000399 : h00kgp MF000400 : i32fgu MF000401 : yg86fe MF000402 : wpm09e MF000403 : 15rgnb MF000404 : wgbee5 MF000405 : z9h6e2 MF000406 : y3kv4d MF000407 : tpk0od MF000408 : e2ufla MF000409 : q9lpmz MF000410 : rnds69 MF000411 : ap03fh MF000412 : kowdf2 MF000413 : n5dpo1 MF000414 : zt9h6m MF000415 : rgsf4f MF000416 : fd301t MF000417 : zjiw30 MF000418 : e6qydm MF000419 : sd96ud MF000420 : gjlo0d MF000421 : ups00f MF000422 : qn4cdd MF000423 : wrmd68 MF000424 : 1ahves MF000425 : ghknyt MF000426 : ndle1q MF000427 : v57wzj MF000428 : sky2ur MF000429 : gvdx61 MF000430 : yrbnvc MF000431 : pd3ui9 MF000432 : zoopj4 MF000433 : rgf00e MF000434 : exqgg6 MF000435 : bv27yg MF000436 : 9myuip MF000437 : cts7eg MF000438 : gj61ed MF000439 : a8ouqw MF000440 : 5gmsef MF000441 : jw6dob MF000442 :hjg09g MF000443 : iqyjk9 MF000444 : e22htr MF000445 : vlz75f MF000446 : kutmv4 MF000447 : gqddge MF000448 : zlzd69 MF000449 : q7ndkj MF000450 : x7psw8 MF000451 : hmlt5s MF000452 : rt83zg MF000453 : tiong0 MF000454 : yn666d MF000455 : zeenp5 MF000456 : yu33gn MF000457 : r00pum MF000458 : ec8tch MF000459 : qz11gg MF000460 : 5splue MF000461 : xdier4 MF000462 : gspm8w MF000463 : aor46g MF000464 : e0tnjm MF000465 : f1abut MF000466 : gr91bv MF000467 : qc3ngd MF000468 : zs58kl MF000469 : hsonb3 MF000470 : env66h MF000471 : lwvf03 MF000472 : dt5slp MF000473 : qrnzx2 MF000474 : rmdg1o MF000475 : xuiqsk MF000476 : gapbsb MF000477 : h96knm MF000478 : x3dnmf MF000479 : qndd52 MF000480 : rnn6fs MF000481 : z1hnrb MF000482 : k5dnnm MF000483 : zu5ck6 MF000484 : w9ccpp MF000485 : q6uudl MF000486 : zpww33 MF000487 : aaenm1 MF000488 : gqmdss MF000489 : gt7ffn MF000490 : kit3dk MF000491 : evffjj MF000492 : n55hgk MF000493 : rhmmcd MF000494 : wu32yv MF000495 : jafxxe MF000496 : fgsy6t MF000497 : zj59gl MF000498 : rwppc5 MF000499 : qn48bk MF000500 : ujs2fs MF000501 : b2jz9t MF000502 : zsw8fn MF000503 : ruzfi4 MF000504 : qi0mrn MF000505 : iw7fnn MF000506 : ryvu95 MF000507 : wt0ybv MF000508 :tz1olg MF000509 : a63jsp MF000510 : s5jnfd MF000511 : gn4via MF000512 : swjj88 MF000513 : gmcf7s MF000514 : qnyskp MF000515 : ah30py MF000516 : xy7rnd MF000517 : ze13rn MF000518 : uldgm6 MF000519 : xtajoe MF000520 : zqlpod MF000521 : zfccig MF000522 : enyrm0 MF000523 : qn61dn MF000524 : ezpcfg MF000525 :s4apfj MF000526 : gv61ja MF000527 : at35kx MF000528 : r92gtr MF000529 : w8ioht MF000530 : f49dtt MF000531 : rc2jot MF000532 : z7ootj MF000533 : t6m9jg MF000534 : t9teza MF000535 : qg24lk MF000536 : apo0dn MF000537 : lip0dq MF000538 : tinbcx MF000539 : zy14dd MF000540 : zt8iwe MF000541 : mrs35gd MF000542 : ewtf7s MF000543 : zrs96i MF000544 : 9qdpmv MF000545 : r8puid MF000546 : e3jgfr MF000547 : w0invs MF000548 : o4dmah MF000549 : toupd6 MF000550 : r5nvgk MF000551 : ybazp6 MF000552 : biwzml MF000553 : 5niuaq MF000554 : eimgj3 MF000555 : wfi0vz MF000556 : qc7doi MF000557 : xi0psf MF000558 : tnd2hl MF000559 : mp6uhg MF000560 : uairxc MF000561 : lracg7 MF000562 : zie8nx MF000563 : espuxq MF000564 : u3fmq5 MF000565 : rw52lj MF000566 : eyco5k MF000567 : zymb1n MF000568 : vxp0fq MF000569 : sw22hi MF000570 : neoj3w MF000571 : y7ifed MF000572 : t4iwnm MF000573 : qz8lhg MF000574 : uvg2dl MF000575 : rspo1d MF000576 : ejsku0 MF000577 : gc3hue MF000578 : bwlg9f MF000579 : vr4bxd MF000580 : stnrv8 MF000581 : gomr5t MF000582 : ygqijf MF000583 : eswbvt MF000584 : ufra0v MF000585 : tpv6wb MF000586 : jbg9dv MF000587 : grtnpl MF000588 : ev5i0s MF000589 : vem5qz MF000590 : w8jsby MF000591 : fs3bh2 MF000592 : gr0hcn MF000593 : s6mt9g MF000594 : ph7jqz MF000595 : l8fetx MF000596 : kf1jnb MF000597 : rhdfe0 MF000598 : xti2zb MF000599 : gj6l9r MF000600 : vma4bf MF000601 : si0hqd MF000602 : zpr54j MF000603 : ux40iy MF000604 : ewl90d MF000605 : g30jza MF000606 : dm48kb MF000607 : wb35gb MF000608 : sv72hs MF000609 : lzy0lg MF000610 : s17dny MF000611 : cd37dm MF000612 : 3zpfmd MF000613 : ork4xd MF000614 : ec16de MF000615 : pw4mhb MF000616 : eri0az MF000617 : kw94dv MF000618 : c6jgl3 MF000619 : rogqb6 MF000620 : jf4hb8 MF000621 : zdn6yi MF000622 : jyre4d MF000623 : habxp3 MF000624 : hnvoi5 MF000625 : rmlsv2 MF000626 : rnwqo0 MF000627 : bi8fet MF000628 : uhf8dv MF000629 : gt7nrv MF000630 : ecl0iu MF000631 : sryg3f MF000632 : esozx0 MF000633 : rbpqzn MF000634 : zippw4 MF000635 : zwko9t MF000636 : zeqqnb MF000637 : zrttdm MF000638 : zqccq5 MF000639 : zeliuu MF000640 : zwmmgy MF000641 : zykkge MF000642 : zhvaav MF000643 : zgfi8f MF000644 : zou7tf MF000645 : snuggj MF000646 : gmo99r MF000647 : frnlgb MF000648 : rnghhd MF000649 : ecoinn MF000650 : gmmsdg MF000651 : wj0kzl MF000652 : smenf8 MF000653 : ynvaq4 MF000654 : mtwvf6 MF000655 : imhnvc MF000656 : gmxtui MF000657 : rvtnhh MF000658 : enthgj MF000659 : xntbjg MF000660 : kspfe4 MF000661 : q2msig MF000662 :r0gmkl MF000663 : x0hrwv MF000664 : ej77lg MF000665 : wbgvgt MF000666 : e6ioth MF000667 :vxldgf MF000668 : riop4g MF000669 : 0hmhgk MF000670 : fnrjf3 MF000671 : ghdf9i MF000672 : rgdgd5 MF000673 : hgemiq MF000674 : gfd784 MF000675 : tw4jvg MF000676 : weetfi MF000677 : tnhfgk MF000678 : husngd MF000679 : dhthfn MF000680 : fnusng MF000681 : hudnhk MF000682 : busnjf MF000683 : tujngj MF000684 : nhudgn MF000685 : byfsng MF000686 : ahfusg MF000687 : fbysng MF000688 : bynsjg MF000689 : fnhdui MF000690 : wbhfug MF000691 : gysgnd MF000692 : hysnjg MF000693 : nusngj MF000694 : gtydhu MF000695 : hudngj MF000696 : thfumg MF000697 : bdufnm MF000698 : husngj MF000699 : gjhthf MF000700 : ghdgjd MF000701 : tfhndu MF000702 : dnyudg MF000703 : bhdjkg MF000704 : dnhgif MF000705 : gdnhdgi MF000706 : fbhdgjd MF000707 : shfndih MF000708 : dhnjgds MF000709 : etyfhng MF000710 : dsehgnj MF000711 : nhydgiu MF000712 : wsfyunf MF000713 : fsgksdl MF000714 : fhryngk MF000715 : gdngdug MF000716 : sdsfgeh MF000717 : wtryuri MF000718 : sfgdhgn MF000719 : egdungh MF000720 : ytudhif MF000721 : zkw69e MF000722 :rmip0w MF000723 : zseqzz MF000724 : i9yljk MF000725 : e7yity MF000726 : lklmn0 MF000727 : erwrqt MF000728 : tsnjjh MF000729 : hgiun7 MF000730 : gcolgh MF000731 : jlknm8 MF000732 : zhvx66 MF000733 : j2nntr MF000734 : gbelhb MF000735 : xaiovc MF000736 : y7nav4 MF000737 : z3jypp MF000738 : genooi MF000739 : spj0mm MF000740 : ew14jj MF000741 : r9jgf3 MF000742 : q5jgtt MF000743 : r55yur MF000744 : qvvghh MF000745 : xx90hf MF000746 : wwnlkz MF000747 : xzzoop MF000748 : ecppd4 MF000749 : xa0oss MF000750 : sd33jj MF000751 : 8iennh MF000752 : o2jasa MF000753 : 3qoigg MF000754 : i5reng MF000755 : e66bvv MF000756 : lzztii MF000757 : l1wwqn MF000758 : rffkkl MF000759 : q3nbff MF000760 : r8oo00 MF000761 : s1nsms MF000762 : a3nngg MF000763 : x22mlo MF000764 : xswmjl MF000765 : ryyvv5 MF000766 : dd3kpp MF000767 : msd4ty MF000768 : issjyw MF000769 : xntt8n MF000770 : 0unnht MF000771 : rllfsa MF000772 : kt66nb MF000773 : zi99po MF000774 : f19jln MF000775 : alqqv3 MF000776 : gtrrze MF000777 : icotco MF000778 : ibmew7 MF000779 : 5iffsb MF000780 : zplm66 MF000781 : y3dxds MF000782 : j81xaq MF000783 : i113kl MF000784 : rtg998 MF000785 : s201hn MF000786 : z577df MF000787 : sj39ht MF000788 : rnn84g MF000789 : qmm1fe MF000790 : ds45hy MF000791 : ecp23j MF000792 : xa4jti MF000793 : ynngv7 MF000794 : haqol1 MF000795 : tboyi6 MF000796 : eondc3 MF000797 : hzgn55 MF000798 : yrjnmm MF000799 : dns0oe MF000800 : qlfybd MF000801 : ftmmo9 MF000802 : ylpwml MF000803 : 7jnrfb MF000804 : so0mqd MF000805 : zjnn5y MF000806 : gmodde MF000807 : pmeluj MF000808 : giukk4 MF000809 : udr3an MF000810 : 0jntvf MF000811 : opp0ru MF000812 : fm701i MF000813 : trzleb MF000814 : futre2 MF000815 : zelooy MF000816 : teernb MF000817 : bird6j MF000818 : desk5a MF000819 : booksd MF000820 : blueuy MF000821 : englis MF000822 : plushz MF000823 : zhidao MF000824 : shuxue MF000825 : truble MF000826 : zool0i MF000827 : pigmsc MF000828 : yuwen6 MF000829 : huaxue MF000830 : wulike MF000831 : daishu MF000832 : meishu MF000833 : lishi5 MF000834 : dilini MF000835 : yuedu3 MF000836 : dlsmj7 MF000837 : qicqmi MF000838 : amayun MF000839 : guanbi MF000840 : quanji MF000841 : xiaoke MF000842 : baojnu MF000843 : mabao0 MF000844 : feiyat MF000845 : guozon MF000846 : goumie MF000847 : uptoa9 MF000848 : auggod MF000849 : siaugi MF000850 : kuyoue MF000851 : xiuxui MF000852 : uyoahi MF000853 : gnijei MF000854 : uhznus MF000855 : iaceyr MF000856 : gnaila MF000857 : hehuag MF000858 : zhongh MF000859 : baicai MF000860 : paigut MF000861 : woguju MF000862 : huoxia MF000863 : tuanji MF000864 : haican MF000865 : xiaipp MF000866 : yueyin MF000867 : rongne MF000868 : xincha MF000869 : diansn MF000870 : tupo7h MF000871 : weigna MF000872 : ufizwi MF000873 : uwhand MF000874 : hshiqi MF000875 : ztaita MF000876 : mingsh MF000877 : nasoug MF000878 : inpnil MF000879 : utzhen MF000880 : oulngw MF000881 : qintia MF000882 : ianaij MF000883 : snauth MF000884 : caiouh MF000885 : uyiuak MF000886 : ufiaci MF000887 : nijigh MF000888 : gnayie MF000889 : munaix MF000890 : ihsonz MF000891 : adafij MF000892 : ihzuoy MF000893 : gnahci MF000894 : ixuohs MF000895 : nainil MF000896 : uloabe MF000897 : oagite MF000898 : gnehcg MF000899 : iusanl MF000900 : iatoat MF000901 : naijes MF000902 : aqdi96 MF000903 : fylou7 MF000904 : iewmig MF000905 : iabhui MF000906 : xtdgw7 MF000907 : drhyb4 MF000908 : wushax MF000909 : caihyc MF000910 : ylplwm MF000911 : u3idjj MF000912 : ekejqq MF000913 : newwin MF000914 : tntevv MF000915 : xo0laa MF000916 : smihhr MF000917 : elppas MF000918 : imoaim MF000919 : riuxjj MF000920 : t0umwq MF000921 : v8betr MF000922 : psjvat MF000923 : ko0lrq MF000924 : tvuqz9 MF000925 : kl3hzz MF000926 : uleysh MF000927 : yksetn MF000928 : baina1 MF000929 : joyckm MF000930 : tengua MF000931 : kuooyn MF000932 : disjmw MF000933 : bsyang MF000934 : ynzjzy MF000935 : spwywd MF000936 : kdlj09 MF000937 : exprss MF000938 : shiuyn MF000939 : jiyun8 MF000940 : hepeiu MF000941 : gyqyzz MF000942 : zahgnj MF000943 : lycwyi MF000944 : guihua MF000945 : qiujia MF000946 : ojiexi MF000947 : nxinci MF000948 : sehngi MF000949 : yzierw MF000950 : eijiaj MF000951 : ieshui MF000952 : zhilin MF000953 : qizhew MF000954 : enfeng MF000955 : zuoxia MF000956 : ngyuec MF000957 : aomuyo MF000958 : ubenxi MF000959 : nheqiu MF000960 : mrzhei MF000961 : nljcbh MF000962 : djdqu2 MF000963 : ltaoj3 MF000964 : qgflrw MF000965 : 4glxbg MF000966 : rendsh MF000967 : sgzlcb MF000968 : lsck6g MF000969 : jtopan MF000970 : jq7qdx MF000971 : jsruha MF000972 : ysdshj MF000973 : yxgjdn MF000974 : x9qcjl MF000975 : xozyf0 MF000976 : ysgjin MF000977 : txjqlf MF000978 : fyanme MF000979 : ggsh3y MF000980 : dqyxwo MF000981 : zshhua MF000982 : rsrume MF000983 : yzhljy MF000984 : yulinn MF000985 : hcqqie MF000986 : dctinw MF000987 : zouycx MF000988 : dmzywx MF000989 : lnuchu MF000990 : lzcfao MF000991 : zsxkly MF000992 : jwuyny MF000993 : nianqq MF000994 : qliyab MF000995 : makcct MF000996 : dqzigs MF000997 : gnkllq MF000998 : qjjxjx MF000999 : yliuan MF001000 : zqsrrt MF001001 : zymxhh MF001002 : yikout MF001003 : suowei MF001004 : zhexue MF001005 : fanfln MF001006 : gaikuo MF001007 : suanzo MF001008 : lantuu MF001009 : tangji MF001010 : daraog MF001011 : yuzgjn MF001012 : hduxfu MF001013 : xfeyiz MF001014 : dijhlu MF001015 : jsjedw MF001016 : kmjyoy MF001017 : whatbo MF001018 : lgsndx MF001019 : xrxcfz MF001020 : xzwlie MF001021 : jcxchi MF001022 : thzyxj MF001023 : bzjdnm MF001024 : ddygzw MF001025 : ywxzfn  MF001026 : qlsncn MF001027 : tzjzsb MF001028 : jymnia MF001029 : ztrhei MF001030 : bafjxn MF001031 : ncxyyl MF001032 : zhqijz MF001033 : ktxjrs MF001034 : fyuqis MF001035 : zyzwyj MF001036 : ygfbls MF001037 : zdtiyh MF001038 : xianys MF001039 : tuncjg MF001040 : hhaoss MF001041 : hwjiya MF001042 : zhuixy MF001043 : qixwqn MF001044 : czyylz MF001045 : dguany MF001046 : qrzsby MF001047 : rzbtwx MF001048 : njxxia MF001049 : qianks MF001050 : dhyclw MF001051 : hstzhu MF001052 : cycize MF001053 : duoqzy MF001054 : zdrsbd MF001055 : yxlmol MF001056 : bukecg MF001057 : zukclr MF001058 : xydezz MF001059 : dusbai MF001060 : ykqbdh MF001061 : szyits MF001062 : mlipin MF001063 : uikmjh MF001064 : cskjkf MF001065 : doingk MF001066 : losimg MF001067 : zuozly MF001068 : tdaisr MF001069 : sbuzgo MF001070 : yuxzmn MF001071 : sbzshe MF001072 : ylozli MF001073 : sislsh MF001074 : wiewdx MF001075 : thsjlu MF001076 : cserlq MF001077 : txyhru MF001078 : wlwbad MF001079 : keytsq MF001080 : yuejji MF001081 : wszzle MF001082 : wanblx MF001083 : nynzgl MF001084 : kzyhlz MF001085 : thyuji MF001086 : jityzg MF001087 : wulinr MF001088 : enbuyu MF001089 : yxixin MF001090 : wlzyji MF001091 : hufthl MF001092 : jansbb MF001093 : facxme MF001094 : loybfe MF001095 : yurshy MF001096 : fuqian MF001097 : yuqion MF001098 : ljshyn MF001099 : bdeyis MF001100 : zippsz MF001101 : zicumx MF001102 : xmax7d MF001103 : zwtji4 MF001104 : luloyx MF001105 : zntqle MF001106 : xnsywz MF001107 : qzexhz MF001108 : wlebjz MF001109 : yyyeky MF001110 : jxmfzy MF001111 : 5mcszo MF001112 : cyxxhd MF001113 : gglcct MF001114 : sgyxlb MF001115 : wsbscl MF001116 : cfnsjr MF001117 : ycsjnx MF001118 : gdxtxx MF001119 : ybmzzz MF001120 : bxtzqn MF001121 : qjjiub MF001122 : jbjhez MF001123 : rsdyxj MF001124 : tswcby MF001125 : qjsjhf MF001126 : ghqgss MF001127 : cahwxc MF001128 : sdqmcd MF001129 : yqhcfz MF001130 : wrzslz MF001131 : skzjpg MF001132 : hfxqin MF001133 : jpgyqy MF001134 : yhnwrt MF001135 : molewr MF001136 : wqyemo MF001137 : jztxry MF001138 : sfjrze MF001139 : wbogsw MF001140 : srwbww MF001141 : yrchey MF001142 : luyytb MF001143 : clxjex MF001144 : jrzyjg MF001145 : hgzbdu MF001146 : enothr MF001147 : zpoojg MF001148 : yzaywg MF001149 : xmalay MF001150 : jeckma MF001151 : sixtyj MF001152 : school MF001153 : teache MF001154 : eventh MF001155 : workno MF001156 : timeth MF001157 : tomqoo MF001158 : goodlu MF001159 : someby MF001160 : mornin MF001161 : hievre MF001162 : wechat MF001163 : weixin MF001164 : sleepi MF001165 : beerur MF001166 : kingdm MF001167 : intern MF001168 : explor MF001169 : autocd MF001170 : dwfvie MF001171 : wz67fx MF001172 : azxmxx MF001173 : mfllxt MF001174 : preytx MF001175 : ynyght MF001176 : uryoqp MF001177 : niupoh MF001178 : dsc32m MF001179 : hyptgl MF001180 : jh50mt MF001181 : aefiej MF001182 : tszqul MF001183 : kutgxi MF001184 : oyxesc MF001185 : qyksdj MF001186 : zjwili MF001187 : sxgjsi MF001188 : dnuiat MF001189 : xesell MF001190 : coggss MF001191 : cfenop MF001192 : cquiut MF001193 : yunxi6 MF001194 : hwjerz MF001195 : azjlgy MF001196 : kiuznv MF001197 : fnwedb MF001198 : hystyu MF001199 : zkwjmm MF001200 : cxgcha MF001201 : dbjsjh MF001202 : hzqtxy MF001203 : zyqien MF001204 : ylahyz MF001205 : qwendn MF001206 : yqjyxp MF001207 : msdoii MF001208 : huijin MF001209 : luohua MF001210 : qibost MF001211 : hjxzzj MF001212 : lhnuyy MF001213 : lqsymz MF001214 : cgjuzu MF001215 : cpwing MF001216 : xlebzq MF001217 : rnh6dz MF001218 : srto0b MF001219 : opjsty MF001220 : b2clvy MF001221 : wjyle2 MF001222 : pinche MF001223 :yxlmgj MF001224 : zoheym MF001225 : souyan MF001226 : zidgyh MF001227 : cvmhco MF001228 : jslsdy MF001229 : jiugui MF001230 : gkscq6 MF001231 : zsoa23 MF001232 : dsqtai MF001233 : yuti77 MF001234 : hyclgl MF001235 : xxrzjs MF001236 : gfuxzi MF001237 : peixbn MF001238 : tbddgl MF001239 : gdzicg MF001240 : alizid MF001241 : zippyu MF001242 : hdluoy MF001243 : kkuyn7 MF001244 : sqzfu8 MF001245 : i1yrdw MF001246 : joyume MF001247 : qiie90 MF001248 : 2pslj7 MF001249 : wlkecg MF001250 : ddwli6 MF001251 : cvs5id MF001252 : amazen MF001253 : iso9yn MF001254 : z7ogfl MF001255 : gtj3pa MF001256 : jian66 MF001257 : wzryho MF001258 : z77mfg MF001259 : i504er MF001260 : tbke50 MF001261 : ptx8j2 MF001262 : cd88kl MF001263 : lmti1v MF001264 : d50kva MF001265 : sxtrli MF001266 : xsbkei MF001267 : xcuns2 MF001268 : ttwgzj MF001269 : zynhr2 MF001270 : wsliba MF001271 : sebtoq MF001272 : u72mcc MF001273 : g29jbb MF001274 : gpplr4 MF001275 : ztw7fj MF001276 : 9sro0l MF001277 : nesvec MF001278 : speed8 MF001279 : gnn3j6 MF001280 : yapohn MF001281 : msike0 MF001282 : cjilxh MF001283 : bozgqp MF001284 : hblexy MF001285 : xmayi3 MF001286 : xzhucm MF001287 : wxmofc MF001288 : libaih MF001289 : fgqhng MF001290 : lanya6 MF001291 : jixmic MF001292 : xrcody MF001293 : hejind MF001294 : sicgun MF001295 : tkodzg MF001296 : fangka MF001297 : xcmobi MF001298 : mmdodz MF001299 : qiniuy MF001300 : dlmedz MF001301 : byuyix MF001302 : jbhuxs MF001303 : cshpvi MF001304 : lujppi MF001305 : wxqqlg MF001306 : slnvpk MF001307 : zxzibo MF001308 : canglp MF001309 : apsdji MF001310 : jwhiao MF001311 : zyspki MF001312 : bgzxdj MF001313 : kutiky MF001314 : sjghsi MF001315 : hlsxbe MF001316 : lsxgdm MF001317 : yiwqlf MF001318 : dyazim MF001319 : tanchs MF001320 : yiqtxz MF001321 : baoshi MF001322 : 5shqsj MF001323 : zphai2 MF001324 : plnxqc MF001325 : xexshl MF001326 : saylxj MF001327 : xwsmfu MF001328 : xjidvy MF001329 : fwapwn MF001330 : wijyub MF001331 : zxrsjc MF001332 : hsc5vl MF001333 : zyjuhi MF001334 : xiqfyu MF001335 : yemeis MF001336 : faizha MF001337 : xzdjjs MF001338 : ljmpdi MF001339 : jqieyg MF001340 : iumoba MF001341 : dxyzmt MF001342 : jstxim MF001343 : mkckej MF001344 : fxqidz MF001345 : chongz MF001346 : dxiuzb MF001347 : jijian MF001348 : erciyu MF001349 : ssbblt MF001350 : fgniha MF001351 : qiwatm MF001352 : bpdxhm MF001353 : dxhzkx MF001354 : wmaiir MF001355 : msdcxt MF001356 : fxctou MF001357 : zywsdb MF001358 : zidcji MF001359 : ruoxia MF001360 : bendis MF001361 : jihnhc MF001362 : qlvbix MF001363 : yiyuzn MF001364 : zhifub MF001365 : esyiyh MF001366 : bbqnae MF001367 : fangka MF001368 : gongshi MF001369 : jiauoy MF001370 : wangzh MF001371 : zximms MF001372 : yixuet MF001373 : haoguo MF001374 : bymdwg MF001375 : zocdiy MF001376 : datoke MF001377 : jxcprt MF001378 : yghaox MF001379 : xczjib MF001380 : ysdriz MF001381 : yinyeu MF001382 : zidong MF001383 : dshizb MF001384 : fengsg MF001385 : zuocai MF001386 : bastng MF001387 : zygglm MF001388 : wiqgmh MF001389 : astfgh MF001390 : glinmu MF001391 : langrg MF001392 : yisqmi MF001393 : weipan MF001394 : wzdhlt MF001395 : zwucsm MF001396 : sjzibo MF001397 : xuanho MF001398 : ziudby MF001399 : taitan MF001400 : sjmigh MF001401 : mzanum MF001402 : osijsq MF001403 : jietuo MF001404 : zbopxi MF001405 : kuquyc MF001406 : fuwaah MF001407 : xjdkpo MF001408 : katsjb MF001409 : miaojl MF001410 : wahjin MF001411 : duanxb MF001412 : fldide MF001413 : jiukuw MF001414 : daoaui MF001415 : wxnuoc MF001416 : buyujj MF001417 : zoupye MF001418 : sheioj MF001419 : cswiln MF001420 : renscb MF001421 : yunbao MF001422 : xwasic MF001423 : dsjcug MF001424 : qzwhus MF001425 : wberoi MF001426 : aikeon MF001427 : yingsi MF001428 : weikeb MF001429 : fujikl MF001430 : zizhut MF001431 : scqisc MF001432 : wtaolk MF001433 : diancu MF001434 : hujyn2 MF001435 : lianmg MF001436 : baijia MF001437 : qmizob MF001438 : zehwuj MF001439 : zheiyr MF001440 : wivimu MF001441 : amatpq MF001442 :obyilt MF001443 : ricgne MF001444 : iahidj MF001445 : kanaup MF001446 : zxbaqn MF001447 :afexno MF001448 :mengde MF001449 :tupxcx MF001450 :lvsewd MF001451 : xybbqy MF001452 : cjihbo MF001453 : snuayv MF001454 : gloufg MF001455 : lyzndk MF001456 : gcmuxl MF001457 : hlwyqj MF001458 : jianfe MF001459 : tkmyud MF001460 : weimei MF001461 : kuchun MF001462 : jiaoca MF001463 : tybisj MF001464 : haidis MF001465 : yishut MF001466 : cryisg MF001467 : ecscwu MF001468 : youlin MF001469 : r8isbn MF001470 : dds2jn MF001471 : meitan MF001472 : meijia MF001473 : fmxmly MF001474 : flyple MF001475 : qyefkd MF001476 : wjiudn MF001477 : weiket MF001478 : zhihui MF001479 : jindno MF001480 : xnmyiu MF001481 : fanqie MF001482 : kaisgo MF001483 : tcpcxx MF001484 : xyssch MF001485 : daohng MF001486 : mendih MF001487 : fwoutw MF001488 : xcjtho MF001489 : qlikja MF001490 : meibud MF001491 : wixnkj MF001492 : maiwia MF001493 : cyjing MF001494 : dyxixg MF001495 : zhajnh MF001496 : infgjh MF001497 : taikgo MF001498 : wuliuq MF001499 : tiaowu MF001500 : hetsys MF001501 : mofapa MF001502 : cspiid MF001503 : dyhcsp MF001504 : fczjie MF001505 : htglxm MF001506 : naguan MF001507 : qiyejs MF001508 : gaotyz MF001509 : jdstbu MF001510 : dicnga MF001511 : giu76r MF001512 : xyi9oq MF001513 : zognew MF001514 : xysqey MF001515 : kmijis MF001516 : qidnkh MF001517 : jibirx MF001518 : jqiugb MF001519 : hoysc7 MF001520 : xanguk MF001521 : huiju8 MF001522 : yioali MF001523 : yckqgz MF001524 : btzspo MF001525 : cunta8 MF001526 : zhansg MF001527 : quanhu MF001528 : dsiuvc MF001529 : qcs5dm MF001530 : jiaow5 MF001531 : uijeyt MF001532 : nujqsv MF001533 : fnauyx MF001534 : sfhzsb MF001535 : iuhtpt MF001536 : msisxt MF001537 : wyebsc MF001538 : hujbzx MF001539 : shiwuz MF001540 : smcimj MF001541 : fdczlg MF001542 : flvdni MF001543 : tiuklg MF001544 : qrnjie MF001545 : fawivv MF001546 : zcgbok MF001547 : henitn MF001548 : hnaoct MF001549 : xuespq MF001550 : jzzsds MF001551 : hejiop MF001552 : imhuts MF001553 : tuzidm MF001554 : neidna MF001555 : shitxb MF001556 : dnpunm MF001557 : pyjsai MF001558 : kabann MF001559 : xssqze MF001560 : nertwo MF001561 : sendng MF001562 : chomhv MF001563 : nerner MF001564 : ebvwdr MF001565 : diczds MF001566 : iylmup MF001567 : parkpp MF001568 : dsxufu MF001569 : wssgpp MF001570 : nanuag MF001571 : rrqsib MF001572 : chdaox MF001573 : qugunq MF001574 : fancan MF001575 : ipoast MF001576 : qslbug MF001577 : hcnbon MF001578 : zpsidq MF001579 : zxketn MF001580 : xpwdos MF001581 : 5music MF001582 : jpgscg MF001583 : gumptt MF001584 : gonses MF001585 : ggmyrt MF001586 : shibum MF001587 : migica MF001588 : qpxycx MF001589 : jdlesg MF001590 : sdenwl MF001591 : lagnmi MF001592 : yinuey MF001593 : xytaos MF001594 : junwhu MF001595 : uitgjh MF001596 : irfumt MF001597 : yxsbok MF001598 : txzumn MF001599 : beding MF001600 : cemybq MF001601 : cugecp MF001602 : ptskmm MF001603 : 6jehyp MF001604 : fmdtah MF001605 : baimok MF001606 : timian MF001607 : mschot MF001608 : wiexud MF001609 : gleona MF001610 : hcxcuu MF001611 : wscxgn MF001612 : qishic MF001613 : jtcwug MF001614 : caoihs MF001615 : ctsgl8 MF001616 : zaikao MF001617 : jzmsct MF001618 : geblog MF001619 : mcssol MF001620 : movies MF001621 : gfxcux MF001622 : qicshp MF001623 : bgsdku MF001624 : snsoll MF001625 : lvyoux MF001626 : jsdytt MF001627 : xyshib MF001628 : yilzui MF001629 : qiuntt MF001630 : jaxiqu MF001631 : dongke MF001632 : xuejio MF001633 : zaixan MF001634 : peidan MF001635 : yuance MF001636 : zmaidx MF001637 : doubnv MF001638 : ceouto MF001639 : soulou MF001640 : cmsaij MF001641 : liiacu MF001642 : ctisxy MF001643 : wluotn MF001644 : xnlcai MF001645 : xpbmpd MF001646 : godlls MF001647 : xiguas MF001648 : qxgzlg MF001649 : pakerc MF001650 : shfuwu MF001651 : douyin MF001652 : suiniy MF001653 : wmubpi MF001654 : iiymcr MF001655 : lriyuc MF001656 : gerenk MF001657 : tuplog MF001658 : ihsxpv MF001659 : maiklh MF001660 : shzuna MF001661 : fdouyu MF001662 : wxzdin MF001663 : mifeng MF001664 : youqnh MF001665 : hhbirt MF001666 : yunqcj MF001667 : maoqui MF001668 : zhikao MF001669 : oliveo MF001670 : msc76q MF001671 : bishen MF001672 : 78wmre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值