JAVA技术大作业
院 (系) 电气与信息工程学院
专业班级 计算机科学与技术09-02
学生姓名 桂 林 学号 2008441106
成绩
20##年 08 月 31 日
摘要
随着高校的扩招,大学生的数量也不断的在增加,传统的“一支笔,一本通讯录”的学籍管理方式也慢慢的无法适应形势的变化。随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。随着社会的发展,软件也在不断的更新换代。
由于有些学校里对学生的成绩、入学、毕业等的一些繁琐处理都是通过手工进行记载并进行处理的,对学生数据的处理工作量特别大,不仅浪费大量的人力物力,而且还很容易出错。如果有这样一套完整的学籍管理软件,只需点击几下鼠标就可完成所需操作,那样就会大大的提高教师的工作效率和管理水平。并能进一步提高学校的工作效率并使学校实施规范化管理。
学生学籍管理系统是一个教育单位不可缺少的部分。它的内容对于学校的决策者和管理者乃至教师和学生来说都至关重要, 所以学生学籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。一直以来人们使用传统人工的方式管理学生工作, 这种管理方式存在着许多缺点, 如: 效率低、保密性差, 另外时间一长, 将产生大量的冗余文件和数据, 这给查找、更新和维护工作都带来了很大的困难。鉴于学生学籍管理中存在的诸多问题, 我们在此次课程设计中以学生学籍管理系统为研究课题,对此系统进行了全面的设计。
关键词 查询,学籍管理,学生信息
目 录
摘要.................................................................. Ⅰ
目 录.............................................................. Ⅱ
1 设计目的与内容........................................................ 1
1.1 课程设计目的..................................................................................................... 1
1.2 课程设计内容..................................................................................................... 1
2 具体要求............................................................. 2
2.1 设计要求............................................................................................................. 2
2.2 开发环境............................................................................................................. 2
3 总体设计思路.......................................................... 3
3.1 系统的功能模块划分......................................................................................... 3
3.2 系统总体功能框图............................................................................................. 3
4 详细设计............................................................. 4
4.1程序流程图如下.................................................................................................. 4
4.2主界面函数的设计.............................................................................................. 4
4.3录入界面设计...................................................................................................... 5
4.5修改界面和函数的设计....................................................................................... 8
4.6 删除界面和函数的设计.................................................................................... 12
5 功能调试与测试....................................................... 15
5.1主界面和函数的测试......................................................................................... 15
5.2学生信息的录入测试:..................................................................................... 16
5.3学生信息的查询测试:..................................................................................... 16
5.4修改学生信息的测试:..................................................................................... 17
5.5删除学生信息的测试:..................................................................................... 18
6 总结................................................................ 19
致谢.................................................................. 20
参考文献.............................................................. 21
附源程序.............................................................. 23
1 设计目的与内容
1.1 课程设计目的
通过设计图形用户界面的学籍管理系统,提高学生Java语言的综合运用。Java语言是从事软件开发的一门必修的专业基础课,这次的课程设计目的将Java的知识点系统的结合起来,理解并加深对教师所授内容的理解和掌握,掌握其开发技巧,为以后从事Java程序开发打下基础。
1.2 课程设计内容
“录入学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“录入学生基本信息”功能的界面,通过该界面可以录入学生的学号、姓名、性别、出生日期、专业和照片等信息。
修改学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“修改学生基本信息”功能的界面,通过该界面可以对已录入的学生信息进行修改。
查询学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“查询与打印学生基本信息”功能的界面,通过该界面可以对已录入的学生信息进行查询。
删除学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“删除学生基本信息”功能的界面,通过该界面可以删除已录入的学生信息。
2 具体要求
2.1 设计要求
要求设计出图形用户界面学籍管理系统,实现学生信息的录入、查询、修改、删除等。
界面要求:
a.尽量使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。
b.若无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户操作。
其他要求:
a. 标识符命名遵循Windows命名规范。
b. 能够注意各种异常处理,注重提高程序运行效率。
2.2 开发环境
NetBeans IDE 6.8并装有Jdk的计算机。
3 总体设计思路
3.1 系统的功能模块划分
通过“public class StudentManager extends JFrame implements ActionListener”此类来生成学籍管理系统的主界面再通过函数public void actionPerformed(ActionEvent e)来实现对各个类得调用。如:调用StudentSituation类来完成对基本信息录入;调用ModifySituation类来完成对学生基本信息修改;调用Inquest类来完成对学生基本信息查询;调用Delete类来完成对学生基本信息删除。
3.2 系统总体功能框图
3-1学籍管理系统功能总框图
4 详细设计
4.1程序流程图如下
4.2主界面函数的设计
主界面主要是用来调用程序中的给个类来实现对学生信息的管理和一个欢迎界面的设计以及菜单项的内容。
主界面主要是通过StudentManager.StudentManager()函数来实现一个欢迎界面和菜单选项(包括录入学生基本信息、修改学生基本信息、查询学生基本信息、删除学生基本信息),然后再通过StudentManager.actionPerformed(ActionEvent)函数来实现对各个类得调用从而实现对信息的录入、修改、查询、删除等事件的处理。
4.3录入界面设计
录入信息的界面主要是通过StudentSituation类来实现的。其中通过函数StudentSituation.StudentSituation(File)来实现界面的内容。通过函数StudentSituation.actionPerformed(ActionEvent)来实现具体内容的录入。具体设计如下:
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="基本信息将被录入!";
int ok=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);
}
}
}
4.4查询界面函数的设计
查询信息的界面主要是通过Inquest类来实现的。其中通过函数Inquest.Inquest(JFrame, File)来实现界面的设计和外观。通过函数Inquest.actionPerformed(ActionEvent)来实现具体信息的输出。输出信息具体设计如下:
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());
if(stu.getSex().equals("男"))
{
男.setSelected(true);
}
else
{
女.setSelected(true);
}
}
else
{
String warning="该学号不存在!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
else
{
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
}
4.5修改界面和函数的设计
修改信息的界面主要是通过ModifySituation类来实现的。其中通过函数ModifySituation.ModifySituation(File)来实现界面的设计和外观。通过函数ModifySituation.actionPerformed(ActionEvent)来实现具体信息的修改和保存。信息修改的具体设计如下:
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);
}
}
else
{
录入修改.setEnabled(false);
String warning="该学号不存在!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
else
{
录入修改.setEnabled(false);
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
else 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 question="该生基本信息已存在,您想修改他(她)的基本信息吗?";
JOptionPane.showMessageDialog(this,question,"警告",JOptionPane.QUESTION_MESSAGE);
String m="基本信息将被修改!";
int ok=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();
}
Student 学生=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);
}
录入修改.setEnabled(false);
}
else if(ok==JOptionPane.NO_OPTION)
{
录入修改.setEnabled(true);
}
}
else
{
String warning="该学号没有基本信息,不能修改!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
录入修改.setEnabled(false);
}
}
else
{
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
录入修改.setEnabled(false);
}
}
if(e.getSource()==重置)
{
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
}
4.6 删除界面和函数的设计
删除信息的界面主要是通过Delete类来实现的。其中通过函数Delete.Delete(File)来实现界面的设计和外观。通过函数Delete.actionPerformed(ActionEvent)来实现具体数据的删除和管理。信息删除的具体设计如下:
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);
}
String m="确定要删除该学号及全部信息吗?";
int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION)
{
基本信息表.remove(number);
try
{
outOne=new FileOutputStream(file);
outTwo=new ObjectOutputStream(outOne);
outTwo.writeObject(基本信息表);
outTwo.close();
outOne.close();
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
catch(Exception ee)
{
System.out.println(ee);
}
}
else if(ok==JOptionPane.NO_OPTION)
{
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
else
{
String warning="该学号不存在!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
else
{
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
}
5 功能调试与测试
5.1主界面和函数的测试:
图5.1主界面函数
5.2学生信息的录入测试:
图5.2录入学生信息
5.3学生信息的查询测试:
图5.3查询信息
5.4修改学生信息的测试:
图5.4修改信息
5.5删除学生信息的测试:
图5.5删除信息
6 总结
这次的课程设计主要有以下几点心得
(1)确定课题后,先将熟悉该课程主要设计的主要目的,熟读设计要求。
(2)编写程序之前首先要进行总体设计,确定该设计需要由哪几部分组成,并确定各部分的功能,确定主类。
(3)分析完成之后画出程序流程图,并开始编写程序。在编写程序的过程中要注意不能将关键字打错,这样的错误不容易查出。
(4)在程序打包时要先给电脑安装Jdk,若不安装,则在Dos环境下会出现找不到源文件的提示。
这次的课程设计不仅仅巩固了java的知识,也让我对编程的步骤有了新的理解,以前总是先看程序,再理清各部分之间的关系,最后才会画出程序流程图,这次的课程设计纠正了以前的错误,也为以后编写 java程序奠定了一定的基础。
致谢
首先要感谢同学的帮忙,在他们的帮助下我才能完成这次课程设计。在这次课程设计中我遇到了很多困难,在遇到这些困难的时候,我觉得很烦,有点想放弃。但我们宿舍的人安慰我说:“加油,努力就一定能完成的。”在他们的鼓励下,我又重新鼓起勇气,继续做下去,所以我要感谢我们宿舍的舍友。在完成程序的过程中难免会出现好多问题,俗话说:“当局者迷,旁观者清”。我总是发现不了自己的错误,然后我就会让同学帮我看看。最后在同学的帮助下终于把程序做出来了。我对他们深表感谢。我要感谢我们指导老师,他给我提出了许多宝贵的指导。在他的帮助下我可以把它搞得更加完美。在这里我感谢每一个帮助过我的人,感谢他们对我的帮助。同时我还要感谢学校给我们提供优良的上机环境,让我们能够在良好的环境下完成本次课程设计。
参考文献
[1]耿祥义,张跃平.Java2实用教程(第三版)[M] . 北京:清华大学出版社,2006
[2]耿祥义.Java课程设计(第二版)[M] . 北京:清华大学出版社,2004
[3]张跃平.Java2实用教程实验指导与习题解答(第二版)[M]. 北京:清华大学出版社,2004
附源程序
/*主界面的设计*/
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=null;
JPanel pCenter;
public StudentManager()
{
setTitle("学籍管理系统");
录入=new JMenuItem("录入学生基本信息");
修改=new JMenuItem("修改学生基本信息");
查询=new JMenuItem("查询学生基本信息");
删除=new JMenuItem("删除学生基本信息");
bar=new JMenuBar();
fileMenu=new JMenu("菜单选项");
fileMenu.add(录入);
fileMenu.add(修改);
fileMenu.add(查询);
fileMenu.add(删除);
bar.add(fileMenu);
setJMenuBar(bar);
label=new JLabel("欢迎使用学籍管理系统",JLabel.CENTER);
label.setFont(new Font("TimesRoman",Font.BOLD,24));
label.setForeground(Color.red);
基本信息=new Hashtable();
录入.addActionListener(this);
修改.addActionListener(this);
查询.addActionListener(this);
删除.addActionListener(this);
card=new CardLayout();
con=getContentPane();
pCenter=new JPanel();
pCenter.setLayout(card);
pCenter.setBackground(Color.green);
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("欢迎语界面",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();
}
}
/*学生类的设计*/
/*请实现学生类*/
publicclassStudentimplements java.io.Serializable
{
String number,name,discipling,grade,borth,sex;
public Student()
{
}
publicvoid setNumber(String number)
{
this.number=number;
}
public String getNumber()
{
return number;
}
publicvoid setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
publicvoid setDiscipling(String discipling)
{
this.discipling=discipling;
}
public String getDisciping()
{
return discipling;
}
publicvoid setGrade(String grade)
{
this.grade=grade;
}
public String getGrade()
{
return grade;
}
publicvoid setBorth(String borth)
{
this.borth=borth;
}
public String getBorth()
{
return borth;
}
publicvoid setSex(String sex)
{
this.sex=sex;
}
public String getSex()
{
return sex;
}
}
/*录入学生信息类设计*/
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="基本信息将被录入!";
int ok=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);
}
}
}
/*修改学生信息类得设计*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class ModifySituation extends JPanel implements ActionListener
{
Hashtable 基本信息表=null;
JTextField 学号,姓名,专业,年级,出生;
JRadioButton 男,女;
ButtonGroup group=null;
JButton 开始修改,录入修改,重置;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
File file=null;
public ModifySituation(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("录入修改");
录入修改.setEnabled(false);
重置=new JButton("重置");
学号.addActionListener(this);
开始修改.addActionListener(this);
录入修改.addActionListener(this);
重置.addActionListener(this);
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);
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()==开始修改||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);
}
}
else
{
录入修改.setEnabled(false);
String warning="该学号不存在!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
else
{
录入修改.setEnabled(false);
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
else 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 question="该生基本信息已存在,您想修改他(她)的基本信息吗?";
JOptionPane.showMessageDialog(this,question,"警告",JOptionPane.QUESTION_MESSAGE);
String m="基本信息将被修改!";
int ok=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();
}
Student 学生=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);
}
录入修改.setEnabled(false);
}
else if(ok==JOptionPane.NO_OPTION)
{
录入修改.setEnabled(true);
}
}
else
{
String warning="该学号没有基本信息,不能修改!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
录入修改.setEnabled(false);
}
}
else
{
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
录入修改.setEnabled(false);
}
}
if(e.getSource()==重置)
{
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
}
/*查询学生信息类得设计*/
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,"查询对话框",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();
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);
}
}
else
{
String warning="该学号不存在!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
else
{
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
}
/*删除学生信息类得设计*/
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;
ObjectInputStream inTwo=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("男",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);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
validate();
}
/*请实现删除事件处理*/
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);
}
String m="确定要删除该学号及全部信息吗?";
int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION)
{
基本信息表.remove(number);
try
{
outOne=new FileOutputStream(file);
outTwo=new ObjectOutputStream(outOne);
outTwo.writeObject(基本信息表);
outTwo.close();
outOne.close();
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
catch(Exception ee)
{
System.out.println(ee);
}
}
else if(ok==JOptionPane.NO_OPTION)
{
学号.setText(null);
姓名.setText(null);
专业.setText(null);
年级.setText(null);
出生.setText(null);
}
}
else
{
String warning="该学号不存在!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
else
{
String warning="必须要输入学号!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
}
}
}
}