满满干货!!!Java用户管理系统项目代码分享

Java用户管理系统,增删改查操作及最后运行截图,满满干货,分享给大家。

目录

管理系统框架

成果截图

主程序代码 UserApplication.java

IUserDao.java代码//CRUD增删改查

package-info.java代码//数据访问对象,用于封装数据的访问逻辑细节

User.java代码

Test1代码

ArrayList.java代码

DaoFactory.java代码

简单实现后分析问题:


管理系统框架

成果截图

 

 

主程序代码 UserApplication.java

package com.zjh.app;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import com.zjh.dao.IUserDao;
import com.zjh.entity.User;
import com.zjh.util.DaoFactory;

public class UserApplication {
	private static User user = null;

	public static void main(String[] args) throws Exception {
		IUserDao userDao = DaoFactory.getUserDao();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		while (true) {
			menu1();
			String ss = br.readLine();
			switch (ss) {
			case "1":
				User user = inputUser(br);
				userDao.save(user);
				break;
			case "2":
				User user1 = loginUser(br);
				User bb = userDao.login(user1);
				if (bb != null) {
					UserApplication.user = bb;
					System.out.println("登录成功!");
				} else {
					System.out.println("登录失败!请重新登录");
				}
				break;
			case "3":
				System.out.println("======目前已注册的用户列表======");
				Object[] arr = userDao.getAll().getArray();
				for (Object temp : arr) {
					if (temp != null)
						System.out.println(temp);
				}
				System.out.println("==============================");
				break;
			case "5":
				UserApplication.user=null;
				System.out.println("退出登录");
				break;
			case "4":
				User user2 = mofidyUser(br);
				userDao.update(user2);
				UserApplication.user=null;
				System.out.println("修改完毕!请重新登录");
				break;
			case "6":
				System.out.println("输入要删除的用户编号:");
				Long id=null;
				while(true) {
					String ss1=br.readLine();
					try {
						id=Long.parseLong(ss1);
						break;
					} catch (Exception e) {
						System.out.println("输入的数据格式错误!请重新输入");
						id=null;
					}
				}
				if(id.equals(UserApplication.user.getId()))
					UserApplication.user=null;
				userDao.delete(id);
				break;
//			default:
//				System.exit(0);
//				break;
			}
			if ("0".equals(ss)) {
				System.out.println("bye~~bye");
				break;
			}
		}
		br.close();
	}

	private static User mofidyUser(BufferedReader br)throws Exception {
		User res=UserApplication.user;
		System.out.println("请输入新的用户名称和口令:");
		System.out.println("原始名称为:"+res.getUsername());
		System.out.println("请输入新用户名称:(不修改则直接回车)");
		String username=br.readLine();
		if(username!=null && username.trim().length()>=6 && username.trim().length()<=20)
			res.setUsername(username);
		System.out.println("请输入新用户口令:(不修改则直接回车)");
		String password=br.readLine();
		if(password!=null && password.trim().length()>=6 && password.trim().length()<=20)
			res.setPassword(password);
		return res;
	}

	private static User loginUser(BufferedReader br) {
		System.out.println("请输入用户名称和口令:");
		String username = inputString(br, "用户名称", 6, 20);
		String password = inputString(br, "用户口令", 6, 20);
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		return user;
	}

	public static void menu1() {
		System.out.println("============欢迎使用本系统============");
		System.out.println("1---新增用户            2---登录系统");
		if (user != null) {
			System.out.println("3---显示所有用户        4---修改注册信息");
			System.out.println("5---退出登录            6---删除用户");
		}
		System.out.println("0---退出系统");
		System.out.println("=====================================");
		System.out.println("请选择...");
	}

	public static User inputUser(BufferedReader br) {
		User user = new User();
		String username = inputString(br, "用户名称", 6);
		String password = null;
		while (true) {
			password = inputString(br, "用户口令", 6, 20);
			String repassword = inputString(br, "确认口令");
			if (password.equals(repassword))
				break;
			System.out.println("您输入的口令和确认口令不一致,请重新输入");
		}
		user.setUsername(username);
		user.setPassword(password);
		return user;
	}

