Java课程设计8

package com.imau.entry;
/*
*

  • 用户表
    */
    public class User {

    private Long id;
    private String uname;
    private String upass;
    private String utel;

    public User(){

    }

    public User(Long id,String uname,String upass,String utel){

     this.id= id;
     this.uname=uname;
     this.upass=upass;
     this.utel=utel;
    

    }

    public User(String uname,String upass,String utel){

     this.uname=uname;
     this.upass=upass;
     this.utel=utel;
    

    }

    public Long getId(){
    return id;
    }
    public void setId(Long id){
    this.id=id;

    }
    public String getUname(){
    return uname;
    }
    public void setUname(String uname){
    this.uname=uname;

    }
    public String getUpass(){
    return upass;
    }
    public void setUpass(String upass){
    this.upass=upass;

    }
    public void setUtel(String utel){
    this.utel=utel;
    }
    public String getUtel(){
    return utel;
    }

    @Override
    public String toString() {
    return “User [id=” + id + “, uname=” + uname + “, upass=” + upass + “, utel=” + utel + “]”;
    }

}
package com.iamu.view;

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

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import com.iamu.controller.UserController;
import com.iamu.view.Login.MyListener;
import com.imau.base.BaseFrame;
import com.imau.entry.User;
import com.imau.util.UserInfo;

public class UserPassEditView extends BaseFrame {

 private UserController controller;

  private JLabel  loldPass;
  private JLabel  lnewPass;
  private JLabel  lnewPassConfim;
  
	
  private JPasswordField  toldPass;
  private JPasswordField  tnewPass;
  private JPasswordField  tnewPassConfim;
  private JButton submit,cancel;
  
  private JPanel panel;
	//构造方法
	public UserPassEditView(){
		controller=new UserController();
		this.setJMenuBar(initMenu());
		init();
		setFrame();
	
		
		
	}
  
  private void init(){
	  loldPass=new JLabel("旧密码");
	  lnewPass=new JLabel("新密码");
	  lnewPassConfim=new JLabel("确认新密码");
	  
	  toldPass=new JPasswordField(10);
	  tnewPass=new JPasswordField(10);
	  tnewPassConfim=new JPasswordField(10);
      
		
		submit=new JButton ("确认");
		cancel=new JButton ("取消");
		
		panel=new JPanel();
		
		
		panel.add(loldPass);
		panel.add(toldPass);
		
		panel.add(lnewPass);
		panel.add(tnewPass);
		
		panel.add(lnewPassConfim);
		panel.add(tnewPassConfim);

		panel.add(submit);
		panel.add(cancel);
		
		this.add(panel);
		
	}
  private void initEvnet(){
	  submit.addActionListener(new MyListener2());
	  cancel.addActionListener(new MyListener2());
		
	}
  class MyListener2 implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			
			String newPass=tnewPass.getText();
			String oldPass=toldPass.getText();
			String newPassConfim=tnewPassConfim.getText();
		
			
			//判断旧密码是否正确
			
			if(!UserInfo.getUser().getUpass().equals(oldPass)){
				
				System.out.println("旧密码输入不正确");
			}
			
			
			//新密码和确认密码一样
			if(!newPass.equals(newPassConfim)){
				
				System.out.println("两次密码输入不一致");
			}
			User user=	UserInfo.getUser();
			user.setUpass(newPass);
		controller.editPass(user);
		}
	}
	
  
	
  }

package com.imau.dao.base;

import java.beans.FeatureDescriptor;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import com.iamu.jdbc.DBUtils;
import com.imau.util.SqlType;
import com.imau.util.Sqlutil;

