当前位置:文档之家› 基于web的学生信息管理系统

基于web的学生信息管理系统

基于web的学生信息管理系统设计

摘要随着信息技术的普及和推广,计算机网络已经成为生活和工作必不可少的有力工具。对于学校而言,实现办公自动化将大大提高学校管理的工作效率。学生信息管理系统对于学校实现办公自动化化将起到重要作用。本文充分考虑本文主要论述了基于WEB架构,采用JA V A技术设计与开发学生信息管理系统的实现方案。论文首先介绍了国内信息管理系统研究的现状与发展趋势,其次论述了采用MYSQL数据库系统的开发平台,从信息管理系统的需求分析入手,阐述了本系统的各个模块的功能,和后台数据库、系统登录、用户管理、学生信息管理、成绩管理的具体设计与实现。

关键词Web;学生信息管理;数据库

1 绪论

1.1 课题背景及意义

随着多媒体教学的推广,电脑和网络的普及,人民对于电脑的应用已经不再陌生。目前社会上信息管理系统发展飞快,在各级各类的学校中,学生成绩管理一直都是学校工作中的一项重要内容。随着学校办学规模的扩大和招生人数的增加,学生成绩管理成为一项十分繁重的工作。为了解决这一问题,有必要开发一套功能强大,操作简单,具有人性化的成绩管理系统,使计算机在学生成绩处理的领域中发挥高效灵活的功能。因此为了充分利用计算机硬件资源,做好学生成绩管理工作,提高工作效率,实现全面的、相对集中的办公自动化,开发本系统就成了当务之急。Internet和Web的迅猛发展使数据库技术也开始与Web产生了紧密的联系,一种新兴的技术—Web数据库技术出现了,并且开始在数据库的应用中发挥着越来越重要的作用。高校校园网的迅速普及,使成绩管理软件能充分依托校园网,实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展。基于Web的成绩管理系统利用JSP技术与Web 数据库想结合实现,具有数据输入、查询修改等功能,应用该系统可大大提高工作效率,并为进一步完善计算机教务管理系统和全校信息系统打下良好的基础。

1.2 国内外发展趋势

学生信息管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。迫切需要研制开发一款功能强大,操作简单,具有人性化的学生信息管理系统。

在国外高校,与国内不同,他们一般具有较大规模的稳定的技术队伍来提供服务与技术支持。而国内高校信息化建设相对起步较晚。由于整体信息化程度相对落后,经费短缺,理

论体系不健全等原因,国内高校教务管理系统在机构设置、服务范围、服务质量及人员要求上与国外高校相比都有一定的差距。

纵观目前国内研究现状,在安全性和信息更新化方面存在有一定的不足,各现有系统资料单独建立,共享性差;在以管理者为主体的方式中,信息取舍依赖管理者对于信息的认知与喜好,较不容易掌握用户真正的需求,也因此无法完全满足用户的需求。因此,教务管理软件应充分依托校园网,实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展,显的很有现实意义。

1.3论文的组织结构

毕业论文主要分为以下六个,以下是对六个部分简明的介绍。

第一部分是引言,主要介绍课题背景、国内外现状及其发展趋势,研究的目的及选课意义。第二部分是系统开发技术及开发工具,详细的介绍了技术和工具的技术手段参数。

第三部分系统分析,包括可行性分析和系统需求分析两部分。

第四部分系统总体的设计,对系统的结构、流程做出具体的分析。

第五部分是系统结构详细设计,系统各个模块分别进行详细设计,对代码实现,并对系统进行测试。

第六部分是对此学生信息管理系统的总结及其对系统未来的展望。

2系统开发技术及开发工具

2.1系统开发技术介

2.1.1 JSP简介

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet 设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。

JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。它实现了Html语法中的java扩张(以<%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动

态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重我去4用的基于组件的设计,使基于Web 的应用程序的开发变得迅速和容易。JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

2.1.2 JavaScript介绍

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML 网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。

2.1.3 CSS介绍

级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。

2.1.4 Ajax介绍

Ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

Ajax 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

2.2系统开发工具介绍

2.2.1 eclipse简介

Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2014年6月发布代号为Luna的4.4版;2015年6月项目要发布代号为Mars的4.5版。

Eclipse是著名的跨平台的自由集成开发环境(IDE)。是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

虽然大多数用户很乐于将Eclipse 当作Java 集成开发环境(IDE)来使用,但Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse 的软件开发人员,因为它允许他们构建与Eclipse 环境无缝集成的工具。由于Eclipse 中的每样东西都是插件,对于给Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java 开发工具。尽管Eclipse 是使用Java语言开发的,但它的用途并不限于Java 语言;例如,支持诸如C/C++、COBOL、PHP、Android 等编程语言的插件已经可用。

2.2.2 MySOL简介

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。MySQL的SQL “结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。

MySQL是一个关系数据库管理系统关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“MySQL”中的SQL代表“Structured Query Language”(结构化查询语言)。SQL是用于访问数据库

的最通用的标准语言,它是由ANSI/ISO定义的SQL标准。SQL标准发展自1986年以来,已经存在多个版本:SQL-86,SQL-92,SQL:1999,SQL:2003,其中SQL:2003是该标准的当前版本。MySQL是开源的,开源意味着任何人都可以使用和修改该软件,任何人都可以从Internet上下载和使用MySQL而不需要支付任何费用。

3系统分析

3.1可行性分析

3.1.1 经济可行性

系统的经济可行性是指分析学校的经济状况和投资能力,估算系统建设、运行和维护的费用,估计系统建成后取得的效益。目前,计算机价格已经十分低廉,计算机性能却有了质的飞跃。开发本系统为学校的工作效率带来了长足的进步,为此主要表现有以下几个方面:

第一,运行本系统可以方便查询和管理学生信息;

第二,运行本系统可以节省人力和物力;

第三,运行本系统可以提高学校的工作效率;

第四,本系统可以减少信息管理的错误率。

所以,本系统的开发在经济上是可行的。

3.1.2技术可行性

本系统通过网络和网页实现,校园网的覆盖为实现学生成绩管理系统打下了基础。

使用支持动态网页的JSP技术,利用支持多用户的MySQL作为本系统的数据库,它适用于大中规模的数据量需求。使用Eclipse 作为系统开发的开发环境,Eclipse是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。3.1.3时机可行性

目前,学院的校园网络覆盖了教学区和学生区的主要建筑群以及部分的家属宿舍,

从而满足院校内各个学系,各职能部门,各直属单位的上网需求。学校良好的网络设施为学院建设“信息化校园”提供坚实的基础。

3.2系统需求分析

在设计系统之前,首先必须确定用户究竟要求软件系统完成什么任务,所以分析阶段

的基本任务是了解用户的需求,并将用户的需求用书面形式表达出来。这个阶段还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

系统分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。在全面客观的系统分析的基础上,根据用户提出的系统功能进行相应的功能设计。在互联网飞速发展的今天,对于21世纪的教学而言,应该与网路息息相关。许多人还停留在以前的手工操作,这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便,作为高校教务管理工作的一部分,既方便了学生查看成绩、老师的教学管理、更加方便了学校的教务管理。

经过调研与可行性分析,出于对教师和学生需求的考虑,设计了这套系统,有一个超级管理员root,密码为123,该root能够在网页上登陆,并具备以下功能:(1)添加学生(学号和姓名以及入学日期);

(2)删除学生;

(3)添加课程(课程代号,课程名字,开课时间);

(4)删除课程;

(5)录入学生成绩,修改学生成绩;

(6)统计学生信息:

可通过指定的学生名字查看该学生的所有信息;

查看指定课程成绩不及格的学生名单;

统计各课程的平均分;

统计课程的排名情况;

学生能够同学学号注册账户(账户名和密码),通过账户登入系统,并具有以

下功能:

(1)查看考试成绩;

(2)查看和修改个人信息;

4系统总体的设计

4.1系统结构设计

根据前面的需求分析,我们把系统分为3大功能模块:

(1)教师登陆模块:老师依据系统设计好的学号0,用户名root,登陆密码123完成

登陆,否者不能完成登陆。教师登陆后能够完成①添加学生(学号和姓名以及入学日期),删除学生,添加课程(课程代号,课程名字,开课时间),删除课程,录入学生成绩,修改学生成绩;②统计学生信息:可通过指定的学生名字查看该学生的所有信息,查看指定课程成绩不及格的学生名单,统计各课程的平均分,统计课程的排名情况。

(2)学生注册模块;学生表中的学生可以根据自己的学号注册自己的账户。

(3)学生登陆模块;学生根据注册好的账户,可以完成查看考试成绩和查看和修改个人信息。

整个系统的主要结构图如图4-1所示

图4-1 系统结构图

4.2系统流程

图4-2 系统流程图

在图4-2中,首先老师先登录,由后台验证老师信息和老师权限后,判断是否是老师。如果是老师,则老师可以登陆后能够完成添加学生(学号和姓名以及入学日期),删除学生,添加课程(课程代号,课程名字,开课时间),删除课程,录入学生成绩,修改学生成绩;统计学生信息:可通过指定的学生名字查看该学生的所有信息,查看指定课程成绩不及格的学生名单,统计各课程的平均分,统计课程的排名情况。如果登陆者是学生,学生能查看自己的成绩和个人信息,并且只能修改个人信息。

4.3功能模块设计

学生和教师是本系统的中心对象。根据模块划分和需求分析可知,该系统的流程主要描述的是当教师对自己所教课程的学生打分以后学生可以登录查询到自己该科目的成绩。该系统包括三个基本流程,包括老师登陆,学生注册,学生注册,适用于教师、学生。图

4-描述的是老师的操作流程:首先老师要进行学生、教师、班级、和课程数据的初始化,这样学生和教师就可以登录使用该系统了。

图4-3老师的操作流程

图4-4是学生注册的操作流程。若学生表即student表中有某一个学生的信息,那么学就能够根据学号注册自己的账户信息,根据这个账户能够登陆自己的账户。

图4-4学生注册流程

图4-5是学生登陆的操作流程。学生根据自己已经注册的账户,能够登陆到学生信息管理系统,并能够查看自己的信息和修改自己的信息。

图4-5学生登陆流程

4.4数据库设计

好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现难度。在数据库系统开始设计开发的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。在这个学生信息管理系统中,要建4张表格:

(1)学生表,用来存放学生的信息,包括学号,姓名,入学日期,出生日期,家庭住址,电话,专业。建表所建用的SQL语句为create table student(num int(100)

primary key ,name char(100) not null,etime char(100) not null,brithday

varchar(200),adress varchar(200),tel varchar(100),major varchar(100));所建表格应

该如图4-6所示:

图4-6学生表

(2)课程表,用来存放课程代号,课程名字,开课日期。建表的SQL语句为create table cur(cnum int(100) primary key,cname char(100) not null,time varchar(100) not null);

所建表格如图4-7:

图4-7 课程表

(3)成绩表,用来存放学号,课程代号,成绩。建表的SQL语句为create table gra(num int(100) not null,cnum int(100) not null,grade char(10) not null,constraint dh1 foreign key(num) references student(num), constraint dh2 foreign key(cnum) references cur(cnum));所建表格如图4-8:

图4-8 成绩表

(4)注册表,用来存放学生学号,账户名,账户密码。见表格SQL语句为create table user (num int(100) primary key,aname varchar(100) not null,apasswd varchar(100) not null);所建表格如图4-9:

图4-9注册表

5.系统模块设计与实现

根据本系统的主要功能及其上面的系统的总体设计,系统开发进入下一个重要阶段:系统模块的详细设计。在这一个阶段的工作中,有以下几个任务:

(1)对系统的各个模块做前端界面设计。

(2)对每个模块进行具体的算法设计。

(3)对系统的每个界面和功能进行编码并在最终完成测试。

5.1系统结构体系设计

本学生信息系统主要包括如下图所示框架:

图5-1 系统结构体系

JavaBean 是一种JA V A语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象.WebContent主要是各种的页面目录。

5.2用户主要模块设计

5.2.1登陆界面

登陆界面主要有三部分组成:学生登陆,注册,和教师登陆。界面如下:

图5-2登陆界面

其功能实现主要代码如下:

<%

String m=(String)request.getAttribute("m");

if(m==null){

m="";

}

%>

<%=m %>







5.2.2教师登陆模块

点击登陆界面的教师登陆后会显示教师登陆界面:

图5-3 教师登陆界面

教师登陆界面采用密码保护措施,根据设计的程序,管理员的学号为0,账户名为root,账户密码为123。若学号,账户名,账户密码全都正确,才能够登陆到学生信息管理系统。主要实现代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

String path="guanliyuan.jsp";

String a = (String)request.getParameter("xh");

String b = (String)request.getParameter("zhm");

String c = (String)request.getParameter("zhmm");

if(a.equals("0")){

if(b.equals("root")){

if(c.equals("123")){

path="root.jsp";

}else{

path="guanliyuan.jsp";

request.setAttribute("m","密码错误,请重新登录");

}

}else{

path="guanliyuan.jsp";

request.setAttribute("m","用户名或密码错误,请重新登录");

}

}else{

path="guanliyuan.jsp";

request.setAttribute("m","学号错误,请重新登录");

}

request.getRequestDispatcher(path).forward(request, response);

}

}