	// int...如果有参数,则参数1为最小长度,参数2为最大长度
	public static String inputString(BufferedReader br, String name, int... params) {
		String res = null;
		boolean flag = false;
		System.out.println("请输入" + name + ":");
		while (true) {
			try {
				res = br.readLine();
				if (res != null && res.trim().length() > 0) {
					if (params != null && params.length > 0) {
						flag = res.trim().length() >= params[0];
						if (flag) {
							if (params.length > 1)
								flag = res.trim().length() <= params[1];
						}
					} else
						flag = true;
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (flag)
				break;
			else
				System.out.println("您输入的数据有误!请重新输入");
		}
		return res;
	}
}

IUserDao.java代码//CRUD增删改查

package com.zjh.dao;

import com.zjh.entity.User;
import com.zjh.util.ArrayList;

//CRUD增删改查
public interface IUserDao {

	boolean save(User user);

	User login(User user);

	ArrayList getAll();

	boolean update(User user2);

	boolean delete(Long id);

}

package-info.java代码//数据访问对象,用于封装数据的访问逻辑细节

/*
 * 数据访问对象,用于封装数据的访问逻辑细节
 */
package com.zjh.dao;

class Constants{
	public static final String FILE_NAME="data/users.data";
	public static final String TEMP_NAME="data/users_tmp.data";
}
package com.zjh.dao;

import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import com.zjh.entity.User;
import com.zjh.util.ArrayList;
import com.zjh.util.DaoFactory;

public class UserDaoImpl implements IUserDao {

	@Override
	public boolean save(User user) {
		boolean res = false;
		File oldFile = new File(Constants.FILE_NAME);
		File tmpFile = new File(Constants.TEMP_NAME);

		if (oldFile.exists()) {
			try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oldFile));
					ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(tmpFile));) {
				long maxId = ois.readLong();
				user.setId(maxId + 1);
				oos.writeLong(user.getId());
				while (true) {
					try {
						Object tmp = ois.readObject();
						if (tmp != null)
							oos.writeObject(tmp);
					} catch (EOFException e) {
						break;
					}
				}
				oos.writeObject(user);
				res = true;
			} catch (Exception e) {
				e.printStackTrace();
				res = false;
			}
		} else {
			try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(oldFile));) {
				user.setId(1L);
				oos.writeLong(user.getId());
				oos.writeObject(user);
				res = true;
			} catch (Exception e) {
				e.printStackTrace();
				res = false;
			}
		}
		if (oldFile.exists() && tmpFile.exists()) {
			oldFile.delete();
			tmpFile.renameTo(oldFile);
		}
		return res;
	}

	public static void main(String[] args) {
		IUserDao userDao = DaoFactory.getUserDao();
//		User user = new User();
//		user.setUsername("lisi");
//		user.setPassword("4444");
//		boolean res = userDao.save(user);
//		System.out.println(res ? "成功" : "失败");
//		System.out.println(user.getId());

//		User user = new User();
//		user.setUsername("lisi");
//		user.setPassword("5555");
//		boolean bb = userDao.login(user);
//		System.out.println(bb);

//		ArrayList list = userDao.getAll();
//		Object[] arr = list.getArray();
//		for (Object temp : arr)
//			if (temp != null)
//				System.out.println(temp);

		User user = new User();
		user.setId(2L);
		user.setUsername("lisi666");
		user.setPassword("666666");
		boolean res = userDao.update(user);
		System.out.println(res ? "成功" : "失败");
	}

	@Override
	public User login(User user) {
		User res = null;
		File oldFile = new File(Constants.FILE_NAME);
		if (oldFile.exists()) {
			try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oldFile))) {
				ois.skip(8);
				while (true) {
					Object obj = ois.readObject();
					if (obj != null && obj instanceof User) {
						User tmp = (User) obj;
						if (user.equals(tmp)) {
							res = tmp;
							break;
						}
					}
				}
			} catch (EOFException e) {
				System.out.println("文件结束...");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return res;
	}

	@Override
	public ArrayList getAll() {
		ArrayList res = new ArrayList();
		File oldFile = new File(Constants.FILE_NAME);
		if (oldFile.exists()) {
			try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oldFile))) {
				ois.skip(8);
				while (true) {
					Object obj = ois.readObject();
					res.add(obj);
				}
			} catch (EOFException e) {
				System.out.println("数据加载完毕!");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return res;
	}

	@Override
	public boolean update(User user) {
		boolean res = false;
		File oldFile = new File(Constants.FILE_NAME);
		File tmpFile = new File(Constants.TEMP_NAME);
		if (oldFile.exists()) {
			try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oldFile));
					ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(tmpFile));) {
				oos.writeLong(ois.readLong());
				while (true) {
					try {
						Object tmp = ois.readObject();
						System.out.println(user);
						if (tmp != null) {
							if (!tmp.equals(user)) {
								System.out.println(tmp);
								oos.writeObject(tmp);
							} else {
								oos.writeObject(user);
								res = true;
							}
						}
					} catch (EOFException e) {
						break;
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
				res = false;
			}
		}
		if (oldFile.exists() && tmpFile.exists()) {
			oldFile.delete();
			tmpFile.renameTo(oldFile);
		}
		return res;
	}

	@Override
	public boolean delete(Long id) {
		boolean res = false;
		File oldFile = new File(Constants.FILE_NAME);
		File tmpFile = new File(Constants.TEMP_NAME);
		if (oldFile.exists()) {
			try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oldFile));
					ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(tmpFile));) {
				oos.writeLong(ois.readLong());
				while (true) {
					try {
						Object tmp = ois.readObject();
						if (tmp != null) {
							if (tmp instanceof User) {
								User temp = (User) tmp;
								if (!id.equals(temp.getId())) {
									oos.writeObject(tmp);
								}else {
									res=true;
								}
							}
						}
					} catch (EOFException e) {
						break;
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
				res = false;
			}
		}
		if (oldFile.exists() && tmpFile.exists()) {
			oldFile.delete();
			tmpFile.renameTo(oldFile);
		}
		return res;
	}
}

