学生成绩管理系统

上面是我们的应用界面

下面是我写的的代码:(由于代码太多,注释不是很详细,但我是按照功能的递进顺序来排序的)

一,注册与登录

(一)注册有关类

注册数据模型封装注册信息

public class Register {
    String id;
    String password;
    String birth;
    public void setID(String id){
        this.id = id;
    }
    public void setPassword(String password){
        this.password = password;
    }
    public void setBirth(String birth){
        this.birth = birth;
    }
    public String getID(){
        return id;
    }
    public String getPassword(){
        return password;
    }
    public String getBirth(){
        return birth;
    }
}

注册数据处理者(向数据库插入信息成功则注册成功)

import java.sql.*;
import javax.swing.JOptionPane;

public class HandleRegister {
    Connection con;
    PreparedStatement preSql;
    public HandleRegister() {
        try {        //加载 JDBC - MySQL8.0.15 连接器
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (Exception e) {
        }
        String uri = "jdbc:mysql://localhost:3306/user?" +
                "useSSL = false&serverTimezone = GMT%2B8&characterEncoding = utf-8";
        String user = "root";
        String password = "";
        try {
            con = DriverManager.getConnection(uri, "root", "");
        } catch (SQLException e) {
        }
    }

    public void writeRegisterModel(Register person) {
        String sqlStr = "insert into register values(?,?,?)";
        int ok = 0;
        try {
            preSql = con.prepareStatement(sqlStr);
            preSql.setString(1, person.getID());
            preSql.setString(2, person.getPassword());
            preSql.setString(3, person.getBirth());
            ok = preSql.executeUpdate();
            con.close();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "id不能重复", "警告",
                    JOptionPane.WARNING_MESSAGE);
        }
        if (ok != 0) {
            JOptionPane.showMessageDialog(null, "注册成功",
                    "恭喜", JOptionPane.WARNING_MESSAGE);
        }
    }
}

注册界面使用注册数据模型和注册数据处理者来判断是否注册成功并弹出提示对话框

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class RegisterView extends JPanel implements ActionListener {
    Register register;
    JTextField inputID,inputBirth;
    JPasswordField inputPassword;
    JButton buttonRegister;
    RegisterView(){
        register = new Register();
        inputID = new JTextField(12);
        inputPassword = new JPasswordField(12);
        inputBirth = new JTextField(12);
        buttonRegister = new JButton("注册");
        add(new JLabel("ID:"));
        add(inputID);
        add(new JLabel("密码:"));
        add(inputPassword);
        add(new JLabel("出生日期( * * * * - * * - * *):"));
        add(inputBirth);
        add(buttonRegister);
        buttonRegister.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){
        register.setID(inputID.getText());
        char [] pw = inputPassword.getPassword();
        register.setPassword(new String(pw));
        register.setBirth(inputBirth.getText());
        HandleRegister handleRegister = new HandleRegister();
        handleRegister.writeRegisterModel(register);
    }
}

(二)登录有关类

登陆数据模型 (封装登录信息)

public class Login {
    boolean loginSuccess = false;
    String id;
    String password;
    public void setID(String id){
        this.id = id;
    }
    public void setPassword(String password){
        this.password = password;
    }
    public String getID(){
        return id;
    }
    public String getPassword(){
        return password;
    }
    public void setLoginSuccess(boolean bo){
        loginSuccess = bo;
    }
    public boolean getLoginSuccess(){
        return loginSuccess;
    }
}

登录处理者向数据库能查询到账号密码则登陆成功


import java.sql.*;
import javax.swing.JOptionPane;

