计算机语言Java课程设计学籍管理系统

上传人:1777****777 文档编号:37348683 上传时间:2021-11-02 格式:DOC 页数:21 大小:201.50KB
返回 下载 相关 举报
计算机语言Java课程设计学籍管理系统_第1页
第1页 / 共21页
计算机语言Java课程设计学籍管理系统_第2页
第2页 / 共21页
计算机语言Java课程设计学籍管理系统_第3页
第3页 / 共21页
点击查看更多>>
资源描述
课程设计说明书名称 计算机语言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种重要类型的对象:InputStudent,Inquest,ModifySitation和Delete对象。ManagerWindow类的主要成员的作用将在后面详细阐述,ManagerWindow类创建的窗口及其中的主要对象2学籍管理系统Student模块Student类所创建的对象是InputStudent类的成员之一,负责封装学生的基本信息。3学籍管理系统StudentPicture模块StudentPicture类所创建InputStudent,Inquest,DeleteModifySitation类的成员变量之一,负责显示学生的照片。4学籍管理系统InputStudent模块InputStudent类创建的对象是ManagerWindow类的重要成员之一,负责提供录入学生基本信息的界面5学籍管理系统Inquest模块 Inquest类创建的对象是ManagerWindow类的重要成员之一,负责提供查询学生基本信息及打印基本信息的界面。6学籍管理系统ModifSituation模块 ModifSituation类创建的对象是ManagerWindow类的要成员之一,负责提供修改学生基本信息的界面。7学籍管理系统Delete模块Delete类创建的对象是ManagerWindow类的重要成员之一,负责提供删除学生基本信息的界面1.2流程图启动程序学生信息录入系统主界面学生信息查询学生信息修改学生信息删除显示学生照片学生信息封装退出系统1.2 系统开发工具与环境开发工具 Eclipse 软件环境 开发语言:Java、J2SE 操作系统:Windows XP硬件方面: 处理器:Intel Pentium 166MX 或更高。 内存:512M以上。 硬盘空间:200M以上。2 系统设计2.1 系统概要设计1录入学生基本信息功能的界面。用户可以通过菜单选项让程序呈现录入学生基本信息功能的界面,通过该界面可以录入学生的学号,姓名,性别,出生日期,专业和照片等信息。2修改学生基本信息的功能界面。用户可以通过菜单选项让程序呈现“修改学生基本信息”功能的界面,通过该界面可以对已录入的学生信息进行修改。3查询与打印学生基本信息功能的界面,用户可以通过菜单选项让程序呈现出“查询与打印学生基本信息”功能的界面,通过该界面可以对以录入的学生信息进行查询和打印。4删除学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“删除学生基本信息”功能的界面,通过该界面可以删除已录入的学生信息。2.2统详细设计2.2.1 ManagerWindow类 该类是javax.swing包中的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图如图4-1所示1)成员变量基本信息录入是InputStudent对象,负责提供录入信息的界面。基本信息修改时ModifySituation对象,负责提供修改信息的界面。基本信息查询与打印时Inquest对象,负责提供查询与打印信息的界面。基本信息删除时HashMap创建的散列映射,用于存储键。file是File文件对象,程序将基本信息散列映射写入该文件中。录入,修改,查询,删除,欢迎界面是JMenuItem创建的菜单项。2)方法ManagerWindow()是构造方法,负责完成窗口的初始化。actionPerformed(ActionEvent)方法是ManagerWindow类实现的ActionListener接口中的方法main方法是程序运行的入口方法public class ManagerWindow extends JFrame 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 JMenuItem(录入学生基本信息); 修改=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); setJMenuBar(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); 查询与打印.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 ObjectOutputStream(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(删除界面,基本信息删除); 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,确认退出吗?,确认对话框, JOptionPane.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()=查询与打印) 基本信息查询与打印.clearMess(); 基本信息查询与打印.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类 创建的类对象“学生”是InputStudent的重要成员之一,负责处理和学生有关的数据。标明Student类的主要成员变量和方法以及InputStudent类之间的组合1)成员变量number,name,discipling,grade,borth和sex是String对象,他们的值分别表示学生的学号,姓名,专业,年级,出生日期,性别。imagePic是File对象,用来存放学生的照片图像的引用。2)方法setNumber(String)和getNumber()方法分别用来设置number和获取number。setImagePic和getImagePic()方法分别用来设置imagePic和获取它的值。源代码: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; public 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 borth; 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类中的最重要成员之一,负责提供录入学生信息的界面。表明Inputstudent类的主要成员变量,方法和ManagerWindow类组合关系1)成员变量学生是Student创建的对象,该对象含有核学生有关的数据。pic是StudentPicture创建的对象,负责绘制学生的照片。录入,重置和选择照片是JButton创建的对象,这些按钮都将当前容器注册为自己的ActionEvent事件监视器。2)方法InputStudent(File)是构造方法,用来创建基本信息录入对象,当创建对象时,通过该构造方法的参数将ManagerWindow类中的file的引用传递给systemFile.actionPerformed(ActionEvent)方法是Inputstudent类实现接口中的方法。InputStdent创建的容器是录入,重置,选择照片按钮时,容器将执行action Performed(ActionEvent)方法进行相应的操作。运行效果如下图所示:源代码:public class InputStudent extends JPanel implements ActionListener Student 学生=null; StudentPicture pic; HashMap 基本信息表=null; JTextField 学号,姓名,年级,出生; JButton 选择照片; JComboBox 专业; 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); 姓名=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(计算机科学与技术); 年级=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); 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 picPanel=new JPanel(); picPanel.setBackground(Color.green); picPanel.add(new JLabel(选择照片:,JLabel.CENTER); picPanel.add(选择照片); JPanel putButton=new JPanel(); putButton.add(录入); 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.HORIZONTAL_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 ObjectInputStream(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.showConfirmDialog(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=女.getText(); 学生=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(基本信息表); 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 FileNameExtensionFilter( 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(); 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接口,所创建的对象:基本信息查询时ManagerWindow类中最重要的成员之一,负责提供修改学生信息的界面。标明ModifySituation类的主要成员变量,方法以及和ManagerWindow类之间组合关系。1)成员变量pic是StudentPicture创建的对象,负责绘制学生的照片。录入,重置和选择照片是JButton创建的对象,这些按钮都将当前容器注册为自己的ActionEvent事件监视器.actionPerformed(ActionEvent)方法是InputStudent类实现ActionListener接口中的方法。Inquest创建的对话框时查询,打印文本照片,打印文本和打印照片按钮的ActionEvent事件监视器,当用户单击某个按钮时,对话框将执行actionPerformed(ActionEvent)方法进行相应的操作。2)方法 ModifySituation(File)是构造方法,用来创建基本信息修改对象,当创建该对象时,通过该构造方法的参数将ManagerWindow类中的file的引用传递给systemFile. actionPerformed(ActionEvent)方法是InputStudent类实现的ActionListener接口中的方法。InputStudent创建的容器时开始修改,录入修改,重置,选择照片按钮的ActionPerformed(ActionEvent)方法进行相应的操作。运行效果如下图所示:2.2.5 Delete类 Delete类是javax.swing包中JPanel容器的子类,并实现了ActionListen接口,所创建的对象:基本信息删除是ManagerWindow类中最重要的成员之一,负责提供删除学生信息的界面。标明Delete类的主要成员变量,方法以及和 ManagerWindow类之间组合关系1)成员变量 基本信息表是HashMap创建的散列映射,用于存储键值数据对,其中的键必须是一个String对象,键对应的值必须是Student对象。程序将从systemFile文件中读出曾写入到该文件中的HashMap对象,并且将这个对象的引用赋给基本信息表。删除是JButton创建的对象,该按钮将当前容器注册为自己的ActionEvent事件监视器。systemFile和imagePic是File声明的对象,其中systemFile存放的件引用ManagerWindow类中的file相同。2)方法Delete是构造方法,用来创建基本信息删除对象,当创建对象时,通过该构造方法的参数将ManagerWindow类中的file的引用传递给system.actionPerformed(ActionEvent)方法是InputStudent类实现ActionListener接口中的方法。Inquest创建的对话框时查询,打印文本照片,打印文本和打印照片按钮的ActionEvent事件监视器,当用户单击某个按钮时,对话框将执行actionPerformed(ActionEvent)方法进行相应的操作。运行效果如下图所示:源代码:public class Delete extends JPanel implements ActionListener HashMap 基本信息表=null; JTextField 学号,姓名,专业,年级,出生; JRadioButton 男,女; JButton 删除; ButtonGroup group=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File systemFile=null; public Delete(File file) systemFile=file; 学号=new JTextField(10); 删除=new JButton(删除); 学号.addActionListener(this); 删除.addActionListener(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(男); group.add(女); 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(性别:,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); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=删除|e.getSource()=学号) String number=; number=学号.getText(); if(number.length()0) try inOne=new FileInputStream(systemFile); inTwo=new ObjectInputStream(inOne); 基本信息表=(HashMap)inTwo.readObject(); 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); String m=确定要删除该学号及全部信息吗?; int ok=JOptionPane.showConfirmDialog(this,m,确认, JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) 基本信息表.remove(number); try outOne=new FileOutputStream(systemFile); outTwo=new ObjectOutputStream(outOne); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close(); 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); catch(Exception ee) else if(ok=JOptionPane.NO_OPTION) 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); else String warning=该学号不存在!; JOptionPane.showMessageDialog(this,warning,警告, JOptionPane.WARNING_MESSAGE); 学号.setText(null); else String warning=必须
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 任务书类


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!