User.java代码

package com.zjh.entity;

import java.io.Serializable;
import java.util.Objects;

public class User implements Serializable {
	private static final long serialVersionUID = -5842697108263364883L;
	private Long id;
	private String username;
	private String password;
	private String repassword;

	@Override
	public int hashCode() {
		if (this.id == null)
			return Objects.hash(password, username);
		return Objects.hash(id);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (this.id == null || other.id == null)
			return Objects.equals(password, other.password) && Objects.equals(username, other.username);
		else
			return Objects.equals(this.id, other.id);
	}

	// =================================
	public Long getId() {
		return id;
	}

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

	public String getUsername() {
		return username;
	}

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

	public String getPassword() {
		return password;
	}

	public String getShowPassword() {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < password.length(); i++)
			sb.append("*");
		return sb.toString();
	}

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

	public String getRepassword() {
		return repassword;
	}

	public void setRepassword(String repassword) {
		this.repassword = repassword;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + this.getShowPassword() + "]";
	}

}

Test1代码

package com.zjh.test;

import java.util.Arrays;
import java.util.Date;

public class Test1 {
	public static void main(String[] args) {
		// 简单类型
		int[] arr1 = { 1, 2, 3, 4, 5, 6 };
		int[] brr1 = new int[arr1.length * 2];
		System.arraycopy(arr1, 1, brr1, 2, arr1.length - 1);
		System.out.println(Arrays.toString(brr1));
		// 引用类型
		Object[] arr2 = new Object[3];
		for (int i = 0; i < arr2.length; i++) {
			arr2[i] = new Date(1659684098321L+i*1000);
		}
		Date[] brr2=new Date[arr2.length*2];
		System.arraycopy(arr2, 0, brr2, 0, arr2.length);
		((Date)arr2[0]).setYear(9000);
		System.out.println(Arrays.toString(brr2));
	}
}

ArrayList.java代码

package com.zjh.util;

public class ArrayList {
	private Object[] arr;
	private int count;

	public ArrayList() {
		this(10);
	}

	public ArrayList(int length) {
		arr = new Object[length];
	}

