您的位置:首页 > 编程语言 > Java开发

Java_用户管理程序(使用mysql数据库)

2014-07-16 22:56 459 查看
·Java的初步学习终于告一段落,使用以下的用户管理程序来为自己暂时的Java学习画一个句号吧。(书中附带光盘中也有相关源代码)

IUserDAO.java:

package org.sjs.user.admin.dao;

import java.util.List;

import org.sjs.user.admin.vo.*;

public interface IUserDAO {
//表示数据库的增加操作
public boolean doCreate(User user) throws Exception;

public boolean doUpdate(User user) throws Exception;

//通过ID删除
public boolean doDelete(int id) throws Exception;

//通过ID查询
public User findById(int id) throws Exception;

//查询的时候,将返回一组对象
public List<User> findAll(String keyWord) throws Exception;
}


IUserDAOImpl.java:
package org.sjs.user.admin.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.sjs.user.admin.dao.IUserDAO;
import org.sjs.user.admin.vo.User;

public class IUserDAOImpl implements IUserDAO {
private Connection conn = null;
public IUserDAOImpl(Connection connection){
this.conn = connection;
}
@Override
//增加用户信息  (参数为 某一个用户!!)
public boolean doCreate(User user) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null ;
String sql = "INSERT INTO user(name,sex,birthday) VALUES(?,?,?)";

try{
pstmt = this.conn.prepareStatement(sql);
//所有内容从User中取得!!!
pstmt.setString(1,user.getName());
pstmt.setString(2,user.getSex());
pstmt.setDate(3,new java.sql.Date(user.getBirthday().getTime()));
if(pstmt.executeUpdate()>0){
flag = true;
}else{
flag = false;
}

}catch(Exception e){
throw e ;
}finally{  //不管如何,最终肯定 要执行数据库的关闭操作
if(pstmt!=null){
pstmt.close();
}
}
return flag;
}

@Override
//删除用户信息(参数为 id)
public boolean doDelete(int id) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null ;
String sql = "DELETE FROM user WHERE id=?";

try{
pstmt = this.conn.prepareStatement(sql);
pstmt.setInt(1,id);
if(pstmt.executeUpdate()>0){
flag = true;
}else{
flag = false;
}

}catch(Exception e){
throw e ;
}finally{  //不管如何,最终肯定 要执行数据库的关闭操作
if(pstmt!=null){
pstmt.close();
}
}
return flag;
}

@Override
//更新用户信息(参数为某一个用户!更改id为某特定值的信息)
public boolean doUpdate(User user) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null ;
String sql = "UPDATe user SET name=?,sex=?,birthday=? WHERE id=?";

try{
pstmt = this.conn.prepareStatement(sql);
//所有内容从User中取得!!!
pstmt.setString(1,user.getName());
pstmt.setString(2,user.getSex());
pstmt.setDate(3,new java.sql.Date(user.getBirthday().getTime()));
pstmt.setInt(4,user.getId());
if(pstmt.executeUpdate()>0){
flag = true;
}else{
flag = false;
}

}catch(Exception e){
throw e ;
}finally{  //不管如何,最终肯定 要执行数据库的关闭操作
if(pstmt!=null){
pstmt.close();
}
}
return flag;
}

@Override
//查找用户信息(通过参数id查找!)
public User findById(int id) throws Exception {
User user = null;
PreparedStatement pstmt = null ;
String sql = "SELECT id,name,sex,birthday FROM user WHERE id=?";

try{
pstmt = this.conn.prepareStatement(sql);
//所有内容从User中取得!!!
pstmt.setInt(1,id);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setSex(rs.getString(3));
user.setBirthday(rs.getDate(4));
}
rs.close();
}catch(Exception e){
throw e ;
}finally{  //不管如何,最终肯定 要执行数据库的关闭操作
if(pstmt!=null){
pstmt.close();
}
}
return user;
}

