您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页java班级管理系统

java班级管理系统

来源:华佗小知识
信息与计算科学系课程设计

班级管理系统

一 课程设计目的

本班级管理系统软件主要用于实现用户对学生一些基本信息的常用操作,在本系统中定义了对学生基本信息进行添加,删除,查找等几个模块。此系统是一个非常方便快捷的班级学生信息管理软件,用户可以随心所欲地添加学生信息、查询学生信息、修改学生信息,删除学生信息等等。具体实现要求如下: 1)能够实现对班级学生基本资料的录入,包括学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等。 2)能够实现对学生基本资料的修改。 3)根据学号对学生资料进行查询。 4)能够删除某些学生的资料。

二 设计方案

1 设计概述

设计一个班级管理系统,能够实现对学生基本资料的录入,包括学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等;能够实现对学生基本资料的修改;根据学号对学生资料进行查询;能够删除某些学生的资料。 2 需求分析 2.1 系统结构图

根据本次课程设计的目的和以上的问题描述,把该班级管理系统分为五个模块:录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)。各个模块包括对学生学号,姓名,所学专业,家庭住址,出生日期等信息的操作。系统结构图如下:

信息与计算科学系课程设计

姓名 学号 学生信息 专业 家庭住址 出生日期 班级管理系统 查询 删除 录入 修改

图一 系统结构图

2.2 系统主要类定义

由于在本班级管理系统中各个模块操作的变量和方法大体相同,在程序中,录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)所操作的变量都是学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等,所以把这四个模块都定义为主类(StudentManager)的子类。在该设计中,由于没有用数据库对用户所录入的信息进行存储,所以又定义了录入模块(StudentSituation)的一个子类, 该类可以存储用户所输入的学生信息,也可以接收用户对信息的修改,而当用户删除学生信息时,该子类删除该信息。所以该系统有6个java源文件,类之间的主要关系如下图所示:

StudentManager(主类) StudentSituation InquesDelete ModiifySituation Student

图二 类之间的关系图

信息与计算科学系课程设计

各主类的主要作用如下: 1).StudentManager.java

该java文件的类负责创建班级学生管理系统的主窗口。该类包含main方法,main方法是程序执行的入口,即程序从该类开始执行。 2).StudentStituation.java

该文件的类负责创建班级学生管理系统的学生信息录入界面。 3).ModifySituation.java

该文件的类负责创建班级学生管理系统的学生基本信息修改界面。 4).Inquest.java

该文件的类负责创建班级学生管理系统的学生基本信息查询界面。 5).Delete.java

该文件的类负责创建班级学生管理系统的学生信息删除界面。 6).Student.java

负责创建存放学生信息的对象。

2.3功能需求

根据上述的信息管理系统的业务流程、要求以及所要实现的目标,我们可以拟出以下需求目标: (1)建立学生档案的管理和维护。实现计算机自动化管理。 (2)建立学生成绩管理机制,在计算机的支持下快速的完成学生成绩的查询和修改。

(3)建立课程设置管理,在计算机的支持下实现课程的添加、删除、修改。 (4)建立班级设置管理,在计算机的支持下实现班级的添加、删除和修改。 (5)实现系统的权限设置管理,保证系统安全性。 根据系统的需求分析,得到本系统的功能要求如下:

(1)班级、课程的设置管理:学校的教务秘书可以根据本校具体情况在每学期开始时设置所需班级数量和人数。并设置本学期的课程。

(2)权限管理:为了很好的保证系统的安全性,学校相关负责人可以设置不同类型的人员的权限。

(3)学生档案管理:学生档案的数量十分庞大,教务管理人员进行新生入学的档案录入及更改。其中包括学生个人信息的修改。

(4)学生成绩管理:教务管理人员可以查询和修改学生的历年考试成绩,掌握学生学习情况,作为评定学生素质的数据依据。

3 详细设计

3.1 主类StudentManager.java

该java文件的类负责创建班级学生管理系统的主窗口。该类包含main方法,main方法是程序执行的入口,即程序从该类开始执行。在该主类StudentManager.java所包含的主要方法和主要成员变量如表1和表2所

信息与计算科学系课程设计

