精华内容
下载资源
问答
  • 旅游信息管理系统 界面漂亮

    热门讨论 2010-03-02 22:05:04
    旅游信息管理系统 实用 界面友好 有数据库
  • Java学生成绩管理系统界面设计(包括登录界面及界面切换),内含学生成绩管理系统各用户应有功能模块设计。 登录界面 package Panel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event...

    Java学生成绩管理系统界面设计(包括登录界面及界面切换),内含学生成绩管理系统各用户应有功能模块设计。

    登录界面

    package Panel;

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.*;

    /*

    • 登录界面
      */
      public class Login{
      JFrame frame;
      ImageIcon logo;
      JLabel jl1,jl2,jl3;
      JTextField name;
      JPasswordField password;
      JRadioButton stu,tea,adm;
      ButtonGroup group;
      JButton b1;
      public Login() {
      frame=new JFrame(“学生成绩管理系统”);
      frame.setLayout(new FlowLayout());

       //登录界面布局
       logo=new ImageIcon("C:/Users/雷晨宇/eclipse-workspace/Student_Grade/logo.png");
       jl1=new JLabel(logo);
       frame.add(jl1);
       
       jl2=new JLabel("账号");
       jl2.setPreferredSize(new Dimension(150,30));
       frame.add(jl2);
       
       name=new JTextField();
       name.setPreferredSize(new Dimension(250, 30));
       frame.add(name);
       
       jl3=new JLabel("密码");
       jl3.setPreferredSize(new Dimension(150,30));
       frame.add(jl3);
       
       password=new JPasswordField();
       password.setPreferredSize(new Dimension(250, 30));
       frame.add(password);
       
       JLabel null1=new JLabel();
       null1.setPreferredSize(new Dimension(140,30));
       frame.add(null1);
       
       //学生,教师,管理员单选框设置
       group=new ButtonGroup();
       stu=new JRadioButton("学生");
       tea=new JRadioButton("教师");
       adm=new JRadioButton("管理员");
       frame.add(stu);group.add(stu);
       frame.add(tea);group.add(tea);
       frame.add(adm);group.add(adm);
       
       JLabel null2=new JLabel();
       null2.setPreferredSize(new Dimension(140,30));
       frame.add(null2);
       
       b1=new JButton("登录");
       frame.add(b1);
       
       //登录时选择登陆用户:学生,教师,管理员
       b1.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		if(stu.isSelected()) {
       			if(name.getText().equals("1")&&new String(password.getPassword()).equals("1")) {
       				JOptionPane.showMessageDialog(null,"登录成功");
       				new StudentPanel(name.getText());
       				frame.dispose();
       			}else {
       				JOptionPane.showMessageDialog(null, "登录失败");
       				name.setText("");password.setText("");
       			}
       		}else if(tea.isSelected()) {
       			if(name.getText().trim().equals("1")&&new String(password.getPassword()).equals("1")) {
       				JOptionPane.showMessageDialog(null,"登录成功");
       				new TeacherPanel(name.getText());
       				frame.dispose();
       			}else {
       				JOptionPane.showMessageDialog(null, "登录失败");
       				name.setText("");password.setText("");
       			}
       		}else if(adm.isSelected()) {
       			if(name.getText().trim().equals("1")&&new String(password.getPassword()).equals("1")) {
       				JOptionPane.showMessageDialog(null,"登录成功");
       				new AdmPanel();
       				frame.dispose();
       			}else {
       				JOptionPane.showMessageDialog(null, "登录失败");
       				name.setText("");password.setText("");
       			}
       		}
       		
       	}
       		
       });
      
       frame.setSize(540,300);
       frame.setVisible(true);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      

      }

    }

    学生用户界面

    package Panel;

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.*;
    import javax.swing.table.DefaultTableCellRenderer;

    /*

    • 学生用户界面
      */
      public class StudentPanel {
      JFrame frame;
      JLabel l1,l2,l3,l4,l5,l6;
      JTextField tf1,tf2,tf3,tf4,tf5,tf6;
      JButton b1,b2,b3,b4,b5;
      public StudentPanel(String stuid){
      frame=new JFrame(“学生成绩管理系统”);
      frame.setLayout(new BorderLayout());

       //学生用户界面布局
       tf1=new JTextField();tf1.setText("欢迎"+stuid+"同学进入学生成绩管理系统");
       tf1.setBackground(Color.CYAN);tf1.setEditable(false);
       JPanel p1=new JPanel(new FlowLayout(FlowLayout.RIGHT));
       p1.add(tf1);
       
       b1=new JButton("显示个人信息");
       b2=new JButton("查询单科成绩");
       b3=new JButton("查询全部成绩");
       b4=new JButton("修改密码");
       b5=new JButton("退出");
       JPanel p2=new JPanel(new FlowLayout());
       p2.add(b1);p2.add(b2);p2.add(b3);
       p2.add(b4);p2.add(b5);
       JPanel p=new JPanel(new GridLayout(2,1));
       p.add(p1);p.add(p2);
       frame.add(p,BorderLayout.NORTH);
       
       
       //显示,修改学生基本信息
       b1.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("学号");tf1=new JTextField();	
       		l2=new JLabel("姓名");tf2=new JTextField();		
       		l3=new JLabel("性别");tf3=new JTextField();		
       		l4=new JLabel("出生日期");tf4=new JTextField();		
       		l5=new JLabel("专业");tf5=new JTextField();
       		l6=new JLabel("班级");tf6=new JTextField();
       		
       		l1.setPreferredSize(new Dimension(150,30));
       		tf1.setPreferredSize(new Dimension(250,30));
       		l2.setPreferredSize(new Dimension(150,30));
       		tf2.setPreferredSize(new Dimension(250,30));
       		l3.setPreferredSize(new Dimension(150,30));
       		tf3.setPreferredSize(new Dimension(250,30));
       		l4.setPreferredSize(new Dimension(150,30));
       		tf4.setPreferredSize(new Dimension(250,30));
       		l5.setPreferredSize(new Dimension(150,30));
       		tf5.setPreferredSize(new Dimension(250,30));
       		l6.setPreferredSize(new Dimension(150,30));
       		tf6.setPreferredSize(new Dimension(250,30));
       		
       		//学生不可修改学号,专业,班级,文本框设置不可编辑
       		tf1.setBackground(Color.LIGHT_GRAY);tf1.setEditable(false);
       		tf5.setBackground(Color.LIGHT_GRAY);tf5.setEditable(false);
       		tf6.setBackground(Color.LIGHT_GRAY);tf6.setEditable(false);
       		
       		b1=new JButton("保存");b2=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(l1);ShowStudent.add(tf1);
       		ShowStudent.add(l2);ShowStudent.add(tf2);
       		ShowStudent.add(l3);ShowStudent.add(tf3);
       		ShowStudent.add(l4);ShowStudent.add(tf4);
       		ShowStudent.add(l5);ShowStudent.add(tf5);
       		ShowStudent.add(l6);ShowStudent.add(tf6);
      
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(140,30));
       		ShowStudent.add(null1);
       		
       		ShowStudent.add(b1);ShowStudent.add(b2);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//保存修改信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"成功保存");
       			}
       		});
       		
       		//返回学生用户主界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
      
       //查询单科成绩,输入课程名,显示成绩
       b2.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("课程名");tf1=new JTextField();
       		l2=new JLabel("成绩");tf2=new JTextField();
       		
       		l1.setPreferredSize(new Dimension(150,30));
       		tf1.setPreferredSize(new Dimension(250,30));
       		l2.setPreferredSize(new Dimension(150,30));
       		tf2.setPreferredSize(new Dimension(250,30));
       		
       		b1=new JButton("查询");b2=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(l1);ShowStudent.add(tf1);
       		ShowStudent.add(l2);ShowStudent.add(tf2);
      
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(140,30));
       		ShowStudent.add(null1);
       		
       		ShowStudent.add(b1);ShowStudent.add(b2);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//查询单科成绩
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				if(tf1.getText().equals("")) {
       					JOptionPane.showMessageDialog(null,"输入课程不存在,请重新输入");
       				}
       			}
       		});
       		
       		//返回学生用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
       
       //查询成绩单,显示所有成绩
       b3.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//添加滑动窗口
       		JScrollPane jscrollpane=new JScrollPane();
       		
       		//添加表格
       		Object[] columnNames=new Object[]{"课程号","课程名","成绩"};//列名
       		Object[][] rowData=new Object[100][3];//行数,列数
       		JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		
       		b1=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(jscrollpane);
       		ShowStudent.add(b1);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//返回学生用户界面
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
      
       //修改密码
       b4.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("请输入原密码");tf1=new JTextField();
       		l2=new JLabel("请输入新密码");JPasswordField tf2=new JPasswordField();
       		l3=new JLabel("请再次输入新密码");JPasswordField tf3=new JPasswordField();
       		
       		l1.setPreferredSize(new Dimension(150,30));
       		tf1.setPreferredSize(new Dimension(250,30));
       		l2.setPreferredSize(new Dimension(150,30));
       		tf2.setPreferredSize(new Dimension(250,30));
       		l3.setPreferredSize(new Dimension(150,30));
       		tf3.setPreferredSize(new Dimension(250,30));
       		
       		b1=new JButton("确定");b2=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(l1);ShowStudent.add(tf1);
       		ShowStudent.add(l2);ShowStudent.add(tf2);
       		ShowStudent.add(l3);ShowStudent.add(tf3);
      
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(140,30));
       		ShowStudent.add(null1);
       		
       		ShowStudent.add(b1);ShowStudent.add(b2);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//确定修改
       		b1.addActionListener(new ActionListener() {
       			@SuppressWarnings("deprecation")
       			public void actionPerformed(ActionEvent e) {
       				//输入均为空提示
       				if(tf1.getText().equals("") || tf2.getText().equals("") || tf3.getText().equals("")) {
       					JOptionPane.showMessageDialog(null,"输入信息不完整,请重新输入");
       				}
       				//新密码验证一致,修改成功
       				else if(tf2.getText().equals(tf3.getText())) {
       					JOptionPane.showMessageDialog(null,"密码修改成功");
       					tf1.setText("");tf2.setText("");tf3.setText("");
       				}
       				//新密码验证不一致,修改失败
       				else {
       					JOptionPane.showMessageDialog(null,"两次输入不一致,请重新输入");
       					tf2.setText("");tf3.setText("");
       				}
       			}
       		});
       		
       		//返回学生用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
       
       //退出,返回登录界面
       b5.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		new Login();
       		frame.setVisible(false);
       	}
       });
       frame.setSize(540,650);
       frame.setVisible(true);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      

      }

    }

    教师用户界面

    package Panel;

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.*;
    import javax.swing.table.DefaultTableCellRenderer;

    /*

    • 学生用户界面
      */
      public class StudentPanel {
      JFrame frame;
      JLabel l1,l2,l3,l4,l5,l6;
      JTextField tf1,tf2,tf3,tf4,tf5,tf6;
      JButton b1,b2,b3,b4,b5;
      public StudentPanel(String stuid){
      frame=new JFrame(“学生成绩管理系统”);
      frame.setLayout(new BorderLayout());

       //学生用户界面布局
       tf1=new JTextField();tf1.setText("欢迎"+stuid+"同学进入学生成绩管理系统");
       tf1.setBackground(Color.CYAN);tf1.setEditable(false);
       JPanel p1=new JPanel(new FlowLayout(FlowLayout.RIGHT));
       p1.add(tf1);
       
       b1=new JButton("显示个人信息");
       b2=new JButton("查询单科成绩");
       b3=new JButton("查询全部成绩");
       b4=new JButton("修改密码");
       b5=new JButton("退出");
       JPanel p2=new JPanel(new FlowLayout());
       p2.add(b1);p2.add(b2);p2.add(b3);
       p2.add(b4);p2.add(b5);
       JPanel p=new JPanel(new GridLayout(2,1));
       p.add(p1);p.add(p2);
       frame.add(p,BorderLayout.NORTH);
       
       
       //显示,修改学生基本信息
       b1.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("学号");tf1=new JTextField();	
       		l2=new JLabel("姓名");tf2=new JTextField();		
       		l3=new JLabel("性别");tf3=new JTextField();		
       		l4=new JLabel("出生日期");tf4=new JTextField();		
       		l5=new JLabel("专业");tf5=new JTextField();
       		l6=new JLabel("班级");tf6=new JTextField();
       		
       		l1.setPreferredSize(new Dimension(150,30));
       		tf1.setPreferredSize(new Dimension(250,30));
       		l2.setPreferredSize(new Dimension(150,30));
       		tf2.setPreferredSize(new Dimension(250,30));
       		l3.setPreferredSize(new Dimension(150,30));
       		tf3.setPreferredSize(new Dimension(250,30));
       		l4.setPreferredSize(new Dimension(150,30));
       		tf4.setPreferredSize(new Dimension(250,30));
       		l5.setPreferredSize(new Dimension(150,30));
       		tf5.setPreferredSize(new Dimension(250,30));
       		l6.setPreferredSize(new Dimension(150,30));
       		tf6.setPreferredSize(new Dimension(250,30));
       		
       		//学生不可修改学号,专业,班级,文本框设置不可编辑
       		tf1.setBackground(Color.LIGHT_GRAY);tf1.setEditable(false);
       		tf5.setBackground(Color.LIGHT_GRAY);tf5.setEditable(false);
       		tf6.setBackground(Color.LIGHT_GRAY);tf6.setEditable(false);
       		
       		b1=new JButton("保存");b2=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(l1);ShowStudent.add(tf1);
       		ShowStudent.add(l2);ShowStudent.add(tf2);
       		ShowStudent.add(l3);ShowStudent.add(tf3);
       		ShowStudent.add(l4);ShowStudent.add(tf4);
       		ShowStudent.add(l5);ShowStudent.add(tf5);
       		ShowStudent.add(l6);ShowStudent.add(tf6);
      
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(140,30));
       		ShowStudent.add(null1);
       		
       		ShowStudent.add(b1);ShowStudent.add(b2);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//保存修改信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"成功保存");
       			}
       		});
       		
       		//返回学生用户主界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
      
       //查询单科成绩,输入课程名,显示成绩
       b2.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("课程名");tf1=new JTextField();
       		l2=new JLabel("成绩");tf2=new JTextField();
       		
       		l1.setPreferredSize(new Dimension(150,30));
       		tf1.setPreferredSize(new Dimension(250,30));
       		l2.setPreferredSize(new Dimension(150,30));
       		tf2.setPreferredSize(new Dimension(250,30));
       		
       		b1=new JButton("查询");b2=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(l1);ShowStudent.add(tf1);
       		ShowStudent.add(l2);ShowStudent.add(tf2);
      
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(140,30));
       		ShowStudent.add(null1);
       		
       		ShowStudent.add(b1);ShowStudent.add(b2);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//查询单科成绩
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				if(tf1.getText().equals("")) {
       					JOptionPane.showMessageDialog(null,"输入课程不存在,请重新输入");
       				}
       			}
       		});
       		
       		//返回学生用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
       
       //查询成绩单,显示所有成绩
       b3.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//添加滑动窗口
       		JScrollPane jscrollpane=new JScrollPane();
       		
       		//添加表格
       		Object[] columnNames=new Object[]{"课程号","课程名","成绩"};//列名
       		Object[][] rowData=new Object[100][3];//行数,列数
       		JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		
       		b1=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(jscrollpane);
       		ShowStudent.add(b1);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//返回学生用户界面
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
      
       //修改密码
       b4.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("请输入原密码");tf1=new JTextField();
       		l2=new JLabel("请输入新密码");JPasswordField tf2=new JPasswordField();
       		l3=new JLabel("请再次输入新密码");JPasswordField tf3=new JPasswordField();
       		
       		l1.setPreferredSize(new Dimension(150,30));
       		tf1.setPreferredSize(new Dimension(250,30));
       		l2.setPreferredSize(new Dimension(150,30));
       		tf2.setPreferredSize(new Dimension(250,30));
       		l3.setPreferredSize(new Dimension(150,30));
       		tf3.setPreferredSize(new Dimension(250,30));
       		
       		b1=new JButton("确定");b2=new JButton("退出");
       		
       		JPanel ShowStudent=new JPanel();
       		ShowStudent.setLayout(new FlowLayout());
       		
       		ShowStudent.add(l1);ShowStudent.add(tf1);
       		ShowStudent.add(l2);ShowStudent.add(tf2);
       		ShowStudent.add(l3);ShowStudent.add(tf3);
      
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(140,30));
       		ShowStudent.add(null1);
       		
       		ShowStudent.add(b1);ShowStudent.add(b2);
       		frame.add(ShowStudent,BorderLayout.CENTER);
       		
       		//确定修改
       		b1.addActionListener(new ActionListener() {
       			@SuppressWarnings("deprecation")
       			public void actionPerformed(ActionEvent e) {
       				//输入均为空提示
       				if(tf1.getText().equals("") || tf2.getText().equals("") || tf3.getText().equals("")) {
       					JOptionPane.showMessageDialog(null,"输入信息不完整,请重新输入");
       				}
       				//新密码验证一致,修改成功
       				else if(tf2.getText().equals(tf3.getText())) {
       					JOptionPane.showMessageDialog(null,"密码修改成功");
       					tf1.setText("");tf2.setText("");tf3.setText("");
       				}
       				//新密码验证不一致,修改失败
       				else {
       					JOptionPane.showMessageDialog(null,"两次输入不一致,请重新输入");
       					tf2.setText("");tf3.setText("");
       				}
       			}
       		});
       		
       		//返回学生用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				ShowStudent.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       	}
       });
       
       //退出,返回登录界面
       b5.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		new Login();
       		frame.setVisible(false);
       	}
       });
       frame.setSize(540,650);
       frame.setVisible(true);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      

      }

    }

    管理员用户界面

    package Panel;

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.*;
    import javax.swing.table.DefaultTableCellRenderer;

    /*

    • 管理员用户界面
      */
      public class AdmPanel {
      JFrame frame;
      JPanel p1,p2,p3;
      JLabel l1,l2,l3,l4,l5,l6;
      JTextField tf1,tf2,tf3,tf4,tf5,tf6;
      JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12;
      public AdmPanel(){
      frame=new JFrame(“学生成绩管理系统”);
      frame.setLayout(new BorderLayout());

       //管理员用户界面布局
       tf1=new JTextField();tf1.setText("欢迎进入学生成绩管理系统");
       tf1.setBackground(Color.CYAN);tf1.setEditable(false);
       p1=new JPanel(new FlowLayout(FlowLayout.RIGHT));
       p1.add(tf1);
       
       b1=new JButton("添加学生");b2=new JButton("添加教师");b3=new JButton("添加课程");
       b4=new JButton("查询学生");b5=new JButton("查询教师");b6=new JButton("查询课程");
       b7=new JButton("删除学生");b8=new JButton("删除教师");b9=new JButton("删除课程");
       b10=new JButton("查询成绩");b11=new JButton("成绩汇总");b12=new JButton("退出");
       p2=new JPanel(new GridLayout(2,6));
       p2.add(b1);p2.add(b2);p2.add(b3);
       p2.add(b4);p2.add(b5);p2.add(b6);
       p2.add(b7);p2.add(b8);p2.add(b9);
       p2.add(b10);p2.add(b11);p2.add(b12);
       JPanel p=new JPanel(new GridLayout(2,1));
       p.add(p1);p.add(p2);
       frame.add(p,BorderLayout.NORTH);
       
       //添加学生信息
       b1.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("专业");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("班级");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		l3=new JLabel("学号");l3.setPreferredSize(new Dimension(200,30));
       		tf3=new JTextField();tf3.setPreferredSize(new Dimension(300,30));
       		p3.add(l3);p3.add(tf3);
       		
       		l4=new JLabel("姓名");l4.setPreferredSize(new Dimension(200,30));
       		tf4=new JTextField();tf4.setPreferredSize(new Dimension(300,30));
       		p3.add(l4);p3.add(tf4);
       		
       		l5=new JLabel("性别");l5.setPreferredSize(new Dimension(200,30));
       		tf5=new JTextField();tf5.setPreferredSize(new Dimension(300,30));
       		p3.add(l5);p3.add(tf5);
       		
       		l6=new JLabel("出生日期");l6.setPreferredSize(new Dimension(200,30));
       		tf6=new JTextField();tf6.setPreferredSize(new Dimension(300,30));
       		p3.add(l6);p3.add(tf6);
       		
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(50,30));
       		p3.add(null1);
       		
       		b1=new JButton("添加");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//确定添加
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"添加成功");
       				}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
       
       //添加教师信息
       b2.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("教师工号");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("教师姓名");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		l3=new JLabel("性别");l3.setPreferredSize(new Dimension(200,30));
       		tf3=new JTextField();tf3.setPreferredSize(new Dimension(300,30));
       		p3.add(l3);p3.add(tf3);
       		
       		l4=new JLabel("出生日期");l4.setPreferredSize(new Dimension(200,30));
       		tf4=new JTextField();tf4.setPreferredSize(new Dimension(300,30));
       		p3.add(l4);p3.add(tf4);
       		
       		l5=new JLabel("所带课程");l5.setPreferredSize(new Dimension(200,30));
       		tf5=new JTextField();tf5.setPreferredSize(new Dimension(300,30));
       		p3.add(l5);p3.add(tf5);
       		
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(50,30));
       		p3.add(null1);
       		
       		b1=new JButton("添加");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//确定添加
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"添加成功");
       				}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //添加课程信息
       b3.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("课程号");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("课程名");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		l3=new JLabel("授课教师");l3.setPreferredSize(new Dimension(200,30));
       		tf3=new JTextField();tf3.setPreferredSize(new Dimension(300,30));
       		p3.add(l3);p3.add(tf3);
       		
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(50,30));
       		p3.add(null1);
       		
       		b1=new JButton("添加");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//确定添加
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"添加成功");
       				}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //查询学生信息
       b4.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("专业");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("班级");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		l3=new JLabel("学生学号");l3.setPreferredSize(new Dimension(200,30));
       		tf3=new JTextField();tf3.setPreferredSize(new Dimension(300,30));
       		p3.add(l3);p3.add(tf3);
       		
       		JScrollPane jscrollpane=new JScrollPane();
       		Object[] columnNames=new Object[]{"专业","班级","学号","姓名","性别","年龄"};//列名
       		Object[][] rowData=new Object[20000][6];//行数,列数
       		 JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		p3.add(jscrollpane);
       		
       		b1=new JButton("查询");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入查询学生信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				
       			}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //查询教师信息
       b5.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("按教师工号查询");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("按课程查询");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		JScrollPane jscrollpane=new JScrollPane();
       		
       		Object[] columnNames=new Object[]{"教师工号","姓名","所带课程"};//列名
       		Object[][] rowData=new Object[1000][3];//行数,列数
       		JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		p3.add(jscrollpane);
       		
       		b1=new JButton("查询");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入查询教师信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				
       			}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //查询课程信息
       b6.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("课程号");l1.setPreferredSize(new Dimension(150,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(250,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("课程名");l2.setPreferredSize(new Dimension(150,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(250,30));
       		p3.add(l2);p3.add(tf2);
       		
       		l3=new JLabel("专业");l3.setPreferredSize(new Dimension(150,30));
       		tf3=new JTextField();tf3.setPreferredSize(new Dimension(250,30));
       		p3.add(l3);p3.add(tf3);
      
       		l4=new JLabel("教师工号");l4.setPreferredSize(new Dimension(150,30));
       		tf4=new JTextField();tf4.setPreferredSize(new Dimension(250,30));
       		p3.add(l4);p3.add(tf4);
       		
       		JScrollPane jscrollpane=new JScrollPane();
       		
       		Object[] columnNames=new Object[]{"课程号","课程名","代课教师号","代课教师","上课专业"};//列名
       		Object[][] rowData=new Object[500][5];//行数,列数
       		 JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		p3.add(jscrollpane);
       		
       		b1=new JButton("查询");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入查询课程信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				
       			}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
       
       //删除学生信息
       b7.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("学生学号");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("学生姓名");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		l3=new JLabel("学生专业");l3.setPreferredSize(new Dimension(200,30));
       		tf3=new JTextField();tf3.setPreferredSize(new Dimension(300,30));
       		p3.add(l3);p3.add(tf3);
       		
       		l4=new JLabel("学生班级");l4.setPreferredSize(new Dimension(200,30));
       		tf4=new JTextField();tf4.setPreferredSize(new Dimension(300,30));
       		p3.add(l4);p3.add(tf4);
       		
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(50,30));
       		p3.add(null1);
       		
       		b1=new JButton("验证信息");b2=new JButton("删除");b3=new JButton("退出");
       		p3.add(b1);p3.add(b2);p3.add(b3);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入显示学生信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				
       			}
       		});
      
       		//根据输入删除学生信息
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"已删除");
       				tf1.setText("");tf2.setText("");
       				tf3.setText("");tf4.setText("");
       			}
       		});
       		
       		//返回管理员用户界面
       		b3.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //删除教师信息
       b8.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("教师工号");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("教师姓名");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(50,30));
       		p3.add(null1);
       		
       		b1=new JButton("验证信息");b2=new JButton("删除");b3=new JButton("退出");
       		p3.add(b1);p3.add(b2);p3.add(b3);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入显示教师信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				
       			}
       		});
      
       		//根据输入删除教师信息
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"已删除");
       				tf1.setText("");tf2.setText("");
       			}
       		});
       		
       		//返回管理员用户界面
       		b3.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //删除课程信息
       b9.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("课程号");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
       		
       		l2=new JLabel("课程名");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
       		
       		JLabel null1=new JLabel();
       		null1.setPreferredSize(new Dimension(50,30));
       		p3.add(null1);
       		
       		b1=new JButton("验证信息");b2=new JButton("删除");b3=new JButton("退出");
       		p3.add(b1);p3.add(b2);p3.add(b3);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入显示课程信息
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				
       			}
       		});
      
       		//根据输入删除课程信息
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				JOptionPane.showMessageDialog(null,"已删除");
       				tf1.setText("");tf2.setText("");
       			}
       		});
       		
       		//返回管理员用户界面
       		b3.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //按需求查询成绩
       b10.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		l1=new JLabel("请输入专业班级");l1.setPreferredSize(new Dimension(200,30));
       		tf1=new JTextField();tf1.setPreferredSize(new Dimension(300,30));
       		p3.add(l1);p3.add(tf1);
      
       		l2=new JLabel("请输入课程名");l2.setPreferredSize(new Dimension(200,30));
       		tf2=new JTextField();tf2.setPreferredSize(new Dimension(300,30));
       		p3.add(l2);p3.add(tf2);
      
       		JScrollPane jscrollpane=new JScrollPane();
       		Object[] columnNames=new Object[]{"课程号","课程名","学生学号","学生姓名","学生成绩"};//列名
       		Object[][] rowData=new Object[300][5];//行数,列数
       		 JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		p3.add(jscrollpane);
       		
       		b1=new JButton("显示成绩");b2=new JButton("退出");
       		p3.add(b1);p3.add(b2);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//根据输入显示学生成绩
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				if(tf1.getText().equals("") && tf2.getText().equals("")) {
       					JOptionPane.showMessageDialog(null,"信息不完整,请重新输入");
       					tf1.setText("");
       				}
       			}
       		});
       		
       		//返回管理员用户界面
       		b2.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //显示所有学生成绩,并按一定规则排序
       b11.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		p2.setVisible(false);
       		
       		p3=new JPanel(new FlowLayout());
       		
       		//设置标签,文本框,按钮布局
       		JScrollPane jscrollpane=new JScrollPane();
       		Object[] columnNames=new Object[]{"课程号","课程名","学生学号","学生姓名","学生成绩"};//列名
       		Object[][] rowData=new Object[300][5];//行数,列数
       		JTable table=new JTable(rowData,columnNames);
       		jscrollpane.setViewportView(table);
       		table.setRowHeight(25);
       		DefaultTableCellRenderer r = new DefaultTableCellRenderer();    
       		r.setHorizontalAlignment(JLabel.CENTER);   
       		table.setDefaultRenderer(Object.class,r);
       		p3.add(jscrollpane);
       		
       		b1=new JButton("退出");
       		p3.add(b1);
       		frame.add(p3,BorderLayout.CENTER);
       		
       		//返回管理员用户界面
       		b1.addActionListener(new ActionListener() {
       			public void actionPerformed(ActionEvent e) {
       				p3.setVisible(false);
       				p1.setVisible(true);p2.setVisible(true);
       			}
       		});
       		
       	}
       });
      
       //返回登录界面
       b12.addActionListener(new ActionListener() {
       	public void actionPerformed(ActionEvent e) {
       		new Login();
       		frame.setVisible(false);
       	}
       });
       frame.setSize(550,750);
       frame.setVisible(true);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      

      }

    }

    展开全文
  • JavaGUI实现超市信息管理系统界面(基于Oracle数据库)

    万次阅读 多人点赞 2018-12-06 23:00:32
    这次为大家带来的是基于Oracle数据库下的GUI超市信息管理系统,因还处于Java学习阶段,代码如有缺陷,还请多多指教。话不多说,下面是本次管理系统的主要框架。 本项目模拟真实的超市管理模式,以管理员为面向对象,...

    1.项目设计
    这次为大家带来的是基于Oracle数据库下的GUI超市信息管理系统,因还处于Java学习阶段,代码如有缺陷,还请多多指教。话不多说,下面是本次管理系统的主要框架。

    本项目模拟真实的超市管理模式,以管理员为面向对象,所要实现的功能是基本的增删改查,具体实现步骤如下:

    管理员登录
    进入欢迎界面
    进入仓库管理界面
    管理员进行增删改查

    1.1管理员登录界面Login
    在这里插入图片描述
    在这里插入图片描述

    此界面的重点在于对三个按钮的监听:

    • 登录按钮logbt:对用户名、密码输入正确与否的判断
    • 重置按钮resetbt:用户对当前输入内容进行重置
    • 退出按钮exitbt:用户退出登录(这里设置直接退出系统)

    部分代码如下:

    //定义一个登录界面Login
    
    package cn.itcast.SuperMarketTest.view;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    @SuppressWarnings("serial")
    public class Login extends JFrame implements ActionListener{//继承窗体类
    
    	 private JLabel username_label;//定义用户名标签
    	 private JLabel pwd_label;//定义密码标签
    	 private JLabel permit_label;//定义权限标签
    	 private JTextField text1;
    	 private JPasswordField text2;//定义文本框对象
    	 private JRadioButton jrb1;//定义权限按钮
    	 private Button logbt;
    	 private Button resetbt;//定义按钮对象
    	 private Button exitbt;//定义按钮对象
    	 private ButtonGroup bg;
    	
    	 final String username="admin"; 
    	 final String pwd="aaaaaa";
    	 JPanel panel;
    	
    	public Login()
    	{
    	   this.setSize(700, 600);//设置窗体的大小
    	   GUITools.center(this);
    	   this.setTitle("超市管理系统");//设置窗体标题
    	   this.setLayout(null);//将窗体的默认布局方式设置为无布局方式
    		
    		username_label = new JLabel("用户名");
    	    pwd_label = new JLabel("密    码");
    		permit_label = new JLabel("权    限");
    		
    		
    		logbt = new Button("登录");
    		resetbt = new Button("重置");
    		exitbt = new Button("退出");
    
    		jrb1=new JRadioButton("管理员"); 
    		bg=new ButtonGroup(); 
    		bg.add(jrb1); 
    		jrb1.setSize(100,20);
    		jrb1.setLocation(263,290);
    		jrb1.setSelected(true); //初始页面默认选择权限为管理员
    		
    		
    	    //设置标签的参数
    	    username_label.setSize(60, 37);
    	    username_label.setLocation(190,150);
    	   
    	    
    	    pwd_label.setSize(60, 37);
    	    pwd_label.setLocation(190,215);
    	
    	    
    	    permit_label.setSize(130, 40);
    	    permit_label.setLocation(190,280);
    	
    	    
    	    text1=new JTextField();
    	    text1.setSize(180,30);
    	    text1.setLocation(270, 155);
    	    text1.setFont(new Font("宋体",Font.PLAIN,20));
    
    	    
    	    text2=new JPasswordField();
    	    text2.setSize(180,30);
    	    text2.setLocation(270, 220);
    	    text2.setFont(new Font("宋体",Font.PLAIN,20));
    
    	    
    	    logbt.setSize(45,30);
    	    logbt.setLocation(230,350);
    
    	    
    	    resetbt.setSize(45,30);
    	    resetbt.setLocation(310,350);
    
    	    
    	    exitbt.setSize(45,30);
    	    exitbt.setLocation(390,350);
    
    	    
    		logbt.addActionListener(this);
    		resetbt.addActionListener(this);
    		exitbt.addActionListener(this);
    		
    		
    		this.add(username_label);
    		this.add(pwd_label);
    		this.add(permit_label);
    		this.add(text1);
    		this.add(text2);
    		this.add(jrb1);
    		this.add(logbt);
    		this.add(resetbt);
    		this.add(exitbt);
    		
    		this.setVisible(true);//设置窗体可见
    	}
    
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		
    		if(e.getActionCommand()=="登录") 
    		  { 
    			adminlogin();        //连接到管理员界面方法
    		  }
    		
    		else if(e.getActionCommand()=="重置") { 
    			clear();
    		}
    		
    	    else if(e.getActionCommand()=="退出") { 
    	    	System.exit(0);
    	}
    		
    		}
    	@SuppressWarnings("deprecation")
    	public void adminlogin() 
    	 { 
    	  if(username.equals(text1.getText())&&pwd.equals(text2.getText())) 
    	  { 
    
    	    JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE); 
    	    clear();   
    	    dispose();   
    	   
    	    this.remove(username_label);
    		this.remove(pwd_label);
    		this.remove(permit_label);
    		this.remove(text1);
    		this.remove(text2);
    		this.remove(jrb1);
    		this.remove(logbt);
    		this.remove(resetbt);
    		this.remove(exitbt);
    	    
    	    JPanel panel = new Enter();
    	    
    		//创建欢迎面板
    		panel.setLocation(0,0);
    		this.add(panel);
    		this.repaint();
    		this.setVisible(true);
    	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置当关闭窗口时,保证JVM也退出 
    	   
    	  }else if(text1.getText().isEmpty()&&text2.getText().isEmpty()) 
    	  { 
    	   JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE); 
    	  }else if(text1.getText().isEmpty()) 
    	  { 
    	   JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE); 
    	  }else if(text2.getText().isEmpty()) 
    	  { 
    	   JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE); 
    	  }else 
    	  { 
    	   JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE); 
    	   clear(); //清空输入框 
    	  } 
    	 } 
    
    
    	//清空文本框和密码框 
    	 public void clear() 
    	 { 
    	  text1.setText(""); 
    	  text2.setText(""); 
    	 } 
    	 
    }
    
    
    

    2.1欢迎界面Enter
    在这里插入图片描述
    欢迎界面是个过渡界面实现的内容相对较少,可写可不写

    本界面 主要针对按钮进行了部分优化并设置了面板的背景显示 用户通过点击“进入系统”按钮进入到“管理界面”

    部分代码如下:

    //定义欢迎界面Enter
    
    package cn.itcast.SuperMarketTest.view;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    //超市管理系统界面
    @SuppressWarnings("serial")
    public class Enter extends JPanel  implements ActionListener {
    	
    	private JLabel label1 = new  JLabel("超市管理系统欢迎您!");
    	private ImageIcon image=new ImageIcon("images/4.png");
    	private JLabel label2 = new JLabel(image);
    	private JButton bt1=new JButton("进入系统");
    	JPanel panel;
    	   
    	public  Enter(){
    		//设置属性
    		this.setSize(700,600);
    		GUITools.center(this);
    		this.setLayout(null);
    		this.setVisible(true);
    		
    		label2.setSize(700,600);
    		GUITools.center(this);
    		this.add(label2);
    		
    		label1.setBounds(220,40,500,300);
    		label1.setFont(new Font("宋体",Font.PLAIN,25));		
    		this.add(label1);
    		this.setVisible(true);
    		
    		bt1.setBounds(295,465,100,35);
    		bt1.setFont(new Font("宋体",Font.PLAIN,16));
    		bt1.setBackground(Color.white);
    		//bt1.setContentAreaFilled(false); //透明度
    		bt1.setFocusPainted(false); //去掉按钮中文体的边框
    		bt1.setBorderPainted(false); //去掉边框
    		bt1.addActionListener(this);
    		this.add(bt1);
    		
    		this.setVisible(true);
    	}
    
    			
    	@Override
    	public void actionPerformed(ActionEvent e) {
    			if(panel!=null)
    			{
    				this.remove(panel);
    			}
    			if(e.getActionCommand()=="进入系统"){
    					
    				this.removeAll();
    				showAdminDialog();
    				this.setSize(700,600);
    				this.repaint();
    				this.setVisible(true);
    			}
    		}
    		public JPanel showAdminDialog(){
    			new AdminDialogController().setVisible(true);
    			return panel;
    		}
    }
    

    3.1仓库管理系统界面
    在这里插入图片描述

    本界面为管理系统的核心界面,实现了管理员对整个货物系统的增删改查操作
    货物列表显示目前仓库的货物基本信息

    添加Add():输入相应的属性参数,若用户对后台在库的货物信息进行操作则弹窗提示并要求用户重新输入
    修改Update():输入要修改的参数,若用户对后台没在库的货物信息进行操作则弹窗提示并要求用户重新输入
    查询Find():输入货物编号查询相关信息
    删除Delete():删除相应编号的一条信息记录

    部分代码如下:

    
        //定义管理窗口类AbstractAdminDialog
        
        package cn.itcast.SuperMarketTest.view;
        
        import java.awt.Font;
        import java.awt.Frame;
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
        import javax.swing.*;
        
        //管理窗口类
        @SuppressWarnings("serial")
        public abstract class AbstractAdminDialog extends JDialog{
        	//定义界面使用到的组件
        	//成员变量
        	
    	private JLabel tableLabel = new JLabel("货物列表");//标题
    	private JScrollPane tablePane = new JScrollPane();//滚动视口
    	protected JTable table = new JTable();//货物列表 
    	private JLabel numLabel = new JLabel("货物编号");
    	private JLabel nameLabel = new JLabel("货物名称");
    	private JLabel priceLabel = new JLabel("货物单价");
    	private JLabel countLabel = new JLabel("货物数量");
    	//添加功能组件
    	protected JTextField addnumText = new JTextField();//添加编号文本框
    	protected JTextField addnameText = new JTextField();//添加名称文本框
    	protected JTextField addpriceText = new JTextField();//添加单价文本框
    	protected JTextField addcountText = new JTextField();//添加货物数量文本框
    	private JButton addBtn = new JButton("添加");
    	
    	//修改功能组件
    	protected JTextField updatenumText = new JTextField();//修改编号文本框
    	protected JTextField updatenameText = new JTextField();//修改名称文本框
    	protected JTextField updatepriceText = new JTextField();//修改单价文本框
    	protected JTextField updatecountText = new JTextField();//修改货物数量文本框
    	
    	private JButton updateBtn = new JButton("修改");
    	//删除功能组件
    	
    	protected JTextField delnumText = new JTextField();//删除编号文本框
    	private JButton delBtn = new JButton("删除");
    	
    	//查询功能组件
    	protected JTextField searchnumText = new JTextField();//查询编号文本框
    	private JButton findBtn = new JButton("查询");
    	
    	//构造方法
    	public AbstractAdminDialog(Frame owner,boolean modal){
    		super(owner,modal);
    		this.init();
    		this.addComponent();
    		this.addListener();
    	}
    	public AbstractAdminDialog() {
    		this(null,true);
    	}
    	//初始化
    	private void init() {
    		this.setTitle("超市管理系统");
    		this.setSize(700, 600);
    		this.setLocation(150, 30);
    		GUITools.center(this);
    		this.setResizable(false);
    		
    	}
    	//添加组件
    	private void addComponent() {
    		this.setLayout(null);
    		//表格标题
    		tableLabel.setBounds(320, 15, 100, 20);//设置位置大小
    		tableLabel.setFont(new Font("宋体",Font.PLAIN,16));//字体
    		this.add(tableLabel);
    		//表格
    		table.getTableHeader().setReorderingAllowed(false);//列不可移动
    		table.getTableHeader().setResizingAllowed(false);//不可拉动表格
    		table.setEnabled(false);//不可更改数据
    		tablePane.setBounds(30,50,630,270);
    		tablePane.setViewportView(table);
    		this.add(tablePane);
    		//字段标题
    		numLabel.setBounds(30, 330, 100, 30);//放置四个标签
    		numLabel.setFont(new Font("宋体",Font.PLAIN,16));
    		nameLabel.setBounds(150, 330, 100, 30);
    		nameLabel.setFont(new Font("宋体",Font.PLAIN,16));
    		priceLabel.setBounds(280, 330, 100, 30);
    		priceLabel.setFont(new Font("宋体",Font.PLAIN,16));
    		countLabel.setBounds(410, 330, 100, 30);
    		countLabel.setFont(new Font("宋体",Font.PLAIN,16));
    		this.add(numLabel);
    		this.add(nameLabel);
    		this.add(priceLabel);
    		this.add(countLabel);
    		//增加
    		addnumText.setBounds(30, 360, 80, 30);
    		addnameText.setBounds(150, 360, 80, 30);
    		addpriceText.setBounds(280, 360, 80, 30);
    		addcountText.setBounds(410, 360, 80, 30);
    		
    		this.add(addnumText);
    		this.add(addnameText);
    		this.add(addpriceText);
    		this.add(addcountText);
    		
    		addBtn.setBounds(540, 360, 80, 30);
    		addBtn.setFont(new Font("宋体",Font.PLAIN,16));
    		this.add(addBtn);
    		//修改
    		updatenumText.setBounds(30, 410, 80, 30);
    		updatenameText.setBounds(150, 410, 80, 30);
    		updatepriceText.setBounds(280, 410, 80, 30);
    		updatecountText.setBounds(410, 410, 80, 30);
    		
    		this.add(updatenumText);
    		this.add(updatenameText);
    		this.add(updatepriceText);
    		this.add(updatecountText);
    		
    		updateBtn.setBounds(540, 410, 80, 36);
    		updateBtn.setFont(new Font("宋体",Font.PLAIN,16));
    		this.add(updateBtn);
    		
    		//删除
    		delnumText.setBounds(30, 510, 80, 36);//510
    		this.add(delnumText);
    		
    		delBtn.setBounds(540, 510, 80, 36);//510
    		delBtn.setFont(new Font("宋体",Font.PLAIN,16));
    		this.add(delBtn);
    		
    		//查询
    		searchnumText.setBounds(30, 460, 80, 36);//460
    		this.add(searchnumText);
    		
    		findBtn.setBounds(540, 460, 80, 36);//460
    		findBtn.setFont(new Font("宋体",Font.PLAIN,16));
    		this.add(findBtn);
    	}
    	//添加监听器
    	private void addListener() {
    		//添加按钮监听
    		addBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e){
    				//调用修改方法
    				addGoodsItem();
    				
    			}
    		});
    		//修改按钮监听
    		updateBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e){
    				//调用修改方法
    				updateGoodsItem();
    			}
    		});
    		//删除按钮监听
    		delBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e){
    				//调用修改方法
    				delGoodsItem();
    			}
    		});
    		
    		//查询按钮监听
    		findBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e){
    				//调用修改方法
    				//queryGoodsItem();
    				findGoodsItem();
    			}
    		});
    	}
    	//添加
    	public abstract void addGoodsItem();
    	//修改
    	public abstract void updateGoodsItem();
    	//删除
    	public abstract void delGoodsItem();
    	//输出全部表内容
    	public abstract void queryGoodsItem();
    	//查询
    	public abstract void findGoodsItem();
    }
    
    
        //定义管理员界面操作类AdminDialogController
        
        package cn.itcast.SuperMarketTest.view;
        import java.awt.Frame;
        import java.sql.Connection;
        import java.sql.ResultSet;
        import java.sql.Statement;
        import java.util.ArrayList;
        import javax.swing.JOptionPane;
        import javax.swing.table.DefaultTableModel;
        import javax.swing.table.TableModel;
        
        
        //管理员界面操作
        @SuppressWarnings("serial")
        public class AdminDialogController extends AbstractAdminDialog{
        	private AdminService adminService = new AdminService();
        	public AdminDialogController(){
        		super();
        	}
        	public AdminDialogController(Frame owner,boolean modal){
        		super(owner,modal);
        		//创建对象时展示数据
        		queryGoodsItem();
        	}
        	//查询方法
        	public void queryGoodsItem(){
        		//定义表格头
        		String[] thead = {"货物编号","货物名称","货物单价","货物数量"};
        		//调用adminService 的查询业务
        		ArrayList<GoodsInfo> dataList = new AdminService().queryAllGoodsItem();
        		String[][] tbody = list2Array(dataList);
        		TableModel dataModal = new DefaultTableModel(tbody,thead);
        		table.setModel(dataModal);
        	}
        	//集合数据转为二维数组
        	public String[][] list2Array(ArrayList<GoodsInfo> list){
        		String[][] tbody = new String[list.size()][4];
        		for(int i = 0;i<list.size();i++){
        			GoodsInfo goodsItem = list.get(i);
        			tbody[i][0] = goodsItem.getNum();
        			tbody[i][1] = goodsItem.getName();
        			tbody[i][3] = goodsItem.getPrice();
        			tbody[i][2] = goodsItem.getCount();
        		}
        		return tbody;
        	}
        	//查询方法
        	public void findGoodsItem(){
        		String findnum = searchnumText.getText();
        		
    		boolean findSuccess = adminService.findGoodsItem(findnum);
    		if(findSuccess){
    			queryGoodsItem();
    			clear();
    		}else{
    			JOptionPane.showMessageDialog(this, "超市库存中无此货物编号,请检查数据!");
    			clear();
    		}
    	}
    	
    	
    	//添加方法
    	public void addGoodsItem(){
    		String addnum = addnumText.getText();
    		String addcap = addnameText.getText();
    		String addtype = addpriceText.getText();
    		String addcount = addcountText.getText();
    		
    		//调用adminService 的添加服务
    		boolean addSuccess = adminService.addGoodsItem(addnum, addcap, addtype, addcount);
    		if(addSuccess){
    			//添加成功后刷新
    			queryGoodsItem();
    			clear();
    		}else{
    			//未添加成功提示
    			JOptionPane.showMessageDialog(this, "货物编号不能重复,请检查数据!");
    			clear();
    		}
    	}
    	//修改方法
    	public void updateGoodsItem(){
    		String updatenum = updatenumText.getText();
    		String updatecap = updatenameText.getText();
    		String updatetype = updatepriceText.getText();
    		String updatecount = updatecountText.getText();
    		//调用adminService 的添加服务
    		boolean updateSuccess = adminService.updateGoodsItem(updatenum, updatecap, updatetype, updatecount);
    		if(updateSuccess){
    			//修改成功后刷新
    			queryGoodsItem();
    			clear();
    		}else{
    			//未修改成功提示
    			JOptionPane.showMessageDialog(this, "超市库存中无此货物编号,请检查数据!");
    			clear();
    		}
    	}
    	//删除方法
    	public void delGoodsItem(){
    		String delnum = delnumText.getText();
    		boolean delSuccess = adminService.delGoodsItem(delnum);
    		if(delSuccess){
    			queryGoodsItem();
    			clear();
    		}else{
    			JOptionPane.showMessageDialog(this, "超市库存中无此货物编号,请检查数据!");
    			clear();
    		}
    	}	
    	//清除数据
    	public void clear(){
    		addnumText.setText("");
    		addnameText.setText("");
    		addpriceText.setText("");
    		addcountText.setText("");
    		updatenameText.setText("");
    		updatenumText.setText("");
    		updatepriceText.setText("");
    		updatecountText.setText("");
    		delnumText.setText("");
    		searchnumText.setText("");
    		
    	}
    }
    
        //定义管理业务类AdminService
        
        package cn.itcast.SuperMarketTest.view;
        import java.util.*;
        
        //管理员业务类
        public class AdminService {
        	private AdminDao adminDao = new AdminDao();
        	
    	public boolean findGoodsItem(String num){
    		ArrayList<GoodsInfo> data = queryAllGoodsItem();
    		//使用输入编号与所有数据对比
    		for(int i = 0;i<data.size();i++){
    			GoodsInfo goodsItem = data.get(i);
    			//若存在编号,则查询成功
    			if(num.equals(goodsItem.getNum())){
    				return true;
    			}	
    		}
    		return false;
    		}
    	
    	//查询业务
    	public ArrayList<GoodsInfo> queryAllGoodsItem(){
    		//调用Dao层的获取所有数据方法获取所有数据
    		ArrayList<GoodsInfo> data = adminDao.queryAllData();
    		return data;
    	}
    	//查询业务
    	public boolean queryGoodsItem(String findnum){
    		//调用Dao层的获取所有数据方法获取所有数据
    		ArrayList<GoodsInfo> data = queryAllGoodsItem();
    		//使用输入编号与所有数据对比
    		for(int i = 0;i<data.size();i++){
    			GoodsInfo goodsItem = data.get(i);
    			//若存在相同编号的数据,则可以删除
    			if(findnum.equals(goodsItem.getNum())){
    				//调用Dao层的删除指定编号数据方法
    				adminDao.del(findnum);
    				return true;
    			}
    		}
    		return false;
    	}
    	//添加业务
    	public boolean addGoodsItem(String num,String name,String price,String count){
    		ArrayList<GoodsInfo> data = queryAllGoodsItem();
    		//使用输入编号与所有数据对比
    		for(int i = 0;i<data.size();i++){
    			GoodsInfo goodsItem = data.get(i);
    			//若存在重复编号则添加不成功
    			if(num.equals(goodsItem.getNum())){
    				return false;
    			}
    		}
    		//若没有重复编号,将数据封装为GoodsItem对象
    		GoodsInfo thisGoodsItem = new GoodsInfo(num,name,price,count);
    		adminDao.add(thisGoodsItem);
    		return true;
    		}
    	//修改业务
    	public boolean updateGoodsItem(String num,String name,String price,String count){
    		ArrayList<GoodsInfo> data = queryAllGoodsItem();
    		//使用输入编号与所有数据对比
    		for(int i = 0;i<data.size();i++){
    			GoodsInfo goodsItem = data.get(i);
    			//若存在相同编号的数据,则可以修改
    			if(num.equals(goodsItem.getNum())){
    				//调用Dao层的删除指定编号数据方法
    				adminDao.del(num);
    				//若没有重复编号,将数据封装为GoodsItem对象
    				GoodsInfo thisGoodsItem = new GoodsInfo(num,name,price,count);
    				adminDao.add(thisGoodsItem);
    				return true;
    			}
    		}
    		return false;
    	}
    	//删除业务
    	public boolean delGoodsItem(String delNum){
    		ArrayList<GoodsInfo> data = queryAllGoodsItem();
    		//使用输入编号与所有数据对比
    		for(int i = 0;i<data.size();i++){
    			GoodsInfo goodsItem = data.get(i);
    			//若存在相同编号的数据,则可以删除
    			if(delNum.equals(goodsItem.getNum())){
    				//调用Dao层的删除指定编号数据方法
    				adminDao.del(delNum);
    				return true;
    			}
    		}
    		return false;
    	}
    }
    
        //直连数据库类JDBCUtils 
        package cn.itcast.SuperMarketTest.view;
        
        import java.sql.*;
        
        //加载数据库驱动,并建立数据库连接
        	public class JDBCUtils {
        		public static Connection getConnection() throws SQLException,ClassNotFoundException{
        		Class.forName("oracle.jdbc.driver.OracleDriver");
        		// 加载jdbc连接oracle的驱动
        		String url="jdbc:oracle:thin:@localhost:1521:orcl";
    		String username="scott";
    		String password="admin";
    		Connection conn=DriverManager.getConnection(url,username,password);
    		conn.createStatement();
    		// 用上面定义好的连接字符串,用户名和密码来创建数据库连接对象
    		System.out.println("数据库连接成功");
    		return conn;
    		}
    	//关闭数据库连接,释放资源
    		public static void release(Statement stmt,Connection conn){
    			if(stmt!=null)
    			{
    				try{
    					stmt.close();
    				}catch (SQLException e){
    					e.printStackTrace();
    				}
    				stmt=null;
    			}
    			if(conn!=null){
    				try{
    					conn.close();
    				}catch (SQLException e){
    					e.printStackTrace();
    				}
    				conn=null;
    			}
    		}
    		public static void release(ResultSet rs,Statement stmt,Connection conn){
    			if(rs!=null){
    				try{
    					rs.close();
    				}catch(SQLException e){
    					e.printStackTrace();
    				}
    				rs=null;
    			}
    			release(stmt,conn);
    		}
    
    	
        }  
        //对货物信息表进行操作的数据访问类
            
        package cn.itcast.SuperMarketTest.view;
        
        import java.sql.*;
        import java.util.ArrayList;
        
        public class AdminDao {
        	//获取所有数据
        	public ArrayList<GoodsInfo> queryAllData(){
        		Connection conn = null;
        		Statement stmt = null;
        		ResultSet rs = null;
        		ArrayList<GoodsInfo> list = new ArrayList<GoodsInfo>();
        		try{
        			//获得数据的连接
        			conn = JDBCUtils.getConnection();
        			//获得Statement 对象
        			stmt = conn.createStatement();
        			//发送SQL语句
        			String sql = "SELECT * FROM cangku";
        			rs = stmt.executeQuery(sql);
        			//处理结果集
        			while(rs.next()){
        				GoodsInfo sgoods = new GoodsInfo();
        				sgoods.setNum(rs.getString("cnumber"));
        				sgoods.setName(rs.getString("cname"));
        				sgoods.setPrice(rs.getString("cprice"));
        				sgoods.setCount(rs.getString("ccount"));
        
        				list.add(sgoods);
        			}
        			return list;
        } catch (Exception e){
        			e.printStackTrace();
        		} finally {
        			JDBCUtils.release(rs,stmt,conn);//关闭数据库
        		}
        		return null;
        	}
        	//查询数据
        	public void find(String cnumber){	
        		Connection conn=null;
        		Statement stmt=null;
        		ResultSet rs=null;
        		try{
        			//获得数据的连接
        			conn = JDBCUtils.getConnection();
        			//获得Statement对象
        			stmt = conn.createStatement();
        			//发送SQL语句
        			String sql = "select * from cangku where cnumber='"+cnumber+"'";
        			int num = stmt.executeUpdate(sql);
        			if(num>0){
        				System.out.println("查询数据成功!");
        			}
        		}catch(Exception e){
        			e.printStackTrace();
        		}finally{
        			JDBCUtils.release(rs,stmt,conn);
        		}
        		
        	}
        	//添加数据
    	public void add(GoodsInfo mr){
    		Connection conn=null;
    		Statement stmt=null;
    		ResultSet rs=null;
    		try{
    			//获得数据的连接
    			conn = JDBCUtils.getConnection();
    			//获得Statement对象
    			stmt = conn.createStatement();
    			//发送SQL语句
    			String sql = "INSERT INTO cangku VALUES('"+mr.getNum()+"','"+mr.getName()+"','"+mr.getPrice()+"','"+mr.getCount()+"')";
    			int num = stmt.executeUpdate(sql);
    			if(num>0){
    				System.out.println("插入数据成功!");
    			}
    		}catch(Exception e){
    				e.printStackTrace();
    			}finally{
    				JDBCUtils.release(rs,stmt,conn);
    			}
    		
    	}
    	//删除数据
    	public void del(String delNumber){
    		Connection conn=null;
    		Statement stmt=null;
    		ResultSet rs=null;
    		try{
    			//获得数据的连接
    			conn = JDBCUtils.getConnection();
    			//获得Statement对象
    			stmt = conn.createStatement();
    			//首先执行查询语句判断商品存在
    			rs=stmt.executeQuery("select * from cangku where cnumber='"+delNumber+"'");
    			System.out.println(delNumber);
    			if (rs.next()){
    				//将删除的数据放入历史表
    				//String strSQL = "insert into cangku_hs(cnumber,cname,cprice,ccount) values('"+rs.getString(1)+"','"+rs.getString(2)+"','"+rs.getString(3)+"','"+rs.getString(4)+"')";
    				//System.out.println(strSQL.toString());
    				//stmt.execute(strSQL.toString());
    				//发送SQL语句
    				String sql = "DELETE FROM cangku WHERE cnumber='"+delNumber+"'";
    				System.out.println(sql.toString());
    				int num = stmt.executeUpdate(sql);
    				if(num>0){
    					System.out.println("删除数据成功!");
    				}
    			}
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
    		finally{
    			JDBCUtils.release(rs,stmt,conn);
    		}
    	}
    	//修改数据
    	public void update(GoodsInfo mr){
    		Connection conn=null;
    		Statement stmt=null;
    		ResultSet rs=null;
    		try{
    			//获得数据的连接
    			conn = JDBCUtils.getConnection();
    			//获得Statement对象
    			stmt = conn.createStatement();
    			//发送SQL语句
    			String sql = "UPDATE cangku set cname='"+mr.getNum()+"',cprice="+mr.getPrice()+"',ccount='"+mr.getPrice()+"' where cnumber='"+mr.getCount()+"'";
    			int num = stmt.executeUpdate(sql);
    			if(num>0){
    				System.out.println("插入数据成功!");
    			}
    		}catch(Exception e){
    				e.printStackTrace();
    			}finally{
    				JDBCUtils.release(rs,stmt,conn);
    			}
    	}
        }    
        
        //创建超市货物数据模型GoodsInfo
        
        package cn.itcast.SuperMarketTest.view;
        
        //超市货物数据模型
        public class GoodsInfo {
        	//超市货物的私有属性
        	private String num;//货物名称
        	private String name;//货物名称
        	private String price;//货物单价
        	private String count;//货物数量
        	//构造方法
        	public GoodsInfo(){
        		
        	}
        	public GoodsInfo(String num,String name,String price,String count){
        		//有参构造方法
        		super();
        		this.num=num;
        		this.name=name;
        		this.price=price;
        		this.count=count;
    	}
    	
    	public String getNum(){
    		return num;
    	}
    	public void  setNum(String num){
    		this.num = num;
    	}
    	
    	public String getName(){
    		return name;
    	}
    	public void  setName(String name){
    		this.name = name;
    	}
    	
    	public String getPrice(){
    		return price;
    	}
    	public void  setPrice(String price){
    		this.price = price;
    	}
    	
    	public String getCount() {
    		return count;
    	}
    	public void setCount(String count) {
    		this.count = count;
    	}
    }	
    

    Oracle数据库的相关创建在此就不多做赘述,本次超市管理系统代码还需进行优化,功能也不够完善,虽然GUI现在用的很少,但目前阶段多做练习也有一定的好处。至此,基于Oracle数据库下的JavaGUI实现的超市管理系统的所有内容均展示完毕,请多多指教。

    展开全文
  • Python题目:学生信息管理系统-高级版(图形界面+MySQL数据库) 使用图形界面显示,选用list、tuple、dictionary或map等数据结构,操作数据库存储X个学生的三门课的成绩(机器学习、Python程序设计、研究生英语)...

    Python题目:学生信息管理系统-高级版(图形界面+MySQL数据库)

           使用图形界面显示,选用list、tuple、dictionary或map等数据结构,操作数据库存储X个学生的三门课的成绩(机器学习、Python程序设计、研究生英语),并实现以下功能:

    1.添加学生信息
    2.修改学生信息
    3.删除学生
    4.添加学生的成绩
    5.修改学生成绩
    6.按姓名或者学号查找学生,显示学生信息及三门课的成绩,以及排名
    7.学生成绩统计(每门课的平均分、最高分、最低分)

    代码里的注释很清楚了,这里不做讲解了,有任何问题可以评论提问。 

    注意:

    • 数据表不存在则创建表,但自动创建的表是空白的,管理员用户名和密码需要自己数据库中添加一个(也可以运行文章最后的sql语句),为什么会出现这个问题,因为这是个课堂作业,当时没有设计好,现在懒得再改代码了╮(╯﹏╰)╭.......
    • 数据库在代码中(代码里有两处需要修改数据库 用户名、密码 的地方第66行第490行),配置为:
    # 打开数据库连接 连接测试
    db = pymysql.connect("localhost", "root", "root", "student")

           分别表示  主机名:localhost,用户名:root,密码:root,数据库名:student 


    下面是界面的截图

     

     管理员操作界面,拥有增删改查功能,甚至拥有排序功能φ(>ω<*) ,快点击标签栏试试

     

     代码:

    #!/usr/bin/python3
    
    import pymysql
    from tkinter import ttk
    import tkinter as tk
    import tkinter.font as tkFont
    from tkinter import * # 图形界面库
    import tkinter.messagebox as messagebox # 弹窗
    
    
    class StartPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁子界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('学生信息管理系统')
    		self.window.geometry('300x470') # 这里的乘是小x
    
    		label = Label(self.window, text="学生信息管理系统", font=("Verdana", 20))
    		label.pack(pady=100)  # pady=100 界面的长度
    
    		Button(self.window, text="管理员登陆", font=tkFont.Font(size=16), command=lambda: AdminPage(self.window), width=30, height=2,
    			   fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    		Button(self.window, text="学生登陆", font=tkFont.Font(size=16), command=lambda: StudentPage(self.window), width=30,
    			   height=2,fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    		Button(self.window, text="关于", font=tkFont.Font(size=16), command=lambda: AboutPage(self.window), width=30, height=2,
    			   fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    		Button(self.window, text='退出系统', height=2, font=tkFont.Font(size=16), width=30, command=self.window.destroy,
    			   fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    
    		self.window.mainloop() # 主消息循环
    
    
    #管理员登陆页面
    class AdminPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('管理员登陆页面')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='管理员登陆', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack()
    
    		Label(self.window, text='管理员账号:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.admin_username = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory')
    		self.admin_username.pack()
    
    		Label(self.window, text='管理员密码:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.admin_pass = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory', show='*')
    		self.admin_pass.pack()
    
    		Button(self.window, text="登陆", width=8, font=tkFont.Font(size=12), command=self.login).pack(pady=40)
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back).pack()
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def login(self):
    		print(str(self.admin_username.get()))
    		print(str(self.admin_pass.get()))
    		admin_pass = None
    
    		# 数据库操作 查询管理员表
    		db = pymysql.connect("localhost", "root", "root", "student")  # 打开数据库连接
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM admin_login_k WHERE admin_id = '%s'" % (self.admin_username.get())  # SQL 查询语句
    		try:
    		# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				admin_id = row[0]
    				admin_pass = row[1]
    				# 打印结果
    				print("admin_id=%s,admin_pass=%s" % (admin_id, admin_pass))
    		except:
    			print("Error: unable to fecth data")
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    		db.close()  # 关闭数据库连接
    
    		print("正在登陆管理员管理界面")
    		print("self",self.admin_pass)
    		print("local",admin_pass)
    
    		if self.admin_pass.get() == admin_pass:
    			AdminManage(self.window)  # 进入管理员操作界面
    		else:
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    
    	def back(self):
    		StartPage(self.window) # 显示主窗口 销毁本窗口
    
    
    #学生登陆页面
    class StudentPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('学生登陆')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='学生登陆', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack()
    
    		Label(self.window, text='学生账号:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.student_id = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory')
    		self.student_id.pack()
    
    		Label(self.window, text='学生密码:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.student_pass = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory', show='*')
    		self.student_pass.pack()
    
    		Button(self.window, text="登陆", width=8, font=tkFont.Font(size=12), command=self.login).pack(pady=40)
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back).pack()
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def login(self):
    		print(str(self.student_id.get()))
    		print(str(self.student_pass.get()))
    		stu_pass = None
    
    		# 数据库操作 查询管理员表
    		db = pymysql.connect("localhost", "root", "root", "student")  # 打开数据库连接
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM stu_login_k WHERE stu_id = '%s'" % (self.student_id.get())  # SQL 查询语句
    		try:
    			# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				stu_id = row[0]
    				stu_pass = row[1]
    				# 打印结果
    				print("stu_id=%s,stu_pass=%s" % (stu_id, stu_pass))
    		except:
    			print("Error: unable to fecth data")
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    		db.close()  # 关闭数据库连接
    
    		print("正在登陆学生信息查看界面")
    		print("self", self.student_pass.get())
    		print("local", stu_pass)
    
    		if self.student_pass.get() == stu_pass:
    			StudentView(self.window, self.student_id.get()) # 进入学生信息查看界面
    		else:
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    
    	def back(self):
    		StartPage(self.window)  # 显示主窗口 销毁本窗口
    
    
    
    # 管理员操作界面
    class AdminManage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = Tk()  # 初始框的声明
    		self.window.title('管理员操作界面')
    
    		self.frame_left_top = tk.Frame(width=300, height=200)
    		self.frame_right_top = tk.Frame(width=200, height=200)
    		self.frame_center = tk.Frame(width=500, height=400)
    		self.frame_bottom = tk.Frame(width=650, height=50)
    
    		# 定义下方中心列表区域
    		self.columns = ("学号", "姓名", "性别", "年龄")
    		self.tree = ttk.Treeview(self.frame_center, show="headings", height=18, columns=self.columns)
    		self.vbar = ttk.Scrollbar(self.frame_center, orient=VERTICAL, command=self.tree.yview)
    		# 定义树形结构与滚动条
    		self.tree.configure(yscrollcommand=self.vbar.set)
    
    		# 表格的标题
    		self.tree.column("学号", width=150, anchor='center')  # 表示列,不显示
    		self.tree.column("姓名", width=150, anchor='center')
    		self.tree.column("性别", width=100, anchor='center')
    		self.tree.column("年龄", width=100, anchor='center')
    
    		# 调用方法获取表格内容插入
    		self.tree.grid(row=0, column=0, sticky=NSEW)
    		self.vbar.grid(row=0, column=1, sticky=NS)
    
    		self.id = []
    		self.name = []
    		self.gender = []
    		self.age = []
    		# 打开数据库连接
    		db = pymysql.connect("localhost", "root", "root", "student")
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM student_k"  # SQL 查询语句
    		try:
    			# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				self.id.append(row[0])
    				self.name.append(row[1])
    				self.gender.append(row[2])
    				self.age.append(row[3])
    				# print(self.id)
    				# print(self.name)
    				# print(self.gender)
    				# print(self.age)
    		except:
    			print("Error: unable to fetch data")
    			messagebox.showinfo('警告!', '数据库连接失败!')
    		db.close()# 关闭数据库连接
    
    
    		print("test***********************")
    		for i in range(min(len(self.id), len(self.name), len(self.gender), len(self.age))):  # 写入数据
    			self.tree.insert('', i, values=(self.id[i], self.name[i], self.gender[i], self.age[i]))
    
    		for col in self.columns:  # 绑定函数,使表头可排序
    			self.tree.heading(col, text=col,
    							  command=lambda _col=col: self.tree_sort_column(self.tree, _col, False))
    
    		# 定义顶部区域
    		# 定义左上方区域
    		self.top_title = Label(self.frame_left_top, text="学生信息:", font=('Verdana', 20))
    		self.top_title.grid(row=0, column=0, columnspan=2, sticky=NSEW, padx=50, pady=10)
    
    		self.left_top_frame = tk.Frame(self.frame_left_top)
    		self.var_id = StringVar()  # 声明学号
    		self.var_name = StringVar()  # 声明姓名
    		self.var_gender = StringVar()  # 声明性别
    		self.var_age = StringVar()  # 声明年龄
    		# 学号
    		self.right_top_id_label = Label(self.frame_left_top, text="学号:", font=('Verdana', 15))
    		self.right_top_id_entry = Entry(self.frame_left_top, textvariable=self.var_id, font=('Verdana', 15))
    		self.right_top_id_label.grid(row=1, column=0)  # 位置设置
    		self.right_top_id_entry.grid(row=1, column=1)
    		# 姓名
    		self.right_top_name_label = Label(self.frame_left_top, text="姓名:", font=('Verdana', 15))
    		self.right_top_name_entry = Entry(self.frame_left_top, textvariable=self.var_name, font=('Verdana', 15))
    		self.right_top_name_label.grid(row=2, column=0)  # 位置设置
    		self.right_top_name_entry.grid(row=2, column=1)
    		# 性别
    		self.right_top_gender_label = Label(self.frame_left_top, text="性别:", font=('Verdana', 15))
    		self.right_top_gender_entry = Entry(self.frame_left_top, textvariable=self.var_gender,
    											font=('Verdana', 15))
    		self.right_top_gender_label.grid(row=3, column=0)  # 位置设置
    		self.right_top_gender_entry.grid(row=3, column=1)
    		# 年龄
    		self.right_top_gender_label = Label(self.frame_left_top, text="年龄:", font=('Verdana', 15))
    		self.right_top_gender_entry = Entry(self.frame_left_top, textvariable=self.var_age,
    											font=('Verdana', 15))
    		self.right_top_gender_label.grid(row=4, column=0)  # 位置设置
    		self.right_top_gender_entry.grid(row=4, column=1)
    
    		# 定义右上方区域
    		self.right_top_title = Label(self.frame_right_top, text="操作:", font=('Verdana', 20))
    
    		self.tree.bind('<Button-1>', self.click)  # 左键获取位置
    		self.right_top_button1 = ttk.Button(self.frame_right_top, text='新建学生信息', width=20, command=self.new_row)
    		self.right_top_button2 = ttk.Button(self.frame_right_top, text='更新选中学生信息', width=20,
    											command=self.updata_row)
    		self.right_top_button3 = ttk.Button(self.frame_right_top, text='删除选中学生信息', width=20,
    											command=self.del_row)
    
    		# 位置设置
    		self.right_top_title.grid(row=1, column=0, pady=10)
    		self.right_top_button1.grid(row=2, column=0, padx=20, pady=10)
    		self.right_top_button2.grid(row=3, column=0, padx=20, pady=10)
    		self.right_top_button3.grid(row=4, column=0, padx=20, pady=10)
    
    		# 整体区域定位
    		self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
    		self.frame_right_top.grid(row=0, column=1, padx=30, pady=30)
    		self.frame_center.grid(row=1, column=0, columnspan=2, padx=4, pady=5)
    		self.frame_bottom.grid(row=2, column=0, columnspan=2)
    
    		self.frame_left_top.grid_propagate(0)
    		self.frame_right_top.grid_propagate(0)
    		self.frame_center.grid_propagate(0)
    		self.frame_bottom.grid_propagate(0)
    
    		self.frame_left_top.tkraise() # 开始显示主菜单
    		self.frame_right_top.tkraise() # 开始显示主菜单
    		self.frame_center.tkraise() # 开始显示主菜单
    		self.frame_bottom.tkraise() # 开始显示主菜单
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def back(self):
    		StartPage(self.window) # 显示主窗口 销毁本窗口
    
    	def click(self, event):
    		self.col = self.tree.identify_column(event.x)  # 列
    		self.row = self.tree.identify_row(event.y)  # 行
    
    		print(self.col)
    		print(self.row)
    		self.row_info = self.tree.item(self.row, "values")
    		self.var_id.set(self.row_info[0])
    		self.var_name.set(self.row_info[1])
    		self.var_gender.set(self.row_info[2])
    		self.var_age.set(self.row_info[3])
    		self.right_top_id_entry = Entry(self.frame_left_top, state='disabled', textvariable=self.var_id,
    										font=('Verdana', 15))
    
    		print('')
    
    	def tree_sort_column(self, tv, col, reverse):  # Treeview、列名、排列方式
    		l = [(tv.set(k, col), k) for k in tv.get_children('')]
    		l.sort(reverse=reverse)  # 排序方式
    		# rearrange items in sorted positions
    		for index, (val, k) in enumerate(l):  # 根据排序后索引移动
    			tv.move(k, '', index)
    		tv.heading(col, command=lambda: self.tree_sort_column(tv, col, not reverse))  # 重写标题,使之成为再点倒序的标题
    
    	def new_row(self):
    		print('123')
    		print(self.var_id.get())
    		print(self.id)
    		if str(self.var_id.get()) in self.id:
    			messagebox.showinfo('警告!', '该学生已存在!')
    		else:
    			if self.var_id.get() != '' and self.var_name.get() != '' and self.var_gender.get() != '' and self.var_age.get() != '':
    				# 打开数据库连接
    				db = pymysql.connect("localhost", "root", "root", "student")
    				cursor = db.cursor()  # 使用cursor()方法获取操作游标
    				sql = "INSERT INTO student_k(id, name, gender, age) \
    				       VALUES ('%s', '%s', '%s', '%s')" % \
    					  (self.var_id.get(), self.var_name.get(), self.var_gender.get(), self.var_age.get())  # SQL 插入语句
    				try:
    					cursor.execute(sql)  # 执行sql语句
    					db.commit()  # 提交到数据库执行
    				except:
    					db.rollback()  # 发生错误时回滚
    					messagebox.showinfo('警告!', '数据库连接失败!')
    				db.close()  # 关闭数据库连接
    
    				self.id.append(self.var_id.get())
    				self.name.append(self.var_name.get())
    				self.gender.append(self.var_gender.get())
    				self.age.append(self.var_age.get())
    				self.tree.insert('', len(self.id) - 1, values=(
    				self.id[len(self.id) - 1], self.name[len(self.id) - 1], self.gender[len(self.id) - 1],
    				self.age[len(self.id) - 1]))
    				self.tree.update()
    				messagebox.showinfo('提示!', '插入成功!')
    			else:
    				messagebox.showinfo('警告!', '请填写学生数据')
    
    	def updata_row(self):
    		res = messagebox.askyesnocancel('警告!', '是否更新所填数据?')
    		if res == True:
    			if self.var_id.get() == self.row_info[0]:  # 如果所填学号 与 所选学号一致
    				# 打开数据库连接
    				db = pymysql.connect("localhost", "root", "root", "student")
    				cursor = db.cursor()  # 使用cursor()方法获取操作游标
    				sql = "UPDATE student_k SET name = '%s', gender = '%s', age = '%s' \
    				 WHERE id = '%s'" % (self.var_name.get(), self.var_gender.get(), self.var_age.get(), self.var_id.get())  # SQL 插入语句
    				try:
    					cursor.execute(sql)  # 执行sql语句
    					db.commit()  # 提交到数据库执行
    					messagebox.showinfo('提示!', '更新成功!')
    				except:
    					db.rollback()  # 发生错误时回滚
    					messagebox.showinfo('警告!', '更新失败,数据库连接失败!')
    				db.close()  # 关闭数据库连接
    
    				id_index = self.id.index(self.row_info[0])
    				self.name[id_index] = self.var_name.get()
    				self.gender[id_index] = self.var_gender.get()
    				self.age[id_index] = self.var_age.get()
    
    				self.tree.item(self.tree.selection()[0], values=(
    					self.var_id.get(), self.var_name.get(), self.var_gender.get(),
    					self.var_age.get()))  # 修改对于行信息
    			else:
    				messagebox.showinfo('警告!', '不能修改学生学号!')
    
    	def del_row(self):
    		res = messagebox.askyesnocancel('警告!', '是否删除所选数据?')
    		if res == True:
    			print(self.row_info[0])  # 鼠标选中的学号
    			print(self.tree.selection()[0])  # 行号
    			print(self.tree.get_children())  # 所有行
    			# 打开数据库连接
    			db = pymysql.connect("localhost", "root", "root", "student")
    			cursor = db.cursor()  # 使用cursor()方法获取操作游标
    			sql = "DELETE FROM student_k WHERE id = '%s'" % (self.row_info[0]) # SQL 插入语句
    			try:
    				cursor.execute(sql)  # 执行sql语句
    				db.commit()  # 提交到数据库执行
    				messagebox.showinfo('提示!', '删除成功!')
    			except:
    				db.rollback()  # 发生错误时回滚
    				messagebox.showinfo('警告!', '删除失败,数据库连接失败!')
    			db.close()  # 关闭数据库连接
    
    			id_index = self.id.index(self.row_info[0])
    			print(id_index)
    			del self.id[id_index]
    			del self.name[id_index]
    			del self.gender[id_index]
    			del self.age[id_index]
    			print(self.id)
    			self.tree.delete(self.tree.selection()[0])  # 删除所选行
    			print(self.tree.get_children())
    
    
    # 学生查看信息界面
    class StudentView:
    	def __init__(self, parent_window, student_id):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('关于')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='学生信息查看', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack(pady=20)
    
    		self.id = '学号:' + ''
    		self.name = '姓名:' + ''
    		self.gender = '性别:' + ''
    		self.age = '年龄:' + ''
    		# 打开数据库连接
    		db = pymysql.connect("localhost", "root", "root", "student")
    		cursor = db.cursor()# 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM student_k WHERE id = '%s'" % (student_id) # SQL 查询语句
    		try:
    			# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				self.id = '学号:' + row[0]
    				self.name = '姓名:' + row[1]
    				self.gender = '性别:' + row[2]
    				self.age = '年龄:' + row[3]
    		except:
    			print("Error: unable to fetch data")
    		db.close()		# 关闭数据库连接
    
    		Label(self.window, text=self.id, font=('Verdana', 18)).pack(pady=5)
    		Label(self.window, text=self.name, font=('Verdana', 18)).pack(pady=5)
    		Label(self.window, text=self.gender, font=('Verdana', 18)).pack(pady=5)
    		Label(self.window, text=self.age, font=('Verdana', 18)).pack(pady=5)
    
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=16), command=self.back).pack(pady=25)
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def back(self):
    		StartPage(self.window)  # 显示主窗口 销毁本窗口
    
    
    # About页面
    class AboutPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('关于')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='学生信息管理系统', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack()
    
    		Label(self.window, text='作者:清晨的光明', font=('Verdana', 18)).pack(pady=30)
    		Label(self.window, text='blog.csdn.net/kdongyi', font=('Verdana', 18)).pack(pady=5)
    
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back).pack(pady=100)
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def back(self):
    		StartPage(self.window)  # 显示主窗口 销毁本窗口
    
    
    if __name__ == '__main__':
    	try:
    		# 打开数据库连接 连接测试
    		db = pymysql.connect("localhost", "root", "root", "student")
    		# 使用cursor()方法获取操作游标
    		cursor = db.cursor()
    		# 如果数据表不存在则创建表 若存在则跳过
    		# 设置主键唯一
    		sql = """CREATE TABLE IF NOT EXISTS student_k(
    				id char(20) NOT NULL,
    				name char(20) default NULL,
    				gender char(5) default NULL,  
    				age char(5) default NULL,
    				PRIMARY KEY (id)
    				
    				) ENGINE = InnoDB 
    				DEFAULT	CHARSET = utf8
    				"""
    		cursor.execute(sql)
    		# 如果数据表不存在则创建表 若存在则跳过
    		sql = """CREATE TABLE IF NOT EXISTS admin_login_k(
    						admin_id char(20) NOT NULL,
    						admin_pass char(20) default NULL,
    						PRIMARY KEY (admin_id)
    						) ENGINE = InnoDB 
    						DEFAULT	CHARSET = utf8
    						"""
    		cursor.execute(sql)
    		# 如果数据表不存在则创建表 若存在则跳过
    		sql = """CREATE TABLE IF NOT EXISTS stu_login_k(
    						stu_id char(20) NOT NULL,
    						stu_pass char(20) default NULL,
    						PRIMARY KEY (stu_id)
    						) ENGINE = InnoDB 
    						DEFAULT	CHARSET = utf8
    						"""
    		cursor.execute(sql)
    
    		# 关闭数据库连接
    		db.close()
    
    		# 实例化Application
    		window = tk.Tk()
    		StartPage(window)
    	except:
    		messagebox.showinfo('错误!', '连接数据库失败!')
    
    

     下面是我从我电脑数据库转储的SQL文件:

    /*
    Navicat MySQL Data Transfer
    
    Source Server         : mysql
    Source Server Version : 50532
    Source Host           : localhost:3306
    Source Database       : student
    
    Target Server Type    : MYSQL
    Target Server Version : 50532
    File Encoding         : 65001
    
    Date: 2019-11-28 15:09:36
    */
    
    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `admin_login_k`
    -- ----------------------------
    DROP TABLE IF EXISTS `admin_login_k`;
    CREATE TABLE `admin_login_k` (
      `admin_id` char(20) NOT NULL,
      `admin_pass` char(20) DEFAULT NULL,
      PRIMARY KEY (`admin_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of admin_login_k
    -- ----------------------------
    INSERT INTO `admin_login_k` VALUES ('admin', 'admin');
    
    -- ----------------------------
    -- Table structure for `student_k`
    -- ----------------------------
    DROP TABLE IF EXISTS `student_k`;
    CREATE TABLE `student_k` (
      `id` char(20) NOT NULL,
      `name` char(20) DEFAULT NULL,
      `gender` char(5) DEFAULT NULL,
      `age` char(5) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of student_k
    -- ----------------------------
    INSERT INTO `student_k` VALUES ('182085211003', 'a', '女', '22');
    INSERT INTO `student_k` VALUES ('182085211004', 'b', '女', '18');
    INSERT INTO `student_k` VALUES ('182085211005', 'abc', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211006', 'abc', '女', '24');
    INSERT INTO `student_k` VALUES ('182085211008', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211009', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211010', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211011', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('1820852110111', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211012', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211013', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211014', 'Tom2', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211015', 'Tom1', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211016', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211017', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211018', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211019', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211020', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211021', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('1820852110211', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211022', 'Tom1', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211023', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211024', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211034', 'Tom', '男', '23');
    
    -- ----------------------------
    -- Table structure for `stu_login_k`
    -- ----------------------------
    DROP TABLE IF EXISTS `stu_login_k`;
    CREATE TABLE `stu_login_k` (
      `stu_id` char(20) NOT NULL,
      `stu_pass` char(20) DEFAULT NULL,
      PRIMARY KEY (`stu_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of stu_login_k
    -- ----------------------------
    INSERT INTO `stu_login_k` VALUES ('182085211000', '123456');
    
    -- ----------------------------
    -- Table structure for `t_course`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_course`;
    CREATE TABLE `t_course` (
      `SNO` char(255) NOT NULL,
      `COURSE` char(255) DEFAULT NULL,
      `CREDIT` char(255) DEFAULT NULL,
      `GRADE` char(255) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of t_course
    -- ----------------------------
    INSERT INTO `t_course` VALUES ('08300205', '程序设计', '4', '88');
    INSERT INTO `t_course` VALUES ('08300205', '数据库', '2.5', '90');
    INSERT INTO `t_course` VALUES ('08300205', '力学', '5', '92');
    INSERT INTO `t_course` VALUES ('08080929', '数据库', '2.5', '85');
    INSERT INTO `t_course` VALUES ('09350124', '数据库', '2.5', '92');
    INSERT INTO `t_course` VALUES ('09620233', '数据库', '2.5', '80');
    INSERT INTO `t_course` VALUES ('09300218', '数据库', '2.5', '78');
    INSERT INTO `t_course` VALUES ('09010122', '数据库', '2.5', '87');
    INSERT INTO `t_course` VALUES ('08080929', '程序设计', '4', '86');
    INSERT INTO `t_course` VALUES ('09010122', '程序设计', '4', '80');
    INSERT INTO `t_course` VALUES ('08300516', '程序设计', '4', '76');
    
    -- ----------------------------
    -- Table structure for `t_st`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_st`;
    CREATE TABLE `t_st` (
      `SNO` char(11) NOT NULL,
      `SNAME` char(255) DEFAULT NULL,
      `SSEX` char(255) DEFAULT NULL,
      `AGE` char(255) DEFAULT NULL,
      `DEPT` char(255) DEFAULT NULL,
      PRIMARY KEY (`SNO`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of t_st
    -- ----------------------------
    INSERT INTO `t_st` VALUES ('08080929', '刘超世', '男', '19', '计算机应用技术');
    INSERT INTO `t_st` VALUES ('08300205', '李媛媛', '女', '19', '软件工程');
    INSERT INTO `t_st` VALUES ('09300218', '王海超', '男', '19', '软件工程');
    INSERT INTO `t_st` VALUES ('09350124', '王彤', '女', '19', '通信原理');
    INSERT INTO `t_st` VALUES ('09620233', '陈晓丽', '女', '21', '通信工程');
    

    觉得有用,点个赞再走吧^_^

    展开全文
  • java学生信息管理系统(附源码)

    万次阅读 多人点赞 2016-07-14 16:36:30
    1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作 另外一种是SQL语句。 3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*...

    一:   介绍

          

      1:实现登录界面

        2:实现主界面

               有两种操作 一种是按钮操作  另外一种是SQL语句。

        3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*myeclipse和eclipse,            jcreator什么的都是IDE,使用都一样,基本没什么区别,只不过myeclipse更商业化不开源,也就意味着收费,里面集成的插件比较多而已。

               *****************************************************************************************************

               用到的软件及环境SQLserver2008,eclipse,sqljdbc4.jar(数据库驱动包)

               *****************************************************************************************************

               另外一个Mysql 5.7.15.  Myeclipse2015,mysql-connector-java-5.1.34.jar

                 **********************************************************************************************************************

     

               java的JDK环境 (自行安装配置)

                切记:

                另外要新建数据库wtf 和新建学生表student(也可以用你自己创建的数据库及表,不过你得在源代码中进行修改):

                还要导入sqljdbc4.jar

            

        4:实现增删改查  (另有退出和刷新)

    二:    使用

      1:首先导入rjgc包

     

    然后点开browse  找到rjgc  

    最后点击finish

    得到    下图

    加载出来以后可能有的java文件前面有错,因为还没有导入sqljdbc4.jar

    (*******************************************************************************************************************************                    注意,方式一导入jdbc的图是之前我做的时候比较麻烦的一种方式,但是也能达到效果,在后期的我更新的链接资源中,如果导入任意版本源码包的话,都会自动加载lib包以及下面不同版本对应的jdbc连接驱动。这时候你只需要在那个lib文件夹下的.jar 文件上右键点击-->build path--->add to build path,导入jdbc结束。

    方式二导入:贴一张图

    上面这张图是方式二导入的,

    **************************************************************************************************************************)

     

    接下来继续,方式一导入  看下图:

     

     

     

    这时候应该就差不多可以运行了,不过还得把SQLserver2008的(MSSQLSERVER)服务开启了。

    上图

    再回到eclipse界面 打开rjgc

    最后双击LoginIn.java打开代码文本

    运行  就可以出现登录界面  

    在LoginIn.java代码文本里面找到登录用户 和密码后就可以登录了 

    比如admin 123  和wangtangfu 123456      (注意不要多加空格)

    其实用户权限都一样  如果你想加用户权限  可以写两个不同的Qframe.java。要做到主窗口里面的功能不同   ,可以屏蔽一些按钮

    比如修改  增加  等功能。然后在不同用户登陆的时候调用不同的Qframe.java,这样应该可以实现权限问题。。。

     

    2:

    还有程序里面应运了一些图片,它们的位置路径位置可能不一样 ,自行参照代码理解修改(很容易的哟);

     

    三:程序运行截图

       登陆窗口

     主窗口

    SQL语句执行  比如select * from student  

    刷新按钮:

    增加按钮:

                                                                                                                                                         添加成功之后刷新即可:

    删除按钮:

    修改按钮:

    查询按钮

     

     

    至此  

          学生管理系统就完成了   

               其中的登陆界面是 我借鉴别人的  

                   文中难免有不足之处,恳请批评指正

                                                                                                                                       2016-7-14

    再此上传不了附件 所以我给链接去在云盘下载 


    首次上传

    (2017_6_12更新)链接: https://pan.baidu.com/s/1aSeKJ8gXxWSElHaTU6_PdA 密码: yqpv

     


    添加myeclipse+mysql 版本:

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k


     


    修改student.sql执行报错 (执行时可以打开偷偷看一眼)

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接:https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

     

    展开全文
  • 设计一个GUI界面的学生信息管理系统,方便保存学生的部分信息。 有五类功能: 1、 增加学生信息:输入姓名、学号、年龄、手机号 2、 修改学生信息:输入新的姓名、学号、年龄、手机号 3、 删除学生信息:以学号为...
  • 本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下项目环境:软件环境:OS:RedHat6.3Lib:PygtkLanguage:PythonSupport tool:Glade3项目简述:①Glade3设计用户的登录窗口,...
  • java 学生信息管理系统(图形界面

    热门讨论 2012-12-13 11:07:35
    自己写了一个简单的学生信息管理系统,使用图形界面,实现登录校验,学生信息的增删查改功能。
  • 使用Java Swing开发的学生信息管理系统(界面美观)

    万次阅读 多人点赞 2018-12-31 12:32:29
    设计一个学生基本信息管理系统,实现“系统登录”,“学生信息增加”,“学生信息查询”,“学生信息删除”,“学生信息修改”,“学生信息导入”,“学生信息导出”等功能,具体要求如下: 关注下面的微信公众号,...
  • 后台管理系统界面

    千次阅读 2019-09-06 15:20:19
    31个高大上的后台管理系统模版 1. inspinia Demo 2.Thin Admin Template Demo&Download 3.FreshUI – Premium Web App and Admin Template Demo&Download 4.Clip-One – Bootstrap 3 Respo...
  • 技术一般,精心做的学生信息管理系统,包括主程序代码,界面,数据库,路过请指点
  • 数据库课程设计 学生信息管理系统的登陆界面
  • Java图形界面开发—学生信息管理系统 完整源码

    千次下载 热门讨论 2017-02-28 21:36:13
    学生信息管理系统,使用Java开发。 1、登录界面可以进行登录操作。有俩种权限选择。分别跳转到不同的界面。 2、使用了事件监听、Java操作SQLserver数据库等知识。 3、图形化界面中使用了JTable等组件,将查询结果...
  • java学生管理系统界面设计

    万次阅读 多人点赞 2019-07-05 13:16:30
    关于学生管理系统界面设计:代码如下: 数据库设计 DROP TABLE IF EXISTS `stu`; CREATE TABLE `stu` ( `stuId` int(11) NOT NULL AUTO_INCREMENT, `stuName` varchar(30) DEFAULT NULL, `stuSex` varchar(30) ...
  • 学生信息管理系统的VB程序界面信息与数据库的信息相对应,在编写代码的时候,要清楚的了解,界面与后台信息两者之间的联系,从全局把握。 界面上对班级信息的操作,主要对信息的添加,修改,删除。而对应到数据库则...
  • Python学生信息管理系统 (菜单界面、txt保存文件) 目录 Python学生信息管理系统 (菜单界面、txt保存文件) 系统设计目的 功能要求 代码总体框架 关键代码 效果展示 系统设计目的 利用Python编程语言编写...
  • Java 图形界面开发--图文并茂建立学生管理系统

    万次阅读 多人点赞 2016-03-19 19:52:28
    图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。 关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~ ...
  • 用C语言写的学生信息管理系统的带登录界面和数据库的源码加上步骤用法谢谢 麻烦哪位高人用C语言写的学生信息管理系统的带登录界面和数据库的源码,加上步骤用法, 谢谢,感谢感谢了,我们老师叫我们做,不然··...
  • 前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下载
  • 学生信息管理系统(GUI界面布局+java版本+文件保存)

    千次阅读 多人点赞 2021-01-29 17:43:45
    学生信息管理系统(GUI界面布局) 有需要的可以自行下载 附图如下: 链接:https://download.csdn.net/download/qq_52889967/14954612
  • java 学生信息管理系统

    万次阅读 多人点赞 2015-10-06 14:03:33
    学生信息管理包括添加,删除,修改,查询,显示全部等 具体结构如图 在SQL Server 2005数据库上实现数据操作。使用纯面向对象的java语言作为开发语言 在sql server 2005新建一个名为Student的数据库,在下面新建一...
  • java学生成绩管理系统界面设计

    万次阅读 多人点赞 2018-06-29 10:35:40
    关于学生成绩管理系统界面设计:代码如下 1import&nbsp;javax.swing.*; 2import&nbsp;java.awt.*; 3import&nbsp;java.awt.event.*; 4import&nbsp;com.example.SqlHelper; 5class&nbsp;...
  • 20几款经典信息系统后台管理界面样式模板 总有一款是你喜欢的。 信息系统 后台界面 后台样式 后台主页面
  • 一步一步实现web程序信息管理系统 在web程序中特别是信息管理系统,登陆功能必须有而且特别重要。每一个学习程序开发或以后工作中,都会遇到实现登陆功能的需求。而登陆功能最终提供给客户或展现给客户的最基本的...
  • 学生信息系统界面都很简单,但是好多也暗藏玄机。 我之所以开始做界面,而不是做完界面就写这个窗体的代码,原因有二。 一、做同样的一类事情比较有效率。 例子如下: 我们如果竖着看就是1a2b3c4d这样思维来...
  • c#实现简单学生信息管理系统

    万次阅读 多人点赞 2019-06-06 21:40:37
    登录、添加学生信息、修改学生信息、删除学生信息、查询学生信息 三、实现步骤 1、登陆界面功能实现 老规矩,先贴下主要代码: //构造方法 public Login() { InitializeComponent(); this.label3.Parent = ...
  • 【实战】javaweb学生信息管理系统

    万次阅读 多人点赞 2018-04-15 21:10:00
    javaweb学生信息管理系统总的来说整个项目通过Maven来管理jar包,实现了学生信息管理系统的登录,增删改查等基本操作,然后不喜写css样式,页面有点丑,但是代码中的逻辑基本正确。项目下载链接csdn下载链接github...
  • 学生信息管理系统

    千次阅读 2019-01-11 14:04:54
    C# Winform + SQLServer 做的学生信息管理系统。 实现了: 1、管理员或学生登录 2、管理员可以增加、删除、修改、查询学生信息。 3、学生只可以浏览信息,不可编辑或修改。 截图如下: 登录界面:   从用户...
  • 学生信息管理系统之第三篇登录界面java代码

    万次阅读 热门讨论 2017-11-01 16:18:12
    class DLFrame extends JFrame implements ActionListener, ... {// 登录界面  JPanel p1 = null;  JPanel p2 = null;  JPanel p3 = null;  JLabel userName = new JLabel("帐号:");  JTextField txtUser
  • JavaWeb-简单学生信息管理系统的实现-Jsp+Servlet+MySql

    万次阅读 多人点赞 2019-04-05 14:58:42
    关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~ 关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~ 关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 606,376
精华内容 242,550
关键字:

信息管理系统界面