基于JSP和MySQL的学生信息管理系统

攻城狮0829

发布日期: 2020-10-23 08:55:49 浏览量: 79
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1 系统概述

1.1 课设目的

复习、巩固JavaWeb、数据库、AJAX、JQuery、HTML的基础知识,进一步加深对JSP(Java Server Pages)层框架框架技术的理解和掌握;课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

培养学生在项目开发中团队合作精神、创新意识及能力。

1.2 课设内容

本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,针对这些要求设计了学生管理信息系统。本课程设计主要解决与学生信息管理相关的问题,设计一个功能齐全的学生管理信息系统。同时实现学生档案信息的添加、删除、修改和查询;学生学籍的管理;课程的添加、修改、删除;学生成绩的录入和对学生成绩的分析等主要功能。

2 需求分析

2.1 可行性分析

2.1.1 经济可行性

对于信息系统的初次投资都是为了以后获得更大的经济或是社会利益。本系统很小,只是一个校内的交流网站,硬件上只需要一台笔记本电脑,用于管理员管理该系统,另外,因为它是基于B/S架构的,软件开发人员一人即可完成,不需要很强的经济支持,而且师生交流网站可以给学生和老师带来很大的方便,提高了效率,所以经济上的可行性是肯定的。

2.1.2 技术可行性

本系统主要使用JAVA/JSP语言开发系统,这两种语言具有简单易学的特性,把设计人员从繁琐复杂的界面设计中解脱处理。数据库管理系统选用Mysql作为数据库管理系统,它能够处理大量数据,同时保持数据的完整性并提供许多管理功能,它的灵活性、安全性和易用性为数据库编程提供了良好的条件。而且JAVA/JSP语言与Mysql数据库管理系统对系统的软硬件环境要求并不高,因此,系统的软件开发平台已成熟可行。

2.1.3 操作可行性

用户只要使用电脑,就能进行对系统操作。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的。逃犯信息管理员可对客户进行验证,对平台的信息进行发布,修改,管理等功能。而这些功能都是比较简单可行的,这些功能也比较简单的,任何人员经过讲解都是没有问题的。因此,从操作上来说本系统是完全可行的。

2.2 业务需求分析

2.2.1 学生需求分析

学生可以看到学校信息及放假日期,可以查看考试成绩,查看班级其他同学联系方式,可以修改个人信息。

2.2.2 教师需求分析

教师可以看到学校信息及通知,添加考试及登录学生成绩,查看其它教师联系方式,修改个人信息。

2.2.3 管理员需求分析

管理员要对教师,学生资料进行管理。可以查看教师列表,学生列表,对教师及学生的信息进行,增加,删除,修改,查找。可以发布考试及统计分析成绩,可以管理年级,班级,课程,还可以修改本系统。

3 系统开发环境与工具

3.1 系统开发环境

网站运用eclipse IDEA开发工具,MySQL数据库,详细信息如下:

  • 操作系统平台:Windows10

  • 数据库平台:MySQL+Navicat8.6

  • 开发平台:My eclipse

  • 运行环境:Tomcat9.0

  • 系统架构:MVC(Model View Controller 模型-视图-控制器)设计模式

  • 软件开发语言:Java+SQL

3.2 系统开发工具

开发工具:My eclipse

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开发工具。

Java中间件服务器:Tomcat 9

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。

JDK开发工具包:JDK1.8

JDK 全称Java Development Kit 是Java语言的软件开发工具包,JDK是整个Java开发的核心,他包含了Java的运行环境(JVM+Java系统类库)和Java工具。个人理解:如果说JRE是客户需要安装的,那么JDK就是开发人员所必须的,Java的开发是建立在JDK的基础上的,只有安装了JDK才能实现Java代码的编译(Javac)与运行(Java)以及其他的更多对于Java代码的操作。

数据库: MySQL和Navicat for MySQL

MySQL是一个关系型数据库管理系统, 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。Navicat for MySQL 是一套管理和开发 MySQL的理想解决方案,支持单一程序,可同时连接到 MySQL。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面,给 MySQL新手以及专业人士提供了一组全面的工具。  

4 系统设计

4.1 系统结构设计

学生信息管理系统架构图如图4-1-1所示:

4.2 E-R图

学生信息管理系统E-R图如图4-2-1所示:

4.3 数据库设计

本系统将数据存储在11个表中,分别是:

用户表

其中Type表示身份类型,1代表学生,2代表教师,3代表管理员。

