1、青岛科技大学本科毕业设计(论文)青 岛 科 技 大 学本 科 毕 业 设 计 (论 文)基于B/S架构的大学生成绩管理系统设计与实现题 目 _王丽丽指导教师_王丽丽辅导教师_吴小康学生姓名_1207010114学生学号_121自动化自动化与电子工程学院_学院_专业_班2016526_年 _月 _日5基于B/S架构的大学生成绩管理系统设计与实现摘 要针对大学生成绩信息管理工作,经仔细分析之后本文设计并实现了大学生成绩管理系统.本系统在功能上主要分学生端和管理员端,分别可以完成对应用户所需的功能;在技术上,本系统是采用B/S架构基于java语言开发的,数据库采用oracle 11g,web服务器采
2、用tomcat服务器。采用计算机对大学生成绩进行管理,能进一步提高高校办学效益和现代化水平,帮助教师提高工作效率,实现学生成绩维护工作流程中的系统化、规范化和高效化。 关键词:学生成绩管理;B/S架构;java;oracle数据库BASED ON B / S ARCHITECTURE STUDENT ACHIEVEMENT MANAGEMENT SYSTEM DESIGN AND IMPLEMENTATIONABSTRACTStudents grades for information management, after careful analysis of college students
3、 designed and implemented a performance management system。 This system is functionally divided students and administrators end side, respectively, corresponding to the user can complete the required functions; Technically, the system is the use of B / S architecture is based on java language develop
4、ment, database using oracle 11g, web server uses tomcat server。Students use computers for performance management, to further improve the level of efficiency and modernization of the Higher Education to help teachers improve work efficiency, maintenance workflow student achievement in the systematic,
5、 standardized and efficient.KEY WORDS:student achievement management; B / S architecture; java; Oracle datebase目 录第一章 绪论61。1研究背景6第二章 系统开发相关技术介绍72.1 系统架构72。1。1 B/S架构和C/S架构介绍72。1。2 本系统架构72。2 java语言72。2.1 java简介72.3 Oracle数据库82.3。1 Oracle简介82。3.2 Oracle数据库体系结构概述82.4 本章小结8第三章 系统需求分析93。1用户权限分析93.2系统功能分析9
6、3。3 系统数据分析10第四章 系统设计114。1 系统技术架构设计114.2数据库设计114。2.1 项目ER图114.2。2数据库表的设计124。3底层接口设计124.3本章小结13第五章 详细设计和实现145。1 登录模块145。1.1功能分析145.1.2 代码实现145。2 学生端主页模块175。3管理端主页模块185。3。1 学生信息列表185。3.2 学生信息删除功能235.4学生信息查询模块245。4。1业务逻辑介绍245。4。2代码实现245。5新增学生模块285.5。1业务逻辑285.5。2代码实现285.6 回收站模块305。7 本章小结30第六章 系统测试306。1 测
7、试环境306.2 测试工作316。3 本章小结33第一章 绪论1.1研究背景随着计算机科学的发展,利用计算机来实现数据的管理已经越来越成为一种趋势。当需要管理的数据量较大时,可以通过根据自身特点设计并开发一个对应的信息管理系统来完成既定的功能。相较于传统的信息管理,计算机信息管理系统具有存储量大、查询迅速、可靠性高、成本低和使用方便等优点。现在的大学生成绩信息管理就可通过计算机来实现。开发一个大学生成绩管理系统对于教务人员和学生有着很大的意义,可以帮助相应人员从繁重的信息管理工作中解放出来。1。2研究目标通过对学校教务系统成绩管理的研究,开发一个与学校教务成绩管理特点想适应的学生成绩管理系统.
8、本系统设计的主要目标如下: 能满足成绩管理的功能需求。 有一定的人性化设计,方便用户使用. 操作快捷,提高办公效率. 有一定的安全机制,防止恶意篡改数据。第二章 系统开发相关技术介绍本系统的开发涉及到的语言和技术有:B/S框架技术、软件开发语言java、数据库技术(oracle)等。2。1 系统架构2。1。1 B/S架构和C/S架构介绍C/S全称Client/Server.客户机需安装相应的客户端才可使用。C/S架构通过把任务合理分配到客户端和服务器端,来降低服务器端资源开销。但是C/S架构在系统更新时从服务器到客户机都需要更新,代价较大。B/S全称Browser/Server。相较于C/S架
9、构,B/S架构不需客户机安装客户端,只需安装浏览器即可,例如360浏览器、火狐浏览器等。浏览器通过Web Server 同数据库进行数据交互。B/S架构在系统进行更新时,只需更新服务器即可,但是本架构相较于C/S架构对服务器要求比较高。2。1.2 本系统架构本系统用户定位于高校师生,是一个小型系统,普通的PC机即可担任客户机。同时考虑到采用B/S架构用户不需客户端以及维护方便的优势,最终采用B/S架构.2。2 java语言2。2。1 java简介Java语言是一种面向对象的语言,继承了c+语言面向对象的核心,同时去除了c+中难懂的指针、多重继承(以接口代替)、运算符重载等特性。Java语言真正
10、实现了“一次编译,到处执行的特性。2。3 Oracle数据库2。3.1 Oracle简介Oracle 是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词.Oracle 公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州 Redwood shore。Oracle 公司因其复杂的关系数据库产品而闻名。Oracle的关系数据库是世界第一个支持SQL语言的数据库2。3。2 Oracle数据库体系结构概述平常所说的 Oracle 或 Oracle 数据库指的是 Oracle 数据库管理系统。 Oracle 数据库管理系统是管理数据库访问
11、的计算机软件(Oracle database manager system). 它由 Oracle 数据库和 Oracle 实例(instance)构成.Oracle 数据库: 一个相关的操作系统文件(即存储在计算机硬盘上的文件)集合,这些文件组织在一起, 成为一个逻辑整体, 即为 Oracle 数据库。Oracle 用它来存储和管理相关的信息。Oracle数据库必须要与内存里的实例合作,才能对外提供数据管理服务.Oracle 实例: 位于物理内存里的数据结构,它由操作系统的多个后台进程和一个共享的内存池所组成,共享的内存池可以被所有进程访问。Oracle 用它们来管理数据库访问。用户如果要存
12、取数据库(也就是硬盘上的文件) 里的数据, 必须通过Oracle实例才能实现, 不能直接读取硬盘上的文件。实际上, Oracle 实例就是平常所说的数据库服务(service).区别:实例可以操作数据库;在任何时刻一个实例只能与一个数据库关联,访问一个数据库;而同一个数据库可由多个实例访问(RAC).类似java里的类和对象,一个对象只属于一个类,类可以有多个对象。表空间(Tablespace):oracle数据库是通过表空间来存储表的,一个数据库实例可以有n个表空间,一个表空间下有n个表.用户(user):oracle数据库建好后,要想在库里建表,必须先为库创建用户,并为用户指定表空间,不指
13、定的话默认为users表空间.表(Table):有了数据库、表空间和用户就可以创建表,是由行和列组成的二维数据结构,用来存储行记录。数据(Data):表中的行记录。2。4 本章小结本章主要对系统所用的开发工具做了简单介绍.第三章 系统需求分析系统在开发之前,需要和用户进行沟通了解用户所需的具体功能。需求分析不是一个简单的阶段,它是贯穿于整个系统开发过程中的.做好需求分析是系统开发的必备工作。本系统分析主要从需求分析、权限分析、功能分析以及数据分析入手。3.1用户权限分析随着学校招生人数的增长,随之而来的就是大量的学生信息管理问题,本论文针对的便是学生成绩信息管理。成绩管理主要涉及两方面用户的操
14、作:学生和管理员(老师).学生在成绩管理上的权限仅限于用户注册、个人信息查询;管理员在成绩管理上的权限有:所有学生用户的查询、增加、删除、编辑,所有学生用户成绩信息的查询、增加、删除。图3-1 用户权限示例Fig.31User permissions example3.2系统功能分析在对学生和教师所需功能进行分析之后,本系统分别对学生子系统和管理员子系统做了如下功能设计。学生端功能如下:1、 登录功能能够实现一个登录页面,提交后在后台判断用户名密码的正确性。后台处理使用Servlet实现. (1) 输入的用户名和密码是通过和数据库中信息进行比对,比对成功判断登录成功,跳转到登录成功页面,并在页
15、面上判断用户是否已经登录,如果是已经登录状态,则显示登录用户名及登录时间。 (2)输入的用户名和密码是通过和数据库中信息进行比对,比对失败判断登录失败,此时,跳回登录页面,并在登录页面上提示用户:“用户或密码错误,请重新登录。2、注册功能通过在注册页面输入自己信息,提交后通过验证可完成学生注册。3、显示信息功能登录成功后可以看到自己详细信息。管理端功能如下:1、 登录功能(同学生端)2、信息列表功能(1) 按照学号从小到大显示全部学生的列表 (2) 学生列表进行分页显示。 (3) 在列表的“姓名”列增加链接,点击链接,可以查看对应学生的详细信息. 3、 各科成绩范围查询功能在学生列表页面的“各
16、科”下拉框中选中某课,后面输入框中输入成绩范围,点击“查询”按钮,在学生列表页面中显示查询结果。 4、 学生详细信息功能在学生列表中,点击“姓名列的链接,显示该学生的详细信息. 5、 新增学生功能在学生列表页面,点击“新增”按钮,跳转到新增学生页面,在页面上输入学生的信息点击“提交按钮,将信息提交至数据库. 6、 删除学生功能在学生列表中,选中想删除的学生记录前面的复选框,点击“删除”按钮,删除选中的学生信息.页面跳转至学生列表页面,并且被删除的学生记录不再被显示。 7、 回收站功能显示被删除的学生列表,在回收站页面提供删除撤销和彻底删除等功能.3。3 系统数据分析 本系统在开发中会使用到学生
17、相关信息包括:学号、姓名、性别、出生日期、手机号、班级号、各科成绩.其中学号会作为学生在数据库中的主键使用,作为唯一标识。图 32 系统流程Fig.3-2 System Flow第四章 系统设计本章主要设计了系统技术架构设计、数据库设计和底层接口设计。如果把系统比喻一颗树的话,本章的工作就是设计树干。好的系统设计可以大大减少之后的代码实现部分工作量。4。1 系统技术架构设计本系统采用当前主流的B/S作为系统架构,此模块中的业务层被划分为:客户层、表示层、业务逻辑层以及数据层。数据层:为系统的最底层,存储了系统所需的数据。系统所做的操作最终都会反映到数据库中。业务逻辑层:该层内为系统的核心代码,
18、负责根据用户不同的指令完成对数据库对应的操作。表示层:该层为web服务器,负责在客户层和业务逻辑层之间传输数据.客户层:该层为用户的web浏览器,表示为网页。用户可以在对应的网页上进行操作,最终会反应到数据库中。图 4-1 系统总体架构图Fig。41 System Architecture4。2数据库设计通过分析,可以抽取出管理员用户和学生用户两个实体类,即对应管理员用户表和学生用户表,用来管理用户信息。4。2。1 项目E-R图图 4-2 学生实体E-R图Fig.42 Student entity ER diagram图43管理员用户实体ER图Fig.43 Administrators ent
19、ity ER diagram图4-4 实体间关系图Fig.4-4 Inter Entity Relationship Diagram4.2.2数据库表的设计数据库表设计的科学与否直接关系到项目开发的顺利与否。合理的数据库表格设计能会使项目代码实现容易、简洁,而不合理的数据库表格设计给程序员带来的工作量会大很多,且会造成代码的冗余。本系统的数据库设计基本遵循了数据库开发的三大范式。1、 第一范式:确保每列保持原子性。2、 第二范式:确保表中的每列都和主键相关。3、 第三范式:确保每列都和主键直接相关,而不是间接相关。本系统的数据库设计基本遵循了三大范式。此设计也为之后的编码实现打好了基础,能够有
20、效提高对代码实现的简洁性. 下表即为根据上节中所给出的ER图设计的数据库表。1、 学生信息表表41 学生信息表Tab.41 Student Information Sheet字段名称数据类型字段大小是否主键说明stuidnumber4是学号nameVchar220否姓名passwordVchar220否密码sexVchar220否性别dateTimedate否出生日期phonenumber11否手机号码pcenumber5,2否运控成绩mcsnumber5,2否过控成绩epanumber5,2否嵌入式成绩flagnumber1否删除标志位2. 管理员信息表表42 管理员信息表Tab.42 Ad
21、ministrator information table字段名称数据类型字段大小是否主键说明manidnumber4是管理员编号nameVchar220否姓名passwordVchar220否密码4。3底层接口设计底层接口对于系统的功能实现有决定性作用,好的接口设计对系统开发后期的编码实现不言而喻。本系统的接口设计如下:int matchStudent(String name,String pwd);boolean addStudent(Student student);/ add studentboolean delStudent0(long id);/delete students by
22、 id(假)boolean delStudent1(long id);/delete students by id(真)boolean undoDel(long id);/撤销ListStudent querySubStudent(int start,int end);/分页Student queryStudentById(long id,int flag);/通过主键和状态查询boolean queryStudentById(long id);boolean queryStudentByName(String name);/通过name模糊查询boolean updateStudent(St
23、udent student);/跟新int getRowNum();/获得总记录数int getRowNumRB();/回收站记录ListStudent queryStudentBySubjectScore(String subject,int scoreMin,int scoreMax);/条件查询ListStudent querySubStudentRB(int start,int end);/回收站分页ListStudent queryStudentBySubjectScoreRB(String subject,int scoreMin,int scoreMax);/回收站条件查询4。3
24、本章小结本章主要完成了系统的框架设计工作,完成了系统的总体架构,为之后的具体编码实现打好了基础。第五章 详细设计和实现本系统的准备工作到此已经完毕,在本章开始对系统功能的编码实现。5.1 登录模块本系统为成绩信息管理系统,不能被随意进入,所以需要通过登录来进行身份验证。登录页面是本系统的客户入口,所以首先被设计。5.1。1功能分析1、 本页面要完成两种用户验证的功能,即用户需要在本页面输入用户名和密码以及用户类型。2、 本页面应该具备一定的动态效果,用来拦截错误的登录过程,比如用户名为空等;后台完成账号密码匹配功能。3、 页面设计应美观、大方。5。1。2 代码实现该页面的最终效果图如下图所示:
25、图 5-1 学生成绩管理系统登陆页面Fig。51 Student achievement management system login page用户通过在此页面输入用户名和密码及选择用户类型后(在页面上通过javascript控制用户名和密码不可为空),在后台(LoginServlet。java)通过与数据库中信息进行匹配,匹配成功则会进入用户类型相应的用户操作界面,失败则会返回登陆页面并有提示信息:图 52 管理员登陆成功页面Fig.5-2 Administrator login success page图53 学生登录成功Fig.53 Student login success page
26、图 5-4 学生成绩管理系统登陆失败Fig。54 Student achievement management system login failed1、在jsp页面为了防止用户过多的访问服务器,减少服务器的工作量,通过JavaScript实现在客户端验证登录信息的完整性:function checkName(n)/验证姓名是否为空if(n。value=”)alert(用户名不可为空”)function checkPwd(n)/验证密码是否为空if(n.value=”)alert(”密码不可为空”)function checkAll()/登录验证if(document。getElementBy
27、Id(”n)。value != ” & document。getElementById(”p”)。value != ”)return true;elsealert(”有信息为空”);return false;2、当用户点击登录按钮之后,会把用户名等信息通过post的方式提交到LoginServlet,验证是否为真实用户;信息匹配成功时重定向到welcome。jsp页面,否则携带者“密码或用户名错误”的信息转发到login。jsp。LoginServlet关键代码如下:/ 读取requestString name = request。getParameter(name);String pwd =
28、 request。getParameter(pwd);String user = request。getParameter(”userType”);/ 根据用户类型分别进行用户名和密码匹配if (user。equals(student”)) int stuid = new StudentBizImpl()。matchStudent(name, pwd);if (stuid 0) SimpleDateFormat sf = new SimpleDateFormat(”yyyy-MMdd”);String loginTime = sf.format(new Date();/ 把用户名、学号、登陆时
29、间和用户类型记录到sessionrequest.getSession()。setAttribute(”username, name);request.getSession()。setAttribute(”stuid”, stuid);request.getSession()。setAttribute(loginTime”, loginTime);request。getSession().setAttribute(”userType”, user);/ 重定向到welcome.jspresponse.sendRedirect(”welcome.jsp”); else / 匹配失败转发到login
30、。jsprequest。setAttribute(”msg”, ”用户名或密码错误);request.getRequestDispatcher(login。jsp”).forward(request,response);if (user.equals(”manager”)) Manager m = new Manager(name, pwd);if (new ManagerBizImpl()。matchManager(m)) SimpleDateFormat sf = new SimpleDateFormat(yyyyMM-dd”);String loginTime = sf.format(n
31、ew Date());/ 把用户名、登陆时间和用户类型记录到sessionrequest.getSession().setAttribute(username, name);request.getSession()。setAttribute(loginTime”, loginTime);request。getSession().setAttribute(userType”, user);/ 重定向到welcome.jspresponse.sendRedirect(”welcome.jsp”); else / 匹配失败转发到login.jsprequest。setAttribute(”msg,
32、”用户名或密码错误”);request.getRequestDispatcher(login。jsp”).forward(request,response);5.2 学生端主页模块学生登录成功后可在欢迎页面点击“进入学生成绩管理系统按钮,通过超链接的方式到后台DetailStudentServlet提取对应学生详细信息,并转发到学生主页。本页面显示学生的个人详细信息,因为业务的需求本页面只提供显示功能,并没有编辑功能。图55 学生个人主页Fig。55 Student Personal Home page5.3管理端主页模块本页面为管理端主页,承担了本系统的大部分功能:学生信息列表、成绩范围查询
33、、新增学生用户入口、删除学生用户、回收站入口等。图5-6 管理端首页Fig.56 Administrators Home page5.3。1 学生信息列表1、 信息显示业务逻辑当管理员用户从欢迎页面点击“进入学生管理系统按钮之后,会通过当前页面的location对象的href=StudentListServlet?pageNow=1进入到后台servlet层。在StudnetListServlet的doGet(request,response)方法中取出request中携带的pageNow,通过dao层的分页查询函数实现相应页面数据的提取,并做好页数和显示记录数的控制。然后通过转发的方式转发到
34、管理端首页。StudentListServlet关键代码如下:int pageNow;/ 存当前页int pageCount;/ 存总页数int pageSize = 5;/ 每页显示记录数int rowNum;/ 记录总记录数String page = ”1”;try page = request.getParameter(”pageNow”)。toString(); catch (NullPointerException e) try page = request.getSession()。getAttribute(”currentPage”)。toString(); catch (Nul
35、lPointerException e1) response。sendRedirect(login。jsp”);/ 注销查询条件if (request。getSession()。getAttribute(subject) != null) request。getSession().removeAttribute(subject”);request。getSession()。removeAttribute(scoreMin);request。getSession().removeAttribute(scoreMax”);/ 控制当前页码最小值pageNow = Integer.parseInt(
36、page);pageNow = pageNow = 1 ? 1 : pageNow;StudentBiz bbi = new StudentBizImpl();/得到总记录rowNum = bbi.getRowNum();/得到总页数pageCount = rowNum pageSize = 0 ? rowNum / pageSize : rowNum/ pageSize + 1;/控制当前页最大值pageNow = pageNow = pageCount ? pageCount : pageNow;/控制分页查询条件int start = (pageNow - 1) pageSize + 1
37、;int end = start + pageSize -1 rowNum ? rowNum : start + pageSize1;/ 封装request并转发到index。jsprequest.setAttribute(”list”, bbi。querySubStudent(start, end);request。setAttribute(”lastPage”, pageNow 1);request。setAttribute(”nextPage, pageNow + 1);request。setAttribute(endPage, pageCount);request。getSession
38、()。setAttribute(”currentPage”, pageNow);request。getRequestDispatcher(”index.jsp)。forward(request, response);2、 列表外加功能 (1)全选功能为了管理员用户在使用本列表进行操作时的易用性,在列表设计时在表格第一列添加了全选等复选框来完成多选和全选等操作.当用户点击全选复选框时,本业内所有记录被选中,释放全选则所有记录同时被释放;当所有记录被选中时,全选复选框也同时被选中。代码如下:/ 全选 * checked则全选 否则松开全部 /function chooseAll(n)var ids
39、=document。getElementsByName(stuId”);if(n.checked)/(name=stuId)。checked=true;for(var i=0;iids.length;i+)idsi。checked=true;elsefor(var i=0;i首页/aahref=”StudentListServlet?pageNow=$requestScope.lastPage 上一页/ainputonblur=toPage(this)placeholder=”共requestScope.endPage 页onblur=”toPage(this)”ahref=”StudentL
40、istServlet?pageNow=requestScope。endPage ”尾页/a5。3。2 学生信息删除功能用户通过在任意页面选中一个或一个以上的学生后,点击删除按钮即可完成相应的删除操作。1、 业务逻辑介绍当用户选中学生信息不为空时,点击删除submit按钮,会把选中的信息通过post的方式提交到后台DelStudentServlet,通过在后台调用StudentDaoImpl类的delStudent1(int id)方法,来实现对相应学生用户flag属性的修改,完成在显示学号列表的隐藏操作。并在页面内显示删除成功与否信息.图57 删除成功Fig.57 successfully d
41、eleted2、 后台关键代码/提取学号数组String stuIds= request。getParameterValues(”stuId”);int ids=newintstuIds。length;for(int i=0;istuIds。length;i+)idsi=Integer.parseInt(stuIdsi);String msg=”;/调用删除方法完成删除操作,并根据返回值来确定是否删除成功if(new StudentBizImpl()。delStudent0(ids)msg=”删除成功”;elsemsg=删除失败;/封装删除结果重定向到QueryStudentBySubjectScoreServletrequest.getSession()。setAttribute(”msg”, msg);response。sendRedirect(”QueryStudentBySubjectScoreServlet);5。4学生信息查询模块用户通过下拉列表框选择想要查询的科目,并通过在文本框中输入最低分和最高分,点击查询按钮完成相应科目成绩范围查询功能。查询结果会在queryStudent.jsp页面显示。5。4。1业务逻辑介绍当用户完成查询条件选择和输入时,点击查询按钮会把查询条件通过ge