学生管理系统修改

对于我们的谭院长,我真是佩服的五体投地,一上课就是代码上万行的说,什么基础的都不讲,直接叫我们看代码,改系统,最后就就是叫我们做一个独立的系统。

没办法,只好按照他的要求码代码,我修改的是他已经留了几年的学生管理系统,现在修改了一点,现在看来效果还不错,我也在修改之中学会了许多JAVA语句,如何连接数据库等。

一开始,学生管理系统摆在我的面前,我什么也看不懂,还是踏踏实实地看了两个星期的JAVA课本,逐渐懂了一点,也开始慢慢改了一点。

首先我把登录界面优化了一下,优化前的代码(关于登录界面的)

void login_actionPerformed(ActionEvent e) {
    username = JOptionPane.showInputDialog(this, "请输入用户名");
    String pwd = JOptionPane.showInputDialog(this, "请输入密码");
    if (! (username == null && pwd == null)) {

       try {//连接数据库,验证用户

          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection con = DriverManager.getConnection(
              "jdbc:odbc:lee",
              "sa", "123");


          ps = con.createStatement(ResultSet.
                                   TYPE_SCROLL_INSENSITIVE,
                                   ResultSet.CONCUR_READ_ONLY);
          try {
         rs = ps.executeQuery("select * from users where username='" +
                              username + "' "); //读取数据库
         if (!rs.next())

         {
           Log log = new Log();
           log.addLog("\r\r", username + "用户试图登录系统,失败!");
           log.closeStream();

           JOptionPane.showMessageDialog(null, "不存在此用户!");
         }
         else if (! (rs.getString("pwd").trim().equals(pwd))) {

           JOptionPane.showMessageDialog(null, "密码错误!");
           Log log = new Log();
           log.addLog("\r\r", username + "用户试图登录系统,失败!");
           log.closeStream();

         }
         else {
           if (rs.getString("power").trim().equals("系统管理员")) {
             xjgl.setEnabled(true);
             bjgl.setEnabled(true);
             kcsz.setEnabled(true);
             cjgl.setEnabled(true);
             jMenuFile.setEnabled(true);
             llyh.setEnabled(true);
             adduser.setEnabled(true);
             Log log = new Log();
             log.addLog("\r\r", username + "(系统管理员)登录系统");
             log.closeStream();

           }
           else {
             cjgl.setEnabled(true);
             xjgl.setEnabled(true);
             xgcj.setEnabled(false);
             tjcj.setEnabled(false);
             xgxj.setEnabled(false);
             tjxj.setEnabled(false);
             Log log = new Log();
             log.addLog("\r\r", username + "(普通用户)登录系统");
             log.closeStream();

           }

         }
       }

       catch (SQLException sqle) {
         String error = sqle.getMessage();
         JOptionPane.showMessageDialog(null, error);
         sqle.printStackTrace();

       }

        }
        catch (Exception err) {
        //  err.getMessage();
          Log log = new Log();
          log.addLog("\r\r", "数据库连接错误!");
          log.closeStream();
          String error = err.getMessage();
          JOptionPane.showMessageDialog(null, error);

        }

      }
       }

登录界面图片如图


优化后修改登陆界面的代码

