精华内容
下载资源
问答
  • 学生阶段性考试的对比目标设定及实现目标的相应措施 学校 年级 班 时间 学生姓名 科目 第几单元考试 上次单元测试成绩 本次单元测试成绩 与上次单元测试 对比我是否进步 进步 查找原因 退步 查找原因 上次目标是否...
  • 摘 要 随着科技与经济的不断发展,在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还...通过实现和完善东软信息学院的梦想启航梦想启航梦想启航学生信息管理系统,学生

    摘 要
    随着科技与经济的不断发展,在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。其次,数据库的完善便于人们科学统计和快速查询,如此一来就节省了管理员的工作量以及许多不必要的人力物力资源;再者,将计算机引入东软教务管理中除了可以促进学校的管理制度之外,还可以提高学校的教育质量。通过实现和完善东软信息学院的梦想启航梦想启航梦想启航学生信息管理系统,学生就可以更加方便的申请学号和查询成绩,老师也能更加直观的看到同学们每次考试的情况而做出更加科学合理的教学方案。因此在我看来,此次课题的设计不仅可以提升我们的能力,而且能够让我们深入到科技前沿,学习更多高端技术。
    本课题在分析了学校对梦想启航学生信息管理方式研究比较的基础上,设计研发了一套基于MVC的梦想启航梦想启航梦想启航学生信息管理系统。系统主要实现了用户登录,修改个人信息,查看和查询成绩和课程。最主要的功能是管理员可以对用户、课程和成绩进行增删改等等。其次在用户个人信息中,用户可以退出系统,修改个人资料。本系统的集成开发环境是Eclipse,前端使用了JSP+JavaScript等技术,数据库管理运用了MySQL,Web服务器采用Tomcat,另外还采用SSM框架技术和B/S结构。
    关键词:学生信息,SSM,MVC,B/S

    Design and Implementation of
    Student information management system.

    Abstract
    With the continuous development of science and technology and economy, it is becoming more and more common to use computer to manage schools in various schools. Computer not only can improve work efficiency, but also save a lot of manpower and material resources, enhance the school data security. It is necessary to use computers to manage the school’s information. Secondly, the improvement of the database is convenient for people’s scientific statistics and quick inquiry, thus saving the administrator’s workload and many unnecessary resources of human resources. In addition, the introduction of the computer into the management of eastern soft educational administration can improve the school’s education quality in addition to promoting the school’s management system. Through the implementation and improvement of neusoft institute of information of students information management system, students can be more convenient to apply for student id and the query results, teachers can more intuitive see students every test case and make a more scientific and reasonable teaching plan. Therefore, in my opinion, the design of this project will not only enhance our ability, but also enable us to go to the forefront of science and technology and learn more advanced technologies.
    Based on the analysis of the research on the way of information management of students in the school, this paper designed and developed a set of student information management system based on MVC. The system mainly realizes user login, modify personal information, view and query results and courses. The main feature is that administrators can add and delete users, courses, and grades. Secondly, in the user’s personal information, users can withdraw from the system and modify the personal data. The integrated development environment of the system is Eclipse, the front end USES the technology of JSP+JavaScript, database management USES MySQL, the Web server adopts Tomcat, and the SSM framework technology and B/S structure are also adopted.
    Key words: Student information,MVC,SSM,B/S

    目 录
    摘 要 I
    Abstract II
    第1章 项目概述 1
    1.1 问题描述 1
    1.2 项目目标 1
    1.3 项目适用范围 2
    1.4 项目应遵守的规范与标准 2
    1.5 涉众 2
    第2章 需求分析 3
    2.1 业务需求 3
    2.1.1 业务流程 3
    2.1.2 业务对象 3
    2.2 功能性需求 4
    2.2.1 用例概述 4
    2.2.2 用例描述 5
    2.3 非功能性需求 8
    2.4 运行环境 9
    第3章 系统设计 10
    3.1 技术路线 10
    3.2 软件体系结构设计 11
    3.2.1 功能结构 11
    3.2.2 系统架构 11
    3.3 数据库设计 12
    3.3.1 概念结构设计 12
    3.4.2 表的详细设计 13
    3.5 对象设计 15
    3.5.1课程添加用例对象设计 15
    3.5.2 成绩添加用例对象设计 16
    第4章 系统实现 19
    4.1 核心功能实现 19
    4.1.1成绩管理 19
    4.1.2课程管理 20
    4.1.3学生信息管理 21
    4.1.4管理员管理 22
    4.1.5学生成绩查看 23
    4.1.6学生课程查看 24
    4.2 关键技术难点与解决方案 25
    第5章 系统测试 27
    5.1 功能测试 27
    5.2 测试总结 29
    第6章 结论与展望 31
    参考文献 33
    致 谢 34

    第1章 项目概述
    1.1 问题描述
    目前我国的教育体制正处在不断改革,创新的阶段,随着社会的发展和经济时代的到来,还有学校的教学质量的提高,生源不断扩大。尤其是自从国家实施大众化教育,实行高考扩招以来,我国高校学生数量急剧增大。学校管理就成了一个现实问题摆在了人们面前。学校如同企业,如果没有好的管理和来竞争力?在国际社会飞速发展的今天,我国也已成功加入世贸组织的今天,不得不让我们认真对待每一个问题。
    学生成绩管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。
    运用学生成绩管理系统可以减轻学院教学人员的工作量,加快查询速度,加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。还有就是缩小开支,提高工作效率与准确率。可以使学生能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。并且学生成绩管理系统的应用也为今天的高校教育在未来市场的竞争力的提高达下坚实的基础。
    1.2 项目目标
    通过创建一个基于Web的B/S架构的梦想启航梦想启航梦想启航学生信息管理系统,这样可以方便高校的管理人员和学生随时随地进行信息的查询和处理工作。显然,这种通过网络来管理信息与传统的纸质记录管理信息相比,它有着无可比拟的优势,不仅仅减少人力的投入和资源的浪费,而且它更加方便快捷地管理和查询信息。总之,通过该系统的建设来提高学校梦想启航学生信息管理的效率,使得学校的发展能够适应当前的教育信息化建设的总体发展趋势。因此,开发一个功能完善、操作简单、界面友好、有针对性的学生信息系统对学校、乃至社会都是非常必要,非常有意义的。
    1.3 项目适用范围
    梦想启航学生信息管理是学校日常工作的关键环节,一个好的梦想启航学生信息管理体制将给学生和老师带来很大的方便。无论是学生还是老师,都可以在教务网上记录一些数据。手工管理这些纷繁复杂数据的方式已经不适应时代的潮流,实现数据规范化、自动化的电脑管理,是一个现代化的学校的必然要求。
    1.4 项目应遵守的规范与标准
    此梦想启航学生信息管理系统是自己开发制作的作为毕业设计使用的管理系统,具有很大的实际意义。开发环境软件和使用的数据库都是开源代码,因此对这个系统进行开发与普通的系统软件设计存在很大不同,没有侵权等问题,在法律上完全具有可行性。
    1.5 涉众
    梦想启航学生信息管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。迫切需要研制开发一款功能强大,操作简单,具有人性化的学生成绩管理系统。

    第2章 需求分析
    2.1 业务需求
    2.1.1 业务流程
    梦想启航学生信息管理系统,学生可以进行用户信息的添加,修改,删除等操作。登录后学生可以在该系统进行学生基本信息的添加,修改,删除和查询等功能。管理员可在权限范围内为用户设置权限功能,学生只能对授权范围内进行相应的操作。为学生提供所有信息的录入功能。以及对学生用户信息管理的添加,修改,删除和查询等功能;通过该系统进行对学生成绩的修改和删除,查询等操作。梦想启航学生信息管理系统项目的总体业务流程如图2.1所示。
    在这里插入图片描述

    图2.1 学生信息管理系统的总体业务流程图
    2.1.2 业务对象
    通过对系统的需求分析,构造出了三个实体类,每个实体类之间的关联。从而绘制出相应的类图。用户通过管理员和用户通过ID进行区分和管理,管理员可以对用户进行操作和管理。对象角色之间关系图的领域模型如图2.2所示。
    在这里插入图片描述

                               图2.2 领域模型图
    

    2.2 功能性需求
    2.2.1 用例概述
    在图2.3高层用例图中抽取了满足用户基本业务需求的基本用例。这些用例可以从用户登录、学生查询成绩、系统管理三个方面完成整个管理系统的正常运作。
    在这里插入图片描述

    图2.3 高层用例图

    用例摘要描述如表2.1所示。
    表2.1 用例摘要描述
    用例标识(UC) 用例名称 摘要描述
    0 登录 使用系统前的注册账号进行登录。
    1 注册 用户进行简单信息填写注册。
    2 查看课程信息 用户可以查找相关课程信息,并可以获得包括课程名、所任课老师、课程介绍等信息。
    3 查看成绩信息 用户可以查看成绩模块里面具体成绩信息。
    4 成绩搜索 用户可以搜索成绩
    5 课程搜索 用户可以搜索课程
    6 个人信息修改 管理员可以修个用户信息
    7 退出账号 管理员和学生可以退出系统
    8 管理员管理 管理员可以对管理员用户进行增删改
    9 学生管理 管理员可以对学生进行增删改
    10 成绩管理 管理员可以对成绩进行增删改
    11 课程管理 管理员可以对课程进行增删改
    2.2.2 用例描述
    (1)管理成绩信息用例
    管理员可以通过管理成绩信息用例对成绩信息进行维护,包括对成绩信息的增删改查。管理成绩信息用例图如图2.4所示。
    在这里插入图片描述

    图2.4 管理成绩信息用例图

    管理成绩信息用例描述如表2.2所示。
    表2.2 管理成绩信息用例描述
    用例标识 9
    用例名称 管理成绩信息
    参与者 管理员
    前置条件 已经以管理员身份登录。
    后置条件 在成绩模块管理添加一个商品信息。
    用例概述 管理员可以对商品信息进行添加。
    基本事件流 1. 管理员在管理成绩主界面选取添加成绩信息项。
    2. 系统显示添加商品界面。
    3. 管理员输入学生成绩的学号,课程名,分数后,提交添加请求。
    4. 系统检查输入信息的有效性。
    5. 系统显示添加成绩成功。
    备注 成绩编号生成规则

    (2)管理课程信息用例
    管理员可以通过管理课程信息用例对课程信息进行维护,包括对课程信息的增删改查。管理课程信息用例图如图2.5所示。

    在这里插入图片描述

    图2.5管理课程信息用例图
    管理课程信息用例描述如表2.3所示。
    表2.3 管理课程信息用例描述
    用例标识 7
    用例名称 管理课程信息

    续表2.3 管理课程信息用例描述
    参与者 管理员
    前置条件 已经以管理员身份登录。
    后置条件 在课程模块管理添加一个课程信息。
    用例概述 管理员可以对课程信息进行添加。
    基本事件流 1. 管理员在管理课程主界面选取添加课程信息项。
    2. 系统显示添加课程界面。
    3. 管理员输入课程的名称、教师名,课程后,提交添加请求。
    4. 系统检查输入信息的有效性。
    5. 系统显示添加课程成功。
    备注 课程编号生成

    (3)学生查看成绩用例
    学生用户可以通过登录网站查看自己的成绩列表,也可搜索自己的相关课程的成绩。学生查看用例图如图2.6所示。
    在这里插入图片描述

    图2.6学生查看成绩用例图
    学生查看成绩用例描述如表2.4所示。
    表2.4学生查看成绩用例描述
    用例标识 5
    用例名称 学生查看成绩
    参与者 学生
    前置条件 已经以用户身份登录。
    后置条件 在学生查看成绩
    用例概述 用户可以对成绩进行查看
    基本事件流 1. 用户登录账号
    2. 系统页面显示管理系统主页,用户点击成绩。
    3. 页面显示具体成绩列表,点击所上课。
    4 . 系统跳转到成绩详情介绍。
    5.查看成绩完成
    备注
    (4)学生查看课程用例
    学生用户可以通过登录网站点击课程列表选择具体课程查看其详细信息,包括对课程详情介绍,所任课的老师。学生查看课程用例图如图2.7所示。
    在这里插入图片描述

    图2.7学生查看课程用例图

    学生查看成绩用例描述如表2.5所示。
    表2.5学生查看成绩用例描述
    用例标识 4
    用例名称 学生查看成绩
    参与者 用户
    前置条件 已经以用户身份登录。
    后置条件 在课程列表选择要查看的具体课程
    用例概述 用户可以对课程进行查看
    基本事件流 1. 用户登录账号
    2. 系统页面显示课程列表,用户点击进入课程界面。
    3. 用户选择自己喜欢的课程,点击课程详情。
    4 . 系统跳转到课程详情介绍。
    备注 课程查看成功

    2.3 非功能性需求
    正确性:不允许出现业务和逻辑错误。
    健壮性:在系统出现故障时,系统必须提供相应的数据保护措施,不能丢失数据,并提供重新恢复正常工作的机制。
    性能:系统处理业务时间正常业务量的情况下不超过2秒,繁忙业务情况下最迟时间不可超过5秒。
    安全性:用户信息具有保密性,用户信息只能由网站内部管理员使用。
    兼容性:可运行在Windows7以上操作系统中。
    2.4 运行环境
    本系统运行环境包括硬件环境和软件环境。
    2.4.1硬件环境
    CPU:Pentium4或更高
    硬盘:320G或更多
    内存:1G或更高(建议使用2G)
    网络类型:TCP/IP
    2.4.2软件环境
    操作系统:Windows7
    Web服务器: Tomcat
    数据库:MySQL
    浏览器:IE7.0

    第3章 系统设计
    

    3.1 技术路线
    本梦想启航学生信息管理系统在实现过程中采用了以下机种技术。前台页面的设计用JavaScript技术和HTML和CSS技术,通过HTML和CSS技术实现对前台页面的布局和界面美观的操控,JavaScript主要是用来在前台中动态页面的实现,通过对菜单进行动态的操作实现对每个模板进行管理,JavaScript它主要运行于浏览器端。此次设计主要采用B/S模式,Eclipse,作为开发工具,Tomcat作为服务器进行,MySQL作为数据库存储,页面视图主要使用JSP技术完成。
    3.1.1 JSP技术
    本设计选用JSP作为开发本系统的服务器端页面技术。使用JavaScript,EL表达式和JSTL与之配合使用,使页面表现更加丰富,人机交互更加人性化。
    JSP全名为Java Server Pages,在传统的网页HTML文件中加入Java程序片段和JSP标签,就构成了JSP网页。JSP网页是由传统的HTML文件中加入Java程序片段和JSP标签组成的。Java程序用来操作数据库,实现建立动态网页的功能。
    JavaScript是一种基于对象的,动态的客户端脚本语言。主要目的是为了解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,验证步骤繁杂,浪费的时间太多。于是加入了Javascript,提供了页面数据验证的基本功能。
    JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,其中core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。简化了JSP和Web应用程序的开发。
    3.1.2 MySQL
    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和甜业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
    3.2 软件体系结构设计
    3.2.1 功能结构
    根据需求调研结果确定本系统主要包括以下功能模块,如图3.1所示。
    在这里插入图片描述

    图3.1系统功能结构图
    3.2.2 系统架构
    由于梦想启航学生信息管理系统采用了MVC三层架构开发,从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。每层各有自己的分工。表示层为用户提供交互操作界面,方便用户操作,业务逻辑层主要负责关键业务的处理和数据的传递,数据访问层负责对数据的访问。系统架构图如图3.2所示。

    在这里插入图片描述

    图3.2 系统架构图
    3.3 数据库设计
    3.3.1 概念结构设计
    本系统采用概念结构模型,首先需要创建数据库,数据库设计表是根据用户的需求抽象出来的,是一种线性表。根据项目中功能结构构建各个实体,并且确立实体之间的对应关系,整个项目的所有实体的各种字段和属性都存储在数据库表中,运用 ER 模型把问题转化成现实的问题。概念模型(E-R图)如图3.3所示。
    在这里插入图片描述

    图3.3 E-R图
    3.4.2 表的详细设计
    通过对领域对象、业务对象及对象间关联的分析,对本系统的数据库表进行了设计,如表3.1–表3.7所示。本系统数据库管理采用MySQL。
    (1)用户信息表(user)
    管理员信息表主要用于保存系统管理员的信息,主要字段包括:管理员ID、登录账号、登录密码。表结构如表3.1所示。
    表3.1 管理员信息表(admin)
    列名 数据类型 长度 允许空 是否主键 说明
    Id int 10 否 是 管理员ID
    username varchar 12 否 否 登录账号
    pwd varchar 15 否 否 登录密码

    (2)学生信息表(stu)
    学生信息表主要是记录了学生基本信息,表结构如表3.2所示。
    表3.2 学生信息表(stu)
    列名 数据类型 长度 允许空 是否主键 说明
    id int 4 否 是 学生ID
    username varchar 50 否 否 学生名
    pwd varchar 50 否 否 密码
    sex varchar 50 否 否 性别
    age varchar 50 否 否 年龄
    stuno varchar 20 否 否 学号

    (3)成绩信息表(report)
    成绩信息表主要是记录了成绩的基本信息,表结构如表3.3所示。

    表3.3成绩信息表(report)

    列名 数据类型 长度 允许空 是否主键 说明
    id int 4 否 是 ID
    stuno varchar 50 否 否 学号
    coursename varchar 50 否 否 课程名称
    score varchar 50 否 否 成绩

    (4)课程信息表(course)
    课程信息表主要是课程的相关信息,其中ID是主键,表结构如图3.4所示。
    表3.4课程信息表(course)
    列名 数据类型 长度 允许空 是否主键 说明
    id Int 4 否 是 ID
    name Int 4 否 否 名称
    teacher varchar 50 否 否 教师
    period varchar 50 否 否 成绩id
    3.5 对象设计
    3.1.1 课程添加用例对象设计
    (1)用例实现
    课程添加用例的实现顺序图如图3.4所示。
    在这里插入图片描述

    图3.4课程添加用例顺序图
    在课程添加用例中当管理员登录成功时,点击课程管理按钮就可以查看课程列表所有的课程信息,当管理员点击添加按钮时,填写课程信息,提交给后台,跳转界面弹出添加成功,插入数据库并显示在课程列表中。
    3.1.2 成绩添加用例对象设计
    (1)用例实现
    成绩添加用例的实现顺序图如图3.6所示。
    在这里插入图片描述

    图3.6成绩添加用例顺序图

    在成绩添加用例中当用户登录成功时,点击成绩添加按钮就可以跳到添加成绩的界面。管理员填写需要添加的信息,点击提交按钮,跳转界面弹出添加成功,插入数据库并显示在成绩管理界面中。只有管理员才可以对成绩操作,对成绩列表和成绩信息中数据进行查找和删除动作。

    第4章 系统实现
    4.1核心功能实现
    4.1.1成绩管理
    管理员在登录成功时,点击成绩管理模块,可以查看所有的各科成绩,所有成绩都在成绩管理列表中显示,管理员可以对各科成绩进行增删改查等操作。实现效果如图4.1所示。
    在这里插入图片描述
    在这里插入图片描述

    图4.1成绩管理页面

    部分代码如下:
    @RequestMapping(value="/list")
    public String list(Report report,HttpServletRequest request) throws Exception{
    List list = reportService.queryReportList(report);
    request.setAttribute(“reportList”, list);
    return “/report/reportlist.jsp”;
    }

    @RequestMapping(value="/listmy")
    public String listmy(Report report,HttpServletRequest request) throws Exception{
    	Stu stu=(Stu) request.getSession().getAttribute("user");
    	report.setStuno(stu.getStuno());
    	List<Report> list = reportService.queryReportList(report);
    	request.setAttribute("reportList", list);
    	return "/report/reportlistmy.jsp";
    }
    
    @RequestMapping(value="/addreport")
    public String addreport(Report report,HttpServletRequest request) throws Exception{
    	reportService.insertReport(report);
    	report=new Report();
    	return this.list(report, request);
    }
    
    @RequestMapping(value="/toaddreport")
    public String toaddreport(Report report,HttpServletRequest request) throws Exception{
    	List<Course> courseList=courseService.queryCourseList(null);
    	request.setAttribute("courseList", courseList);
    	return "/report/reportadd.jsp";
    }
    
    @RequestMapping(value="/toupdatereport")
    public String toupdatereport(int id,HttpServletRequest request) throws Exception{
    	Report report=reportService.queryReportById(id);
    	request.setAttribute("report", report);
    	List<Course> courseList=courseService.queryCourseList(null);
    	request.setAttribute("courseList", courseList);
    	return "/report/reportupdate.jsp";
    }
    
    @RequestMapping(value="/deletereport")
    public String deletereport(int id,HttpServletRequest request) throws Exception{
    	reportService.deleteReport(id);
    	return "/report/list";
    }
    
    @RequestMapping(value="/updatereport")
    public String updatereport(Report report,HttpServletRequest request) throws Exception{
    	reportService.updateReport(report);
    	report=new Report();
    	return this.list(report, request);
    }
    

    4.1.2课程管理
    管理员登录后,可以查看课程列表,根据不同课程选择自己感兴趣的,点击查看详情跳转到课程详情界面,包括课程介绍。管理员可以对课程信息进行增删改查的操作。实现效果如图4.2所示。

    在这里插入图片描述
    在这里插入图片描述

    图4.2课程管理页面

    部分代码如下:
    @RequestMapping(value="/list")
    public String list(Course course,HttpServletRequest request) throws Exception{
    List list = courseService.queryCourseList(course);
    request.setAttribute(“courseList”, list);
    return “/course/courselist.jsp”;
    }

    @RequestMapping(value="/addcourse")
    public String addcourse(Course course,HttpServletRequest request) throws Exception{
    	courseService.insertCourse(course);
    	course=new Course();
    	return this.list(course, request);
    }
    
    @RequestMapping(value="/toupdatecourse")
    public String toupdatecourse(int id,HttpServletRequest request) throws Exception{
    	Course course=courseService.queryCourseById(id);
    	request.setAttribute("course", course);
    	return "/course/courseupdate.jsp";}
    

    4.1.3学生信息管理
    管理员登录后,可以学生信息的管理,对其进行删除和编辑,可以添加学生和修改学生,还可以对学生信息进行管理。实现效果如图4.3所示。
    在这里插入图片描述

                           图4.3梦想启航学生信息管理页面
    

    部分代码如下:
    @RequestMapping(value="/addstu")
    public String addstu(Stu stu,HttpServletRequest request) throws Exception{
    stuService.insertStu(stu);
    stu=new Stu();
    return this.list(stu, request);
    }

    @RequestMapping(value="/toupdatestu")
    public String toupdatestu(int id,HttpServletRequest request) throws Exception{
    	Stu stu=stuService.queryStuById(id);
    	request.setAttribute("stu", stu);
    	return "/stu/stuupdate.jsp";
    }
    
    @RequestMapping(value="/deletestu")
    public String deletestu(int id,HttpServletRequest request) throws Exception{
    	stuService.deleteStu(id);
    	return "/stu/list";
    }
    
    @RequestMapping(value="/updatestu")
    public String updatestu(Stu stu,HttpServletRequest request) throws Exception{
    	stuService.updateStu(stu);
    	stu=new Stu();
    	return this.list(stu, request);
    

    4.1.4管理员管理
    管理员登录后,可以对管理员进行修改增加和删除。实现效果如图4.4所示。

    在这里插入图片描述

    图4.4管理员管理页面

    部分代码如下:
    @RequestMapping(value="/adduser")
    public String adduser(User user,HttpServletRequest request) throws Exception{
    userService.insertUser(user);
    user=new User();
    return this.list(user, request);
    }

    @RequestMapping(value="/toupdateuser")
    public String toupdateuser(int id,HttpServletRequest request) throws Exception{
    	User user=userService.queryUserById(id);
    	request.setAttribute("user", user);
    	return "/user/userupdate.jsp";
    }
    
    @RequestMapping(value="/deleteuser")
    public String deleteuser(int id,HttpServletRequest request) throws Exception{
    	userService.deleteUser(id);
    	return "/user/list";
    }
    
    @RequestMapping(value="/updateuser")
    public String updateuser(User user,HttpServletRequest request) throws Exception{
    	userService.updateUser(user);
    	user=new User();
    	return this.list(user, request);
    }
    

    4.1.5学生成绩查看
    学生登录后,可以对成绩进行查看详情。实现效果如图4.5所示。
    在这里插入图片描述

    图4.5学生成绩查看页面
    部分代码如下:
    @RequestMapping(value="/list")
    public String list(Course course,HttpServletRequest request) throws Exception{
    List list = courseService.queryCourseList(course);
    request.setAttribute(“courseList”, list);
    return “/course/courselist.jsp”;
    }

    @RequestMapping(value="/addcourse")
    public String addcourse(Course course,HttpServletRequest request) throws Exception{
    	courseService.insertCourse(course);
    	course=new Course();
    	return this.list(course, request);
    }
    
    @RequestMapping(value="/toupdatecourse")
    public String toupdatecourse(int id,HttpServletRequest request) throws Exception{
    	Course course=courseService.queryCourseById(id);
    	request.setAttribute("course", course);
    	return "/course/courseupdate.jsp";
    }
    
    @RequestMapping(value="/deletecourse")
    public String deletecourse(int id,HttpServletRequest request) throws Exception{
    	courseService.deleteCourse(id);
    	return "/course/list";
    }
    

    4.1.6学生课程查看
    学生登录后,可以在首页点击课程管理按钮,进入课程信息界面,还可对课程进行查询和查看具体信息。实现效果如图4.6所示。
    在这里插入图片描述

    图4.6学生课程查看页面

    部分代码如下:
    @RequestMapping(value="/list")
    public String list(Course course,HttpServletRequest request) throws Exception{
    List list = courseService.queryCourseList(course);
    request.setAttribute(“courseList”, list);
    return “/course/courselist.jsp”;
    }

    @RequestMapping(value="/addcourse")
    public String addcourse(Course course,HttpServletRequest request) throws Exception{
    	courseService.insertCourse(course);
    	course=new Course();
    	return this.list(course, request);
    }
    
    @RequestMapping(value="/toupdatecourse")
    public String toupdatecourse(int id,HttpServletRequest request) throws Exception{
    	Course course=courseService.queryCourseById(id);
    	request.setAttribute("course", course);
    	return "/course/courseupdate.jsp";
    }
    
    @RequestMapping(value="/deletecourse")
    public String deletecourse(int id,HttpServletRequest request) throws Exception{
    	courseService.deleteCourse(id);
    	return "/course/list";	
    

    4.2 关键技术难点与解决方案
    难点:记录请求日志
    解决方案:项目开发需要记录日志,也就是记录每次请求的日志,因为Controller层全是用注解接收参数,不引入HttpRequest和HttpResponse对象。这时候遇到一个问题,前端请求的流经过apache tomcat的包装之后不可重复读。也就是说ServletInputStream不可重复读。后来的解决方法就是首先重写ServletInputStream,使其变得可读(使用ByteArrayInputStream),然后重写DispatcherServlet的doDispatch()方法,传入重写之后的流,这样就可读了。

    第5章 系统测试
    学生管理系统为方便广大校园学生和教师,以方便快捷有效为原则。早在需求阶段测试人员就对需求的覆盖度、数据模型的正确性都进行了相应的验证测试,在系统开发过程中进行了单元测试,在集成阶段进行了集成测试,在整个系统开发完成后又针对功能性方面进行了系统测试。由于论文字数章节有限,下面主要围绕功能测试用例和测试总结两个方面进行说明。
    6.1 功能测试
    本系统对学生、管理员两个核心模块进行了功能测试,测试设计如下所示:
    (1)学生登录模块功能测试
    学生功能测试包括普通用户注册、登录、搜索课程、搜索成绩、查看课程、查看成绩。测试用例设计如表5.1所示。
    表5.1 用户功能测试用例
    用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
    D001 用户注册 填写用户名、密码、性别、手机号等信息,点击“确定” 提示注册成功 通过
    D002 用户登录 页面的相关信息进行填写用户名和密码 提示登录成功 通过
    D003 用户名与密码不符合 输入的用户与密码不一致,其余选项正常填写 提示用户或密码有错误 通过
    D004 显示主页 用户登录成功后显示主界面 跳转到欢迎界面 通过
    D005 重新填写注册信息 点击“重置” 页面回到初始状态 通过
    D006 输入课程名称 点击课程搜索 页面显示按条件搜索的课程 通过
    D007 输入学科和成绩 点击搜索 显示学生这个学科的具体成绩 通过
    (2)管理员管理模块功能测试
    管理功能测试包括管理员管理、学生管理、课程管理、成绩管理。测试用例设计如表5.2所示。
    表5.2 管理员功能测试用例
    用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
    D001 正确填写用管理员登录信息 按照系统要求填写管理名、密码、密码提示问题等信息点击“确定” 系统提示登录成功 通过
    D002 注册用户管理 在用户列表中修改和删除用户信息 系统提示用户已经删除或者已经修改 通过

    续表5.2管理员功能测试用例
    用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
    D003 添加学生信息 添加学生信息 系统提示添加成功,界面显示新添加学生信息。 通过
    D004 删除学生 点击删除学生按钮 系统显示删除成功 通过
    D005 添加课程 添加课程信息 系统提示添加成功,界面显示新添加课程信息。 通过
    D006 添加成绩 添加学科考试成绩 系统提示添加成功,界面显示新添加成绩信息。 通过

    6.2 测试总结
    经过对系统进行有效的测试和修改,保证系统具备较好的稳定性和可用性。测试结束后,在测试总结中通过按等级统计、按类型统计对测试情况进行了客观的统计和分析,具体如图5.1-5.2所示。
    按等级统计bug的结果,如图5.1所示。
    在这里插入图片描述

    图5.1 按等级统计bug数
    按类型统计bug的结果,如图5.2所示。
    在这里插入图片描述

    图5.2 按类型统计bug数
    由上面统计图的结果可以看出,学生管理系统功能测试有多出Bug,需要对功能进行修改,确保每个功能按键都好使,满足项目需求。性能和可用性bug较少,基本满足项目需要。通过多次修改后,bug逐渐减少,从而使系统更好用,性能更稳定,以后开发其他软件的时候,要尽量避免功能上的bug让软件性能有所提高。

    第6章 结论与展望
    本系统在当今信息化时代是非常方便有效的,以前在纸上记录学生成绩和学生课程安排的方法在当今社会是不适用的,浪费了大量的人力财力,使用大量的纸张,破坏环境,而且也容易出错,不能随时的查询成绩,也不能随时查询自己的课程信息。这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。运用该系统可以有效的方便老师同学查看成绩,可以让学生随时的进行模拟考试并且查看成绩查看课程信息,更好的进行复习。学生查询考试成绩也不用找到老师查看成绩单,可以登录网站进行查询。运用梦想启航学生信息管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间,还能使学生更好的查看自己的成绩变化。
    经过三个多月的开发和设计,翻阅了大量的书籍和搜索了很多的网络资料,基本上完成了梦想启航梦想启航梦想启航学生信息管理系统的基本功能。本系统分为三种用户,三种用户各自有各自的功能,学生可以查询课程安排和查询成绩,老师可以对学生进行成绩管理,梦想启航学生信息管理和课程管理,而管理员可以进行学生和管理员管理。根据需求对业务和用例上进行了分析,在系统设计方面对数据库和系统的功能做了详细的设计分析,以及系统中技术难点进行关键性的分析,另外选择的框架类型进行了对比,在多方面考虑下选择了spring+springmvc+mybatis框架。在系统实现方面,以系统的核心模块为例阐述了系统的具体实现过程。通过本文研究的内容,能够减轻学校很大的重复性的工作,大大提高工作的效率。
    但是由于毕业设计时间较短,加之本人水平所限,此系统只能初步运用JSP强大功能的小部分,界面的美观程度并不是很高,系统的兼容性也没有达到可以在任意浏览器上都可以准确呈现,以及对系统的数据保护和系统的维护未进行更好的处理,因此在设计过程中可能会有一些令人不满意的地方,这有待于以后进一步完善和不断的学习。

    参考文献
    [1]石敏力. 梦想启航学生信息管理系统的设计与实现[J]. 科技讯,2017,15(12):15-15.
    [2]章伟, 韩笑, 刘振源. 基于JAVA EE的高校梦想启航梦想启航梦想启航学生信息管理系统的设计与实现[J]. 电脑知识与技术, 2016, 12(8):95-96.
    [3]蔡长安, 王琪. 基于B/S模式的梦想启航梦想启航梦想启航学生信息管理系统设计与实现[J]. 计算机工程与设计, 2016, 27(14):2585-2587.
    [4]李淑华.从Java Web应用到Web挖掘[J].软件,2016,37(7):132-134.
    [5]何栋.基于JSP语言的网站设计[J].电脑知识与技术,2014,(23):42-48.
    [6孙红丽. 基于JSP的梦想启航梦想启航梦想启航学生信息管理系统设计与实现[J]. 智能计算机与应用, 2017(2):108-109.
    [7]李枭, 任维政. 基于SpringMVC的多平台J2EE开发方式研究[J]. 吉林大学学报(信息科学版), 2017, 35(5).
    [8]赵璘, 王红霞. 基于Spring MVC+JDBCTemplate的Web系统的研究与应用[J]. 软件工程, 2017, 20(1):5-8.
    [9]汪迎春.基于JavaScript技术的网页课程设计项目设计[J].信息与电脑(理论版),2013,(10):12-13.
    [10]马骁.基于JSP技术的梦想启航梦想启航梦想启航学生信息管理系统的设计与实现[J].信息技术与信息化,2015,(11):54-58.
    [11] Hohzaki R, Maehara H. A single-shot game of multi-period
    inspection[J].European Journal of Operational Research, 2010, 207(3): 1410-1418
    [12] Yirong Shen, Yongjin Zhang, Jiancang Xie, Rengui Jiang, Hao Han. Study on Rainfall Information Integration System Based on Java Web Start [C]. 2015 International Conference on Network and Information Systems for Computers,2015: 431 - 434.

    致 谢
    在整个毕业设计的各个阶段我都得到了老师的悉心指导和耐心帮助。毕业设
    计是自己在学校完成的自己学业中最后一个由自己设计、架构、开发的一款软件了,虽
    然完成了梦想启航梦想启航梦想启航学生信息管理系统的设计与实现,但这不是我的终点,我将继续完善我的系统,做到尽善尽美,为我的大学生涯画上一个完美的句号。在具体实现过程中,我发现了一些错误,例如逻辑思路不够清晰,对用户体验方面没有全面的功能实现,还有界面相对简洁等问题,但我并没有放弃,在老师、同学们的帮助下,我解决了一些困惑和难题,通过自己不断的学习和改进,从而更加完善了我的毕业设计。
    在编码的过程中,由于自身的技术有限,也是完成毕业设计的一个难题,但是我没有退缩,通过自己努力查阅书籍和浏览相关技术的网页和博客,解决了自己编码上遇到的难题。在整个项目的开发过程中的的确确的遇到了很多各种各样的问题,自己也学会了如何去应用自己在大学四年积累的知识与技能去解决实际应用中遇到的问题,给自己的未来的职业生涯积累经验,能够更好地应用到工作中去,通过毕业设计的实现,完成了一个学生到社会人的转变,希望自己在未来的工作生涯中走的越来越好,认真的去对待未来的生活。
    最后,在整个系统开发过程中,我身边的同学和朋友给了我很多的建议,让我很快确定了系统的业务逻辑。在次我衷心的感谢软件工程系所有的授课老师,你们使本人终身受益。感谢所有关心、鼓励、支持我的家人、亲戚和朋友。

    展开全文
  • 学生成绩记录是学生成绩管理系统的中心环节,对学校教学管理非常要必要,方便学校对近期教师教学质量进行评价和对教师的评级,同时也对学生的学习情况做出判断进而得出应对措施。 二、设计目的 1.初衷 为了巩固所学...


    一、 题目选择(题目、选题意义)

    1、题目:学生成绩管理系统
    2、选题意义
    学生成绩管理系统是将学生成绩整理、记录、分析的全过的主体体现。学生成绩记录是学生成绩管理系统的中心环节,对学校教学管理非常要必要,方便学校对近期教师教学质量进行评价和对教师的评级,同时也对学生的学习情况做出判断进而得出应对措施。

    二、设计目的

    1.初衷

    为了巩固所学的javaEE的知识,培养更好的编程技能,和良好的编程习惯。

    2、结合实际

    更好应对社会需求,为以后就业打下基础,方便与社会接轨。

    3、工具

    ① 编程环境:win10
    ② 编程语言:jdk-8u251-windows-x64.exe
    ③ 编程软件:Eclipse IDE for Enterprise Java Developers - 2020-03;apache-maven-3.6.3
    ④ 服务器软件:Apache Tomcat 9.0
    ⑤ 数据库软件:mysql-5.7.20-winx64;Navicat for MySQL

    三、 总体设计(概要设计)

    1、数据库设计

    (1)用户登录注册表user设计
    在这里插入图片描述

    在这里插入图片描述

    (2)记录用户对应关系表userandrole设计
    在这里插入图片描述
    在这里插入图片描述
    (3)学生成绩表student_score的设计
    在这里插入图片描述

    在这里插入图片描述
    (4)学生信息表student_information设计
    在这里插入图片描述
    在这里插入图片描述
    (5)学生管理表student_admin设计
    在这里插入图片描述
    在这里插入图片描述
    (6)角色权限表roleandpermissions的设计
    在这里插入图片描述
    在这里插入图片描述
    (7)角色表role设计
    在这里插入图片描述
    在这里插入图片描述
    (8)权限表permission设计
    在这里插入图片描述
    在这里插入图片描述

    2.前端设计

    (1)CSS样式设计
    在这里插入图片描述
    在这里插入图片描述
    Css样式中包含网页所用字体样式、大小、颜色、网页的尺寸、网页的位置等

    (2)JS脚本设计
    在这里插入图片描述
    JS脚本中包含网页的动态样式和各种效果特性等
    (3)网页设计
    在这里插入图片描述
    其中包含用户登录的页面,和主页面,学生信息展示的页面,成绩展示的页面和信息录取页面等
    3.后台设计
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    后台设计中包含了链接、读取、修改、添加、删除MySQL数据库的脚本文件和ssm框架与各种仓库归档文件,和读取日志的文件等。

    四、重要模块详细设计

    1.框架设计

    (1)所需jar包(pom.xml)及pom.xml设计

      <!-- jar包的版本-->
            <spring.version>4.3.9.RELEASE</spring.version>
            <aspectj.version>1.6.11</aspectj.version>
            <junit.version>4.12</junit.version>
            <mysql.version>5.1.38</mysql.version>
            <mybatis.version></mybatis.version>
            <mybatis-spring.version>1.3.1</mybatis-spring.version>
            <mybatis.version>3.4.4</mybatis.version>
            <jstl.version>1.2</jstl.version>
            <jackson.version>1.9.13</jackson.version>
            <fastjson.version>1.2.46</fastjson.version>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
    
            <!-- springframe end -->
    
            <!--mysql数据库驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
                    <!--使用AspectJ方式注解需要相应的包 -->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <!--使用AspectJ方式注解需要相应的包 -->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
                    <!-- batis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis-spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <!-- json所需jar start -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.7.5</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- json所需jar end -->
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>
                    <configuration>
                        <!-- 不指定单元测试,节约时间 -->
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>
                 <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <executions>
                        <execution>
                        <!-- 指定在package命令时执行 --> 
                            <phase>package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <uriEncoding>UTF-8</uriEncoding>
                    </configuration>
                </plugin> 
            </plugins>
    

    (2)spring.xml设计

      <!-- 可实现json字符串自动转化为实体类 -->
        <mvc:annotation-driven />
    
        <!-- 实体 json 自动映射转化 -->
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
            <property name="messageConverters">  
                <list>  
                    <ref bean="mappingJacksonHttpMessageConverter" />  
                </list>  
            </property>  
        </bean>  
        <bean id="mappingJacksonHttpMessageConverter"
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>text/json;charset=UTF-8</value>
                </list>
            </property>
        </bean>
    
    
        <!-- 启用Spring对基于@AspectJ aspects的配置支持 -->
        <!-- 激活自动代理功能 -->
        <aop:aspectj-autoproxy />
    
        <!-- 事务管理 注解开启-->
        <tx:annotation-driven transaction-manager="transactionManager" />
    
        <!-- Initialization for data source -->
        <bean id="dataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="url" value="" />
            <property name="username" value="" />
            <property name="password" value="" />
        </bean>
    
        <!-- Initialization for TransactionManager -->
        <!-- 开启事务管理器 -->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!-- mybatis的配置开始 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="typeAliasesPackage" value="com.mdy.student.bean" />
            <!--  mybatis的设置-->
            <property name="configLocation" value="classpath:orm/mybatis-config.xml" />
            <!--  mapper类的配置文件的自动装载-->
            <property name="mapperLocations" value="classpath:mapper/*.xml" />
        </bean>
    
        <!-- scan for mappers and let them be autowired -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.mdy.student.mapper" />
        </bean>
        <!-- mybatis的配置结束 -->
    (3)web.xml主要内容
    <!-- 上下文监听器 不启用spring自动注入可能会失败 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <servlet>
            <servlet-name>Student</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <!-- servlet的配置文件加载 -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <!-- spring mvc 的配置-->
                <param-value>classpath*:spring/mvc-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Student</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    (4)mvc-config.xml设计
    <mvc:annotation-driven/>
    
        <context:component-scan base-package="com.mdy.student.web" />
    
    <!-- js,css等静态文件的配置,否则会被spring的过滤器拦截-->
        <mvc:resources mapping="/js/**" location="/resources/js/" cache-period="#{60 * 60}" />
        <mvc:resources mapping="/css/**" location="/resources/css/" cache-period="#{60 * 60}" />
        <!--<mvc:default-servlet-handler />-->
    
    <!-- jsp页面资源的访问配置,使用spring mvc时直接return jsp文件名-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀配置-->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 后缀配置-->
            <property name="suffix" value=".jsp"/>
        </bean>
    

    2.后台控制程序设计

    (1)页码Java文件Page.java设计

    public class Page<T> {
        private int index;//mybatis在分页时所需的下标
        private int pageNum;// 设置完页码后要设置总数据量才计算start和end
        private int pageTotal;//总页数
        public static final int pageMax = 15;//一页所显示的数据量
        private long totalData;//总数据量
        private int start;//分页栏的起始数
        private int end;//分页栏的终止数
    
        private List<T> list;//查询得到的数据
    
        //搜索栏所需的字段
        private String id;
        private String name;
        private char level;
        private String scoreN;
        private String sortType;
        private String sort;
        private double scoreU;// 左
        private double scoreD;// 右
    
        public Page() {
            this.scoreU = 0;
            this.scoreD = 100;
            this.pageNum = 1;
        }
        //设置总数据量的同时计算分页时起始和终止量
        public void setTotalDate(long totalData) {
            int t = 1;
            if ((int) totalData % pageMax == 0) {
                t = 0;
            }
            this.pageTotal = (int) (totalData / pageMax + t);
            this.totalData = totalData;
            this.start = pageNum - 2;
            if (this.start <= 0) {
                this.start = 1;
            }
            this.end = this.start + 4;
            if (this.end >= pageTotal) {
                this.end = pageTotal;
            }
        }
    
        // 设置页数时计算当前数据下标
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
            this.index = (this.pageNum - 1) * pageMax;
    }
    

    (2)控制层设计

    //produces表明返回格式为json,consumes表明接收数据为json,实际上接收表单数据直接用spring自带的自动类型转化会更方便,用json需要额外的配置
    @RequestMapping(value = "/searchStudentJson", method = RequestMethod.POST, produces = "application/json",consumes="application/json")
        //表明返回json格式的数据
        @ResponseBody
        public Page<Student> searchStudentJson(@RequestBody Page<Student> pagebean, ModelMap model) {
            //返回一个Page对象
            return studentService.searchStudent(pagebean);
    }
    

    3.前端数据处理设计

    (1)前端数据处理(jsp)

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <link href="../css/main.css" rel="stylesheet" type="text/css">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>查看成绩</title>
    <script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="../js/resetForm.js"></script>
    <script type="text/javascript" src="../js/ajaxSetViewData.js"></script>
    <scr        success : function(result) {
                    createTable(result)
                    initPage(result)ipt type="text/javascript">
    //为了使用el,只能将js写在外面
        function search(number) {
            var json = {};
            //将表单数据转化为json数组
            var data = $('#form').serializeArray();
            //将json数组转化为json,否则控制层会报错,控制层的修改操作博主并没有找到,只能在js处解决
            $.each(data, function() {
                if (json[this.name]) {
                    if (!json[this.name].push) {
                        json[this.name] = [ json[this.name] ];
                    }
                    json[this.name].push(this.value || '');
                } else {
                    json[this.name] = this.value || '';
                }
            })
            json.pageNum = number 
            $.ajax({
                type : "POST",
                dataType : "json",
                //contentType : "application/json",
                url : "${pageContext.request.contextPath}/manager/searchStudentJson",
                data : JSON.stringify(json),
                //$('#form').serialize() 若不使用json,直接使用这个就行了
        
                    //resetForm(result)
                    $('#number').html(result.pagNum)
                    $('#numberMax').html(result.pageTotal)
                },
                error : function() {
                    alert("出错")
                }
            });
        }
    </script>
    <script type="text/javascript" src="../js/CheckPage.js"></script>
    </head>
    <body onload="search(1)">
        <%@include file="主页.jsp"%>
        <div>
            <form action="searchStudent" method="post" id="form">
                <%@include file="searchBar.jsp"%>
                <%@include file="ViewData(JSON).jsp"%>
                <%@include file="page.jsp"%>
            </form>
        </div>
    </body>
    </html>
    

    (2)动态显示表格数据和分页栏的js设计

    function checkdel(){
        return confirm("真的要删除吗");
    }
    function createTable(result) {
        $("#body").html("")
        for (var i = 0; i < result.list.length; ++i) {
            var s = "<tr><td>"
                    + result.list[i].id
                    + "</td>"
                    + "<td>"
                    + result.list[i].name
                    + "</td>"
                    + "<td>"
                    + result.list[i].chinese
                    + "</td>"
                    + "<td>"
                    + result.list[i].math
                    + "</td>"
                    + "<td>"
                    + result.list[i].english
                    + "</td>"
                    + "<td>"
                    + result.list[i].per
                    + "</td>"
                    + "<td>"
                    + result.list[i].homework
                    + "</td>"
                    + "<td>"
                    + result.list[i].level
                    + "</td>"
                    + "<td><a href='editStudent?id="+result.list[i].id+"'>编辑</a></td><td><a href='delStudent?id="+result.list[i].id+"' οnclick='return checkdel()'>删除</a></td></tr>"
            $("#body").append(s)
        }
    }
    function initPage(result) {
        var s = ""
        $('#tip').html(s)
        var t;
        if (parseInt(result.pageNum) - 1 < 0) {
            s += "<li><a>上一页</a>"
        } else {
            t = parseInt(result.pageNum) - 1
            s += "<li><a href='javascript: search(" + t + ");'>" + "上一页" + "</a>"
        }
        for (t = parseInt(result.start); t <= parseInt(result.end); t++) {
            if (t != parseInt(result.pageNum)) {
                s += "<li><a href='javascript: search(" + t + ");'>[" + t + "]</a>"
            } else {
                s += "<li><a>[" + t + "]</a>"
            }
        }
        if (parseInt(result.pageNum) + 1 > parseInt(result.pageTotal)) {
            s += "<li><a>下一页</a>"
        } else {
            t = parseInt(result.pageNum) + 1
            s += "<li><a href='javascript: search(" + t + ");'>" + "下一页" + "</a>"
        }
        s += "<li><a href='javascript: search(" + result.pageTotal + ");'>尾页</a>"
        $('#tip').append(s)
    

    4.后台数据库链接文件

    在这里插入图片描述

    五、运行截图

    (1)主页登录、注册页
    在这里插入图片描述
    在这里插入图片描述
    (2)添加学车成绩页面
    在这里插入图片描述
    (3)查看、修改、删除学生成绩页面其中修改、删除权限归管理员用户所有
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    总结

    不知不觉一个月过去了,JAVAEE 也学完了,自我总结一下一个月的成果。
    学习的过程除了纠结还是纠结,纠结于循环套循环;纠结于方法里调用方法;纠结于这个线程启动另外一个线程;纠结于类中类;等等。。。一个月就这么纠结过来了。
    总结以下几点供新手参考:
    一、学习JAVA 说难也不难,说易也不易,代码不是重点,思维才是首要的;
    二、学习JAVA 要多看看别人的代码,多多练习,有时候你觉得很难的问题,其实是你的思维短路了,看 了一下别人的代码,我擦 原来这么简单。。
    三、JAVA里面 面向对象 这章很重要,为后面的课程打基础的,多线程,IO流是难点

    展开全文
  • 前提概要: ...笔者在开始做项目前,首先是对项目需求的一个细化,有点像是将一个大目标拆解成一个个小目标,分解后便做了如下图: 项目实现: 随后笔者将项目主要分为了四大块: 1、简单的UI实现,也就

    前提概要:

    此篇文章的面向读者主要是C++新手,笔者希望能够通过自己经验的分享给新手读者一定的灵感,如有问题欢迎指正。关于此项目的描述,已经写在了上一篇的总结,

    地址为:http://blog.csdn.net/double2hao/article/details/50800595



    项目设计:

    笔者在开始做项目前,首先是对项目需求的一个细化,有点像是将一个大目标拆解成一个个小目标,分解后便做了如下图:



    项目实现:

    随后笔者将项目主要分为了四大块:

    1、简单的UI实现,也就是引导界面  

    (此点最为基础,也是用户所可以看到的东西,但是涉及到了整个项目,所以做完了会对项目有一个整体了解:比如我考虑到后面有一个界面需要做到删除学生信息的功能,那么之后我设计数据结构的时候便会给类加上对应的可使用的方法)


    2、数据结构,包括学生和宿舍类的设计,以及去了解STL list的使用

    (由于文件读取的时候就需要把读入的文件放到list中,所以这个必须实现在“文件读取”前面)


    3、文件读取

    (此点是此项目很关键的一点,一切对数据的操作都是建立在“读取到的数据是正确的”的前提上)


    4、逻辑部分,说白了就是对list的操作,增删查改


    笔者做此项目花了4天的时间,每一块时间正好差不多是花了一天的时间来写。



    碰到的问题:

    1、对STL list的不了解

    解决:

    这点解决的方法其实也比较简单,一方面看C++ API文档,另一方面查看了网友写的比较好的博客。资源如下:

    c++ api文档:http://download.csdn.net/detail/double2hao/9452415

    笔者所参考的博客:STL list链表的用法详细解析  

      stl.find_if用法总结

    2、文件读写问题

    解决:

    参考博客:C++文件读写详解(ofstream,ifstream,fstream)


    3、字符串读取

    解决:

    习惯了JAVA的string之后,c++的string真的用不习惯。笔者直接采用了用char数组读取的方式。


    展开全文
  • 最新大学生征兵工作计划【写作要点】1、标题计划的标题,有四种成分:计划单位的名称;计划时限;计划内容摘要;计划名称。2、正文(1)目标。这是计划的灵魂。...要明确何时实现目标和完成任务,...

    最新大学生征兵工作计划

    【写作要点】

    1

    、标题

    计划的标题,

    有四种成分:

    计划单位的名称;

    计划时限;

    计划内容摘要;计划名称。

    2

    、正文

    (1)

    目标。这是计划的灵魂。计划就是为了完成一定任

    务而制订的。目标是计划产生的导因,也是计划奋斗方向。

    因此,计划应根据需要与可能,规定出在一定时间内所完成

    的任务和应达到的要求。任务和要求应该具体明确,有的还

    要定出数量、质量和时间要求。

    (2)

    措施。要明确何时实现目标和完成任务,就必须制

    定出相应的措施和办法,这是实现计划的保证。措施和方法

    主要指达到既定目标需要采取什么手段,动员哪些力量,创

    造什么条件,排除哪些困难等。总之,要根据客观条件,统

    筹安排,将“怎么做”写得明确具体,切实可行。

    (3)

    步骤。这是指执行计划的工作程序和时间安排。每

    项任务,在完成过程中都有阶段性,而每个阶段又有许多环

    节,它们之间常常是互相交错的。因此,订计划必须胸有全

    局,妥善安排,哪些先干,哪些后干,应合理安排。

    3

    、落款

    在正文结束的后下方,制订计划的日期。此外,如果计

    划有表格或其他附件的,或需要抄报抄送某些单位的,应分

    别写明。

    【范文】

    征兵工作关系国家的主权和领土完整、社会主义事业

    展开全文
  • 在对个人和内外环境因素进行分析的基础上,确定一个人的事业发展目标,并选择实现这一事业目标的职业或岗位,编制相应的工作、教育和培训行动的计划,对每一步骤的时间、项目和措施作出合理的安排。今天为大家准备的...
  • 找出学生学习中存在的问题,并对问题进行剖析,让教育工作者对职校学生的现状有较充分的了解和认识,以便在以后的教学中做到有的放矢、对症下药,实现培养优秀技术人才的目标。[关键词]中职学校;学习状态;学习...
  • 承办单位为中国科学院大学学生会,协办单位为中国科学院计算所研究生会、网络中心研究生会、人工智能学院学生会、化学工程学院学生会、公共政策与管理学院学生会、微电子学院学生会。2020年4月26日,第14期“AI未来...
  • 学生宿舍管理系统项目计划书.doc 学生宿舍管理系统项目计划书组长张宾成员安长冬刘李阳郭振海张远航学校河南商业高等专科学校专业软件开发和项目管理时间2010年9月28日引言111编写目的112开发背景1121现状分析113...
  • 学生在课堂上睡觉,是学生在课堂中对课堂信息的无效反映,既是学生的悲哀又是老师的失败。课堂是学校教育的主阵地,课堂是塑造学生精彩人生的战场。课堂不仅是学习,课堂也是一种生活;教室不仅是学习的地方,也是...
  • (5)为了确保工程各项目标实现, 本工程列为我集团公司重点工程, 精心组织, 精心施工。 3. 总体施工方案、主要施工方法及主要管理措施 3.1 总体施工方案 根据该工程的施工特点, 项目经理部全面进行统筹, 精心...
  • 来访者姓名,访问时间,离开时间) 3.1.1 系统的实现与测试 使用不同函数和代码将前台的各个控件按钮与后台进行连接,实现各个模块的功能,最终实现前台与后台的完全链接并能够实现学生宿舍管理系统中所要求的功能。...
  • 一、指导思想专业建设规划贴近市场对人才的需求,根据地方经济和社会的发展情况,结合学校的实际制定计算机及应用专业建设规划和年度实施计划,围绕培养目标,正确处理专业的原有基础、近期发展和长远目标三者之间的关系...
  • 目标管理体系:OKR

    千次阅读 2016-09-09 14:09:01
    OKR体系的全称是Objectives & Key Results,即目标与关键成果。所谓OKR,O = Objective 可以理解为企业目标,KR =Key Results 可以理解为关键结果。浓缩在一起就是“为确保达成企业目标的关键结果分解与实施”。 ...
  • 参加工作第三个年头了,我时常听到身边的教师这样感叹: 现在的学生是一届比一届难教,一届不如一届好学。 教师最无奈和头疼的就是不喜欢学习的学生愈来愈多, 这常常令我们这些初为人师者感到束手无策。 我通过访谈...
  • SMART原则:五个英文单词的第一个字母,组成了计划制定的核心要点。S=Specific、M=Measurable、A=Attainable、R=Relevant、T=Time-bound——S代表具体(Specific),指绩效考核要切中特定的工作指标...——A代表可实现...
  • 学生宿舍管理系统项目-计划书学生宿舍管理系统项目计划书1.引言1.1?? 编写目的?学生公寓管理是后勤工作中非常重要、非常复杂的内容。每年新生入学时大量的学生信息录入、学生 房间分配、各项押金、住宿费用的收缴,...
  • 关于进一步加强学生公寓管理工作的意见(鲁轻院字〔2014〕35号 2014-6-17)学生公寓是学生生活与学习的重要场所,是学生接受教育的重要阵地。为提高学生公寓管理水平, 根据《教育部关于进一步加强高等学校学生公寓管理...
  • 摘要:为了摆脱传统的应试教育的桎梏,真正的实现教学资源的优化配置和利用,许多老师结合学科教育教学的现实条件,不断的改进传统的教学策略和教学方向,将课堂的主动权和选择权交给学生,保证学生能够真正的意识到...
  • 学生信息管理系统要实现目标是为该校提供全面的学生信息管理的解决方案,以解决传统人工管理方式效率低、保密性差,不利于查找、更新和维护的问题,极大地提高学生信息管理的效率,节约教育经费,以适应学校信息...
  • 利用数据挖掘技术,对抗击敌方攻击的风险因素如:攻击强度、攻击频率、威胁目标性能水平、历史成功率等进行相关性分析,找出影响抗击成功率的关键性因素,再根据敌方目标攻击的方式的选择而做出具体的应对措施,这样...
  • 针对目前大学“计算机应用基础”课程教学目标设计中存在的不明确,不具体以及不易衡量等问题,提出运用目标管理领域中的SMART原则设计和优化教学目标,从而能够更好地进行教学评价和引导学生。关键词:SMART原则;教学...
  • 学生学籍管理系统开发的意义和目的 - 4 - 国内研究现状和应用前景 - 4 - 研究课题主要内容 - 5 - 第1章 需求分析 - 6 - 第2章 系统分析 - 7 - 2.1. 结构选择:B/S - 7 - 2.2. 编程语言选择:JSP/JAVA - 7 - 2.3....
  • 目标管理 - SMART原则

    2020-12-04 09:25:48
    SMART原则(S=Specific、M=Measurable、A=Attainable、R=Relevant、T=Time-based) 目录 [隐藏] ... 2.3SMART原则三 A(Attainable)——可实现性 2.4SMART原则四 R(Relevant)...
  • 深度学习在目标跟踪中的应用

    千次阅读 2017-08-24 10:28:56
    作者为中科院一学生,总结的特别特别好。  开始本文之前,我们首先看下方给出的3张图片,它们分别是同一个视频的第1,40,80帧。在第1帧给出一个跑步者的边框(bounding-box)之后,后续的第40帧,80帧,bounding-...
  • 强烈表明怀孕,通常是婚外情,是实现目标的有效工具。 这些女孩可以被描述为“家庭身体”。她们在相对非社交但绝对不是非个人的活动中寻求安慰。 怀孕和结婚允许这些女孩退出几乎没有满足感的社会环境(学校),进入...
  • 摘要:本设计运用PHP为开发语言, 使用B/S架构,运用MySQL数据库,分管理员、教师和学生三个部分对校园选课系统进行了设计,实现了在线选择、退选、增加、删除课程等功能,以期开发出操作方便、易于维护、灵活实用的...
  • 黑石小学学生评教结果分析及改进措施学生评教即学生对教师的课堂教学质量和教学效果进行评价和打分,是实现教学质量监控的重要环节之一,对激发教师的教学积极性和提高教学质量发挥着积极作用。根据教学工作安排,这...
  • 2021年美国大学生数学建模竞赛D题思路分析

    万次阅读 多人点赞 2021-02-04 20:32:23
    你的“音乐影响”措施在这个子网中揭示了什么? 使用full_music_data和/或两个汇总数据集(与艺术家和年份)的音乐特征,以制定音乐相似性的度量。用你的衡量标准,流派中的艺术家是否比流派之间的艺术家更相似? ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,641
精华内容 3,856
关键字:

学生实现目标的措施