java班级管理系统.docx
《java班级管理系统.docx》由会员分享,可在线阅读,更多相关《java班级管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
java班级管理系统
班级管理系统
一课程设计目的
本班级管理系统软件主要用于实现用户对学生一些基本信息的常用操作,在本系统中定义了对学生基本信息进行添加,删除,查找等几个模块。
此系统是一个非常方便快捷的班级学生信息管理软件,用户可以随心所欲地添加学生信息、查询学生信息、修改学生信息,删除学生信息等等。
具体实现要求如下:
1)能够实现对班级学生基本资料的录入,包括学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等。
2)能够实现对学生基本资料的修改。
3)根据学号对学生资料进行查询。
4)能够删除某些学生的资料。
二设计方案
1设计概述
设计一个班级管理系统,能够实现对学生基本资料的录入,包括学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等;能够实现对学生基本资料的修改;根据学号对学生资料进行查询;能够删除某些学生的资料。
2需求分析
2.1系统结构图
根据本次课程设计的目的和以上的问题描述,把该班级管理系统分为五个模块:
录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)。
各个模块包括对学生学号,姓名,所学专业,家庭住址,出生日期等信息的操作。
系统结构图如下:
图一系统结构图
2.2系统主要类定义
由于在本班级管理系统中各个模块操作的变量和方法大体相同,在程序中,录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)所操作的变量都是学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等,所以把这四个模块都定义为主类(StudentManager)的子类。
在该设计中,由于没有用数据库对用户所录入的信息进行存储,所以又定义了录入模块(StudentSituation)的一个子类,该类可以存储用户所输入的学生信息,也可以接收用户对信息的修改,而当用户删除学生信息时,该子类删除该信息。
所以该系统中共有6个java源文件,类之间的主要关系如下图所示:
图二类之间的关系图
各主类的主要作用如下:
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
处理ActionEvent事件
接口方法
main
系统主方法,程序开始行
系统主方法
表2主要成员变量
成员变量描述
变量类型
变量名称
基本信息录入界面
StudentSituation
基本信息录入
基本信息修改界面
ModifySituation
基本信息修改
基本信息查询界面
Inquest
基本信息查询
基本信息删除界面
Delete
基本信息删除
菜单选项
JMenuItem
录入,修改,查询,删除
存基本信息的散表
Hashtable
基本信息
存放散列表的文件
File
file
3.2录入界面StudentStituation.java
该文件的类负责创建班级学生管理系统的学生信息录入界面,该界面包括对学生学号,姓名,所学专业,家庭住址,出生日期的录入,在该类中定义了两个方法创建学生信息录入界面(StudentSituation),此方法属于一个构造方法;处理ActionEvent事件(actionPerformed),这是一个接口方法。
该类的主要成员变量和主要方法如表3和表4所示:
表3主要成员变量属性
描述
变量类型
变量名称
“学生”对象的散列表
Hashtable
基本信息表
学生基本信息的文本
JTextField
学号,姓名,所学专业等
学生信息的对象
Student
表4主要方法定义
名称
功能
备注
StudentSituation
创建学生信息录入面
构造方法
actionPerformed
处理ActionEvent件
接口方法
3.3查询界面Inquest.java
该文件的类负责创建班级学生管理系统的学生基本信息查询界面,在该类中所操作的数据成员变量与录入界面相同,也包括学生学号,姓名,所学专业,家庭住址,出生日期。
在该类中定义了一个构造方法创建查询界面(Inquest),和一个接口方法(actionPerformed)该类的主要成员变量和主要方法如表5和表6所示:
表5主要成员变量属性
描述
变量类型
变量名称
存放“学生”对象的表
Hashtable
基本信息表
显示学生基本信息文本
JTextField
学号,姓名,所学专业等
表6主要方法定义
名称
功能
备注
Inquest
创建查询界面
构造方法
actionPerformed
处理ActionEvent事件
接口方法
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主要成员变量
描述
变量类型
变量名称
学号
String
Number
姓名
String
Name
所学专业
String
Discipling
家庭住址
String
Grade
出生
String
Borth
性别
String
Sex
表12主要方法
名称
功能
Setnumber
设置学号
Setnumber
获取学号
Setname
设置姓名
Setname
获取姓名
setDisciping
设置所学专业
setDisciping
获取所学专业
setGrade
设置家庭住址
setGrade
获取家庭住址
setBorth
设置出生
setBorth
获取出生
setSex
设置性别
setSex
获取性别
三程序运行结果
本程序为一简单的班级管理系统,功能比较单一,但是基本功能还是实现了,能够对学生基本资料的录入,修改,删除以及查询。
1主界面窗口
程序运行后在主界面窗口上有一个菜单项“菜单选项”,该菜单包括五个下拉菜单:
“录入学生基本信息”,“修改学生基本信息”,“查询学生基本信息”,“删除学生基本信息”,“退出系统”。
程序运行的主要界面如图三所示:
图三系统主窗口
2录入窗口界面
进入主界面窗口后,点击“录入学生基本信息”下拉菜单项,填写完学生基本信息点击录入,在弹出的对话框中选择“是”,这样用户就可以录入学生的基本信息。
具体功能演示如下图四所示:
图四录入窗口界面
3学生信息修改界面
当用户想要修改某一学生的基本信息时,输入待修改学生的学号,点击开始修改,即可对学生信息中的任意一项进行修改。
当修改完成时,点击录入修改。
在如图五所示的对话框中选择“确定”,即可完成对学生信息的修改。
图五学生信息修改界面
4学生信息查询界面
当用户想要查询某个学生的基本信息时,只需要在查询界面中输入待查询学生的学号,点击“查询”即可查询到学生的基本信息。
具体功能图如图六所示:
图六学生信息查询界面
5学生信息删除界面
同样,当用户想要删除某个学生的基本信息时,也只需输入待删除学生的学号,点击“删除”,在弹出的对话框中点击确定,即可完成对学生基本信息的删除操作。
程序运行界面如图七所示
图七学生信息删除界面
四总结展望
这次课程设计作业使我对用Java面向对象语言编程产生了极大兴趣。
通过这次课程设计也着实让自己感受到了一次编程的乐趣,从中也学到了不少知识。
由于在本系统涉及到的数据对象较多,且而由于Java面向对象设计中对异常处理的严格要求,所以在本次课程设计中深刻体会到了在程序开发中对问题的全面考虑,如果对某个操作可能出现的异常考虑不到,将会使程序运行中出现错误。
在该系统中还运用了Java中所提供的两个处理图形用户界面的类库:
java.awt包javax.swing包。
在所定义的几个模块中都用到了这两个包,用于设计图形用户界面。
通过对图形用户界面的设计,对这两个包中的标签,文本,框架及容器等类的常用方法都有了比较深刻的了解。
在这次实验中,对系统中成员变量和成员方法的调用也进行了很多种尝试,已经能够相对准确的选择合适的参数形式来实现函数之间的数据传输交互了,同时也体会到了类的继承在程序设计中的巨大优势。
不过,在用Java开发类似的软件时,发现在图形界面的设计方面远没有用VB,VF等开发工具简单。
五各功能模块的主要代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
publicclassStudentSituationextendsJPanelimplementsActionListener
{
Hashtable基本信息表=null;
JTextField学号,姓名,所学专业,家庭住址,出生日期;
JRadioButton男,女;
Student学生=null;
ButtonGroupgroup=null;
JButton录入,重置;
FileInputStreaminOne=null;
ObjectInputStreaminTwo=null;
FileOutputStreamoutOne=null;
ObjectOutputStreamoutTwo=null;
Filefile=null;
publicStudentSituation(Filefile)
{
学号=newJTextField(10);
姓名=newJTextField(10);
所学专业=newJTextField(10);
家庭住址=newJTextField(10);
出生日期=newJTextField(10);
group=newButtonGroup();
男=newJRadioButton("男",true);
女=newJRadioButton("女",false);
group.add(男);
group.add(女);
录入=newJButton("录入");
重置=newJButton("重置");
录入.addActionListener(this);
重置.addActionListener(this);
Boxbox1=Box.createHorizontalBox();
box1.add(newJLabel("学号:
",JLabel.CENTER));
box1.add(学号);
Boxbox2=Box.createHorizontalBox();
box2.add(newJLabel("姓名:
",JLabel.CENTER));
box2.add(姓名);
Boxbox3=Box.createHorizontalBox();
box3.add(newJLabel("性别:
",JLabel.CENTER));
box3.add(男);
box3.add(女);
Boxbox4=Box.createHorizontalBox();
box4.add(newJLabel("所学专业:
",JLabel.CENTER));
box4.add(所学专业);
Boxbox5=Box.createHorizontalBox();
box5.add(newJLabel("家庭住址:
",JLabel.CENTER));
box5.add(家庭住址);
Boxbox6=Box.createHorizontalBox();
box6.add(newJLabel("出生日期:
",JLabel.CENTER));
box6.add(出生日期);
BoxboxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box4);
boxH.add(box5);
boxH.add(box6);
boxH.add(Box.createVerticalGlue());
JPanelpCenter=newJPanel();
pCenter.add(boxH);
setLayout(newBorderLayout());
add(pCenter,BorderLayout.CENTER);
JPanelpSouth=newJPanel();
pSouth.add(录入);
pSouth.add(重置);
add(pSouth,BorderLayout.SOUTH);
validate();
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==录入)
{
Stringnumber="";
number=学号.getText();
if(number.length()>0)
{
try{
inOne=newFileInputStream(file);
inTwo=newObjectInputStream(inOne);
基本信息表=(Hashtable)inTwo.readObject();
inOne.close();
inTwo.close();
}
catch(Exceptionee)
{
}
if(基本信息表.containsKey(number))
{
Stringwarning="该生基本信息已存在,请到修改页面修改!
";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
else
{
Stringm="基本信息将被录入!
";
intok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION,
}}
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
publicclassInquestextendsJDialogimplementsActionListener
{
Hashtable基本信息表=null;
JTextField学号,姓名,所学专业,家庭住址,出生日期;
JRadioButton男,女;
JButton查询;
ButtonGroupgroup=null;
FileInputStreaminOne=null;
ObjectInputStreaminTwo=null;
Filefile=null;
publicInquest(JFramef,Filefile)
{
super(f,"查询对话框",false);
this.file=file;
学号=newJTextField(10);
查询=newJButton("查询");
学号.addActionListener(this);
查询.addActionListener(this);
姓名=newJTextField(10);
姓名.setEditable(false);
所学专业=newJTextField(10);
所学专业.setEditable(false);
家庭住址=newJTextField(10);
家庭住址.setEditable(false);
出生日期=newJTextField(10);
出生日期.setEditable(false);
男=newJRadioButton("男",false);
女=newJRadioButton("女",false);
group=newButtonGroup();
group.add(男);
publicvoidactionPerformed(ActionEvente)
{
姓名.setText(null);
所学专业.setText(null);
家庭住址.setText(null);
出生日期.setText(null);
if(e.getSource()==查询||e.getSource()==学号)
{
Stringnumber="";
number=学号.getText();
if(number.length()>0)
{
try{
inOne=newFileInputStream(file);
inTwo=newObjectInputStream(inOne);
基本信息表=(Hashtable)inTwo.readObject();
inOne.close();
inTwo.close();
}
catch(Exceptionee)
if(基本信息表.containsKey(number))
{
Studentstu=(Student)基本信息表.get(number);
姓名.setText(stu.getName());
所学专业.setText(stu.getDisciping());
家庭住址.setText(stu.getGrade());
出生日期.setText(stu.getBorth());
Stringwarning="该学号不存在!
";
Stringwarning="必须要输入学号!
";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
}
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
publicclassDeleteextendsJPanelimplementsActionListener
{
Hashtable基本信息表=null;
JTextField学号,姓名,所学专业,家庭住址,出生日期;
JRadioButton男,女;
JButton删除;
But