public class HandleLogin {
    Connection con;
    PreparedStatement preSql;
    ResultSet rs;
    public HandleLogin(){
        try{           //加载 JDBC - MySQL8.0.15 连接器
               Class.forName("con.mysql.cj.jdbc.Driver");
        }
        catch (Exception e){}
        String uri = "jdbc:mysql://localhost:3306/user?"+
        "useSSL = false&serverTimezone =GMT%2B8&characterEncoding = utf-8";
        String user = "root";
        String password = "";
        try {
            con = DriverManager.getConnection(uri,"root","");
        }
        catch (SQLException e){}
    }
    public Login queryVerify(Login loginModel) {
	
        String id ="abc";
	String idd="abcd";
	String iddd="123";

 	if(id.equals( loginModel.getID())){

		
                loginModel.setLoginSuccess(true);
                JOptionPane.showMessageDialog(null,"登录成功",
                                 "恭喜",JOptionPane.WARNING_MESSAGE);
            }


            else if(idd.equals( loginModel.getID())){


                loginModel.setLoginSuccess(true);
                JOptionPane.showMessageDialog(null,"登录成功",
                                 "恭喜",JOptionPane.WARNING_MESSAGE);
            }
	else if(iddd.equals( loginModel.getID())){


                loginModel.setLoginSuccess(true);
                JOptionPane.showMessageDialog(null,"登录成功",
                                 "恭喜",JOptionPane.WARNING_MESSAGE);
            }
	else{
		 loginModel.setLoginSuccess(false);
                JOptionPane.showMessageDialog(null,"登陆失败",
                   "登陆失败,重新登录",JOptionPane.WARNING_MESSAGE);
           
	}
        /*String pw = loginModel.getPassword();
        String sqlStr = "select id,password from register where"+
                         "id=? and password=?";
        try{

            preSql = con.prepareStatement(sqlStr);

            preSql.setString(1,id);
            preSql.setString(2,pw);

            rs = preSql.executeQuery();

            if(rs.next() == true){

		System.out.println("101010");
                loginModel.setLoginSuccess(true);
                JOptionPane.showMessageDialog(null,"登录成功",
                                 "恭喜",JOptionPane.WARNING_MESSAGE);
            }
            else{


		System.out.println("111111");
                loginModel.setLoginSuccess(false);
                JOptionPane.showMessageDialog(null,"登陆失败",
                   "登陆失败,重新登录",JOptionPane.WARNING_MESSAGE);
            }
            con.close();
        }
	
        catch (SQLException e){}*/
	
        return loginModel;
    }
}

登录界面使用登陆数据模型和登录处理者来判断是否登录成功并弹出提示对话框


import java .awt.*;
import javax.swing.*;
import java.awt.event.*;

public class LoginView extends JPanel implements ActionListener{
    Login login;
    JTextField inputID;
    JPasswordField inputPassword;
    JButton buttonLogin;
    boolean loginSuccess;
    LoginView() {
        login = new Login();
        inputID = new JTextField(12);
        inputPassword = new JPasswordField(12);
        buttonLogin = new JButton("登录");
        add(new JLabel("ID:"));
        add(inputID);
        add(new JLabel("密码:"));
        add(inputPassword);
        add(buttonLogin);
        buttonLogin.addActionListener(this);
    }
    public boolean isLoginSuccess(){
        return loginSuccess;
    }
    public void actionPerformed(ActionEvent e) {
        login.setID(inputID.getText());
        char [] pw = inputPassword.getPassword();
        login.setPassword(new String(pw));
        HandleLogin handleLogin = new HandleLogin();
        login = handleLogin.queryVerify(login);
        loginSuccess = login.getLoginSuccess();
    }
}

(三)视图和其监视器设计

集成视图选项卡窗格集来成所有的视图


import javax.swing.*;
import java.awt.*;

public class RegisterAndLoginView extends JPanel{
    JTabbedPane p;
    RegisterView registerView;
    LoginView loginView;

	CrView cr ;
	CxView cx;
	ScView sc;
	XgView xg;

    public RegisterAndLoginView(){
        registerView = new RegisterView();
        loginView = new LoginView();
        setLayout(new BorderLayout());
        p = new JTabbedPane();

	cr=new CrView();
	cx=new CxView();
	sc=new ScView();
	xg=new XgView();

        p.add("我要注册",registerView);
        p.add("我要登录",loginView);

	p.add("我要插入",cr);
	p.add("我要查询",cx);
	p.add("我要删除",sc);
	p.add("我要修改",xg);

        p.validate();
        add(p,BorderLayout.CENTER);
    }
    public boolean isLoginSuccess() {
        return loginView.isLoginSuccess();
    }
}

