资源描述
. -面向对象课程设计报告课程设计题目:图书信息管理系统学院:计算机科学与技术学院专业:软件工程班级: 131 *: 1308060130 学生*:易榜宇指导教师:汪健2021年7月12日一、课程设计目的及要求1:课程设计要求面向对象程序设计是一门实践性较强的课程,以实际应用为目的。在课程设计时应注重培养学生的实际操作能力。本课程设计安排了16学时的实验课时,具体要求如下:1. 学习和理解课程设计题目的根本理论和方法;2. 掌握实验的实现步骤和关键技术;3. 准备好实验所需要的资源和文档;4. 上机实现程序,得到通过调试的正确程序。5. 根据实验的要求,完成实验报告的word文档。2:课程设计目的面向对象程序设计是软件工程专业的专业根底课,目的是让学生通过对面向对象程序设计语言例如Java的学习,全面理解和掌握面向对象程序设计的根本思想、根本概念和根本方法。本课程设计是面向对象程序设计课程的后续实践课程。在本课程设计中,将利用JDK1.7/1.8平台和EclipseNetbeans集成开发环境为实践工具,通过上机实践培养学生分析具体问题、利用面向对象语言工具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.javapublic class AddBookFrame e*tends JFrame implements ActionListenerstatic int bookcount=0;JLabel alable;/*、*、年龄、性别、学院、专业、年级、班级*/JLabel userlable;JLabel usernumber;JLabel age;JLabel se*;JLabel collage;JLabel major;JLabel grade;JLabel class_;JTe*tField userinput,usernuminput,ageinput,se*input,collageinput,majorinput,gradeinput,class_input;JTe*tArea showte*t;/*用于显示用户添加的信息域 */utton ok;utton 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.E*IT_ON_CLOSE;System.e*it(0); );*/ setDefaultCloseOperation(this.DISPOSE_ON_CLOSE); void init() alable =new JLabel(请填写相关信息:); userlable=new JLabel(); usernumber =new JLabel(书名:);age=new JLabel(版次:); se*=new JLabel(定价:);collage=new JLabel(); major=new JLabel(:); grade=new JLabel(出版时间:); class_=new JLabel(ISBN:); userinput=new JTe*tField(15); usernuminput=new JTe*tField(15); ageinput=new JTe*tField(15); se*input=new JTe*tField(15); collageinput=new JTe*tField(15); majorinput=new JTe*tField(15); gradeinput=new JTe*tField(15); class_input=new JTe*tField(15);/设置盒式布局并添加组件Bo* baseBo*,bo*V1,bo*V2,bo*V3,bo*V4;this.setLayout(new FlowLayout();bo*V1=Bo*.createVerticalBo*();bo*V1.add(alable);bo*V1.add(bo*V1.createVerticalStrut(30);bo*V1.add(userlable);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(usernumber);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(age);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(se*);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(collage);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add( major);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(grade);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(class_);bo*V2=Bo*.createVerticalBo*();/*bo*V2.createVerticalStrut(10);*/bo*V2.add(bo*V2.createVerticalStrut(45);bo*V2.add(userinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(usernuminput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(ageinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(se*input);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(collageinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(majorinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add( gradeinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(class_input);bo*V3=Bo*.createHorizontalBo*();bo*V3.add(bo*V1);bo*V3.add(bo*V2);bo*V4=Bo*.createHorizontalBo*();ok=new utton(确定);reset=new utton(取消);ok.addActionListener(this);reset.addActionListener(this);bo*V4.add(ok);bo*V4.add(reset);baseBo*=Bo*.createVerticalBo*();baseBo*.add(bo*V3);baseBo*.add(baseBo*.createVerticalStrut(20);baseBo*.add(bo*V4);showte*t=new JTe*tArea(9,50);/*文本域的一些操作*/showte*t.setTe*t(您新添加的图书信息如下:);add(new JScrollPane(showte*t);showte*t.setLineWrap(true);/*(showte*t.getDocument().addDocumentListener(this);*/add(showte*t);this.add(baseBo*);/让输入用户名的文本框获得焦点userinput.grabFocus(); Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=reset) showte*t.setTe*t(您新添加的图书信息如下:);else if(userinput.getTe*t().isEmpty()|usernuminput.getTe*t().isEmpty()|ageinput.getTe*t().isEmpty()|se*input.getTe*t().isEmpty()|collageinput.getTe*t().isEmpty()|majorinput.getTe*t().isEmpty()|gradeinput.getTe*t().isEmpty()|class_input.getTe*t().isEmpty()JOptionPane.showMessageDialog(this,请把信息填写完整!, 警告对话框,JOptionPane.WARNING_MESSAGE);else/*此时用户已存在了*/String usernum=userinput.getTe*t();int b;byte tom=new byte1000000;File file=new File(C:Book.t*t);tryFileReader in=new FileReader(file);BufferedReader inTwo=new BufferedReader(in);String s=null;int a;while(s=inTwo.readLine()!=null)if(a=s.inde*Of(usernum)!=-1)flag=1;JOptionPane.showMessageDialog(this,图书已经存在!, 警告对话框,JOptionPane.WARNING_MESSAGE);userinput.setTe*t(null);usernuminput.setTe*t(null);ageinput.setTe*t(null);se*input.setTe*t(null);collageinput.setTe*t(null); majorinput.setTe*t(null);gradeinput.setTe*t(null);class_input.setTe*t(null); break; catch(IOE*ception e1)JOptionPane.showMessageDialog(this,文件读取失败!, 警告对话框,JOptionPane.WARNING_MESSAGE);if(flag=0)/*没有重复添加图书的情况*/tryint n=Integer.parseInt(userinput.getTe*t();String date1=gradeinput.getTe*t();/*String date2=majorinput.getTe*t();*/String eL = 0-94-0-10-9-0-30-9;Pattern p = Pattern.pile(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.setTe*t(null);/*majorinput.setTe*t(null);*/ gradeinput.grabFocus();if(flag1=0) bookcount+;/*计数总人数*/String s1=userinput.getTe*t();showte*t.append(n+s1+;);String s2=usernuminput.getTe*t();showte*t.append(书名:+s2+;);String s3=ageinput.getTe*t();showte*t.append(版次:+s3+;);String s4=se*input.getTe*t();showte*t.append(定价:+s4+;+n);String s5=collageinput.getTe*t();showte*t.append(+s5+;);String s6= majorinput.getTe*t();showte*t.append(:+s6+;);String s7=gradeinput.getTe*t();showte*t.append(出版时间:+s7+;);String s8=class_input.getTe*t();showte*t.append(ISBN:+s8+;);int n1=JOptionPane.showConfirmDialog(this, 是否要真的添加.,确认对话框, JOptionPane.YES_NO_CANCEL_OPTION);if(n1=JOptionPane.YES_OPTION)/*this.E*IT_ON_CLOSE;*/String personInfo=/*:+*/s1+rn+/*:+*/s2+rn+/*年龄:+*/s3+rn/*+性别:*/+s4+rn/*+学院:*/+s5+rn+/*专业:+*/s6+rn+/*年级:+*/s7+rn/*+班级:*/+s8+rn;/*用户所有信息*/byte tom1=new byte1000000; tom1=personInfo.getBytes();tryFile f=new File(C:Book.t*t);try f.createNewFile(); / 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创立一个新的空文件 catch (IOE*ception 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);*/*/out.close();/*弹出添加成功的界面*/JOptionPane.showMessageDialog(this,添加成功!, 通知对话框,JOptionPane.WARNING_MESSAGE);userinput.setTe*t(null);usernuminput.setTe*t(null);ageinput.setTe*t(null);se*input.setTe*t(null);collageinput.setTe*t(null); majorinput.setTe*t(null);gradeinput.setTe*t(null);class_input.setTe*t(null);catch (IOE*ception e*)JOptionPane.showMessageDialog(this,文件写入错误!, 警告对话框,JOptionPane.WARNING_MESSAGE); catch(E*ception ee)JOptionPane.showMessageDialog(this,书编号格式错误!, 警告对话框,JOptionPane.WARNING_MESSAGE);userinput.setTe*t(null);userinput.grabFocus(); AddFrame.javapublic class AddFrame e*tends JFrame implements ActionListenerstatic int stucount=0;JLabel alable;/*、*、年龄、性别、学院、专业、年级、班级*/JLabel userlable;JLabel usernumber;JLabel age;JLabel se*;JLabel collage;JLabel major;JLabel grade;JLabel class_;JTe*tField userinput,usernuminput,ageinput,se*input,collageinput,majorinput,gradeinput,class_input;JTe*tArea showte*t;/*用于显示用户添加的信息域 */utton ok;utton 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.E*IT_ON_CLOSE;System.e*it(0); );*/ setDefaultCloseOperation(this.DISPOSE_ON_CLOSE); void init() alable =new JLabel(请填写相关信息:); userlable=new JLabel(*:); usernumber =new JLabel(*:);age=new JLabel(年龄:); se*=new JLabel(性别:);collage=new JLabel(学院:); major=new JLabel(专业:); grade=new JLabel(年级:); class_=new JLabel(班级:); userinput=new JTe*tField(15); usernuminput=new JTe*tField(15); ageinput=new JTe*tField(15); se*input=new JTe*tField(15); collageinput=new JTe*tField(15); majorinput=new JTe*tField(15); gradeinput=new JTe*tField(15); class_input=new JTe*tField(15);/设置盒式布局并添加组件Bo* baseBo*,bo*V1,bo*V2,bo*V3,bo*V4;this.setLayout(new FlowLayout();bo*V1=Bo*.createVerticalBo*();bo*V1.add(alable);bo*V1.add(bo*V1.createVerticalStrut(30);bo*V1.add(userlable);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(usernumber);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(age);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(se*);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(collage);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add( major);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(grade);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(class_);bo*V2=Bo*.createVerticalBo*();/*bo*V2.createVerticalStrut(10);*/bo*V2.add(bo*V2.createVerticalStrut(45);bo*V2.add(userinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(usernuminput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(ageinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(se*input);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(collageinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(majorinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add( gradeinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(class_input);bo*V3=Bo*.createHorizontalBo*();bo*V3.add(bo*V1);bo*V3.add(bo*V2);bo*V4=Bo*.createHorizontalBo*();ok=new utton(确定);reset=new utton(取消);ok.addActionListener(this);reset.addActionListener(this);bo*V4.add(ok);bo*V4.add(reset);baseBo*=Bo*.createVerticalBo*();baseBo*.add(bo*V3);baseBo*.add(baseBo*.createVerticalStrut(20);baseBo*.add(bo*V4);showte*t=new JTe*tArea(9,50);/*文本域的一些操作*/showte*t.setTe*t(您新添加的用户信息如下:);add(new JScrollPane(showte*t);showte*t.setLineWrap(true);/*(showte*t.getDocument().addDocumentListener(this);*/add(showte*t);this.add(baseBo*);/让输入用户名的文本框获得焦点userinput.grabFocus(); Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=reset) showte*t.setTe*t(您新添加的用户信息如下:);else /*此时用户已存在了*/String usernum=usernuminput.getTe*t();int b;byte tom=new byte1000000;File file=new File(C:/Student.t*t);tryFileReader in=new FileReader(file);BufferedReader inTwo=new BufferedReader(in);String s=null;int a;while(s=inTwo.readLine()!=null)if(a=s.inde*Of(usernum)!=-1)flag=1;JOptionPane.showMessageDialog(this,此用户也注册!, ,JOptionPane.WARNING_MESSAGE);/*userinput.setTe*t(null);usernuminput.setTe*t(null);ageinput.setTe*t(null);se*input.setTe*t(null);collageinput.setTe*t(null); majorinput.setTe*t(null);gradeinput.setTe*t(null);class_input.setTe*t(null);*/userinput.grabFocus(); break; catch(IOE*ception e1)JOptionPane.showMessageDialog(this,读取失败!,JOptionPane.WARNING_MESSAGE);if(flag!=1)tryint n=Integer.parseInt(usernuminput.getTe*t();int m=Integer.parseInt(ageinput.getTe*t();if(m100)JOptionPane.showMessageDialog(this,年龄填写不正确!,JOptionPane.WARNING_MESSAGE);ageinput.setTe*t(null);ageinput.grabFocus();String se*=se*input.getTe*t();if(!se*.equals(男)&!se*.equals(女)JOptionPane.showMessageDialog(this,性别填写不正确!,JOptionPane.WARNING_MESSAGE);se*input.setTe*t(null);userinput.grabFocus();if(userinput.getTe*t().isEmpty()|usernuminput.getTe*t().isEmpty()|ageinput.getTe*t().isEmpty()|se*input.getTe*t().isEmpty()|collageinput.getTe*t().isEmpty()|majorinput.getTe*t().isEmpty()|gradeinput.getTe*t().isEmpty()|class_input.getTe*t().isEmpty()JOptionPane.showMessageDialog(this,请把信息填写完整!,JOptionPane.WARNING_MESSAGE);else stucount+;/*计数总人数*/String s1=userinput.getTe*t();showte*t.append(n+用户名:+s1+;);String s2=usernuminput.getTe*t();showte*t.append(*:+s2+;);String s3=ageinput.getTe*t();showte*t.append(年龄:+s3+;);String s4=se*input.getTe*t();showte*t.append(性别:+s4+;+n);String s5=collageinput.getTe*t();showte*t.append(学院:+s5+;);String s6= majorinput.getTe*t();showte*t.append(专业:+s6+;);String s7=gradeinput.getTe*t();showte*t.append(年级:+s7+;);String s8=class_input.getTe*t();showte*t.append(班级:+s8+;);int n1=JOptionPane.showConfirmDialog(this, 是否确定添加 JOptionPane.YES_NO_CANCEL_OPTION);if(n1=JOptionPane.YES_OPTION)/*this.E*IT_ON_CLOSE;*/String personInfo=/*:+*/s2+rn+/*:+*/s1+rn+/*年龄:+*/s3+rn/*+性别:*/+s4+rn/*+学院:*/+s5+rn/*+专业:*/+s6+rn+/*年级:+*/s7+rn/*+班级:*/+s8+rn;/*用户所有信息*/byte tom1=new byte1000000; tom1=personInfo.getBytes();tryFile f=new File(C:Student.t*t);try f.createNewFile(); / 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创立一个新的空文件 catch (IOE*ception 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);*/*/out.close();/*弹出添加成功的界面*/JOptionPane.showMessageDialog(this,添加成功!, 通知对话框,JOptionPane.WARNING_MESSAGE);userinput.setTe*t(null);usernuminput.setTe*t(null);ageinput.setTe*t(null);se*input.setTe*t(null);collageinput.setTe*t(null); majorinput.setTe*t(null);gradeinput.setTe*t(null);class_input.setTe*t(null);catch (IOE*ception e*)JOptionPane.showMessageDialog(this,文件写入错误!, 警告对话框,JOptionPane.WARNING_MESSAGE); catch(E*ception ee)JOptionPane.showMessageDialog(this,*或年龄格式错误!, 警告对话框,JOptionPane.WARNING_MESSAGE);ageinput.setTe*t(null);usernuminput.setTe*t(null);usernuminput.grabFocus();/ AddInforFrame.javapublic class AddInforFrame e*tends JFrame implements ActionListenerstatic int inforcount=0;JLabel alable;/*、*、年龄、性别、学院、专业、年级、班级*/JLabel userlable;JLabel usernumber;JLabel age;JLabel se*;JLabel collage;JLabel major;JTe*tField userinput,usernuminput,ageinput,se*input,collageinput,majorinput;JTe*tArea showte*t;/*用于显示用户添加的信息域 */utton ok;utton reset;int flag=0;int flag1=0; public AddInforFrame() 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.E*IT_ON_CLOSE;System.e*it(0); );*/ setDefaultCloseOperation(this.DISPOSE_ON_CLOSE); void init() alable =new JLabel(请填写相关信息:); userlable=new JLabel(*:); usernumber =new JLabel();age=new JLabel(*:); se*=new JLabel(书名:);collage=new JLabel(借书时间:); major=new JLabel(还书时间:); userinput=new JTe*tField(15); usernuminput=new JTe*tField(15); ageinput=new JTe*tField(15); se*input=new JTe*tField(15); collageinput=new JTe*tField(15); majorinput=new JTe*tField(15);/设置盒式布局并添加组件Bo* baseBo*,bo*V1,bo*V2,bo*V3,bo*V4;this.setLayout(new FlowLayout();bo*V1=Bo*.createVerticalBo*();bo*V1.add(alable);bo*V1.add(bo*V1.createVerticalStrut(30);bo*V1.add(userlable);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(usernumber);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(age);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(se*);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add(collage);bo*V1.add(bo*V1.createVerticalStrut(15);bo*V1.add( major);bo*V2=Bo*.createVerticalBo*();/*bo*V2.createVerticalStrut(10);*/bo*V2.add(bo*V2.createVerticalStrut(45);bo*V2.add(userinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(usernuminput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(ageinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(se*input);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(collageinput);bo*V2.add(bo*V2.createVerticalStrut(11);bo*V2.add(majorinput);bo*V3=Bo*.createHorizontalBo*();bo*V3.add(bo*V1);bo*V3.add(bo*V2);bo*V4=Bo*.createHorizontalBo*();ok=new utton(确定);reset=new utton(取消);ok.addActionListener(this);reset.addActionListener(this);bo*V4.add(ok);bo*V4.add(reset);baseBo*=Bo*.createVerticalBo*();baseBo*.add(bo*V3);baseBo*.add(baseBo*.createVerticalStrut(20);baseBo*.add(bo*V4);showte*t=new JTe*tArea(9,50);/*文本域的一些操作*/showte*t.setTe*t(您新添加的借阅信息如下:);add(new JScrollPane(showte*t);showte*t.setLineWrap(true);/*(showte*t.getDocument().addDocumentListener(this);*/add(showte*t);this.add(baseBo*);/让输入用户名的文本框获得焦点userinput.grabFocus(); Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()
展开阅读全文