java复习实验28实验报告_第1页
java复习实验28实验报告_第2页
java复习实验28实验报告_第3页
java复习实验28实验报告_第4页
java复习实验28实验报告_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 中北大学软件学院 实 验 报 告 专 业 软件工程 课程名称 JAVA面对对象程序设计 学 号 1414011529 姓 名 刘宇 辅导教师 薛海丽 成绩 实验日期实验时间1实验名称 学生成绩管理系统实验目的(1)、掌握面向对象程序开发思想。(2)、掌握使用图形用户界面对文件进行访问的程序开发机制。实验内容用面向对象程序设计思想完善之前的学生成绩管理系统,将之前学生成绩管理系统的业务逻辑事件和实验七设计的主窗体界面进行连接,完成图形用户界面下的学生成绩管理系统,要包含文件的读写。4、实验过程或源代码import javax.swing.*;import javax.swing.table.*

2、;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;public class StudentManager extends JFrame private Container currentContainer = this; private String title = 学生成绩管理系统; private Font headFont = new Font(黑体,Font.PLAIN,18); private File data = new File(data.txt); private Da

3、taTable dataModel = new DataTable(); private JTable dataTable = new JTable(dataModel); private JLabel extraLabel = new JLabel(); private JPanel welcomePanel = createWelcomePanel(); private JPanel insertPanel = createInsertPanel(); private JPanel displayPanel = createDisplayPanel(); private JPanel mo

4、difyPanel = createModifyPanel(); public StudentManager() this.setLocation(300, 300); this.setSize(475,450); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); this.setTitle(title); this.createMenu(); this.add(welcomePanel); if(!data.exists() try new FileWriter(data); catc

5、h (IOException e) this.setVisible(true); private void createMenu() JMenuBar menubar = new JMenuBar(); JMenu manageMenu = new JMenu(管理); menubar.add(manageMenu); JMenu helpMenu = new JMenu(帮助); menubar.add(helpMenu); JMenuItem m_add = new JMenuItem(添加); JMenuItem m_manage = new JMenuItem(查看); JMenuIt

6、em m_modify = new JMenuItem(修改); JMenuItem m_export = new JMenuItem(导出); JMenuItem m_exit = new JMenuItem(退出); manageMenu.add(m_add); manageMenu.add(m_modify); manageMenu.add(m_manage); manageMenu.addSeparator(); manageMenu.add(m_export); manageMenu.addSeparator(); manageMenu.add(m_exit); m_add.addA

7、ctionListener(new ActionListener() public void actionPerformed(ActionEvent e) resetPanel(insertPanel); ); m_modify.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) resetPanel(modifyPanel); ); m_manage.addActionListener(new ActionListener() public void actionPerformed

8、(ActionEvent e) resetPanel(displayPanel); ); m_export.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JFileChooser chooser = new JFileChooser(); int choose = chooser.showSaveDialog(currentContainer); if(choose=JFileChooser.APPROVE_OPTION) boolean flag = exportData(c

9、hooser.getSelectedFile(); if(flag) JOptionPane.showMessageDialog(currentContainer, 数据已经成功导出到指定文件!,导出成功,JOptionPane.PLAIN_MESSAGE); else JOptionPane.showMessageDialog(currentContainer, 无法导出到指定文件!,导出失败,JOptionPane.ERROR_MESSAGE); ); m_exit.addActionListener(new ActionListener() public void actionPerfo

10、rmed(ActionEvent e) System.exit(0); ); this.setJMenuBar(menubar); private void resetPanel(JPanel panel) this.setVisible(false); this.getContentPane().removeAll(); if(panel=displayPanel) loadData(); this.getContentPane().add(panel); this.setVisible(true); private JPanel createWelcomePanel() JPanel pa

11、nel = new JPanel(); JLabel title = new JLabel(学生成绩管理系统 ); title.setFont(headFont); panel.add(title); panel.setVisible(true); return panel; private JPanel createInsertPanel() JPanel panel = new JPanel(); panel.setLayout(null); panel.setFocusable(true); JLabel title = new JLabel(录入学生成绩); title.setFont