@Override
//查找用户信息(通过参数关键字查找!)
public List<User> findAll(String keyWord) throws Exception {
List<User> all = new ArrayList<User>();
PreparedStatement pstmt = null ;
String sql = "SELECT id,name,sex,birthday FROM user WHERE name LIKE ? OR sex LIKE ? OR birthday LIKE ?";

try{
pstmt = this.conn.prepareStatement(sql);
//所有内容从User中取得!!!
pstmt.setString(1,"%" + keyWord + "%");
pstmt.setString(2,"%" + keyWord + "%");
pstmt.setString(3,"%" + keyWord + "%");
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
User user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setSex(rs.getString(3));
user.setBirthday(rs.getDate(4));
all.add(user); //所有的内容,向集合中插入!
}
rs.close();
}catch(Exception e){
throw e ;
}finally{  //不管如何,最终肯定 要执行数据库的关闭操作
if(pstmt!=null){
pstmt.close();
}
}
return all;
}

}


IUserDAOProxy.java:
package org.sjs.user.admin.dao.proxy;

import java.util.List;

import org.sjs.user.admin.dao.IUserDAO;
import org.sjs.user.admin.dao.impl.IUserDAOImpl;
import org.sjs.user.admin.dbc.DateBaseConnection;
import org.sjs.user.admin.vo.User;