示:

表1 主要方法

名称 StudentManager actionPerformed main

成员变量描述 基本信息录入界面 基本信息修改界面 基本信息查询界面 基本信息删除界面 菜单选项 存基本信息的散表 存放散列表的文件 表2 主要成员变量 变量类型 StudentSituation ModifySituation Inquest Delete JMenuItem Hashtable File 变量名称 基本信息录入 基本信息修改 基本信息查询 基本信息删除 录入,修改,查询,删除 基本信息 file 功能 创建程序主窗口 处理ActionEvent事件 备注 构造方法 接口方法 系统主方法,程序开始行 系统主方法 3.2 录入界面StudentStituation.java

该文件的类负责创建班级学生管理系统的学生信息录入界面,该界面包括对学生学号,姓名,所学专业,家庭住址,出生日期的录入,在该类中定义了两个方法创建学生信息录入界面(StudentSituation),此方法属于一个构造方法;处理ActionEvent事件(actionPerformed),这是一个接口方法。该类的主要成员变量和主要方法如表3和表4所示:

表3 主要成员变量属性

描述 “学生”对象的散列表 学生基本信息的文本 学生信息的对象 名称 StudentSituation actionPerformed 变量类型 Hashtable JTextField Student 表4 主要方法定义 功能 创建学生信息录入面 处理ActionEvent件 备注 构造方法 接口方法 变量名称 基本信息表 学号,姓名,所学专业等 3.3 查询界面Inquest.java

该文件的类负责创建班级学生管理系统的学生基本信息查询界面,在该类中所操作的数据成员变量与录入界面相同,也包括学生学号,姓名,所

信息与计算科学系课程设计

学专业,家庭住址,出生日期。在该类中定义了一个构造方法创建查询界面(Inquest),和一个接口方法(actionPerformed)该类的主要成员变量和主要方法如表5和表6所示:

表5 主要成员变量属性

描述 存放“学生”对象的表 显示学生基本信息文本 名称 Inquest actionPerformed 变量类型 Hashtable JTextField 功能 创建查询界面 处理ActionEvent事件 变量名称 基本信息表 学号,姓名,所学专业等 备注 构造方法 接口方法 表6 主要方法定义

3.4 修改界面ModifySituation.java

该文件的类负责创建班级学生管理系统的学生基本信息修改界面,在该类中可以对各个成员变量进行修改,可以修改学生学号,姓名,所学专业,家庭住址及出生日期,同样在该类中也创建了一个构造方法和接口方法:创建学生信息修 改界面(ModifySituation)和处理ActionEvent事件(actionPerform)。 主要的成员变量如表7所示,主要方法如表8所示:

表7 主要成员变量

描述 变量类型 变量名称 基本信息表 学号,姓名,所学专业等 存放“学生”对象的散列Hashtabel 表 输入学生基本信息的文本JTextField 条 表8主要方法

名称 ModifySituation actionPerform 功能 创建学生信息修改界面 处理ActionEvent事件 备注 构造方法 接口方法 3.5 删除界面Delete.java

该文件的类负责创建班级学生管理系统的学生信息删除界面。当用户要删除某一个学生的信息时,输入要删除的学生学号,这时系统会提示用户是否要删除所选择的学生信息,删除后在学生信息表中会删除该学生的记录。在该类中定义的主要成员变量和主要方法如表9和表10所示:

信息与计算科学系课程设计

表9 主要成员变量

描述 变量类型 存放“学生”对象的散列 Hashtable 显示学生基本信息的文本JTextField 条 表10 主要方法

名称 Delete actionPerformed 功能 创建学生信息删除界面 处理ActionEvent 备注 构造方法 接口方法 变量名称 基本信息表 学号,姓名,所学专业等 3.6 学生对象Student.java

负责创建存放学生信息的对象。正如前面所述,在本次课程设计所开发的系统中,其他模块所操作的成员变量都存放在学生对象Student.java类中,且该类是StudentSituation类的子类,也是主类的间接子类,所以该类继承了这两个类的成员变量和成员方法。在该类中所定义的主要成员变量和主要方法如表11和表12所示:

表11 主要成员变量

