资源描述
精品文档
面向对象课程设计报告
课程设计题目:图书信息管理系统
学 院:计算机科学与技术学院
专 业: 软件工程
班 级: 131
学 号: 1308060130
学生姓名: 易榜宇
指导教师: 汪健
2014年7月12日
一、课程设计目的及要求
1: 课程设计要求
面向对象程序设计是一门实践性较强的课程,以实际应用为目的。在课程设计时应注重培养学生的实际操作能力。本课程设计安排了16学时的实验课时,具体要求如下:
1. 学习和理解课程设计题目的基本理论和方法;
2. 掌握实验的实现步骤和关键技术;
3. 准备好实验所需要的资源和文档;
4. 上机实现程序,得到通过调试的正确程序。
5. 根据实验的要求,完成实验报告的word文档。
2:课程设计目的
面向对象程序设计是软件工程专业的专业基础课,目的是让学生通过对面向对象程序设计语言(例如Java)的学习,全面理解和掌握面向对象程序设计的基本思想、基本概念和基本方法。
本课程设计是面向对象程序设计课程的后续实践课程。在本课程设计中,将利用JDK1.7/1.8平台和Eclipse(Netbeans)集成开发环境为实践工具,通过上机实践培养学生分析具体问题、利用面向对象语言工具(Java)解决实际问题的能力,更好地理解和掌握面向对象的思想、概念和方法。
二、课程设计实践环境
Win7 、JDK 1.7/1.8以及Eclipse集成开发环境。
三、 课程设计内容
1: 图书借阅信息管理系统
题目要求:设计三个类:图书类、读者类、借阅信息类。图书类用来存储图书的信息,读者类用来存储读者的信息,借阅信息类用来存储读者借阅图书的信息。在系统中实现图书信息的添加和查询、读者信息的添加和查询、图书借阅信息的添加和查询。
图书信息可以包括:书名、图书编号、作者、出版社、出版时间、版次、ISBN、定价等。
读者信息可以包括:姓名、年龄、性别、借阅证号(读者编号)、单位等。
图书借阅信息可以包括:读者编号、图书编号、借出时间、应还时间等。
2:
具体设计了AddInforFrame,AddBookFrame,AddFrame,AddListener,SearchListener,LoginListener,OperateFrame,SearchBookFrame,SearchUserFrame,SearchInforFrame,WindowLoad,MainFrame这样我几个类,
3,
((0)这是管理员登录的界面)
((1)这是管理员进行操作的界面)
((2)这是用户添加的界面)
((3)这是用户查询的界面)
((4)这是管理员将要退出的界面)
4,使用说明:
管理员通过后台登录(用户名admin,密码123456),可以进行读者、图书、借阅信息的添加与查询,以及相关的操作。
四、源程序代码
AddBookFrame.java
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class AddBookFrame extends JFrame implements ActionListener{
static int bookcount=0;
JLabel alable;
/*姓名、学号、年龄、性别、学院、专业、年级、班级*/
JLabel userlable;
JLabel usernumber;
JLabel age;
JLabel sex;
JLabel collage;
JLabel major;
JLabel grade;
JLabel class_;
JTextField userinput,usernuminput,ageinput,sexinput,collageinput,majorinput,gradeinput,class_input;
JTextArea showtext;/*用于显示用户添加的信息域 */
JButton ok;
JButton reset;
int flag=0;
int flag1=0;
public AddBookFrame(){
init();
setBounds(400,100,600,600);
setVisible(true);
setResizable(false);
/* addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
int n=JOptionPane.showConfirmDialog( this, "是否要真的退出添加?","确认对话框", JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION){
this.EXIT_ON_CLOSE;
System.exit(0);
}
}
});*/
setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
}
void init(){
alable =new JLabel("请填写相关信息:");
userlable=new JLabel("编号:");
usernumber =new JLabel("书名:");
age=new JLabel("版次:");
sex=new JLabel("定价:");
collage=new JLabel("作者:");
major=new JLabel("出版社:");
grade=new JLabel("出版时间:");
class_=new JLabel("ISBN:");
userinput=new JTextField(15);
usernuminput=new JTextField(15);
ageinput=new JTextField(15);
sexinput=new JTextField(15);
collageinput=new JTextField(15);
majorinput=new JTextField(15);
gradeinput=new JTextField(15);
class_input=new JTextField(15);
//设置盒式布局并添加组件
Box baseBox,boxV1,boxV2,boxV3,boxV4;
this.setLayout(new FlowLayout());
boxV1=Box.createVerticalBox();
boxV1.add(alable);
boxV1.add(boxV1.createVerticalStrut(30));
boxV1.add(userlable);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(usernumber);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(age);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(sex);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(collage);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add( major);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(grade);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(class_);
boxV2=Box.createVerticalBox();
/*boxV2.createVerticalStrut(10);*/
boxV2.add(boxV2.createVerticalStrut(45));
boxV2.add(userinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(usernuminput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(ageinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(sexinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(collageinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(majorinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add( gradeinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(class_input);
boxV3=Box.createHorizontalBox();
boxV3.add(boxV1);
boxV3.add(boxV2);
boxV4=Box.createHorizontalBox();
ok=new JButton("确定");
reset=new JButton("取消");
ok.addActionListener(this);
reset.addActionListener(this);
boxV4.add(ok);
boxV4.add(reset);
baseBox=Box.createVerticalBox();
baseBox.add(boxV3);
baseBox.add(baseBox.createVerticalStrut(20));
baseBox.add(boxV4);
showtext=new JTextArea(9,50);/*文本域的一些操作*/
showtext.setText("您新添加的图书信息如下:");
add(new JScrollPane(showtext));
showtext.setLineWrap(true);
/*(showtext.getDocument()).addDocumentListener(this);*/
add(showtext);
this.add(baseBox);
//让输入用户名的文本框获得焦点
userinput.grabFocus();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==reset){
showtext.setText("您新添加的图书信息如下:");
}
else if(userinput.getText().isEmpty()||usernuminput.getText().isEmpty()||ageinput.getText().isEmpty()||sexinput.getText().isEmpty()||collageinput.getText().isEmpty()||majorinput.getText().isEmpty()||gradeinput.getText().isEmpty()||class_input.getText().isEmpty()){
JOptionPane.showMessageDialog(this,"请把信息填写完整!", "警告对话框",JOptionPane.WARNING_MESSAGE);
}
else{
/*此时用户已存在了*/
String usernum=userinput.getText();
int b;
byte tom[]=new byte[1000000];
File file=new File("C:\\Book.txt");
try{
FileReader in=new FileReader(file);
BufferedReader inTwo=new BufferedReader(in);
String s=null;
int a;
while((s=inTwo.readLine())!=null){
if((a=s.indexOf(usernum))!=-1){
flag=1;
JOptionPane.showMessageDialog(this,"图书已经存在!", "警告对话框",JOptionPane.WARNING_MESSAGE);
userinput.setText(null);
usernuminput.setText(null);
ageinput.setText(null);
sexinput.setText(null);
collageinput.setText(null);
majorinput.setText(null);
gradeinput.setText(null);
class_input.setText(null);
break;
}
}
}
catch(IOException e1){
JOptionPane.showMessageDialog(this,"文件读取失败!", "警告对话框",JOptionPane.WARNING_MESSAGE);
}
if(flag==0){/*没有重复添加图书的情况*/
try{
int n=Integer.parseInt(userinput.getText());
String date1=gradeinput.getText();
/*String date2=majorinput.getText();*/
String eL = "[0-9]{4}-[0-1][0-9]-[0-3][0-9]";
Pattern p = Ppile(eL);
Matcher mm = p.matcher(date1);
/*Matcher nn=p.matcher(date2)*/;
boolean dateFlag = (mm.matches()/*&&nn.matches()*/);
if (!dateFlag) {
flag1=1;
JOptionPane.showMessageDialog(this,"日期格式有误!", "警告对话框",JOptionPane.WARNING_MESSAGE);
gradeinput.setText(null);
/*majorinput.setText(null);*/
gradeinput.grabFocus();
}
if(flag1==0){
bookcount++;/*计数总人数*/
String s1=userinput.getText();
showtext.append("\n"+"编号:"+s1+";");
String s2=usernuminput.getText();
showtext.append("书名:"+s2+";");
String s3=ageinput.getText();
showtext.append("版次:"+s3+";");
String s4=sexinput.getText();
showtext.append("定价:"+s4+";"+"\n");
String s5=collageinput.getText();
showtext.append("作者:"+s5+";");
String s6= majorinput.getText();
showtext.append("出版社:"+s6+";");
String s7=gradeinput.getText();
showtext.append("出版时间:"+s7+";");
String s8=class_input.getText();
showtext.append("ISBN:"+s8+";");
int n1=JOptionPane.showConfirmDialog(this, "是否要真的添加?","确认对话框", JOptionPane.YES_NO_CANCEL_OPTION);
if(n1==JOptionPane.YES_OPTION){
/*this.EXIT_ON_CLOSE;*/
String personInfo=/*"学号:"+*/s1+"\r\n"+/*"姓名:"+*/s2+"\r\n"+/*"年龄:"+*/s3+"\r\n"/*+"性别:"*/+s4+"\r\n"/*+"学院:"*/+s5+"\r\n"+/*"专业:"+*/s6+"\r\n"+/*"年级:"+*/s7+"\r\n"/*+"班级:"*/+s8+"\r\n";/*用户所有信息*/
byte tom1[]=new byte[1000000];
tom1=personInfo.getBytes();
try{
File f=new File("C:\\Book.txt");
try {
f.createNewFile(); // 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
} catch (IOException e2) {
e2.printStackTrace();
}
FileOutputStream out=new FileOutputStream(f,true);
/*out.write(tom);*/
out.write(tom1,0,tom1.length);
/*while((b=in.read(tom,0,10000))!=-1){
String s=new String(tom,0,b);*/
System.out.println(personInfo);
/*}*/
out.close();
/*弹出添加成功的界面*/
JOptionPane.showMessageDialog(this,"添加成功!", "通知对话框",JOptionPane.WARNING_MESSAGE);
userinput.setText(null);
usernuminput.setText(null);
ageinput.setText(null);
sexinput.setText(null);
collageinput.setText(null);
majorinput.setText(null);
gradeinput.setText(null);
class_input.setText(null);
}
catch (IOException ex){
JOptionPane.showMessageDialog(this,"文件写入错误!", "警告对话框",JOptionPane.WARNING_MESSAGE);
/*System.out.println("File write Error"+ex);*/
}
}
}
}
catch(Exception ee){
JOptionPane.showMessageDialog(this,"书编号格式错误!", "警告对话框",JOptionPane.WARNING_MESSAGE);
userinput.setText(null);
userinput.grabFocus();
}
}
}
}
}
AddFrame.java
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class AddFrame extends JFrame implements ActionListener{
static int stucount=0;
JLabel alable;
/*姓名、学号、年龄、性别、学院、专业、年级、班级*/
JLabel userlable;
JLabel usernumber;
JLabel age;
JLabel sex;
JLabel collage;
JLabel major;
JLabel grade;
JLabel class_;
JTextField userinput,usernuminput,ageinput,sexinput,collageinput,majorinput,gradeinput,class_input;
JTextArea showtext;/*用于显示用户添加的信息域 */
JButton ok;
JButton reset;
int flag=0;
public AddFrame(){
init();
setBounds(400,100,600,600);
setVisible(true);
setResizable(false);
/* addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
int n=JOptionPane.showConfirmDialog( this, "是否要真的退出添加?","确认对话框", JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION){
this.EXIT_ON_CLOSE;
System.exit(0);
}
}
});*/
setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
}
void init(){
alable =new JLabel("请填写相关信息:");
userlable=new JLabel("姓名:");
usernumber =new JLabel("学号:");
age=new JLabel("年龄:");
sex=new JLabel("性别:");
collage=new JLabel("学院:");
major=new JLabel("专业:");
grade=new JLabel("年级:");
class_=new JLabel("班级:");
userinput=new JTextField(15);
usernuminput=new JTextField(15);
ageinput=new JTextField(15);
sexinput=new JTextField(15);
collageinput=new JTextField(15);
majorinput=new JTextField(15);
gradeinput=new JTextField(15);
class_input=new JTextField(15);
//设置盒式布局并添加组件
Box baseBox,boxV1,boxV2,boxV3,boxV4;
this.setLayout(new FlowLayout());
boxV1=Box.createVerticalBox();
boxV1.add(alable);
boxV1.add(boxV1.createVerticalStrut(30));
boxV1.add(userlable);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(usernumber);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(age);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(sex);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(collage);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add( major);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(grade);
boxV1.add(boxV1.createVerticalStrut(15));
boxV1.add(class_);
boxV2=Box.createVerticalBox();
/*boxV2.createVerticalStrut(10);*/
boxV2.add(boxV2.createVerticalStrut(45));
boxV2.add(userinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(usernuminput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(ageinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(sexinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(collageinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(majorinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add( gradeinput);
boxV2.add(boxV2.createVerticalStrut(11));
boxV2.add(class_input);
boxV3=Box.createHorizontalBox();
boxV3.add(boxV1);
boxV3.add(boxV2);
boxV4=Box.createHorizontalBox();
ok=new JButton("确定");
reset=new JButton("取消");
ok.addActionListener(this);
reset.addActionListener(this);
boxV4.add(ok);
boxV4.add(reset);
baseBox=Box.createVerticalBox();
baseBox.add(boxV3);
baseBox.add(baseBox.createVerticalStrut(20));
baseBox.add(boxV4);
showtext=new JTextArea(9,50);/*文本域的一些操作*/
showtext.setText("您新添加的用户信息如下:");
add(new JScrollPane(showtext));
showtext.setLineWrap(true);
/*(showtext.getDocument()).addDocumentListener(this);*/
add(showtext);
this.add(baseBox);
//让输入用户名的文本框获得焦点
userinput.grabFocus();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==reset){
showtext.setText("您新添加的用户信息如下:");
}
else {
/*此时用户已存在了*/
String usernum=usernuminput.getText();
int b;
byte tom[]=new byte[1000000];
File file=new File("C://Student.txt");
try{
FileReader in=new FileReader(file);
展开阅读全文