字段 类型 长度 备注
Id Int 20 主键
Account Varchar 30 账号
Password Varchar 30 密码
Name Varchar 30 姓名
Type Int 20 身份

教师表

字段 类型 长度 备注
Id Int 20 主键
Number Int 20 教师编号
Name Varchar 30 姓名
Sex Varchar 30 性别
Phone Varchar 30 手机号
qq Int 20 QQ号
Photo Image 50 照片

系统信息表

字段 类型 长度 备注
Id Int 20 主键
Schoolname Varchar 30 学校名称
Forbidteacher Bool 20 允许教师登录
Forbidstudent Bool 20 允许学生登录
Noticeteacher Varchar 100 教师通知
Noticestudent Varchar 100 学生通知

学生表

其中CLazzid表示学生所属班级,Gradeid表示学生所属年级。

字段 类型 长度 备注
Id Int 20 主键
Number Int 20 学号
Name Varchar 30 姓名
Sex Varchar 20 性别
Phone Varchar 30 电话号码
qq Int 20 QQ号
Photo Image 50 照片
Clazzid Int 20 班级
Gradeid Int 20 年级

年级表&年级课程表

其中Gradeid表示课程所属年级,Courseid表示该年级的课程。

字段 类型 长度 备注
Id Int 20 主键
Name Varchar 30 年级名称
Gradeid Int 20 年级
Coursedid Int 20 课程

考试表

其中Type表示考试类型,1为统考,2为平时考试,Remark表示考试备注, Courseid表示考试科目。

字段 类型 长度 备注
Id Int 20 主键
Name Varchar 30 考试名称
Time Datetime 30 考试时间
Remark Varchar 100 备注
Type Int 20 考试类型
Gradeid Int 20 所属年级
Clazzid Int 20 所属班级
Courseid Int 20 考试科目

考试成绩表

字段 类型 长度 备注
Id Int 20 主键
Examid Int 20 所属考试
Clazzid Int 20 所属班级
Studentid Int 20 所属学生
Gradeid Int 20 所属年级
Courseid Int 20 考试科目
Socre Int 20 成绩

课程表&任课教师表

字段 类型 长度 备注
Id Int 20 主键
Name Varchar 30 科目名称
Clazzid Int 20 所属班级
Gradeid Int 20 所属年级
Coursed Int 20 所教科目
Teacherid Int 20 任课老师

班级表

字段 类型 长度 备注
Name Varchar 30 班级
Gradeid Int 20 所属年级

5 详细设计

5.1 登录界面设计

