目录
一,功能分析
1,功能模块
2,功能结构图
3,项目结构
二,功能实现
1,管理员模块
2,读者模块
3,图书管理模块
4,图书借阅模块
5,罚金模块
三,总结
整个系统的功能主要可以分为五个模块,系统的使用者(管理员模块),书籍信息以及操作(图书管理模块),借阅书籍的人的信息记录(读者模块),图书借阅的功能(图书借阅模块)。
管理员模块首先可以进行管理员账号的注册,登录功能。以及对登陆的账号进行密码修改的操作,也可以删除当前登录的账号。账号信息主要有id,用户名,密码三个属性。
读者模块是管理员对读者信息进行添加,查询,修改操作。读者模块包括读者的编号,姓名出生,性别,电话,院系,注册时间,读者类别以及该类别可以借阅的书籍以及时间等属性。
图书管理模块是对书籍进行增,删,查,改和打印书籍信息的操作,存储的书籍信息包括名称,作者,印刷次数,类别,编号等属性。
图书借阅模块完成图书的借阅以及归还功能,主要有借阅时间,归还时间两个属性。
罚金模块主要存储借阅逾期时的罚金信息。
管理员模块包括注册,登录,修改密码,删除用户四个功能
// 管理员登录
public boolean login(){
journal.setJournal("账号登录");
FileReader fileReader= null;
try {
fileReader = new FileReader(Administrator.adminnistratorfile);
} catch (IOException e) {
try {
e.printStackTrace(new PrintStream(journal.toString()));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
String [][]str=getUser(fileReader);
System.out.println("登陆界面");
// 存储文件存在且为空
if (Administrator.adminnistratorfile.exists()&&Administrator.adminnistratorfile.length()==0){
System.out.println("尚未注册用户");
return false;
}
do {
System.out.print("请输入用户名:");
administrator.setAdministratorName(scanner.next());
System.out.print("请输入密码:");
administrator.setAdministratorPassword(scanner.next());
for (int i=0;i
读者模块包括添加,查询,修改三个功能
// 添加
public void readerInformationAdd(){
journal.setJournal("读者信息添加");
// 读者
FileWriter fileWriter= null;
FileReader fileReader= null;
// 借阅书籍
FileWriter fileWriter1= null;
try {
fileWriter = new FileWriter(ReaderInformation.readerfile,true);
fileReader = new FileReader(ReaderInformation.readerfile);
fileWriter1 = new FileWriter(BookLending.readerbookfile,true);
} catch (IOException e) {
e.printStackTrace();
}
boolean flag=true;
System.out.println("读者信息添加界面");
do {
// 1.姓名
System.out.print("读者姓名:");
readerInformation.setReaderName(scanner.next());
while (readerInformation.getReaderName().equals("NULL")){
System.out.print("非法输入,请重新选择:");
readerInformation.setReaderName(scanner.next());
}
// 2.读者类型(一类/二类/三类)
readerInformation.setReaderType("三类");
// 3.出生
System.out.print("读者出生年月(yyyy-MM):");
readerInformation.setReaderBirthday(scanner.next());
while (!readerInformation.getReaderBirthday().matches(pattern2)){
System.out.print("非法输入,请重新选择:");
readerInformation.setReaderBirthday(scanner.next());
}
// 4.性别
System.out.print("读者性别:");
readerInformation.setGender(scanner.next());
while (!readerInformation.getGender().matches(pattern3)){
System.out.print("非法输入,请重新选择:");
readerInformation.setGender(scanner.next());
}
// 5.电话
System.out.print("读者电话:");
readerInformation.setPhone(scanner.next());
while (!readerInformation.getPhone().matches(pattern4)){
System.out.print("非法输入,请重新选择:");
readerInformation.setPhone(scanner.next());
}
// 6.院系
System.out.print("读者所在院系(文学院/理工学院/体育学院/医学院/商学院/艺术学院/管理学院/外国语学院/电子信息学院):");
readerInformation.setDepartment(scanner.next());
while (!readerInformation.getDepartment().matches(pattern5)){
System.out.print("非法输入,请重新选择:");
readerInformation.setDepartment(scanner.next());
}
// 7.注册时间
Date date = new Date();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
readerInformation.setRegistrationTime(dateFormat.format(date));
// 8.借阅数量
readerInformation.setLendingNum("1");
// 9.借阅时间
readerInformation.setLendingTime("7");
// 文件存在且为空
if (ReaderInformation.readerfile.exists()&&ReaderInformation.readerfile.length()==0){
readerInformation.setReaderId("1");
flag=false;
}else {
String [][]str= getUser(fileReader);
int id=Integer.parseInt(str[str.length-1][0])+1;
readerInformation.setReaderId(Integer.toString(id));
for (int i=0;i
图书管理模块包括显示图书信息,添加,查询,修改,删除五个功能
// 打印所有书籍信息
public boolean booksFindAll(){
journal.setJournal("书籍信息打印");
FileReader fileReader= null;
try {
fileReader = new FileReader(BookInformation.booksfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (BookInformation.booksfile.exists()&&BookInformation.booksfile.length()==0){
System.out.println("还未录入图书信息");
return false;
}else {
String [][]str=getUser(fileReader);
for (int i=0;i
图书借阅模块包括借阅和归还两个功能
// 图书借阅
public void bookLending() {
journal.setJournal("图书借阅");
// 读者
if (ReaderInformation.readerfile.exists()&&ReaderInformation.readerfile.length()==0){
System.out.println("未存入读者信息");
return;
}
FileReader fileReader1= null;
FileReader fileReader2= null;
try {
fileReader1 = new FileReader(ReaderInformation.readerfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String [][]str1=getUser(fileReader1);//读者
FileWriter fileWriter1= null;
try {
fileWriter1 = new FileWriter(ReaderInformation.readerfile);
} catch (IOException e) {
e.printStackTrace();
}
// 书籍
if (BookInformation.booksfile.exists()&&BookInformation.booksfile.length()==0){
System.out.println("未存入书籍信息");
return;
}
try {
fileReader2 = new FileReader(BookInformation.booksfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String [][]str2=getUser(fileReader2);//书籍
FileWriter fileWriter2= null;
try {
fileWriter2 = new FileWriter(BookInformation.booksfile);
} catch (IOException e) {
e.printStackTrace();
}
// 借阅书籍
FileReader fileReader3= null;
try {
fileReader3 = new FileReader(BookLending.readerbookfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String [][]str3=getUser(fileReader3);//借阅
FileWriter fileWriter3= null;
try {
fileWriter3 = new FileWriter(BookLending.readerbookfile);
} catch (IOException e) {
e.printStackTrace();
}
Date date = new Date();
String choice, str=null;
int i=0,j=0,l=0,z=0;
boolean readerflag=true;
boolean bookflag=true;
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
bookLending.setBookLendingTime(dateFormat.format(date));
System.out.println("图书借阅界面");
while (readerflag){
System.out.println("请输入读者编号");
choice=scanner.next();
while (!choice.matches(pattern1)){
System.out.print("非法输入,请重新输入:");
choice=scanner.next();
}
for (i=0;i0){
System.out.println("请缴纳罚金"+days*money+"元");
}
break;
}else if(j==str2[i].length-1){
System.out.println("未借阅");
return;
}
}
try {
for (z=0;z
public void forfeit(){
journal.setJournal("罚金规则查看");
String choice1;
FileReader fileReader= null;
FileWriter fileWriter= null;
try {
fileReader = new FileReader(BasicInformation.forfeitfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String str=getUser(fileReader);
try {
fileWriter = new FileWriter(BasicInformation.forfeitfile);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("+-----------------------------------------------------------+");
System.out.println("|\t\t\t\t\t\t 设 置 界 面 \t\t\t\t\t\t|");
System.out.println("+-----------------------------------------------------------+");
System.out.println("逾期的罚金规则为每超过一天罚"+str+"元");
System.out.print("是否修改?(y/n)");
choice1=scanner.next();
while (!choice1.matches(pattern1)){
System.out.print("非法输入,请重新选择:");
choice1=scanner.next();
}
if (choice1.equals("y")){
journal.setJournal("罚金规则修改");
System.out.println("请输入新的惩罚金额");
basicInformation.setForfeit(scanner.next());
while (!basicInformation.getForfeit().matches(pattern3)){
System.out.print("非法输入,请重新选择:");
basicInformation.setForfeit(scanner.next());
}
str=basicInformation.getForfeit();
try {
fileWriter.write(str);
} catch (IOException e) {
e.printStackTrace();
}
}
ioDealWith.close(fileWriter,fileReader,journal);
}
整个系统的基本功能都得以实现,但就代码而言,整个程序的代码显得比较复杂,还可以对代码进行优化和改进,对IO流的理解和掌握还不够熟练。除此以外这个程序还有很多的不足之处,欢迎各位的指正和建议。