JAva学生成绩管理系统

发布时间:2020-07-01 06:03:19   来源:文档文库   
字号:

学生成绩管理系统

1.课程设计的目的

由于高等学校的快速发展,高校规模越来越大,学生数量与课程数量都在迅速地增长,管理上的手工操作不仅仅会耗费学生与工作人员大量的时间和精力,效率以及准确性也很低。如何使同学们方便,快捷、准确地选课,已经成为一个重要的问题。

利用计算机进行学生选课方面的管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的管理系统是十分重要的。该系统就是设计一个学生成绩的管理系统,由计算机来代替人 工执行一系列诸如增加新学生成绩信息、删除学生成绩信息、学生资料、查询、修改等 的处理操作,以方便管理人员的管理信息工作。

2.设计方案论证

2.1设计思路

根据对系统进行的需求分析,本系统将分为4个模块:分别是学生管理模块、课程管理模块、成绩管理模块、信息查询模块。实现的功能有:

1)增加学生信息

系统操作人员打开学生信息增加界面,输入相关信息,在数据库中添加相关数据。 (2)修改学生信息

根据学生学号查询出该学生的相关信息,修改相关条目后保存在数据库中。

(3)删除学生信息

根据学生学号查询出该学生的相关信息,确定删除后,在数据库中删除该信息。

(4)学生选课

选择学生学号与需要选择的课程,确认无误后保存,数据库中将自动添加新的选课记录。

(5)增加课程信息

系统操作人员根据打开课程信息增加界面,输入相关信息,在数据库中添加相关数据。

(6)修改课程信息

根据课程号查询出课程的相关信息,修改相关条目后保存在数据库中。

(7)删除课程信息

根据课程号查询出该课程的相关信息,确定删除后,在数据库中删除该信息。

(8)登记成绩

根据学号,以及该学生所选择的课程,进行成绩登记,未选课的学生无法进行登记。

(9)修改成绩

对登记的成绩信息进行修改。

(10)学生查询

可以根据学生学号、学生姓名、学生性别、学生所学专业、学生所属学院、来对学生信息进行查询,所有符合查询条件的学生信息都将会被显示出来。

(11)课程查询

可以按照课程名称,授课教师的姓名,对课程的详细信息进行查询,所有符合查询条件的课程信息都将会被显示出来。

(12)成绩查询

根据学生的学号来查询该学生所有课程的成绩。

2.2数据库设计

数据库中应包含3个表,即课程信息表(Course)学生信息表(Student)和学生选课表(SC)。设计表如表1,表2,表3所示。

1 课程信息表(Course)

2学生信息表(Student)

3 学生选课表(SC)

2.3设计方法

(1)学生管理系统主界面模块

学生管理系统主界面模块包括StuMS.java和StuMain.java两个文件。StuMS是学生管理系统的主运行类,其中有运行整个程序的main方法,该文件生成了StuMain类的一个实例,从而生成了学生管理系统的界面。StuMain类继承自JFrame类,实现了事件侦听的接口,它有一个不带参数的构造方法StuMain(),用来生成StuMain的实例。StuMain类将所有的功能集中到菜单栏中,并通过调用其他模块来实现学生管理系统的各个功能。

(2)学生信息管理模块

学生信息管理模块主要由StuInfo.javaAddStuInfo.javaEditStuInfo.javaDelStuInfo.javaSelectCourse.javaStuInfoSearchSnum.java6个文件组成。StuInfoAddStuInfoEditStuInfoDelStuInfo3个类的超类,由于AddStuInfoEditStuInfoDelStuInfo的界面显示有共同之处,所以编写包含共有界面的StuInfo类,可以快速实现其3个子类的界面显示。它们之间的构成关系如图1所示。这6个类文件组成了主界面中“学生管理”菜单的内容,其中包括增加、修改、删除和学生选课功能。

图1 学生信息管理功能结构图

