精华内容
下载资源
问答
  • java小项目影院系统

    千次阅读 2016-09-27 22:02:47
    java小项目,影院管理系统 http://download.csdn.net/detail/github_32658299/9632276 下面是两个关键的类 1.这是电影院测试类,用来读取用户输入并进行出票import java.util.InputMismatchException; import ...

    java小项目,影院管理系统
    http://download.csdn.net/detail/github_32658299/9632276
    下面是两个关键的类
    1.这是电影院测试类,用来读取用户输入并进行出票

    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    /**
     * 测试cinema类
     * 模拟电影院的出票系统
     * 解析XML文件用于初始化Cinema的Schedule类,其保存电影院所放映电影所有场次信息
     * 要求:
     * 1.打印用户的购票信息
     * 2.利用序列化保存用户购票信息
     * 3.利用反序列化加载用户的购票历史记录
     * 4.同一张票只能卖出一次(电影名、座位号、放映时间相同则为同一张票)
     * 5.对用户输入进行判断,给出错误提示
     * 
     * @author cxp
     * @data 2016-9-13
     * @modify
     */
    public class TestCinema {
        /**
         *  判断电影名是否输入正确
         * @param schedule
         * @param movieName
         * @return
         */
        public static boolean chooseName(Schedule schedule, String movieName) {
            // 判断放映表是否存在用户输入的电影名
            for (ScheduleItem scheduleItem : schedule.getItemList()) {
                if (scheduleItem.getMovie().getMovieName().equals(movieName)) {
                    return true;
                }
            }
            return false;
        }
    
        /**
         *  判断用户输入时间是否正确
         * @param schedule
         * @param time
         * @param movieName
         * @return
         */
        public static boolean chooseTime(Schedule schedule, String time, String movieName) {
            for (ScheduleItem scheduleItem : schedule.getItemList()) {
                if (scheduleItem.getTime().equals(time) && scheduleItem.getMovie().getMovieName().equals(movieName))
                    return true;
            }
            return false;
        }
    
        /**
         * 判断用户输入票的类别是否正确
         * @param num
         * @return
         */
        public static boolean chooseType(int num) {
            if (num == 1 || num == 2 || num == 3)
                return true;
            else
                return false;
        }
    
        /**
         *  利用正则表达式判断输入的座位号是否合法
         * @param seat
         * @return
         */
        public static boolean chooseSeat(String seat) {
            //[1-5]表示匹配数字的范围是1~5,问号(?)表示此数字只能出现一次[-]表示要完全匹配-号 
             if (seat.matches("[1-5]?+[-]+[1-7]?"))
            return true;
             else
             return false;
        }
    /**
     * 主程序
     * @param args
     */
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            // 新建电影院类
            Cinema cinema = new Cinema();
            //获取schedule
            Schedule cs = cinema.getSchedule();
            //解析XML文件,显示电影场次集合
            cs.paraeXML("NewFile.xml");
    //**************************主界面循环**************************//
            String condition = "y";
            while ("y".equalsIgnoreCase(condition)) {
                // 打印主界面,显示电影放映时间表
                cs.printItemList();
                System.out.println("请输入电影名称:");
                String movieName;// 用户输入的电影名
                // 循环,直到用户输入正确的电影名
                while (true) {
                    boolean flag = false;// 判断用户输入的电影名是否在放映表中
                    movieName = scanner.next();
                    flag = chooseName(cs, movieName);
                    if (flag == true)
                        break;
                    else
                        System.out.println("电影名称有误,请重新输入电影名称:");
    
                }
    
                System.out.println("请输入电影播放时间:以xx:xx的格式");
                String time;
                // 循环,直到用户输入正确的时间
                while (true) {
                    boolean flag = false;
                    time = scanner.next();
                    // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                    flag = chooseTime(cs, time, movieName);
                    if (flag == true)
                        break;
                    else
                        System.out.println("时间输入有误,请重新时间:");
    
                }
                // 将用户选择的电影名的相应放映场次找出来
                // 不能放在chooseName里找的原因:将scItem作为参数传进去的是一个引用的副本,
                // 可以利用这个引用改变引用所指向对象的内存,但对引用本身赋值,函数返回后,副本被销毁,原指针仍为空
                ScheduleItem scItem = null;// 电影名对应的场次信息
                for (ScheduleItem scheduleItem : cs.getItemList()) {
                    if (scheduleItem.getMovie().getMovieName().equals(movieName)&&scheduleItem.getTime().equals(time)) {
                        scItem = scheduleItem;
    
                    }
                }
    
                System.out.println("请输入您要购买的票的类型:1.全价票 2.学生票 3.赠票");
                int num=0;
                // 循环,直到用户输入正确的数字
                while (true) {
                    boolean flag = false;
                    try{
                    num = scanner.nextInt();
                    // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                    flag = chooseType(num);
                    if (flag == true)
                        break;
                    else
                        System.out.println("数字输入有误,请选择购票类型:1.全价票 2.学生票 3.赠票");
                    }catch (InputMismatchException  e) {
                        scanner.next(); // 增加这样一行,清空缓冲区
                        System.out.println("输入不匹配,请输入数字:1.全价票 2.学生票 3.赠票!");
                    }
                }
    //****************************普通票****************************//
                switch(num){
                case 1:
                    System.out.println("请输入您需要的座位号:以排-列的形式");
                    String seat;
                    // 循环,直到用户输入正确座位号
                    while (true) {
                        boolean flag = false;// 标记用户输入座位号是否合法
                        seat = scanner.next();
                        // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                        flag = chooseSeat(seat);
                        if (flag == true)
                            break;
                        else
                            System.out.println("输入错误,请重新输入您需要的座位号:以排-列的形式");
                    }
    
                    Ticket ticket = new OriginalTicket(new Seat(seat), scItem.getMovie().getPrice(), scItem);
                    if(!cinema.checkTicket(ticket)){
                    //打印购票信息
                    ticket.buyTicket();
                    // 添加购买的票到集合中
                    cinema.getTicketList().add(ticket);
                    //序列化已购电影票
                    if(!cinema.getTicketList().isEmpty())
                    cinema.saveTicket();
                    break;
                    }
                    System.out.println("该票已被选购,请重新购票!");
                    break;
    //****************************学生票****************************//
                case 2:
                    System.out.println("请输入您所需要的折扣:1-9的整数");
                    int discount = scanner.nextInt();
                    System.out.println("请输入您需要的座位号:以排-列的形式");
                    // 循环,直到用户输入正确座位号
                    while (true) {
                        boolean flag = false;// 标记用户输入座位号是否合法
                        seat = scanner.next();
                        // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                        flag = chooseSeat(seat);
                        if (flag == true)
                            break;
                        else
                            System.out.println("输入错误,请重新输入您需要的座位号:以排-列的形式");
                    }
                    // 创建学生票
                    Ticket studentTicket = new StudentTicket(new Seat(seat), scItem.getMovie().getPrice(), scItem,
                            discount);
                    //判断该票是否被购买
                    if(!cinema.checkTicket(studentTicket)){
                    //打印购票信息到文件中
                    studentTicket.buyTicket();
                    // 添加购买的票到集合中
                    cinema.getTicketList().add(studentTicket);
                    //序列化已购电影票
                    cinema.saveTicket();
                    break;
                    }
                    System.out.println("该票已被选购,请重新购买!");
                    break;
    //****************************赠票****************************//
                case 3:
                    System.out.println("请输入客户姓名:");
                    String customerName = scanner.next();
                    System.out.println("请输入您需要的座位号:以排-列的形式");
                    // 循环,直到用户输入正确座位号
                    while (true) {
                        boolean flag = false;// 标记用户输入座位号是否合法
                        seat = scanner.next();
                        // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                        flag = chooseSeat(seat);
                        if (flag == true)
                            break;
                        else
                            System.out.println("输入错误,请重新输入您需要的座位号:以排-列的形式");
    
                    }
                    // 创建赠票
                    Ticket FreeTicket = new FreeTicket(new Seat(seat), scItem.getMovie().getPrice(), scItem, customerName);
                    if(!cinema.checkTicket(FreeTicket)){
                    //打印购票信息到文件中
                    FreeTicket.buyTicket();
                    // 添加购买的票到集合中
                    cinema.getTicketList().add(FreeTicket);
                    //序列化已购电影票
                    cinema.saveTicket();
                    break;
                    }
                 System.out.println("该票已被选购,请重新选票!");
                 break;
                }
                System.out.println("请选择继续购票(y)或退出系统(n):y/n");
                //循环判断用户输入是否正确
                while (true) {
                    condition = scanner.next();
                    if ("y".equalsIgnoreCase(condition) || "n".equalsIgnoreCase(condition))
                        break;
                    else
                        System.out.println("输入错误!请重新选择继续购票(y)或退出系统(n):y/n");
                }
            }
        }
    }

    2.这是放映日程类,该类解析xml文件并使用xml文件初始化电影信息集合 List

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /**
     * 放映日程类 Schedule;包含: 
     * 电影信息集合 List<ScheduleItem>
     * 
     * @author cxp
     * @data 2016-9-13
     * @modify
     * */
    public class Schedule {
    
        // 存储电影信息的集合
        private List<ScheduleItem> itemList = new ArrayList<ScheduleItem>();
    
       /**
        * 无参构造函数
        */
        public Schedule() {
            super();
        }
    
        /**
         *  打印电影场次信息及座位表
         */
        public void printItemList() {
            System.out.println("序号\t电影名称\t英文名称\t导演\t演员\t电影类型\t价格\t时间 ");
            int k=1;//打印序号
            //打印电影场次信息
            for (ScheduleItem scheduleItem : itemList) {
                System.out.println(k+"\t"+scheduleItem);
                k++;
            }
            //打印影院座位图
            System.out.println("下面为影院的座位结构图:");
            System.out.println("\t\t\t屏幕");
            for (int i = 1; i <=5; i++) {
                for (int j = 1; j <= 7; j++) {
                    System.out.print(i+"-"+j+"\t");
                }
                System.out.println();
            }       
        }
    
        /**
         *  getter和setter方法
         * @return
         */
        public List<ScheduleItem> getItemList() {
            return itemList;
        }
    
        public void setItemList(List<ScheduleItem> itemList) {
            this.itemList = itemList;
        }
    
        /**
         * 1.获得文档对象
         * 
         * @param fileName
         * @return
         */
        public Document getDocument(String fileName) {
            // 读取对象
            SAXReader reader = new SAXReader();
            // 获得文档对象
            Document document;
    
            try {
                document = reader.read(new File(fileName));
                return document;
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 2.解析文档 XML 
         * 将XML文件中的movie用来初始化Movie和Schedule类
         * 并将Schedule添加到itemList列表中
         * 
         * @param fileName
         */
        public void paraeXML(String fileName) {
            // 1.获得文档对象
            Document document = getDocument(fileName);
            // 2.获得根节点
            Element root = document.getRootElement();
            Element slElement = root.element("ShowList");
            // 获得子节点列表
            List<Element> list = slElement.elements();
           //循环,初始化itemList集合
            for (Element element : list) {
                // 存放XML文件数据(Name、Poster、Director、Actor、Type、Price)
                String movieName = element.elementText("Name");
                String poster = element.elementText("Poster");
                String director = element.elementText("Director");
                String actor = element.elementText("Actor");
                String type = element.elementText("Type");
                String price = element.elementText("Price");
                // 根据type选择相应的枚举类型成员
                MovieType movieType = null;
                switch (1) {
                case 1:
                    if (type.equalsIgnoreCase("CARTOON")) {
                        movieType = MovieType.CARTOON;
                        break;
                    }
                case 2:
                    if (type.equalsIgnoreCase("THRILLER")) {
                        movieType = MovieType.THRILLER;
                        break;
                    }
                case 3:
                    if (type.equalsIgnoreCase("ROMANCE")) {
                        movieType = MovieType.ROMANCE;
                        break;
                    }
                case 4:
                    if (type.equalsIgnoreCase("COMEDY")) {
                        movieType = MovieType.COMEDY;
                        break;
                    }
                case 5:
                    if (type.equalsIgnoreCase("ACTION")) {
                        movieType = MovieType.ACTION;
                        break;
                    }
                default:
                    movieType = MovieType.UNKNOW;
                }
                // 创建一个Movie对象
                Movie movie = new Movie(movieName, poster, director, actor,
                        movieType, Double.parseDouble(price));
                // 解析放映时间节点
                Element scElement = element.element("Schedule");
                List<Element> scList = scElement.elements();
                // 解析放映时间结点并添加item到itemList集合中
                for (Element element2 : scList) {
                    //获得element2元素的文本值
                    String time = element2.getText();
                    // 根据time以及之前的movie对象创建一个ScheduleItem对象
                    ScheduleItem item = new ScheduleItem(time, movie);
                    // 将此对象添加到列表中
                    itemList.add(item);
                    // System.out.println(stringBuffer2.toString());
                }
            }
        }
    
    }
    展开全文
  • Java小项目之:投票系统!

    千次阅读 2020-01-18 16:20:31
    Java小项目之:投票系统 今天给大家带来的是java编写的投票小系统,代码简易,适合初学者练手! 代码展示: package com.tarena.wgh.servlet; import java.io.IOException; import java.io.PrintWriter; import ...

    Java小项目之:投票系统

    今天给大家带来的是java编写的投票小系统,代码简易,适合初学者练手!
    代码展示:

    package com.tarena.wgh.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.*;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class PollServlet extends HttpServlet {
    
    	/**
    	 * The doPost method of the servlet. <br>
    	 *
    	 * This method is called when a form has its tag value method equals to post.
    	 * 
    	 * @param request the request send by the client to the server
    	 * @param response the response send by the server to the client
    	 * @throws ServletException if an error occurred
    	 * @throws IOException if an error occurred
    	 */
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("GBK");	//设置请求的编码方式
    		String item=request.getParameter("item");	//获取投票项
    		ServletContext servletContext=request.getSession().getServletContext();	//获取ServletContext对象该对象在application范围内有效
    		Map map=null;
    		if(servletContext.getAttribute("pollResult")!=null){
    			map=(Map)servletContext.getAttribute("pollResult");	//获取投票结果
    			map.put(item,Integer.parseInt(map.get(item).toString())+1);	//将当前的投票项加1
    		}else{		//初始化一个保存投票信息的Map集合,并将选定投票项的投票数设置为1,其他为0
    			String[] arr={"基础教程类","实例集锦类","经验技巧类","速查手册类","案例剖析类"};
    			map=new HashMap();
    			for(int i=0;i<arr.length;i++){
    				if(item.equals(arr[i])){	//判断是否为选定的投票项
    					map.put(arr[i], 1);
    				}else{
    					map.put(arr[i], 0);
    				}
    			}
    		}
    		servletContext.setAttribute("pollResult", map);	//保存投票结果到ServletContext对象中
    		response.setCharacterEncoding("GBK");		//设置响应的编码方式,如果不设置弹出的对话框中的文字将乱码
    		PrintWriter out=response.getWriter();
    		out.println("<script>alert('投票成功!');window.location.href='showResult.jsp';</script>");
    		
    	}
    
    }
    

    喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我!
    祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!在这里插入图片描述

    展开全文
  • 对于一个java项目来说,我理解的整个流程是这样的: (1)进行需求分析 (2)设计数据库(重要) (3)编写java代码 注:数据库设计非常重要,特别是数据类型的定义,表与表之间的关系,如果前期这些没整太好,...

    写在前面

    对于一个java项目来说,我理解的整个流程是这样的:
    (1)进行需求分析
    (2)设计数据库(重要)
    (3)编写java代码

    注:数据库设计非常重要,特别是数据类型的定义,表与表之间的关系,如果前期这些没整太好,在后期写java代码的时候会有些小麻烦,比如,修改数据类型,删除表,添加表中字段等等。不过还好有Navicat这种神器,让我们操作数据库更简单。

    开发环境

    (1)开发工具:Eclipse EE版
    (2)数据库:mysql-8.0.16-winx64
    (3)JDK:1.8.0_202
    (4)JDBC:8.0.16

    链接:https://pan.baidu.com/s/1B0Cx42vLII8hVxEswryAZA
    提取码:9owp

    完整代码

    链接:https://pan.baidu.com/s/1PbNl5iyvGWMOBSpVLhrF3g
    提取码:vr73

    sql文件及word文档

    链接:https://pan.baidu.com/s/1QFkmn2bG75jcasyHlHoqAw
    提取码:13ve

    怎么导入数据库呢?可以看这个:
    https://blog.csdn.net/qq_42524288/article/details/103497248

    展示下效果图

    1、主界面
    在这里插入图片描述
    2、登录界面
    在这里插入图片描述
    3、注册界面
    在这里插入图片描述
    4、查询界面
    在这里插入图片描述
    5、图书添加界面
    在这里插入图片描述
    6、用户查询界面
    在这里插入图片描述

    下面进入正题

    1、需求分析

    该系统有普通用户和管理员,如果是用户登录,则只能对图书进行查询、借阅、归还等基础操作,如果是管理员登录,还可以对图书进行增删改查等各项操作以及对用户进行查询和删除操作。

    总结需求得出系统功能就是:

    1、用户登录,有管理员和普通用户
    2、普通用户可以借书,还书,查询
    3、管理员可以管理图书和用户

    2、设计数据库

    (1)用户表(user):
    用户id,用户名,用户密码

    (2)管理员表(admin):
    管理员id,管理员名,管理员密码

    (3)图书信息表(book):
    图书id,图书名,图书出版社,图书作者,图书状态

    (4)借阅记录表(lendrecord) :
    借阅记录id,用户id,用户名,图书id,图书名,是否归还

    在这里插入图片描述(1) user表
    在这里插入图片描述
    (2) admin表
    在这里插入图片描述
    (3) book表
    在这里插入图片描述

    (4) lendrecord表
    在这里插入图片描述

    3、Java代码编写

    (1)包结构
    在这里插入图片描述

    (2)包结构的功能
    在这里插入图片描述
    (3)重要代码分析

    a、Dao类(以BookDao为例)
    Dao类中写的是对数据库的一些基本操作

    package com.book.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import com.book.model.Book;
    import com.book.model.User;
    import com.book.util.StringUtil;
    
    public class BookDao {
    	
    	/**
    	 * 图书添加
    	 * @param con
    	 * @param book
    	 * @return
    	 * @throws Exception
    	 */
    	public int add(Connection con, Book book) throws Exception {
    		
    		//插入图书前 检查bookId是否已经存在,若存在,返回0
    		String sqlid = "select * from book where bookId = ?";		
    		PreparedStatement pstmtid = (PreparedStatement) con.prepareStatement(sqlid);	
    		pstmtid.setString(1, book.getBookId());
    		ResultSet rs = pstmtid.executeQuery();
    		if(rs.next()) {
    			return 0;
    		}
    		
    		String sql = "insert into book values(?,?,?,?,?,?)";
    		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
    		
    		pstmt.setString(1, book.getBookId());		
    		pstmt.setString(2, book.getBookName());		
    		pstmt.setString(3, book.getPress());		
    		pstmt.setString(4, book.getAuthor());		
    		pstmt.setString(5, book.getTypeId());		
    		pstmt.setInt(6, book.getLend());
    		
    		return pstmt.executeUpdate();
    	}
    	
    	/**
    	 * 图书查询
    	 * @param con
    	 * @param bookMessage
    	 * @return
    	 * @throws Exception
    	 */
    	public ResultSet list(Connection con, Book bookMessage) throws Exception {
    		
    		//将book表和bookType表连接
    		//StringBuffer sb = new StringBuffer("select * from book,booktype where book.typeId=booktype.typeId");
    		StringBuffer sb = new StringBuffer("select * from book where bookId = bookId ");
    		
    		//向sb中添加,并进行模糊查询
    		if(StringUtil.isNotEmpty(bookMessage.getBookId())) { 
    			sb.append(" and bookId like '%" + bookMessage.getBookId() + "%'");
    		}
    		
    		//按书名模糊查询
    		if(StringUtil.isNotEmpty(bookMessage.getBookName())) { 
    			sb.append(" and book.bookName like '%" + bookMessage.getBookName() + "%'");
    		}
    		
    		//按作者模糊查询
    		if(StringUtil.isNotEmpty(bookMessage.getAuthor())) {
    			sb.append(" and book.author like '%" + bookMessage.getAuthor() + "%'");
    		}
    		
    		//按图书类型模糊查询
    		if(StringUtil.isNotEmpty(bookMessage.getTypeId())) {
    			sb.append(" and book.typeId like '%" + bookMessage.getTypeId() + "%'");
    		}
    		
    		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sb.toString());
    		return pstmt.executeQuery();
    	}
    	
    	//历史记录查询
    	public ResultSet listHistory(Connection con, User userMessage) throws Exception {
    		
    		String sql = "select recordId,userName, bookName, (case back when 0 then '否' when 1 then '是' end) as back from lendrecord where userName = ?";
    		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
    		pstmt.setString(1, userMessage.getUsername());
    		return pstmt.executeQuery();
    	}
    	
    	/**
    	 * 图书删除
    	 * @param con
    	 * @param id
    	 * @return
    	 * @throws Exception
    	 */
    	public int delete(Connection con, String id) throws Exception {
    		
    		String sql = "delete from book where bookId = ?";		
    		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);	
    		pstmt.setString(1, id);
    	
    		return pstmt.executeUpdate();
    	}
    	
    	/**
    	 * 图书修改
    	 * @param con
    	 * @param bookMessage1
    	 * @return
    	 * @throws Exception
    	 */
    	public int update(Connection con, Book bookMessage1) throws Exception {
    		
    		String sql = "update book set bookName=?, press=?, author=? where bookId=?";
    		
    		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
    			
    		pstmt.setString(1, bookMessage1.getBookName());
    		pstmt.setString(2, bookMessage1.getPress());
    		pstmt.setString(3, bookMessage1.getAuthor());
    		pstmt.setString(4, bookMessage1.getBookId());
    		return pstmt.executeUpdate();
    	}
    	
    	//检查该id的图书是否存在,若存在,返回0,否则返回1
    	public ResultSet bookCheck(Connection con, String id) throws Exception{
    		
    		//插入图书前 检查bookId是否已经存在,若存在,返回0
    		String sqlid = "select * from book where bookId = ?";		
    		PreparedStatement pstmtid = (PreparedStatement) con.prepareStatement(sqlid);	
    		pstmtid.setString(1, id);
    		ResultSet rs = pstmtid.executeQuery();
    		return rs;
    	}
    	//
    	/**
    	  * 图书借阅
    	  * 修改book表中的lend字段和 借阅记录表(lendrecord)中的back字段  lend=1,back=0
    	 * @param con
    	 * @param textid
    	 * @param bookName
    	 * @param userMessage
    	 * @return
    	 * @throws Exception
    	 */
    	public int lend (Connection con, String textid, String bookName, User userMessage) throws Exception {
    		//先修改book表中图书的状态
    		String sql = "update book set lend=? where bookId=?";
    		
    		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
    			
    		pstmt.setString(1, "1");
    		pstmt.setString(2, textid);
    		pstmt.executeUpdate();
    		
    		//插入借阅记录表(lendrecord) 信息
    		String insql = "insert into lendrecord (userId,userName,bookId,bookName,back)values(?,?,?,?,?)";
    		PreparedStatement lendpstmt = (PreparedStatement) con.prepareStatement(insql);
    		
    		lendpstmt.setString(1, userMessage.getUserId());
    		lendpstmt.setString(2, userMessage.getUsername());
    		lendpstmt.setString(3, textid);	
    		lendpstmt.setString(4, bookName);
    		lendpstmt.setString(5, "0");
    		lendpstmt.executeUpdate();
    		return 0;//成功
    	}
    	
    	//图书归还
    	/**
    	  * 修改book表中的lend字段和 借阅记录表(lendrecord)中的back字段 lend=0,back=1
    	 * @param con
    	 * @param textid
    	 * @param userMessage
    	 * @return
    	 * @throws Exception
    	 */
    	public int back (Connection con, String textid, User userMessage) throws Exception {
    		//先修改book表中图书的状态
    		String sql = "update book set lend=? where bookId=?";
    		
    		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
    			
    		pstmt.setString(1, "0");
    		pstmt.setString(2, textid);
    		pstmt.executeUpdate();
    		
    		//修改借阅记录表(lendrecord) 信息 ,back=1,表示已经归还
    		String insql = "update lendrecord set back=? where bookId=? and userName=? ";
    		PreparedStatement lendpstmt = (PreparedStatement) con.prepareStatement(insql);
    		
    		lendpstmt.setString(1, "1");
    		lendpstmt.setString(2, textid);
    		lendpstmt.setString(3, userMessage.getUsername());
    		lendpstmt.executeUpdate();
    		
    		return 0;//成功
    	}
    }
    

    b、Model类(以Book为例)
    Medel类,主要是get,set方法
    get和set方法可以自动生成,快捷键:
    Shift+Alt+S –> Generate Getters and Setters –>选择你需要的get,set参数

    package com.book.model;
    
    public class Book {
    	
    	private String bookId;//图书id
    	private String bookName;//图书名
    	private String press;//图书出版社
    	private String author;//图书作者
    	private String typeId;//图书类别id
    	private int lend;//图书是否被借, 是为1, 默认为0
    
    	public String getBookId() {
    		return bookId;
    	}
    
    	public void setBookId(String bookId) {
    		this.bookId = bookId;
    	}
    
    	public String getBookName() {
    		return bookName;
    	}
    
    	public void setBookName(String bookName) {
    		this.bookName = bookName;
    	}
    
    	public String getPress() {
    		return press;
    	}
    
    	public void setPress(String press) {
    		this.press = press;
    	}
    
    	public String getAuthor() {
    		return author;
    	}
    
    	public void setAuthor(String author) {
    		this.author = author;
    	}
    
    	public String getTypeId() {
    		return typeId;
    	}
    
    	public void setTypeId(String typeId) {
    		this.typeId = typeId;
    	}
    
    	public int getLend() {
    		return lend;
    	}
    
    	public void setLend(int lend) {
    		this.lend = lend;
    	}
    }
    

    c、Util类
    连接和关闭数据库

    package com.book.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class DbUtil {
    	
    	private String url = "jdbc:mysql://localhost:3306/work?serverTimezone=UTC";
    	private String username = "root";
    	private String password = "123456";
    	
    	//连接数据库方法
    	public Connection getCon() throws Exception {
    		//Class.forName("com.mysql.jdbc.Driver");
    		Class.forName("com.mysql.cj.jdbc.Driver");
    		Connection con = (Connection) DriverManager.getConnection(url, username, password);
    		return con;
    	}
    	//关闭数据库方法
    	public void closeCon(java.sql.Connection con) throws Exception {
    		
    		if(con != null) {
    			con.close();
    		}
    	}
    	
    /*	 public static void main(String[] args) {
    		 DbUtil dbUtil = new DbUtil(); 
    		 try {
    			 dbUtil.getCon(); 
    			 System.out.println("数据库连接成功"); 
    			 } catch (Exception e) { 
    				 // TODO Auto-generated catch block 
    				 e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因。
    				 System.out.println("数据库连接错误"); 
    				 } 
    		 } */
    }
    

    d、工具类
    判断字符串是否为空,是否不为空

    package com.book.util;
    
    public class StringUtil {
    	/**
    	 * 判断字符串是否为空
    	 * @param str
    	 * @return
    	 */
    	public static boolean isEmpty(String str) {
    		
    		if(str == null || "".equals(str.trim())) {//trim()的作用是去掉字符串两端的多余的空格
    			return true;   						//注意,是两端的空格,且无论两端的空格有多少个都会去掉,
    		}else {									// 当然,中间的那些空格不会被去掉
    			return false;
    		}
    	}
    	/**
    	 * 判断不为空
    	 * @param str
    	 * @return
    	 */
    	public static boolean isNotEmpty(String str) {
    		
    		if(str != null && !"".equals(str.trim())) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    }
    
    

    e、Fram类(以BookMenuFram为例)
    各种界面

    package com.bookface;
    
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    import com.book.util.StringUtil;
    import com.bookmanager.view.BookAddFram;
    import com.bookmanager.view.BookDeleteFram;
    import com.bookmanager.view.BookLookFram;
    import com.bookmanager.view.BookUpDataFram;
    import com.lendbackbook.view.BackBook;
    import com.lendbackbook.view.HistoryBook;
    import com.lendbackbook.view.LendBook;
    import com.usermanager.view.UserDeleteFram;
    import com.usermanager.view.UserLookFram;
    
    public class BookMenuFram extends JFrame {
    	
    	static String loginId = null;
    	static String loginName = null;//若是管理员登录,存管理员的名字,否则,存普通用户的名字
    	
    	//标记用户类别,若是0代表普通用户,1代表管理员,默认是0
    	static int flag = 0;
    	
    	//系统主界面
    	public static void BookMenuFram() {
    		
    		JFrame frame = new JFrame();//主菜单窗口	
    		frame.setLayout(null);
    
    		//开6个面板,方便设置位置
    		JPanel pan1 = new JPanel();//系统名字
    		JPanel pan2 = new JPanel();//图书管理
    		JPanel pan3 = new JPanel();//图书管理的操作按钮
    		JPanel pan4 = new JPanel();//借还书
    		JPanel pan5 = new JPanel();//借还书的操作按钮
    		JPanel pan6 = new JPanel();//用户管理
    		JPanel pan7 = new JPanel();//用户管理的操作按钮
    		JPanel pan8 = new JPanel();//放登录退出按钮
    		JPanel pan9 = new JPanel();//放置图片
    		
    		JTextField text = new JTextField();	// 文本框,可删除
    		text.setText("未登录!");//设置提示未登录
    		
    //		JLabel text = new JLabel();//提示框,不可删除
    //		text.setText("未登录!");//设置提示未登录
    		
    		//提示框
    		JLabel label1 = new JLabel("小型图书管理系统");		
    		JLabel label2 = new JLabel("图书管理");
    		JLabel label3 = new JLabel("借还书");
    		JLabel label4 = new JLabel("用户管理");
    	
    		//添加图片
    		ImageIcon im = new ImageIcon("imge/1.jpg");
    		JLabel pac = new JLabel(im);		
    		pac.setBounds(355,125, im.getIconWidth(), im.getIconHeight());
    		pan9.add(pac);
    		pan9.setBounds(355,125, 932, 630);
    		
    		//按钮
    		JButton button1 = new JButton("登录");
    		JButton button2 = new JButton("图书查询");
    		JButton button3 = new JButton("图书添加");
    		JButton button4 = new JButton("图书修改");
    		JButton button5 = new JButton("图书删除");
    		JButton button6 = new JButton("办理借书");
    		JButton button7 = new JButton("办理还书");
    		JButton button8 = new JButton("历史查询");
    		JButton button9 = new JButton("查询用户");
    		JButton button10 = new JButton("删除用户");
    		JButton button11 = new JButton("退出");
    		
    		//设置颜色格式
    		Color blacka = new Color(30,144,255);
    		Color blackb = new Color(0,255,255);
    		Color blackc = new Color(255,69,0);
    		Color blackd = new Color(255,215,0);
    		
    		//设置字体大小对象
    		Font font = new Font("宋体",Font.BOLD,80);//标题字体大小		
    		Font f = new Font("宋体",Font.BOLD,30);//提示框字体大小
    		Font f1 = new Font("宋体",Font.BOLD,20);//text
    		
    		//设置按钮的大小
    		button2.setPreferredSize(new Dimension(200,65));
    		button3.setPreferredSize(new Dimension(200,65));
    		button4.setPreferredSize(new Dimension(200,65));
    		button5.setPreferredSize(new Dimension(200,65));
    		button6.setPreferredSize(new Dimension(200,65));
    		button7.setPreferredSize(new Dimension(200,65));
    		button8.setPreferredSize(new Dimension(200,65));
    		button9.setPreferredSize(new Dimension(200,65));
    		button10.setPreferredSize(new Dimension(200,65));
    		text.setPreferredSize(new Dimension(170,35));//
    		
    		//设置字体大小
    		button2.setFont(f);
    		button3.setFont(f);
    		button4.setFont(f);
    		button5.setFont(f);
    		button6.setFont(f);
    		button7.setFont(f);
    		button8.setFont(f);
    		button9.setFont(f);
    		button10.setFont(f);
    		text.setFont(f1);
    		label1.setFont(font);//设置标题字体
    		label2.setFont(f);
    		label3.setFont(f);
    		label4.setFont(f);
    		
    		//向面板中添加组件
    		pan1.add(label1);
    		pan1.setBackground(blacka);
    		pan1.setBounds(0, 0, 1100, 120);//大标题
    		
    		//pan8定位在右上角,放登录、退出和显示框
    		pan8.add(text);
    		pan8.add(button1);
    		pan8.add(button11);	
    		pan8.setBackground(blacka);
    		pan8.setBounds(1100, 0, 190, 120);
            
    		pan2.add(label2);
    		pan2.setBackground(blackb);
    		pan2.setBounds(0, 120, 150, 284);//图书管理
    		
    		pan3.add(button2);
    		pan3.add(button3);
    		pan3.add(button4);
    		pan3.add(button5);
    		pan3.setBounds(150, 120, 200, 284);
    		
    		pan4.add(label3);
    		pan4.setBackground(blackc);
    		pan4.setBounds(0, 404, 150, 213);//借还书
    	    
    		pan5.add(button6);
    		pan5.add(button7);
    		pan5.add(button8);
    		pan5.setBounds(150, 404, 200, 213);
    		
    		pan6.add(label4);
    		pan6.setBackground(blackd);
    		pan6.setBounds(0, 617, 150, 142);//用户管理
    	    
    		pan7.add(button9);
    		pan7.add(button10);
    		pan7.setBounds(150, 617, 200, 200);
    		
    		String noLogin = "未登录!";//JVM先查看常量池中有没有,如有,地址指向它,若没有,创建新对象保存
    		
    		//获取登录后的用户名
    		if(StringUtil.isNotEmpty(LogOnFram.userName())) {
    		    loginName = LogOnFram.userName();
    			text.setText("欢迎您," + loginName);	
    		}
    		if(StringUtil.isNotEmpty(LogOnFram.adminName())) {
    		    loginName = LogOnFram.adminName();
    			text.setText("欢迎您," + loginName);
    			flag = 1;
    		}
    		//获取登录后的id
    		if(StringUtil.isNotEmpty(LogOnFram.id())) {
    			loginId = LogOnFram.id();
    		}
    		
    		//登录监听
    		button1.addActionListener(new ActionListener() {//登录监听
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {	
    					LogOnFram.LogOnFram();
    					frame.dispose();//关闭当前登录界面
    				
    				} else {
    					JOptionPane.showMessageDialog(null, "请您先退出!");
    				}				
    			}			
    		});
    		
    		//各项操作监听,button2--button10
    		button2.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {	//equals()方法如果不重写,就是比较的字符串内容。而'=='比较的是地址
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {
    					BookLookFram.BookLookFram();//图书查询
    				}
    			}	
    		});
    
    		button3.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {
    					if(flag == 1) {//如果flag是1,这可以添加图书
    						BookAddFram.bookAddFram();//图书添加
    					} else {
    						JOptionPane.showMessageDialog(null, "管理员才可以执行此操作!");
    					}				
    				}	
    			}
    		});
    		button4.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {	
    					if(flag == 1) {//如果flag是1,这可以添加图书
    						BookUpDataFram.bookUpDataFram();//修改图书
    					} else {
    						JOptionPane.showMessageDialog(null, "管理员才可以执行此操作!");
    					}
    				}
    			}
    		});
    		button5.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {
    					if(flag == 1) {//如果flag是1,这可以添加图书
    						BookDeleteFram.BookDeleteFram();//删除图书
    					} else {
    						JOptionPane.showMessageDialog(null, "管理员才可以执行此操作!");
    					}
    				}
    			}
    		});
    		button6.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {  //办理借书
    					LendBook.LendBook();
    				}
    			}
    		});
    		button7.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {  //办理还书
    					BackBook.BackBook();
    				}
    			}
    		});
    		button8.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {	//历史查询
    					HistoryBook.HistoryBook();
    				}
    			}
    		});
    		button9.addActionListener(new ActionListener() {//查询用户
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {
    					if(flag == 1) {//如果flag是1,这可以添加图书
    						UserLookFram.UserLookFram();//用户查询
    					} else {
    						JOptionPane.showMessageDialog(null, "管理员才可以执行此操作!");
    					}
    					
    				}
    			}
    		});
    		button10.addActionListener(new ActionListener() {//删除用户
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {
    					if(flag == 1) {//如果flag是1,这可以添加图书
    						UserDeleteFram.UserDeleteFram();//用户删除
    					} else {
    						JOptionPane.showMessageDialog(null, "管理员才可以执行此操作!");
    					}
    				}
    			}
    		});
    		
    		button11.addActionListener(new ActionListener() {//退出登录
    			public void actionPerformed(ActionEvent e) {
    				String getText = text.getText().toString();//1
    				if(getText.equals(noLogin)) {
    					JOptionPane.showMessageDialog(null, "请您先登录!");
    					return;
    				} else {
    //					frame.dispose();
    //					LogOnFram.LogOnFram();
    					System.exit(0);
    				}
    			}
    		});
    		
    		//向容器中添加JPanel面板
    		frame.add(pan1);
    		frame.add(pan2);
    		frame.add(pan3);
    		frame.add(pan4);
    		frame.add(pan5);
    		frame.add(pan6);
    		frame.add(pan7);
    		frame.add(pan8);
    		frame.add(pan9);
    		
    		//窗口设置
    		frame.setBounds(310, 100, 1300, 800);
    		frame.setResizable(false);//设置窗口不能扩大
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    	
    	public static String loginName() {
    		return loginName;
    	}
    	public static String loginId() {
    		return loginId;
    	}
    } 
    
    展开全文
  • Java小项目之:教你做个开心消消乐! 今天给大家带来的小项目是开心消消乐(连连看),还是一样的惯例。操作简单,适合java初学者练手。想看其他java小项目的朋友可以关注我,我会持续更新,也可以私信我领资料! 这...

    Java小项目之:教你做个开心消消乐!

    今天给大家带来的小项目是开心消消乐(连连看),还是一样的惯例。操作简单,适合java初学者练手。想看其他java小项目的朋友可以关注我,我会持续更新,也可以私信我领资料!
    这个游戏分三个模块,其中第一,二两个模块的内容都是非常分散,常常要考虑各这两大模块之间的协作,而且每个模块内部又有很多小模块,互相之间也有非常密切的联系,很多变量之间数据的传递都要考虑好。而第三个模块(即路径判断问题)相对比较集中,几乎就只有一个函数,另外这个游戏没有用到数据库,所使用的功能也不是很多,但是由于考虑到要按固有的游戏规则来编写,因此要写较多时间考虑游戏怎么玩,怎么通过代码判断用户每个鼠标点击的坐标以及当前坐标位置代表的图片内容等各方面的判断考虑得就较多了。
    功能:
    提示功能
    图片重置功能
    记录排行榜功能(记录前五名)
    快捷键:
    r 重开
    q 离开
    r 重置
    t 提示
    界面展示:
    在这里插入图片描述
    部分代码展示:
    package gao.tool;

    import gao.Controll;

    /**

    • 用于连击

    • */
      public class DoubleHitThread extends Thread {
      public final static int MAXTIME=3000;//3绉? private Controll controll;
      private int time;
      private int currentDoubleHitCount;
      public int getTime() {
      return time;
      }
      public void setTime(int time) {
      this.time = time;
      }
      public int getCurrentDoubleHitCount() {
      return currentDoubleHitCount;
      }
      public void setCurrentDoubleHitCount(int currentDoubleHitCount) {
      this.currentDoubleHitCount = currentDoubleHitCount;
      }

      public DoubleHitThread(Controll controll) {
      super();
      this.controll = controll;
      this.time = MAXTIME;
      this.currentDoubleHitCount =0;
      }

      public void run(){
      while(time>0){
      try {

       		sleep(1000);
       	} catch (InterruptedException e) {
       		e.printStackTrace();
       	}
       	
       	time-=1000;
       	controll.win.getDHitTime().setText(Integer.toString(time/1000));
       }
       currentDoubleHitCount=0;
       controll.win.getDHitTime().setText(null);
       controll.win.getDHitCount().setText(null);
      

      }
      }

    喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我!
    祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!

    展开全文
  • java小项目桌球小游戏

    千次阅读 2019-03-07 16:27:47
    ​​​​​ 桌球游戏 目标实现桌球在桌上运动,现阶段没有考虑桌球速度,落袋,和出杆,简单模拟桌球的运动轨迹。 开发工具:IntelliJ IDEA 2018.3.2 x64 所用图片:ball.png、desk.jpg。 import java.awt.*; ...
  • java小项目 适合初学者

    热门讨论 2011-12-18 16:25:12
    好不容易找到的15个适合初学者的小JAVA视频,里面有计算器什么的,挺不错的,适合新手练练手
  • 关于Java小项目——图书管理系统的总结一、开发环境eclipse + widowbuilder 二、涉及到的技术 Java MVC模式 Swing MySQL JDBC Java MVC模式M——Model(模型)。用于处理应用程序数据逻辑的部分。建立相关的类来连接...
  • Java小项目中WEB-INF下jsp页面如何访问 一:一般为啥要把jsp页面放在WEB-INF呐?  这样主要是为了网站的安全的角度来说的,WEB-INF是安全目录Tomcat 默认的访问路径是WebRoot下的index.jsp,放在WEB-INF下的页面...
  • 在之前两次章我们都...JAVA小项目-银行管理系统(图形化界面)4-验证 http://blog.csdn.net/changjiale110/article/details/78916497 JAVA小项目-银行管理系统(图形化界面)5-用户信息读写 http://blog.csdn.ne
  • 第一个JAVA小项目(太阳系行星运动模型)1. 窗体的构建对于游戏来说,需要构建一个桌面窗体,建立MyFrame类,继承Frame类,专用用于游戏窗体的构建。在MyFrame类中建立launchFrame()方法,用于实现窗口的生成。这三...
  • java小项目之管家婆

    千次阅读 2017-10-01 19:48:17
    package cn.hncu.mygjp;public class MainApp { public static void main(String[] args) { new MainView().run(); } } package cn.hncu.mygjp;import java.util.List; import java.util.Scanner;pub
  • java小项目之用户信息添加

    千次阅读 2017-10-29 10:45:41
    java GUI小项目之用户信息添加,实现一个简单的添加与数据封装功能,界面没有美化,如图
  • java小项目鲜花销售系统

    千次阅读 2018-12-16 20:12:01
    项目:七彩鲜花销售系统 一、练习目标 1.体会数组的作用 2.找到分层开发的感觉 3.收获分层开发的兴趣 4.作出效果,找到自信 5.学会调试错误 6.掌握数组的增删改查方法 全部讲解和练习时间控制在3小时以内 ...
  • java小项目,租车系统

    千次阅读 2017-09-20 12:46:10
    暑假因为有事耽误了,本以为暑假完结windows程序设计的,唉,慢慢补吧,学校开了java,因为学过c++,所以觉java并不是太难,根据慕课网给的项目,做了这个租车系统 无非就是面向对象思想,定义一个抽象汽车类,...
  • 在刷视频的时候,看到了一个讲解用java写一个贪吃蛇的项目,于是想照猫画虎的学习仿制一下。 学习视频的地址:https://www.bilibili.com/video/BV1HE41127CV 也欢迎大家去支持一下这个up主。 首先在对应网站找到代码...
  • JAVA小项目:图书管理系统

    千次阅读 2019-07-26 16:24:17
    学习java以来做的第一个项目,目的是为了了解学习到更多的东西,做这个项目过程中遇到了许多坑,看了视频,搜了很多资料,最终还好是解决了,做出来的东西虽然还有许多不完美的地方,功能也不够完善,但是达到了我...
  • Java小项目之:植物大战僵尸! 《植物大战僵尸》是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓。 在我身边,上到40岁的大叔阿姨,下到7、8岁的小弟弟妹妹都...
  • JAVA小项目--银行管理系统

    万次阅读 多人点赞 2017-12-03 15:41:49
    此项目为非图形界面 小小小小小项目 如需要窗体+文件读写的银行管理系统,请移步 点击进入 https://blog.csdn.net/changjiale110/article/details/78955353 ** 银行新用户现金业务办理 1.任务描述     ...
  • JAVA小项目-搜搜移动大厅

    万次阅读 多人点赞 2017-12-25 19:01:35
    有很多bug,但整体框架已经搭出 仅供参考 需要完整的可以 点这下载 package pojo.able; import pojo.MobileCard; /* * 通话接口 */ public interface CallServiceable { /* * 套餐内...
  • JAVA小项目--银行管理系统(GUI+数据库mysql)

    万次阅读 多人点赞 2018-06-14 10:46:50
    主要是图形界面的编写和数据库工具类DBUtil的编写。代码需要可以私我,我会上传到资源里。1.思路2.菜单3.登录4.查询5.存钱6.改密7.取钱8.挂失9.开户10.转账...
  • 1.第一个javaSE项目 01.双击idea运行IDE 02.配置JDK ...在网上下载一个JDK1.8,之后可以在搜索关于idea安装JDK的文章就好了,不是很难这个,,, ...03.创建项目的workspace ...04.创建java类和包 05...
  • Java 小项目 01 简单记账软件

    千次阅读 多人点赞 2018-07-25 23:46:30
    mysql-connector-java-5.1.27-bin.jar:MySQL的JDBC驱动包 3)数据表创建 # 新建数据库 create database jzb; # 新建数据表 create table jzb_zhangwu( jid int primary key auto_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,286
精华内容 11,714
关键字:

java小项目

java 订阅