《JAVA课程教学设计学籍管理方案计划系统.doc》由会员分享,可在线阅读,更多相关《JAVA课程教学设计学籍管理方案计划系统.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、!-课程设计任务书题目: 学籍管理系统 组 员 学 号 组 员 学 号 组 员 学 号 专 业 课 程 JAVA 指导教师 完成时间:2011年9月2011年12月计算机科学系制课程设计任务书及成绩评定课程设计的任务和具体要求1 录入学生基本信息的功能界面。2 修改学生基本信息的功能界面。3 查询学生基本信息的功能界面。4 删除学生基本信息的功能界面。 指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期: 课程设计所需软件、硬件JAVA编程工具MyEclipse6课程设计进度计划起止日期工作内容备注2011年10月至2011年12月编写一个程序可以用来管理学籍数据库参考文献、资料
2、索引序号文献、资料名称编著者出版单位1 高晓黎,刘博主编 , 清华大学出版社2 Java编程思想3 Java核心技术4 深入简出java本学籍管理系统共有6个java源文件。类之间的主要关系如图所示。StudentManager(主类)StudentSituationInquestDeleteModifySituationStudentStudentManager.java该java文件的类负责创建学籍管理系统主窗口。该类含有main方法,程序从该类开始执行。StudentSituation.java该文件的类负责创建学籍管理系统的学生信息录入界面。ModifySituation.java该文
3、件的类负责创建学籍管理系统的学生信息修改界面。Inquest.java该文件的类负责创建学籍管理系统的学生信息查询界面。Delete.java该文件的类负责创建学籍管理系统的学生信息删除界面。Student.java负责创建存放学生信息的对象。1 具体设计11主类StudentManager1成员变量(见下表)主要成员变量(属性)成员变量描述变量类型名称基本信息录入界面StudentSituation基本信息录入基本信息修改界面ModifySituation基本信息修改基本信息查询界面Inquest基本信息查询基本信息删除界面Delete基本信息删除菜单选项JmenuItem录入,修改,查询,
4、删除存放基本信息的散列表Hashtable基本信息存放散列表的文件Filefile2方法(见下表)主要方法名称功能备注StudentManager创建程序主窗口构造方法actionPerformed处理ActionEvent事件接口方法main程序开始运行3代码StudentManager.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class StudentManager extends JFrame
5、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=nu
6、ll; /卡片式布局 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.ad
7、d(删除); 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(
8、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();
9、 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)
10、; 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(pC
11、enter,修改界面); else if(e.getSource()=查询) /“基本信息查询”窗口设置为独立窗口,以便于用户进行查询 基本信息查询.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,删除界面); public static void main(String args) new StudentManager(); 12录入界面StudentSituation1成员变量(见下表)主要成员变量(属性)描述变量类型名称存放“学生”对象的散列表Hashtable基本信息表输入学生基本信息的文本条JtextFiel
12、d学号,姓名,专业,年级,出生存放学生信息的对象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 StudentSituation extends JPanel implements ActionLi
13、stener 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; /存放散列表的文
14、件 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(录入); 重置
15、=new JButton(重置); 录入.addActionListener(this); 重置.addActionListener(this); Box box1=Box.createHorizontalBox(); /创建6个水平Box容器 box1.add(new JLabel(学号:,JLabel.CENTER); box1.add(学号); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(姓名:,JLabel.CENTER); box2.add(姓名); Box box3=Box.createHorizontalBox(
16、); 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 JL
17、abel(出生:,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 JPanel(); pCenter.add(boxH); s
18、etLayout(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
19、 inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 基本信息表=(Hashtable)inTwo.readObject();/首先到文件中读取Hashtable/对象 inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) /如果该学号对应的学生基本信息已经存在 /弹出警告对话框 String warning=该生基本信息已存在,请到修改页面修改!; JOptionPane.showMessageDialo
20、g(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=年级.getT
21、ext(); 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=ne
22、w 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.show
23、MessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); if(e.getSource()=重置) 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); 13查询界面Inquest 1成员变量(见下表)主要成员变量(属性)描述变量类型名称存放“学生”对象的散列表Hashtableyear显示学生基本信息的文本条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 学号,姓名,专业,年级,出生; /显示学生基本信息的文本条 JRa
25、dioButton 男,女; 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); 查询.addActio
26、nListener(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(男); gr
27、oup.add(女);/创建6个水平Box 容器,容器内从左向右排列组件 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(性别:,JLa
28、bel.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.
29、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 JPanel(); pCenter.add(boxH); Container con=getContentPane(
30、); 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)
31、; 出生.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();/首先到文件中读取/Hashtable对象 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 /否则,弹出警告对话框