其中StuInfoSearchSnum类是选择学号的类,该类利用getSnum()方法将选择出的学号返回给调用它的类。调用它的类包括EditStuInfo类和DelStuInfo类。

(3)课程信息管理模块

课程信息管理模块主要由CourseInfo.javaAddCourseInfo.javaEditCourseInfo.javaDelCourseInfo.javaCourseInfoSearchCnum.java5个文件组成,它们组成了主界面中“课程管理”菜单的内容,其中包括增加、修改和删除功能。CourseInfoAddCourseInfoEditCourseInfoDelCourseInfo3个类的超类,由于AddCourseInfoEditCourseInfoDelCourseInfo的界面显示有共同之处,所以编写包含共有的CourseInfo类,可以快速实现其3个类的界面显示。它们之间的构成关系如图2所示。

图2 课程信息管理功能结构图

CourseInfoSearchCnum类是选择课程号的类,该类利用getCnum()方法将选择出的学号返回给调用它的类。调用它的类包括EditCourseInfo类和DelCourseInfo类。

(4)成绩信息管理系统

成绩信息管理模块主要由GradeInfo.javaAddGradeInfo.javaEditGradeInfo.java3个文件组成,这3个文件组成了主界面中“成绩管理”菜单的内容,其中包括增加和修改功能。GradeInfo类是AddGradeInfoEditGradeInfo这两个类的超类,由于AddGradeInfoEditGradeInfo的界面显示有共同之处,所以编写包含共有界面的GradeInfo类,可以快速实现其两个子类的界面显示。3个文件构成的关系如图3所示。

图3 成绩信息管理功能结构图

(5)信息查询模块

信息查询模块主要包括学生查询、课程查询和成绩查询3个部分。学生查询由StuSearchSnum.javaStuSearchSname.javaStuSearchSsex.javaStuSearchScollege.javaStuSearchSmajor.javaResultStudent.java6个文件组成,包括:按照学号查询、按照学生姓名查询、按照性别查询、按照学院查询与按照专业查询。StuSearchSnum.java类是按照学学号查询学生信息的类,支持学号在一定范围内搜索。操作者只需输入需要查询的学号范围,系统会将范围内的信息显示在屏幕上。StuSearchSname.java类是按照学生姓名查询学生信息的类,支持根据学生姓名进行搜索。操作者输入需要查询的学生姓名,系统会将符合条件的信息显示在屏幕上。同时,如果操作者不输入任何信息,系统将会搜索出所有的学生信息。StuSearchSsex.java类、StuSearchScollege.java类、StuSearchSmajor.java类和ResultStudent.java类的实现功能与StuSearchSname.java类功能相似。

(6)数据库操作模块

Database.java类是对数据库进行操作的类,包括:连接数据库、执行SQL语句、关闭数据库连接等;StuBean.java类是用语对学生相关信息进行数据库操作的类,包括:学生信息的增加、修改、删除、查询等;CrsBean.java类似乎用于对课程相关信息进行数据库操作的类,包括:课程信息的增加、修改、删除、查询等;csBean.java类是用语对选课信息及成绩的相关信息进行数据库操作的类,包括:选课信息的 、修改、查询,以及成绩的登记、修改、查询等。

2.3设计目标

(1)管理员能够实现对整个学生信息的添加、修改、删除、查询等操作。

(2)管理员能够现对整个教师信息的添加、修改、删除、查询等操作。

(3)管理员能够实现对整个课程信息的添加、修改、删除、查询等操作。

(4)学生、教师、管理员对整个成绩的查询。

(5)教师、学生查询课表。

(6)系统对成绩具有统计计算的功能 将成绩情况用柱形图形象地表现出来 并对成绩进行排名 包括单科和总成绩。

2.4运行环境

学生成绩对运行环境没有很高的要求,而且可以跨平台运行,包括现有的linux和uniux等操作系统。但是让学生成绩管理系统反应操作更快,我推荐用户使用如下的配置

