学生成绩管理系统山东大学自考毕业论文
高等教育自学考试毕业论文封面
高等教育自学考试
计算机信息管理专业(本科)
毕业论文
学生成绩管理系统
学 校: 山东大学
专 业: 计算机信息管理(本科)
姓 名:朱觉斌
完成日期:2016.09.15
摘要
学生成绩管理系统是为了实现学生成绩管理的系统化、规范化、以及自动化,从而提高学校教育管理的效率。它完全取代了原来一直用人工管理的工作方式,避免老师少录、录错成绩等问题。学生成绩管理系统是一个小型数据库管理系统,它界面美观、操作不仅简单,同时安全性也比较高,基本满足了学生成绩管理的要求。
此系统分为学生成绩管理、学生信息管理、课程信息管理、用户管理、学生专业信息管理、权限管理六个模块。
学生成绩管理:老师新增学生,给学生选择添加课程,以及专业。
学生成绩管理:老师给学生各个课程打分,如果成绩输错了也可以进行修改甚至删除,而学生可以直接登录查看到自己的成绩。
课程信息管理:老师可以直接查看各个课程信息也可以添加课程信息、修改课程信息和删除信息。
用户管理:管理员可以直接查看登录账号的信息、增加账号、修改和删除账号信息。
权限管理:此系统分为管理员、老师和学生三个权限。管理员,是最高权限可以直接维护用户信息,可以直接给用户赋给管理员或者老师还是学生权限。老师,维护学生信息、课程信息和成绩;学生,查看自己的各课程成绩
本系统是在以MySQL 作为后台数据库,以JAVA 为编程语言来开发的。学生成绩管理系统在运行阶段,效果好,数据准确性高,同时也提高了工作效率,实现了学生成绩管理计算机化。
关键字:学生,成绩,管理系统,Java ,MySQL
Abstract
Student achievement management system is to achieve student performance management systematization, standardization and automation, so as to improve the efficiency of the school education management.It completely replaced the original has been using artificial management way of working, to avoid teacher problems such as less record, record the wrong results.Student achievement management system is a small database management system, interface aesthetics, operation simple, not only has a high security at the same time, basic meet the requirements of the student performance management.
This system is divided into student achievement management, student information management, curriculum information management, user management, students' information management, rights management of six modules.
Student performance management: the new students, the teacher give students select add courses, and the professional.
Student achievement management: each course grade teacher to the student, can also be modified even if the result type in wrong to delete, and students can login to see directly to their grades.
Course information management: the teacher can directly see the course information can also add course information, modify, or delete information.
Login user management: the administrator can directly see bank account information, add, modify, and delete the account information.
Rights management: the system is divided into three administrators, teachers and students.Administrator, is the highest authority can maintain the user information directly, can be directly to the user is assigned to the administrator permissions or teachers and students.Teacher, maintaining the student information, course information and achievement;Students to check their course grade
This system is in a MySQL database as the background, based on the JA V A programming language to develop.Student achievement management system in operation stage, the effect is good, high data accuracy, but also improve the working efficiency,
realize the student achievement management computerized.
The keyword:Student , achievement , management system, Java , MySQL
目 录
摘要 ............................................................... I Abstract .......................................................... II
第一章绪论 ......................................................... 1
1.1课题背景 .................................................... 1
1.2课题研究内容 ................................................ 1
第二章需求分析 .................................... 错误!未定义书签。
2.1 需求分析概述 ................................................ 3
2.2系统需求内容 ................................................ 3
2.3功能需求 .................................................... 4
2.4可行性分析 .................................................. 4
2.5其他要求 .................................................... 6
第三章成绩管理系统开发技术支持 ..................................... 7
3.1 数据库的选择 ................................................ 7
3.2 开发工具的选择 .............................................. 7
3.3 开发平台和技术框架的选择 .................................... 8
第四章数据库设计 ................................................... 9
4.1数据库概念结构设计与E-R 图 .................................. 9
4.2数据库逻辑结构设计 ......................... 错误!未定义书签。
第五章详细设计 .................................... 错误!未定义书签。
5.1 用户权限管理模块 ........................... 错误!未定义书签。
5.2 学生信息管理模块 .......................... 错误!未定义书签。7
5.3课程信息管理模块 ........................................... 23
5.4学生成绩管理模块 ........................................... 28
第六章学生成绩管理系统测试与维护 .................. 错误!未定义书签。
6.1 链接测试 ................................... 错误!未定义书签。
6.2数据库调试 ................................. 错误!未定义书签。
6.3网站维护 ................................................... 34
总结 .............................................................. 35
致谢 .............................................................. 36
参考文献 .......................................................... 37
第一章绪论
本毕业论文是以学校教育管理的成绩管理系统的开发为背景,论述了管理信息系统的概念、结构及系统开发的基本原理和方法,全文共分为绪论、系统分析、概要设计、详细设计、开发总结、致谢、参考文献等
1.1 课题背景 随着计算机与互联网的快速发展,计算机普遍应用于各行各业,金融,电力,医疗,军事等等。因此,学校教育管理应用也是势在必行。而学生成绩管理系统是学校教育管理的一个典型的信息管理系统。
学生成绩管理系统包括后台数据库的建立与维护,前台程序编写。对于后台的数据库我们需要起数据一致性与完整性强、数据安全性高的库。而对于后者,我们需要程序功能完备,尽量减少bug 的出现等良好的特点。
学生成绩管理系统,是学校教育管理很重要的部分,它不仅方便学生及时和随时都能通过互联网登录查看自己的成绩,同时也方便老师可以在通过互联网随时随地登录增加,查看,修改和删除学生的成绩。相对于传统的固定电脑输入学生成绩打印,有无比大的优势,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提学生成绩管理的效率。
1.2 课题研究内容
此成绩管理系统主要应用Java 编程和MySQL 数据库连接等相关知识。主要需要熟练掌握JAVA 开发技术,将所学知识用于实际生活中,并且在实际生活中发挥其主要功能并获得效益。本设计内容包括以下功能模块。
(1)学生信息查询模块:主要包括查询所有学生的信息也可以修改学号、姓名、出生日期、专业、总学分删除学生信息,更新学生信息等。
(2)学生成绩模块:主要包括老师可以录入学生的各科成绩和删除,同时学生也可以查看自己的成绩。
(3)用户与权限管理模块:管理员主要包括录入登录账号信息以及各科成绩和删除,同时也可以给账号赋予学生、老师和管理员权限。
(4)课程信息管理模块:老师可以查看、录入以及修改和删除课程信息。
(5)专业信息管理模块:老师可以查看、录入以及修改和删除专业信息。
第二章需求分析
2.1 需求分析概述
随着科学技术的不断提高, 计算机科学日渐成熟, 作为计算机应用的一部分, 使用计算机对图书信息进行管理, 具有手工管理所无法比拟的优点。进行数据库设计首先必须准确了解与分析用户需求(即用户想要做什么) 。需求分析整个设计过程的基础, 是最困难、最耗费时的一步。需求分析是否做得充分、准确, 决定了在此基础上创建的数据库及应用程序的速度与质量。通过需求分析阶段对图书管理系统的整个应用情况作全面的、详细的调查, 确定图书管理的目标, 收集支持系统总的设计目标的基础数据和对这些数据的要求, 确定用户的需求, 并把这些写成用户和数据库设计者都能够接受的文档。事实上, 需求分析是数据库开发中最难的任务之一。因为, 系统本身是可变的, 用户的需求必须不断调整, 使之与这种变化相适应。所以, 设计人员必须认识到:在整个需求分析以及系统设计过程中, 用户参与的重要性, 通过各种方法展开调查分析。现在我国的教育机构对学生成绩管理还普遍停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代,这种传统的管理方法必然被计算机为基础的信息管理所取代。
通过调查,要求系统具有权限设置功能的登录模块,学生可以实现成绩信息查询功能。教务管理人员能够实现注册新用户,学生成绩信息的查询、录入、删除、修改、浏览、统计等功能。
2.2 系统需求
随着学校规模的不断扩大,学生人数逐年增加,学校对学生成绩管理的工作量也越来越大。学生成绩管理涉及大量的数据处理,如果用手工来完成庞大的数据处理,将费时费力,还容易出错,为了满足学校对学生成绩管理的需要,急需要一套学生成绩管理系统来完成这项工作。作为计算机应用的一部分, 使用计算机对学生成绩信息加以管理, 将拥有着手工管理所无法比拟的优点
例如:输入迅速、查找方便、可靠性高、存储量大、成本低等。这些优点能够极大地提高学生成绩管理的效率也是学生成绩的科学化、正规化管理的重要条件。同时
还要注意下列几点:
(1) 由于各方面的限制,如人员不够、技术缺乏等原因,开发时应本着循序渐进,
逐步完善的原则,不能贪大求全,盲目开发
(2) 要注意信息的准确、及时、适用、经济,只有及时、准确的信息才能保证系
统开发的质量和效率。
(3) 从全局出发注意系统开发的整体优化性,同时还要注意系统的可扩展性和可
延伸性。
(4) 尽量采用学校现有的软硬件环境, 及先进的管理系统开发方案,从而达到充分
利用学校现有资源、提高系统开发水平和应用效果的以及减少开发成本的目的。
(5) 系统应符合学校对学生成绩管理的规定,满足学生成绩管理的工作需要并达
到操作过程中的直观、方便、实用、安全等要求。
2.3 功能需求
通过对一些实际成绩管理的考察、分析,并结合成绩管理的要求及实际的市场调查。分析本系统具有以下功能:
(1) 网站设计页面要求美观大方、个性化,功能全面,操作简单。
(2) 要求实现基础信息的管理平台。
(3) 要求对所有学生进行管理。
(4) 实现成绩录入、查询、删除的功能。
(5) 提供快速的成绩检索功能,保证数据查询的灵活性。
(6) 提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
(7) 具有易维护性和易操作性。
2.4 可行性分析
可行性分析的任务, 并不是所有问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模之内解决。如果问题没有可行的解,那么花费这项开发工程上的任何时间、资源、人力和经费都是无谓的浪费。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解
决。必须记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解。怎样达到这个目的呢?当然不能靠主观猜想,而只能靠客观分析。必须分析几种主要的可能解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。
因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。所以从以上的分析原则来看,我所设计的学生成绩信息管理系统是一个规模不太大的系统,但是目标明确,清晰的描述了对目标系统的一切限制和约束。本系统几乎在所有的学校对学生成绩管理使用,当然它需要进一步的完善和更新。在使用过程中,要看它能不能带来效益,毕竟在现今社会效率是第一位的,我们编程是为人们生活提供便利。从现实看,这还是有一定的实用价值的,从另一个角度看,现实社会发展飞速,尊重科技势在必行,因此这也是开发本系统的一个非常重要的原因。21世纪是计算机的时代,它必然取代一大部分人的工作,高科技的系统进入社会生活的方方面面是发展的趋势。
本设计从以下三个方面进行可行性研究:
1. 技术可行性。本设计“学生成绩管理系统”是为学校学生成绩管理老师和学生开发的。而本人,在浪潮山东梧桐树和浪潮软件集团工作的一年时间里的这段时间,不仅参与了超便利O2O 平台开发,同时还为深圳市场监督管理局独立开发专家评审项目和参与河北武强县与临沂市义塘镇开发数字城管系统,其中运用到大量基于海康、大华视频监控指挥系统和超图Gis 地理信息系统的技术。因此,对开发管理信息系统有一定的了解和认识,并且也因此大幅度提高了自己项目经验和技术,使自己在开发管理信息系统方面的技术更加成熟。由于本设计最重要体现的是实用性,所以,通过大量的调查和分析与请教学校老师,结合自己现有的技术水平加上导师的指导,能按期完成本毕业设计。
2. 经济可行性。成本方面:由于本毕业设计属于计算机科学(本科) 教学的最后一个环节,所以人力消耗免费,资源学校提供,与学校老师的义务指导。所以成本计算只需计算开发期间开发者的生活消费,学校资源的消耗,以及自己现在拥有的技术与资源,所以开发本软件的成本是非常低的。效益方面:为学校开发一个完整、合理的学生成绩管理系统,可大大节余人力,以前需要多人干的工作,使用本系统只需一个人或几个人就能完成,且工作量和劳动强度大大降低。所以开发本软件可以为学校教育管理带来很好的经济效益。
从以上分析看开发本软件在经济上是可行的。
3. 操作可行性。本软件是为学校学生成绩的老师与学生开发的,所有本软件的用户对象是学校学生成绩的工作人员,由于本软件要设计成友好的界面,写出详细的使用说明,老师与学生只需懂得简单的计算机操作知识,就能自由应用本软件。
2.5 其他要求
软件方面:信息时代对于软件的应用已不是人们的难题,人们在日常办公中用的计算机操作的系统等都属于软件部分。
硬件方面:计算机普及到今天,人们对于它的拥有已不少见,它的硬件设备完全能够满足人们的需求,而价格也能被人们所接受。
第三章 成绩管理系统开发技术支持
3.1 数据库技术
数据库技术起源于20世纪60年代。由于计算机的主要应用领域由科学计算逐步转向事物处理,因此推动了数据库技术的发展。几十年来,数据库技术的发展经历了由层次数据库、网状数据库到关系数据库系统,现在又面临着第三代新的一轮数据库技术的研究[4]。
数据库系统是计算机系统的重要组成部分。数据库是借助于计算机保存和管理大量复杂的数据和信息的软件工具。数据库技术是科学地组织和存储数据,如何高效地获取数据、更新数据和加工处理数据,并保证数据的安全性、可靠性和持久性。 MySQL 是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。 而目前软件开发最流行使用的数据库:Oracle ,SQL Server,DB2,以及MySQL 。 虽然说DB2在企业级的应用最为广泛, 在全球的500家最大的企业中, 几乎85%以上用DB2数据库服务器, 而国内到97年约占5%。但是就总的软件开发和使用量、装机量来说MySQL 是最大的。导致MySQL 使用量这么大的有两个主要原因:一是免费的,二是MySQL 是轻量级的比较容易控制。
3.2 开发工具的选择
MyEclipse 企业级工作平台(MyEclipseEnterprise Workbench ,简称MyEclipse )是对EclipseIDE 的扩展,利用它我们可以在数据库和JavaEE 的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML ,Struts ,JSP ,CSS ,Javascript ,Spring ,SQL ,Hibernate 。
MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse 的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse 可以支持Java Servlet ,AJAX ,JSP ,JSF ,Struts ,Spring ,Hibernate ,
EJB3,JDBC 数据库链接工具等多项功能。可以说MyEclipse 是几乎囊括了目前所有主流开源产品的专属eclipse 开发工具。
3.3 开发平台与技术框架的选择
J2EE (Java 2 Platform, Enterprise Edition)是一个为大学校主机级的计算类型而设计的Java 平台。Sun 微系统(与其工业伙伴一起,例如IBM )设计了J2EE ,以此来简化在瘦客户级环境下的应用开发。由于创造了标准的可重用模块组件以及由于构建出能自动处理编程中多方面问题的等级结构,J2EE 简化了应用程序的开发,也降低了对编程和对受训的程序员的要求。
Hibernate :是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,它将POJO 与数据库表建立映射关系,是一个全自动的orm 框架,hibernate 可以自动生成SQL 语句,自动执行,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP ,完成数据持久化的重任。在MVC 中它是作为M (模型,model )。
Struts2:是一个基于MVC 设计模式的Web 应用框架,它本质上相当于一个servlet ,在MVC 设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts 的下一代产品,是在 struts 1和WebWork 的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork 为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI 完全脱离开,所以Struts 2可以理解为WebWork 的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork ,Struts 2的变化很小。在MVC 中它是C (控制器,controller )。
Spring:Spring 是一个开源框架,Spring 是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 创建。简单来说,Spring 是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。在MVC 中它是V (视图,view )。
第四章 数据库设计
4.1 数据库概念结构设计与E-R 图
得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体结构,以及他们之间的关系,为以后的逻辑结构设计打下基础。
根据上面的设计规划出的实体有:现有学生信息实体、学生成绩信息实体、课程信息实体、登录信息实体图。各个实体具体的描述E-R 图如下: 现有学生信息实体E-R 图如图4-2所示:
图4-1 现有库存信息实体E-R 图
出库单信息实体E-R 图如图4-2所示:
图4-2 出库信息实体E-R 图
课程信息实体E-R 图如图4-3所示。
图4-3 借入信息实体E-R 图
登录信息实体E-R 图如图4-4所示。
图4-4 借出信息实体E-R
实体和实体之间的关系E-R 图如图4-5所示。
图4-5整体关系E-R 图
4.2数据库逻辑结构设计
现在需要将在上面的数据库概念结构转化为MySQL 数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
学生成绩管理信息系统数据库中各个表格的设计结果如下面表格所示。每个表格所示在数据库中的一个表。
表4-1货物基本信息表
表4-2老师信息表
表4-3为学生成绩表
表4-4为课程信息表
表4-5为登录信息表
表4-6为专业信息表
第五章成绩管理系统功能的设计和实现
5.1 系统权限管理模块
用户登录界面,当用户输入用户名和密码进行登录如图5-1。
图5-1登录界面
登录权限管理模块Action 方法代码: package org.action; import java.util.List; import java.util.Map;
import org.model.Dlb; import org.service.DlService; import org.tool.Pager;
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class DlAction extends ActionSupport{
//定义一页显示多少条信息 private int pageNow=1; private int pageSize=8; public int getPageNow() { }
public void setPageNow(int pageNow) {
return pageNow;
}
this.pageNow = pageNow;
public int getPageSize() { }
public void setPageSize(int pageSize) { }
private static final String xsqx = "xs"; private static final String jsqx = "js"; private static final String glqx = "gl"; private DlService dlService; private Dlb dl; public Dlb getDl() { }
public void setDl(Dlb dl) { }
public DlService getDlService() { }
public void setDlService(DlService dlService) { } /**
* 登录用户权限判断 */
public String execute()throws Exception{
Dlb user=dlService.find(dl.getXh(), dl.getKl());
return pageSize;
this.pageSize = pageSize;
return dl;
this.dl = dl;
return dlService;
this.dlService = dlService;
String re = "";
Map session=(Map)ActionContext.getContext().getSession(); session.put("user", user);
if(user.getLx().equals("1") && user.getInUse().equals("1")){
re = xsqx;
}else if(user.getLx().equals("2") &&
user.getInUse().equals("1")){
re = jsqx;
}else if(user.getLx().equals("3") &&
user.getInUse().equals("1")){
} /**
}else
}
re = glqx;
return re;
return ERROR;
* 查询所有用户信息 * @return
* @throws Exception */
public String dlInfo()throws Exception{
List list=dlService.findAllDl(this.getPageNow(), this.getPageSize()); Map request=(Map)ActionContext.getContext().get("request"); request.put("list",list);
Pager page=new Pager(this.getPageNow(),dlService.findDlSize()); System.out.println(dlService.findDlSize()); request.put("page", page); return SUCCESS;
}
以上是Java 后台代码查询验证登录用户权限类型,从数据库里查询lx 等于“1”即为学生权限,返回值return 是“xsqx ”;lx 等于“2”即为老师权限,返回值return 是“jsqx ”;同样,lx 等于“glqx ”即为管理员权限,返回值return 是“glqx ”。而接着Struts 2配置文件。 /login_success.jsp /login.jsp /login.jsp
学生登录直接跳转到成绩查询页面如图5-2 学生个人成绩查询页面。
图5-2学生个人成绩查询页面
老师登录直接跳转到学生信息查询页面如图5-3。
图5-3 学生信息查询页面
管理员登录直接跳转到用户管理查询页面。而修改用户权限则可以点击修改进行修改用户权限。
5.2 学生信息管理模块
学生信息管理模块有四个功能,查看、录入、修改和删除学生信息,如图5-4学生信息查询页面。
图5-4 学生信息查询页面
学生信息管理Action 方法后台源代码: package org.action; import java.io.File;
import java.io.FileInputStream; import java.util.List; import java.util.Map;
import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.model.Xsb; import org.service.XsService; import org.service.ZyService; import org.tool.Pager;
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class XsAction extends ActionSupport{
//页面显示多少条信息 private int pageNow=1;
private File zpfile; //存放专业集合 private List list;
public void setList(List list) { }
public List getList(){ }
public File getZpfile() { }
public void setZpfile(File zpfile) { }
private Xsb xs;
private XsService xsService; private ZyService zyService;
public void setZyService(ZyService zyService) { }
public int getPageNow() { }
public void setPageNow(int pageNow) { }
public int getPageSize() {
return pageSize;
this.list = list;
return zyService.getAll();//返回专业集合
return zpfile;
this.zpfile = zpfile;
this.zyService = zyService;
return pageNow;
this.pageNow = pageNow;
public void setPageSize(int pageSize) { } /**
* 查询所以学生信息 */
public String execute() throws Exception { } /**
* 录入学生信息 * @return */
public String addXs(){
try{
if(xs.getXh()==null||"".equals(xs.getXh())){ }
Xsb stu=new Xsb(); String xh1=xs.getXh(); if(xsService.find(xh1)!=null){
this.pageSize = pageSize;
System.out.println(this.getPageNow()); List list=xsService.findAll(pageNow,pageSize);
Map request=(Map)ActionContext.getContext().get("request"); Pager page=new Pager(getPageNow(),xsService.findXsSize()); request.put("list", list); request.put("page", page); return SUCCESS;
return ERROR;
} /**
}
stu.setXh(xs.getXh()); stu.setXm(xs.getXm()); stu.setXb(xs.getXb()); stu.setCssj(xs.getCssj()); System.out.println(xs.getCssj()); stu.setZxf(xs.getZxf()); stu.setBz(xs.getBz());
stu.setZyb(zyService.getOneZy(xs.getZyb().getId())); if(xs.getZp()!=null){ }
xsService.save(stu); }catch (Exception e) { }
return SUCCESS;
e.printStackTrace();
FileInputStream fis=new FileInputStream(this.getZpfile()); byte[] buffer=new byte[fis.available()]; fis.read(buffer); stu.setZp(buffer);
* 根据学号删除学生信息 * @return
* @throws Exception */
public String deleteXs() throws Exception{
String xh=xs.getXh();
}
return SUCCESS;
public String updateXsView()throws Exception{ } /**
* 根据学号修改学生信息 * @return
* @throws Exception */
public String updateXs()throws Exception{
Xsb xs1=xsService.find(xs.getXh()); xs1.setXm(xs.getXm()); xs1.setXb(xs.getXb());
xs1.setZyb(zyService.getOneZy(xs.getZyb().getId())); xs1.setCssj(xs.getCssj()); xs1.setZxf(xs.getZxf()); xs1.setBz(xs.getBz()); if(this.getZpfile()!=null){
FileInputStream
fis=new
String xh=xs.getXh(); Xsb xsInfo=xsService.find(xh); List zys=zyService.getAll();
Map request=(Map)ActionContext.getContext().get("request"); request.put("xsInfo", xsInfo); request.put("zys", zys); return SUCCESS;
FileInputStream(this.getZpfile());
byte[] buffer=new byte[fis.available()]; fis.read(buffer);
}
}
Map request=(Map)ActionContext.getContext().get("request"); xsService.update(xs1); return SUCCESS;
public String getImage() throws Exception{ }
public String findXs()throws Exception{ }
HttpServletResponse response = ServletActionContext.getResponse(); String xh=xs.getXh(); Xsb xs3=xsService.find(xh); byte[] img = xs3.getZp();
response.setContentType("image/jpeg");
ServletOutputStream os = response.getOutputStream(); if ( img != null && img.length != 0 ) { }
return NONE;
for (int i = 0; i
os.write(img[i]);
String xh=xs.getXh(); Xsb stu2=xsService.find(xh);
Map request=(Map)ActionContext.getContext().get("request"); request.put("xs", stu2); return SUCCESS;
}
}
public Xsb getXs() { }
public void setXs(Xsb xs) { }
public XsService getXsService() { }
public void setXsService(XsService xsService) { }
this.xsService = xsService; return xsService; this.xs = xs; return xs; return
SUCCESS;
以上即是学生信息管理查询、录入、修改和删除学生信息的action 方法,Struts 2相应配置。
5.3 课程信息管理模块
课程信息管理模块:是老师对课程信息查看、录入、修改和删除。课程查询页面如图5-7课程信息查询页面list 页面。
图5-7 课程信息查询页面
课程信息管理模块的课程信息list 页面为了更快地查询到课程信息,因此添加了根据课程号可以直接查询到课程信息。
课程信息管理模块的后台Action 后台方法代码: package org.action; import java.util.List; import java.util.Map; import org.model.Kcb; import org.service.KcService; import org.tool.Pager;
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class KcAction extends ActionSupport {
//定义一页显示多少条课程信息 private int pageNow=1; private int pageSize=8; private Kcb kc;
private KcService kcService;
public int getPageNow() { }
public void setPageNow(int pageNow) { }
public int getPageSize() { }
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
return pageNow;
this.pageNow = pageNow;
return pageSize;
public Kcb getKc() { }
public void setKc(Kcb kc) { } /**
* 获取所有的课程信息 * @return
* @throws Exception */
public String kcInfo()throws Exception{ } /**
* 查询一门课程号详细信息 * @return
* @throws Exception */
public String findKc()throws Exception{
String kch=kc.getKch(); Kcb kc2=kcService.find(kch);
return kc;
this.kc = kc;
List list=kcService.findAll(pageNow, pageSize);
Map request=(Map)ActionContext.getContext().get("request"); System.out.println("totleSize:"+kcService.findKcSize()); Pager page=new Pager(pageNow,kcService.findKcSize()); System.out.println("totlePage:"+page.getTotalPage()); request.put("list", list); request.put("page", page); return SUCCESS;
} /**
request.put("kc", kc2); if(kc2!=null){ }else { }
return ERROR; return SUCCESS;
* 根据课程号删除课程信息 * @return
* @throws Exception */
public String deleteKc() throws Exception{
String kch=kc.getKch(); Map
request=(Map)ActionContext.getContext().get("request");
/**
}
kcService.delete(kch); return SUCCESS;
* 录入课程信息 * @return
* @throws Exception */
public String addKc()throws Exception{
Kcb kc1=new Kcb(); kc1.setKch(kc.getKch()); kc1.setKcm(kc.getKcm()); kc1.setXf(kc.getXf());
}
kc1.setXs(kc.getXs());
Map request=(Map)ActionContext.getContext().get("request"); kcService.save(kc1); return SUCCESS;
public String updateKcView()throws Exception{ } /**
* 修改课程信息 * @return
* @throws Exception */
public String updateKc()throws Exception{ }
public void setKcService(KcService kcService) {
this.kcService = kcService;
String kch=kc.getKch(); Kcb kcInfo=kcService.find(kch);
Map request=(Map)ActionContext.getContext().get("request"); request.put("kcInfo", kcInfo); return SUCCESS;
Kcb kc3=kcService.find(kc.getKch()); kc3.setKcm(kc.getKcm()); kc3.setXf(kc.getXf()); kc3.setKxxq(kc.getKxxq()); kc3.setXs(kc.getXs());
Map request=(Map)ActionContext.getContext().get("request"); kcService.update(kc3); return SUCCESS;
}
5.4 学生成绩管理模块
学生成绩管理模块:此模块作为整个系统最为核心的一个模块,不仅是老师对学生成绩查询、录入各个课程的成绩,同时也可以删除学生成绩,而学生也可以直接查看自己的成绩。如图学生成绩管理列表页面。
图5-8 学生成绩管理列表页面
学生成绩管理查询列表页面、录入成绩、删除成绩Action 后台方法代码: package org.action;
import java.util.List; import java.util.Map;
import org.model.CjbId; import org.model.Kcb; import org.model.Cjb; import org.service.CjService; import org.service.KcService; import org.service.XsService; import org.tool.Pager;
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;
public class CjAction extends ActionSupport{
//定义一页显示多少条信息 private int pageNow=1; private int pageSize=8; private Cjb cj;
private XsService xsService; private KcService kcService; private CjService cjService;
public void setXsService(XsService xsService) { }
public void setKcService(KcService kcService) { }
public String execute() throws Exception { } /**
* 查询所有的学生成绩 * @return
* @throws Exception
this.xsService = xsService;
this.kcService = kcService;
List list1=xsService.findAll(1, xsService.findXsSize()); List list2=kcService.findAll(1, kcService.findKcSize()); Map request=(Map)ActionContext.getContext().get("request"); request.put("list1", list1); request.put("list2", list2); return SUCCESS;
public String xscjInfo()throws Exception{ }
public String findXscj()throws Exception{
List list=cjService.getXsCjList(cj.getId().getXh()); if(list.size()>0){
Map
List list=cjService.findAllCj(this.getPageNow(), this.getPageSize()); Map request=(Map)ActionContext.getContext().get("request"); request.put("list",list);
Pager page=new Pager(this.getPageNow(),cjService.findCjSize()); System.out.println(cjService.findCjSize()); request.put("page", page); return SUCCESS;
request=(Map)ActionContext.getContext().get("request");
} /**
}else
request.put("list",list); return SUCCESS;
return ERROR;
* 增加或者修改学生成绩 * @return
* @throws Exception */
public String addorupdateXscj()throws Exception{
Cjb cj1 = null;
CjbId cjId1=new CjbId(); cjId1.setXh(cj.getId().getXh()); cjId1.setKch(cj.getId().getKch());
if(cjService.getXsCj(cj.getId().getXh(), cj.getId().getKch())==null){ }else{
cj1
=
cjService.getXsCj(cj.getId().getXh(),
cj1 = new Cjb(); cj1.setId(cjId1);
cj.getId().getKch());
} /**
}
Kcb kc1=kcService.find(cj.getId().getKch());
cj1.setCj(cj.getCj());
if(cj.getCj()>60||cj.getCj()==60){ }else
cj1.setXf(0);
cj1.setXf(kc1.getXf());
cjService.saveorupdateCj(cj1); return SUCCESS;
* 删除学生成绩 * @return
* @throws Exception */
public String deleteOneXscj()throws Exception{ }
String xh=cj.getId().getXh(); String kch=cj.getId().getKch(); cjService.deleteCj(xh, kch);
Map request=(Map)ActionContext.getContext().get("request"); return SUCCESS;
}
}
public void setPageNow(int pageNow) { }
public int getPageSize() { }
public void setPageSize(int pageSize) { }
public void setCjService(CjService cjService) { }
public Cjb getCj() { }
public void setCj(Cjb cj) { }
this.cj = cj; return cj;
this.cjService = cjService; this.pageSize = pageSize; return pageSize;
this.pageNow = pageNow; return pageNow;
第六章学生成绩管理系统的测试与维护
6.1 链接测试
链接是在页面之间切换和指导客户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,调试所有链接是否按指示的那样确实链接到了该链接的页面;其次,调试所链接的页面是否存在;最后,保证本系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的页面地址才能访问。
本系统经过调试以后发现,确实有部分链接是存在问题的,其中有些页就没有链接到应该链接的页面,主要原因有系统的文件名有更改,而其他页面相应的链接忘记了更改,还有就是文件头的包含,每个页面复制了一个页面的头,这样方便了使用,也减少了代码的编写,体现了重用性,但是当文件考到不同路径下时,相应的链接也更改了,用原来的链接就出现了错误。
6.2数据库调试
在本系统技术中,数据库起着重要的作用,数据库为管理系统、运行、查询和实现客户对数据存储的请求等提供空间。在本系统中,最常用的数据库类型是关系型数据库,可以使用MySQL 对信息进行处理。
首先将设计的数据库表进行备份,以便今后的应用,然后检查数据库的服务器名是否与Hibernate 配置文件属性是否一致,检查登录名和密码的正确性,因为在设置虚拟目录时前后的一致性是非常重要的。
由于本系统在编辑时很注意对数据库的设计,所以并无输出错误,但是出现了一次一致性的错误,在编写处理订购信息的时候就只对订购信息的表进行了修改,而未对相应客户的表进行修改,这样就使数据出现了不一致,但问题被老师及时发现,所以解决的也很早,没有造成大的影响。
对于数据库的调用字符串,由于数据库使用的是本地数据库,Data Soure数据源设置为dsn ,用户为root ,密码为123456,XSCJ_MANAGE为建立的数据库的名称。
6.3网站维护
网站的维护很重要,对于一个网站,它的建立只是一部分,更主要的还在于它的后期维护,它关系到网站的生命力及影响力。一个网站即使它最初的建设搞得很好,但由于它的后期维护做得不得力,它应将跟不上社会的潮流,迎合不了人们的口味,以至得不到长足的发展。一般网站维护包括以下几个方面。 (1)服务器及相关软硬件的维护,对可能出现的问题进行评估,制定响应时间。 (2)数据库维护,有效地利用数据是网站维护的重要内容,因此数据库的维护要受到重视。
(3)信息更新(内容的更新、调整等)。
(4)制定相关网站维护的规定,将网站维护制度化、规范化。
其中信息更新在网站维护方面对于一个网站起到非常重要的作用,一个网站即使它的页面及内容很吸引人,但如果它的更新时时跟不上,常此以往,光顾它的用户将会越来越少,因为人们总是在追求着更新时代潮流。
总结
经过两个多月的毕业设计,一个完整的学生成绩管理系统终于设计完成了,但也正在这时我真正意识到所学知识的不足,可以说关于这方面的接触才刚刚也感觉好像才开始,深有感触,无以言表。
关于本系统,虽然对学生成绩管理进行了系统的创建,但我们不可忽略的是这个系统并不完美,我们也不能高枕无忧。我们要在以后的实践中去检验它的可用性,特别要考虑它的实时性和安全性,从而去挺高系统效率,这才是我们最值得考虑的问题。一个系统好不好,要经过反复的使用才能知道,尽可能的减少bug 的出现,然而这不光光是理论中分析和设计得出来的。由此我就想到了在做这个系统时,有的同学用了ACCESS ,sql server,Oracle 等来建不同的数据库,这样就导致有的是系统自带的代码,而有的则是我们写进去的纯代码,当然也就出现了各种各样的问题。特别是关于系统的可移植性,有许多不足之处,同时系统的数据量大小,以及经济性上,效率上也不一样,这样我们就应该多查阅相关资料,反复地熟练应用,才能把系统设计的巧,设计的好。同学们之间的交流也十分重要,交流就是进步,有时进会带你走入一种柳暗花明的欣喜境界。
经过这次毕业设计,引发了我的很多思考和兴趣,首先是做程序要勤,手勤,眼勤,心勤;其次要有韧性,不怕麻烦,不怕失败,反复调试,反复练习,这样才能找到最佳的程序设计,不仅如此,我们还要有遇到困难,有从头再来的精神。遇到bug 我们要有耐心去解决。
致谢
从选择毕业设计题目,到毕业设计规划,查找相关资料,设计模型,具体实施,结束论文,我要感谢老师的指导栽培,我还要致谢我的几位同学的得力相助,我希望我能向他们学习,发扬那种百折不挠、孜孜不倦的对知识求索精神,那种至高无上的敬业精神,同时对于我以后的工作有相当大的启发和帮助,我相信我会时刻用他们的精神来鞭策自已,不断地去提高自己技术能力和职业精神。
最后,祝愿我的老师和学友们永远幸福、快乐。
谢谢!
参考文献
[1](美)Bruce Eckel 著, 陈昊鹏译. 《Java 编程思想》.2007年6月, 北京机械工业出版社.
[2]郑阿奇主编. 《Java EE 实用教程》.2009年11月, 北京电子工业出版社.
[3]李德有,刘明刚主编. 《Java Web 应用基础》.2012年1月, 北京清华大学出版社.
[4]黎连业,王华,李龙,黎照,李淑春编著. 《软件测试技术与测试实训教程》.2012年7月, 北京机械工业出版社.
[5]唐汉明,翟振兴,关宝军,兰丽华,申宝柱编著. 《MySQL 数据库开发、管理与维护》.2008年4月,北京人民邮电出版社