《计算机语言Java课程设计学籍管理系统.doc》由会员分享,可在线阅读,更多相关《计算机语言Java课程设计学籍管理系统.doc(21页珍藏版)》请在三一办公上搜索。
1、课程设计说明书名称 计算机语言Java课程设计 学籍管理系统 2011年 6月20日至 2011年 6月26日共 1 周院 系 计算机工程系 班 级 10软件技术(外包)1班 姓 名 系主任 教研室主任 指导教师 目录:1 系统概述11.2流程图11.2 系统开发工具与环境22 系统设计22.1 系统概要设计22.2统详细设计33系统的调试174课程设计心得185 参考文献191 系统概述1.1 系统功能1学籍管理系统主界面模块ManagerWindow类负责创建学籍管理系统的主窗口,该类含有main方法,程序从该类开始执行。ManagerWindow类的成员变量中有4种重要类型的对象:Inp
2、utStudent,Inquest,ModifySitation和Delete对象。ManagerWindow类的主要成员的作用将在后面详细阐述,ManagerWindow类创建的窗口及其中的主要对象2学籍管理系统Student模块Student类所创建的对象是InputStudent类的成员之一,负责封装学生的基本信息。3学籍管理系统StudentPicture模块StudentPicture类所创建InputStudent,Inquest,DeleteModifySitation类的成员变量之一,负责显示学生的照片。4学籍管理系统InputStudent模块InputStudent类创建的
3、对象是ManagerWindow类的重要成员之一,负责提供录入学生基本信息的界面5学籍管理系统Inquest模块 Inquest类创建的对象是ManagerWindow类的重要成员之一,负责提供查询学生基本信息及打印基本信息的界面。6学籍管理系统ModifSituation模块 ModifSituation类创建的对象是ManagerWindow类的要成员之一,负责提供修改学生基本信息的界面。7学籍管理系统Delete模块Delete类创建的对象是ManagerWindow类的重要成员之一,负责提供删除学生基本信息的界面1.2流程图启动程序学生信息录入系统主界面学生信息查询学生信息修改学生信息
4、删除显示学生照片学生信息封装退出系统1.2 系统开发工具与环境开发工具 Eclipse 软件环境 开发语言:Java、J2SE 操作系统:Windows XP硬件方面: 处理器:Intel Pentium 166MX 或更高。 内存:512M以上。 硬盘空间:200M以上。2 系统设计2.1 系统概要设计1录入学生基本信息功能的界面。用户可以通过菜单选项让程序呈现录入学生基本信息功能的界面,通过该界面可以录入学生的学号,姓名,性别,出生日期,专业和照片等信息。2修改学生基本信息的功能界面。用户可以通过菜单选项让程序呈现“修改学生基本信息”功能的界面,通过该界面可以对已录入的学生信息进行修改。3
5、查询与打印学生基本信息功能的界面,用户可以通过菜单选项让程序呈现出“查询与打印学生基本信息”功能的界面,通过该界面可以对以录入的学生信息进行查询和打印。4删除学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“删除学生基本信息”功能的界面,通过该界面可以删除已录入的学生信息。2.2统详细设计2.2.1 ManagerWindow类 该类是javax.swing包中的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图如图4-1所示1)成员变量基本信息录入是InputStudent对象,负责提供录入信息的界面。基本信息修改时ModifySituation
6、对象,负责提供修改信息的界面。基本信息查询与打印时Inquest对象,负责提供查询与打印信息的界面。基本信息删除时HashMap创建的散列映射,用于存储键。file是File文件对象,程序将基本信息散列映射写入该文件中。录入,修改,查询,删除,欢迎界面是JMenuItem创建的菜单项。2)方法ManagerWindow()是构造方法,负责完成窗口的初始化。actionPerformed(ActionEvent)方法是ManagerWindow类实现的ActionListener接口中的方法main方法是程序运行的入口方法public class ManagerWindow extends JF
7、rame implements ActionListener InputStudent 基本信息录入; ModifySituation 基本信息修改; Inquest 基本信息查询与打印; Delete 基本信息删除; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询与打印,删除,欢迎界面; HashMap 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; public ManagerWindow() 录入=new JMenuIt
8、em(录入学生基本信息); 修改=new JMenuItem(修改学生基本信息); 查询与打印=new JMenuItem(查询与打印学生基本信息); 删除=new JMenuItem(删除学生基本信息); 欢迎界面=new JMenuItem(欢迎界面); bar=new JMenuBar(); fileMenu=new JMenu(菜单选项); fileMenu.add(录入); fileMenu.add(修改); fileMenu.add(查询与打印); fileMenu.add(删除); fileMenu.add(欢迎界面); bar.add(fileMenu); setJMenuBa
9、r(bar); label=new JLabel(学籍管理系统,JLabel.CENTER); label.setIcon(new ImageIcon(welcome.jpg); label.setFont(new Font(隶书,Font.BOLD,36); label.setHorizontalTextPosition(SwingConstants.CENTER); label.setForeground(Color.red); 基本信息=new HashMap(); 录入.addActionListener(this); 修改.addActionListener(this); 查询与打印
10、.addActionListener(this); 删除.addActionListener(this); 欢迎界面.addActionListener(this); card=new CardLayout(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File(基本信息.txt); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStrea
11、m(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); catch(IOException e) 基本信息录入=new InputStudent(file); 基本信息修改=new ModifySituation(file); 基本信息查询与打印=new Inquest(file); 基本信息删除=new Delete(file); pCenter.add(欢迎界面,label); pCenter.add(录入界面,基本信息录入); pCenter.add(修改界面,基本信息修改); pCenter.add(删除
12、界面,基本信息删除); add(pCenter,BorderLayout.CENTER); validate(); setVisible(true); setBounds(100,50,460,280); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int n=JOptionPane.showConfirmDialog(null,确认退出吗?,确认对话框, JOptionPa
13、ne.YES_NO_OPTION ); if(n=JOptionPane.YES_OPTION) System.exit(0); ); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=录入) 基本信息录入.clearMess(); card.show(pCenter,录入界面); else if(e.getSource()=修改) 基本信息修改.clearMess(); card.show(pCenter,修改界面); else if(e.getSource()=查询与打印) 基本信息查询与打印.c
14、learMess(); 基本信息查询与打印.setLocation(getBounds().x+getBounds().width,getBounds().y); 基本信息查询与打印.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,删除界面); else if(e.getSource()=欢迎界面) card.show(pCenter,欢迎界面); public static void main(String args) new ManagerWindow(); 运行效果如下图所示:.2.2.2 Student类 创建
15、的类对象“学生”是InputStudent的重要成员之一,负责处理和学生有关的数据。标明Student类的主要成员变量和方法以及InputStudent类之间的组合1)成员变量number,name,discipling,grade,borth和sex是String对象,他们的值分别表示学生的学号,姓名,专业,年级,出生日期,性别。imagePic是File对象,用来存放学生的照片图像的引用。2)方法setNumber(String)和getNumber()方法分别用来设置number和获取number。setImagePic和getImagePic()方法分别用来设置imagePic和获取它
16、的值。源代码:public class Student implements Serializable String number,name,discipling,grade,borth,sex; File imagePic; public void setNumber(String number) this.number=number; public String getNumber() return number; public void setName(String name) this.name=name; public String getName() return name; pu
17、blic void setDiscipling(String discipling) this.discipling=discipling; public String getDisciping() return discipling; public void setGrade(String grade) this.grade=grade; public String getGrade() return grade; public void setBorth(String borth) this.borth=borth; public String getBorth() return bort
18、h; public void setSex(String sex) this.sex=sex; public String getSex() return sex; public void setImagePic(File image) imagePic=image; public File getImagePic() return imagePic; 运行效果如下图所示:2.2.3 InputStudent类InputStudent类是javax.swing包中JPanel容器的子类,并实现了ActionListener接口,所创建的对象,基本信息录入是ManagerWiodow类中的最重要
19、成员之一,负责提供录入学生信息的界面。表明Inputstudent类的主要成员变量,方法和ManagerWindow类组合关系1)成员变量学生是Student创建的对象,该对象含有核学生有关的数据。pic是StudentPicture创建的对象,负责绘制学生的照片。录入,重置和选择照片是JButton创建的对象,这些按钮都将当前容器注册为自己的ActionEvent事件监视器。2)方法InputStudent(File)是构造方法,用来创建基本信息录入对象,当创建对象时,通过该构造方法的参数将ManagerWindow类中的file的引用传递给systemFile.actionPerforme
20、d(ActionEvent)方法是Inputstudent类实现接口中的方法。InputStdent创建的容器是录入,重置,选择照片按钮时,容器将执行action Performed(ActionEvent)方法进行相应的操作。运行效果如下图所示:源代码:public class InputStudent extends JPanel implements ActionListener Student 学生=null; StudentPicture pic; HashMap 基本信息表=null; JTextField 学号,姓名,年级,出生; JButton 选择照片; JComboBox
21、专业; JRadioButton 男,女; ButtonGroup group=null; JButton 录入,重置; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File systemFile,imagePic; public InputStudent(File file) systemFile=file; pic=new StudentPicture(); 学号=new JTextField(5
22、); 姓名=new JTextField(5); 专业=new JComboBox(); try FileReader inOne=new FileReader(专业.txt); BufferedReader inTwo= new BufferedReader(inOne); String s=null; int i=0; while(s=inTwo.readLine()!=null) 专业.addItem(s); inOne.close(); inTwo.close(); catch(IOException exp) 专业.addItem(数学); 专业.addItem(计算机科学与技术);
23、 年级=new JTextField(5); 出生=new JTextField(5); 选择照片=new JButton(选择); group=new ButtonGroup(); 男=new JRadioButton(男,true); 女=new JRadioButton(女,false); group.add(男); group.add(女); 录入=new JButton(录入); 重置=new JButton(重置); 录入.addActionListener(this); 选择照片.addActionListener(this); 重置.addActionListener(this
24、); 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.cr
25、eateHorizontalBox(); 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(bo
26、x1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.add(Box.createVerticalGlue(); JPanel picPanel=new JPanel(); picPanel.setBackground(Color.green); picPanel.add(new JLabel(选择照片:,JLabel.CENTER); picPanel.add(选择照片); JPanel putButton=new JPanel(); putButton.add(录入
27、); putButton.add(重置); JPanel messPanel=new JPanel(); messPanel.add(boxH); messPanel.setBackground(Color.cyan); putButton.setBackground(Color.red); setLayout(new BorderLayout(); JSplitPane splitV= new JSplitPane(JSplitPane.VERTICAL_SPLIT,picPanel,pic); JSplitPane splitH=new JSplitPane(JSplitPane.HORI
28、ZONTAL_SPLIT,messPanel,splitV); add(splitH,BorderLayout.CENTER); add(putButton,BorderLayout.SOUTH); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=录入) String number=; number=学号.getText(); if(number.length()0) try inOne=new FileInputStream(systemFile); inTwo=new ObjectInputSt
29、ream(inOne); 基本信息表=(HashMap)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.showConfirmDialo
30、g(this,m,确认, JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String discipling=(String)专业.getSelectedItem(); String grade=年级.getText(); String borth=出生.getText(); String sex=null; if(男.isSelected() sex=男.getText(); else sex=女.getTex
31、t(); 学生=new Student(); 学生.setNumber(number); 学生.setName(name); 学生.setDiscipling(discipling); 学生.setGrade(grade); 学生.setBorth(borth); 学生.setSex(sex); 学生.setImagePic(imagePic); try outOne=new FileOutputStream(systemFile); outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,学生); outTwo.writeObject(
32、基本信息表); outTwo.close(); outOne.close(); clearMess(); Catch(Exception ee) else String warning=必须要输入学号!; JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); else if(e.getSource()=选择照片) JFileChooser chooser=new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensi
33、onFilter( JPG & GIF Images, jpg, gif); chooser.setFileFilter(filter); int state=chooser.showOpenDialog(null); File choiceFile=chooser.getSelectedFile(); if(choiceFile!=null&state=JFileChooser.APPROVE_OPTION) 选择照片.setText(choiceFile.getName(); imagePic=choiceFile; pic.setImage(imagePic); pic.repaint(
34、); else if(e.getSource()=重置) clearMess(); public void clearMess() 学号.setText(null); 姓名.setText(null); 年级.setText(null); 出生.setText(null); 选择照片.setText(选择); imagePic=null; pic.setImage(imagePic); pic.repaint(); 2.2.4 ModifySituation类 ModifySituation类是javax.swing包中JPanel容器的子类,并实现了ActionListener接口,所创建的
35、对象:基本信息查询时ManagerWindow类中最重要的成员之一,负责提供修改学生信息的界面。标明ModifySituation类的主要成员变量,方法以及和ManagerWindow类之间组合关系。1)成员变量pic是StudentPicture创建的对象,负责绘制学生的照片。录入,重置和选择照片是JButton创建的对象,这些按钮都将当前容器注册为自己的ActionEvent事件监视器.actionPerformed(ActionEvent)方法是InputStudent类实现ActionListener接口中的方法。Inquest创建的对话框时查询,打印文本照片,打印文本和打印照片按钮的
36、ActionEvent事件监视器,当用户单击某个按钮时,对话框将执行actionPerformed(ActionEvent)方法进行相应的操作。2)方法 ModifySituation(File)是构造方法,用来创建基本信息修改对象,当创建该对象时,通过该构造方法的参数将ManagerWindow类中的file的引用传递给systemFile. actionPerformed(ActionEvent)方法是InputStudent类实现的ActionListener接口中的方法。InputStudent创建的容器时开始修改,录入修改,重置,选择照片按钮的ActionPerformed(Acti
37、onEvent)方法进行相应的操作。运行效果如下图所示:2.2.5 Delete类 Delete类是javax.swing包中JPanel容器的子类,并实现了ActionListen接口,所创建的对象:基本信息删除是ManagerWindow类中最重要的成员之一,负责提供删除学生信息的界面。标明Delete类的主要成员变量,方法以及和 ManagerWindow类之间组合关系1)成员变量 基本信息表是HashMap创建的散列映射,用于存储键值数据对,其中的键必须是一个String对象,键对应的值必须是Student对象。程序将从systemFile文件中读出曾写入到该文件中的HashMap对象,并且将这个对象的引用赋给基本信息表。删除是