最佳配置 CPU 2GHz 内存 512M 硬盘 80G

Windows XP/linux/uniux

JDK1.6.0 Java程序开发环境Eclipse /MyEclipse SQL sever 2000

3.设计结果与分析

(1)学生管理系统的主界面,如图4所示。

图4 主界面

在此界面可选择:系统管理,学生管理,课程管理,成绩管理,信息管理,根据需要选择进入窗口。

(2)添加学生信息界面,如图5所示。

图5 添加学生信息界面

对学生纪录系统添加新的学生纪录。具体功能为:

word/media/image6.gif要求用户从键盘输入一个或多个学生信息;

word/media/image7.gif输入完成后序列化,点击增加。

注意:学生纪录不允许重复,判断的关键字为学号

(3)若要修改学生信息,先单击“学号查询”选择要修改的学生学号,点击确定后,对所显示的学生信息进行修改。运行界面如图6所示。

word/media/image8.gif

图6 修改学生信息界面

在已有的学生记录中修改某学生的相关信息。具体功能为:

word/media/image6.gif要求用户输入欲修改的学生的学号;

word/media/image7.gif判断该学生是否存在于记录中;

word/media/image9.gif若学生记录存在,提供修改学生信息功能。

(4)选择“学号”和所要选择的“课程”进行学生选课操作,运行界面如图7所示。

word/media/image8.gif

图7 学生选课界面

查看单个学生记录。具体功能为:

word/media/image6.gif输入学生学号,选择课程;

word/media/image7.gif若该学生存在,显示该学生相关信息,例如姓名,课程代码,授课老师,授课老师。

(5)添加课程信息,运行效果如图8所示。

图8 添加课程界面

对老师课程系统添加新的课程信息。具体功能为:

word/media/image6.gif要求用户从键盘输入一个课程编码;

word/media/image7.gif输入课程名称,授课老师,课程类别,上课时间,上课地点。输入完成后,点击增加。

注意:课程编码不允许重复。

(6)若要修改课程信息,单击“查询”按钮,选择所要修改课程的课程编号,之后该信息会自动显示出来,此时可进行信息的修改,运行效果如图9所示。

word/media/image8.gif

图9 修改课程信息界面

在已有的课程编码中修改课程的相关信息。具体功能为:

word/media/image6.gif要求用户输入欲修改的课程编码;

word/media/image7.gif判断该课程是否存在于记录中;

word/media/image9.gif若课程信息存在,提供修改课程信息功能。

(7)若要添加成绩信息,下拉列表中选择学号,课程名称,之后对该同学的成绩进行录入,运行效果如图10所示。

word/media/image8.gif

图10 添加成绩界面

对学生成绩系统添加学生成绩。具体功能为:

word/media/image6.gif要求用户从键盘输入一个学号,课程编码,课程名称;

word/media/image7.gif输入成绩完成后,点击增加。

注意:学号不允许重复。

(8)信息查询包括学生查询、课程查询、成绩查询。若按学号查询,则弹出输入学号的界面,如图11所示。单击“确定“后,则显示所要查询的信息结果。如图12所示。

图11 按学号索引界面

图12 学生信息查询结果界面

4.设计体会

通过这次课程设计,使我对JAVA这门课又做了一次系统的复习,提高了我们的思考和解决问题的思维加强了我们动手能力。在整个设计过程中整个小组的同学团结一致和互帮互助,遇到了很多问题,有时心里想着这样的接法可以行得通,但实际代码的编译,总是实现不了,但最终通过我们自己的努力解决了这些问题,我们受益匪浅。做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多JAVA的功能,有了更多的认识。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。

对各个知识点也都有了更深刻的理解,让我掌握的更扎实,同时也增强了实际操作能力,了解了学生信息管理系统的工作流程以及工作模式,程序开发过程中涉及到了数据库的相关知识,使我对数据库的使用也更加的熟练,另一方面也对编程语言有了新的认识,为以后的学习打下了基础。

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。同时,我也学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高。另外,在整个开发的过程中,时间也比较仓促不能对学生信息管理系统的整个流程完全熟悉,在需求分析时未能做到完全满足用户的需求。

