
项目名称:图书管理系统
项目需求:
一级菜单:
1.登录 2.注册 3.退出
登录功能:
用户输入账号密码实现登录。最多输错三次,每次输入错误
提示剩余次数。次数使用完后退出程序
用户登录成功进行”二级菜单“
注册功能:
输入注册的账号密码。账号不能重复注册。且账号首字符必须是字母,
并且账号只能包含数字和字母。才能注册成功。
(可以随机产生一个4位整数验证码,验证码正确才能注册成功)
二级菜单:
1.录入书籍
录入信息:书名-作者-简介-数量 (录入时书名不能重复)
2.下架书籍
输入下架书籍的名称: 存在则下架成功!
3.更新书籍
输入更新书籍的名称:
存在:
显示更新书籍的所有的信息
提示:1.更新书名 2.更新作者 3.更新简介 4.更新数量
4.查询书籍信息
输入书名:
存在 ---显示书籍相关信息
5.显示所有书籍信息
6.借出书籍
输入借出书籍的名称:
存在借出书籍:
判断数量>0才能借出书籍
请您输入借出人姓名:
记录当前借出书籍的时间:
(原本的书籍数量-1。)
7.查询所有借出书籍信息
借出书籍信息:书名-作者-简介-借出人-借出时间
8.归还书籍
输入归还书籍的名称:
输入借出人姓名:
存在:
提示借出了多少时间--1秒1块
(判断当前借出人是否是会员,是会员打折8折
不是会员原价
)
归还成功!原书籍容器中该书籍数量+1
9.注册会员
注册会员的名字电话
10.退出
分析程序中需要哪些对象?
管理员对象:哪些属性? username password
图书对象:哪些属性? bookName writer intro num ? ?
会员对象:哪些属性? name phone
分析程序中需要哪些容器?
管理员账号容器
存储图书的容器
存储借出图书的容器
会员的容器
一个简单的小项目,结合之前几天所学的知识可能自行编写
上代码
package 图书管理系统;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
//该类专门用于定义图书馆管理系统相关的功能函数
public class BMS {
//创建扫描器对象,用户扫描用户添加的管理员、图书、会员的相应信息,该扫描器最好创建在成员变量的位置,方便每一个函数都能使用,不用重写创建
Scanner sc=new Scanner(System.in);
//创建一个用户存储多个管理员信息的集合容器。该容器需要创建在成员变量中,方便整个工具类的所有的功能函数都能共用同一个容器进行 *** 作
//该集合容器的类型必须是管理员对象类型的,为了方便把一个管理员的所有进行都封装在一个对象中,也方便后续的获取。
ArrayList admins=new ArrayList<>();
ArrayList books = new ArrayList<>();
ArrayList lendbooks = new ArrayList<>();
ArrayList members = new ArrayList<>();
//借书对象
LendBooks lendbook = new LendBooks();
//借阅时间记录
Date date = new Date();
int sum=3;
//定义一个用于产生4位正式的函数
public int romdomFour(){
double d=Math.random()*8999;//0-8999.99999
int i=(int)d+1000; //1000-9999
return i;
}
//定义一个函数,判断adminname是否存在
public int pdAname(String name){
for (int i = 0; i < admins.size(); i++)
if (admins.get(i).getAdminname().equals(name)) {
return i;
}
return -1;
}
//定义一个函数,判断bookname是否存在
public int pdBname(String name){
for (int i = 0; i < books.size(); i++)
if (books.get(i).getBookname().equals(name)) {
return i;
}
return -1;
}
//定义一个函数,判断membername是否存在
public int pdMname(String name){
for (int i = 0; i < members.size(); i++)
if (members.get(i).getName().equals(name)) {
return i;
}
return -1;
}
public void login() {
System.out.println("请您输入登录账号");
String name = sc.next();
System.out.println("请您输入登录密码");
String password = sc.next();
int yzm =romdomFour();
System.out.println("请您输入验证码"+yzm);
int newyzm = sc.nextInt();
if(newyzm!=yzm){
//验证码失败
System.out.println("验证失败!");
return;
}
if (pdAname(name) != -1) {
for (int i = 0; i < admins.size(); i++) {
//比较密码,相同则登录成功
if (admins.get(i).getAdminpassword().equals(password)&&yzm==newyzm) {
System.out.println("登陆成功!");
caidan2();
return;
//切换到菜单二
} else {
sum--;
if (sum!= 0) {
System.out.println("登陆失败,您密码错误! 还剩" + sum + "次机会");
return;
//次数等于0
} else {
System.out.println("登陆失败,您输入的次数过多!");
System.exit(0);
}
}
}
} else {
System.out.println("登陆失败,您的账号不存在!");
return;
}
}
public void zhuceadmin(){
System.out.println("提示账号首字符必须是字母,只能包含数字和字母,且长度或者大于6位");
System.out.println("请您输入注册的账号:");
String name = sc.next();
//账号长度大于6位,首字符必须是字母,并且账号只能包含数字和字母。
if (name.length()>=6) {
int sz=0;
int zm=0;
//for循环字符串
for (int i = 0; i ='0'&&c<='9'){//判断当前是不是数字字符
sz++;
}
if (c>='a'&&c<='z'){//判断当前是不是字母字符
zm++;
}
}
//当循环结束后,就能得出数字和字母的个数
//判断首字符必须是字母
int j=0;
char b=name.charAt(j);
if (sz!=0&&zm!=0&&(sz+zm)==name.length()){
if (b>='a'&&b<='z') {
if (pdAname(name) != -1) {
System.out.println("您输入的账户存在!注册失败!");
return;
}else {
System.out.println("符合注册条件");
}
}else{
System.out.println("格式有误,首位字符必须是字母");
return;
}
}else{
System.out.println("格式有误,账号只能包含数字和字母");
return;
}
}else{
System.out.println("长度不合法");
return;
}
//判断name是否存在
System.out.println("请您输入注册的密码:");
String password = sc.next();
//把输入的账号和密码封装在一个Admin对象中
Admin admin = new Admin();
admin.setAdminname(name);
admin.setAdminpassword(password);
//存储在集合中
admins.add(admin);
System.out.println("注册成功");
}
public void entyrbook(){
//1.扫描用户需要添加书本信息
System.out.println("请您输入书本名称:");
String name = sc.next();
//判断书本名称是否存在
if (pdBname(name)!=-1){
System.out.println("您输入的id存在!添加失败!");
return;
}
System.out.println("请您输入书本作者:");
String write = sc.next();
System.out.println("请您输入书本简介:");
String intro = sc.next();
System.out.println("请您输入书本数量:");
int num = Integer.parseInt(sc.next());
if (num>=0){
System.out.println("书本添加成功!");
}else{
System.out.println("请重新输入");
return;
}
// 2.把用户输入的数据封装在一个书本对象中
Books book = new Books();
book.setBookname(name);
book.setWriter(write);
book.setIntro(intro);
book.setNum(num);
// 3.存储在书本集合中
books.add(book);
}
public void delbook(){
System.out.println("请您输入要删除的书本名称:");
String name = sc.next();
//根据Bookname查询是否存在
int index = pdBname(name);
if (index!=-1){
books.remove(index);
System.out.println("书本删除成功!");
}else{
System.out.println("图书馆没有这本书籍!");
}
}
public void updatebook(){
System.out.println("请您输入要更新的书本名称:");
String name = sc.next();
int index = pdBname(name);
if (index!=-1){
//说明要更新的书籍存在 index
System.out.println("您要更新的书籍信息如下:");
System.out.println(books.get(index));
System.out.println("确定是否修改?y修改、n取消");
String key = sc.next();
if (key.equalsIgnoreCase("y")){
System.out.println("1.更新书名 2.更新作者 3.更新简介 4.更新数量");
String num = sc.next();
switch (num){
case "1":
System.out.println("请您输入书本新名称:");
String newname = sc.next();
books.get(index).setBookname(newname);
System.out.println("书本名称修改成功!");
return;
case "2":
System.out.println("请您输入书本新作者:");
String newwriter = sc.next();
books.get(index).setWriter(newwriter);
System.out.println("书本作者修改成功!");
return;
case "3":
System.out.println("请您输入书本新简介:");
String newintro = sc.next();
books.get(index).setIntro(newintro);
System.out.println("书本简介修改成功!");
return;
case "4":
System.out.println("请您输入书本新数量:");
int newnum = Integer.parseInt(sc.next());
books.get(index).setNum(newnum);
System.out.println("书本数量修改成功!");
return;
default:
System.out.println("您的输入有误,修改失败!");
return;
}
}else{
System.out.println("您已取消修改!");
return;
}
}else{
System.out.println("您输入的书籍不存在!");
}
}
public void selectByname(){
System.out.println("请您输入要查询的书本名称:");
String name = sc.next();
//根据Bookname查询是否存在
int index = pdBname(name);
if (index!=-1){
System.out.println(books.get(index));
}else{
System.out.println("您查询的书本名称不存在");
}
}
public void selectbookAll(){
if (books.size()==0){
System.out.println("暂无书籍数据!");
}else{
System.out.println("显示如下:");
for (Books book : books) {
System.out.println(book);
}
}
}
public void lendbook(){
System.out.println("请您输入需要借阅的书本名称:");
String name = sc.next();
//判断借阅书本是否存在
int index = pdBname(name);
if (index!=-1){
System.out.println("借阅的书本存在,信息如下");
System.out.println(books.get(index));
//判断sum是否书本数量>0
if(books.get(index).getNum()!=0){
System.out.println("请您输入借阅人姓名:");
String lendname = sc.next();
lendbook.setLendname(lendname);
lendbook.setBookname(books.get(index).getBookname());
lendbook.setWriter(books.get(index).getWriter());
lendbook.setIntro(books.get(index).getIntro());
lendbook.getDates().add(date);
//存储在集合中
lendbooks.add(lendbook);
System.out.println("借阅成功!");
//书本数量-1
int num=books.get(index).getNum();
books.get(index).setNum(num-1);
}else {
System.out.println("借阅的书本数量不足,借阅失败!");
}
}else{
System.out.println("您需要借阅的书本不存在");
}
}
public void selectAlllengbook(){
if (lendbooks.size()==0){
System.out.println("暂无借阅数据!");
}else{
System.out.println("显示如下:");
for (LendBooks lendbook : lendbooks) {
System.out.println(lendbook);
}
}
}
public void returnbook(){
System.out.print("请您输入需要归还的书本名称:");
String name = sc.next();
//判断借阅书本是否存在
int index = pdBname(name);
if (index!=-1){
System.out.println("归还的书本存在,请您输入借阅人姓名:");
String lendname = sc.next();
//判断是否存在该借阅人
for (int i = 0; i < lendbooks.size(); i++) {
if (lendbooks.get(i).getLendname().equals(lendname)) {
System.out.println("借阅人信息存在");
//归还时间记录
Date newdate = new Date();
//3.求现在归还书本时间到借阅书本时间的差值
long a=date.getTime();
long b=newdate.getTime();
long time =b - a;
//1.求出总秒数
long miaosum= time / 1000;
//2.求出总分钟
long fensum = miaosum / 60;
//求出不足一分钟秒数
long miao = miaosum % 60;
//3.求出总小时数
long shisum = fensum / 60;
//求出不足一小时的分钟
long fen = fensum % 60;
//4.求出总天数
long daysum = fensum / 24;
//求出不足一天的小时
long shi = shisum % 60;
System.out.println("您共借阅:" + daysum + "天" + shi + "时" + fen+ "分" + miao+"秒 ,一共合计"+miaosum+"秒");
//计算总金额1秒1元
double sum= (double) miaosum;
//判断借阅人是否是会员
int index2 = pdMname(lendname);
if (index2!=-1){
System.out.println("您本次借阅书本需要支付"+sum+"元");
sum=0.8*sum;
System.out.println("因为您是会员,享受本店8折优惠,本次借阅书本只需要支付"+sum+"元");
}else {
System.out.println("您不是本店会员,本次借阅书本需要支付"+sum+"元");
}
String next =sc.next();
if (next.equalsIgnoreCase("y")) {
System.out.println("归还成功!欢迎下次借阅!");
//书本数量+1
int num = books.get(index).getNum();
books.get(index).setNum(num + 1);
lendbooks.remove(i);
return;
}else {
System.out.println("您取消了支付,归还失败!");
return;
}
} else {
System.out.println("归还失败!");
return;
}
}
}else{
System.out.println("您需要借阅的书本不存在");
}
}
public void zhucemember(){
System.out.println("请您输入会员姓名:");
String name = sc.next();
//判断会员是否相同
if (pdMname(name)!=-1){
System.out.println("您输入的会员名字存在!添加失败!");
return;
}
System.out.println("请您输入会员电话:");
String phone = sc.next();
//把输入的账号和密码封装在一个User对象中
Member menber = new Member();
menber.setName(name);
menber.setPhone(phone);
//把会员对象存在数组中
members.add(menber);
System.out.println("会员注册成功!");
}
//菜单1 1.登录 2.注册 3.退出
public void caidan1(){
System.out.println("——————欢迎来到图书管理系统——————");
while (true){
System.out.println("1.登录 2.注册 3.退出");
String key = sc.next();
switch (key){
case "1":
login();
break;
case "2":
zhuceadmin();
break;
case "3":
System.out.println("欢迎下次使用");
System.exit(0);
default:
System.out.println("您输入有误,请重新输入");
break;
}
}
}
//菜单2 1.录入书籍 2.下架书籍 3.更新书籍 4.查询书籍信息 5.显示所有书籍信息 6.借出书籍 7.查询所有借出书籍信息 8.归还书籍 9.注册会员 10.退出
public void caidan2(){
while (true){
System.out.println("1.录入书籍 2.下架书籍 3.更新书籍 4.查询书籍信息 5.显示所有书籍信息 6.借出书籍 7.查询所有借出书籍信息 8.归还书籍 9.注册会员 10.退出");
String key = sc.next();
switch (key){
case "1":
entyrbook();
break;
case "2":
delbook();
break;
case "3":
updatebook();
break;
case "4":
selectByname();
break;
case "5":
selectbookAll();
break;
case "6":
lendbook();
break;
case "7":
selectAlllengbook();
break;
case "8":
returnbook();
break;
case "9":
zhucemember();
break;
case "10":
System.out.println("账号退出成功!");
return;
default:
System.out.println("您输入有误,请重新输入!");
break;
}
}
}
}
package 图书管理系统;
public class Admin {
private String adminname;
private String adminpassword;
public String getAdminname() {
return adminname;
}
public void setAdminname(String adminname) {
this.adminname = adminname;
}
public String getAdminpassword() {
return adminpassword;
}
public void setAdminpassword(String adminpassword) {
this.adminpassword = adminpassword;
}
}
package 图书管理系统;
public class Books {
protected String bookname;
protected String writer;
protected String intro;
private int num;
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public boolean equals(Object obj) {
Books book = (Books) obj;
return bookname == book.getBookname() && bookname.equals(book.getBookname());
}
@Override
public String toString() {
return "书籍信息:{" +
"书名=" + bookname +''' +
", 作者='" + writer + ''' +
", 简介='" + intro + ''' +
", 数量='" + num+ ''' +
'}';
}
}
package 图书管理系统;
import java.util.ArrayList;
import java.util.Date;
public class LendBooks extends Books{
private String lendname;
private ArrayList dates =new ArrayList<>();
public String getLendname() {
return lendname;
}
public void setLendname(String lendname) {
this.lendname = lendname;
}
public ArrayList getDates() {
return dates;
}
public void setDates(ArrayList dates) {
this.dates = dates;
}
public boolean equals(Object obj) {
LendBooks lendbook = (LendBooks) obj;
return lendname == lendbook.getLendname() && lendname.equals(lendbook.getLendname());
}
@Override
public String toString() {
return "书籍信息:{"+
"书名='" + bookname + ''' +
"作者='" + writer + ''' +
"简介='" + intro + ''' +
"借阅人='" + lendname + ''' +
", 借阅时间='" + dates + ''' +
'}';
}
}
package 图书管理系统;
import javax.naming.Name;
public class Member {
private String name;
private String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
最后用main函数调用BMS函数菜单1成功实现
package 图书管理系统;
public class text1 {
public static void main(String[] args) {
BMS bms=new BMS();
bms.caidan1();
}
}
如果有用就点赞,可以相互讨论~
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)