图书管理项目文档设计
项目介绍:
本系统是针对图书管理工作过程进行设计的,管理员和学生分别对图书进行访问,不同的身份具有不同的访问功能,对此进行代码实现。图书馆管理系统的开发主要涉及到图书的管理,学生信息的管理,管理员信息的管理三大功能的数据管理。
项目功能:
注册用户可以登录此系统; 非注册用户注册后可以使用本系统; 读者登陆成功后可以查询、借阅、归还图书。管理员可以对读者、以及图书进行管理。
学生身份登陆成功:查询图书信息,借书还书功能
管理员身份登陆成功:查询图书信息,上架图书,下架图书,添加学生信息,删除学生信息功能。
项目知识点:
Java类和对象、继承、多态
项目实现思路:
- 该设计至少有
Book类{属性:书名,作者,出版社,价格},
Student类{学号,手机号,姓名,性别,密码},
Manager类{属性:职工号,手机号,姓名,性别,密码},
以及Library类构成,添加相对应的属性和方法。
- 在Library类中添加属性以及测试函数调用的方法start(); 在start函数中进行功能代码实现。
- 登录功能:学生根据手机号+密码 或者 学号+密码形式进行登录操作
- 注册功能:学生展示的页面只能登录,学生的信息是由管理员登录成功后进行注册的。如果选择管理员身份操作,管理员具有登录和注册的功能。
- 学生身份登陆成功具有的功能:
- 查询图书信息,
- 借书,
- 还书
- 修改自己密码的功能(备注:学生信息被管理员注册之后的密码使用初始默认值:tulun666)
- 管理员身份登陆成功具有的功能:
- 查询图书信息,
- 上架图书,
- 下架图书,
- 添加学生信息,
- 删除学生信息功能。
- 注册管理员
根据不同的功能具体在相对应的类中实现相对应的方法。
项目具体实现:
Library类
package src3;
import java.util.Scanner;
public class Library {
private Manager manager;
private Book book;
private User user;
public Library(){
book=new Book("","","",0);
user=new User(0,"",0,0,"");
}
public void Open(){
Scanner scanner=new Scanner(System.in);
//给定一个起始管理员
People manager=new Manager("tdj","111",20,111,187);
manager.add(manager);
while (true){
System.out.println("1.使用者登陆 2.管理员登陆 3.退出");
int choice=scanner.nextInt();
if (choice==3){break;}
System.out.println("请输入账号:");
int account=scanner.nextInt();
System.out.println("请输入密码");
String passwd=scanner.next();
switch (choice){//
case 1://使用者登陆
if(user.contain(user,account,passwd)){//查询账号密码是否正确
userLogin(account,passwd);
}else{
System.out.println("账号密码不存在");
}
break;
case 2://管理员登陆
if(manager.contain(manager,account,passwd)){//查询账号密码是否正确
managerLogin(account,passwd);
}else{
System.out.println("账号密码不存在");
}
break;
}
}
}
//使用者登陆
public void userLogin(int account,String passwd){
Scanner scanner=new Scanner(System.in);
while (true){
System.out.println("1.查阅图书信息 2.借书 3.还书 4.修改密码 5.退出");
int choice=scanner.nextInt();
if(choice==5){break;}
switch (choice){
case 1://查阅图书信息
System.out.println("请输入书名");
String name1=scanner.next();
if(book.search(name1)==null){
System.out.println("未找到此书");
}else {
System.out.println(name1+"的作者是"+book.search(name1).getWriter()+"出版于"+book.search(name1).getPress());
}
break;
case 2://借书
System.out.println("请输入书名:");
String name2=scanner.next();
user.borrow(book.search(name2));
break;
case 3://还书
System.out.println("请输入要还的书名");
String name3=scanner.next();
user.back(name3);
break;
case 4://修改密码
System.out.println("请输入新密码");
String newPasswd=scanner.next();
user.change(account,newPasswd);
}
}
}
//管理员登陆
public void managerLogin(int account,String passwd){
Scanner scanner=new Scanner(System.in);
while (true){
System.out.println("1.查阅图书信息 2.上架图书 3.下架图书 4.添加使用者信息 5.删除使用者信息 6.管理员注册 7.退出");
int choice=scanner.nextInt();
if(choice==7){break;}
switch (choice){
case 1://查阅图书信息
System.out.println("请输入书名");
String name1=scanner.next();
if(book.search(name1)==null){
System.out.println("未找到此书");
}else {
System.out.println(name1+"的作者是"+book.search(name1).getWriter()+"出版于"+book.search(name1).getPress());
}
break;
case 2://上架图书
System.out.println("请依次输入书的书名,作者,出版社和价格");
String name2=scanner.next();
String whiter2=scanner.next();
String press2=scanner.next();
float price2=scanner.nextFloat();
Book book2=new Book(name2,whiter2,press2,price2);
book.add(book2);
break;
case 3://下架图书
System.out.println("请输入要下架书的书名");
String name3=scanner.next();
book.remove(name3);
break;
case 4://添加使用者
System.out.println("请依次输入使用者学号,姓名,年龄,手机号");
int account4=scanner.nextInt();
String name4=scanner.next();
int age=scanner.nextInt();
int number=scanner.nextInt();
User user4=new User(account4,name4,age,number,"tulun666");
user.add(user4);
break;
case 5://删除使用者
System.out.println("请输入要删除的使用者账号");
int account5=scanner.nextInt();
user.remove(account);
break;
case 6://管理员注册
System.out.println("请输入管理员的姓名,工号,手机号,密码和年龄");
int account6=scanner.nextInt();
String name6=scanner.next();
int age6=scanner.nextInt();
int number6=scanner.nextInt();
String passwd6=scanner.next();
Manager manager=new Manager(name6,passwd6,age6,account6,number6);
manager.add(manager);
}
}
}
}
People类
package src3;
abstract public class People {
private String name;
private int age;
private int number;//手机号
private String passwd;//密码
private int account;//工号,学号
public People(String name,String passwd,int age,int account,int number){
this.account=account;
this.age=age;
this.name=name;
this.passwd=passwd;
this.number=number;
}
//查找
abstract boolean contain(People people,int account,String passwd);
abstract void add(People people);
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getNumber() {
return number;
}
public String getPasswd() {
return passwd;
}
public int getAccount() {
return account;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setNumber(int number) {
this.number = number;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public void setAccount(int account) {
this.account = account;
}
}
User类
package src3;
import java.util.Arrays;
public class User extends People {
private User[] users;
private static final int INITSIZE = 10;
private int size;
private Book[] borrowRecord;//借书记录
private int count;//计借书的本书
public User(int account,String name,int age,int number,String passad) {
super(name,passad,age,account,number);
users = new User[INITSIZE];
this.size = size;
borrowRecord=new Book[2];
}
//查询账号密码是否正确
@Override
public boolean contain(People people,int account,String passwd) {
boolean flag = false;
if(people instanceof User) {
User user = (User)people;
for (int i = 0; i < size; i++) {
if (users[i].getAccount() == account && users[i].getPasswd().equals(passwd)) {
flag = true;
}
}
}
return flag;
}
//添加学生信息
@Override
public void add(People people){
if(people instanceof User) {
User user=(User)people;
if (users.length == size) {
users = Arrays.copyOf(users, users.length + (users.length >> 1));
}
users[size] = user;
user.setPasswd("tulun666");
size++;
}
}
//删除使用者信息
public void remove(int account){
for(int i=0;i<size;i++){
if(users[i].getAccount()==account){
for(int j=i+1;j>size;j++){//数据移动
users[j-1]=users[j];
}
size--;
}
}
}
//修改密码
public void change(int account,String newPasswd){
for(int i=0;i<size;i++){
if(users[i].getAccount()==account){
users[i].setPasswd(newPasswd);
}
}
}
//借书记录
public boolean borrow(Book book){
boolean flag=false;
if(count>=1){
return flag;
}else{
borrowRecord[count++]=book;
}return flag;
}
//还书
public void back(String name){
for(int i=0;i<size;i++){
if(borrowRecord[i].getName()==name){
for(int j=i+1;j>size;j++){//数据移动
borrowRecord[j-1]=borrowRecord[j];
}
count--;
}
}
}
}
Manager类
package src3;
import java.util.Arrays;
public class Manager extends People {
private Manager[] managers;
private static final int INITSIZE = 10;
private int size;
public Manager(String name,String passwd,int age,int account,int number){
super(name,passwd,age,account,number);
managers=new Manager[INITSIZE];
}
//创建管理员
@Override
public void add(People people){
if(people instanceof Manager){
Manager manager=(Manager)people;
if(managers.length==size){
managers= Arrays.copyOf(managers,managers.length+(managers.length>>1));
}
managers[size]=manager;
size++;
}
}
//账号密码错误
@Override
public boolean contain(People people,int account,String passwd) {
boolean flag = false;
for (int i = 0; i < size; i++) {
if (managers[i].getAccount() == account && managers[i].getPasswd().equals(passwd)) {
flag = true;
}
}
return flag;
}
}