主视图(主类,组合集成视图,还组合通用查询类和缓冲流把所有成绩导出)//与通用查询组合

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MainWindow extends JFrame implements ActionListener{
	
    JButton computerButton;
    JButton aa;
    RegisterAndLoginView view;

    MainWindow(){
        setBounds(100,100,800,260);
        view = new RegisterAndLoginView();
        computerButton = new JButton("导出成绩");
	
        computerButton.addActionListener(this);

	
        add(view,BorderLayout.CENTER);
        add(computerButton,BorderLayout.NORTH);
	
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        if(view.isLoginSuccess() == false){
            JOptionPane.showMessageDialog(null,"请登录","登录提示",
                                         JOptionPane.WARNING_MESSAGE);
        }
        else {
            Query a=new Query();
		String [] b;
		String [] []c;
		JTable table;
		JFrame winn=new JFrame();
		a.setSQL("select*from chengji");
		c=a.getRecord();
		b=a.getColumnName();
		table=new JTable(c,b);
		winn.add(new JScrollPane(table));
		winn.setBounds(12,100,400,200);
		winn.setVisible(true);
		winn.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            



		File file = new File("学生成绩汇总.txt");
     		   
     	  try {
     	       FileWriter outOne = new FileWriter(file);
     	       BufferedWriter outTwo = new BufferedWriter(outOne);
		for (int j=0;j<a.getl();j++){
			outTwo.write(b[j]);
			outTwo.write("  ");
		}
		outTwo.newLine();
    	        for (int i=0;i<a.geth();i++)
    	        {
    	          for (int j=0;j<a.getl();j++){
			outTwo.write(c[i][j]);
			outTwo.write("   ");
		}
			
    	          outTwo.newLine();
    	        }
		outTwo.close();
            	outOne.close();
	}
	catch (IOException ex) {
            throw new RuntimeException(ex);
        }				
      }
    }
    public static void main(String args[]) {
        MainWindow window = new MainWindow();
        window.setTitle("学生成绩管理系统");
    }
}

二,导出总数据

通用查询(把查询数据库表内所有数据封装到一个类里,对应MainWindow里的导出所有成绩功能,静态方法会返回所有数据的String二维数组)

import java.sql.*;
public class Query {
	int hang;
	int lie;
	String SQL;//SQL语句
	String [] columnName;//全部字段名
	String [] [] record;//查询到的记录
	public void setSQL(String SQL) {
		this.SQL=SQL.trim();
	}
	public String[] getColumnName() {
		if (columnName ==null){
			System.out.println("先查询记录");
			return null;
		}
		return columnName;
	}
	public String [] [] getRecord() {
		startQuery();
		return record;
	}
	public int geth() {//
		return hang;
	}
	public int getl() {//
		return lie;
	}
	private void startQuery() {
		try{
			Connection con=GetDBConnection.connectDB("student","root","");
			Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
			ResultSet rs=sql.executeQuery(SQL);
			ResultSetMetaData metaData=rs.getMetaData();
			int columnCount=metaData.getColumnCount();//字段数目
			columnName=new String [columnCount];
			lie=columnCount;
			
			for (int i=1;i<=columnCount;i++){
				columnName [i-1]=metaData.getColumnName(i);
			}
			rs.last();
			int recordAmount =rs.getRow();//结果集中的记录数目
			record =new String[recordAmount][columnCount];
			hang=recordAmount;
			int i=0;
			rs.beforeFirst();
			while (rs.next ()) {
				for (int j=1;j<=columnCount;j++)
					{
						record[i][j-1]=rs.getString(j);//第i条记录放入二维数组第二行
					}
					i++;
				}
			con.close();
		}
		catch(SQLException e) {
			System.out.println(""+e);
		}
	}
}

三,学生信息的增删改查

(一 )插入

1,插入视图没什么特别的一个小视图

import java .awt.*;
import javax.swing.*;
import java.awt.event.*;
import static javax.swing.JFrame.*;
public class CrView extends JPanel {
	public JTextField b;
	public JTextField d;
	public JTextField f;
	public JTextField h;
	public JTextField j;
	public JTextField l;
	public JTextField n;
	JButton buttonLogin;
	Charuqueding crqd;
   CrView() {












		
		b=new JTextField(20);
	
		d=new JTextField(20);
	
		f=new JTextField(20);
		
		h=new JTextField(20);
		
		j=new JTextField(20);
	
		l=new JTextField(20);
	
		n=new JTextField(20);







        
 
        
        buttonLogin = new JButton("插入");
        add(new JLabel("请输入学号"));
        add(b);
        add(new JLabel("请输入姓名"));
        add(d);
	add(new JLabel("请输入性别"));
        add(f);
	add(new JLabel("请输入出生日期"));
        add(h);
	add(new JLabel("请输入数学成绩"));
        add(j);
	add(new JLabel("请输入JAVA成绩"));
        add(l);
	add(new JLabel("请输入体育成绩"));
        add(n);
	crqd=new Charuqueding();
		crqd.setView(this);
		buttonLogin.addActionListener(crqd);
        add(buttonLogin);
    }
    
}

2.插入视图的监视器  (主要使用预处理语句和使用通配符向数据库插入信息)

