java课程设计学生信息管理系统.docx
java课程设计学生信息管理系统Java程序设计 课程设计 目 录 一、 总体设计 1.1学生信息系统结构图1。 1.2本系统的主要功能2。 1.3 Java源文件及其功能2。 二 、详细设计 2.1主类StudentManager3. 2.2类StudentSituation5 2.3类ModifySituation.8 2.4类inquest10 2.5类Delete12 2.6类Student.13 三、功能测试及运行效果 3.1 系统主界面.15 3.2 录入信息界面.15 3.3 修改信息界面.16 3.3 查询信息界面16 3.3 删除信息界面17 程序总结17 参考文献17 一、总体设计 1.1学生信息系统结构图 录入学生信息修改 学生信 息学生信息管理系统 查询学生信息删除学生信息录入学号录入姓名录入专业录入年级出生日期录修 入改学 姓号名 修改专业修改年级修改生日查询学号删除学号1.2本系统的主要功能 运行该系统成功后,会出现一个欢迎使用的主界面,上面的菜单选项,会弹出4个子菜单分别是录入基本信息、修改基本信息、查询基本信息、删除基本信息。点击它们会出现不同的界面,分别有不同的功能: 1. StudentManager.java 该类负责创建学生信息管理系统的主窗口,该类还有main方法,程序从该类开始执行。 学生信息系统分析结构图 显示姓名显示专业显示年级显示生日删除姓名删除专业删除年级删除生日2. StudentSituation.java 该类创建的对象是StudentManager类的重要成员之一,负责提供录入、重置学生基本信息的界面。 3. ModifySituation.java 该类创建的对象是StudentManager类的重要成员之一,负责提供修改学生基本信息的界面。 4.Delete.java 该类创建的对象是StudentManager类的重要成员之一,负责提供删除学生基本信息的界面。 5.inquest.java 创建的对象是StudentManager类的重要成员之一,该类负责提供查询学生基本信息的界面。 6.Student.java 该类创建的对象是StudentManager类的重要成员之一,该类在做上面操作时可以返回学生的基本信息,主要起到一个返回的作用。 本系统是基于数据库的学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息的功能。 1.3 Java源文件及其功能 1.icon.jpg 该文件是窗口最小化时的窗口图标,StudentSituation需要调用该文件。 2.专业.txt 该文件为专业组合的组合键提供下拉菜单的内容,StudentSituation和ModifySituation调用该文件。 二、详细设计 2.1主类StudentManager 表2-1 主要成员变量 成员变量描述 面板 面板 面板 面板 菜单栏 变量类型 StudentSituation ModifySituation inquest 名称 NULL NULL NULL NULL Delete JMenuBar bar 菜单组 菜单项 布局管理器 JMenu JMenuItem CardLayout fileMenu StudentSituation,ModifySituation Inquest, Delete card 表2-2 主要方法 方法名称 StudentManager actionPerformed main 返回类型 无类型 功能 创建窗口 备注 构造方法 无类型 无类型 处理响应事件 执行程序 继承自父类抽象方法 程序的主函数 源代码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=null; JPanel pCenter; public StudentManager 录入=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("welcome to use students system!",JLabel.CENTER); label.setFont(new Font("楷体", Font.BOLD, 22); label.setForeground(Color.black); 基本信息=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("欢迎语界面",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.2类StudentSituation 表2-3 主要成员变量 成员变量描述 Hashtable对象类型 文本域 组合框 单选框 按钮多斥作用域 按钮 变量类型 Hashtable 名称 NULL 学号、姓名、专业、年级、出生 Smajor 男、女 group 录入、重置 JTextField JComboBox ButtonGroup ButtonGroup JButton 表2-4 主要方法 方法名称 StudentSituation actionPerformed 返回类型 无类型 无类型 功能 创建录入学生信息界面 处理响应事件 备注 构造方法 继承自父类抽象方法 源代码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="基本信息将被录入!" 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); 2.3类ModifySituation 表2-5 主要成员变量 成员变量描述 Hashtable对象类型 文本域 组合框 单选框 按钮多斥作用域 按钮 变量类型 Hashtable JTextField JComboBox ButtonGroup ButtonGroup JButton 表2-6 主要方法 名称 NULL 学号、姓名、专业、年级、出生 Smajor 男、女 group 开始修改、录入修改、重置 方法名称 返回类型 无类型 无类型 无类型 功能 创建修改学生信息界面 处理响应事件 清除文本框内容 备注 构造方法 继承自父类抽象方法 ModifySituation actionPerformed clearMess 无 8 核心源代码ModifySituation.java 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; .部分源代码省略. 学号.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="该学号没有基本信息,不能修改!" 录入修改.setEnabled(false); else String warning="必须要输入学号!" JoptionPane.showmessageDialog(this,waring, "警告",JoptionPane.WARNING 录入修改.setEnabled(false); if(e.getSource=重置) 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); 2.4类inquest 表2-7主要成员变量 成员变量描述 Hashtable对象类型 文本域 启动并执行打印作业 单选框 按钮多斥作用域 按钮 变量类型 Hashtable JTextField PrintJob ButtonGroup ButtonGroup JButton 表2-8主要方法 名称 inquest 学号,姓名,专业,年级,出生 pri 男,女 group 查询 方法名称 返回类型 无类型 无类型 功能 创建录入学生信息界面 处理响应事件 备注 构造方法 继承自父类抽象方法 inquest actionPerformed 核心源代码inquest.java 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) .部分源代码省略. inOne.close; inTwo.close; catch(Exception ee) if(基本信息表.containsKey(number) Student stu=(Student)基本信息表.get(number); 姓名.setText(stu.getName); 专业.