java開發簡單的用戶管理系統
阿新 • • 發佈:2018-07-07
switch .get delete into etop rac stat 工具 property
學習完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();
}
}
這裏只列出了部分主要代碼,要查看全部代碼請到我的Coding裏去看
java開發簡單的用戶管理系統