import java.awt.event.*;
import java.sql.*;
public class Charuqueding implements ActionListener {
	
	CrView view;
	public void setView(CrView view){
		this.view=view;
	}//补充窗体类!!!!!!!!!!!!!!!!!!!!!!!!!!
	

		public void actionPerformed (ActionEvent e) {
			String bb=view.b.getText();
		String dd=view.d.getText();
		String ff=view.f.getText();
		String hh=view.h.getText();
		String jj=view.j.getText();
		String ll=view.l.getText();
		String nn=view.n.getText();
		//System.out.println(dd+ff+hh+jj+ll+nn);
		try{
			Connection con=GetDBConnection.connectDB("student","root","");
			String add="insert into chengji values (?,?,?,?,?,?,?)";
			PreparedStatement sql=con.prepareStatement(add);
			sql.setString (1,bb);
			sql.setString (2,dd);
			sql.setString (3,ff);
			sql.setString (4,hh);
			sql.setString (5,jj);
			sql.setString (6,ll);
			sql.setString (7,nn);
			int ok=sql.executeUpdate();
			con.close();
		}
		catch(SQLException ex){
			System.out.println(ex);
		}
		}
}

(二)查询

1.查询视图

import java .awt.*;
import javax.swing.*;
import java.awt.event.*;
import static javax.swing.JFrame.*;
public class CxView extends JPanel {
	public JTextField b;
	
	
	JButton buttonLogin;
	Chaxunqueding cxqd;
   CxView() {






		
		b=new JTextField(20);
	


        
        buttonLogin = new JButton("查询");
        add(new JLabel("请输入学号"));
        add(b);
        
	cxqd=new Chaxunqueding();
		cxqd.setView(this);
		buttonLogin.addActionListener(cxqd);
        add(buttonLogin);
    }
    
}

2.查询视图监视器和插入视图的监视器套路一样,只不过用的sql语句不一样

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.JOptionPane;
public class Chaxunqueding implements ActionListener {
	
	CxView view;
	ResultSet rs;
	String a;
	String b;
	String c;
	String d;
	String ee;
	String f;
	String g;
	public void setView(CxView view){
		this.view=view;
	}//补充窗体类!!!!!!!!!!!!!!!!!!!!!!!!!!
	

		public void actionPerformed (ActionEvent e) {
			String bb=view.b.getText();
		
		try{
			Connection con=GetDBConnection.connectDB("student","root","");
			String add="select * from chengji where 学号=?";
			PreparedStatement sql=con.prepareStatement(add);
			sql.setString (1,bb);
			rs=sql.executeQuery();
			while (rs.next())
			{
				a=rs.getString(1);
				b=rs.getString(2);
				c=rs.getString(3);
				d=rs.getString(4);
				ee=rs.getString(5);
				f=rs.getString(6);
				g=rs.getString(7);
  			}
				
			

		}
		catch(SQLException ex){
			System.out.println(ex);
		}



		JFrame win =new JFrame();
			JTextField ff=new JTextField(300);
			
			win.setBounds(100,100,800,260);
			ff.setText("学号"+a+" "+"姓名"+b+" "+"性别"+c+" "+"出生日期"+d+" "+"数学"+ee+" "+"JAVA"+f+" "+"体育"+g);
			win.add(ff,BorderLayout.CENTER);
			
			win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        			win.setVisible(true);
		}
}

(三)删除

1.删除视图

import java .awt.*;
import javax.swing.*;
import java.awt.event.*;
import static javax.swing.JFrame.*;
public class ScView extends JPanel {
	public JTextField b;
	
	
	JButton buttonLogin;
	Shanchuqueding scqd;
   ScView() {






		
		b=new JTextField(20);
	


        
        buttonLogin = new JButton("删除");
        add(new JLabel("请输入学号"));
        add(b);
        
	scqd=new Shanchuqueding();
		scqd.setView(this);
		buttonLogin.addActionListener(scqd);
        add(buttonLogin);
    }
    
}

2.删除视图监视器(增删改查套路一样,只是sql语句和小细节不同)

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.JOptionPane;
public class Shanchuqueding implements ActionListener {
	
	ScView view;
	
	String a;
	String b;
	String c;
	String d;
	String ee;
	String f;
	String g;
	public void setView(ScView view){
		this.view=view;
	}//补充窗体类!!!!!!!!!!!!!!!!!!!!!!!!!!
	