//数据库操作的基本父类
public class DaoImpl implements Dao {

private Connection conn;
private  PreparedStatement pstm;
private  ResultSet rs;

private T t2;



private String sql;

//反射
Class<T> type;
private FeatureDescriptor method;
//获取T的class对象,获取泛型的类型,泛型是在被子类继承时才确定
public  DaoImpl()
{
	//给反射泛型
	//获取子类的类型
	Class clazz=this.getClass();
	//获取父类的类型
	//getGenericSuperclass()用来获取当前类的父类的类型
	//ParameterizedType表示的是带泛型的类型
	ParameterizedType  parameterizedType=(ParameterizedType) clazz.getGenericSuperclass();
	
	//获取具体的泛型类型getActualTypeArguments获取具体的泛型的类型
	//这个方法会返回一个type的数组
	Type[] types=parameterizedType.getActualTypeArguments();
	//获取具体的泛型的类型
	this.type=(Class<T>) types[0];
}

@Override
public int add(T t) {
	try{
		sql=Sqlutil.getSql(t,1);
		//1.获取连接
		conn=DBUtils.getConn();
	    //2.执行命令
		pstm=conn.prepareStatement(sql);
		//3.填充占位符    如何调用对象的get方法
		Sqlutil.initPstm(t,pstm,SqlType.Insert);
		//4.执行命令
		int row=pstm.executeUpdate();
		//5.关闭连接
		DBUtils.close(conn,pstm,null);
		return row;
	}catch(Exception e){
		
		e.printStackTrace();
	}
	
	
	return 0;
}
//按照主键

@Override
public int delete(T t) {
	try{
		
		sql=Sqlutil.getSql(t, 2);
		conn=DBUtils.getConn();
		pstm=conn.prepareStatement(sql);
		Sqlutil.initPstm(t, pstm, SqlType.Delete);
	
		//3.处理结果
		int row=pstm.executeUpdate();
		//4.关闭连接
		DBUtils.close(conn,pstm,null);
		return row;
	}catch(Exception e){
		
		e.printStackTrace();
	}

	return 0;
}

@Override
public int update(T t) {
	try{
	sql=Sqlutil.getSql(t, 3);	
		//1.获取连接
		conn=DBUtils.getConn();
     	pstm=conn.prepareStatement(sql);
		//2.2填充占位符    如何调用对象的get方法
   		Sqlutil.initPstm(t, pstm, SqlType.Update);
		//3.处理结果
		int row=pstm.executeUpdate();
		//4.关闭连接
		DBUtils.close(conn,pstm,null);
		return row;
	}catch(Exception e){
		
		e.printStackTrace();
	}
	
	

	return 0;
}

