东北大学java实验3.docx
《东北大学java实验3.docx》由会员分享,可在线阅读,更多相关《东北大学java实验3.docx(44页珍藏版)》请在冰豆网上搜索。
东北大学java实验3
JAVA实验报告三
学院:
计算机科学与工程学院
专业:
计算机科学与技术专业
班级:
1507班
姓名:
罗艺博
学号:
20154377
实验时间:
2017/09/18
一、实验要求
(1)创建研究生和本科生两个类,并继承学生类,其中,研究生借书上限为5本,本科生借书上限为3本;
(2)创建管理员类,使其有权限增添、删除图书馆中存书;
(3)使教师、学生能够查询书被谁借走。
二、实验内容
1.概要设计
本程序由8个类组成,分别为:
Runer()、Libaray()、Book()、Iadm()、Teacher()、Student()、Undergraduate()、Postgraduate()。
其中,Runer()类:
考虑到图书馆和管理员都只有一个,因此在main函数中创建了一个图书馆对象和一个管理员对象。
除此之外,Runer()类也作为用户界面的承担者。
Libaray()类:
图书馆类。
分别创建了Book()、Teacher()、Student()、Undergraduate()、Postgraduate()的对象数组,完成了显示图书信息、教师信息、学生信息的功能。
包含图书馆界面。
Book()类:
图书类。
包含图书ID、书名、作者、入库时间、借阅者ID、借阅者姓名等信息,并包含教师借书、教师还书、学生借书、学生还书等功能,其中,借书时,当要借的图书被借走的情况下,可查询到该书被谁借走。
Iadm()类:
管理员类。
包含管理员ID和管理员密码,所含有的功能最多,分别有图书的录入、修改、删除,教师信息的录入、修改、删除,学生信息的录入、修改、删除和修改密码等功能。
Teacher()类:
教师类。
包含教师姓名、工号、借阅量等信息。
教师的图书最大借阅量被设置为6本。
Student()类:
学生类。
包含学生姓名、学号、性别、班级、年龄、图书借阅量等信息。
Undergraduate()类:
本科生类。
继承了Student()类,在原有基础上,增添了户籍所在地等信息。
本科生的图书最大借阅量被设置为3本。
Postgraduate()类:
研究生类。
继承了Student()类,在原有基础上,增添了户籍所在地、婚姻状况等信息。
研究生的图书最大借阅量被设置为3本。
各个类的关系图
2.流程图
图书管理系统流程图
3.关键函数
Runer():
main:
主函数,创建图书馆、管理员对象,调用主界面函数
maininterface:
主界面
adminterface:
管理员界面
adminterface2:
添加学生中用于判断是本科生还是研究生
adminterface5:
修改学生信息中用于判断是本科生还是研究生
adminterface3:
删除学生中用于判断是本科生还是研究生
adminterface4:
显示学生信息中用于判断是本科生还是研究生
interfacestudent:
学生界面
interfaceteacher:
教师界面
Libaray():
showBooks:
显示图书信息
showStudents:
显示学生信息
showUndergraduates:
显示本科生信息
showPostgraduate:
显示研究生信息
showTeachers:
显示教师信息
jbbook:
用于教师借书的判断
jrbook:
用于教师还书的判断
jbbookStu:
用于学生借书的判断
jrbookStu:
用于学生还书的判断
Book():
modifyname:
修改书名
getName:
返回书名
borrow:
教师借书
returnBook:
教师还书
sborrow:
学生借书
sreturnBook:
学生还书
showBook:
显示单本图书信息
Iadm():
changePassword:
更改密码
getpass:
返回密码
entry:
图书录入
modifyBook:
修改图书信息
deletBook:
删除图书
entryUndergraduate:
录入本科生
deletUndergraduate:
删除本科生
modifyUndergraduate:
修改本科生信息
entryPostgraduate:
录入研究生
deletPostgraduate:
删除研究生
modifyPostgraduate:
修改研究生信息
entryTeacher:
录入教师
deletTeacher:
删除教师
modifyTeacher:
修改教师信息
Teacher():
modifid:
修改工号
getId:
返回工号
getnum:
返回借阅数
getmaxnum:
返回最大借阅量
getname:
返回姓名
pNum:
借阅量+1
sNum:
借阅量-1
showTeacher:
显示单个教师信息
Student():
setAge:
设置年龄
getId:
返回id
getnum:
返回借阅量
getmaxnum:
返回最大借阅量
getname:
返回姓名
pNum:
借阅量+1
sNum:
借阅量-1
showStudent:
显示单个学生信息
Undergraduate():
showUndergraduate:
显示单个本科生信息
Postgraduate():
modifyMaritalstatus:
修改研究生婚姻状况
showPostgraduate:
显示单个研究生信息
三、实验步骤
按照流程图与关系图,根据题目要求编写代码。
细化各个功能,并相应添加功能。
本科生类、研究生类继承学生类:
创建管理员类(示例添加图书,其他略):
若要借的书籍被借走时显示此图书借阅者(学生借书同理,略):
若查询到此书被借走,则打印出此书的借书信息
四、实验结果
首先先修改一下管理员密码:
在图书馆中添加一些书籍、学生、教师:
删除书籍、学生、教师:
学生借书、借书量到达上限:
当教师要借《皮皮鲁1》时,由于这本书已经被其他人借走,因此会显示这本书的借阅者(学生借书同理):
修改书籍、学生、教师信息:
还书(学生、教师同理):
显示图书、学生、教师信息:
五、心得体会
在学习Java语言之前,我一直喜欢用C语言解决问题。
经历了这几次实验,我慢慢认识到了Java语言的优秀。
只要能好好运用“类”,问题都能迎刃而解,而且Java语言本身也向我们提供了很多很好用的类,比如栈、队列、向量等,这些类在C语言编程中也时常用到,但是需要自己实现,而在Java中就能直接使用,这就使我们平时编程更加方便。
源程序代码
Runer():
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Scanner;
publicclassRuner{
publicstaticvoidmain(String[]agrs){
Libarayl=newLibaray("测试图书馆");
Iadmadm=newIadm
(1);//创建管理员
maininterface(l,adm);
}
//主界面
publicstaticvoidmaininterface(Libarayl,Iadmadm){
while(true){
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("请选择个人身份:
1.学生2.教师3.管理员");
Scannersc=newScanner(System.in);
intreceive=sc.nextInt();
sc.nextLine();
switch(receive){
case1:
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("哈哈哈你是学生!
");
interfacestudent(l);
break;
case2:
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("哈哈哈你是老师!
");
interfaceteacher(l);
break;
case3:
System.out.println("请输入管理员密码:
");
Stringpas=sc.nextLine();
if(pas.equals(adm.getpass())){
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("哈哈哈你是管理员!
");
adminterface(l,adm);
}
else{
System.out.println("密码错误,请重试!
");
}
break;
default:
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("哈哈哈你选错了!
");
break;
}
//sc.close();
}
//return0;
}
//管理员界面
publicstaticvoidadminterface(Libarayl,Iadmadm){
System.out.println("请选择功能:
");
System.out.println("1.添加图书2.删除图书3.修改图书信息4.显示图书信息");
System.out.println("5.添加学生信息6.删除学生信息7.修改学生信息8.显示学生信息");
System.out.println("9.添加教师信息10.删除教师信息11.修改教师信息12.显示教师信息");
System.out.println("13.修改密码");
Scannersai=newScanner(System.in);
intfeatures=sai.nextInt();
switch(features){
case1:
//添加图书
for(inti=0;i<5;i++){
System.out.println();
}
adm.entry();
break;
case2:
//删除图书
for(inti=0;i<5;i++){
System.out.println();
}
adm.deletBook();
break;
case3:
//修改图书信息
for(inti=0;i<5;i++){
System.out.println();
}
adm.modifyBook();
break;
case5:
//添加学生信息
for(inti=0;i<5;i++){
System.out.println();
}
adminterface2(adm);
break;
case6:
//删除学生信息
for(inti=0;i<5;i++){
System.out.println();
}
adminterface3(adm);
break;
case9:
//添加教师信息
for(inti=0;i<5;i++){
System.out.println();
}
adm.entryTeacher();
break;
case10:
//删除教师信息
for(inti=0;i<5;i++){
System.out.println();
}
adm.deletTeacher();
break;
case4:
//显示图书信息
for(inti=0;i<5;i++){
System.out.println();
}
l.showBooks();
break;
case8:
//显示学生信息
for(inti=0;i<5;i++){
System.out.println();
}
adminterface4(l);
break;
case12:
//显示教师信息
for(inti=0;i<5;i++){
System.out.println();
}
l.showTeachers();
break;
case7:
//修改学生信息
for(inti=0;i<5;i++){
System.out.println();
}
adminterface5(l,adm);
break;
case11:
//修改教师信息
for(inti=0;i<5;i++){
System.out.println();
}
adm.modifyTeacher();
break;
case13:
//修改密码
for(inti=0;i<5;i++){
System.out.println();
}
adm.changePassword();
break;
default:
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("哈哈哈你选错了!
");
break;
}
//sai.close();
//return0;
}
//添加学生-判断
publicstaticvoidadminterface2(Iadmadm){
while(true){
System.out.println("请选择:
1.本科生2.研究生");
Scannersai2=newScanner(System.in);
intsstu=sai2.nextInt();
if(sstu==1){//添加本科生
for(inti=0;i<5;i++){
System.out.println();
}
adm.entryUndergraduate();
break;
}
elseif(sstu==2){//添加研究生
for(inti=0;i<5;i++){
System.out.println();
}
adm.entryPostgraduate();
break;
}
else{
System.out.println("输入有误,请重新选择!
");
for(inti=0;i<5;i++){
System.out.println();
}
}
//sai2.close();
}
}
//修改学生信息-判断
publicstaticvoidadminterface5(Libarayl,Iadmadm){
while(true){
System.out.println("请选择:
1.本科生2.研究生");
Scannersai5=newScanner(System.in);
intsstu=sai5.nextInt();
if(sstu==1){//显示本科生
for(inti=0;i<5;i++){
System.out.println();
}
adm.modifyUndergraduate();
break;
}
elseif(sstu==2){//显示研究生
for(inti=0;i<5;i++){
System.out.println();
}
adm.modifyPostgraduate();
break;
}
else{
System.out.println("输入有误,请重新选择!
");
for(inti=0;i<5;i++){
System.out.println();
}
}
//sai4.close();
}
}
//删除学生-判断
publicstaticvoidadminterface3(Iadmadm){
while(true){
System.out.println("请选择:
1.本科生2.研究生");
Scannersai3=newScanner(System.in);
intsstu=sai3.nextInt();
if(sstu==1){//删除本科生
for(inti=0;i<5;i++){
System.out.println();
}
adm.deletUndergraduate();
break;
}
elseif(sstu==2){//删除研究生
for(inti=0;i<5;i++){
System.out.println();
}
adm.deletPostgraduate();
break;
}
else{
System.out.println("输入有误,请重新选择!
");
for(inti=0;i<5;i++){
System.out.println();
}
}
//sai3.close();
}
}
//显示学生-判断
publicstaticvoidadminterface4(Libarayl){
while(true){
System.out.println("请选择:
1.本科生2.研究生");
Scannersai4=newScanner(System.in);
intsstu=sai4.nextInt();
if(sstu==1){//显示本科生
for(inti=0;i<5;i++){
System.out.println();
}
l.showUndergraduates();
break;
}
elseif(sstu==2){//显示研究生
for(inti=0;i<5;i++){
System.out.println();
}
l.showPostgraduate();
break;
}
else{
System.out.println("输入有误,请重新选择!
");
for(inti=0;i<5;i++){
System.out.println();
}
}
//sai4.close();
}
}
//学生界面
publicstaticvoidinterfacestudent(Libarayl){
while(true){
System.out.println("请选择服务类型:
1.借书2.还书");
Scannerints=newScanner(System.in);
inttype=ints.nextInt();
if(type==1){//借书
for(inti=0;i<5;i++){
System.out.println();
}
l.jbbookStu();
break;
}
elseif(type==2){//还书
for(inti=0;i<5;i++){
System.out.println();
}
l.jrbookStu();
break;
}
else{
for(inti=0;i<5;i++){
System.out.println();
}
System.out.println("输入错误,请重试!
");
}
}
}
//教师界面
publicstaticvoidinterfaceteacher(Libarayl){
while(true){
System.out.println("请选择服务类型:
1.借书2.还书");
Scannerintt=newScanner(System.in);
inttype=intt.nextInt();
if(type==1){//借书
for(inti=0;i<5;i++){
System.out.println();
}
l.jbbook();
break;
}
elseif(type==2){//还书
for(inti=0;i<5;i++){
System.out.println();
}
l.jrbook();
break;
}
else{
for(inti=0;i<5;i