	public void add(Object obj) {
		arr[count++]=obj;
		if(count>=arr.length) {
			resize();
		}
	}

	public Object[] getArray() {
		return arr;
	}

	private void resize() {
		Object[] res=new Object[arr.length*2];
		System.arraycopy(arr, 0, res, 0, arr.length);
		this.arr=res;
	}
}

/*
 * 对数组的复制,有四种方法:for、clone、System.arraycopy、Arrays.copyof
 * public static native void arraycopy(Object src,  int  srcPos,
Object dest, int destPos,
int length);

Object src : 源数组
int srcPos : 从源数组的起始位置开始
Object dest : 目标数组
int destPos : 目标数组的开始起始位置
int length : 要copy的数组的长度

针对引用类型数组的拷贝采用的是浅克隆的方式
*/

DaoFactory.java代码

package com.zjh.util;

import com.zjh.dao.IUserDao;
import com.zjh.dao.UserDaoImpl;

public class DaoFactory {
	private DaoFactory() {
	}

	private static IUserDao userDao = new UserDaoImpl();

	public static IUserDao getUserDao() {
		return userDao;
	}
}

简单实现后分析问题:

1、数据重复,要求id不允许重复。引入算法:max(id)+1是新用户的id值

2、用户注册信息中用户名称和口令不能为空,不再输入验证.所以操作之前应该对传入数据进行验证,如果验证失败则通过抛出异常阻止程序执行public void regist(UserBean user)throws Exception

3、显示所有用户信息:为了测试方便而添加的方法

- 1、传入参数:void

- 2、返回值:void

`public void showAll()throws Exception`

4、用户登录login

- 1、传入参数:  UserBean其中包含的是用户输入的登录信息,应该包含用户名称和口令

- 2、返回值:boolean  登录成功则返回true,否则false

- 3、操作文件过程中可能会有异常IOException

- 4、具体的处理逻辑:遍历文件中所保存的用户信息,如果有对应的用户名和口令的对象存在,则立即中断并返回true;如果遍历整个文件都没有符合要求的对象,则返回false

`public boolean login(UserBean user)throws Exception`

酒店管理系统使用说明书 主要功能 本系统中包含如下6大功能模块: q 前台服务:该模块主要包括开台点菜、维护菜品、签单、结账等功能,其中维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,即处于开单状态,结账时则要求所有商品都要签单,否则不允许结账。 q 后台管理:该模块主要包括台号管理、菜系管理和菜品管理功能,其中菜系用来对菜品进行分类。 q 销售统计:该模块用来分段统计营业额,可以按日、月和年进行统计,其中日统计是按消费单和销售的商品统计销售额,月统计是按日期和每日的销售额统计销售额,年统计是按日期和月份统计销售额。 q 系统安全:该模块主要包括交接班、锁定系统和修改密码功能,其中交接班功能在操作员换岗时使用,锁定系统在操作员临时离开时使用。 q 人员管理:该模块主要包括档案管理、管理员管理和操作权限管理功能,其中管理员管理功能用来管理系统的操作员,权限管理功能用来管理系统操作员具有的操作权限。 q 初始化系统:该功能用来对系统进行初始化,初始化后系统数据将全部被删除。 操作注意事项 用户在使用《酒店管理系统》之前,应注意以下事项: (1)管理员用户名和密码为:mr、mrsoft。 (2)当鼠标经过主界面右下角时,会弹出菜单,在这里可以对本系统的信息进行管理。 业务流程 要想运行本系统,请按照以下流程操作: (1)在“人员管理”中添加操作员及其档案信息。 (2)在“系统维护”中添加台号、菜系及菜品信息。 (3)在“台号”下拉列表中选择台号、在商品文本框中输入商品助记码或编号及商品数量,然后单击“开台”按钮。可添加多个商品。 (4)顾完单完菜后,单击“签单”按钮,表示确认该订单,此时可以执行结账操作,否则不可进行结账。 如果操作临时离开,可单击“锁定系统”按钮,输入登录密码可解锁。 (5)在“销售统计”中可对日销售、月销售及年销售额进行统计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值