1.DvdDao
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.spi.DirStateFactory.Result;
import com.minidvd.entity.DvdEntity;
public class DvdDao {
final static String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=minidvd";
final static String USER = "sa";
final static String PASSWORD = "123";
final static String SQLSERVER_CLASS_NAME = "sun.jdbc.odbc.JdbcOdbcDriver";
private Connection conn;
private Statement state;
private ResultSet resultSet;
public DvdDao() {
try {
Class.forName(SQLSERVER_CLASS_NAME);
} catch (ClassNotFoundException e) {
System.out.println("没加载sqlserver的jar包");
}
try {
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
System.out.println("数据库连接失败");
}
try {
state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (SQLException e) {
e.printStackTrace();
}
}
public int add(String addsql) {
int rows = 0;
try {
rows = state.executeUpdate(addsql);
} catch (SQLException e) {
System.out.println("异常错误,添加失败");
}
return rows;
}
public int update(String updatesql) {
int rows = 0;
try {
rows = state.executeUpdate(updatesql);
} catch (SQLException e) {
System.out.println("异常错误,更新失败");
}
return rows;
}
public int delete(String deletesql) {
int rows = 0;
try {
rows = state.executeUpdate(deletesql);
} catch (SQLException e) {
System.out.println("异常错误,删除失败");
}
return rows;
}
public ResultSet find(String findsql) {
resultSet = null;
try {
resultSet = state.executeQuery(findsql);
} catch (SQLException e) {
System.out.println("异常出错,查询失败");
}
return resultSet;
}
public void close() {
try {
if (resultSet != null)
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (state != null)
state.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
2.DvdEntity
package com.minidvd.entity;
public class DvdEntity {
private int id;
private String name;
private int state;
private String date;
private int count;
/**
* 取得 name
* @return the name
*/
public DvdEntity(){
}
public DvdEntity(int id,String name, int state,String date,int count){
this.id=id;
this.name=name;
this.state=state;
this.date=date;
this.count=count;
}
/**
* 取得 id
* @return the id
*/
public int getId() {
return id;
}
/**
*设置 id
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* 获得名字
* @return name
*/
public String getName() {
return name;
}
/**
*设置 name
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* 取得 state
* @return the state
*/
public int getState() {
return state;
}
/**
*设置 state
* @param state the state to set
*/
public void setState(int state) {
this.state = state;
}
/**
* 取得 date
* @return the date
*/
public String getDate() {
return date;
}
/**
*设置 date
* @param date the date to set
*/
public void setDate(String date) {
this.date = date;
}
/**
* 取得 count
* @return the count
*/
public int getCount() {
return count;
}
/**
*设置 count
* @param count the count to set
*/
public void setCount(int count) {
this.count = count;
}
}
3.DvdManage
package com.minidvd.manage;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
import com.minidvd.data.DvdDao;
import com.minidvd.entity.DvdEntity;
public class DvdManage {
public DvdEntity[] rankingList() throws SQLException{
DvdEntity[] de=bublleSort(dvdlist());
return de ;
}
public int addDvd(DvdEntity dvdEntity){
DvdDao d = new DvdDao();
String name=dvdEntity.getName();
String addsql="insert dvdlist (name) values('"+name+"')";
System.out.println(addsql);
int sc=d.add(addsql)==1?1:0;
d.close();
return sc;
}
public DvdEntity[] dvdlist() throws SQLException{
DvdDao d = new DvdDao();
String findsql="select * from dvdlist";
ResultSet rs=d.find(findsql);
int index=getResultRows(rs);
DvdEntity[] de=new DvdEntity[index];
rs.beforeFirst();
int count=0;
while(rs.next()){
DvdEntity Entity = new DvdEntity();
Entity.setId(rs.getInt("id"));
Entity.setCount(rs.getInt("count"));
Entity.setDate(rs.getString("date"));
Entity.setState(rs.getInt("state")==1?1:0);
Entity.setName(rs.getString("name"));
de[count]=Entity;
count++;
}
d.close();
return de;
}
public int delDvd(DvdEntity dvdEntity) throws SQLException{
DvdDao d = new DvdDao();
String name=dvdEntity.getName();
String findsql="select state, name from dvdlist where name='"+name+"'";
ResultSet a=d.find(findsql);
int state=0;
String name1=null;
a.beforeFirst();
while(a.next()){
state=a.getInt("state");
name1=a.getString("name");
}
String delsql="delete dvdlist where name='"+name+"'";
if(!name.equals(name1)){
return 0;
}else if (state==1){
return 1;
}else{
d.delete(delsql);
d.close();
return 2;
}
}
public int borrowDvd(DvdEntity dvdEntity) throws SQLException{
DvdDao d = new DvdDao();
String name=dvdEntity.getName();
String date=dvdEntity.getDate();
int count=0;
String findsql="select name, state, count from dvdlist where name='"+name+"'";
ResultSet a=d.find(findsql);
String name1=null;
int state=0;
int g=0;
while(a.next()){
name1=a.getString("name");
state=a.getInt("state");
count=a.getInt("count");
}
if(!name.equals(name1)){
return 0;
}else if( state==1){
return 1;
}else{
count++;
String update ="update dvdlist set state="+1+",date='"+date+"',count="+count+++" where name='"+name+"'";
d.update(update);
d.close();
return 2;
}
}
public String[] returnDvd(DvdEntity dvdEntity) throws SQLException{
DvdDao d =new DvdDao();
String name=dvdEntity.getName();
String findsql ="select name, state ,date from dvdlist where name='"+name+"'";
String date1=dvdEntity.getDate();
String date=null;
String name1=null;
int state=0;
ResultSet a=d.find(findsql);
String[] s =new String[4];
int index;
long money=0;
while(a.next()){
date = a.getString("date");
name1=a.getString("name");
state=a.getInt("state");
}
if(date==null &&date1==null){
index=0;
}else if(!name.equals(name1)){
index=1;
}else if(state==0){
index=2;
}else{
String update="update dvdlist set state="+0+",date="+null;
d.update(update);
index=3;
money=0;
money=charge(date,date1);
}
s[0]=date;
s[1]=date1;
s[2]=money+"";
s[3]=String.valueOf(index);
d.close();
return s;
}
private DvdEntity[] bublleSort(DvdEntity[] dvdEntity) throws SQLException{
for(int x=0;x<dvdEntity.length-1;x++){
for(int y=0;y<dvdEntity.length-x-1;y++){
if(dvdEntity[y].getCount()<dvdEntity[y+1].getCount()){
String temp=dvdEntity[y].getName();
dvdEntity[y].setName(dvdEntity[y+1].getName());
dvdEntity[y+1].setName(temp);
int a=dvdEntity[y].getCount();
dvdEntity[y].setCount((dvdEntity[y+1].getCount()));
dvdEntity[y+1].setCount(a);
}
}
}
return dvdEntity;
}
private int getResultRows(ResultSet resultSet) throws SQLException{
int rows=0;
while(resultSet.next()){
rows++;
}
return rows;
}
private long charge(String dstr1 ,String dstr2){
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
Date d1=null;
Date d2=null;
try {
d1 = sd.parse(dstr1);
d2 = sd.parse(dstr2);
} catch (ParseException e) {
// TODO Auto-generated catch block
System.out.println("格式书写错误");
}
long charge;
charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
return charge;
}
}
4.Main
package com.minidvd.start;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.Scanner;
import com.minidvd.data.DvdDao;
import com.minidvd.entity.DvdEntity;
import com.minidvd.manage.DvdManage;
public class Main {
public static void main(String[] args) throws SQLException {
startMenu();
}
public static void startMenu() throws SQLException{
Scanner in = new Scanner(System.in);
do {
System.out.println("欢迎使用迷你DVD管理器");
System.out.println(" ");
System.out.println(" 0.借出排行榜 ");
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.退 出 ");
System.out.println(" ");
System.out.print("请选择:");
String num = in.next();
switch (num) {
case "0":
System.out.println("---->排行榜\n\n");
System.out.println("**************************");
ranking();
break;
case "1":
System.out.println("---->新增DvD");
System.out.print("请输入DvD的名称:");
addNewDvd();
break;
case "2":
System.out.println("------>查看DvD\n");
System.out.println("序号\t状态\t名称\t借出日期");
showDvdlist();
break;
case "3":
System.out.print("---->删除DVD");
System.out.print("请输入DVD名称:");
deleteDvd();
break;
case "4":
System.out.println("---->借出DVD\n");
System.out.print("请输入DVD的名称:");
borrowDvd();
break;
case "5":
System.out.println("--->归还\n");
System.out.print("请输入DvD的名称:");
returnDvd();
break;
case "6":
System.out.println("谢谢使用");
returnStartMenu();
return;
default:
System.out.println("请输入正确的数字");
}
System.out.println("************");
System.out.print("输入零返回:");
num = in.next();
if (!num.equals("0")) {
System.out.println("输入错误,异常终止");
return;
}
} while (true);
}
public static void ranking(){
Scanner in = new Scanner(System.in);
DvdEntity[] dvdEntity;
DvdManage dm =new DvdManage();
try {
dvdEntity =dm.rankingList();
System.out.println("书名"+"\t"+"借出的次数");
for(int i=0;i<dvdEntity.length;i++){
System.out.println(dvdEntity[i].getName()+"\t "+dvdEntity[i].getCount());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void addNewDvd(){
Scanner in = new Scanner(System.in);
DvdManage dm =new DvdManage();
DvdEntity dvdentity = new DvdEntity();
String name=in.next();
dvdentity.setName(name);
int a=dm.addDvd(dvdentity);
if(a==1){
System.out.println("添加成功");
}else{
System.out.println("添加失败,不能添加重名dvd");
}
}
public static void showDvdlist() throws SQLException{
Scanner in = new Scanner(System.in);
DvdManage dm = new DvdManage();
DvdEntity[] dvdEntity;
dvdEntity=dm.dvdlist();
for(int i=0;i<dvdEntity.length;i++){
String state=dvdEntity[i].getState()==1?"不可借":"可借";
System.out.println(dvdEntity[i].getId()+"\t"+state+"\t"+dvdEntity[i].getName()+"\t"+dvdEntity[i].getDate());
}
}
public static void deleteDvd() throws SQLException{
Scanner in = new Scanner(System.in);
DvdManage dm =new DvdManage();
DvdEntity dvdentity = new DvdEntity();
String name=in.next();
dvdentity.setName(name);
int a=dm.delDvd(dvdentity);
if(a==0){
System.out.println("没找到该dvd");
}else if(a==1){
System.out.println("为借出状态,不能删除");
}else{
System.out.println("删除成功");
}
}
public static void borrowDvd() throws SQLException{
Scanner in = new Scanner(System.in);
DvdManage dm =new DvdManage();
DvdEntity dvdentity = new DvdEntity();
String name=in.next();
dvdentity.setName(name);
System.out.print("请输入借出的日期(年-月-日):");
String date =in.next();
dvdentity.setDate(date);
int a=dm.borrowDvd(dvdentity);
if(a==2){
System.out.println("借出成功");
}else if(a==0){
System.out.println("没找到该dvd");
}else{
System.out.println("为借出状态,不能借出");
}
}
public static void returnDvd() throws SQLException{
Scanner in = new Scanner(System.in);
DvdManage dm =new DvdManage();
DvdEntity dvdentity = new DvdEntity();
String name=in.next();
System.out.print("请输入归还的日期(年-月-日):");
String date=in.next();
dvdentity.setName(name);
dvdentity.setDate(date);
String [] d=dm.returnDvd(dvdentity);
int a= Integer.parseInt(d[3]);
if(a==0){
System.out.println("归还日期格式错误");
}else if(a==1){
System.out.println("找不到对应的dvd");
}else if(a==2){
System.out.println("借出状态,为未借出状,归还失败");
}else{
System.out.println("借出日期\t\t归还日期\t 需要支付:");
for(int i=0; i<d.length-1;i++){
System.out.print(d[i]+"\t");
if(i==d.length-2){
System.out.println();
System.out.println("");
}
}
}
}
public static void returnStartMenu(){
System.exit(0);
}
}