《图书管理系统》的改动:
1.创建Book类,
属性:图书编号,图书名字,状态,借出日期,借出次数
User类:
属性:用户编号,账号,密码,权限级别
2.创建接口:(注入思想:数据访问层jdbc 业务层 控制层 )
数据访问层jdbc---跟数据库有关系的代码(sql语句)都在数据访问层。
接口+实现类
接口包:xxx.dao
接口名:实体类Dao BookDao
实现类包:xxx.dao.impl
实现类名字: BookDaoImpl
业务层:
接口+实现类
接口包:xxx.service
接口名:BookService
实现类包:xxx.service.impl
实现类名字: BookServiceImpl
控制层:
类: BookController
2.货车司机
老大:去XXXXX工厂里,装回来 30套 蓝色的高度为1.4米的桌椅。
1.地址 url:
2.钥匙 ---username password
package bookguanli;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLFault;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class BookDemo2 {
static Scanner input=new Scanner(System.in);
static String[] names=new String[50];
static String[] status=new String[50];
static String[] dates=new String[50];
static int[] counts=new int[50];
public static void main(String[] args) {
init();
menu();
}
//提前赋值
private static void init() {
names[0]="西游记";
status[0]="已借出";
dates[0]="2024-3-4";
counts[0]=35;
names[1]="红楼梦";
status[1]="未借出";
dates[1]="";
counts[1]=15;
names[2]="水浒传";
status[2]="未借出";
dates[2]="";
counts[2]=29;
}
//主菜单
public static void menu(){
System.out.println("******图书管理系统******");
System.out.println("1.新增图书");
System.out.println("2.查询图书");
System.out.println("3.删除图书");
System.out.println("4.借出图书");
System.out.println("5.归还图书");
System.out.println("6.图书排行榜");
System.out.println("7.退\t出");
System.out.println("请输入你要选择的功能:");
int m=input.nextInt();
if (m==1){
menu1();
}else if (m==2){
menu2();
}else if (m==3){
menu3();
}else if (m==4){
menu4();
}else if (m==5){
menu5();
}else if (m==6){
menu6();
}else if (m==7){
menu7();
}
getret();
}
//程序循环使用
private static void getret() {
System.out.println("继续使用:0");
System.out.println("停止使用:7");
int m=input.nextInt();
if(m==0){
menu();
}else if(m==7){
menu7();
}
}
//新增图书
private static void menu1() {
System.out.println("请输入新增图书的名称:");
String name=input.next();
for (int i = 0; i <names.length ; i++) {
if (name.equals(names[i])){
System.out.println("该图书已存在!");
break;
}else {
if (names[i]==null){
names[i]=name;
status[i]="未借出";
dates[i]="";
counts[i]=0;
System.out.println("新增成功!");
break;
}
}
}
}
//查询图书
private static void menu2() {
System.out.println("序号\t名称\t状态\t日期\t次数");
for (int i = 0; i <names.length ; i++) {
if (names[i]==null){
break;
}
System.out.println((i+1)+"\t"+names[i]+"\t"+status[i]+"\t"+dates[i]+"\t"+counts[i]);
}
}
//删除图书
private static void menu3() {
System.out.println("请输入要删除的图书名称:");
String name=input.next();
int b=-1;
int i;
for (i = 0; i <names.length; i++) {
if (names[i].equals(name)){
b=i;
break;
}
}
if (b==-1){
System.out.println("该图书不存在!");
}else {
if (status[b].equals("已借出")){
System.out.println("该图书已借出,无法删除!");
}else {
for (i=b;i<names.length-1;i++){
names[i]=names[i+1];
status[i]=status[i+1];
dates[i]=dates[i+1];
counts[i]=counts[i+1];
if (names[i]==null){
break;
}
}
names[i]=null;
status[i]=null;
dates[i]=null;
counts[i]=0;
System.out.println("删除成功!");
}
}
}
//借出图书
private static void menu4() {
System.out.println("请输入要借出的图书名称:");
String name=input.next();
boolean boo=false;
int m=-1;
for (int i = 0; i <names.length ; i++) {
if (name.equals(names[i])){
boo=true;
m=i;
break;
}
}
if (!boo){
System.out.println("该图书不存在!");
}else {
if (status[m].equals("已借出")){
System.out.println("无法借出,该图书已借出!");
}else {
System.out.println("请输入借出的时间:");
String date=input.next();
status[m]="已借出";
dates[m]=date;
counts[m]+=1;
System.out.println("借出成功!");
}
}
}
//归还图书
private static void menu5() {
System.out.println("请输入要归还的图书名称:");
String name=input.next();
boolean boo=false;
int m=-1;
for (int i = 0; i <names.length ; i++) {
if (name.equals(names[i])){
boo=true;
m=i;
break;
}
}
if (!boo){
System.out.println("该图书不存在,无法归还!");
}else {
if (status[m].equals("未借出")){
System.out.println("该图书未借出,无法归还!");
}else {
System.out.println("请输入归还日期:");
String date=input.next();
System.out.println("借出日期为:"+dates[m]);
System.out.println("归还日期为:"+date);
int money=getmon(dates[m],date);
System.out.println("应付租金为:"+money);
System.out.println("归还成功!");
}
}
}
//计算租金
private static int getmon(String t1,String t2) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
try {
Date pal1=sdf.parse(t1);
long time1=pal1.getTime();
Date pal2=sdf.parse(t2);
long time2=pal2.getTime();
return (int)((time2-time1)/(1000*60*60*24));
}
catch (ParseException e){
e.getErrorOffset();
}
return 0;
}
//图书排行榜
private static void menu6() {
int m=names.length;
System.out.println("*****图书排行榜*****");
for (int i = 0; i <names.length ; i++) {
if (names[i]==null){
m=i;
break;
}
}
for (int i = 0; i <m-1 ; i++) {
for (int j = 0; j <m-i-1; j++) {
if (counts[j]<counts[j+1]){
int num=counts[j];
String name=names[j];
String dt=dates[j];
String zt=status[j];
counts[j]=counts[j+1];
names[j]=names[j+1];
status[j]=status[j+1];
dates[j]=dates[j+1];
counts[j+1]=num;
names[j+1]=name;
status[j+1]=zt;
dates[j+1]=dt;
}
}
}
//打印
System.out.println("序号\t名称");
for (int i = 0; i <names.length; i++) {
if (names[i]==null){
break;
}
System.out.println((i+1)+names[i]);
}
}
//退出
public static void menu7(){
System.out.println("谢谢使用!");
System.exit(1);
}
}