《学生成绩管理系统》课程设计实验报告题 目 学生成绩管理系统 学 院 专 业 班 级 同组成员 编写日期 一、 课程设计目的 做这个小的学生成绩管理系统来加深对JAVA所学知识的巩固,以及学习JAVA与数据库的连接和JAVA的GUI图形界面二、 需求分析此系统实现如下系统功能:(1)使得学生的成绩管理工作更加清晰、条理化、自动化2)通过用户名和密码登录系统,查询学生基本资料,学生所学课程成绩,等功能 容易地完成学生信息的查询操作3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
三、系统模块设计用户登录 此系统可分为2个模块,教师管理模块和学生操作模块,期中教师又包括学生信息输入与学生成绩录入等;学生模块则包括学生成绩查询与学生信息录入查询操作等 系统流程图: 学生学生信息查询学生成绩查询教师学生成绩录入学生信息录入 四、数据库 1、学生表:FieldTypeNullKeyComment IDVarchar(10)——PRI用户名(学号)PwdVarchar(10)————密码NameChar(10)————姓名SexChar(10)————性别ClassChar(10)————班级CollageChar(10)————学院2、教师表FieldTypeNullKeyComment IDVarchar(10)——PRI用户名PwdVarchar(10)————密码3、成绩表FieldTypeNullKeyComment Sidchar(10)——PRI学号计算机网络char(10)————课程Linux操作系统char(10)————课程计算机专业英语char(10)————课程计算机信息技术char(10)————课程Java程序设计char(10)————课程数据库应用实训char(10)————课程高等数学char(10)————课程XMLchar(10)————课程五、E-R图附录:源代码1、用户登录界面import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class Systems extends JFrame implements ActionListener{ static Systems ss; JPanel panel = new JPanel(); JLabel label1 = new JLabel("输入姓名:"); JTextField name = new JTextField(); JLabel label2 = new JLabel("密 码:"); JPasswordField pwd = new JPasswordField(); JButton Enter = new JButton("登录"); JButton Exit = new JButton("退出"); String url = "E:\\mysql\\TM1.jpg"; ButtonGroup bgp = new ButtonGroup(); JRadioButton stu = new JRadioButton("学生"); JRadioButton tch = new JRadioButton("教师"); public Systems() { super("登录系统"); this.setResizable(false); JLabel img = new JLabel(new ImageIcon(url)); img.setBounds(0,0,500,125); panel.add(img); stu.setBounds(165,210,70,20); tch.setBounds(265,210,70,20); bgp.add(stu); bgp.add(tch); panel.add(stu); panel.add(tch); Enter.setBounds(150,250,80,20); Exit.setBounds(270,250,80,20); Enter.addActionListener(this); Exit.addActionListener(this); panel.add(Enter); panel.add(Exit); panel.setLayout(null); this.add(panel); label1.setBounds(135,130,100,25); panel.add(label1); name.setBounds(265,130,100,25); panel.add(name); label2.setBounds(135,165,100,25); panel.add(label2); pwd.setBounds(265,165,100,25); panel.add(pwd); this.setBounds(100,100,500,350); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(e.getSource()==Enter) { String username , password; username = name.getText(); password = new String(pwd.getPassword()); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException ce) { JOptionPane.showMessageDialog(ss,ce.getMessage()); } if(stu.isSelected()) { try { Connection con = DriverManager.getConnection("jdbc:odbc:shujuku","sa",""); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from STU"); while(rs.next()) { if(rs.getString("ID").equals(username)) if((rs.getString("Pwd").equals(password))) { JOptionPane.showMessageDialog(ss,"登陆成功"); Students stu = new Students(); } else { JOptionPane.showMessageDialog(ss,"登录失败"); } } rs.close(); stmt.close(); } catch (SQLException se) { JOptionPane.showMessageDialog(ss,se.getMessage()); } } else if(tch.isSelected()) { try { Connection con = DriverManager.getConnection("jdbc:odbc:shujuku","sa",""); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from TCH"); while(rs.next()) { if(rs.getString("ID").equals(username)) if((rs.getString("Pwd").equals(password))) { JOptionPane.showMessageDialog(ss,"登陆成功"); Teachers tch=new Teachers(); } else { JOptionPane.showMessageDialog(ss,"登录失败"); } } } catch (SQLException se) { JOptionPane.showMessageDialog(ss,se.getMessage()); } } } else { System.exit(0); } } public static void main(String[] args) { Systems sys = new Systems(); }}2、学生登录界面:import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Students extends JFrame implements ActionListener{ JMenuBar jmb = new JMenuBar(); JMenu Message = new JMenu("信息"); JMenu Score = new JMenu("成绩"); JMenuItem Item1 = new JMenuItem("插入"); JMenuItem Item2 = new JMenuItem("查询"); JMenuItem Item3 = new JMenuItem("查询"); public Students() { super("学生界面"); this.setSize(500,400); this.setVisible(true); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setJMenuBar(jmb); jmb.add(Message); jmb.add(Score); Message.add(Item1); Message.add(Item2); Score.add(Item3); Item1.addActionListener(this); Item2.addActionListener(this); Item3.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==Item1) { AddMsg ad = new AddMsg(); } else if(e.getSource()==Item2) { Serch ser = new Serch(); } else { Score so = new Score(); } } public static void main(String[] args) { Students stu = new Students(); }}3、教师登录界面:import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Teachers extends JFrame implements ActionListener{ JMenuBar bar = new JMenuBar(); JMenu menu1 = new JMenu("信息"); JMenu menu2 = new JMenu("成绩"); JMenuItem item1 = new JMenuItem("录入信息"); JMenuItem item2 = new JMenuItem("录入成绩"); JPanel jpl = new JPanel(); public Teachers() { super("教师界面"); this.setSize(500,300); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setJMenuBar(bar); this.add(jpl); jpl.setLayout(null); bar.add(menu1); bar.add(menu2); menu1.add(item1); menu2.add(item2); item1.addActionListener(this); item2.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==item1) { AddMsg msg = new AddMsg(); } else { Addscore as = new Addscore(); } } public static void main(String[] args) { Teachers tch = new Teachers(); }}4、学生用户添加界面:import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class AddMsg extends JFrame implements ActionListener{ static AddMsg s; /*添加学生信息控件*/ JPanel jpl = new JPanel(); JLabel label1 = new JLabel("添加基本信息",JLabel.CENTER); JLabel label2 = new JLabel("学号:",JLabel.CENTER); JLabel label3 = new JLabel("姓名:",JLabel.CENTER); JLabel label4 = new JLabel("性别:",JLabel.CENTER); JLabel label5 = new JLabel("班级:",JLabel.CENTER); JLabel label6 = new JLabel("学院:",JLabel.CENTER); JTextField num = new JTextField(2); JTextField nam = new JTextField(4); ButtonGroup bgp = new ButtonGroup(); JRadioButton man = new JRadioButton("男"); JRadioButton women = new JRadioButton("女"); JTextField clas = new JTextField(); JTextField scl = new JTextField(); JButton reset = new JButton("重置"); JButton addmsg = new JButton("添加"); public AddMsg() { super("添加学生信息"); this.setResizable(false); this.setSize(500,400); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.add(jpl); jpl.setLayout(null); addmsg.addActionListener(this); reset.addActionListener(this); /*插入面板*/ label1.setBounds(100,20,300,20); jpl.add(label1); label2.setBounds(100,50,70,20); jpl.add(label2); num.setBounds(190,50,140,20); jpl.add(num); label3.setBounds(100,90,70,20); jpl.add(label3); nam.setBounds(190,90,140,20); jpl.add(nam); label4.setBounds(100,130,70,20); jpl.add(label4); man.setBounds(190,130,60,20); women.setBounds(270,130,60,20); jpl.add(man); jpl.add(women); bgp.add(man); bgp.add(women); label5.setBounds(100,170,70,20); jpl.add(label5); clas.setBounds(190,170,140,20); jpl.add(clas); label6.setBounds(100,210,70,20); jpl.add(label6); scl.setBounds(190,210,140,20); jpl.add(scl); reset.setBounds(120,250,90,20); addmsg.setBounds(240,250,90,20); jpl.add(reset); jpl.add(addmsg); } public void actionPerformed(ActionEvent e) { if(e.getSource()==addmsg) { String sex; if(man.isSelected()) { sex="男"; } else { sex="女"; } try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException ce) { JOptionPane.showMessageDialog(s,ce.getMessage()); } try { Connection con = DriverManager.getConnection("jdbc:odbc:shujuku","sa",""); Statement stmt = con.createStatement(); String str = "insert into STU(ID , Pwd , Name , Sex , Class , Collage)values('"+num.getText()+"','"+"123','"+nam.getText()+"','"+sex+"','"+clas.getText()+"','"+scl.getText()+"')";// int a = stmt.executeUpdate("insert into STU(ID , Pwd , Name , Sex , Class , Collage)values('"+num.getText()+"','"+"12345678','"+nam.getText()+"','"+sex+"','"+clas.getText()+"','"+scl.getText()+"')"); System.out.println(str); int a = stmt.executeUpdate(str); if(a==1) { JOptionPane.showMessageDialog(s,"已成功添加"); } else { JOptionPane.showMessageDialog(s,"添加失败"); } stmt.close(); } catch (SQLException se) { JOptionPane.showMessageDialog(s,se.getMessage()); } } else { num.setText(""); nam.setText(""); clas.setText(""); scl.setText(""); num.requestFocus(); } } public static void main(String[] args) { AddMsg amg = new AddMsg(); }}5、学生成绩添加:import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class Addscore extends JFrame implements ActionListener{ static Addscore ss; JLabel[] label = {new JLabel("学号:") , new JLabel("计算机网络:") , new JLabel("Linux操作系统:") , new JLabel("计算机专业英语:") , new JLabel("计算机信息技术基础:") , new JLabel("Java程序设计:") , new JLabel("数据库应用实训教程:") , new JLabel("高等数学:") , new JLabel("XML:")}; JTextField[] txt = {new JTextField() , new JTextField() , new JTextField() , new JTextField() , new JTextField() ,new JTextField() , new JTextField() ,new JTextField() ,new JTextField() }; JButton add = new JButton("添加"); JButton reset = new JButton("重置"); JPanel jpl = new JPanel(); JLabel title = new JLabel("添加学生成绩" , JLabel.CENTER); Font f = new Font("黑体" , Font.BOLD , 16 ); int s = 100; public Addscore() { super("添加学生信息"); this.setResizable(false); this.setSize(500,600); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); this.add(jpl); add.addActionListener(this); reset.addActionListener(this); jpl.setLayout(null); title.setBounds(150,40,200,20); title.setFont(f); title.setForeground(Color.red); jpl.setBackground(Color.LIGHT_GRAY); jpl.add(title); for(int i = 0 ; i