java開發簡單的用戶管理系統


學習完java基礎后,自己練了練用MySql作為數據存儲的簡單用戶管理系統,這是一個沒有界面的管理系統,看起來比較枯燥,先給出幾張截圖吧。

首先預覽一下包結構吧

主類是Start.java

import com.menu.MainMenu;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.bean.Userinfo;
import com.utils.DBUtil2;

public class Start {

	public static Userinfo loginuser=new Userinfo();
	public static DBUtil2 db=DBUtil2.getInstance();
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Menu menu=new MainMenu();
		while(menu != null){
			//顯示內容
			menu.showInfro();
			Item item=menu.pickItem();
			menu=item.excute();
		}
		System.out.println("謝謝使用,再見,拜拜!");
	}
}

用兩個接口來規范

第一個是菜單接口,抽象了兩個抽象方法,

package com.nensoft.bean;

public interface Menu {

	//顯示菜單
	void showInfro();
	//提供選項(對象)
	Item pickItem();
}

第二個是,菜單項接口,抽象的是菜單執行的方法

public interface Item {

	//執行功能
	Menu excute();
}

UserInfo是用來記錄當前用戶信息的

package com.nensoft.bean;
//實體類entity
public class Userinfo {

	private int id;
	private String username;
	private String password;
	private String email;
	private int power;
	//無參構造器與框架有關
	public Userinfo(){
		
	}

	public Userinfo(int id, String username, String password, String email, int power) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.email = email;
		this.power = power;
	}


	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public int getPower() {
		return power;
	}

	public void setPower(int power) {
		this.power = power;
	}
	
}

com.Menu包

權限分為普通用戶菜單(NormalMenu)和管理員菜單(AdminMenu)

import com.adminmenuitem.AddUser;
import com.adminmenuitem.DeleteUser;
import com.adminmenuitem.ModifyUser;
import com.adminmenuitem.SerchUser;
import com.mainmenuitem.Exit;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.start.Start;
import com.normalmenu.ModifySelfInfo;
import com.normalmenu.SerchSelfInfo;
import com.utils.ConsoleUtil;

public class AdminMenu implements Menu{

	public void showInfro() {
		// TODO Auto-generated method stub
		System.out.println("==============");
		System.out.println("歡迎登錄主窗體!");
		System.out.println(Start.loginuser.getUsername()+" 您好!        "+"您的權限是:管理員");
		System.out.println("添加用戶---------1");
		System.out.println("刪除用戶---------2");
		System.out.println("修改用戶---------3");
		System.out.println("查詢用戶---------4");
		System.out.println("退出程序---------5");
		
	}

	public Item pickItem() {
		// TODO Auto-generated method stub
		Item item=null;
		int option=ConsoleUtil.getOption(1, 5);
		switch(option){
		case 1:
			item=new AddUser();
			break;
		case 2:
			item=new DeleteUser();
			break;
		case 3:
			item=new ModifyUser();
			break;
		case 4:
			item=new SerchUser();
			break;
		case 5:
			item=new Exit();
			break;
		}
		return item;
	}


}

import com.mainmenuitem.Exit;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.start.Start;
import com.normalmenu.ModifySelfInfo;
import com.normalmenu.SerchSelfInfo;
import com.utils.ConsoleUtil;

public class NormalMenu implements Menu{

	public void showInfro() {
		// TODO Auto-generated method stub
		System.out.println("==============");
		System.out.println("歡迎登錄主窗體!");
		System.out.println(Start.loginuser.getUsername()+" 您好!        "+"您的權限是:普通用戶");
		System.out.println("修改自己的信息---------1");
		System.out.println("查詢自己的信息---------2");
		System.out.println("退出程序--------------3");
	}

	public Item pickItem() {
		// TODO Auto-generated method stub
		Item item=null;
		int option=ConsoleUtil.getOption(1, 3);
		switch(option){
		case 1:
			item=new ModifySelfInfo();
			break;
		case 2:
			item=new SerchSelfInfo();
			break;
		case 3:
			item=new Exit();
		}
		return item;
	}

}

還有一個主菜單,用於顯示登錄界面的

import com.mainmenuitem.Exit;
import com.mainmenuitem.LoginItem;
import com.mainmenuitem.RegItem;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.utils.ConsoleUtil;

public class MainMenu implements Menu{

	public void showInfro() {
		// TODO Auto-generated method stub
		System.out.println("歡迎使用neusoft用戶管理系統");
		System.out.println("===================");
		System.out.println("用戶登錄===========1");
		System.out.println("用戶注冊===========2");
		System.out.println("用戶退出===========3");
		
	}

