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;
}
}