5.参考文献

[1]丁振凡.Java语言实用教程[M].北京:北京邮电大学出版社,2005.2105-121

[2]宛延闿.实用Java程序设计教程[M].北京:机械工业出版社,2006.4234-250

[3]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M].北京:清华大学出版社,2005.2355-363

[4]朱喜福.Java程序设计[M].北京:人民邮电出版社,2005.9179-203

附录

(1)StuMS.java

import javax.swing.UIManager;

import java.awt.*;

public class StuMS {

boolean packFrame = false;

public StuMS() {

StuMain frame = new StuMain();

if (packFrame)

{ frame.pack(); }

else

{ frame.validate(); }

//设置运行时窗口的位置

Dimension 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.width) / 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();

}

}

(2)AddStuInfo.java

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

public class AddStuInfo extends StuInfo {

StuBean getSnum = new StuBean();

public AddStuInfo() {

this.setTitle("添加学生信息");

this.setResizable(false);

sNum.setEditable(false);

sNum.setText(""+getSnum.getStuId());

sName.setEditable(true);

sSex.setEditable(true);

sSethnic.setEditable(true);

sBirth.setEditable(true);

sYear.setEditable(true);

sMajor.setEditable(true);

sCollege.setEditable(true);

sHome.setEditable(true);

//设置运行时窗口的位置

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation((screenSize.width - 400) / 2,

(screenSize.height - 300) / 2 + 45);

}

public void downInit(){

addInfo.setText("增加");

addInfo.setFont(new Font("Dialog",0,12));

downPanel.add(addInfo);

clearInfo.setText("清空");

clearInfo.setFont(new Font("Dialog",0,12));

downPanel.add(clearInfo);

eixtInfo.setText("退出");

eixtInfo.setFont(new Font("Dialog",0,12));

downPanel.add(eixtInfo);

//添加事件侦听

addInfo.addActionListener(this);

clearInfo.addActionListener(this);

eixtInfo.addActionListener(this);

this.contentPane.add(downPanel,BorderLayout.SOUTH);

}

public void actionPerformed(ActionEvent e) {

Object obj = e.getSource();

if (obj == eixtInfo) { //退出

this.dispose();

}

else if (obj == addInfo) { //增加

sNum.setEnabled(false);

sName.setEnabled(false);

sSex.setEnabled(false);

sSethnic.setEnabled(false);

sBirth.setEnabled(false);

sYear.setEnabled(false);

sMajor.setEnabled(false);

sCollege.setEnabled(false);

sHome.setEnabled(false);

addInfo.setEnabled(false);

clearInfo.setEnabled(false);

eixtInfo.setEnabled(false);

StuBean addStu = new StuBean();

addStu.stuAdd(sName.getText(), sSex.getText(), sBirth.getText(), sHome.getText(), sSethnic.getText(), sYear.getText(), sMajor.getText(), sCollege.getText());

this.dispose();

AddStuInfo asi = new AddStuInfo();

asi.downInit();

asi.pack();

asi.setVisible(true);

}

else if (obj == clearInfo) { //清空

setNull();

sNum.setText(""+getSnum.getStuId());

}

}

}

(3)EditStuInfo.java

mport java.awt.*;

import java.sql.*;

import java.awt.event.*;

import javax.swing.*;

