精华内容
下载资源
问答
  • 求大佬指点一下,怎样才能实现用户管理系统[img=https://img-bbs.csdn.net/upload/201906/17/1560762302_334770.jpg][/img]
  • 摘要:之前写了一个Python Flask实现普通用户管理用户同页面登录;现在把用Java实现这个功能的代码和思想写一下。

    摘要:之前写了一个Python Flask实现普通用户和管理员用户同页面登录;现在把用Java实现这个功能的代码和思想写一下。

    1.前端JSP页面效果及代码:

    1.1效果图

    在这里插入图片描述

    1.2前端表单代码

    <form action="IndexServlet?method=Login" method="post">
    			<table height="240px" width="240px">
    				<tr style="height: 20%">
    					<td>用户名:</td>
    					<td><input type="text" value="${username }"  name="username" id="username"></td>
    				</tr>
    				<tr style="height: 20%">
    					<td>密码:</td>
    					<td><input type="password" value="${password }"  name="password" id="password"></td>
    				</tr>
    				<tr align="center" style="height: 20%">
    					<td style="padding-left: 10px"><input type="submit" name="sub_name" value="辅导员登录"></td>
    					<td style="padding-right: 40px;padding-left: 20px"><input type="submit" name="sub_name" value="管理员登录" ></td>
    				</tr>
    				
    				<tr style="height: 20%">
    					<td colspan="3">
    					<font color="red">${error_msg }</font>
    					</td>
    				</tr>
    				
    			</table>
    		</form>
    

    2.后台java代码:

    2.1IndexServlet里的Login方法代码:

    public void Login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		String sub_name = request.getParameter("sub_name");
    
    		if (sub_name.equals("辅导员登录")) {
    			CkInsService cis = new CkInsServiceImpl();
    			try {
    				Instructor ins = cis.insLogin(username, password);
    
    				request.getSession().setAttribute("ins", ins);
    				request.getRequestDispatcher("/counselorMain.jsp").forward(request, response);
    			} catch (UserException e) {
    				e.printStackTrace();
    				request.setAttribute("username", username);
    				request.setAttribute("password", password);
    				request.setAttribute("error_msg", e.getMessage());
    				request.getRequestDispatcher("/schoolIndex.jsp").forward(request, response);
    			}
    		} else if (sub_name.equals("管理员登录")) {
    			CKRootService crs = new CKRootServiceImpl();
    
    			try {
    				Super_Manager root = crs.superLogin(username, password);
    				request.getSession().setAttribute("root", root);
    				request.getRequestDispatcher("/schoolMain.jsp").forward(request, response);
    			} catch (UserException e) {
    				e.printStackTrace();
    				request.setAttribute("username", username);
    				request.setAttribute("password", password);
    				request.setAttribute("error_msg", e.getMessage());
    				request.getRequestDispatcher("/schoolIndex.jsp").forward(request, response);
    			}
    
    		}
    	}
    
    

    总结:其实思想和代码跟前面的Flask实现是差不多的,增加一个单选框,传值到后台后进行判断是那种类型的用户进行登录。

    往期文章推荐:
    Flask实现普通用户和管理员用户同页面登录
    html设置背景图适应屏幕大小及透明度
    Java判断用户是否登陆
    MySQL的卸载(完全卸载,操作简单)

    注:转载请附上原文链接:https://blog.csdn.net/yue200403/article/details/106707816

    展开全文
  • 我大概在网上随便找了一个类似于这个后台管理的框架(真的只是框架,一个登陆的窗口,一个用户管理的非常简单的页面),然后内部的事务逻辑均属原创。 下面,就来简单介绍一下这个后台管理系统是如何实现的,以及我...

    这次有个任务,需要用java的图形用户界面来实现一个后台管理系统。我大概在网上随便找了一个类似于这个后台管理的框架(真的只是框架,一个登陆的窗口,一个用户管理的非常简单的页面),然后内部的事务逻辑均属原创。
    下面,就来简单介绍一下这个后台管理系统是如何实现的,以及我制作时候的内部逻辑是如何的。

    1. 首先,为我们的数据库连接建立一个JDBC工具类
      这个工具类比较简单,其作用就是可以使得直接通过这个工具类,可以直接获得数据库链接,这样在后面不同的类去获取连接时,不需要写重复代码,只需要通过工具类就可以直接获得。
      代码如下:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDBCUtils {
        private JDBCUtils(){}
        private static Connection con ;
    
        static{                  
            try{
                Class.forName("com.mysql.jdbc.Driver");  //注册驱动,之所以用反射,这里不多解释
                String url = "jdbc:mysql://localhost:3306/数据库名";
                String username="数据库管理员名";
                String password="数据库管理员密码";
                con = DriverManager.getConnection(url, username, password);  //获取数据库连接
            }catch(Exception ex){
                throw new RuntimeException(ex+"数据库连接失败");
            }
        }
    
        /*
         * 定义静态方法,返回数据库的连接对象
         */
        public static Connection getConnection(){
            return con;
        }
    
    /*
    这个方法是用来释放资源的,原则是先得到的后关闭
    因为对数据库的操作不同,所以可能会产生两种关闭的情况,所以为了以防万一需要写两种关闭的方法,后来在具体项目的实践中我发现,查询这种情况是实时存在的,所以只需要写一种方法就可以了
    */
        public static void close(Connection con,Statement stat){
    
            if(stat!=null){
                try{
                    stat.close();
                }catch(SQLException ex){}
            }
    
            if(con!=null){
                try{
                    con.close();
                }catch(SQLException ex){}
            }
    
        }
    
    
        public static void close(Connection con,Statement stat , ResultSet rs){
            if(rs!=null){
                try{
                    rs.close();
                }catch(SQLException ex){}
            }
    
            if(stat!=null){
                try{
                    stat.close();
                }catch(SQLException ex){}
            }
    
            if(con!=null){
                try{
                    con.close();
                }catch(SQLException ex){}
            }
    
        }
    }
    
    1. 然后,我们就需要思考如何在后台管理系统中进行操作
      这个过程才是真正的核心,你需要明确你的后台管理系统中包括哪些功能,在此我先将我的后台管理系统的截图发上来,咱们在好好说道这个思考的过程。
      java图形用户界面版后台管理系统
      首先需要想想这个后台管理系统该是什么样子的,也就是所谓的设计一个简单的UI,然后我们看着眼前的UI在来一步步去思考该如何实现。

    1)第一步,我们需要实现好查询功能,也就是上面的“公司部门”、“公司员工”等几个按钮,每一个按钮内部都包含了一个查询操作,查询的是对应的我的那个数据库的表。这里的第一行,我写的是固定的,每一个选项,对应的是不同的数值,这个数值决定了我采用那个一维字符串数组作为头部。然后就是重头戏了,我们需要决定好下面的表的内容,也就是将数据库中的表的内容呈现到这个表中。结合java Swing中表的特征,我选择了二维数组赋值的方法,为此,我在针对数据库操作的方法中,需要得到一个二维数组。
    因为查询的时候,我无法获得resultset的长度,所以我采用了一个笨方法,赋值两个resultset,一个用来获取行数,一个用来给二维数组的每一个具体列赋值。其方法实现如下:

    public static String[][] resultSet(int k) {   //这是一个方法,可以返回一个二维数组
            PreparedStatement pst = null;      //声明一个预处理对象
            ResultSet rs = null;                       //第一个resultset
            ResultSet rs1 = null;
            if (k == 1) {                                   //这个针对的是第一个按钮,也就是上面的"公司部门"
                int count = 1;                           //用来记录二维数组的行数,从而实现动态赋值
                int colum = 0;                          //这个是来记录多少行的,但是单词好像写错了,多多担待
                String sql = "select * from departments";   //查询"公司部门"对应的数据库表
                try {
                    pst = con.prepareStatement(sql);         //对sql语句进行预编译
                    rs = pst.executeQuery();                      //执行查询语句,并得到Resultset结果集
                    while (rs.next()) {
                        colum++;
                    }
    
                    items = new String[colum][4];               //获取一个行数可变的二维数组
    
                    rs1 = pst.executeQuery();
                    while (rs1.next()) {
                        items[count - 1][0] = rs1.getString("department_id");
                        items[count - 1][1] = rs1.getString("department_name");
                        items[count - 1][2] = rs1.getString("manager_id");
                        items[count - 1][3] = rs1.getString("location_id");
                        count++;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    

    这是针对第一个按钮所写的查询代码,后面的三个按钮相同,只需要该部分内容就行。

    2)现在我们来实现添加功能,这个添加功能就是简单的获取四个对话框里的文本内容,然后对应查看数据库中对应的数据类型,将类型转换正确后,在进行插入操作,然后按下添加按钮后,更新图形用户界面就可以了。

    public static int insert(int k, String str1, String str2, String str3, String str4) {   //我设置返回值为int是为了调用这个方法时,能够判断出是否执行成功
            int line = 0;
            PreparedStatement stat = null;
            if (k == 1) {
                String sql = "insert into departments(department_id,department_name,manager_id,location_id) values(?,?,?,?)";  //利用占位符,
                try {
                    stat = con.prepareStatement(sql);
                    int did = Integer.parseInt(str1);     //经过数据库中表的列的类型查询得知,这三个列的类型是int类型,因此需要在替换占位符前,先替换数据类型
                    int mid = Integer.parseInt(str3);
                    int lid = Integer.parseInt(str4);
    
                    stat.setInt(1, did);      //替换占位符
                    stat.setString(2, str2);
                    stat.setInt(3, mid);
                    stat.setInt(4, lid);
                    // 5执行SQL语句
                    line = stat.executeUpdate();   //执行sql语句,如果执行成功,会返回影响的行数(代表插入了几行),肯定会是1,这是你就可以判断自己的数据插入成功了
    
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
    

    3)下面,我们再来执行修改操作,这个操作会涉及到一定的Swing中的方法,就是获取你所点击的行的数据,并赋值给下面的几个text框中,当然,你也可以根据第一列的id号直接修改,因为你的sql操作可以做到运行这样修改。
    在此,我先将那个获取点击行的内容的代码po出来:

    table.addMouseListener(new MouseAdapter() {    //鼠标事件
                    public void mouseClicked(MouseEvent e) {
                        int selectedRow = table.getSelectedRow(); //获得选中行索引
                        Object oa = tableModel.getValueAt(selectedRow, 0);
                        Object ob = tableModel.getValueAt(selectedRow, 1);
                        Object oc = tableModel.getValueAt(selectedRow, 2);
                        Object od = tableModel.getValueAt(selectedRow, 3);
                        try {
                            aTextField.setText(oa.toString());  //给文本框赋值
                            bTextField.setText(ob.toString());
                            cTextField.setText(oc.toString());
                        }catch (NullPointerException ex){
                            cTextField.setText("");
                            throw new RuntimeException(ex+"遇到了空字符串");
                        }finally {
                            dTextField.setText(od.toString());
                        }
                    }
                });
    

    大家或许会对我这几行代码中的try、catch、finally这个用法不太理解,其实他们不具有通用性,它是针对我第一个截图中的有几行第三列数据为空的情况而存在的。
    这段获取值的方法写完后,可以直接在文本框内修改其值,但是注意id号千万不能修改,它是我们SQL语句中执行修改的关键,sql相关操作的代码如下:

    public static int update(int k, String str1, String str2, String str3, String str4) {
            int line = 0;
            PreparedStatement stat = null;
    
            if (k == 1) {
                String sql = "update departments set department_name=?,manager_id=?,location_id=? where department_id=?";
                try {
                    stat = con.prepareStatement(sql);
                    int did = Integer.parseInt(str1);
                    int mid = Integer.parseInt(str3);
                    int lid = Integer.parseInt(str4);
    
                    stat.setString(1, str2);
                    stat.setInt(2, mid);
                    stat.setInt(3, lid);
                    stat.setInt(4, did);
                    // 5执行SQL语句
                    line = stat.executeUpdate();
    
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
           }
    

    这里的代码就不做过多解释了,基本和上面的重复,注意占位符的位置就行。

    4)好,现在我们来执行最后一个事务,那就是删除,我认为这个是最简单最轻松的了,直接获取第一个id号,然后执行sql语句进行删除就可以了,代码和上面的几乎都差不多,只会更简单,在此不再过多赘述了。

    5)最后的最后,我在简单放一下我的信息统计的页面,他这个其实也要查询,但是需要单独写一段查询代码,但是本质还是一样的!
    在这里插入图片描述
    这个其实代码写起来十分简单,只是查询的次数相对来说比较多而已。

    if (k == 5) {
                String sql = "SELECT count(*) departments FROM departments";
                try {
                    pst = con.prepareStatement(sql);
    
                    rs = pst.executeQuery();
                    items = new String[1][4];
                    while (rs.next()) {
                        items[0][0] = rs.getString("departments");
                    }
                    sql = "SELECT count(*) jobs FROM jobs";
                    pst = con.prepareStatement(sql);
                    rs = pst.executeQuery();
                    while (rs.next()) {
                        items[0][1] = rs.getString("jobs");
                    }
                    sql = "SELECT count(*) employees FROM employees";
                    pst = con.prepareStatement(sql);
                    rs = pst.executeQuery();
                    while (rs.next()) {
                        items[0][2] = rs.getString("employees");
                    }
                    sql = "SELECT count(*) locations FROM locations";
                    pst = con.prepareStatement(sql);
                    rs = pst.executeQuery();
                    while (rs.next()) {
                        items[0][3] = rs.getString("locations");
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    

    6)嗯,还有个最后,不要忘记关闭资源哦,最好在后台管理系统窗口关闭的时候调用,不然提前关闭会出错。

    需要完整代码的,可以到此下载:https://download.csdn.net/download/yiyexy/10740072

    展开全文
  • java实现简单的图书管理系统

    万次阅读 多人点赞 2019-04-13 17:49:44
    Library类: 写了登录函数(1、普通用户,2、管理员,3、退出系统), Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get、set方法,定义了一些书。 operate接口:操作的接口,操作方法:查询/查阅,...

    一、项目分布

    在这里插入图片描述
    Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get、set方法
    Library类: 写了登录函数(1、普通用户,2、管理员,3、退出系统),
    Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get、set方法,定义了一些书。
    operate接口:操作的接口,操作方法:查询/查阅,删除/借阅,增加/还书,显示书籍列表
    Root类:继承了Person类,实现operate(查阅,删除,增加,显示书籍列表)接口
    User类:继承了Person类,实现operate(查询,借阅,还书,显示书籍列表)接口
    Main类:Main中的主函数开启整个项目。

    模型图:

    在这里插入图片描述
    声明: 本项目只是一个简单的面向对象入门小项目,有一些基础理论需要掌握,比如对象,类,抽象类,接口,继承,实现,数组及数组的操作,for循环,while循环,switch语句,if语句。

    二、代码展示:

    1. Book类
    public class Book {
    	private String name; //书名
    	private String author; //作者
    	public double price; //价格
    	private String category; //分类
    	private boolean state; //状态  true-未借出  false-已借出
    
    	//通过构造函数给定书的属性
    	public Book(String name,String author,double price,String category,boolean state){
    		this.author = author;
    		this.name = name;
    		this.price = price;
    		this.category = category;
    		this.state = state;
    	}
    
    	public Book() {  //默认10本书
    		this(10);
    	}
    	public Book(int i) {
    		Person.books = new Book[i];
    	}
    
    	//属性的获取和设置
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getAuthor() {
    		return author;
    	}
    	public void setAuthor(String author) {
    		this.author = author;
    	}
    	public double getPrice() {
    		return price;
    	}
    	public void setPrice(double price) {
    		this.price = price;
    	}
    	public String getCategory() {
    		return category;
    	}
    	public void setCategory(String category) {
    		this.category = category;
    	}
    	public boolean getState() {
    		return state;
    	}
    	public void setState(boolean state) {
    		this.state = state;
    	}
    }
    
    
    1. Library类
    import java.util.Scanner;
    
    public class Library {
    	Scanner sc = new Scanner(System.in);
    	//登录函数:显示登录界面进行选择登录
    	public void login() {
    		int count = 0;
    		Person p = null;
    		while (count < 2) {
    			System.out.println("===============jewel图书管理系统===============");
    			System.out.println("欢迎讨论指正! qq505791225"+"\n");
    			System.out.println("请登录:1.普通用户  2.管理员登录  3.退出系统");
    
    			int n = sc.nextInt();
    			//通过输入的值进行登录判断
    			if (n == 3) {
    				return;
    			}
    			switch (n) {
    				case 1:
    					System.out.println("请输入姓名:");
    					String Uname = sc.next();
    					System.out.println("请输入性别:");
    					String Usex = sc.next();
    					System.out.println("请输入年龄:");
    					int Uage = sc.nextInt();
    
    					p = new User(Uname,Usex,Uage); //构造普通用户对象
    
    					System.out.println("登录成功!");
    					System.out.println("当前普通用户:"+"姓名:" + p.getName() + " "+"性别:" + p.getSex() + " "+"年龄"+ p.getAge());
    					//普通用户循环操作
    					while (true) {
    						System.out.println("请输入你的操作: 1.查询书籍 2.借阅书籍 3.归还书籍 4.显示书籍列表 5.退出");
    						int i = sc.nextInt();
    						if (i == 5) {
    							System.out.println("您已成功退出!");
    							break;
    						}else {
    							p.operate();  //调用普通用户的操作方法
    						}
    					}
    					break;
    				case 2:
    					System.out.println("请输入管理员姓名:");
    					String Rname = sc.next();
    					System.out.println("请输入性别:");
    					String Rsex = sc.next();
    					System.out.println("请输入年龄:");
    					int Rage = sc.nextInt();
    
    					p = new Root(Rname,Rsex,Rage);//构造管理员对象
    
    					System.out.println("登录成功!");
    					System.out.println("当前管理员:"+"姓名:" + p.getName() + " "+"性别:" + p.getSex() + " "+"年龄" + p.getAge());
    					while (true) {
    						System.out.println("请输入你的操作: 1.整理书籍 2.查阅书籍 3.增加书籍 4.删除书籍 5.显示书籍列表 6.退出");
    						int j = sc.nextInt();
    						if (j == 6) {
    							System.out.println("您已成功退出!");
    							break;
    						}else{
    							p.operate();//调用管理员的操作方法
    						}
    					} break;
    			}
    		}
    	}
    }
    
    1. Person类(抽象类)
    abstract class Person {
    	public String name;
    	public String sex;
    	public int age;
    	/**
    	 * 	默认定义10本书籍。(预留3本新书的buffer,用来添加书籍)
    	 */
    	public static Book[] books = new Book[]{
    			new Book("西游记", "吴承恩", 10, "名著", true),
    			new Book("红楼梦", "曹雪芹", 20, "名著", true),
    			new Book("三国演义", "罗贯中", 15, "名著", true),
    			new Book("小茗同学", "小明", 5, "杂志", true),
    			new Book("C与指针", "马老师", 35, "计算机", true),
    			new Book("Java编程思想", "王老师", 55, "计算机", true),
    			new Book("新世界", "陈宇", 15, "杂志", true),
    			new Book("阿衰与大头妹", "阿衰", 5, "漫画", true),
    			new Book("一个人就一个人", "刘同", 35, "小说", true),
    			new Book("活着", "陈彤", 36, "小说", true),
    			new Book(),
    			new Book(),
    			new Book(),
    	};
    
    	public Person(String name, String sex, int age) {
    		this.age = age;
    		this.name = name;
    		this.sex = sex;
    	}
    
    	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 int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	/**
    	 * 	抽象类中的抽象方法
    	 */
    	public abstract void operate();
    }
    
    
    1. operate接口
    public interface operate{  //操作的接口
        void select(Book[] books); //查询,查阅
        void delete(Book[] books);//删除,借阅
        void add(Book[] books); //增加,还书
        void list(Book[] books); //显示书列表
    }
    
    1. Root类
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    
    public class Root extends Person implements Operate {
    	//继承了人的类,需要重写它的抽象方法operate,实现了operate接口,需要重写接口内的方法
    	
    	public Root(String name, String sex, int age) {
    		//调用人基类的构造函数
    		super(name, sex, age);
    	}
    
    	Scanner sc = new Scanner(System.in);
    
    	/**
    	 * 管理员的操作
    	 */
    	@Override
    	public void operate() {
    		System.out.print("请输入确认操作:");
    		int i = sc.nextInt();
    		switch (i) {
    			case 1:
    				//整理
    				sort(books);
    				break;
    			case 2:
    				//查
    				select(books);
    				break;
    			case 3:
    				//加
    				add(books);
    				break;
    			case 4:
    				//删
    				delete(books);
    				break;
    			case 5:
    				//列表
    				list(books);
    				break;
    			default:
    				System.out.println("输入有误!");
    				break;
    
    		}
    	}
    
    	/**
    	 * 	compareable整理,重写compare to,如果数组中有空的,则会出现空指针异常,把不空的拷到另一个新的数组,然后实现
    	 * @param books
    	 */
    	public void sort(Book[] books) {
    		System.out.println("图书馆中的书按价格整理如下:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");
    		Arrays.sort(books, new Comparator<Book>() {
    			@Override
    			public int compare(Book o1, Book o2) {
    				return (int) (o1.getPrice() - o2.getPrice());
    			}
    		});
    		//遍历数组打印书的列表
    		for (int i = 0; i < books.length; i++) {
    			if (books[i].price != 0) {
    				System.out.println(
    						"【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
    								+ "】——【" + books[i].getCategory() + "】——" + books[i].getState());
    			}
    		}
    	}
    
    	@Override
    	public void select(Book[] books) {
    		System.out.println("请输入书名进行查询:");
    		String name = sc.next();
    		if (name != null) {
    			boolean flag = false;
    			int bookNum = 0;
    			for (int i = 0; i < books.length; i++) {
    				if (books[i].getName() != null && name.equals(books[i].getName())) {
    					flag = true;
    					bookNum = i;
    					break;
    				}
    			}
    			if (!flag) {
    				System.out.println("未查询到此书籍!");
    			} else {
    				System.out.println("书籍信息为:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");
    				System.out.println(
    						"【" + books[bookNum].getName() + "】—— 【" + books[bookNum].getAuthor() + "】——【" + books[bookNum]
    								.getPrice() + "】——【" + books[bookNum].getCategory() + "】——" + books[bookNum]
    								.getState());
    			}
    		}
    	}
    
    	@Override
    	public void delete(Book[] books) {
    		System.out.println("请输入要删除的书名:");
    		String str = sc.next();
    		if (str != null) {
    			for (int i = 0; i < books.length; i++) {
    				if (books[i].getName().equals(str)) {
    					books[i] = null;
    					System.out.println("删除成功!");
    					break;
    				}
    			}
    		}
    
    	}
    
    	@Override
    	public void add(Book[] books) {
    		System.out.println("请输入书名:");
    		String name = sc.next();
    		System.out.println("请输入作者:");
    		String author = sc.next();
    		System.out.println("请输入价格:");
    		double price = sc.nextDouble();
    		System.out.println("请输入分类:");
    		String category = sc.next();
    
    		boolean flag = false;
    		for (int i = 0; i < books.length; i++) {
    			if (books[i].getName() == null) {
    				flag = true;
    				books[i].setName(name);
    				books[i].setAuthor(author);
    				books[i].setPrice(price);
    				books[i].setCategory(category);
    				books[i].setState(true);
    				System.out.println("添加成功");
    				break;
    			}
    		}
    		if (!flag) {
    			System.out.println("【警告】数组预留buffer最多只能添加3本新书,没有位置放置新书了,如需添加多余3本,需要在‘Person’类中添加buffer!" + "\n");
    		}
    
    	}
    
    	@Override
    	public void list(Book[] books) {
    		System.out.println("图书列表如下:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");  //打印Book数组
    		for (int i = 0; i < books.length; i++) {
    			if (books[i] != null) {
    				if (books[i].price != 0) {
    					System.out.println(
    							"【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
    									+ "】——【" + books[i].getCategory() + "】——" + books[i].getState());
    
    				}
    			}
    		}
    	}
    }
    
    1. User类
    import java.util.Scanner;
    
    public class User extends Person implements Operate {   //user类继承了人的类,  实现operate接口
    
    	public User(String name, String sex, int age) {
    		//调用人基类的构造函数(派生类不继承基类的构造函数)
    		super(name, sex, age);
    	}
    
    	Scanner sc = new Scanner(System.in);
    
    	@Override
    	public void operate() {  //普通用户的操作
    
    		System.out.print("请输入确认操作:");
    		int i = sc.nextInt();
    		switch (i) {
    			case 1:
    				//查
    				select(books);
    				break;
    			case 2:
    				//借
    				delete(books);
    				break;
    			case 3:
    				//还
    				add(books);
    				break;
    			case 4:
    				//书列表
    				list(books);
    				break;
    			default:
    				System.out.println("输入有误!");
    				break;
    		}
    	}
    
    	@Override
    	public void select(Book[] books) {
    		System.out.println("请输入书名进行查询:");
    		String name = sc.next();
    		if (name != null) {
    			boolean flag = false;
    			int bookNum = 0;
    			for (int i = 0; i < books.length; i++) {
    				if (books[i].getName() != null && name.equals(books[i].getName())) {
    					flag = true;
    					bookNum = i;
    					break;
    				}
    			}
    			if (!flag) {
    				System.out.println("未查询到此书籍!");
    			} else {
    				System.out.println("书籍信息为:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");
    				System.out.println(
    						"【" + books[bookNum].getName() + "】—— 【" + books[bookNum].getAuthor() + "】——【" + books[bookNum]
    								.getPrice() + "】——【" + books[bookNum].getCategory() + "】——" + books[bookNum]
    								.getState());
    			}
    		}
    	}
    
    	@Override
    	public void delete(Book[] books) {
    		System.out.println("请输入要借阅的书名:");
    		String name = sc.next();
    		if (name != null) {
    			for (int i = 0; i < books.length - 1; i++) {
    				if (books[i].getName().equals(name)) {
    					//借走书时设置状态为false
    					if (!books[i].getState()) {
    						System.out.println("【" + name + "】" + "已经被借出!");
    					} else {
    						books[i].setState(false);
    						System.out.println("借阅成功!");
    					}
    					break;
    				}
    			}
    		}
    	}
    
    	@Override
    	public void add(Book[] books) {
    
    		System.out.println("请输入要还的书名:");
    		String name = sc.next();
    
    		if (name != null) {
    			boolean flag = true;
    			int i = 0;
    			while (flag) {
    				if (books[i].getName().equals(name)) {
    					if (!books[i].getState()) {
    						books[i].setState(true);
    						System.out.println("还书成功!");
    						flag = false;
    					} else {
    						System.out.println("该书籍已经被还回!");
    						break;
    					}
    				}
    				i++;
    			}
    		}
    	}
    
    
    	@Override
    	public void list(Book[] books) {
    		System.out.println("图书列表如下:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");  //打印Book数组
    		for (int i = 0; i < books.length; i++) {
    			if (books[i] != null) {
    				if (books[i].price != 0) {
    					System.out.println(
    							"【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
    									+ "】——【" + books[i].getCategory() + "】——" + books[i].getState());
    
    				}
    			}
    		}
    	}
    }
    
    1. Main类
    public class Main {
        public static void main(String[] args) {
            Library library = new Library(); //构造Library对象
            library.login(); //调用对象的登录方法。
        }
    }
    

    三、实现结果

    1. 登录界面
      普通用户登录
      在这里插入图片描述
      2.普通用户:查询、借阅、归还 、显示列表
      在这里插入图片描述
      在这里插入图片描述
      3.管理员登录,按图书价格整理书籍
      在这里插入图片描述
    2. 管理员添加书籍
      在这里插入图片描述
    3. 管理员删除书籍
      在这里插入图片描述

    如有错误欢迎讨论指正 qq 505791225

    展开全文
  • JAVA实现商品信息管理系统

    万次阅读 多人点赞 2019-10-14 20:43:56
    任务与实现 超市商品管理系统 题目要求 超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。 主要完成对商品的销售、统计和简单管理。 这个...

    超市商品管理系统

    点此下载源码

    题目要求

    超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。主要完成对商品的销售、统计和简单管理。这个题目相对简单,可以用一张表实现信息的保存和处理,因此不再给出数据库设计参考。
    功能要求
    (1)销售功能。
      购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
    (2)商品简单管理功能。
      添加功能:主要完成商品信息的添加。
      查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
      修改功能:可根据查询结果对相应的记录进行修改。
      删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
    (3)统计功能。
      输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
    (7)商品信息存盘:将当前程序中的商品信息存入文件中。
    (8)读出信息:从文件中将商品信息读入程序。

    问题的解决方案

    根据系统功能要求,可以将问题解决分为以下步骤:
    (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
    (2)分析系统中的各个实体及它们之间的关系;
    (3)根据问题描述,设计系统的类层次;
    (4)完成类层次中各个类的描述;
    (5)完成类中各个成员函数的定义;
    (6)完成系统的应用模块;
    (7)功能调试;

    设计思路

    可以对超市商品进行管理的人员主要有超市的商家和顾客,商家可以对超市的商品进行增﹑删﹑改﹑查操作,而顾客只能查询和购买商品。增加商品时,要添加商品的全部信息(编号﹑类别﹑名称﹑价格﹑库存量﹑品牌﹑生产厂家),删除时只需要输入商品编号便可删除该商品的全部信息,修改时要先输入商品编号,然后再确定要修改该商品的哪一个值,以及要将该值修改为什么,查询时只要输入想要查询商品的任意一个信息并选择商品类别便可查出该商品的全部信息。

    实现:

    建立并连接数据库与基本表

    连接数据库时需要用到JDBC,它由Java编程语言编写的类和接口组成,是实现Java与各种数据库连接的关键,提供了将Java与数据库连接起来的程序接口,使用户可以以SQL的形式编写访问请求,然后传给数据库,其结果再由这一接口返回,从而实现对数据库中数据操作的目的。超市商品管理系统采用了MySQL作为数据库,所建的系统数据库名为“goods”。通过需求分析、概念设计与逻辑设计,可知该系统数据库只需建立一个商品表即可

    结构设计

    该系统用于对商品的基本信息进行管理,主要包括添加、修改、查询和删除商品基本信息,为了方便,全部操作均在界面中完成。由此,将该系统结构设计为登录模块、顾客模块、商家模块。由于涉及界面设计,因此调用了java.awt.、java.awt.event.、javax.swing.、java.util.、javax.swing.event.*、java.sql.*等包。

    实现登录模块

    要生成一个界面,可应用AWT知识。设置其名字为商品信息管理系统;设置布局管理器为(null)布局管理器,方便往其中放组件;设置窗口大小和位置,还要设置窗口可见性。
    生成界面后,接下来就需要实现每个功能,第一个功能就是要对操作对象的身份进行选择,这里要用下拉列表的形式进行选择,也可以用单选按钮来完成这个功能。在这项功能中,首先要选择身份,所以要定义一个JLabel来说明,定义完JLabel后,就需要定义一个JComoBox,下拉列表框。 
    输入用户名和密码。需要用两个JLabel来指明需要输入用户名和密码。输入用户名需要定义一个JTextField,单文本框。同时输入文本,但输入密码和输入用户名是不一样的,它需要定义成JPasswordField,它的输出结果为“*****”这样的形式。 
    创建两个按钮,一个是登录按钮,另一个是取消登录按钮,用来输入的用户名和密码及选择的身份进行提交,然后根据选择的身份来选择需要进入那个界面,其代码如下:

    public class info_Manage extends JFrame implements ActionListener{
    	private JLabel username = new JLabel("用户名");
    	private JTextField userName = new JTextField();		
    	private JLabel psw = new JLabel("密码");	
    	private JPasswordField Psw = new JPasswordField();
    	JLabel jlp=new JLabel("身份");
    	String str[]={"顾客","商家"};
    	JComboBox jcb=new JComboBox(str);	
    	private JButton jb1 = new JButton("登录");
    	private JButton jb2 = new JButton("取消");	
    	public info_Manage(){		
    		this.setTitle("商品信息管理系统");
    		this.setLayout(null);
    		username.setBounds(100,50,100,20);
    		this.add(username);		
    		userName.setBounds(150,50,100,20);
    		this.add(userName);
    		psw.setBounds(100,100,100,20);
    		this.add(psw);
    		Psw.setBounds(150,100,100,20);
    		this.add(Psw);
    		jlp.setBounds(100,150,100,20);
    		this.add(jlp);
    		jcb.setBounds(150,150,100,20);
    		this.add(jcb);
    		jcb.addActionListener(this);
    		jb1.setBounds(100,210,60,20);
    		this.add(jb1);
    		jb1.addActionListener(this);
    		jb2.setBounds(200,210,60,20);
    		this.add(jb2);     
    		jb2.addActionListener(this);
    		this.setVisible(true);
    		this.setBounds(10,10,390,330);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    	public static void main(String[] args) {
    		new info_Manage();
    	}
    	public void actionPerformed(ActionEvent e) {		
    		if (e.getSource() == jb1) {
    			String name=userName.getText();
    			String password = new String(Psw.getPassword());
    			if(name.length()==0&&password.length()!=0)
    				JOptionPane.showMessageDialog( null, "请输入用户名");
    			else  if(name.length()!=0&&password.length()==0)
    				JOptionPane.showMessageDialog( null, "请输入密码");
    			else if(name.length()==0&&name.length()==0)
    					JOptionPane.showMessageDialog( null, "请输入用户名和密码");
    			else if(jcb.getSelectedIndex()==0&&name.length()!=0&&name.length()!=0)
    				new custom_Manage();
    			else if(jcb.getSelectedIndex()==1&&name.length()!=0&&password.length()!=0)
    				new seller_Manage();
    		}
    		else if(e.getSource()==jb2)
    			System.exit(0);
    	}
    }
    

    运行结果
    在这里插入图片描述

    实现顾客操作界面

    当选择“顾客”时,单击“登录”按钮就可以进入顾客操作系统了,然后就可以对摸个学生的信息进行输入、修改和删除,也能对同学的信息进行查询和对程序进行查询。当打算离开时,还要有一个选项用来退出学生信息管理系统。根据设计构想,首先要搭建一个界面,然后把顾客的操作分为2大块,分别是商品信息查询和退出登录,其部分代码如下:

    class custom_Manage extends JFrame implements ActionListener{
    	JMenu cm=new JMenu("请选择您需要的操作:");
    	JButton cm1=new JButton("商品信息查询");
    	JButton cm2=new JButton("退出登录");
    	public void actionPerformed(ActionEvent e){
    		 if(e.getSource()==cm1)new SetGoods();
    		else if(e.getSource()==cm2)	this.setVisible(false);
    	}
    }
    

    运行结果
    在这里插入图片描述
    商家操作界面相比顾客操作界面多了商品信息的增加﹑删除和修改功能,其实现方法与顾客操作界面类似,在此不再赘述。

    添加商品信息

    每个按钮都对应着一个操作界面,当点击商家操作下的“增加商品信息”按钮时,将弹出如图所示的界面,它调用了AddGoods.java类实现该功能。通过对“增加信息”这一子菜单设置监听,弹出界面。AddGoods.java的部分代码如下:

    class AddGoods extends JFrame implements ActionListener {
    	JLabel JL = new JLabel("添加基本信息:");
    	JLabel number = new JLabel("商品编号");
    	JTextField Number = new JTextField();
    	
    	JLabel JClass=new JLabel("类别");
    	String str[]={"食品","化妆品","日用品","饮料"};
    	JComboBox jcb=new JComboBox(str);
    	
    	JLabel name = new JLabel("商品名称");
    	JTextField Name = new JTextField();
    	JLabel price=new JLabel("商品价格");
    	JTextField Price = new JTextField();
    	JLabel storage= new JLabel("库存量");
    	JTextField Storage = new JTextField();
    	JLabel brand= new JLabel("品牌");
    	JTextField Brand = new JTextField();
    	JLabel vender = new JLabel("生产厂家");
    	JTextField Vender = new JTextField();
    	
    	JTextField jt=new JTextField(10);
    	JButton Add = new JButton("添加");
    	JButton Reset = new JButton("重置");
    	JButton Exit = new JButton("退出");
    	String sql = "";
    
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource()==Add) {
    			String snumber=Number.getText();
    			String svender=Vender.getText();
    			String sname=Name.getText();
    			String sprice=Price.getText();
    			String sstorage=Storage.getText();
    			String sbrand=Brand.getText();
    			try {
    				Connection cot=ConnectionFactory.getConnection();
    				Statement stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE );
    				int s=jcb.getSelectedIndex();
    				String jc=null;
    				if(s==0)jc="食品";
    				else if(s==1)jc="化妆品";
    				else if(s==2)jc="日用品";
    				else if(s==3)jc="饮料";
    sql="insert into goods values('"+snumber+"','"+jc+"','"+sname+"',"+sprice+","+sstorage+",'"+sbrand+"','"+svender+"')";
    				int n=stm.executeUpdate(sql);
    				if(n!=0)JOptionPane.showMessageDialog(null,"添加成功!");
    				else JOptionPane.showMessageDialog(null,"该商品已存在!");
    			}catch(Exception ee) {
    				ee.printStackTrace();
    			}
    		}
    		if(e.getSource()==Reset) {
    			Number.setText(null);
    			Name.setText(null);
    			Vender.setText(null);
    			Price.setText(null);
    			Storage.setText(null);
    			Brand.setText(null);
    		}
    		if(e.getSource()==Exit) {
    			this.setVisible(false);
    		}
    	}
    }
    

    运行结果在这里插入图片描述

    删除商品信息

    当选择商家操作系统下的删除商品信息的按钮时,将弹出图4-4所示的界面,它调用了DeleteGoodst.java类实现该功能,其部分代码如下:

    class DeleteGoods extends JFrame implements ActionListener {
    	JMenu JL = new JMenu("删除基本信息");
    	JLabel number = new JLabel("商品编号");
    	JTextField Number = new JTextField();
    	JButton Del = new JButton("删除");
    	JButton Reset = new JButton("重置");
    	JButton Exit = new JButton("退出");
    	String sql = "";
    
    public void actionPerformed(ActionEvent e) {
    		if (e.getSource() == Del) {
    			Statement stm=null;
    			Connection cot;
    			try {
    				cot=ConnectionFactory.getConnection();
    				stm= cot.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE );
    				sql ="delete from goods where number='"+Number.getText()+"'";
    				int n = stm.executeUpdate(sql);
    				if (n!=0)
    					JOptionPane.showMessageDialog(null, "删除成功!");
    				else
    				JOptionPane.showMessageDialog(null, "删除失败!");
    			} catch (SQLException e1) {
    				JOptionPane.showMessageDialog(null, "此商品不存在!");
    				e1.printStackTrace();
    			}
    		}
    		if (e.getSource() == Reset) {
    			Number.setText(null);
    		}
    		if (e.getSource() == Exit)
    			this.setVisible(false);
    	}
    }                     
    

    如图,只需输入商品编号便可删除该商品的全部信息。
    在这里插入图片描述

    修改商品信息

    当选择商家操作系统下的“修改信息”按钮时,将弹出界面,只要输入商品的编号,然后选择所要修改的该编号商品的列名,最后输入想要将其修改成为的值,即可修改该商品的某一项信息。用了GetGoods.java类实现该功能。其部分代码如下:

    class GetGoods extends JFrame implements ActionListener{
    	JLabel JL = new JLabel("修改商品信息", JLabel.CENTER);
    	JLabel number = new JLabel("请输入您要修改的商品编号");
    	JTextField Number = new JTextField();	
    	JLabel massage = new JLabel("请输入您要修改的商品信息");
    	JTextField Massage = new JTextField();	
    	JLabel afterget=new JLabel("您想要将该列信息修改为:");
    	JTextField Afterget = new JTextField();	
    	JTextField jt=new JTextField(10);
    	JButton Get = new JButton("修改");
    	JButton Reset = new JButton("重置");
    	JButton Exit = new JButton("退出");
    	String sql = "";
    public void actionPerformed(ActionEvent e){
    		if(e.getSource()==Get){
    			Statement stm=null;
    			Connection cot;
    			try{
    				cot=ConnectionFactory.getConnection();				stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE );
    				sql="update goods set "+Massage.getText()+"='"+Afterget.getText()+"' where number='"+Number.getText()+"'";
    				int n=stm.executeUpdate(sql);
    				if(n!=0)JOptionPane.showMessageDialog(null,"修改成功!");
    				else JOptionPane.showMessageDialog(null,"修改失败!");
    			}catch(Exception er){
    				er.printStackTrace();
    			}
    		}
    		if(e.getSource()==Reset){
    			Number.setText(null);
    			Massage.setText(null);
    			Afterget.setText(null);
    		}
    		if(e.getSource()==Exit) {
    			this.setVisible(false);
    		}
    	}
    }
    

    运行结果在这里插入图片描述

    查询商品信息

    当选择顾客或者商家操作系统下的“查询商品信息”按钮时,将弹出如图所示的界面,它调用了SetGoods.java类实现该功能,部分代码如下:

    class SetGoods extends JFrame implements ActionListener {
    	JLabel JL = new JLabel("请用以下任意一种方式查询您想要的东西", JLabel.CENTER);
    	JLabel number = new JLabel("商品编号");
    	JTextField Number = new JTextField();	
    	JLabel JClass=new JLabel("类别");
    	String str[]={"无","食品","化妆品","日用品","饮料"};
    	JComboBox jcb=new JComboBox(str);	
    	JLabel name = new JLabel("商品名称");
    	JTextField Name = new JTextField();
    	JLabel price=new JLabel("商品价格");
    	JTextField Price = new JTextField();
    	JLabel brand= new JLabel("品牌");
    	JTextField Brand = new JTextField();
    	JLabel vender = new JLabel("生产厂家");
    	JTextField Vender = new JTextField();	
    	JTextField jt=new JTextField(10);
    	JButton Set = new JButton("查询");
    	JButton purchase = new JButton("购买");
    	JButton Reset = new JButton("重置");
    	JButton Exit = new JButton("退出");
    	String sql = "";
    public void actionPerformed(ActionEvent e) {
    		if (e.getSource() == Set) {
    			Statement stm=null;
    			Connection cot;
    			try{
    				cot=ConnectionFactory.getConnection();
    stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE );
    				if(Number.getText()!=null)
    					sql="select * from goods where number='"+Number.getText()+"'";
    				else if(Name.getText()!=null)
    					sql="select * from goods where name='"+Name.getText()+"'";
    				else if(Price.getText()!=null)
    					sql="select * from goods where price='"+Price.getText()+"'";
    				else if(Brand.getText()!=null)
    					sql="select * from goods where brand='"+Brand.getText()+"'";
    				else if(Vender.getText()!=null)
    					sql="select * from goods where vender='"+Vender.getText()+"'";
    				ResultSet rs=stm.executeQuery(sql);
    				while(rs.next()) {
    					System.out.println("商品编号: "+Number.getText());
    					int s=jcb.getSelectedIndex();
    					if(s==0)
    					JOptionPane.showMessageDialog( null, "请选择商品类别!" );
    					else if(s==1)System.out.println("商品类别: 食品");
    					else if(s==2)System.out.println("商品类别: 化妆品");
    					else if(s==3)System.out.println("商品类别: 日用品");
    					else if(s==4)System.out.println("商品类别: 饮料");
    					System.out.println("商品名称: "+rs.getString("name"));
    					System.out.println("价格: "+rs.getString("price"));
    					System.out.println("库存量: "+rs.getString("storage"));
    					System.out.println("品牌: "+rs.getString("brand"));
    					System.out.println("生产厂家: "+rs.getString("vender"));
    				}
    			}catch(Exception ee){
    				JOptionPane.showMessageDialog( null, "该商品不存在!" );
    				ee.printStackTrace();
    			}
    		}
    		else if(e.getSource()==purchase){new Purchase();}
    		else if(e.getSource()==Reset){
    			Number.setText(null);
    			Name.setText(null);
    			Vender.setText(null);
    			Price.setText(null);
    			Brand.setText(null);
    		}
    		else if(e.getSource()==Exit) {
    this.setVisible(false);
    }}}
    

    运行结果在这里插入图片描述

    退出系统

    当在对商品进行增加﹑删除﹑修改和查询的界面时,点击“退出”按钮,即可弹出如图4-7所示界面,它调用了UsingExit.java类实现该功能,部分代码如下:

    class UsingExit extends JFrame implements ActionListener{
    	JLabel Info=new JLabel("确认退出?");
    	JButton JExit=new JButton("确认");
    	JButton Cancel=new JButton("取消");
    public void actionPerformed(ActionEvent e){
    		if(e.getSource()==JExit)
    			System.exit(0);
    		else if(e.getSource()==Cancel)
    			setVisible(false);
    	}
    }
    

    运行结果如图:
    在这里插入图片描述

    点此下载源码

    展开全文
  • Java+MySQL实现学生管理系统

    万次阅读 多人点赞 2019-06-13 15:43:41
    Java+MySQL实现学生管理系统 实现一个学生管理系统,方便老师对学生信息进行统计管理 用户登录功能 学生管理功能 完善界面交互 数据持久可靠 设计思路 使用Java作为开发语言,MySQL作为数据库,Java Swing做图形...
  • java实现通讯录管理系统

    万次阅读 多人点赞 2018-05-06 15:23:38
    package managementsystem;public class phoneManage { User[] tels = new User[50];//創建一個User數組,用於存放所有的通訊錄,大小50個;... java.util.Scanner sc = new java.util.Scanner(System.in);...
  • java学生信息管理系统(附源码)

    万次阅读 多人点赞 2016-07-14 16:36:30
    1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作 另外一种是SQL语句。 3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*...
  • Java实现超市库存管理系统

    万次阅读 多人点赞 2018-03-30 22:04:44
    模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现。 经过分析,首先需要一个功能菜单,然后输入所选的功能后,调用序号对应的功能方法,实现想要的操作。 具体的步骤如下: 1.完成超市商品初始化。...
  • Java 实现用户注册登陆

    千次阅读 多人点赞 2018-10-24 14:57:19
    一个用户注册登陆的系统,用到了MD5加密处理密码,实现了一个简单的数据库连接池connectionPool, 实现了注册,登陆,登陆之后修改用户信息等功能,非常适合初学者 一.准备工作 数据库:MySQL 5.5.62-log MySQL ...
  • java实现图书管理系统。

    千次阅读 多人点赞 2021-01-03 16:28:31
    面向对象思想项目运行效果登录界面主界面读者信息管理读者信息添加读者信息查询和修改读者信息查询读者信息修改图书信息管理图书信息添加图书...图书归还基础信息维护图书类别设置读者类别设置罚金设置用户管理修改.
  • Java实现图书管理系统

    千次阅读 多人点赞 2019-10-20 17:46:42
    a)角色有两种:普通用户 管理员 针对普通用户,支持的操作是 a)查找书籍 b)借阅书籍 c)归还书籍 针对管理员,支持的操作是: a)查找书籍 b)增加书籍 c)删除书籍 d)打印所有书籍信息 2.概要设计 想清楚程序...
  • java:JDBC连接数据库实现用户管理系统

    千次阅读 热门讨论 2018-08-12 08:26:30
    3.管理员对普通用户的查询,添加,修改,删除操作 4.对3实现ID和用户名的两种操作方式 5.对以上功能实现菜单化管理 6.所有用户信息都存储于Oracle数据库 流程图: 部分效果图:  源码githab地址: ...
  • Java实现超市管理系统(含数据库)

    万次阅读 多人点赞 2020-12-27 18:07:00
    序言: 学Java已经有几个月了,上一次总结是针对GUI界面写的简易计算器,实现加减乘除功能以及计算器标准型和科学型之间的转换,有兴趣可以看看 Java混合计算器以及界面切换 . 这次写的超市管理系统,实现的功能有...
  • Java用户管理系统

    千次阅读 多人点赞 2020-07-29 14:36:35
    Java用户管理系统 对一个网站用户的信息管理,对用户的信息进行增删改查,使得用户的信息管理工作更加方便快捷,从而提高工作效率,降低管理成本。 1.系统设计背景和目的 当今时代信息量不断增加,已经以几何级别的...
  • 利用Java GUI 实现一个简易的用户管理系统

    万次阅读 多人点赞 2017-12-15 09:32:23
    Java笔记(原书《Java语言程序设计》郭克华主编)用户管理系统功能简介  本篇将介绍一个模拟的用户管理系统。用户能够将自己的账号、密码、姓名、部门存入数据库(为了简单起见,这里用文件来代替)。   该系统...
  • java+jsp+oracle实现基本的用户管理系统源代码
  • 基于java springboot博客管理系统设计和实现

    千次阅读 多人点赞 2021-08-19 10:54:34
    博客,又译为网络日志、 部落格或部落阁等,是一种通常由个人管理、不定期张贴新的文章的网站。 博客上的文章通常根据张贴时间, 以倒序方式由新到旧排列。 许多博客专注在特定的课题上提供评论或新闻, 其他则被...
  • 正好周日,我把这次实现管理员修改任意用户Session功能的技术方案整理出来,分享给大家,希望大家喜欢,另外还录制了一份配套视频教程,方便初学者看懂。 1 Session会话简介 session 是另一种记录服务器和客户端...
  • 做一个图书管理系统,怎样通过多线程去实现用户登录,求设计思路
  • java实现电子投票管理系统

    千次阅读 多人点赞 2020-03-14 18:48:01
    本系统有管理员登录,个人信息修改,用户管理,投票管理,投票结果查看,留言板管理,留言板查看,用户登录,用户注册,用户信息修改,投票内容查看,投票功能,投票结果查看,留言板功能。 b.和现有系统比较起来,...
  • java 实现通讯录管理系统

    千次阅读 2012-12-20 13:13:40
    最近用java 做了个通讯录管理软件,主界面如上图,相信大家都看出来了,我是模仿的聊天软件来做的,这里用到了mysql,不过唯一缺憾的是没有用到框架。 在做完这个系统之后,我细想了下,没有什么创新的地方,...
  • java实现用户权限模块两种方法

    千次阅读 2019-04-08 10:22:55
    一般用这种比较多的,3个模块:用户模块、角色模块、菜单模块,对应数据库表:用户表、角色表、菜单表、用户角色表、角色菜单表,这种方法实现思路表结构都清晰明确,当然也存在一个弊端:菜单表添加菜单时,因为...
  • java实现停车场管理系统

    千次阅读 2019-08-14 17:13:00
    java实现停车场管理系统,应用于车辆的出、入管理。 包括车辆进出管理与系统管理等功能模块,可根据车辆停放时间及收费标准自动收费。用户需要事先办理停车卡并充值,停车卡分优惠卡和普通卡两类。 车场管理:...
  • Java实现权限管理的两种方式

    千次阅读 2012-02-24 17:29:28
    第一种方式:利用filter、xml文件和用户信息表配合使用来实现权限管理。  1.过滤器filter  package cn.com.aaa.bbb.filter;  import java.io.IOException;  import java.io.InputStream;  import java....
  • 在做一个通用权限管理系统,用户管理的用户禁用和用户激活的实现思路是什么
  • Java实现简单图书馆管理系统

    万次阅读 多人点赞 2019-10-20 21:36:55
    编写图书馆管理系统 思路 要编写这个程序我们首相要清楚这个程序中有哪些...用户包括:管理员和普通用户管理员它会有姓名, 增加书籍, 删除书籍, 查找书籍, 打印所有书籍信息, 退出系统 这些简单属性。 普通...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 681,385
精华内容 272,554
关键字:

java实现用户管理

java 订阅