標籤:val rgs red java開發 pass http password from 學習
學習完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;//實體類entitypublic 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開發簡單的使用者管理系統