1、Java 学生信息管理系统设计与实现目 录1 引言 .11.1 课题背景辑意义 .11.2 课题开发技术选择 11.3 课题实现技术的简要说明 .22 系统需求分析 32.1 功能需求分析 .33 学生信息管理系统设计 .43.1 数据模型分析与设计 .43.2 结构设计与结构功能图. .63.2.1 结构设计.63.2.2 功能结构图 .64 详细设计85 系统调试常见错误17总 结 18参考文献 1811 引 言由于学生信息的冗长与繁琐,所以它的管理问题带来的麻烦和不方便也随之而来。所以开发一个适合学校的、便于管理学生信息的管理系统是十分重要的。1.1 课题背景及意义为了充分实现素质教育,
2、多方面发展学生的兴趣爱好,大部分学校都设立了全校范围的内的选修课。学生可以根据自己的兴趣和特长,选择自己喜欢的课程。由于高等学校的快速发展,高校的规模也越来越大,学生数量和课程量都迅速地增长,管理上的手工操作不仅仅会耗费学生与工作人员大量的时间和精力,效率以及准确性也很低。如何使同学们方便、快捷、准确地选课,以及老师们对学生的相关信息的管理,已经成为一个重要的问题。利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的
3、信息管理系统是十分重要的。本课题就是针对便于学生信息管理的问题而设计的一个管理系统。1.2 课题开发技术选择本课题设计主要运用的技术有两个:java 项目开发和 MysqlL 对数据库的操作。这里主要介绍本课题为什么选用这两个开发技术:首先了解一下 Java 语言特点 Java 是一种跨平台,适合于分布式计算环境的面向对象编程语言。具体来说,它具有如下特性: 简单性、面向对象、分布式、解 释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。 2 Access 数据 库的特点无范式要求,可根据 实际系统需求构造数据库。 采用标准的 SQL 结构化 查询语言。具有字符界面和图形界面,易于
4、开 发。综上所述,选择 java 作为开发语言,Mysql 作为数据库开发工具是个不错的选择。1.3 课题实现技术的简要说明 本课题主要运用了 java 图形编程和 oracle 数据库的操作。Java 图形编程给用户提供了一个直观、易于与用户进行交互的图形界面。在图形编程中,运用了大量的 java.swing 包中的类,之所以选择 swing 包中的类而不选 java.awt 包中的 类,主要是 swing 包中的类能给用户提供更好的观感。oracle 数据库的操作这部分内容分成三部分来实现:首先,编写对数据库操作的类,包括:连接数据库、执行 sql 语句、关闭数据库连接等。其次,编写一个用
5、于对学生信息进行数据库操作的类,包括:学生信息的增加、修改、删除和查询等。最后,编 写一个用于对课程相关信息进行数据库操作的类,包括:对课程信息的增加、修改、删除、 查询等等。通过结合图形编程和数据库编程,从而基本上实现了学生信息管理的基本功能,由于本人技术上的不足,难免有些地方需要改进,这些存在的问题都将成为本人前进的动力,并在日后更加完善本课题的设计。32 系统需求分析2.1 功能需求分析本课题根据学生信息管理综合分析,便出于方便管理考虑,将学生信息管理系统的功能总结起来,共需要实现以下几个方面功能:管理学生信息管理所有学生的基本信息,对学生信息的操作包括添加、修改、删除等;可以根据各种条
6、件查询出需要的信息,比如修改,可以通过学生学号查询出学生的基本信息,然后通过对需要修改项进行修改并保存修改后的结果存入数据库的学生表中。管理 课程信息管理所有课程的基本信息,包括对课程信息的添加、修改、删除等操作;可以根据各种条件查询出需要的信息,并对相应的信息进行操作。比如修改和删除,可以通过学生的学号查询出学生的相应课程信息,对相应的课程进行修改、删除操作。学生 选课与成绩根据学生的学号进行选课,登记所选课程的成绩;可以根据学号查询出选课信息与成绩。通过以上功能的设计与实现,并实现学生信息管理系统的基本功能。当然在实际的学生信息管理系统中,其功能要比本课题的多的多,也复杂的多,本课题仅简单
7、的实现了一个学生管理系统的设计与实现的流程。3 学生信息管理系统设计43.1 数据模型分析与设计数据库模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等);模型的操纵部分规定了数据的添加、删除、显示、维护、打印、查找、选择、排序和更新等操作。数据 库模型的分类:分层模型、关系模型、网 络模型和对象模型。本课题选择的关系模型,关系模型是目前最重要的一种数据模型。本课题的关系数据模型的数据结构可分为三个表来表示:学生信息表(student)、课程信息表( course)、学生选课表(sc );学生信息表用于记录学生的基本信息,如表 3-1;课程信息表用于记
8、录课程的基本信息,如表 3-2;学生选课表如下表 3-3。这三个表对应的 E-R 图分别是:图 3.1 学生信息 E-R 图;图 3.2 课程信息 E-R 图;图 3.3 学生选课 E-R 图;如下图。表 3-1 学生信息表(student)名称 字段名称 数据类型 主键 非空学号 snum char(10) yes yes姓名 sname varchar2 no yes性别 ssex char(2) no no出生日期 sbirth char(8) no no入学年份 syear char(4) no no表 3-2 课程信息表(Course)名称 字段名称 数据类型 主键 非空课程编号 c
9、num char(4) yes yes课程名称 cname varchar2 no yes授课老师 cteacher varchar2 no no表 3-3 学生选课表(SC )5名称 字段名称 数据类型 主键 非空学号 snum char(10) yes yes课程编号 cnum char(4) yes yes成绩 grade number(4,1) no no学生出生日期学号 姓名性别入学年份图 3.1 学生信息 E-R 图选课表学号课程编号成绩图 3.3 学生选课 E-R 图6课程课程编号上课地点课程名称授课教师图 3.2 课程信息 E-R 图3.2 结构设计与结构功能图3.2.1 结构
10、设计根据对系统进行需求分析,本系统将分为 4 个模块: 学生管理管理学生基本信息,包括个人信息的添加、修改、删除以及选课信息的添加。 课 程管理管理课程的基本信息,包括课程信息的添加、修改和删除。 成 绩管理管理学生选课的成绩信息,包括成绩的登记与修改。 信息查询查询已经登记的信息,包括学生的基本信息、课程的基本信息与成绩信息。3.2.2 功能结构图学生管理系统功能结构如图 3.4 所示。7学生管理系统学生管理课程管理成绩管理信息查询添加增加删除学生查询增加课程查询修改修改修改删除学生选课成绩查询按姓名查询按学号查询按课程名称查询查询所有科目成绩按授课老师查询图 3.4 学生管理系统功能结构图
11、84 详细设计该系统由 6 个模块构成,包括学生管理系统主界面模块、学生信息管理模块、 课程信息管理模块、成绩信息管理模块、信息查询模块和数据操作模块。下面分别加以叙述: 学生管理系统主界面模块学生管理系统主界面模块包括 StuMS.java 和 StuMain.java 两个文件。StuMS 是学生管理系统的主运行类,其中有运行整个程序的 main 方法,该文件生成了 StuMain 类的一个实例,从而生成了学生管理系统的界面,如图 4.1所示。StuMain 类继承自 JFrame 类,实现了 ActionListener 接口,他有一个不带参数的构造方法 StuMain(),用来生成 S
12、tuMain 的实例。StuMain 类将所有功能集中到菜单栏中,并通过调用其他模块来实现学生管理系统的各个功能。import javax.swing.UIManager;import java.awt.*;/*学生管理系统运行主类 */ public class StuMS 图 4.1 学生管理系统主界面boolean packFrame = false;/* 构造函数*/public StuMS() StuMain frame = new StuMain();9if (packFrame) frame.pack();else frame.validate();/设置运行时窗口的位置 Dim
13、ension screenSize = Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = frame.getSize();if (frameSize.height screenSize.height) frameSize.height = screenSize.height;if (frameSize.width screenSize.width) frameSize.width = screenSize.width;frame.setLocation(screenSize.width-frameSize.wid
14、th)/ 2, (screenSize.height - frameSize.height) / 2);frame.setVisible(true);public static void main(String args) /设置运行风格try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e) e.printStackTrace();new StuMS(); 学生信息管理模块学生信息管理模块主要由StuInfo.java、AddStuInfo.java、EdiStuInfo
15、.java、DelStuInfo.java、SelectCourse.java 和 StuInfoSearchSnum.java 共计 6 个文件组成,其构成关系如图 4.2 所示。10学生信息超类StuInfo.java增加学生信息AddStuInfo.java修改学生信息EdiStuInfo.java删除学生信息DelStuInfo.java学生选课SelectCourse.java按学号查询StuInfoSearchSnum.java按学号查询StuInfoSearchSnum.java图 4.2 学生信息管理模块功能结构图学生信息管理模块的 6 个文件组成了主界面中的“学生管理” 菜单
16、的内容,其中包括增加、修改、删除和学生选课功能,如图 4.3 所示。图 4.3 学生信息管理模块的运行界面 课 程信息管理模块课程信息管理模块主要由CourseInfo.java、AddCourseInfo.java、EditCourseInfo.java、DelCourseInfo.java、CourseInfoSearchCnum.java 这 5 个文件组成,其构成关系如图 4.4 所示。11课程信息超类CourseInfo.java增加课程信息AddCourseInfo.java修改课程信息EditCourseInfo.java删除课程信息DelCourseInfo.java按课程号查
17、询CourseInfoSearchCnum.java按课程号查询CourseInfoSearchCnum.java图 4.4 课程信息管理模块功能结构图课程信息管理模块中的 5 个类文件组成了主界面中“课程管理” 菜单的内容,其中包括增加、修改和删除功能,如 图 4.5 所示。图 4.5 课程信息管理模块运行界面 成 绩信息管理模块成绩信息管理模块主要由GradeInfo.java、AddGradeInfo.java、EditGradeInfo.java 这 3 个文件组成,其构成关系如图 4.6 所示。12成绩管理超类GradeInfo.java增加成绩信息AddGradeInfo.java
18、修改成绩信息EditGradeInfo.java图 4.6 成绩信息管理模块功能结构图成绩信息管理模块中的 3 个类文件组成了主界面中的“成绩管理” 菜单的内容,其中包括增加和修改功能,如图 4.7 所示。图 4.7 成绩信息管理模块的运行界面 信息 查询模块信息查询模块主要包括学生查询、课程查询和成绩查询 3 个部分。信息查询的运行主截面如图 4.8 所示。13图 4.8 学生信息查询模块的运行界面学生查询由 StuSearchSnum.java、StuSearchSname.java 和ResultStudent.java 这 3 个文件组成,主要实现功能包括:按学号查询、按学生姓名查询。
19、课程查询由 CourseSearchCname.java、CourseSearchCteacher.java 和ResultCourse.java 着 3 个文件组成,主要实现功能包括:按课程名称查询、按授课老师查询。14成绩查询由 GrdSearchAllGrade 和 ResultGrade 这 2 个文件组成,实现的功能是按照学生的学号查询该学生所有科目成绩数据 库操作模块数据库操作模块由 Database.java、StuBean.java、CrsBean.java 和csBean.java 这 4 个文件 组成,功能包括 连接数据库、执行数据库操作(对学生信息、课程信息和成绩信息进行
20、插入、修改、删除和读取)和关闭数据库连接。连接数据库的主要代码如下:/Database.javaimport java.sql.*;/* 连接数据库的类*/public class Database private Statement stmt=null;ResultSet rs=null;private Connection conn=null;String sql;String strurl=“jdbc:odbc:student“;public Database()/* 打开数据库连接*/public void OpenConn()throws ExceptiontryClass.forN
21、ame(“sun.jdbc.odbc.JdbcOdbcDriver“); conn=DriverManager.getConnection(strurl);15catch(Exception e) System.err.println(“OpenConn:“+e.getMessage();/* 执行sql语句,返回结果集rs*/public ResultSet executeQuery(String sql)stmt = null;rs=null;trystmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.C
22、ONCUR_READ_ONLY);rs=stmt.executeQuery(sql);catch(SQLException e)System.err.println(“executeQuery:“+e.getMessage();return rs;/* 执行sql语句*/public void executeUpdate(String sql)stmt=null;rs=null;trystmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);stmt.executeQuery(
23、sql);mit();catch(SQLException e)System.err.println(“executeUpdate:“+e.getMessage(); public void closeStmt()trystmt.close();16catch(SQLException e)System.err.println(“closeStmt:“+e.getMessage(); /* 关闭数据库连接*/public void closeConn()tryconn.close();catch(SQLException ex)System.err.println(“aq.closeConn:
24、“+ex.getMessage(); /*转换编码*/public static String toGBK(String str)try if(str=null)str = “;elsestr=new String(str.getBytes(“ISO-8859-1“),“GBK“); catch (Exception e) System.out.println(e);return str;5 系统调试常见错误1.NullPointerException 异常一般是对一个为 NULL 值的变量进行操作引起的。为避免这种异常,最好在对变量操作之前检查,看它是否为 NULL 值。2.SQLExcep
25、tion 异常一般是由于 SQL 语句不正确引起的。为避免这种异常,最好在使用 SQL语句的程序中捕获此 SQL 异常。173.NumberFormatException 异常这是由于数字的格式错误而出现的例外。为了避免出现此类错误,一般必须保证数据格式输入正确。4.数据库连接垃圾回收在实际的开发应用中,通常出现某一个对象未能关闭的情况,为了防止这种情况的发生,可以在有关对数据库操作的 Java 类文件中增加自动回收函数,在 JVM 自动 地回收对象时,取出使用的连接 对象,判断是否关 闭,如果没有关闭则关掉。代码如下所示:protected void finalize()tryIf(getC
26、onn()!=nullstm.close();conn.close();catch(SQLException e)总 结经过这次课题的设计并实现,尽管会遇到很多难题,但是让我更加受益的是在这次课题中得到的经验、心得和锻炼。本系统实现了信息化管理学生信息,能够进行信息存储、查询、修改等能功。 该系 统由六个模块构成,包括学生管理系统的主界面模块、学生信息管理模块、课程信息管理模块、成绩信息管理模块、信息 查询模块和数据库操作模块。通过这些模块的有机结合,能方便的对学生信息进行综合管理,从而实现了信息化管理的目的。由于本人的能力有限,设计过程中难免有不足之处,例如:没有登陆界18面、没有区分用户身份及密码服务、数据库设计相对简单等。这些设计中的存在问题,本人将在日后进一步修改,以便让程序的设计更加完善。参考文献1 萨师 煊、王珊. 数据库系统概论(第三版)M. 北京:高等教育出版社2张广彬、梦红蕊、张永宝编著.Java 课程设计案例精编. 北京:清华大学出版社