void login_actionPerformed(ActionEvent e) {
        f=new JFrame("用户登录");
        Container cp=f.getContentPane();
        JPanel pa=new JPanel();
        pa.setLayout(new FlowLayout());
        lb1=new JLabel("请输入用户名:");
        lb1.setFont(f1);
        pa.add(lb1);
        tf1=new JTextField(10);
        tf1.setFont(f1);
        pa.add(tf1);
        lb2=new JLabel("   请输入密码:");
        lb2.setFont(f1);
        pa.add(lb2);
        userpwd=new JPasswordField(10);
        userpwd.setFont(f1);
        //userpwd.setBounds(new Rectangle(114, 68, 120, 32));
        pa.add(userpwd);
        JButton bt=new JButton("确定");
        bt.setFont(f1);
        bt.addActionListener(this);
        pa.add(bt);
        bt=new JButton("取消");
        bt.setFont(f1);
        bt.addActionListener(this);
        pa.add(bt);
        cp.add(pa,BorderLayout.CENTER);
        f.pack();
        f.setBounds(320, 260,309,156);
        f.setVisible(true);
        f.setResizable(false);
       }
  public void logIn(){
      if (! (username == null && pwd == null)) {
          try {//连接数据库,验证用户
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              Connection con = DriverManager.getConnection(
                  "jdbc:odbc:lee",
                  "sa", "123");
              ps = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
              try {
                  rs = ps.executeQuery("select * from users where username='" +
                                  username + "' "); //读取数据库
                  if (!rs.next()){
                      Log log = new Log();
                      log.addLog("\r\r", username + "用户试图登录系统,失败!");
                      log.closeStream();
                      JOptionPane.showMessageDialog(null, "不存在此用户!");
                      }
                  else if (! (rs.getString("pwd").trim().equals(pwd))) {
                      JOptionPane.showMessageDialog(null, "密码错误!");
                      Log log = new Log();
                      log.addLog("\r\r", username + "用户试图登录系统,失败!");
                      log.closeStream();
                      }
                  else {
                      if (rs.getString("power").trim().equals("系统管理员")) {
                          xjgl.setEnabled(true);
                          bjgl.setEnabled(true);
                          kcsz.setEnabled(true);
                          cjgl.setEnabled(true);
                          jMenuFile.setEnabled(true);
                          llyh.setEnabled(true);
                          adduser.setEnabled(true);
                          logOut.setEnabled(true);
                          login.setEnabled(false);
                          deleteuser.setEnabled(true);
                          Log log = new Log();
                          log.addLog("\r\r", username + "(系统管理员)登录系统");
                          log.closeStream();
                          }
                      else {
                          cjgl.setEnabled(true);
                          xjgl.setEnabled(true);
                          xgcj.setEnabled(false);
                          tjcj.setEnabled(false);
                          xgxj.setEnabled(false);
                          tjxj.setEnabled(false);
                          logOut.setEnabled(true);
                          deleteuser.setEnabled(false);
                          login.setEnabled(false);
                          Log log = new Log();
                          log.addLog("\r\r", username + "(普通用户)登录系统");
                          log.closeStream();
                          }
                      }
                  }
              catch (SQLException sqle) {
                  String error = sqle.getMessage();
                  JOptionPane.showMessageDialog(null, error);
                  sqle.printStackTrace();
                  }
              }
          catch (Exception err) {
            //  err.getMessage();
              Log log = new Log();
              log.addLog("\r\r", "数据库连接错误!");
              log.closeStream();
              String error = err.getMessage();
              JOptionPane.showMessageDialog(null, error);
              }
          }
      else{
          JOptionPane.showMessageDialog(null, "输入错误,请重新输入");
          return;
      }
      }
  public void actionPerformed(ActionEvent e){
        String cmd=e.getActionCommand();
        if(cmd.equals("确定")){
            username=tf1.getText();
            pwd=String.valueOf(userpwd.getPassword()).trim();
            logIn();
            f.setVisible(false);
            }
        else if(cmd.equals("取消"))
            f.setVisible(false);
    }

登陆界面变为



此外,我添加了注销用户模块,使用户登录,注销更为合理化


添加的代码为

void logOut_actionPerformed(ActionEvent e) {
	  	xjgl.setEnabled(false);
	    bjgl.setEnabled(false);
	    kcsz.setEnabled(false);
	    cjgl.setEnabled(false);
	    jMenuFile.setEnabled(true);
	    llyh.setEnabled(false);
	    adduser.setEnabled(false);
	    jMenuItem7.setEnabled(false);
	    login.setEnabled(true);
	    logOut.setEnabled(false);
	    Log log = new Log();
	    log.addLog("\r\r", username+"注销了用户");
	    log.closeStream();
  }

另外,我发现最多只能存在10个账号,这是程序本身设置的,但不好在添加更多的账号,我就添加了一个删除用户的子模块,代码如下:

Deleteuser.java
package studentsystem;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;
import java.sql.*;
import java.util.Arrays;
public class deleteuser extends JDialog {
	Statement ps;
	ResultSet rs;
	Connection con;
	String url;
	