描述 学号 姓名 所学专业 家庭住址 出生 性别 名称 Setnumber Setnumber Setname Setname setDisciping setDisciping setGrade setGrade setBorth setBorth 变量类型 String String String String String String 表12 主要方法

功能 设置学号 获取学号 设置姓名 获取姓名 设置所学专业 获取所学专业 设置家庭住址 获取家庭住址 设置出生 获取出生 变量名称 Number Name Discipling Grade Borth Sex 信息与计算科学系课程设计

setSex setSex 设置性别 获取性别

三 程序运行结果

本程序为一简单的班级管理系统,功能比较单一,但是基本功能还是实现了,能够对学生基本资料的录入,修改,删除以及查询。 1 主界面窗口

程序运行后在主界面窗口上有一个菜单项“菜单选项”,该菜单包括五个下拉菜单:“录入学生基本信息”,“修改学生基本信息”,“查询学生基本信息”,“删除学生基本信息”,“退出系统”。程序运行的主要界面如图三所示:

图三 系统主窗口

2 录入窗口界面

进入主界面窗口后,点击“录入学生基本信息”下拉菜单项,填写完

学生基本信息点击录入,在弹出的对话框中选择“是”,这样用户就可以录入学生的基本信息。具体功能演示如下图四所示:

信息与计算科学系课程设计

图四 录入窗口界面

3 学生信息修改界面

当用户想要修改某一学生的基本信息时,输入待修改学生的学号,点击开始修改,即可对学生信息中的任意一项进行修改。当修改完成时,点击录入修改。在如图五所示的对话框中选择“确定”,即可完成对学生信息的修改。

图五 学生信息修改界面

4 学生信息查询界面

当用户想要查询某个学生的基本信息时,只需要在查询界面中输入待查询学生的学号,点击“查询”即可查询到学生的基本信息。具体功能图如图六所示:

信息与计算科学系课程设计

图六 学生信息查询界面

5 学生信息删除界面

同样,当用户想要删除某个学生的基本信息时,也只需输入待删除学生的学号,点击“删除”,在弹出的对话框中点击确定,即可完成对学生基本信息的删除操作。程序运行界面如图七所示

图七 学生信息删除界面

四 总结展望

这次课程设计作业使我对用Java面向对象语言编程产生了极大兴趣。通过这次课程设计也着实让自己感受到了一次编程的乐趣,从中也学到了不少知识。

由于在本系统涉及到的数据对象较多,且而由于Java面向对象设计中对异常处理的严格要求,所以在本次课程设计中深刻体会到了在程序开发中对问题的

信息与计算科学系课程设计

全面考虑,如果对某个操作可能出现的异常考虑不到,将会使程序运行中出现错误。

在该系统中还运用了Java中所提供的两个处理图形用户界面的类库:java.awt包javax.swing包。在所定义的几个模块中都用到了这两个包,用于设计图形用户界面。通过对图形用户界面的设计,对这两个包中的标签,文本,框架及容器等类的常用方法都有了比较深刻的了解。

在这次实验中,对系统中成员变量和成员方法的调用也进行了很多种尝试,已经能够相对准确的选择合适的参数形式来实现函数之间的数据传输交互了,同时也体会到了类的继承在程序设计中的巨大优势。

不过,在用Java开发类似的软件时,发现在图形界面的设计方面远没有用VB,VF等开发工具简单。

五 各功能模块的主要代码

import java.awt.*;

import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*;