系统通过request.getParamete方法来读取用户账号密码及验证码。通过Integer.parseInt(request.getParameter(“type”))方法获取用户登陆类型。使用VCodeGenerator.java来生成随机验证码,通过if(!sVcode.equalsIgnoreCase(vcode)语句来判断用户验证码是否一致,如果不同则返回”vcodeError”验证码错误,如果相同则将账号密码进行封装。通过User loginUser = service.getAdmin(user)语句与数据库中账号密码相匹配,如果匹配失败则返回”loginError”。并重新登录,如果匹配相同通过request.getSession().setAttribute(“user”, loginUser)语句将其存储到session中,并登录系统,登录界面如图5-1-1所示。

5.2 功能设计

5.2.1 学生功能设计

学生界面分为三个区域,分别是页面上部的信息栏,左侧导航栏,以及主要显示界面,如图所示。主要显示界面通过jsp中{systemInfo.schoolName}获取数据库中学校名称,通过{systemInfo.noticeStudent}获取学校通知。如图5-2-1所示。

页面上信息栏为系统名称及学生姓名,通过request.getRequestDispatcher方法进入学生界面,使用jsp中{user.name}语句获取数据库的学生姓名。点击退出按钮可以退出系统。通过request.getSession().removeAttribute(“user”)退出系统清除用户数据,通response.sendRedirect(contextPath+”/index.jsp”)过语句使用户跳转到登录界面index实现退出登录。

左侧功能栏分别提供成绩查询,班级通讯录,及个人信息修改等操作。

学生点击教学管理时如图5-2-2所示。

学生点击成绩查询时,通过StudentDaoImpl().getStudentList方法来获取该学生在数据库中的考试列表,通过examstudent.jsp中语句调用studentExamList(request, response)方法显示考试列表。当学生点击查看成绩示使用List<Map<String, Object>> list = dao.getScoreList(exam)语句获取该学生数据库中的该科成绩,通过examstudent.jsp中语句调用columnList(request, response)将成绩显示在页面上。当学生点击班级信息时如图5-2-3所示。

通过getStudentList(String account, Page page)方法获取本班同学的班级表,可以看到其他同学的信息及联系方式,当学生选择一个同学说时点击查看按钮通过getStudent(String account)方法查看该同学的信息。通过getPhoto(HttpServletRequest request, HttpServletResponse response)方法来查看该同学的照片,学生点击系统管理时如图5-2-4所示。

通过使用editStudent(Student student)方法来实现修改学生姓名,性别,手机号,qq号并通过List<Object> params = new LinkedList<>()将其存入数据库中。

学生点击close file可以从本地将图片上传,使用setPhoto(String number, String fileName)方法实现将图片上传,并通过dao.update(“UPDATE student SET photo=? WHERE number=?”, new Object[]{photo, number})存储在数据库,实现头像的修改。

当学生点击修改密码时,学生输入原密码与新密码,通过jsp中的var validate = $(“#editPassword”).form(“validate”)来查询原密码是否正确,如果原密码正确则通过dao.update(“UPDATE user SET password=? WHERE account=?”语句将新密码存入数据库中,实现修改密码并重新登录。

5.2.2 教师功能设计

教师界面如图5-2-5所示,与学生界面类似,由上侧信息栏,左侧功能栏及主要显示界面构成。上部信息栏与主要显示界面原理与学生界面相同,不再赘述。

左侧功能栏为教学管理,教师信息,系统管理。

教师点击教学管理时如图5-2-6所示:

通过teacherExamList(String number)方法中Teacher teacher = new TeacherService().getTeacher(number)语句获取该教师信息,使用List<CourseItem> itemList = teacher.getCourseList()获取该教师的考试。教师可以进行,增加考试,登记成绩,统计成绩。

教师点击添加按钮时,通过调用addExam(Exam exam)方法实现增加考试,通过getExamClazz中Teacher list = dao.getTeacherList(sql, new Object[]{number}, grade, clazz).get(0)语句获取该教师所教课程,教师选择一门课程进行考试,输入考试名称和时间,选择考试类型,还可以添加考试备注,点击添加后通过调用dao.insertReturnKeysTransaction语句实现录入考试信息添加到数据库中。

教师点击登记成绩按钮时,通过getScoreList(Exam exam)方法教师可以查看成绩表单,并通过setScore(String[] score)方法实现对学生成绩的添加,点击提交后通过dao.updateBatch(“UPDATE escore SET score=? WHERE id=?”, param)语句调用dao层将其添加入数据库中。

教师可在此页面选择班级查看成绩,并点击导出,系统通过exportScore(HttpServletResponse response, Exam exam)方法会下载一份.xls格式的excel表格,方便教师后续对成绩进行分析。

左侧功能栏中教师信息及系统管理功能如图5-2-7与5-2-8所示。教师可在教师通讯录中查看其它教师信息及照片,在个人信息中可以修改密码,性别,联系方式和修改头像。其实现原理与学生端类似,不再赘述。

教师通讯录

个人信息页面

5.2.3 管理员功能设计

管理员页面与学生页面,教师页面类似。也是由上侧信息栏,左侧功能栏,主要显示区域。上册信息栏与主要显示界面与学生页面,教师页面实现方式相同,但是管理员主页面里,其下方系统信息写在jsp中。其界面如图5-2-9所示。

左侧功能栏包括五部分,分别是成绩统计分析,学生信息管理,教师信息管理,基础信息管理及系统信息。

管理员点击成绩分析统计时,其界面如图5-2-10所示。

管理员端通过使用getExamList(Exam exam, Page page)方法获取所有考试数据。管理员可以对考试进行增加,删除及统计成绩。其中,增加与统计成绩实现方法与教师端相同,但是在增加考试中要注意,管理员所增加的考试Type值默认是1,即管理员只能增加年级统考,与教师端不同的是,管理员多出一个删除考试按钮,通过deleteExam(int id)方法实现。同时通过jsp会发出提醒:“将删除与本次考试相关的所有成绩,确认继续?” 。

管理员点击学生信息管理时如图5-2-11所示。

通过getClazzList(String gradeid)方法来获取某一年级下全部班级,然后通过getStudentList(Student student, Page page)方法来获取某一班级全部学生并分页展示。管理员可对学生信息进行增加,修改,删除操作。还可以点击删除旁边的两个按钮选择指定年级与班级。

管理员点击添加时通过addStudent(Student student)方法实现增加学生。当管理员点击修改时,通过editStudent(Student student)方法实现修改学生信息。当管理员点击删除通过deleteStudent(String[] ids, String[] numbers)方法实现删除学生信息。

管理员点击教师信息管理时如图5-2-12所示。

其功能实现与学生信息管理页面基本相同,但是教师信息界面多出所教年级及所教课程,通过getTeacher(String number),getExamClazz(String number, Grade grade)方法实现从数据库中读取数据。

管理员点击基础信息管理时,左侧功能栏分别有三个选项,分别是年级列表,班级列表,课程列表。界面如图5-2-13所示。

点击年级列表时如图5-2-14所示。

通过getGradeList(String course)方法实现获取所有年级,通过方法中List<Object> gradeCourse = dao.getLis语句获取年级所有课程。

点击年级列表主界面添加按钮时通过addGrade(String name, String[] clazzids)方法实现添加,并通过方法中Object[][] params = new Object[clazzids.length][2]语句实现增加年级课程。

点击年级列表主界面删除按钮时通过使用deleteGrade(int gradeid)方法实现删除年级。

点击班级列表时如图5-2-15所示。

通过getClazzList(String gradeid)方法获取年级下的所有班级。

点击班级列表主界面添加按钮时通过addClazz(String name, String gradeid)方法实现增加班级。

点击班级列表主界面删除按钮时通过deleteClazz(int clazzid)方法实现删除班级。

点击课程列表如图5-2-16所示。

点击课程列表时通过getCourseList(String gradeid)方法实现获取所有课程。

点击课程列表主界面添加按钮时通过addCourse(Course course)方法实现添加课程。

点击课程列表删除按钮时通过deleteClazz(int courseid)方法实现删除课程。

管理员点击系统管理时界面如图5-2-17所示。

管理员通过editSystemInfo(String name, String value)方法实现修改学校名称,教师通知,学生通知。通知方式在学生端中已经介绍。通过adminPersonal.jsp中{systemInfo.forbidTeacher == 1 ? ‘checked’ : ‘’},{systemInfo.forbidStudent == 1 ? ‘checked’ : ‘’}语句控制是否允许教师,学生登录。

点击管理员主要显示界面保存按钮使用editSystemInfo方法中的update(“UPDATE system SET “+name+” = ?”, new Object[]{value}语句将信息保存入数据库中

修改密码功能实现与学生端相同,不再赘述。

6 总结

JAVA是一门优秀的编程语言,具有面向对象,与平台无关,安全、稳定和多线程等特点,是目前软件设计中极为健全的语言。

经过一学期的JAVA学习,对JAVA编程有了一定的认识,在做这个程序设计的时期,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。之后我查阅各种资料,无论是书本上的,还是网上的,只要是我认为有价值的,我都认真看,分析。接着,结合老师的教学视频,我就在一张白纸上列出了自己的思路。终于在努力完成了逃犯信息管理系统这一项目。当程序运行结果看到自己所想达的要求界面时感到很欣慰,虽然只是一个小的项目,但是却是又第一次完成的一个完整项目,我也从中学到了很多书本知识不能体现的东西,对JAVA也有了更深一步的认识与了解。

经过这次课题的设计并实现,尽管会遇到很多难题,但是让我更加受益的是在这次课题中得到的经验、心得和锻炼。我发现做实验的过程其实就是个不断的解决问题的过程,从中也感觉到实验成功的快乐,一个人永远有学不玩的知识,就算是实验中的知识点都学了,但在实际的应用过程中仍然会遇到不少问题,遇到问题时要做到两点:一个是“查”,一个是“问”。不懂的地方就得要自己找答案,可以从书本、网络中查找解决的答案;再一个就是问周边的同学。这次课程的设计给我所学的知识做了一个总结,为我深入学习编程做了铺垫。在本课题中存在的不足之处是在所难免的,本人将在日后加于改进。  

参考文献

[1] 徐传运、张杨、王森. Java高级程序设计. 北京:清华大学出版社,2014年6月.

[2] 缪亮、陶颖. Web前端设计与开发. 北京:清华大学出版社,2018年4月.

[3] 黄文娟. 基于Java和MySQL的图书馆信息化管理系统设计[J]. 电子设计工程,2019,27(02):20-24.

[4] 叶春凤.“项目带动教学”模式在Java课程中的应用[J]. 福建电脑,2019,35(01):175.

[5] https://www.w3school.com.cn/#.

上传的附件 cloud_download 基于JSP的学生信息管理系统.zip ( 13.70mb, 2次下载 )
error_outline 下载需要14点积分

发送私信

47
文章数
12
评论数
最近文章
eject