系统简介
本系统功能分为读者信息管理模块、图书信息管理模块、图书借阅管理模块、基础信息维护模块和用户管理模块。
结构图
实体类
用户类:
private int id;
private String name;
private String password;
图书类:
private int ISBN;
private int typeid;
private String bookname;
private String author;
private String publish;
private int pubilishdate;
private int printtime;
private int unitprice;
private String typename;
private boolean state;
读者类:
private int readerid;
private String name;
private String sex;
private int age;
private String dept;//所在院系
private int phone;
private String regdat;//注册日期
private int limit;//可借阅天数
private int maxborrownum;//可借阅数量
private String type;//读者类型ID
private String typename;//读者类型名称
图书借阅类:
private int readerid;
private int ISBN;
private String borrowdate;
private String returndate;
private int fine;
读者类别类:
private int typeid;
private String typename;
private int limit;
private int maxborrownum;
图书类别类:
private int typeid;
private String typename;
罚金类:
private String typename;
private int fine;
主要实现
用户管理
介绍:主要实现用户的登录,用户账号密码的增删改。
public static int updateuser(int id,String ps)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\user");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray){
Properties pro=new Properties();
FileReader fr=new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String value = pro.getProperty("id");
int id1=Integer.valueOf(value);
String value2 = pro.getProperty("username");
if (id1==id){
String id2=String.valueOf(id);
pro.setProperty("id",id2);
pro.setProperty("username",value2);
pro.setProperty("password",ps);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\user\\"+value2+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
}
}
return 0;
}
public static int insertUser(String name, String password) throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\user");
File[] fileArray=file.listFiles();
for (File file1:fileArray){
if (file1.getName().equals(name+".txt"))return 0;
}
int maxid = findid()+1;
String id=String.valueOf(maxid);
File f=new File("C:\\Users\\J\\Desktop\\图书管理系统\\user\\"+name+".txt");
f.createNewFile();
Properties pro=new Properties();
pro.setProperty("id",id);
pro.setProperty("username",name);
pro.setProperty("password",password);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\user\\"+name+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
public static int deleteuser(int d) throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\user");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String value = pro.getProperty("id");
int id1=Integer.valueOf(value);
String value2 = pro.getProperty("username");
if (id1==d){
File f2=new File("C:\\Users\\J\\Desktop\\图书管理系统\\user\\"+value2+".txt");
f2.delete();
return 1;
}
}
}
return 0;
}
基本信息维护
介绍:为后面的读者和书籍设置限定并且实现这些类别的增删改查,当借阅书籍归还书籍时所需缴纳的罚金进行设置
图书类别设置
public static int insertBookType(int typeID, String typename) throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\booktype");
File[] fileArray=file.listFiles();
for (File file1:fileArray){
if (file1.getName().equals(typeID+".txt"))return 0;
Properties pro=new Properties();
FileReader fr=new FileReader(file1.getAbsolutePath());
pro.load(fr);
fr.close();
String typename1 = pro.getProperty("typename");
if (typename1.equals(typename))return 0;
}
File f=new File("C:\\Users\\J\\Desktop\\图书管理系统\\booktype\\"+typeID+".txt");
f.createNewFile();
Properties pro=new Properties();
String typeid=String.valueOf(typeID);
pro.setProperty("typeid",typeid);
pro.setProperty("typename",typename);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\booktype\\"+typeID+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
public static ArrayList<BookType> selectBookType(String typename2)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\booktype");
File[] fileArray=file.listFiles();
ArrayList<BookType> list=new ArrayList<BookType>();
if (file!=null){
for (File file1:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(file1.getAbsolutePath());
pro.load(fr);
fr.close();
BookType bt=new BookType();
String typename = pro.getProperty("typename");
if (typename.equals(typename2)){
String typeid = pro.getProperty("typeid");
Integer typeid2 = Integer.valueOf(typeid);
bt.setTypeid(typeid2);
bt.setTypename(typename2);
list.add(bt);
}
}
}
return list;
}
public static int updateBookType(int typeID2, String typename3)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\booktype");
File[] fileArray=file.listFiles();
ArrayList<BookType> bookTypes = selectBookType();
for (BookType bt:bookTypes){
if (bt.getTypename().equals(typename3)){
return 0;
}
}
if (file!=null){
for (File file1:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(file1.getAbsolutePath());
pro.load(fr);
fr.close();
String typeid = pro.getProperty("typeid");
int typeid2 = Integer.valueOf(typeid);
if (typeid2==typeID2){
pro.setProperty("typename", typename3);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\booktype\\"+typeid+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
}
}
return 0;
}
public static int deleteBookType(int typeid)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\booktype");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String value = pro.getProperty("typeid");
int typeid2=Integer.valueOf(value);
if (typeid==typeid2){
File f2=new File("C:\\Users\\J\\Desktop\\图书管理系统\\booktype\\"+typeid+".txt");
f2.delete();
return 1;
}
}
}
return 0;
}
读者类别设置
public static int insertReaderType(int typeid,String typename,int limit,int maxborrownum)throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\readtype");
File[] fileArray=file.listFiles();
for (File file1:fileArray){
if (file1.getName().equals(typeid+".txt"))return 0;
Properties pro=new Properties();
FileReader fr=new FileReader(file1.getAbsolutePath());
pro.load(fr);
fr.close();
String typename1 = pro.getProperty("typename");
if (typename1.equals(typename))return 0;
}
File f=new File("C:\\Users\\J\\Desktop\\图书管理系统\\readtype\\"+typeid+".txt");
f.createNewFile();
Properties pro=new Properties();
String typeid1=String.valueOf(typeid);
String limit1=String.valueOf(limit);
String maxborrownum1=String.valueOf(maxborrownum);
pro.setProperty("typeid",typeid1);
pro.setProperty("typename",typename);
pro.setProperty("limit",limit1);
pro.setProperty("maxborrownum",maxborrownum1);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\readtype\\"+typeid+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
public static ArrayList<ReaderType> selectReaderType()throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\readtype");
File[] fileArray=file.listFiles();
ArrayList<ReaderType> list=new ArrayList<ReaderType>();
if (file!=null){
for (File file1:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(file1.getAbsolutePath());
pro.load(fr);
fr.close();
ReaderType rt=new ReaderType();
String typeid = pro.getProperty("typeid");
Integer typeid2 = Integer.valueOf(typeid);
String typename = pro.getProperty("typename");
String limit = pro.getProperty("limit");
Integer limit2 = Integer.valueOf(limit);
String maxborrownum = pro.getProperty("maxborrownum");
Integer maxborrownum2 = Integer.valueOf(maxborrownum);
rt.setTypeid(typeid2);
rt.setTypename(typename);
rt.setLimit(limit2);
rt.setMaxborrownum(maxborrownum2);
list.add(rt);
}
}
return list;
}
罚金设置:
罚金的设置比较特别,只有当你设置读者类别的时候,会进行罚金的设置,不会单独进行添加。
public static int insert(String typename,int fine)throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\fine");
File[] fileArray=file.listFiles();
for (File file1:fileArray){
if (file1.getName().equals(typename+".txt"))return 0;
}
File f=new File("C:\\Users\\J\\Desktop\\图书管理系统\\fine\\"+typename+".txt");
f.createNewFile();
Properties pro=new Properties();
pro.setProperty("typename",typename);
String fine2=String.valueOf(fine);
pro.setProperty("fine",fine2);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\fine\\"+typename+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
图书信息管理
主要实现对图书的增删改查功能
public static int insertBook(int ISBN,int typeid,String bookname,String author,String publish,int publishdate,int printtime,int unitprice,String typename) throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\book");
File[] fileArray=file.listFiles();
Properties pro=new Properties();
for (File file1:fileArray){
if (file1.getName().equals(ISBN+".txt"))return 0;
}
ArrayList<BookType> bookTypes = BookTypeaction.selectBookType();
for (BookType bt:bookTypes){
if (bt.getTypename().equals(typename)){
File f=new File("C:\\Users\\J\\Desktop\\图书管理系统\\book\\"+ISBN+".txt");
f.createNewFile();
String ISBN2=String.valueOf(ISBN);
pro.setProperty("ISBN",ISBN2);
String typeid2=String.valueOf(typeid);
pro.setProperty("typeid",typeid2);
pro.setProperty("bookname",bookname);
pro.setProperty("author",author);
pro.setProperty("publish",publish);
String publishdate2=String.valueOf(publishdate);
pro.setProperty("publishdate",publishdate2);
String printtime2=String.valueOf(printtime);
pro.setProperty("printtime",printtime2);
String unitprice2=String.valueOf(unitprice);
pro.setProperty("unitprice",unitprice2);
String typename2=String.valueOf(typename);
pro.setProperty("typename",typename2);
pro.setProperty("state","false");
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\book\\"+ISBN+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
}
return 0;
}
public static ArrayList<Book> selectBook()throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\book");
File[] fileArray=file.listFiles();
ArrayList<Book> list=new ArrayList<Book>();
if (file!=null){
for (File file1:fileArray){
Properties pro=new Properties();
FileReader fr=new FileReader(file1.getAbsolutePath());
pro.load(fr);
fr.close();
Book book=new Book();
String isbn = pro.getProperty("ISBN");
int isbn2=Integer.valueOf(isbn);
String typeid = pro.getProperty("typeid");
int typeid2=Integer.valueOf(typeid);
String bookname = pro.getProperty("bookname");
String author = pro.getProperty("author");
String publish = pro.getProperty("publish");
String publishdate = pro.getProperty("publishdate");
int publishdate2=Integer.valueOf(publishdate);
String printtime = pro.getProperty("printtime");
int printtime2=Integer.valueOf(printtime);
String unitprice = pro.getProperty("unitprice");
int unitprice2=Integer.valueOf(unitprice);
String typename = pro.getProperty("typename");
String state = pro.getProperty("state");
boolean state2 = Boolean.parseBoolean(state);
book.setISBN(isbn2);
book.setTypeid(typeid2);
book.setBookname(bookname);
book.setAuthor(author);
book.setPublish(publish);
book.setPubilishdate(publishdate2);
book.setPrinttime(printtime2);
book.setUnitprice(unitprice2);
book.setTypename(typename);
book.setState(state2);
list.add(book);
}
}
return list;
}
public static int update(int ISBN3,int typeid3,String bookname3,String author3,String publish3,int publishdate3,int printtime3,int unitprice3,String typename3)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\book");
File[] files=file.listFiles();
ArrayList<BookType> bookTypes = BookTypeaction.selectBookType();
for (BookType bt:bookTypes){
if (bt.getTypename().equals(typename3)){
if (files!=null){
for (File f:files){
Properties pro=new Properties();
FileReader fr=new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String ISBN = pro.getProperty("ISBN");
int ISBN4=Integer.valueOf(ISBN);
String typeid=String.valueOf(typeid3);
String publishdate=String.valueOf(publishdate3);
String printtime=String.valueOf(printtime3);
String unitprice=String.valueOf(unitprice3);
if (ISBN4==ISBN3){
pro.setProperty("typeid",typeid);
pro.setProperty("bookname",bookname3);
pro.setProperty("author",author3);
pro.setProperty("publish",publish3);
pro.setProperty("publishdate",publishdate);
pro.setProperty("printtime",printtime);
pro.setProperty("unitprice",unitprice);
pro.setProperty("typename",typename3);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\book\\"+ISBN4+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
}
}
}
}
return 0;
}
public static int deletebook(int ISBN4)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\book");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String value = pro.getProperty("ISBN");
int ISDN=Integer.valueOf(value);
if (ISDN==ISBN4){
File f2=new File("C:\\Users\\J\\Desktop\\图书管理系统\\book\\"+ISDN+".txt");
f2.delete();
return 1;
}
}
}
return 0;
}
读者信息管理
主要实现对读者的增删改查功能
public static int insertReader(int id,String name,String sex,int age, String dept, int phone, String regdat, String typename)throws IOException {
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\reader");//,limit,maxborrownum,type,
File[] fileArray=file.listFiles();
Properties pro=new Properties();
for (File file1:fileArray){
if (file1.getName().equals(id+".txt"))return 0;
}
File f=new File("C:\\Users\\J\\Desktop\\图书管理系统\\reader\\"+id+".txt");
f.createNewFile();
File file2=new File("C:\\Users\\J\\Desktop\\图书管理系统\\readtype");
File[] files=file2.listFiles();
if (files!=null){
for (File f2:files){
Properties pro2=new Properties();
FileReader fr=new FileReader(f2.getAbsolutePath());
pro2.load(fr);
fr.close();
String typename1 = pro2.getProperty("typename");
if (typename.equals(typename1)){
String limit1 = pro2.getProperty("limit");
String maxborrownum1 = pro2.getProperty("maxborrownum");
String typeid = pro2.getProperty("typeid");
String ID=String.valueOf(id);
String AGE=String.valueOf(age);
String Phone=String.valueOf(phone);
//id, name, sex, age, dept, phone, regdat,limit,maxborrownum,type, typename
pro.setProperty("id",ID);
pro.setProperty("name",name);
pro.setProperty("sex",sex);
pro.setProperty("age",AGE);
pro.setProperty("dept",dept);
pro.setProperty("phone",Phone);
pro.setProperty("regdat",regdat);
pro.setProperty("limit",limit1);
pro.setProperty("maxborrownum",maxborrownum1);
pro.setProperty("type",typeid);
pro.setProperty("typename",typename);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\reader\\"+id+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
}
}
return 0;
}
public static void selectReader()throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\reader");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray){
Properties pro=new Properties();
FileReader fr=new FileReader(f.getAbsolutePath());//,limit,maxborrownum,type,
pro.load(fr);
fr.close();
String id = pro.getProperty("id");
String name = pro.getProperty("name");
String sex = pro.getProperty("sex");
String age = pro.getProperty("age");
String dept = pro.getProperty("dept");
String phone = pro.getProperty("phone");
String regdat = pro.getProperty("regdat");
String limit = pro.getProperty("limit");
String maxborrownum = pro.getProperty("maxborrownum");
String type = pro.getProperty("type");
String typename = pro.getProperty("typename");
System.out.println("id"+"="+id+","+"name"+"="+name+","+"sex"+"="+sex+","+"age"+"="+age+","+"dept"+"="+dept+","+"phone"+"="+phone+","+"regdat"+"="+regdat+","+"limit"+"="+limit+","+"maxborrownum"+"="+maxborrownum+","+"type"+"="+type+","+"typename"+"="+typename);
}
}
}
public static int UpdateReader(int id2,String name2,String sex2,int age2, String dept2, int phone2, String regdat2,String typename2)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\reader");
File[] files=file.listFiles();
if (files!=null){
for (File f:files){
Properties pro=new Properties();
FileReader fr=new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String id = pro.getProperty("id");
int id3=Integer.valueOf(id);
String age=String.valueOf(age2);
String phone=String.valueOf(phone2);
if (id2==id3){
pro.setProperty("name",name2);
pro.setProperty("sex",sex2);
pro.setProperty("age",age);
pro.setProperty("dept",dept2);
pro.setProperty("phone",phone);
pro.setProperty("regdat",regdat2);
pro.setProperty("typename",typename2);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\reader\\"+id2+".txt");
pro.store(fw,null);
fw.close();
return 1;
}
}
}
return 0;
}
public static int deletereader(int readid)throws IOException{
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\reader");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String value = pro.getProperty("id");
int id=Integer.valueOf(value);
if (id==readid){
File f2=new File("C:\\Users\\J\\Desktop\\图书管理系统\\reader\\"+readid+".txt");
f2.delete();
return 1;
}
}
}
return 0;
}
图书归还管理
主要对图书借阅和归还的设置,并且判断不同的读者类别有不同的罚金,借阅天数和最大借阅数量。
for (int i=0;i<readers.size();i++){
String typename = readers.get(i).getTypename();
File file=new File("C:\\Users\\J\\Desktop\\图书管理系统\\readtype");
File[] fileArray=file.listFiles();
if (fileArray!=null){
for (File f:fileArray) {
Properties pro = new Properties();
FileReader fr = new FileReader(f.getAbsolutePath());
pro.load(fr);
fr.close();
String typename2 = pro.getProperty("typename");
if (typename.equals(typename2)){
String maxborrownum = pro.getProperty("maxborrownum");
int maxborrownum2=Integer.valueOf(maxborrownum);
if (borrowBooks.size()<maxborrownum2){
ArrayList<Book> books = Bookaction.selectBook();
for (int i1=0;i1<books.size();i1++){
System.out.println(books.get(i1));
}
System.out.println("请输入你想要借阅图书的ISBN");
int f2=scanner.nextInt();
int jybook = Bookborrowaction.jybook(f2);
if (jybook==0){
System.out.println("没有此图书");
}else if (jybook==1){
int borrowinsert = Bookborrowaction.borrowinsert(c, f2);
if (borrowinsert==0){
System.out.println("借阅失败");
}else {
System.out.println("借阅成功");
}
}else {
System.out.println("该图书已被借阅");
}
}else if (borrowBooks.size()>=4){
System.out.println("借阅数量已满");
}
}
}
}
}
FileReader fr=new FileReader("C:\\Users\\J\\Desktop\\图书管理系统\\reader\\"+readid+".txt");
Properties pro=new Properties();
pro.load(fr);
fr.close();
String typename = pro.getProperty("typename");
File file = new File("C:\\Users\\J\\Desktop\\图书管理系统\\readtype");
File[] files = file.listFiles();
Calendar calendar= Calendar.getInstance();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
if (files != null) {
for (File f : files) {
Properties pro2 = new Properties();
FileReader fr2 = new FileReader(f.getAbsolutePath());
pro2.load(fr2);
fr2.close();
String typename1 = pro2.getProperty("typename");
if (typename.equals(typename1)){
String limit = pro2.getProperty("limit");
int limit2=Integer.valueOf(limit);
FileReader fr3=new FileReader("C:\\Users\\J\\Desktop\\图书管理系统\\bookborrow\\"+readid+"-"+ISBN+".txt");
Properties pro3=new Properties();
pro3.load(fr3);
fr3.close();
String returndate=dateFormat.format(calendar.getTime());
String borrowdate = pro3.getProperty("borrowdate");
pro3.setProperty("returndate",returndate);
long time = time(borrowdate, returndate);
int time2=Integer.valueOf((int) time);
if (time2>limit2){
int finetime=time2-limit2;//超过的天数
Properties p=new Properties();
FileReader fr4=new FileReader("C:\\Users\\J\\Desktop\\图书管理系统\\fine\\"+typename+".txt");
p.load(fr4);
fr4.close();
String fine = p.getProperty("fine");
int fine2=Integer.valueOf(fine);
int fine3=fine2*finetime;
String fine4=String.valueOf(fine3);
pro3.setProperty("fine",fine4);
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\bookborrow\\"+readid+"-"+ISBN+".txt");
pro3.store(fw,null);
fw.close();
return 2;
}else if (time2<=limit2){
pro3.setProperty("fine","0");
FileWriter fw=new FileWriter("C:\\Users\\J\\Desktop\\图书管理系统\\bookborrow\\"+readid+"-"+ISBN+".txt");
pro3.store(fw,null);
fw.close();
//进book里面修改状态,并进行删除借阅数据的信息
updatestate(ISBN);
deletereturnbook(readid,ISBN);
return 1;
}
}
}
}
return 0;
总结
代码比较冗余,对于方法的继承来减少重复量做的比较差,希望以后能慢慢进步下去。做完这个系统对我对于代码的编写,还有数据的传输有了一个新的感受和理解。希望以后自己能加强方法的重写方面。对于有兴趣的同学,可以看看代码,希望也能给你们带来新的理解。