	public Item pickItem() {
		// TODO Auto-generated method stub
		Item item=null;
		//
		int option =ConsoleUtil.getOption(1, 3);
		switch(option){
		case 1:
			item=new LoginItem();
			break;
			
		case 2:
			item =new RegItem();
			break;
		case 3:
			item=new Exit();
		}
		return item;
	}

}

另外一個是管理員的查詢菜單


import com.adminmenuitem.ReturnMenu;
import com.adminmenuitem.SerchUser;
import com.mainmenuitem.Exit;
import com.mainmenuitem.LoginItem;
import com.mainmenuitem.RegItem;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.serchuser_item.SerchAllUser;
import com.serchuser_item.SerchOneUser;
import com.utils.ConsoleUtil;

public class SerchUserMenu implements Menu{

	public void showInfro() {
		// TODO Auto-generated method stub
		System.out.println("============");
		System.out.println("查詢所有用戶--------1");
		System.out.println("查詢單個用戶--------2");
		System.out.println("返回--------------3");
	}

	public Item pickItem() {
		// TODO Auto-generated method stub
		Item item=null;
		//
		int option =ConsoleUtil.getOption(1, 3);
		switch(option){
		case 1:
			item=new SerchAllUser();
			break;
			
		case 2:
			item =new SerchOneUser();
			break;
		case 3:
			item=new ReturnMenu();
		}
		return item;
	}

}

有一個工具類,包括數據庫的連接,以及對用戶輸入數據的檢測是否規范,com.util包

package com.utils;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.Format;
import java.util.Properties;