public class IUserDAOProxy implements IUserDAO {
private DateBaseConnection dbc = null;
private IUserDAO dao = null;

public IUserDAOProxy(){
this.dbc = new DateBaseConnection();
this.dao = new IUserDAOImpl(this.dbc.getConnection());
}
@Override
public boolean doCreate(User user) throws Exception {
boolean flag = true;
try{
flag = this.dao.doCreate(user);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
// TODO Auto-generated method stub
return flag;
}

@Override
public boolean doUpdate(User user) throws Exception {
boolean flag = true;
try{
flag = this.dao.doUpdate(user);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
// TODO Auto-generated method stub
return flag;
}

@Override
public boolean doDelete(int id) throws Exception {
boolean flag = true;
try{
flag = this.dao.doDelete(id);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
// TODO Auto-generated method stub
return flag;
}

@Override
public User findById(int id) throws Exception {
User user = null;
try{
user = this.dao.findById(id);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
// TODO Auto-generated method stub
return user;
}

@Override
public List<User> findAll(String keyWord) throws Exception {
List<User> all =null;
try{
all = this.dao.findAll(keyWord);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
// TODO Auto-generated method stub
return all;
}

}


DateBaseConnection.java:
/**
*
*/
package org.sjs.user.admin.dbc;

import java.sql.*;

public class DateBaseConnection {
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn?characterEncoding=utf8";
public static final String DBUSER = "root";
public static final String DBPASS = "mysqladmin";
private Connection conn = null;

public DateBaseConnection(){
//设置驱动
try {
Class.forName(DBDRIVER) ;
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

//连接数据库
try {
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn;
}
//关闭数据库
public void close(){
if(this.conn!=null){
try {
this.conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}


DAOfactroy.java:
package org.sjs.user.admin.factory;

import org.sjs.user.admin.dao.IUserDAO;
import org.sjs.user.admin.dao.proxy.IUserDAOProxy;

public class DAOfactroy {
public static IUserDAO getIUserDAOInstance(){
return new IUserDAOProxy();
}
}


Menu.java:
package org.sjs.user.admin.menu;

import org.sjs.user.admin.operate.UserOperate;
import org.sjs.user.admin.util.InputData;

public class Menu {
public Menu(){
while(true){
this.show();
}
}
public void show(){
System.out.println("---------人员管理系统---------");
System.out.println("  1.增加用户");
System.out.println("  2.修改用户");
System.out.println("  3.删除用户");
System.out.println("  4.查询单个用户");
System.out.println("  5.查询全部用户");
System.out.println("  6.退出系统");
InputData input = new InputData();

int ch = input.getInt("\n请选择: ","请输入正确的选项!");
switch(ch){
case 1:{
UserOperate.insert();
break;
}
case 2:{
UserOperate.update();
break;
}
case 3:{
UserOperate.delete();
break;
}
case 4:{
UserOperate.findId();
break;
}
case 5:{
UserOperate.findAll();
break;
}
case 6:{
System.exit(1);
break;
}
default:{
System.out.println("请选择正确的选项!");
break;
}
}

}
}


UserOperate.java:
package org.sjs.user.admin.operate;

import java.util.Iterator;
import java.util.List;

import org.sjs.user.admin.factory.DAOfactroy;
import org.sjs.user.admin.util.InputData;
import org.sjs.user.admin.vo.User;

public class UserOperate {
public static void insert(){
User user = new User();
InputData input = new InputData();
user.setName(input.getString("请输入姓名:"));
user.setSex(input.getString("请输入性别:"));
user.setBirthday(input.getDate("请输入生日:","内容必须是日期(yyyy-mm-dd)"));
try {
DAOfactroy.getIUserDAOInstance().doCreate(user);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void update(){
InputData input = new InputData();
int id = input.getInt("请输入要查询的编号:","编号必须是数字");
User user = null;
try {
user = DAOfactroy.getIUserDAOInstance().findById(id);
} catch (Exception e) {
e.printStackTrace();
}
if(user != null){
user.setName(input.getString("请输入姓名(原姓名:" + user.getName() + "):"));
user.setSex(input.getString("请输入性别(原姓名:" + user.getSex() + "):"));
user.setBirthday(input.getDate("请输入生日(原姓名:" + user.getBirthday() + "):","内容必须是日期(yyyy-mm-dd)"));
try {
DAOfactroy.getIUserDAOInstance().doUpdate(user);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("输入的编号不存在!");
}
}
public static void delete(){
InputData input = new InputData();
int id = input.getInt("请输入要删除的用户编号:","编号必须是数字");
try {
DAOfactroy.getIUserDAOInstance().doDelete(id);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void findId(){
InputData input = new InputData();
int id = input.getInt("请输入要查询的编号:","编号必须是数字");
User user = null;
try {
user = DAOfactroy.getIUserDAOInstance().findById(id);
} catch (Exception e) {
e.printStackTrace();
}
if(user != null){
System.out.println(user);
}else{
System.out.println("输入的编号不存在!");
}
}
public static void findAll(){
InputData input = new InputData();
String keyWord = input.getString("请输入要查询的关键字:");
List<User> allUser = null;
try {
allUser = DAOfactroy.getIUserDAOInstance().findAll(keyWord);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Iterator<User> iter = allUser.iterator();
while(iter.hasNext()){
User user = iter.next();
System.out.println(user);
}
}
}


TestUserAdmin.java:
package org.sjs.user.admin.test;

import org.sjs.user.admin.menu.Menu;

public class TestUserAdmin {
public static void main(String args[]){
new Menu();
}
}


InputData.java:
package org.sjs.user.admin.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class InputData {
private BufferedReader buf = null;
public InputData(){
this.buf = new BufferedReader(new InputStreamReader(System.in));

}
public int getInt(String info,String err){
int i = 0;
boolean flag = true;
while(flag){
String str = this.getString (info);
if(str.matches("\\d+")){
i = Integer.parseInt(str);
flag = false;
}else{
System.out.println(err);
}
}
return i;
}
public String getString(String info){
String str = null;
System.out.println(info);
try {
str = this.buf.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
public Date getDate(String info,String err){
Date date = null;
boolean flag = true;
while(flag){
String str = this.getString (info);
if(str.matches("\\d{4}-\\d{2}-\\d{2}")){
try {
date = new SimpleDateFormat("yyyy-mm-dd").parse(str);
flag = false;
} catch (ParseException e) {
e.printStackTrace();
}
}else{
System.out.println(err);
}
}
return date;
}
}


User.java:
/**
*
*/
package org.sjs.user.admin.vo;

import java.util.Date;

public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

private String name ;
private String sex ;
private Date birthday ;

public static void main(String[] args) {
// TODO Auto-generated method stub

}
public String toString(){
return "姓名:" + this.name + "  性别:" + this.sex + "  生日:" + this.birthday;
}

}


ps:数据库创建脚本:
DROP TABLE user ;
CREATE TABLE user(
id 	INT 		AUTO_INCREMENT PRIMARY KEY ,
name 	VARCHAR(50) 	NOT NULL ,
sex 	VARCHAR(10) 	NOT NULL ,
birthday		DATE
);


运行效果:

这份代码给了我很大的启发,希望对大家也有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