public class EditStuInfo extends StuInfo {

String sNum_str = "";

public EditStuInfo() {

this.setTitle("修改学生信息");

this.setResizable(false);

sNum.setEditable(false);

sNum.setText("请查询学号");

sName.setEditable(false);

sSex.setEditable(false);

sSethnic.setEditable(false);

sBirth.setEditable(false);

sYear.setEditable(false);

sMajor.setEditable(false);

sCollege.setEditable(false);

sHome.setEditable(false);

//设置运行时窗口的位置

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation((screenSize.width - 400) / 2,

(screenSize.height - 300) / 2 + 45);

}

public void downInit(){

searchInfo.setText("学号查询");

searchInfo.setFont(new Font("Dialog",0,12));

downPanel.add(searchInfo);

modifyInfo.setText("修改");

modifyInfo.setFont(new Font("Dialog",0,12));

downPanel.add(modifyInfo);

clearInfo.setText("清空");

clearInfo.setFont(new Font("Dialog",0,12));

downPanel.add(clearInfo);

eixtInfo.setText("退出");

eixtInfo.setFont(new Font("Dialog",0,12));

downPanel.add(eixtInfo);

searchInfo.setEnabled(true);

modifyInfo.setEnabled(false);

clearInfo.setEnabled(true);

eixtInfo.setEnabled(true);

//添加事件侦听

searchInfo.addActionListener(this);

modifyInfo.addActionListener(this);

clearInfo.addActionListener(this);

eixtInfo.addActionListener(this);

this.contentPane.add(downPanel,BorderLayout.SOUTH);

}

public void actionPerformed(ActionEvent e) {

Object obj = e.getSource();

String[] s = new String[8];

if (obj == eixtInfo) { //退出

this.dispose();

}

else if (obj == modifyInfo) { //修改

StuBean modifyStu = new StuBean();

modifyStu.stuModify(sNum.getText(), sName.getText(), sSex.getText(), sBirth.getText(), sHome.getText(), sSethnic.getText(), sYear.getText(), sMajor.getText(), sCollege.getText());

modifyStu.stuSearch(sNum.getText());

s = modifyStu.stuSearch(sNum_str);

sName.setText(s[0]);

sSex.setText(s[1]);

sSethnic.setText(s[2]);

sHome.setText(s[3]);

sYear.setText(s[4]);

sMajor.setText(s[5]);

sCollege.setText(s[6]);

sBirth.setText(s[7]);

}

else if (obj == clearInfo) { //清空

setNull();

sNum.setText("请查询学号");

}

else if (obj == searchInfo) { //学号查询

StuInfoSearchSnum siss = new StuInfoSearchSnum(this);

siss.pack();

siss.setVisible(true);

try{

sNum_str = siss.getSnum();

}catch(Exception ex){

JOptionPane.showMessageDialog(null, "没有查找到该学号!");

}

StuBean searchStu = new StuBean();

s = searchStu.stuSearch(sNum_str);

if(s == null){

JOptionPane.showMessageDialog(null, "记录不存在!");

sNum.setText("请查询学号");

sName.setText("");

sSex.setText("");

sSethnic.setText("");

sHome.setText("");

sYear.setText("");

sMajor.setText("");

sCollege.setText("");

sBirth.setText("");

sName.setEditable(false);

sSex.setEditable(false);

sSethnic.setEditable(false);

sBirth.setEditable(false);

sYear.setEditable(false);

sMajor.setEditable(false);

sCollege.setEditable(false);

sHome.setEditable(false);

modifyInfo.setEnabled(false);

return;

}

else{

sNum.setText(sNum_str);

sName.setText(s[0]);

sSex.setText(s[1]);

sSethnic.setText(s[2]);

sHome.setText(s[3]);

sYear.setText(s[4]);

sMajor.setText(s[5]);

sCollege.setText(s[6]);

sBirth.setText(s[7]);

sName.setEditable(true);

sSex.setEditable(true);

sSethnic.setEditable(true);

sBirth.setEditable(true);

sYear.setEditable(true);

sMajor.setEditable(true);

sCollege.setEditable(true);

sHome.setEditable(true);

modifyInfo.setEnabled(true);

}

}

}

}

本文来源:https://www.2haoxitong.net/k/doc/ffba1805c8aedd3383c4bb4cf7ec4afe04a1b1f5.html

《JAva学生成绩管理系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式