public class DBUtil2 {
	private static DBUtil2 db;
	private String url;
	private String username;
	private String password;
	private String driver;
	private DBUtil2(){
		Properties properties=new Properties();
		try {
			properties.load(this.getClass().getClassLoader().getResourceAsStream("db.properties"));
			driver=properties.getProperty("driver");
			url=properties.getProperty("url");
			username=properties.getProperty("username");
			password=properties.getProperty("password");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static DBUtil2 getInstance(){
		if(db==null){
			db = new DBUtil2();
		}
		return db;
	}
	public Connection getConnect() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Connection conn=null;
		try {
			conn = DriverManager.getConnection(url,username,password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	public void close(Connection item){
		if(item!=null){
			try {
				item.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	public void close(ResultSet item){ 
		if(item!=null){
			try {
				item.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	public void close(PreparedStatement item){
		if(item!=null){
			try {
				item.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
}

工具類


package com.utils;

import java.util.Scanner;

public class ConsoleUtil {

	public static int getOption(int low,int high){
		while(true){
			Scanner scan=new Scanner(System.in);
			System.out.println("請選擇");
			try{
				int num=scan.nextInt();
				if(num<low || num> high){
					System.out.println("數值非法,重新選擇");
				}else{
					return num;
				}
			}catch(Exception e){
				
			}
		}
	}
	public static String getString(){
		while(true){
			Scanner scan=new Scanner(System.in);
			//System.out.println("請選擇");
			String str=scan.nextLine();
			if(str !=null && str.trim()!=""){
				return str;
			}else{
				System.out.println("錯誤");
			}
		}
	}
	public static String getEmail(){
		while(true){
			Scanner scan=new Scanner(System.in);
			String email=scan.nextLine();
			/*
			 * 必須有@
			 * 不能有多個@和。
			 * @不能在.前面
			 * @不能開頭,。不能結尾
			 */
			if(email.indexOf("@") ==-1|| email.indexOf(".")==-1){
				System.out.println("郵箱中必須有@和.");
			}else if(email.indexOf("@") != email.lastIndexOf("@") || email.indexOf(".")!=
					email.lastIndexOf(".")){
				System.out.println("郵箱中不能有多個@和.");
			}else if(email.startsWith("@")  || email.endsWith(".")){
				System.out.println("郵箱中不能@開頭和.結尾");
			}else{
				return email;
			}
		}
	}
	
}

主菜單包下包括用戶登錄類,注冊類,

package com.mainmenuitem;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.menu.AdminMenu;
import com.menu.MainMenu;
import com.menu.NormalMenu;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.bean.Userinfo;
import com.nensoft.start.Start;
import com.utils.ConsoleUtil;
import com.utils.DBUtil2;

public class LoginItem implements Item{

	
	public Menu excute() {
		// TODO Auto-generated method stub
		System.out.println("用戶登錄界面");
		System.out.println("==============");
		System.out.println("請輸入你的用戶名:");
		String username= ConsoleUtil.getString();
		System.out.println("請輸入你的密碼:");
		String password= ConsoleUtil.getString();
		Connection con=Start.db.getConnect();
		PreparedStatement ps=null;
		try {
			ps=con.prepareStatement("select * from userinfo where username=?");
			ps.setString(1, username);
			ResultSet st=ps.executeQuery();
			if(st.next()){
				Userinfo userinfo=new Userinfo();
				userinfo.setId(st.getInt("id"));
				userinfo.setUsername(st.getString(2));
				userinfo.setPassword(st.getString(3));
				userinfo.setEmail(st.getString(4));
				userinfo.setPower(st.getInt(5));
				System.out.println("登錄成功");
				Start.loginuser=userinfo;
				if(userinfo.getPower()== 0){
					return (Menu) new NormalMenu();
				}else{
					return (Menu) new AdminMenu();
				}
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return (Menu) new MainMenu();
	}

}

注冊類

package com.mainmenuitem;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.menu.MainMenu;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.start.Start;
import com.utils.ConsoleUtil;
import com.utils.DBUtil;
import com.utils.DBUtil2;

public class RegItem implements Item{

	
	public Menu excute() {
		// TODO Auto-generated method stub
		System.out.println("用戶注冊界面");
		System.out.println("==========");
		System.out.println("請輸入你的用戶名");
		String username=ConsoleUtil.getString();
		System.out.println("請輸入你的密碼:");
		String password = ConsoleUtil.getString();
		System.out.println("請輸入你的郵箱:");
		String email= ConsoleUtil.getEmail();
		Connection con=Start.db.getConnect();
		PreparedStatement ps=null;
		try {
			ps=con.prepareStatement("select * from userinfo where username=?");
			ps.setString(1, username);
			ResultSet st=ps.executeQuery();
			if(st.next()){
				System.out.println(st);
				System.out.println("此用戶已被占用");
			}else{
				ps=con.prepareStatement("insert into userinfo(username,password,email) values(?,?,?)");
				ps.setString(1, username);
				ps.setString(2, password);
				ps.setString(3, email);
				ps.executeUpdate();
				con.setAutoCommit(true);
				System.out.println("注冊成功!");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return new MainMenu();
	}

}

普通用戶菜單項包com.normalusermenu

修改本人的信息

package com.normalmenu;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.menu.NormalMenu;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.start.Start;
import com.utils.ConsoleUtil;
import com.utils.DBUtil2;

public class ModifySelfInfo implements Item{

	
	public Menu excute() {
		// TODO Auto-generated method stub
		System.out.println("================");
		System.out.println("您現在的信息是:");
		System.out.println(Start.loginuser.getId()+"  |  "+Start.loginuser.getUsername()+"  |  " +
				Start.loginuser.getPassword()+"  |  "+Start.loginuser.getEmail()+"  |  "+
				(Start.loginuser.getPower()==0?"普通用戶":"管理員"));
		System.out.println("================");
		System.out.println("請輸入您要修改的姓名:");
		String username=ConsoleUtil.getString();
		System.out.println("請輸入您要修改的密碼:");
		String password=ConsoleUtil.getString();
		System.out.println("請輸入您要修改的郵箱:");
		String email=ConsoleUtil.getString();
		Connection conn=Start.db.getConnect();
		PreparedStatement ps=null;
		ResultSet rs=null;
		
		try {
			ps=conn.prepareStatement("select * from userinfo where username=? and id!=?");
			ps.setString(1, username);
			ps.setInt(2,Start.loginuser.getId());
			rs=ps.executeQuery();
			if(rs.next()){
				System.out.println("用戶名已被占用!  請重新輸入...");
				username=ConsoleUtil.getString();
			}else{
				conn.setAutoCommit(false);
				ps=conn.prepareStatement("update userinfo set username=?,password=?,email=? where id="+Start.loginuser.getId());
				ps.setString(1,username);
				ps.setString(2, password);
				ps.setString(3, email);
				ps.executeUpdate();
				conn.commit();
				Start.loginuser.setUsername(username);  //修改完數據庫的信息后還要同時修改用戶類(UserInfo)的屬性
				Start.loginuser.setPassword(password);
				Start.loginuser.setEmail(email);
				System.out.println("修改成功!");
				
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Start.db.close(rs);
		Start.db.close(ps);
		Start.db.close(conn);
		return new NormalMenu();
	}

}

查詢個人信息

package com.normalmenu;

import com.menu.NormalMenu;
import com.nensoft.bean.Item;
import com.nensoft.bean.Menu;
import com.nensoft.start.Start;

public class SerchSelfInfo implements Item{

	public Menu excute() {
		// TODO Auto-generated method stub
		System.out.println("================");
		System.out.println("您現在的信息是:");
		System.out.println(Start.loginuser.getId()+"  |  "+Start.loginuser.getUsername()+"  |  " +
				Start.loginuser.getPassword()+"  |  "+Start.loginuser.getEmail()+"  |  "+
				(Start.loginuser.getPower()==0?"普通用戶":"管理員"));
		return new NormalMenu();
	}

}

這里只列出了部分主要代碼,要查看全部代碼請到我的GitHub里去看

代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM