




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 链条装配工客户满意度考核试卷及答案
- 房子转让协议书
- 租赁土地合同协议书
- 钛真空熔炼工知识盲区填补考核试卷及答案
- 锁具装配工资源协调与分配考核试卷及答案
- 电子绝缘材料上胶工安全技术规程
- 2025合同模板股权投资合作合同范本
- 2026届广东省云浮数学九年级第一学期期末复习检测试题含解析
- 《2025安徽省学校保卫劳动合同》
- 四川省绵阳市绵阳外国语学校2026届数学八上期末学业质量监测试题含解析
- 吉林省松原市四校2025~2026学年度下学期九年级第一次月考试卷 物理(含答案)
- 2025云南昆明元朔建设发展有限公司第一批收费员招聘20人考试参考试题及答案解析
- 破局向新 持续向上-2025年人力资源发展趋势报告-智联招聘北大国发院
- 仓库环境管理办法
- 2025年大模型章节练习考试题库
- 三年级数学《毫米的认识》教学设计
- 人工智能基础与应用课件 项目1 初探人工智能
- 2025-2030年中国智能电网行业市场发展前景及投资战略研究报告
- 微积分学-P.P.t-标准课件00-第1讲微积分的发展历程
- 导数的应用-函数的零点问题(5题型分类)-2025年高考数学一轮复习(解析版)
- 第十中学八年级上学期语文10月月考试卷(含答案)
评论
0/150
提交评论