1、课程设计任务书题目: 学籍管理系统 组 员 学 号 组 员 学 号 组 员 学 号 专 业 课 程 JAVA 指导教师 完成时间:2011 年 9 月2011 年 12 月计算机科学系制1课程设计任务书及成绩评定课程设计的任务和具体要求1录入学生基本信息的功能界面。2修改学生基本信息的功能界面。3查询学生基本信息的功能界面。4删除学生基本信息的功能界面。指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期: 2课程设计所需软件、硬件JAVA 编程工具 MyEclipse6课程设计进度计划起止日期 工作内容 备注2011 年 10 月至2011 年 12 月编写一个程序可以用来管理学
2、籍数据库参考文献、资料索引序号 文献、资料名称 编著者 出版单位1 高晓黎,刘博主编 , 清华大学出版社2 Java 编程思想3 Java 核心技术4 深入简出 java3本学籍管理系统共有 6 个 java 源文件。类之间的主要关系如图所示。StudentManager(主类)StudentSituation Inquest Delete ModifySituationStudentStudentManager.java该 java 文件的类负责创建学籍管理系统主窗口。该类含有 main 方法,程序从该类开始执行。StudentSituation.java该文件的类负责创建学籍管理系统的学生
3、信息录入界面。ModifySituation.java该文件的类负责创建学籍管理系统的学生信息修改界面。Inquest.java该文件的类负责创建学籍管理系统的学生信息查询界面。Delete.java该文件的类负责创建学籍管理系统的学生信息删除界面。Student.java负责创建存放学生信息的对象。1 具体设计11 主类 StudentManager1成员变量(见下表)主要成员变量(属性)成员变量描述 变量类型 名称基本信息录入界面 StudentSituation 基本信息录入基本信息修改界面 ModifySituation 基本信息修改基本信息查询界面 Inquest 基本信息查询基本信
4、息删除界面 Delete 基本信息删除菜单选项 JmenuItem 录入,修改,查询,删除存放基本信息的散列表 Hashtable 基本信息存放散列表的文件 File file2方法(见下表)主要方法名称 功能 备注StudentManager 创建程序主窗口 构造方法actionPerformed 处理 ActionEvent 事件 接口方法main 程序开始运行3代码StudentManager.java4import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.u
5、til.Hashtable;public class StudentManager extends JFrame implements ActionListenerStudentSituation 基本信息录入 =null; /创建基本信息录入界面ModifySituation 基本信息修改=null; /创建基本信息修改界面Inquest 基本信息查询=null; Delete 基本信息删除 =null; JMenuBar bar;JMenu fileMenu;JMenuItem 录入,修改,查询,删除; Container con=null;Hashtable 基本信息=null; /存放
6、基本信息的散列表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(录
7、入);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);查询.add
8、ActionListener(this);删除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel();pCenter.setLayout(card); file=new File(“基本信息 .txt“);if(!file.exists()tryFileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.w
9、riteObject(基本信息);objectOut.close();5out.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(“删除界面“,基本信息删除);c
10、on.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.ge
11、tSource()=修改)card.show(pCenter,“修改界面“);else if(e.getSource()=查询) /“基本信息查询”窗口设置为独立窗口,以便于用户进行查询基本信息查询.setVisible(true);else if(e.getSource()=删除)card.show(pCenter,“删除界面“);public static void main(String args)new StudentManager();12 录入界面 StudentSituation1成员变量(见下表)主要成员变量(属性)6描述 变量类型 名称存放“学生”对象的散列表 Hashtab
12、le 基本信息表输入学生基本信息的文本条 JtextField 学号,姓名,专业,年级,出生存放学生信息的对象 Student 学生2方法(见下表)主要方法名称 功能 备注StudentSituation 创建学生录入界面 构造方法actionPerformed 处理 ActionEvent 事件 接口方法3代码StudentSituation.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class StudentSit
13、uation extends JPanel implements ActionListener Hashtable 基本信息表=null; /存放学生基本信息的散列表JTextField 学号,姓名,专业,年级,出生; /输入基本信息的文本条JRadioButton 男,女;Student 学生=null;ButtonGroup group=null;JButton 录入 ,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outT
14、wo=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(女)
15、;录入=new JButton(“录入“);重置=new JButton(“重置“);录入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox(); /创建 6 个水平 Box 容器box1.add(new JLabel(“学号 :“,JLabel.CENTER);7box1.add(学号);Box box2=Box.createHorizontalBox();box2.add(new JLabel(“姓名 :“,JLabel.CENTER);box2.add(姓名);Box b
16、ox3=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.createHori
17、zontalBox();box6.add(new JLabel(“出生 :“,JLabel.CENTER);box6.add(出生);/创建一个垂直 Box 容器,其中从上向下排列 6 个水平 Box 容器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(); /垂直 Box 容器内的组件靠上对齐JPanel pCenter=new JP
18、anel();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
19、()0) /如果已输入学号try inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();/首先到文件中读取Hashtable/对象inOne.close();inTwo.close();catch(Exception ee)8if(基本信息表.containsKey(number) /如果该学号对应的学生基本信息已经存在 /弹出警告对话框String warning=“该生基本信息已存在,请到修改页面修改!“;JOptionPane.showM
20、essageDialog(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 gr
21、ade=年级.getText();String borth=出生.getText();String sex=null;if(男.isSelected()sex=男.getText();elsesex=女.getText();学生=new Student();学生.setNumber(number);学生.setName(name);学生.setDiscipling(discipling);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);tryoutOne=new FileOutputStream(file);outTwo=new Obj
22、ectOutputStream(outOne);基本信息表.put(number,学生);outTwo.writeObject(基本信息表 );outTwo.close();outOne.close();学号.setText(null);姓名.setText(null); 专业.setText(null);年级.setText(null);出生.setText(null);catch(Exception ee) 9System.out.println(ee); else /弹出警告对话框String warning=“必须要输入学号!“;JOptionPane.showMessageDialo
23、g(this,warning,“警告“,JOptionPane.WARNING_MESSAGE); if(e.getSource()=重置) 学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);13 查询界面 Inquest 1成员变量(见下表)主要成员变量(属性)描述 变量类型 名称存放“学生”对象的散列表 Hashtable year显示学生基本信息的文本条 JTextField 学号,姓名,专业,年级,出生2方法(见下表)主要方法名称 功能 备注Inquest 创建查询界
24、面 构造方法actionPerformed 处理 ActionEvent 事件 接口方法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;