public class StudentSituation extends JPanel implements ActionListener {

Hashtable 基本信息表=null;

JTextField 学号,姓名,所学专业,家庭住址,出生日期; JRadioButton 男,女; Student 学生=null; ButtonGroup group=null; JButton 录入,重置;

FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null;

File file=null; public StudentSituation(File file) {

学号=new JTextField(10); 姓名=new JTextField(10);

所学专业=new JTextField(10); 家庭住址=new JTextField(10); 出生日期=new JTextField(10); group=new ButtonGroup();

信息与计算科学系课程设计

男=new JRadioButton(\"男\ 女=new JRadioButton(\"女\group.add(男); group.add(女);

录入=new JButton(\"录入\"); 重置=new JButton(\"重置\"); 录入.addActionListener(this); 重置.addActionListener(this);

Box box1=Box.createHorizontalBox(); box1.add(new JLabel(\"学号:\ box1.add(学号);

Box box2=Box.createHorizontalBox(); box2.add(new JLabel(\"姓名:\ box2.add(姓名);

Box box3=Box.createHorizontalBox(); box3.add(new JLabel(\"性别:\ box3.add(男); box3.add(女);

Box box4=Box.createHorizontalBox(); box4.add(new JLabel(\"所学专业:\ box4.add(所学专业);

Box box5=Box.createHorizontalBox(); box5.add(new JLabel(\"家庭住址:\ box5.add(家庭住址);

Box box6=Box.createHorizontalBox(); box6.add(new JLabel(\"出生日期:\ box6.add(出生日期);

Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6);

boxH.add(Box.createVerticalGlue()); JPanel pCenter=new JPanel(); pCenter.add(boxH);

setLayout(new BorderLayout());

add(pCenter,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(录入); pSouth.add(重置);

add(pSouth,BorderLayout.SOUTH); validate();

信息与计算科学系课程设计

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==录入) {

String number=\"\";

number=学号.getText(); if(number.length()>0) { try {

inOne=new FileInputStream(file);

inTwo=new ObjectInputStream(inOne);

基本信息表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }

catch(Exception ee) { }

if(基本信息表.containsKey(number)) {

String warning=\"该生基本信息已存在,请到修改页面修改!\";

JOptionPane.showMessageDialog(this,warning,\"警告\ } else {

String m=\"基本信息将被录入!\";

int ok=JOptionPane.showConfirmDialog(this,m,\"确认\}}

import java.awt.*;

import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*;

public class Inquest extends JDialog implements ActionListener {

Hashtable 基本信息表=null;

JTextField 学号,姓名,所学专业,家庭住址,出生日期; JRadioButton 男,女; JButton 查询;

ButtonGroup group=null;

信息与计算科学系课程设计

FileInputStream inOne=null; ObjectInputStream inTwo=null;

File file=null; public Inquest(JFrame f,File file) {

super(f,\"查询对话框\ this.file=file;

学号=new JTextField(10); 查询=new JButton(\"查询\"); 学号.addActionListener(this); 查询.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false);

所学专业=new JTextField(10); 所学专业.setEditable(false); 家庭住址=new JTextField(10); 家庭住址.setEditable(false); 出生日期=new JTextField(10); 出生日期.setEditable(false);

男=new JRadioButton(\"男\ 女=new JRadioButton(\"女\group=new ButtonGroup(); group.add(男);

public void actionPerformed(ActionEvent e) {

姓名.setText(null);

所学专业.setText(null); 家庭住址.setText(null); 出生日期.setText(null);

if(e.getSource()==查询||e.getSource()==学号) {

String number=\"\";

number=学号.getText();

if(number.length()>0) {

try {

inOne=new FileInputStream(file);

inTwo=new ObjectInputStream(inOne);

基本信息表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); } catch(Exception ee)

if(基本信息表.containsKey(number))

信息与计算科学系课程设计

{

Student stu=(Student)基本信息表.get(number); 姓名.setText(stu.getName()); 所学专业.setText(stu.getDisciping());

家庭住址.setText(stu.getGrade()); 出生日期.setText(stu.getBorth()); String warning=\"该学号不存在!\"; String warning=\"必须要输入学号!\";

JOptionPane.showMessageDialog(this,warning,\"警\ } } } }

import java.awt.*;

import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*;

public class Delete extends JPanel implements ActionListener {

Hashtable 基本信息表=null;

JTextField 学号,姓名,所学专业,家庭住址,出生日期; JRadioButton 男,女; JButton 删除;

ButtonGroup group=null; FileInputStream inOne=null;

FileOutputStream outOne=null; ObjectOutputStream outTwo=null;

File file=null; public Delete(File file) {

this.file=file;

学号=new JTextField(10); 删除=new JButton(\"删除\"); 学号.addActionListener(this); 删除.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false);

所学专业=new JTextField(10); 所学专业.setEditable(false); 家庭住址=new JTextField(10); 家庭住址.setEditable(false); 出生日期=new JTextField(10);

信息与计算科学系课程设计

出生日期.setEditable(false);

男=new JRadioButton(\"男\ 女=new JRadioButton(\"女\}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==删除||e.getSource()==学号) {

String number=\"\";

number=学号.getText();

if(number.length()>0) {

try {

inOne=new FileInputStream(file);

inTwo=new ObjectInputStream(inOne);

基本信息表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }

catch(Exception ee) { }

if(基本信息表.containsKey(number)) {

Student stu=(Student)基本信息表.get(number); 姓名.setText(stu.getName());

所学专业.setText(stu.getDisciping()); 家庭住址.setText(stu.getGrade()); 出生日期.setText(stu.getBorth()); if(stu.getSex().equals(\"男\")) {

男.setSelected(true); } else {

女.setSelected(true); } }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==开始修改||e.getSource()==学号) {

String number=\"\";

信息与计算科学系课程设计

number=学号.getText();

if(number.length()>0) {

try {

inOne=new FileInputStream(file);

inTwo=new ObjectInputStream(inOne);

基本信息表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }

catch(Exception ee) { }

if(基本信息表.containsKey(number)) {

录入修改.setEnabled(true);

Student stu=(Student)基本信息表.get(number); 姓名.setText(stu.getName());

所学专业.setText(stu.getDisciping()); 家庭住址.setText(stu.getGrade()); 出生日期.setText(stu.getBorth()); if(stu.getSex().equals(\"男\")) 男.setSelected(true); } else {

女.setSelected(true); } }

import java.awt.*;

import java.awt.event.*; import javax.swing.*; import java.io.*;

import java.util.Hashtable;

public class StudentManager extends JFrame implements ActionListener {

StudentSituation 基本信息录入=null; ModifySituation 基本信息修改=null; Inquest 基本信息查询=null; Delete 基本信息删除=null; JMenuBar bar; JMenu fileMenu;

JMenuItem 录入,修改,查询,删除,退出;

信息与计算科学系课程设计

Container con=null;

Hashtable 基本信息=null; File file=null; CardLayout card=null; JLabel label; JPanel pCenter;

public StudentManager() {

setTitle(\"欢迎进入班级管理系统\");

录入=new JMenuItem(\"录入学生基本信息\"); 修改=new JMenuItem(\"修改学生基本信息\"); 查询=new JMenuItem(\"查询学生基本信息\"); 删除=new JMenuItem(\"删除学生基本信息\"); 退出=new JMenuItem(\"退出本系统\");

退出.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) { System.exit(0); } }

label=new JLabel(\"欢迎进入班级管理系统!\ label.setFont(new Font(\"隶书\ label.setForeground(Color.blue); 基本信息=new Hashtable(); 录入.addActionListener(this); 修改.addActionListener(this); 查询.addActionListener(this); 删除.addActionListener(this); card=new CardLayout(); con=getContentPane(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File(\"学生基本信息.txt\"); if(!file.exists()) { try{

FileOutputStream out=new FileOutputStream(file);

ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); }

catch(IOException e)

信息与计算科学系课程设计

{ } }

基本信息录入=new StudentSituation(file); 基本信息修改=new ModifySituation(file); 基本信息查询=new Inquest(this,file); 基本信息删除=new Delete(file); pCenter.add(\"欢迎语界面\

pCenter.add(\"录入界面\基本信息录入);

pCenter.add(\"修改界面\基本信息修改); pCenter.add(\"删除界面\基本信息删除); con.add(pCenter,BorderLayout.CENTER); con.validate();

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e) {

System.exit(0); } }; setVisible(true);

setBounds(100,50,420,380); validate(); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==录入) {

card.show(pCenter,\"录入界面\"); }

else if(e.getSource()==修改) {

card.show(pCenter,\"修改界面\"); }

else if(e.getSource()==查询) {

基本信息查询.setVisible(true); }

else if(e.getSource()==删除) {

card.show(pCenter,\"删除界面\"); } }

public static void main(String args[]) {

信息与计算科学系课程设计

new StudentManager(); } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务