若管理员没有通过密码保护程序,假如学号错写成“1”如图5-4,就会出现如5-5所示界面:

图5-4教师登陆

图5-5教师登陆错误提示

如果管理员完全通过了密码保护程序,则会出现如图5-6所示的教师操作面:

图5-6老师操作界面

如图5-6所示,教师登陆后能够教师登陆后能够完成①添加学生(学号和姓名以及入学日期),删除学生(学号和姓名以及入学日期),添加课程(课程代号,课程名字,开课时间),删除课程(课程代号,课程名字,开课时间),录入学生成绩,修改学生成绩;②统计学生信息:可通过指定的学生名字查看该学生的所有信息,查看指定课程成绩不及格的学生名单,统计各课程的平均分,统计课程的排名情况。部分展示功能如下:(1)student表中没有录入学号,姓名和入学日期时是空表。现在通过教师管理录入一个学号为201101,姓名为David,入学日期为2011-09另一个为201102,姓名

为Lucy,入学日期为2011-09的学生信息,录入Lucy信息如5-7,填完信息点击

提交即可完成。俩人录入完成后student表中存在这两个学生的信息,如图5-8:

图5-7学生信息录入界面

图5-8学生信息表

这个功能涉及到MySQL在web中的应用,包括数据库的连接和对表格的操作。其中数据库连接主要实现代码如下:

public class DatabaseConnect {

private static final String DBDRIVER="com.mysql.jdbc.Driver";

private static final String DBURL="jdbc:mysql://127.0.0.1:3306/test";

private static final String DBUSER="root";

private static final String DBPASSWD="123456";

private Connection con;

public DatabaseConnect() {

//加载mysql的驱动与取得链接

try{

Class.forName(DBDRIVER);

this.con =DriverManager.getConnection(DBURL,DBUSER,DBPASSWD);

System.out.println("数据库加载成功");

} catch(ClassNotFoundException e){

e.printStackTrace();//把出错的具体情况打印

System.out.println("mysql的驱动找不到");

}catch(SQLException f){

f.printStackTrace();

System.out.println("数据库连接失败");

}

}

public Connection getConnection(){

return con;

}

public void close() {

try {

this.con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("数据库连接关闭异常");

}//关闭数据库

}

}

student表格的操作代码如下:

public class Work {

private Connection con;

public void insert1(Userxsb e) throws SQLException{

DatabaseConnect d1 = new DatabaseConnect();

this.con=d1.getConnection();

String sql="insert into student (num,name,etime) values(?,?,?)";

PreparedStatement p = this.con.prepareStatement(sql);

p.setString(1,e.getNum());

p.setString(2, e.getName());

p.setString(3, e.getEtime());

p.execute();

p.close();

this.con.close();

}

}

(2)删除student表格中名为Lucy的信息如图5-5,点击删除后,学生信息表格由图5-7变为图5-8:

图 5-9删除学生信息后的表格

此功能实现的代码如下:

public class Work2 {

private Connection con;

public void delete1(Userxsb e) throws SQLException{

DatabaseConnect d1 = new DatabaseConnect();

this.con=d1.getConnection();

String sql1="delete from student where num=?";

PreparedStatement p1 = this.con.prepareStatement(sql1);

p1.setString(1,e.getNum());

p1.execute();

p1.close();

this.con.close();

}

(3)在cur表中添加课程代号为01,课程名字位English,开课时间为2011-10和课程

代号为02,课程名字为shuxue,开课时间为2011的信息。添加完课程代号02的信

息界面如图5-10,两个全部完成后如图5-11:

图5-10课程信息录入

图5-11课程信息表格

这个功能实现代码和(1)中对表格的操作类似,具体代码如下:

public void insert2(Userkcb f) throws SQLException{

DatabaseConnect d2 = new DatabaseConnect();

this.con=d2.getConnection();

String sql1="insert into cur (cnum,cname,time) values(?,?,?)";

PreparedStatement p1 = this.con.prepareStatement(sql1);

p1.setString(1,f.getCnum());

p1.setString(2, f.getCname());

p1.setString(3, f.getTime());

p1.execute();

p1.close();

this.con.close();

}

(4)在cur表中删除课程代号为02的课程信息如界面图5-10,点击删除即可完成。

完成后课程表如图5-12:

图5-12删除课程信息后的表格

这个功能的实现代码如下:

public void delete2(Userkcb t) throws SQLException{

DatabaseConnect d2 = new DatabaseConnect();

this.con=d2.getConnection();

String sql2="delete from cur where cnum=?";

PreparedStatement p2 = this.con.prepareStatement(sql2);

p2.setString(1,t.getCnum());

p2.execute();

p2.close();

this.con.close();

System.out.println("...");

}

(5)在gra表中分别录入学号201101,课程代号01,成绩为90;学号为201102,(如

相关主题
文本预览
相关文档 最新文档