学生信息管理系统java语言实现.doc
Java程序设计实验报告Java Programming Assignment 专 业: 信息与计算科学 班 级: 1002班 学 号: 1008060207 姓 名: 屈敏华 2012年 6月 7 日一、 任务(问题)描述 设计一个图形用户界面来实现一个信息管理系统。这里我做的是学生信息管理系统。基本上实现学生信息的录入,修改,查询,删除。要求有类的继承,封装,接口的实现,还有基本的图形用户界面设计,要求用菜单条,菜单,下拉列表和基本的容器嵌套。为了使存储空间得到很好地利用,我采用散列表来实现对信息的基本的操作。二、设计与实现(多少个Java文件,每个文件中的类)类 名属 性方 法备 注ManageInformationPublic static void mainStudentString number,name,specialty,grade,borth,sex; public Student()public void setNumberpublic String getNumberpublic void setNamepublic String getNamepublic void setSex public String getSexpublic void setSpecialtypublic String getSpecialtypublic void setGradepublic String getGradepublic void setBorthpublic String getBorth在student类里边有用另外一个类的对象作为这个类的成员变量,写在构造方法里 ,。 TextJTextField 学号,姓名,专业,年级,出生; JRadioButton 男,女; ButtonGroup group; JButton 录入,查询,删除,修改,显示; JPanel p1,p2,p3,p4,p5,p6,pv,ph; Student 学生; Hashtable 学生散列表; File file;FileInputStream inOne; ObjectInputStream inTwo; FileOutputStream outOne; ObjectOutputStream outTwo; public Test()录入=new JButton("录入"); 录入.addActionListener(new InputAct(); p1=new JPanel(); p1.add(new JLabel("学号:",JLabel.CENTER); trycatch(IOException e) setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(100,100,600,300); setVisible(true); 继承了Jframe,实现图形界面。DeleteAct public void actionPerformed(ActionEvent e)setEnabled()getText()containsKey()JOptionPane.showConfirmDialogJOptionPane.YES_OPTIONSystem.out.println()JOptionPane.NO_OPTIONsetVisible() JOptionPane.showMessageDialog删除信息InputAct public void actionPerformed(ActionEvent e)JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); setVisible()录入InquestAct public void actionPerformed(ActionEvent e)setEnabled()JOptionPane.showMessageDialog()得到信息ShowAct public void actionPerformed(ActionEvent e)setVisible()显示信息StudentShow isEmpty()windowClosingsetVisible()window Button button1,button2,button3,button4,tuichu; Panel p1,p2,p3; Label l1,l2,l3; TextField a1,a2; Box b1,b2,b3,b4,b5;setFont(new Font("",Font.BOLD,45); setBackground(Color.white);dispose(); System.exit(0); getSource()getText().equals(" ") JOptionPane.showMessageDialogpublic void windowClosing窗口 ModifyActreadObject()isEmpty()append(" ")enm.hasMoreElements()修改信息附:源程序代码框架import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; import javax.swing.border.*; public class ManageIformation public static void main(String args) new window(); class Student String number,name,specialty,grade,borth,sex; public Student() new Test(); ; public void setNumber(String number) this.number=number; public String getNumber() return number; 。public void setBorth(String borth) this.borth=borth; public String getBorth() return borth; class Test extends JFrame . public Test() super("学生信息管理系统"); 学号=new JTextField(10); . group.add(男); group.add(女); 录入.addActionListener(new InputAct(); . 修改.setEnabled(false); p1=new JPanel(); p1.add(new JLabel("学号:",JLabel.CENTER); p1.add(学号); . pv=new JPanel(); pv.setLayout(new GridLayout(6,1); pv.add(p1); . pv.add(p6); ph=new JPanel(); ph.add(录入); .file=new File("学生信息.txt"); 学生散列表=new Hashtable(); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(学生散列表); objectOut.close(); out.close(); catch(IOException e) Container con=getContentPane(); con.setLayout(new BorderLayout(); . class InputAct implements ActionListener public void actionPerformed(ActionEvent e) 修改.setEnabled(false); 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)System.out.println("创建散列表出现问题"); if(学生散列表.containsKey(number) String warning="该生信息已存在请到修改页面修改" JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); /end if1 else String m="该生信息将被录入" int ok=JOptionPane.showConfirmDialog(null,m,"确认", JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) if(男.isSelected()sex=男.getText(); elsesex=女.getText(); 学生=new Student(); . try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 学生散列表.put(number,学生); outTwo.writeObject(学生散列表); outTwo.close(); outOne.close(); catch(Exception ee)System.out.println("输出散列表出现问题"); 学号.setText(null); 。. /end else1 /end if0 else String warning="信息不能为空" JOptionPane.showMessageDialog(null,warning, "警告",JOptionPane.WARNING_MESSAGE); /end else0 /end actionPerformed /end class class InquestAct implements ActionListener public void actionPerformed(ActionEvent e) String number="" . else 修改.setEnabled(false); String warning="必须输入学号" JOptionPane.showMessageDialog(null,warning, "警告",JOptionPane.WARNING_MESSAGE); class ModifyAct implements ActionListener public void actionPerformed(ActionEvent e) try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 学生散列表.put(number, 学生); outTwo.writeObject(学生散列表); outTwo.close(); outOne.close(); . atch(Exception ee) System.out.println("录入修改出现异常!"); 修改.setEnabled(false); class DeleteAct implements ActionListener public void actionPerformed(ActionEvent e) 修改.setEnabled(false); String 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); . String m="确定要删除该学生的记录吗" int ok=JOptionPane.showConfirmDialog(null,m,"确认", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) 学生散列表.remove(number); try 。. catch(Exception ee)System.out.println(ee); else if(ok=JOptionPane.NO_OPTION) . 。 else String warning="该学号不存在" JOptionPane.showMessageDialog(null,warning,"警告",JOptionPane.WARNING_MESSAGE); else String warning="必须输入学号" JOptionPane.showMessageDialog(null,warning, "警告",JOptionPane.WARNING_MESSAGE); class ShowAct implements ActionListener public void actionPerformed(ActionEvent e) new StudentShow(file); class StudentShow extends JDialog .try inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 学生散列表=(Hashtable)inTwo.readObject(); . catch(Exception ee) if(学生散列表.isEmpty()显示.append("目前还没有学生的信息记录n"); else for(Enumeration enm=学生散列表.elements(); enm.hasMoreElements();) . JScrollPane scroll=new JScrollPane(显示); Container con=getContentPane(); . addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)setVisible(false); ); class window extends Frame implements ActionListener . window() button1=new Button("登陆"); p1=new Panel(); l1=new Label("学生信息管理系统",Label.CENTER); l1.setFont(new Font("宋体",Font.BOLD,45); l1.setBackground(Color.white); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose(); ); setVisible(true); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=tuichu) System.exit(0); if(e.getSource()=button1) if(a1.getText().equals("xiaoqu")&&a2.getText().equals("1234") JOptionPane.showMessageDialog(null, "欢 迎 进 入学 生 信息 管 理 系 统"); new Student(); dispose(); else JOptionPane.showMessageDialog(null, "输入的用户名不正确"); 三、 界面设计与事件处理 四 其他 用散列表对学生信息的操作以及对数据的存储都起到了简化的作用,是操作更简单,存储更加灵活,能够根据所需来分配内存,使得内存的利用里大大的提高,这是指用散列表的好处。唯一不好的事,没有做到显示信息的功能。