DVD项目

dao包

DVDInfoDao

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import entity.DVDInfo;
import entity.DVDUser;

/*
 * 对于DVDInfo类的数据操作类
 */
public class DVDInfoDao {

	/*
	 *   新增DVD 
	 */
	public int addDVD(String dvdName){
		Connection con = null;
		Statement stmt = null;
		try {
			// 加载数据库驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// 获取数据库连接对象
			con = DriverManager.getConnection("jdbc:mysql:///minidvddb", "root", "ok");
			// 创建SQL语句执行对象
			stmt = con.createStatement();
			// 定义SQL语句
			String sql = "INSERT INTO `dvdinfo` VALUES (NULL,'"+dvdName+"',default,null,default)";
			// 执行语句并返回受影响行数
			return stmt.executeUpdate(sql);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(stmt != null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return 0;
	}
	
	/*
	 *   查看DVD 
	 */
	public List<DVDInfo> queryAllDVD(){
		List<DVDInfo> dvdList = new ArrayList<DVDInfo>();
		Connection con = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// 加载数据库驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// 获取数据库连接对象
			con = DriverManager.getConnection("jdbc:mysql:///minidvddb", "root", "ok");
			// 创建SQL语句执行对象
			stmt = con.createStatement();
			// 定义SQL语句
			String sql = "select * from dvdinfo";
			// 执行查询语句并处理结果集
			rs = stmt.executeQuery(sql);
			while(rs.next()) {
				DVDInfo dvd = new DVDInfo(rs.getInt("id"), rs.getString("dvdName"), rs.getString("state"), rs.getString("bdate"), rs.getInt("count"));
				dvdList.add(dvd);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(stmt != null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return dvdList;
	}
	
	/*
	 *   删除DVD 
	 */
	public int deleteDVD(int dvdId){
		Connection con = null;
		Statement stmt = null;
		try {
			// 加载数据库驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// 获取数据库连接对象
			con = DriverManager.getConnection("jdbc:mysql:///minidvddb", "root", "ok");
			// 创建SQL语句执行对象
			stmt = con.createStatement();
			// 定义SQL语句
			String sql = "delete from dvdinfo where id ="+dvdId;
			// 执行语句并返回受影响行数
			return stmt.executeUpdate(sql);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(stmt != null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return 0;
	}
	
	/*
	 * 借出DVD
	 */
	public int jcDVD(int dvdId){
		Connection con = null;
		Statement stmt = null;
		try {
			// 加载数据库驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// 获取数据库连接对象
			con = DriverManager.getConnection("jdbc:mysql:///minidvddb", "root", "ok");
			// 创建SQL语句执行对象
			stmt = con.createStatement();
			// 定义SQL语句
			String sql = "update dvdInfo set state='已借出' , bdate = CURDATE() , count = count + 1 where id ="+dvdId;
			// 执行语句并返回受影响行数
			return stmt.executeUpdate(sql);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(stmt != null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return 0;
	}
	
	/*
	 * 归还DVD
	 */
	public int ghDVD(int dvdId){
		Connection con = null;
		Statement stmt = null;
		try {
			// 加载数据库驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// 获取数据库连接对象
			con = DriverManager.getConnection("jdbc:mysql:///minidvddb", "root", "ok");
			// 创建SQL语句执行对象
			stmt = con.createStatement();
			// 定义SQL语句
			String sql = "update dvdInfo set state='可借' , bdate = null  where id ="+dvdId;
			// 执行语句并返回受影响行数
			return stmt.executeUpdate(sql);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(stmt != null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return 0;
	}
	
	
}
DVDUserDao

package dao;

import java.sql.*;

import entity.DVDUser;

/*
 * 关于DVDUser类的相关数据操作类
 */
public class DVDUserDao {
	
	/*
	 * 根据登录名和密码查询指定用户信息
	 * 返回结果:查询到用户则返回用户对象,否则返回null
	 */
	public DVDUser userLogin(String name,String pwd){
		Connection con = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// 加载数据库驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// 获取数据库连接对象
			con = DriverManager.getConnection("jdbc:mysql:///minidvddb", "root", "ok");
			// 创建SQL语句执行对象
			stmt = con.createStatement();
			// 定义SQL语句
			String sql = "select * from dvdusers where loginname = '"+name+"' and loginpwd = '"+pwd+"'";
			// 执行查询语句并处理结果集
			rs = stmt.executeQuery(sql);
			if(rs.next()) {
				return new DVDUser(rs.getInt("id"), rs.getString("loginName"), rs.getString("loginPwd"), rs.getString("nickName"));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(stmt != null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con != null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

}

DVDManager

package manager;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

import dao.DVDInfoDao;
import dao.DVDUserDao;
import entity.DVDInfo;
import entity.DVDUser;

public class DVDMgr {

	// 全局的输入对象
	private Scanner in = new Scanner(System.in);
	// 声明当前登录管理员对象
	private DVDUser user;
	// 查询所有DVD信息列表
	List<DVDInfo> dvdList;

	/*
	 * 启动方法
	 */
	public void start() {
		// 调用系统登录方法
		// 用户有三次机会登录,否则系统退出
		for (int i = 2; i >= 0; i--) {
			if (login()) {
				break;
			} else {
				if (i == 0) {
					System.out.println("三次均登录失败,谢谢使用!");
					return;
				}
				System.out.println("用户名或密码错误,你还有" + i + "次机会!");
			}
		}
		// 登录成功后,调用打印菜单方法,并执行菜单功能
		while (showMenu());
	}

	/*
	 * 打印系统菜单,并执行菜单功能
	 */
	private boolean showMenu() {
		System.out.println("欢迎:" + user.getNickName() + "使用迷你DVD系统");
		System.out.println("-----------------------------");
		System.out.println("1.新增DVD");
		System.out.println("2.查看DVD");
		System.out.println("3.删除DVD");
		System.out.println("4.借出DVD");
		System.out.println("5.归还DVD");
		System.out.println("6.退出DVD");
		System.out.println("-----------------------------");
		System.out.print("请选择:");
		int choiceId = in.nextInt();
		DVDInfoDao dvdDao = new DVDInfoDao();
		switch (choiceId) {
		case 1:
			System.out.println("---> 新增DVD");
			System.out.print("请输入要新增的DVD名称:");
			String dvdName = in.next();
			if(dvdDao.addDVD(dvdName) > 0){
				// 增加成功
				System.out.println("新增影片:《"+dvdName+"》成功!");
			} else {
				// 增加失败
				System.out.println("新增影片:《"+dvdName+"》失败!");
			}
			break;
		case 2:
			System.out.println("---> 查看DVD");
			// 获取所有DVD信息列表
			dvdList = dvdDao.queryAllDVD();
			// 判断是否存在至少一条DVD信息
			if(dvdList.size() == 0) {
				// 无数据
				System.out.println("系统中暂无任何DVD信息!");
			} else {
				// 有数据
				System.out.println("序号\t状态\t名称\t\t借出次数\t借出日期");
				for (int i = 1; i <= dvdList.size(); i++) {
					DVDInfo di = dvdList.get(i-1);
					System.out.println(i+"\t"+di.getState()+"\t《"+di.getDvdName()+"》\t"+di.getCount()+"次\t"+(di.getBdate() == null ? "" : di.getBdate()));
				}
			}
			break;
		case 3:
			System.out.println("---> 删除DVD");
			// 提示用户选择序号
			System.out.print("请输入要删除的DVD序号:");
			int delId = in.nextInt();
			//  先查,再删除
			dvdList = dvdDao.queryAllDVD();
			if(delId > dvdList.size()) {
				// 错误的序号
				System.out.println("选择的序号不存在!");
			} else {
				int deleteDVDId = dvdList.get(delId - 1).getId();
				String dName = dvdList.get(delId - 1).getDvdName();
				System.out.print("确认删除影片《"+dName+"》吗?(Y/N)");
				String flag = in.next();
				if(flag.equalsIgnoreCase("Y")) {
					if(dvdDao.deleteDVD(deleteDVDId) > 0){
						System.out.println("删除影片《"+dName+"》成功!");
					} else {
						System.out.println("删除影片《"+dName+"》失败!");
					}
				}
			}
			break;
		case 4:
			System.out.println("---> 借出DVD");
			// 提示用户选择序号
			System.out.print("请输入要借出的DVD序号:");
			int jcId = in.nextInt();
			//  先查,再借
			dvdList = dvdDao.queryAllDVD();
			if(jcId > dvdList.size()) {
				// 错误的序号
				System.out.println("选择的序号不存在!");
			} else {
				// 判断要借出的DVD是否可借
				String state = dvdList.get(jcId - 1).getState();
				if(state.equals("已借出")){
					// 已借出
					System.out.println("该影片已借出,请选择其他影片!");
				} else {
					// 可借(根据DVD编号修改信息)
					int dvdId =  dvdList.get(jcId - 1).getId();
					if(dvdDao.jcDVD(dvdId) > 0){
						// 借出成功
						System.out.println("借出影片《"+dvdList.get(jcId - 1).getDvdName()+"》成功,记得归还!");
					} else {
						// 借出失败
						System.out.println("借出影片《"+dvdList.get(jcId - 1).getDvdName()+"》失败!");
					}
				}
			}
			break;
		case 5:
			System.out.println("---> 归还DVD");
			// 提示用户选择序号
			System.out.print("请输入要归还的DVD序号:");
			int ghId = in.nextInt();
			//  先查,再借
			dvdList = dvdDao.queryAllDVD();
			if(ghId > dvdList.size()) {
				// 错误的序号
				System.out.println("选择的序号不存在!");
			} else {
				// 判断要归还的DVD是否可归还
				String state = dvdList.get(ghId - 1).getState();
				if(state.equals("可借")){
					// 不能归还
					System.out.println("您无法归还未借出的影片!");
				} else {
					try {
						// 可归还
						System.out.print("请输入日租金:");
						double dayPrice = in.nextDouble();
						String beginDateStr = dvdList.get(ghId - 1).getBdate();
						// 处理计算时间差
						SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
						Date beginDate = sdf.parse(beginDateStr);
						Date endDate = new Date();
						long timeCha = endDate.getTime() - beginDate.getTime();
						int days = (int)(timeCha / (24 * 60 * 60 * 1000));
						if(days == 0){
							System.out.println("您应付租金为:"+dayPrice+"元.");
						} else {
							System.out.println("您应付租金为:"+(dayPrice*days)+"元.");
						}
						// 调用归还操作方法,更新数据
						int ghDVDId =  dvdList.get(ghId - 1).getId();
						if(dvdDao.ghDVD(ghDVDId) > 0) {
							System.out.println("归还《"+dvdList.get(ghId - 1).getDvdName()+"》成功!");
						} else {
							System.out.println("归还失败,发生错误!");
						}
					} catch (ParseException e) {
						e.printStackTrace();
					}
				}
			}
			break;
		case 6:
			System.out.println("谢谢使用本系统,欢迎下次使用!");
			return false;
		default:
			System.out.println("您选择的编号有误!");
			break;
		}
		System.out.println("\n");
		return true;
	}

	/*
	 * 系统登录方法
	 */
	private boolean login() {
		System.out.print("请输入管理员账户:");
		String loginName = in.next();
		System.out.print("请输入登录密码:");
		String loginPwd = in.next();
		// 创建数据访问对象并调用查询方法获取登录结果
		user = new DVDUserDao().userLogin(loginName, loginPwd);
		if (user != null)
			return true;
		return false;
	}

}

Test

package test;

import manager.DVDMgr;

public class Test {

	public static void main(String[] args) {
		new DVDMgr().start();
	}

}

entity包

DVDinfo

package entity;

public class DVDInfo {

	private Integer id;
	private String dvdName;
	private String state;
	private String bdate;
	private Integer count;

	public DVDInfo() {
	}

	public DVDInfo(Integer id, String dvdName, String state, String bdate,
			Integer count) {
		super();
		this.id = id;
		this.dvdName = dvdName;
		this.state = state;
		this.bdate = bdate;
		this.count = count;
	}

	public Integer getId() {
		return id;
	}

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

	public String getDvdName() {
		return dvdName;
	}

	public void setDvdName(String dvdName) {
		this.dvdName = dvdName;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public String getBdate() {
		return bdate;
	}

	public void setBdate(String bdate) {
		this.bdate = bdate;
	}

	public Integer getCount() {
		return count;
	}

	public void setCount(Integer count) {
		this.count = count;
	}

}


DVDUserInfo

package entity;

public class DVDUser {

	private Integer id;
	private String loginName;
	private String loginPwd;
	private String nickName;

	public DVDUser() {
	}

	public DVDUser(Integer id, String loginName, String loginPwd,
			String nickName) {
		super();
		this.id = id;
		this.loginName = loginName;
		this.loginPwd = loginPwd;
		this.nickName = nickName;
	}

	public Integer getId() {
		return id;
	}

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

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getLoginPwd() {
		return loginPwd;
	}

	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}

	public String getNickName() {
		return nickName;
	}

	public void setNickName(String nickName) {
		this.nickName = nickName;
	}

}



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值