12、(headFont); panel.add(title); title.setBounds(175, 25, 120, 30); final String label = 学号,姓名,C语言,Java程序设计,高数,英语; final JTextField textField = new JTextFieldlabel.length; for(int i=0;ilabel.length;i+) JLabel titleLabel = new JLabel(labeli + :); titleLabel.setBounds(100, 80 + 40*i, 120, 30); panel.add(

13、titleLabel); textFieldi = new JTextField(20); textFieldi.setBounds(220, 80 + 40*i, 150, 24); panel.add(textFieldi); textField0.addFocusListener(new FocusListener() public void focusGained(FocusEvent e) public void focusLost(FocusEvent e) boolean flag = true; String s = ; if(!checkString(textField0.g

14、etText() flag = false; s = 学号不能为空!n; if(flag) if(!checkStudentNo(textField0.getText().trim() flag = false; s = 系统已存在该学号的信息!n; if(!flag) JOptionPane.showMessageDialog(currentContainer, s, 错误, JOptionPane.ERROR_MESSAGE); ); JButton addBtn = new JButton(录入信息); panel.add(addBtn); addBtn.setBounds(140, 3

15、40, 105, 30); addBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int choose = JOptionPane.showConfirmDialog(currentContainer, 确认要录入信息吗?,录入确认,JOptionPane.YES_NO_OPTION); if(choose=JOptionPane.NO_OPTION)return; boolean flag = true; String s = 录入过程中发生了错误!n; for(int

16、 i=0; i2; i+) if(!checkString(textFieldi.getText() flag = false; s = s + labeli + 未填写!n; for(int i=2; ilabel.length; i+) if(!checkInteger(textFieldi.getText() flag = false; s = s + labeli + 成绩未填写或输入不是整数!n; if(flag) Student student = new Student(); student.setNo(textField0.getText().trim(); if(!check

17、StudentNo(student.getNo() flag = false; s = s + 系统中已存在相同学号的信息!n; else student.setName(textField1.getText().trim(); student.setAsmScore(Integer.parseInt(textField2.getText().trim(); student.setJavaScore(Integer.parseInt(textField3.getText().trim(); student.setNetScore(Integer.parseInt(textField4.getT

18、ext().trim(); student.setOsScore(Integer.parseInt(textField5.getText().trim(); flag = insertData(student); if(flag) JOptionPane.showMessageDialog(currentContainer, 录入成功!,录入成功,JOptionPane.PLAIN_MESSAGE); clearForm(textField); else JOptionPane.showMessageDialog(currentContainer, s,录入失败,JOptionPane.ERR

19、OR_MESSAGE); ); JButton clearBtn = new JButton(清空); panel.add(clearBtn); clearBtn.setBounds(280, 340, 60, 30); clearBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) clearForm(textField); ); panel.setVisible(true); return panel; private JPanel createDisplayPanel()

20、 JPanel panel = new JPanel(); panel.setVisible(true); panel.add(new JLabel(学号:); final JTextField textField = new JTextField(10); panel.add(textField); panel.add(new JLabel(); JButton searchBtn = new JButton(查询); panel.add(searchBtn); searchBtn.addActionListener(new ActionListener() public void acti

21、onPerformed(ActionEvent e) String no = textField.getText(); if(!checkString(no) JOptionPane.showMessageDialog(currentContainer, 未输入学号!,查询失败,JOptionPane.ERROR_MESSAGE); return; if(checkStudentNo(no) JOptionPane.showMessageDialog(currentContainer, 不存在该学号的学生信息!,查询失败,JOptionPane.ERROR_MESSAGE); return;

22、loadStudentInfo(no); ); JButton deleteBtn = new JButton(删除); panel.add(deleteBtn); deleteBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String no = textField.getText(); if(!checkString(no) JOptionPane.showMessageDialog(currentContainer, 未输入学号!,删除失败,JOptionPane.

23、ERROR_MESSAGE); return; if(checkStudentNo(no) JOptionPane.showMessageDialog(currentContainer, 不存在该学号的学生信息!,删除失败,JOptionPane.ERROR_MESSAGE); return; int choose = JOptionPane.showConfirmDialog(currentContainer, 确定要删除学号为 + no + 的学生的信息吗?,删除确认,JOptionPane.YES_NO_OPTION); if(choose=JOptionPane.NO_OPTION)r

24、eturn; boolean flag = deleteData(no); if(!flag) JOptionPane.showMessageDialog(currentContainer, 删除过程中发生了错误!,删除失败,JOptionPane.ERROR_MESSAGE); return; resetPanel(displayPanel); JOptionPane.showMessageDialog(currentContainer, 已经删除了该学号学生的信息!,删除成功,JOptionPane.PLAIN_MESSAGE); textField.setText(); ); JButt

25、on allBtn = new JButton(查看所有信息); panel.add(allBtn); allBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) textField.setText(); loadData(); ); dataTable.setAutoscrolls(true); dataTable.setPreferredScrollableViewportSize(new Dimension(420, 300); panel.add(new JScroll

26、Pane(dataTable); panel.add(extraLabel); return panel; private void loadData() ArrayList dataList = displayDataList(); dataModel.update(dataList); dataModel.fireTableDataChanged(); dataTable.updateUI(); extraLabel.setText(当前系统中共有 + dataList.size() + 条信息); private void loadStudentInfo(String no) dataM

27、odel.update(selectStudent(no); dataModel.fireTableDataChanged(); dataTable.updateUI(); extraLabel.setText(当前正在查询学号为 + no + 的学生信息); private JPanel createModifyPanel() JPanel panel = new JPanel(); panel.setLayout(null); panel.setFocusable(true); JLabel title = new JLabel(修改学生成绩); title.setFont(headFon

28、t); panel.add(title); title.setBounds(175, 25, 120, 30); final String label = 学号,姓名,C语言,Java程序设计,高数,英语; final JTextField textField = new JTextFieldlabel.length; for(int i=0;ilabel.length;i+) JLabel titleLabel = new JLabel(labeli + :); titleLabel.setBounds(100, 80 + 40*i, 120, 30); panel.add(titleLab

29、el); textFieldi = new JTextField(20); textFieldi.setBounds(220, 80 + 40*i, 150, 24); panel.add(textFieldi); textField0.addFocusListener(new FocusListener() public void focusGained(FocusEvent e) public void focusLost(FocusEvent e) boolean flag = true; String s = ; if(!checkString(textField0.getText()

30、 flag = false; s = 学号不能为空!n; if(flag) Student student = selectStudent(textField0.getText().trim(); if(student = null) flag = false; s = 系统中不存在该学号的信息!n; else textField1.setText(student.getName(); textField2.setText(String.valueOf(student.getAsmScore(); textField3.setText(String.valueOf(student.getJav

31、aScore(); textField4.setText(String.valueOf(student.getNetScore(); textField5.setText(String.valueOf(student.getOsScore(); if(!flag) JOptionPane.showMessageDialog(currentContainer, s, 错误, JOptionPane.ERROR_MESSAGE); clearForm(textField); ); JButton modifyBtn = new JButton(修改信息); panel.add(modifyBtn)

32、; modifyBtn.setBounds(140, 340, 105, 30); modifyBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int choose = JOptionPane.showConfirmDialog(currentContainer, 确认要修改信息吗?,修改确认,JOptionPane.YES_NO_OPTION); if(choose=JOptionPane.NO_OPTION)return; boolean flag = true; S

33、tring s = ; if(!checkString(textField0.getText() flag = false; s = 学号不能为空!n; if(flag) Student student = selectStudent(textField0.getText().trim(); if(student = null) flag = false; s = 系统中不存在该学号的信息!n; else student.setName(textField1.getText().trim(); student.setAsmScore(Integer.parseInt(textField2.ge

34、tText().trim(); student.setJavaScore(Integer.parseInt(textField3.getText().trim(); student.setNetScore(Integer.parseInt(textField4.getText().trim(); student.setOsScore(Integer.parseInt(textField5.getText().trim(); flag = modifyData(student); if(flag) JOptionPane.showMessageDialog(currentContainer, 修

35、改成功!,修改成功,JOptionPane.PLAIN_MESSAGE); clearForm(textField); else JOptionPane.showMessageDialog(currentContainer, s,修改失败,JOptionPane.ERROR_MESSAGE); ); JButton clearBtn = new JButton(清空); panel.add(clearBtn); clearBtn.setBounds(280, 340, 60, 30); clearBtn.addActionListener(new ActionListener() public

36、 void actionPerformed(ActionEvent e) clearForm(textField); ); panel.setVisible(true); return panel; private boolean exportData(File file) try if(file.equals(data)return false; FileWriter writer = new FileWriter(file); BufferedReader reader = new BufferedReader(new FileReader(data); String s; while(s

37、 = reader.readLine()!=null) writer.write(s+rn); reader.close(); writer.close(); return true; catch(Exception e) return false; private boolean insertData(Student student) try String result = student.getNo() + , + student.getName() +, + student.getAsmScore() + , + student.getJavaScore() + , + student.

38、getNetScore() + , + student.getOsScore() + rn; FileWriter writer = new FileWriter(data, true); writer.write(result); /* 关闭对象 */ writer.close(); return true; catch(Exception e) /* 遇到异常即操作失败,返回false */ return false; private boolean modifyData(Student student) try BufferedReader reader = new BufferedRe

39、ader(new FileReader(data); String s,result = ; while(s = reader.readLine()!=null) String temp = s.split(,); if(student.getNo().equals(temp0) result = result + student.getNo() + , + student.getName() +, + student.getAsmScore() + , + student.getJavaScore() + , + student.getNetScore() + , + student.get

40、OsScore() + rn; else result = result + s + rn; reader.close(); FileWriter writer = new FileWriter(data); writer.write(result); writer.close(); return true; catch(Exception e) return false; private boolean deleteData(String no) try BufferedReader reader = new BufferedReader(new FileReader(data); Stri

41、ng s,result = ; while(s = reader.readLine()!=null) String temp = s.split(,); if(no.equals(temp0) continue; result = result + s + rn; reader.close(); FileWriter writer = new FileWriter(data); writer.write(result); writer.close(); return true; catch(Exception e) return false; private boolean checkStud

42、entNo(String no) try boolean flag = true; BufferedReader reader = new BufferedReader(new FileReader(data); String s; while(s=reader.readLine()!=null) if(no.equals(s.split(,)0) flag = false; break; reader.close(); return flag; catch(Exception e) return false; private boolean checkString(String text)

43、if(text.trim().length()=0) return false; return true; private boolean checkInteger(String text) if(text.trim().length()=0) return false; try Integer.parseInt(text); catch(Exception e) return false; return true; private void clearForm(JTextField textField) /* 清空传来的文本框数组的内容 */ for(int i=0; itextField.

44、length; i+) textFieldi.setText(); private Student selectStudent(String no) try BufferedReader reader = new BufferedReader(new FileReader(data); Student student = null; String s; while(s = reader.readLine()!=null) String temp = s.split(,); if(no.equals(temp0) student = new Student(); student.setNo(te

45、mp0); student.setName(temp1); student.setAsmScore(Integer.parseInt(temp2); student.setJavaScore(Integer.parseInt(temp3); student.setNetScore(Integer.parseInt(temp4); student.setOsScore(Integer.parseInt(temp5); break; reader.close(); return student; catch(Exception e) return null; private ArrayList d

46、isplayDataList() ArrayList dataList = new ArrayList(); try BufferedReader reader = new BufferedReader(new FileReader(data); String s; while(s=reader.readLine()!=null) try String temp = s.split(,); Student student = new Student(); student.setNo(temp0); student.setName(temp1); student.setAsmScore(Integer.parseInt(temp2); student.setJavaScore(Integer.parseInt(temp3); student.setNetScore(Integer.parseInt(temp4); student.setOsScore(Integer.parseInt(temp5); dataList.add(student); catch(Exception e) continue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论