基于java(jsp)计算机等级考试查询系统设计开发

第一章   引言

 

计算机等级考试查询系统是有其开发的必要性的,它的应用将大大节省了学校的人力资源,从而从人工劳动中解脱出来。我们这次开发的软件系统一共包括了三个部分:等级考试的报名系统、查询系统和管理系统。其中管理系统是另外两部分的总汇。我设计的这部分主要是查询系统,其中包含了超级管理员的查询、系管理员的查询和普通学生的查询。这就需要分别限定查询的权限问题。我个人认为是难点中的难点。因为这是我第一次涉及JSP技术,所以我用到的还只是很浅显的一部分,更深奥的还有待我在今后的学习当中逐渐的把它解决。

计算机等级考试的查询系统是此次开发过程当中不可缺少的组成部分,它与另外两个系统相辅相成,形成完整的统一,尤其是其中的数据库,更是连接这三部分的纽带所在。

以下我将分几个章节来进行具体介绍。

 

关于JSP

 

 

简 介

 

扫描二维码关注公众号,回复: 9036202 查看本文章

JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

 

技术特点

1•将内容的产生和显示进行分离
  使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标识和Beans中,那么其它人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
  
2•强调可重用的群组件
  绝大多数JSP页面依赖于可重用且跨平台的组件(如:JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种群组织在他们现有的技能和优化结果的开发努力中得到平衡。
  
3•采用标识简化页面开发
  
  Web页面开发人员不会都是熟悉脚本语言的程序设计人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容产生所需要的。标准的JSP标识能够存取和实例化 JavaBeans组件,设定或者检索群组件属性,下载Applet,以及执行用其它方法更难于编码和耗时的功能。
  
  通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其它人员可以为常用功能建立自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
  
  JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2EE的一个成员,JSP技术能够支持高度复杂的基于Web的应用。
  
  由于JSP页面的内置脚本语言是基于Java程序设计语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
  
  作为Java平台的一部分,JSP拥有Java程序设计语言“一次编写,各处执行”的特点。随着越来越多的供货商将JSP支持加入到他们的产品中,您可以使用自己所选择的服务器和工具,修改工具或服务器并不影响目前的应用。

 

 

应用范围

JSP同PHP3类似,几乎可以执行于所有平台。如Win NT,Linux,Unix。在NT下IIS通过一个外加服务器,例如JRUN或者ServletExec,就能支持JSP。知名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的执行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。

 

性能比较

有人做过试验,对ASP、JSP、PHP这三种语言分别做回圈性能测试及存取Oracle数据库测试。
  
  在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而ASP、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。
  
   数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP则 需要 73 秒。

 

前景分析

与ASP、PHP相比,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere。它们都是通过CGI来提供支持的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。

 

 

 

 

 

 

 

 

 

第二章    需求分析

 

 

一、开发环境

1软件应用

本系统采用j2sdk1.4.1_07版本进行开发,使用RESIN服务器当做测试服务器,采用mm.mysql.jdbc-2.0pre5驱动数据库。使用Dreamweaver编写JSP语言。

2.环境配置

Windowsxp下配置环境变量,添加变量名为JAVA_HOME 值为D:\j2sdk1.4.1_07,添加变量名为classpath 值为D:\mm.mysql.jdbc-2.0pre5,在已有的PATH环境变量里添加值D:\j2sdk1.4.1_07\bin。这样开发环境配置完毕。

二、可行性研究

根据我们学校的实际情况,本系统主要分为三个部分:超级管理员、各系管理员和学生用户。

超级管理员可以对任意信息进行查询。包括按系查询、按年级查询、按姓名查询、按学号查询、按性别查询、按时间段查询、按等级查询和按考试类别查询等等。还可以进行复合查询。比如按系和按年级同时查询,那样就会列出所有符合条件的信息,然后加以选择性查询。各系管理员由超级管理员分配其查询权限后,可以对本系的学生进行任意查询,同样也是包括按年级查询、按姓名查询、按学号查询、按性别查询、按时间段查询、按等级查询和按考试类别查询等。也可以进行复合查询,比如按年级和姓名等。但是不能对非本系的人员进行任何查询。学生用户由超级管理员分配其查询权限后,只能通过自己的学号、姓名、性别、民族、身份证号、系别、年级等相关项进行查询,可以是单独输入某一项信息,也可以进行复合查询。

 

 

 

三、系统流程图及数据流图

1.系统流程图

 

 

报单

数据库

输入数据

输出数据

查询系统

 

 

 

2.数据流图

  1. 基本结构数据流图

 

查询系统

用户输出

用户输入

数据输出

 

 

 

  1. 具体功能流程图

 

四、需求分析

需求分析简单的说就是分析用户的要求。需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种要求,然后在此基础上确定新系统的功能。也就是说我们希望系统做什么。这个阶段是对系统认识最为全面的阶段,应该是用户基本上确定自己的最终要求阶段。

 

1.系统的功能

  1. 超级管理员的功能:超级管理员可以对任意信息进行查询。包括按系查询、按年级查询、按姓名查询、按学号查询、按性别查询、按时间段查询、按等级查询和按考试类别查询等等。还可以进行复合查询。比如按系和按年级同时查询,那样就会列出所有符合条件的信息,然后加以选择性查询。
  2. 各系管理员的功能:可以对本系的学生进行任意查询,同样也是包括按年级查询、按姓名查询、按学号查询、按性别查询、按时间段查询、按等级查询和按考试类别查询等。也可以进行复合查询,比如按年级和姓名等。但是不能对非本系的人员进行任何查询。
  3. 学生用户的功能:通过自己的学号、姓名、性别、民族、身份证号、系别、年级等相关项进行查询,可以是单独输入某一项信息,也可以进行复合查询。

 

 

2.逻辑结构设计

 

 

 

这是经过多次反复修改之后的总体数据流图,力求达到详尽,有所不足会在今后不断的学习当中改进。这详细的数据流图会对下一步的操作起到至关重要的作用。

 

 

 

 

第三章   数据库设计

 

 

1.用户

字段名

含义

类型长度

是否为空

主键

user-no

用户代号

char(10)

 

user-name

用户名

char(20)

 

 

 

2.系别

字段名

含义

类型长度

是否为空

主键

dept-no

系号

char(3)

 

dept-name

系名称

char(20)

 

 

 

3.考试信息

字段名

含义

类型长度

是否为空

主键

test-no

考试代号

char(10)

test-name

考试名称

char(20)

 

test-grade

考试等级

char(10)

 

 

 

 

4.学生

字段名

含义

类型长度

是否为空

主键

s-no

学号

char(20)

s-name

学生姓名

char(10)

 

s-deptno

学生系别号

char(3)

 

s-sex

学生性别

char(2)

 

s-grade

学生年级

char(10)

 

s-cardno

学生身份证号

char(20)

 

s-minzu

学生民族

char(10)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第四章   功能设计

 

明确了系统应该做什么之后,下一步我们应该知道系统应该怎么做。我们的目标是用最好的办法来解决问题。那么创建模块就显得至关重要了,要掌握每个模块的作用以及模块与模块之间的关系。这是详细设计的初级阶段。

一、查询功能模块

1.超级管理员的查询功能模块

 

超级管理员的查询功能

按系查询任意用户信息

按年级查询任意用户信息

按姓名查询任意用户信息

按学号查询任意用户信息

按时间段查询任意用户信息

按等级查询任意用户信息

按考试类别查询任意用户信息

复合条件查询任意用户信息

2.系管理员的查询功能模块

 

超级管理员的查询功能

按年级查询本系任意用户信息

按姓名查询本系任意用户信息

按学号查询本系任意用户信息

按时间段查询本系任意用户信息

按等级查询本系任意用户信息

按考试类别查询本系任意用户信息

复合条件查询本系任意用户信息

 

 

3.普通学生用户的查询功能模块

 

学生用户的查询功能

按姓名查询本人用户信息

按学号查询本人用户信息

按身份证号查询本人用户信息

复合条件查询本人用户信息

按系别查询本人用户信息

 

 

二、详细设计阶段

这是整个设计的核心部分,它起到承前启后的作用,既对前面的准备阶段做了总结,又对后面的代码部分做了准备。

 

1.超级管理员查询流程图

 

 

 

开始

输入账号和密码

判断是否为空

提示错误信息

 

选择要查询的条件

按系查询任意用户信息

按年级查询任意用户信息

按姓名查询任意用户信息

按学号查询任意用户信息

按时间段查询任意用户信息

按等级查询任意用户信息

按考试类别查询任意用户信息

复合条件查询任意用户信息

 

输出信息

   
 

上传到数据库

 
 

 

 

 

 

 

 

 

 

 

 

2.学生用户查询流程图

 

 

 

 

开始

输入账号和密码

判断是否为空

提示错误信息

 

 

选择要查询的条件

按姓名查询本人用户信息

按系别查询本人用户信息

按学号查询本人用户信息

按身份证号查询本人用户信息

复合条件查询本系任意用户信息

上传到数据库

输出数据

 

 

 

3.系管理员查询流程图

 

 

 

 

 

开始

输入账号和密码

判断是否为空

提示错误信息

 

 

选择要查询的条件

按年级查询本系任意用户信息

按姓名查询本系任意用户信息

按学号查询本系任意用户信息

按时间段查询本系任意用户信息

按等级查询本系任意用户信息

按考试类别查询本系任意用户信息

复合条件查询本系任意用户信息

上传到数据库

输出数据

三、代码

所谓代码就是将人的语言转换成机器语言。那么选择一种合适的编程语言显得重要了起来。选择正确的语言不仅可以节省时间也节省了很多人力和物力。并能使我们更好的掌握这门语言。我们此次的设计要求是根据“延边大学计算机等级考试网上查询系统”的具体要求而做,所以选用的是JSP+MYSQL的设计环境进行操作。用Dreamweaver进行编写。由于对JSP是完全陌生的,所以难免在开发的过程中遇到了许许多多的问题,下面就简单的举出几个例子:

 

1.控制页面跳转的语句

<%

if(request.getParameter("action")!=null&&request.getParameter("action").equals("error"))

 {

 %>

  <tr>

    <td colspan="2" align="center" class="style1">用户名或密码错误,请重新输入!</td>

  </tr>

<%

}

%>

<%if(request.getParameter("action")!=null&&request.getParameter("action").equals("lock"))

 {

 %>

 <tr>

    <td colspan="2" align="center" class="style1">此用户已被锁定!</td>

  </tr>

 <%

}

%>

 

2.控制页面显示的语句

<%

  if(request.getParameter("student_no")!=null)

  {

  if(Recordset1_isEmpty!=true)

  {

  %>

<%

  }

  else

  {

  %>

  <tr>

    <td><div align="center" class="mainTitle">你输入的学号不存在!</div></td>

  </tr>

  <%

  }

  }

  %>

 

3.控制页面显示语句2

  <%

  if(request.getParameter("student_no")!=null)

  {

  if(Recordset1_isEmpty!=true)

  {

  %>

 

4.控制选择条件语句

<%

String search_total="1";

if(request.getParameter("student_dept")!=null && request.getParameter("student_grade")!=null && request.getParameter("testgrade")!=null && request.getParameter("testname")!=null)

{

if(!request.getParameter("student_dept").equals("0"))

search_total="student_dept='"+request.getParameter("student_dept")+"'";

        if(!request.getParameter("student_grade").equals("0"))

               search_total+=" and student_grade='"+request.getParameter("student_grade")+"'";

if(!request.getParameter("testgrade").equals("0"))

               search_total+=" and testgrade='"+request.getParameter("testgrade")+"'";

    if(!request.getParameter("testname").equals("0"))

               search_total+=" and testname='"+request.getParameter("testname")+"'";

             

}

%>

5.接受条件语句

<%

String Recordset1__MMColParam = "1";

if (request.getParameter("student_no") !=null) {Recordset1__MMColParam = (String)request.getParameter("student_no");}

%>

 

四、代码的实现

1.超级管理员的显示页面

由于超级管理员具有查询任意信息的权限。但是为了在学校数据库方面的内容的一致性,减少查询时带来的不必要的麻烦,我选择了下拉式的查询菜单。如下图所示的选择页面:

 

 

 

 

其中可以按专业、年级、学号、姓名等等的内容查询。选择相关信息后提交到数据库中,这样就会根据所选择的内容出现对应的资料。比如我对所有的条件都不加以限制的话将会出现如下信息:

 

 

 

 

 

 

 

 

如果我要查询系别为401,年级为2001级的用户信息的话,就出现如下的结果:

 

 

 

如果我要对系别为401,年级为2001,性别为男,报考等级为1级的条件加以限制的话,会出现以下结果:

 

 

2.系管理员的显示页面

由于系管理员只有查询本系信息的权限。也是同样的道理,为了统一数据库和避免错误,我用了下拉式的菜单,用户界面如下图所示:

 

 

 

选择相关信息后提交到数据库中,这样就会根据所选择的内容出现对应的资料。比如我对所有的条件都不加以限制的话将会出现如下信息:

 

 

 

 

这样的话,是哪个系的导员就可以查哪个系的情况了。比如我对系号是401,年级为2001的条件进行查询的话,将会出现如下显示:

 

 

 

 

 

 

 

 

 

 

3.学生用户的显示页面

由于学生只可以查自己的信息,所以无须用下拉式的菜单了,如下图:

 

 

当正确的输入自己的学号时,会出现如下信息:

 

 

如果你输入了数据库中没有的记录,就出现以下信息:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第五章    测试

软件测试在开发软件过程中是一个不可缺少的部分,因为在开发软件系统的漫长过程中面对极其错综复杂的问题。人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺的。因为,在软件生命周期的各个阶段都不可避免地产生差错,我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正错误。测试的目的就是在软件投入生产运行之前,尽可能多地发现并纠正软件中的错误。基于上述的原因,我在编码过程中进行了模块测试,编码结束后又进行了系统测试和验收测试。

下面一一讲述测试方案,测试过程以及测试结构。

  • 模块测试

1.测试方案

采用了白盒测试(又称结构测试),即按照程序内部的逻辑结构,检验程序中的每条通路是否都能按预定的要求正常工作。

 

2.测试过程

主要检验各个模块之间的接口,每个被调用模块是否正确接收参数,每个调用模块是否能调用每个自己想要调用的模块。

 

3.测试结果

测试结果表明,每个模块之间的接口都吻合,即被调用模块都能正确接收参数,调用模块能调用自己想要调用的每个模块。

 

二、系统测试和验收测试

1.测试方案

采用了黑盒测试(又称功能测试),即检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且持外部信息的完整性。

 

2.测试过程

主要检验是否能正确实现每个功能,每个功能是否能按照规格说明书的要求正常使用,数据库的记录是否符合要求。

3.测试结果

 

测试结果表明符合设计要求,各项功能基本上实现,产生记录符合要求。

 

 

 

 

结 束 语

 

 

“只要功夫深,铁杵磨成针”终于经过我不懈的努力,一个完全陌生的事物在我眼前慢慢放出了光芒。由于我在毕业设计的前段时间出去实习了一阵子,所以当同学们都已经开始投入到JSP的学习的时候,我对它还是一无所知的。由于我起步的比较晚,所以和其他同学相比,我所掌握的还只是很浅很浅的一部分,但是在我回到学校之后开始做设计的时候,我得到了老师和同学的鼎力相助,这使我知道了众人拾柴火焰高,合作的力量是伟大的,使我在较短的时间里了解了JSP操作的简单原理,以及和数据库的知识怎样恰当的联系在一起。在这里我要特别的感谢一下同学和老师的帮助,没有你们或许就没有我今天的成绩。

      通过这次的毕业设计,大大的提高了我对所学知识的应用能力,并能及时的把理论联系到实践中去,开阔了视野也增长了知识。由于是第一次接触这方面的东西,所以实践当中遇到了许许多多应付不来的问题,不过还好通过查找资料,上网查询,以及大家的帮助我才得以解决。

      总之这次毕业设计开发了一项这么有意义的东西是使我受益终生的,我想对我日后的工作也一定会有帮助。所以我还是要再次的感谢老师给我这次机会得以实践,以及您给我的帮助。我不会让你们失望的!

 

发布了12 篇原创文章 · 获赞 3 · 访问量 3929

猜你喜欢

转载自blog.csdn.net/longlong888666/article/details/89387821
今日推荐