 //用户对象:

@Override
public T find(T t) {
	
	try{
		
	
		t2=type.newInstance();
	sql=Sqlutil.getSql(t, 4);	

		//1.获取连接
		conn=DBUtils.getConn();
     	pstm=conn.prepareStatement(sql);
		//2.2填充占位符    如何调用对象的get方法
   		Sqlutil.initPstm(t, pstm, SqlType.Query);
		//3.查询
		rs=pstm.executeQuery();
		//4.处理结果
      Sqlutil.handlerRs((Class<T>) t2, rs);
		
	
		//5.关闭连接
		DBUtils.close(conn,pstm,rs);
		
	}catch(Exception e){
		
		e.printStackTrace();
	}
	
	
	
	return t2;
}

public void fieldVau(T t,Field fields[],String colName,Object colVau){
	
	for(Field field:fields){
		try{
			//找到对应的属性:int和integer类型可以互相转换的;拆箱
		if(field.getName().equals(colName)&&!colName.equals("id")){
				
				//属性描述
				PropertyDescriptor pd=new PropertyDescriptor(field.getName(),t.getClass());
				//属性可读的方法
				System.out.println(method.getName()+","+colVau);
				Method method=pd.getReadMethod();
				//强制访问方法
			
				
		
			
				
			
		}
			
					
		
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	}
	//System.out.println(t);

//t:对象放的查询条件值:查询条件语句
@Override
public List query(T t) {

	ArrayList<T> list;
	
	
	try{
		
		
		t2=type.newInstance();
	sql=Sqlutil.getSql(t, 4);	

		//1.获取连接
		conn=DBUtils.getConn();
     	pstm=conn.prepareStatement(sql);
		//2.2填充占位符    如何调用对象的get方法
   		Sqlutil.initPstm(t, pstm,SqlType.Query);
		//3.查询
		rs=pstm.executeQuery();
		//4.处理结果
     list= (ArrayList<T>) Sqlutil.handlerRs(type, rs);
		
	
		//5.关闭连接
		DBUtils.close(conn,pstm,rs);
		
		
		return list;
		
	}catch(Exception e){
		
		e.printStackTrace();
	}
	
	
	
	return null;

}

	@Override
	public List<T> query(Object field, String oper,Object  arg) {
		ArrayList<T> list;
		
		
		try{
			
			
			t2=type.newInstance();
		sql=Sqlutil.getSql(type,field, oper);	
	  System.out.println(sql);
			//1.获取连接
			conn=DBUtils.getConn();
	     	pstm=conn.prepareStatement(sql);
			//2.2填充占位符    如何调用对象的get方法
       		pstm.setObject(1,arg);
			//3.查询
			rs=pstm.executeQuery();
			//4.处理结果
	     list= (ArrayList<T>) Sqlutil.handlerRs(type, rs);
			
		
			//5.关闭连接
			DBUtils.close(conn,pstm,rs);
			
			
			return list;
			
		}catch(Exception e){
			
			e.printStackTrace();
		}
		
		
		
		return null;
	}



}

package com.imau.util;

import java.beans.FeatureDescriptor;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import com.imau.entry.User;
import com.mysql.jdbc.PreparedStatement;

public class Sqlutil {

private static final FeatureDescriptor method = null;
private static String tableName="";
private static String sql="";
private static StringBuffer sflied=new StringBuffer();
private static StringBuffer sValue=new StringBuffer();
private static StringBuffer sfield;
private static Object t;

//填充预处理命令占位符

public static <T> PreparedStatement initPstm(T t,java.sql.PreparedStatement pstm,SqlType sqlType){
	
	Field fields[]=t.getClass().getDeclaredFields();
	try{
		for (int i=0;i<fields.length;i++){
			
			//属性描述
			PropertyDescriptor pd=new PropertyDescriptor(fields[i].getName(),t.getClass());
			//属性可读的方法
			Method method=pd.getReadMethod();
			//添加  修改
			if(sqlType==SqlType.Insert){
				//排除主键
				if(i!=0){
					pstm.setObject(i, method.invoke(t));
				}
				
			}else if( sqlType==SqlType.Update){
				//排除主键
				if(i==0){
				
					//upate ewt nds where id=?
					pstm.setObject(fields.length, method.invoke(t));
			
				}else{
					pstm.setObject(i, method.invoke(t));
				}
			}else if( sqlType==SqlType.Delete)//删除
			{
				//字段是否是主键
				if(fields[i].getName().equals("id")){
					pstm.setObject(i, method.invoke(t));
				}
				
				int flag=0;
				
				Object v=method.invoke(t);
        		
        		if(v!=null ){
        			pstm.setObject(1,v);
        			}
        			
        			
        			
        		}

        		}
	
		} catch (Exception e){
		
		e.printStackTrace();
	}
	return null ;
}

//返回sql语句1  2   3   4  

public static  <T> String getSql(T t,int sqlType){
	
	
	tableName=t.getClass().getSimpleName().toLowerCase();
	
	
	
	if(sqlType==1){
		sql="insert into"+tableName+"(";
		
		
    Field fields[]=t.getClass().getDeclaredFields();
		
		for (int i=1;i<fields.length;i++){
			
			if(i!=fields.length-1){
				sflied.append(fields[i].getName()).append(",");
				sValue.append("?");

			}else{
				sflied.append(fields[i].getName());
				sValue.append("?");
			}
			
			
		}
		
		
		sql=sql+sflied.toString()+") values("+sValue.toString()+")";
	}
    if(sqlType==2){
    	
    	String sql="delete from "+tableName+" where id = ?";
    	
    	
	}
    if(sqlType==3){
    	
    	sql="update"+tableName+" set ";
    		
				

			Field fields[]=t.getClass().getDeclaredFields();
			
			for (int i=1;i<fields.length;i++){
				
				if(i!=fields.length-1){
					sflied.append(fields[i].getName()).append("=").append("?,");
			

				}else{
					sflied.append(fields[i].getName()).append("=").append("?");
					
				}
				
				
			}
			
			
			sql=sql+sflied+" where id=?";

}
//new User(“ddd”,“123456”,“12355”)
if(sqlType==4){

    	try{
    		int flag=0;
    		
    		
    		sql="select *from"+tableName+"where uname=? and ss"; 
       	 
            Field fields[]=t.getClass().getDeclaredFields();
        	for (int i=0;i<fields.length;i++){
    			
        		//属性描述
    			PropertyDescriptor pd=new PropertyDescriptor(fields[i].getName(),t.getClass());
    			//属性可读的方法
    			Method method=pd.getReadMethod();
    			
    		Object v=method.invoke(t);
    		
    		if(v!=null ){
    			if(flag!=0){
    				sfield. append("and ");
    				
    				sfield. append(fields[i].getName()).append(" = ? ");	
    				
    			}else{
    				
    				sfield. append(fields[i].getName()).append(" = ? ");
    				flag=1;
    			}
    			
    			
    			
    		}

    		}
        	sql=sql+sfield ;
        			}catch(Exception e){
    		e.printStackTrace();
    	}
    	 
    	 
    
	}
    


	return sql;
}

public static <T> String getSql(Class<T> clazz,Object field,String oper){
	   
	tableName=clazz.getSimpleName().toLowerCase();
    	  sql="select*from"+tableName;
    	  //select*from user where id>?
    	  if(!field.equals(" ") && field!=null ){
    		  
    		  sql=sql+"where"+field+""+oper+" ? ";
    				  
    	  }
    	  return sql;
      }


//处理结果集:映射对象赋值
public static <T> List<T>  handlerRs(Class<T> clazz,ResultSet rs){
	
	ArrayList<T> list=new ArrayList<>();
	
	try{
		
	
		ResultSetMetaData rsmd=rs.getMetaData();
		Field fields[]=clazz.getDeclaredFields();
		while(rs.next()){
			
			T t=clazz.newInstance();
			
			//获取查询数据库的列数
			for(int i=0; i<rsmd.getColumnCount();++i){
				
				//字段列名->对象属性赋值
				String colName =rsmd.getColumnName(i+1);
				Object colVau=rs.getObject(colName);
				fieldVau(t,fields,colName,colVau);
				
			}
			list.add(t);
		}
		
		return list;
		
	}catch(Exception e){
		e.printStackTrace();
	}
	
	return null;
	
	
}

public static void fieldVau(T t,Field fields[],String colName,Object colVau){

	for(Field field:fields){
		try{
			//找到对应的属性:int和integer类型可以互相转换的;拆箱
		if(field.getName().equals(colName)&&!colName.equals("id")){
				
				//属性描述
				PropertyDescriptor pd=new PropertyDescriptor(field.getName(),t.getClass());
				//属性可读的方法
				System.out.println(method.getName()+","+colVau);
				Method method=pd.getReadMethod();
				//属性赋值
			
				method.invoke(t, colVau);
		
			
				
			
		}
			
					
		
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	}

}
package com.imau.dao.base;

import java.util.List;

//数据库操作的基本规范
public interface Dao {

//增删改查
public int add(T t);
public int delete(T t);
public int update(T t);
public T find(T t);
public List<T> query(T t);

public List<T> query(Object field,String oper,Object  arg);

}
package com.imau.util;

public enum SqlType {

 Insert,Delete,Update,Query;

}
package com.iamu.service;

import com.imau.dao.base.UserDao;
import com.imau.dao.user.UserDaoImpl;
import com.imau.entry.User;

public class UserService {

private UserDaoImpl dao;
//在构造方法中初始化
public UserService(){
	dao=new UserDaoImpl();
	
}


//按照用户名密码去查询:admin 123456
public User byNamePass(String uname,String upass) {
	User user=new User();
	user.setUname(uname);
	user.setUpass(upass);

		
	return dao.find(user);
	
	
	
}

  public void editPass(User user){
	  
	  dao.update(user);
	 
 }

}
package com.iamu.controller;

import com.iamu.service.UserService;
import com.imau.entry.User;
import com.imau.util.UserInfo;

public class UserController {
private UserService service;
//初始化
public UserController(){

	service=new UserService();
	
	
}

//请求登录
 public boolean login(String uname,String upass){
	 
	 return service.byNamePass(uname,upass)==null ? false :true;
	 
 }

 public boolean saveUserInfo(String uname,String upass){
	 
	 User user=service.byNamePass(uname,upass);
	 
	 UserInfo.setUser(user);
	 return true;
	 
 }
 
 public void editPass(User user){
	 service.editPass(user);
 }

}
package com.iamu.view;
import java.awt.;
import javax.swing.
;

import com.iamu.controller.UserController;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Login extends JFrame {

private UserController controller;

private JLabel lname;
private JLabel lpass;
private JTextField tname;//用户名是明文
private JPasswordField tpass;//密码不是明文
private JButton login;



private void initEvnet(){
	login.addActionListener(new MyListener());
	
}



private void init(){


	lname=new JLabel("用户名");
	lpass=new JLabel("密码");
	tname=new JTextField(14);
	tpass=new JPasswordField(14);
	login=new JButton ("登录");
	
	
	
	initEvnet();//做调用
	
	this.setLayout(new FlowLayout(FlowLayout.CENTER));
	this.add(lname);
	this.add(tname);
	this.add(lpass);
	this.add(tpass);
	this.add(login);
	Dimension dim=getToolkit().getScreenSize();
	int w=dim.height/2;
	int h=dim.width/2;
	this.setResizable(false);
	this.setTitle("用户登录");
	this.setSize(230,150);
	this.setLocation(w-230/2,h-150/2);
	
	
	this.setVisible(true);
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Login(){
	init();
	controller=new UserController();
}

   public void close(){
	   this.setVisible(false);
   }

//处理器的方法
class MyListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {

	String uname=tname.getText();
	String upass=tpass.getText();
	//检查用户名密码
	if(controller.login(uname, upass)){
		
		//保存用户信息
		controller.saveUserInfo(uname, upass);
		
		//关闭当前页面
		dispose();

		//显示主页面
		new MainView();
		
	}else{
		System.out.println("用户名密码错误");
	}

	
	
}

}
}

package com.iamu.view;

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

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import com.iamu.controller.UserController;
import com.iamu.view.Login.MyListener;
import com.imau.base.BaseFrame;
import com.imau.entry.User;
import com.imau.util.UserInfo;

public class UserPassEditView extends BaseFrame {

 private UserController controller;

  private JLabel  loldPass;
  private JLabel  lnewPass;
  private JLabel  lnewPassConfim;
  
	
  private JPasswordField  toldPass;
  private JPasswordField  tnewPass;
  private JPasswordField  tnewPassConfim;
  private JButton submit,cancel;
  
  private JPanel panel;
	//构造方法
	public UserPassEditView(){
		controller=new UserController();
		this.setJMenuBar(initMenu());
		init();
		setFrame();
	
		
		
	}
  
  private void init(){
	  loldPass=new JLabel("旧密码");
	  lnewPass=new JLabel("新密码");
	  lnewPassConfim=new JLabel("确认新密码");
	  
	  toldPass=new JPasswordField(10);
	  tnewPass=new JPasswordField(10);
	  tnewPassConfim=new JPasswordField(10);
      
		
		submit=new JButton ("确认");
		cancel=new JButton ("取消");
		
		panel=new JPanel();
		
		
		panel.add(loldPass);
		panel.add(toldPass);
		
		panel.add(lnewPass);
		panel.add(tnewPass);
		
		panel.add(lnewPassConfim);
		panel.add(tnewPassConfim);

		panel.add(submit);
		panel.add(cancel);
		
		this.add(panel);
		
	}
  private void initEvnet(){
	  submit.addActionListener(new MyListener2());
	  cancel.addActionListener(new MyListener2());
		
	}
  class MyListener2 implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			
			String newPass=tnewPass.getText();
			String oldPass=toldPass.getText();
			String newPassConfim=tnewPassConfim.getText();
		
			
			//判断旧密码是否正确
			
			if(!UserInfo.getUser().getUpass().equals(oldPass)){
				
				System.out.println("旧密码输入不正确");
			}
			
			
			//新密码和确认密码一样
			if(!newPass.equals(newPassConfim)){
				
				System.out.println("两次密码输入不一致");
			}
			User user=	UserInfo.getUser();
			user.setUpass(newPass);
		controller.editPass(user);
		}
	}
	
  
	
  }

package com.imau.util;

import com.imau.entry.User;

public class UserInfo {

public static User user;

public static void setUser(User u){
	
	user=u;
	
}

public static User getUser(){
	
	return user;
	
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值