资源描述
一、 需求分析
1.实现对班级和学生基础资料录入,包含学生学号,姓名,性别,所学专业,家庭住址和出生年月等。
2.能够实现对班级学生基础资料修改。
3.依据学号对学生资料进行查询。
4.能够删除学生资料。
二、 概要设计
依据此次课程设计目标和以上问题描述,把该班级管理系统分为五个模块:录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)。各个模块包含对学生学号,姓名,所学专业,家庭住址,出生日期等信息操作。系统结构图图一:
图1 系统结构图
三、总体设计
本班级管理系统共有6个java源文件。
类之间关键关系以下图所表示:
StudentManager(主类)
Delete
Student
StudentSituation
ModiifySituation
Inquest
图2 类之间关键关系
各主类关键作用以下:
1.StudentManager.java
该java文件类负责创建班级学生管理系统主窗口,该类包含main方法,程序从该类开始实施。
2.StudentStituation.java
该文件类负责创建班级学生管理系统学生信息录入界面。
3.ModifySituation.java
该文件类负责创建班级学生管理系统学生基础信息修改界面。
4.Inquest.java
该文件类负责创建班级学生管理系统学生基础信息查询界面。
5.Delete.java
该文件类负责创建班级学生管理系统学生信息删除界面。
6.Student.java
负责创建存放学生信息对象。
四、 具体设计
1.管理系统主窗口
1.1组员变量
表1-1 关键组员变量
组员变量描述
变量类型
变量名称
基础信息录入
基础信息修改
基础信息查询
基础信息删除
菜单选项
存基础信息散列表
存放散列表文件
StudentSituation
ModifySituation
Inquest
Delete
JMenuItem
Hashtable
File
基础信息录入
基础信息修改
基础信息查询
基础信息删除
录入,修改,查询,删除
基础信息
file
1.2方法
表1-2 关键方法
名称
功效
备注
StudentManager
actionPerformed
main
创建程序主窗口
处理ActionEvent事件
程序开始运行
结构方法
接口方法
1.3 界面截图:
2.基础信息录入
2.1 组员变量
表2-1 关键组员变量属性
描述
变量类型
变量名称
存放“学生”对象散列表
输入学生基础信息文本
存放学生信息对象
Hashtable
JTextField
Student
基础信息表
学号,姓名,所学专业,家庭住址,出生
学生
2.2 方法
表2-2 关键方法
名称
功效
备注
StudentSituation
actionPerformed
创建学生信息录入界面
处理ActionEvent事件
结构方法
接口方法
2.3 录入界面截图:
3.基础信息查询
3.1 组员变量
表3-1 关键组员变量属性
描述
变量类型
变量名称
存放“学生”对象散表
显示学生基础信息文本
Hashtable
JTextField
基础信息表
学号,姓名,所学专业,家庭住址,出生
3.2 方法
表3-2 关键方法
名称
功效
备注
Inquest
actionPerformed
创建查询界面
处理ActionEvent事件
结构方法
接口方法
3.3 查询截图:
4.基础信息修改
4.1 组员变量
表4-1关键组员变量
描述
变量类型
变量名称
存放“学生”对象散列表
输入学生基础信息文本条
Hashtabel
JTextField
基础信息表
学号,姓名,所学专业,家庭住址,出生
4.2 方法
表4-2 关键方法
名称
功效
备注
ModifySituation
actionPerform
创建学生信息修改界面
处理ActionEvent事件
结构方法
接口方法
4.3 修改界面截图:
5.基础信息删除
5.1 组员变量
表5-1 关键组员变量
描述
变量类型
变量名称
存放“学生”对象散列表
显示学生基础信息文本条
Hashtable
JTextField
基础信息表
学号,姓名,所学专业,家庭住址,出生
5.2 方法
表5-2 关键方法
名称
功效
备注
Delete
actionPerformed
创建学生信息删除界面
处理ActionEvent
结构方法
接口方法
5.3 删除界面截图
6.学生对象
6.1 组员变量
表6-1 关键组员变量
描述
变量类型
变量名称
学号
姓名
所学专业
家庭住址
出生
性别
String
String
String
String
String
String
Number
Name
Discipling
Grade
Borth
Sex
6.2方法
表6-2 关键方法
名称
功效
Setnumber
Setnumber
Setname
Setname
setDisciping
setDisciping
setGrade
setGrade
setBorth
setBorth
setSex
setSex
设置学号
获取学号
设置姓名
获取姓名
设置所学专业
获取所学专业
设置家庭住址
获取家庭住址
设置出生
获取出生
设置性别
获取性别
五、总结和展望
课程设计是培养学生综合利用所学知识,发觉,提出,分析和处理实际问题,锻炼实践能力关键步骤,是对学生实际工作能力具体训练和考察过程. 此次课程设计即使很辛劳,实在是受益匪浅。原来这门课知识学就不够扎实,此次课程设计,在设计过程中碰到了很多问题,刚开始要设计时候,还真不知道从哪里下手但最终在图书、同学和老师帮助下全部得到了处理,让我学会了好多书本上没有东西,经过此次课程设计我也能将书本上知识融会贯通,起到了很好辅助学习效果,不过我发觉我学到知识比整整一个学期学到全部多。理论和实践相结合是学习最有效方法。在设计过程中发觉了自己不足之处,对以前所学过知识了解得不够深刻,掌握得不够牢靠,经过这次课程设计以后,一定把以前所学过知识重新温故。经过这次课程设计使我知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。
不过,在用Java开发类似软件时,发觉在图形界面设计方面远没有用VB,VF等开发工具简单。
参考文件:
附录:
1.主界面代码
StudentManager.java
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);
}
});
bar=new JMenuBar();
fileMenu=new JMenu("菜单选项");
fileMenu.add(录入);
fileMenu.addSeparator();
fileMenu.add(修改);
fileMenu.addSeparator();
fileMenu.add(查询);
fileMenu.addSeparator();
fileMenu.add(删除);
fileMenu.addSeparator();
fileMenu.addSeparator();
fileMenu.add(退出);
bar.add(fileMenu);
setJMenuBar(bar);
label=new JLabel("欢迎进入班级管理系统!",label.CENTER);
label.setFont(new Font("隶书",Font.BOLD,30));
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);
ObjectOutputStreamobjectOut=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("欢迎语界面",label);
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();
}
}
2. 录入代码
StudentSituation.java
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)
{
this.file=file;
学号=new JTextField(10);
姓名=new JTextField(10);
所学专业=new JTextField(10);
家庭住址=new JTextField(10);
出生=new JTextField(10);
group=new ButtonGroup();
男=new JRadioButton("男",true);
女=new JRadioButton("女",false);
group.add(男);
group.add(女);
录入=new JButton("录入");
重置=new JButton("重置");
录入.addActionListener(this);
重置.addActionListener(this);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel("学号:",JLabel.CENTER));
box1.add(学号);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel("姓名:",JLabel.CENTER));
box2.add(姓名);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel("性别:",JLabel.CENTER));
box3.add(男);
box3.add(女);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel("所学专业:",JLabel.CENTER));
box4.add(所学专业);
Box box5=Box.createHorizontalBox();
box5.add(new JLabel("家庭住址:",JLabel.CENTER));
box5.add(家庭住址);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel("出生:",JLabel.CENTER));
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,警告",JOptionPane.WARNING_MESSAGE);
}
else
{
String m="基础信息将被录入!";
intok=JOptionPane.showConfirmDialog(this,m,"确定",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
if(ok==JOptionPane.YES_OPTION)
{
String name=姓名.getText();
String discipling=所学专业.getText();
String grade=家庭住址.getText();
String borth=出生.getText();
String sex=null;
if(男.isSelected())
{
sex=男.getText();
}
else
{
sex=女.getText();
}
学生=new Student();
学生.setNumber(number);
学生.setName(name);
学生.setDiscipling(discipling);
学生.setGrade(grade);
学生.setBorth(borth);
学生.setSex(sex);
try{
outOne=new FileOutputStream(file);
outTwo=new ObjectOutputStream(outOne);
基础信息表.put(number,学生);
outTwo.writeObject(基础信息表);
outTwo.close();
outOne.close();
学号.setText(null);
姓名.setText(null);
所学专业.setText(null);
家庭住址.setText(null);
出生.setText(null);
}
catch(Exception ee)
{
System.out.println(ee);
}
}
}
}
else
{
String warning="必需要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
if(e.getSource()==重置)
{
学号.setText(null);
姓名.setText(null);
所学专业.setText(null);
家庭住址.setText(null);
出生.setText(null);
}
}
}
3. 查询代码
Inquest.javaimport 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,"查询对话框",false);
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("男",false);
女=new JRadioButton("女",false);
group=new ButtonGroup();
group.add(男);
group.add(女);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel("输入要查询学号:",JLabel.CENTER));
box1.add(学号);
box1.add(查询);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel("姓名:",JLabel.CENTER));
box2.add(姓名);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel("性别:",JLabel.CENTER));
box3.add(男);
box3.add(女);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel("所学专业:",JLabel.CENTER));
box4.add(所学专业);
Box box5=Box.createHorizontalBox();
box5.add(new JLabel("家庭住址:",JLabel.CENTER));
box5.add(家庭住址);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel("出生:",JLabel.CENTER));
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);
Container con=getContentPane();
con.add(pCenter,BorderLayout.CENTER);
con.validate();
setVisible(false);
setBounds(100,200,360,270);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
setVisible(false);
}
});
}
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();
展开阅读全文