	JPanel panel1 = new JPanel();
	JButton sure = new JButton();//确定删除
	JButton cancel = new JButton();//取消删除
	JComboBox power = new JComboBox();//创建下拉列表
	JLabel jLabel4 = new JLabel();//选择要删除的用户
	public deleteuser(Frame frame, String title, boolean modal) {
		 super(frame, title, modal);
		 try {
			 jbInit();
			 pack();
			 }
		 catch (Exception ex) {
			 ex.printStackTrace();
			 }
		 }
	 public deleteuser() {
		    this(null, "", true);
		    }
	 private void jbInit() throws Exception {
		 panel1.setLayout(null);
		 this.getContentPane().setLayout(null);
		 panel1.setBounds(new Rectangle(10, 10, 452, 369));
		 sure.setBounds(new Rectangle(12, 90, 90, 35));
		 sure.setFont(new java.awt.Font("Dialog", 0, 15));
		 sure.setText("确  定");
		 sure.addActionListener(new deleteuser_sure_actionAdapter(this));
		 cancel.setBounds(new Rectangle(150, 90, 90, 38));
		 cancel.setFont(new java.awt.Font("Dialog", 0, 15));
		 cancel.setText("取 消");
		 cancel.addActionListener(new deleteuser_cancel_actionAdapter(this));
		 this.setTitle("删除用户");
		 power.setBounds(new Rectangle(150, 20, 125, 29));
		 jLabel4.setFont(new java.awt.Font("Dialog", 0, 15));
		 jLabel4.setText("请选择要删除的用户");
		 jLabel4.setBounds(new Rectangle(5, 21, 150, 34));
		 getContentPane().add(panel1, null);
		 panel1.add(sure, null);
		 panel1.add(cancel, null);
		 try{
				Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
				Connection con = DriverManager.getConnection("jdbc:odbc:lee","sa", "123");
				ps = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
				}
			catch (Exception err) {
				Log log=new Log();
				log.addLog("\r\r","数据库连接出错");
				log.closeStream();
				JOptionPane.showMessageDialog(null, "连接数据库错误!");
				}
			try{
				rs = ps.executeQuery("select * from users ");
				while (rs.next())
			    	  power.addItem(rs.getString("username"));
			}
			catch (SQLException sqle) {
				String error = sqle.getMessage();
				JOptionPane.showMessageDialog(null, error);
				sqle.printStackTrace();
				}
		 panel1.add(power, null);
		 panel1.add(jLabel4, null);
		 this.setBounds(310, 200, 310, 200);
		 this.setVisible(true);
		 
	 }
	 
	 void cancel_actionPerformed(ActionEvent e) {
		    this.dispose();
		  }

	 void sure_actionPerformed(ActionEvent e){
		 int temp=JOptionPane.showConfirmDialog(null, "确定删除用户"+power.getSelectedItem()+"?", "删除用户", JOptionPane.YES_NO_OPTION);
		 if(temp==JOptionPane.YES_OPTION){
			 try{
				 ps.executeUpdate("delete from users where username='" +power.getSelectedItem() + "'");
				 JOptionPane.showMessageDialog(null, "删除成功!");
				 this.setVisible(false);
				 Log log = new Log();
				 log.addLog("\r\r", "删除了用户"+power.getSelectedItem() );
				 log.closeStream();
				 }
			 catch (SQLException ex) {
				 String err = ex.getMessage();
				 JOptionPane.showMessageDialog(null, err);
				 }
		 }
		 else
			 return;
	}

}
class deleteuser_cancel_actionAdapter
implements java.awt.event.ActionListener {
deleteuser adaptee;

deleteuser_cancel_actionAdapter(deleteuser adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.cancel_actionPerformed(e);
}
}

class deleteuser_sure_actionAdapter 
implements java.awt.event.ActionListener {
deleteuser adaptee;

deleteuser_sure_actionAdapter(deleteuser adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.sure_actionPerformed(e);
}
}

运行图如下:



其他的若干也进行了优化处理,这里不用多说。

总之,修改这个程序的确让我学到了许多东西,也增加了我的经验吧。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值