		public void actionPerformed (ActionEvent e) {
			String bb=view.b.getText();
		
		try{
			Connection con=GetDBConnection.connectDB("student","root","");
			String add="delete from chengji where 学号=?";
			PreparedStatement sql=con.prepareStatement(add);
			sql.setString (1,bb);
			int ok=sql.executeUpdate();
			
				
			

		}
		catch(SQLException ex){
			System.out.println(ex);
		}



		
		}
}

(四)修改

1.修改视图

import java .awt.*;
import javax.swing.*;
import java.awt.event.*;
import static javax.swing.JFrame.*;
public class XgView extends JPanel {
	public JTextField b;
	public JTextField c;
	public JTextField d;
	public JTextField e;
	JButton buttonLogin;
	Xiugaiqueding xgqd;
   XgView() {
		





		
		b=new JTextField(60);
		


        
        buttonLogin = new JButton("修改");
        add(new JLabel("请按数据库更新语句输入要修改的信息(不懂请看课本P400)"));
	add(b);

	
	xgqd=new Xiugaiqueding();
		xgqd.setView(this);
		buttonLogin.addActionListener(xgqd);
        add(buttonLogin);
	
    }
    
}

2.修改试图监视器(增删改查套路一样,只是sql语句和小细节不同)

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.JOptionPane;
public class Xiugaiqueding implements ActionListener {
	
	XgView view;
	
	String a;
	String b;
	String c;
	String d;
	String ee;
	String f;
	String g;
	public void setView(XgView view){
		this.view=view;
	}//补充窗体类!!!!!!!!!!!!!!!!!!!!!!!!!!
	

		public void actionPerformed (ActionEvent e) {
			String bb=view.b.getText();
		try{
			Connection con=GetDBConnection.connectDB("student","root","");
			String add=bb;
			

			Statement sql=con.createStatement();
			
			
			int ok=sql.executeUpdate(add);
			
			

		}
		catch(SQLException ex){
			System.out.println(ex);
		}



		
		}
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
asp+sql学生成绩管理系统 1.将score文件夹复制到C:\Inetpub\wwwroot目录下,然后右键我的电脑/管理/服务和应用程序/internet信息服务/右键网站/主目录/将脚本资源访问,读取两项选取/下面的执行权限不选无即可,然后在网站默认网站上右键/看看启动选项是否可点/如果是灰色的表面已经启动服务,否则点击启动,接着测试服务器运行是否正常,在默认网站上右键/浏览,如果旁边窗口打开了一个页面表示服务器运行正常,则进入第二步,出错表明服务器有错误, 2.首先将你的数据库还原,打开sql2000企业管理器新建一个score数据库,建好后在其上右键还原数据库,然后添加文件选中从设备添加,找到score文件夹下的score文件,如果看不到请将score文件添加后缀名.bat,然后重新添加,接着看看还原的选项有覆盖,强制的尽量选中,然后确定即可 3.打开dreamweaver,如果没有去网上搜索dreamweaver8.0一大堆的,单击最上面一排的站点/新建站点,名字为score,第二栏的http地址填http://127.0.0.1/score,然后点下一步,选择“是,我想使用服务器技术”,哪种技术下选ASP VBScript,接着点下一步,选择第一个在本地进行编辑和测试,你将把文件存储在计算机什么位置填c:\inetpub\wwwroot\score,下一步,里面默认的是http://localhost/score/,点测试应该没问题的,有问题也直接跳过,点下一步,选择否,然后点完成,接着弹出一个小窗口点完成,站点的文件就会出现在旁边.) 4.在dreamweaver里面打开SQLDB.asp,将18行的SERVER后面的改为你自己的服务器名称,不知道名称桌面左下角开始菜单所有程序找到micro sql server,打开服务管理器,然后服务器后面的那个就是你的服务器名称,复制它,然后回到sqldb.asp,将它替代原来的名称接着后面的UID和PWD是你的数据库服务器用户名和密码,这个文件实在搞不清楚建议你卸了你的sql server2000重新安装,注意在安装的时候选择windows系统用户名和混合模式,混合模式里面的密码就是你数据库服务器的默认密码,用户名是sa,那么你在sqldb.asp中UID=sa;PWD=你安装时填的混合模式密码,DataBase=后面的是你的数据库名称,这个不用改了 (可以直接在记事本里修改) 5.测试。在dreamweaver中右边的列表中找到sqldb.asp/右键/在浏览器中浏览/选择一个浏览器,如果打开的是一个空白,那么成功了! 6.如果成功了。在login.asp上右键浏览,打开的是系统登录页面.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值