基于java的图书管理系统源代码

合集下载

图书管理系统数据库源代码

图书管理系统数据库源代码

图书管理系统数据库源代码//创建工程及设计主界面public class Main extends JFrame{private static final JDesktopPane{DESKTOP_PANE=new JDesktopPane(); //桌面窗体}public static void main(String[] args) //入口方法{try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //设置系统界面外观new BookLogin(); //登录窗口}catch(Exception ex){ex.printStackTrace();}}public static void addIFame(JInternalFrame iframe) //添加子窗体的方法{DESKTOP_PANE.add(iframe); //新增子窗体}public Main(){super(); //设置“关闭”按钮处理事件setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //创建工具栏Toolkit tool=Toolkit,getDefaultToolkit(); //获得屏幕大小Dimension screenSize=tool.getScreenSize();setSize(800,600); //设置窗体大小setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2; //设置窗体位置setTitle("图书管理系统");//设置窗体标题JMenuBar menuBar=createMenu(); //创建菜单栏setJMenuBar(menuBar); //设置菜单栏JToolBar toolBar=createToolBar(); //创建工具栏的方法getContentPane(),add(toolBar,BorderLayout.NORTH); //设置工具栏final JLable lable=new JLable(); //创建一个标签,用来显示图片lable.setBounds(0,0,0,0); //设置窗体的大小和位置lable.setIcon(null); //窗体背景DESKTOP_PANE.addComponentListener(new ComponentAdapter()){public void componentResized(final ComponentEvent e){Dimension size=e.getComponent().getSize(); //获得组建大小lable.setSize(e.getComponent().getSize()); //设置标签大小lable.setText("<html><imgwidth="+size.width+"height="+size.height+"src='"+this.getClass().getResource("/bac kImg.jpg")+"'></html>");//设置标签文本,设置窗口背景}} //将标签添加到桌面窗体DESKTOP_PANE.add(lable,new Integer(Integer.MIN_V ALUE));getContentPane().add(DESKTOP_PANE); //将桌面窗体添加到主窗体中}}private JToolBar createToolBar() //创建工具栏的方法{JToolBar toolBar=new JToolBar(); //初始化工具栏toolBar.setFloatable(false); //设置是否可以移动工具栏toolBar.setBorder(new BevelBorder(BevelBorder.RAIZED)); //设置边框//图书信息添加按钮JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);ImageIcon icon=new ImageIcon(Main.class.getResource("/bookAddtb.jpg")); //添加菜单栏图标bookAddButton.setIcon(icon); //设置按钮图标bookAddButton.setHideActionText(true); //显示提示文本toolBar.add(bookAddButton); //添加到工具栏中JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY); //图书信息修改按钮ImageIcon bookmodiicon=Icon.add("bookModiAndDeltb.jpg"); //创建图表方法bookModiAndDelButton.setIcon(bookmodiicon); //设置按钮图标bookModiAndDelButton.setHideActionText(true); //显示提示文本toolBar.add(bookModiAndDelButton); //添加到工具栏JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD); //图书类别添加按钮ImageIcon bookTypeAddicon=Icon.add("bookTypeAddtb.jpg"); //创建图标方法bookTypeAddButton.setIcon(bookTypeAddicon); //设置按钮图标bookTypeAddButton.setHideActionText(true); //显示提示文本toolBar.add(bookTypeAddButton); //添加到工具栏JButton bookBorrowButton=new JButton(MenuActions.BORROW); //图书借阅按钮ImageIcon bookBorrowicon=Icon.add("bookBorrowtb.jpg"); //创建图标方法bookBorrowButton.setIcon(bookBorrowicon); //设置按钮图标bookBorrowButton.setHideActionText(true); //显示提示文本toolBar.add(bookBorrowButton); //添加到工具栏JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER); //新书订购按钮ImageIcon bookOrdericon=Icon.add("bookOrdertb.jpg"); //创建图标方法bookOrderButton.setIcon(bookOrdericon); //设置按钮图标bookOrderButton.setHideActionText(true); //显示提示文本toolBar.add(bookOrderButton); //添加到工具栏JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK); //验收新书按钮ImageIcon bookCheckicon=Icon.add("newbookChecktb.jpg"); //创建图标方法bookCheckButton.setIcon(bookCheckicon); //设置按钮图标bookCheckButton.setHideActionText(true); //显示提示文本toolBar.add(bookCheckButton); //添加到工具栏JButton readerAddButton=new JButton(MenuActions.READER_ADD); //读者信息添加按钮ImageIcon readerAddicon=Icon.add("readerAddtb.jpg"); //创建图标方法readerAddButton.setIcon(readerAddicon); //设置按钮图标readerAddButton.setHideActionText(true); //显示提示文本toolBar.add(readerAddButton); //添加到工具栏JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY); //读者信息修改按钮ImageIcon readerModiAndDelicon=Icon.add("readerModiAndDeltb.jpg"); //创建图标方法readerModiAndDelButton.setIcon(readerModiAndDelicon); //设置按钮图标readerModiAndDelButton.setHideActionText(true); //显示提示文本toolBar.add(readerModiAndDelButton); //添加到工具栏JButton ExitButton=new JButton(MenuActions.EXIT); //退出系统按钮ImageIcon Exiticon=Icon.add("exittb.jpg"); //创建图标方法ExitButton.setIcon(Exiticon); //设置按钮图标ExitButton.setHideActionText(true); //显示提示文本toolBar.add(ExitButton); //添加到工具栏return toolBar;}public class Business{protected static String dbClassName="com.mysql.jdbc.Driver"; //数据库驱动类protected static String dbUr1="jdbc:mysql://localhost/ts"; //连接URLprotected static String dbUser="root"; //数据库用户名protected static String dbpwd="root"; //数据库密码private static Connection conn=null; //数据库连接对象,初值为null public Business(){try{if(coon==null) //连接对象为空{Class.forName(dbClassName); //加载驱动类信息conn=DriverManager.getConnection(dbUr1,dbUser,dbPwd); //建立连接对象}}catch(Exception ee){ee.printStackTrace();}}public static ResultSet executeQuery(String sql) //执行查询方法{try{//如果连接对象为空,则重新调用构造方法if (conn==null){new Business();returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_ UPDATABLE).executeQuery(sql);//执行查询}}catch(SQLException e){e.printStackTrace();return null; //返回null值}finally{}}public static int executeUpdata(String sql) //更新方法{try{if(conn==null){new Business(); //如果连接对象为空,则重新调用构造方法return conn.createStatement().executeUpdate(sql); //执行更新}}catch(SQLException e){e.printStackTrace();return -1;}finally{}}public static void close() //关闭方法try{conn.close(); //关闭连接对象}catch(SQLException e){e.printStackTrace();}finally{conn=null; //设置连接对象为null值}}}//为数据库添加对应的类public class BookInfo{private String Book_id; //图书编号private String typeid; //类别编号private String writer; //作者private String translator; //译者private String publisher; //出版社private Date date; //出版日期private Double price; //图书单价private String getBookname; //图书名称public String getBookname(){return bookname;}public void setBookname(String bookname){this.bookname=bookname;}public Date getDate(){return date;}public void setDate(Date date){this.date=date;}public string getBook_id()return Book_id;}public void setBook_id(String Book_id) {this.Book_id=Book_id;}public Double getPrice(){return price;}public void setprice(Double price){this.price=price;}public String getPublisher(){return Publisher;}public void setPublisher(String publisher) {this.Publisher=Publisher;}public String getTranslator(){return translator;}public void setTranslator(String translator) {this.translator=translator;}public String getTypeid(){return typeid;}public void setTypeid(String typeid){this.typeid=typeid;}public String getWriter(){return writer;}public void setWriter(String writer)this.writer=writer;}}public class BookType //图书列表信息类{private String id; //图书类别编号private String typeName; //图书类别名称private String days; //可解天数private String fk; //每罚款金额public String getFk(){return fk;}public void setFk(String fk){this.fk=fk;}public String getDays(){return days;}public void setDays(String days){this.days=days;}public string getId(){return id;}public void setId(String id){this.Bid=id;}public String getTypeName(){return typeName;}public void setTypeName(String typeName){this.typeName=typeName;}}public class Order //图书订单信息类{private String Book_id; //图书编号private Date date; //下单时间private String number; //图书数量private String operator; //操作员private String checkAndAccept; //是否收到货private String zk; //图书折扣public String getcheckAndAccept(){return checkAndAccept;}public void setcheckAndAccept(String checkAndAccept) {this.checkAndAccept=checkAndAccept;}public Date getDate(){return date;}public void setDate(Date date){this.date=date;}public string getBook_id(){return book_id;}public void setBook_id(String book_id){this.book_id=book_id;}public String getNumber(){return number;}public void setNumber(String number){this.number=number;}public String getOperator(){return operator;}public void setOperator(String operator){this.operatorr=operator;}public String getZk(){return zk;}public void setZk(String Zk){this.zk=zk;}}public class Operater{private String id; //操作员编号private String name; //操作员用户名private String grade; //操作员等级private String password; //操作员密码private String type; //出版社public String getType(){return type;}public void setType(String type){this.type=type;}public string getGrade(){return grade;}public void setGrade(String grade){this.grade=grade;}public String getId(){return id;}public void setId(String id){this.id=id;}public String getName()return name;}public void setName(String name){=name;}public String getPassword(){return password;}public void setPassword(String password){this.password=password;}}public class Borrow //书籍借阅信息类{private int id; //借阅编号private String book_id; //图书编号private String reader_id; //读者编号private String num; //借书数量private String borrowDate; //借书日期private String backDate; //应还日期private String Bookname; //图书名称public String getBookname(){return bookname;}public void setBookname(String bookname){this.bookname=bookname;}public string getBackDate(){return backDate;}public void setBackDate(String backDate){this.backDate=backDate;}public string getBorrowDate(){return borrowDate;public void setBorrowDate(String borrowDate){this.borrowDate=borrowDate;}public String getNum(){return num;}public void setNum(String num){this.num=num;}public String getBook_id(){return book_id;}public void setBook_id(String book_id){this.book_id=book_id;}public String getReader_id(){return reader_id;}public void setReader_id(String reader_id){this.reader_id=reader_id;}public int getId(){return id;}public void setId(Int id){this.id=id;}}public class Back //图书归还信息类{private String book_id; //图书编号private String bookname; //图书名称private String operatorId; //操作员编号private String borrowDate; //图书借阅时间private String backDate; //图书归还时间private String readerName; //读者姓名private String reader_id; //读者编号private int typeId;private int id;public int getId(){return id;}public void setId(int id){this.id=id;}public int getTypeId(){return typeid;}public void setTypeId(int typeid){this.typeId=typeId;}public string getBackDate(){return backDate;}public void setBackDate(String backDate) {this.backDate=backDate;}public String getBookname(){return bookname;}public void setBookname(String bookname) {this.bookname=bookname;}public string getBorrowDate(){return borrowDate;}public void setBorrowDate(String borrowDate) {this.borrowDate=borrowDate;}public String getOperatorId(){return operatorId;}public void setOperatorId(String operatorId){this.operatorId=operatorId;}public String getBook_id(){return book_id;}public void setBook_id(String book_id){this.book_id=book_id;}public String getReader_id(){return reader_id;}public void setReader_id(String reader_id){this.reader_id=reader_id;}public String getReaderName(){return readerName;}public void setReaderName(String readerName){this.readerName=readerName;}}//系统登录模块设计public class BookLogin extends JFrame{private static final Operater Type=null; //人员类型private static Operater user; //用户名private JPasswordField password;private JTextField username;private JButton login;private JButton reset;public BookLogin(){super();final BorderLayout borderLayout=new BorderLayout(); //创建布局管理器setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置“关闭”按钮处理事件borderLayout.setVgap(10); //设置组件间的垂直关系getContentPane().setLayout(borderLayout); //使用布局管理器setTitle("图书管理系统登录") //设置窗体标题Toolkit tool=Toolkit.getDefaultToolkit(); //获得默认的工具箱Dimension screenSize=tool.getScreenSize(); //获得屏幕的大小setSize(285,194);setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2); //设置窗体位置final JPanel mainPanel=new JPanel(); //创建主面板mainPanel.setLayout(new BorderLayout()); //设置边框布局mainPanel.setBorder(new EmptyBorder(0,0,0,0)) //设置边框为0getContentPane().add(mainPanel); //在窗体中加入主面板final JLabel imageLabel=new JLabel; //创建一个标签,用来显示图片ImageIcon loginIcon=Icon.add("login.jpg"); //创建一个图像图标imagelabel.setIcon(loginIcon); //设置图片imageLabel.setOpaque(true); //设置绘制其边界内的所有像素imageLabel.setBackground(Color.GREEN); //设置背景颜色imageLabel.setpreferredSize(new Dimension(260,60)); //设置标签大小mainPanel.add(imageLabel,BorderLayout.NORTH); //添加标签到主面板final JPanel centerPanel=new JPanel(); //添加一个中心面板final GridLayout gridLayout=new GridLayout(2,2); //创建网络布局管理器gridLayout.setHgap(5); //设置组件之间平行的距离gridLayout.setVgap(20); //设置组件之间垂直的距离centerPanel.setLayout(gridLayout); //使用布局管理器mainPanel.add(centerPanel); //添加到主桌面final JLabel userNamelabel=new JLabel(); //创建一个标签userNameLabel.setHorizontalAlignment(SwingConstants.CENTER); //设置对齐方式userNameLabel.setPreferredSize(new Dimension(0,0)); //设置组件大小userNameLabel.setMinimumSize(new Dimension(0,0)); //设置组件最小的大小centerPanel.add(userNameLabel); //添加到中心面板userNameLabel.setText("用户名:"); //设置标签文本username=new JTextField(20); //创建文本框username.setPreferredSize(new Dimension(0,0)); //设置组件大小centerPanel.add(username); //添加到中心面板final JLabel passwordLabel=new JLabel(); //创建一个标签passwordLabel.setHorizontalAlignment(SwingConstants.CENTER); //设置对齐方式centerPanel.add(passwordLabel); //添加到中心面板passwordLabel.setText("密码:"); //设置标签文本password=new JPasswordField(20); //创建密码框password.setDocument(new Document(6)); //设置密码长度为6password.addKeyListener(new KeyAdapter() //监听密码框{public void keyPressed(final keyEvent e) //监听键盘案件事件{if(e.getKeyCode()==10) //如果按了回车键{login.doClick(); //进行登录}}})centerPanel.add(password); //添加到中心面板final JPanel southPanel=new JPanel; //新增一个底部面板mainPanel.add(southPanel,BorderLayout.SOUTH); //添加到主面板中login=new JButton(); //创建按钮组件login.addActionListener(new BookLoginAtion()); //添加监听器login.setText("登录"); //设置按钮文本southPanel.add(login); //把按钮添加到底部面板reset=new JButton(); //创建按钮组件reset.addActionListener(new BookResetAction()); //添加监听器reset.setText("重置");//设置按钮文本southPanel.add(reset); //把按钮添加到底部面板setVisible(true); //设置创建可见setResizable(false); //设置窗体不可改变大小}public static Operater getUser(){return user;}public static Operater getType(){return Type;}public static void setUser(Operater user){er=user;}}private class BookResetAction implements ActionListener{public void actionPerformed(final ActionEvent e){username.setText(""); //设置用户名输入框为空password.setText(""); //设置密码输入框为空}}private class BookLoginAction implements ActionListener{public void actionPerformed(final ActionEvent e){user=Business.check(username.getText(),newString(password.getPassword())); //调用business方法if(user.getName()!=null) //判断用户名是否为null{try{Main frame=new Main(); //创建一个主窗体frame.setVisible(true); //设置其可见BookLogin.this.setVisible(false); //设置登录窗体为不显示}catch(Exception ex){ex.printStackTrace();}}else{JOptionPane.showMessageDialog(null,"请输入正确的用户名和密码!"); //弹出提示框username.setText(""); //设置用户名输入框为空password.setText(""); //设置密码输入框为空}}}//基本信息管理模块public class ReaderAdd extends JInternalFrame //添加读者信息{public ReaderAdd(){super();setTitle("读者相关信息添加");setIconifiable(true); //设置窗体可最小化setClosable(true); //设置窗体可关闭setBounds(100,100,500,350);final JLabel logoLabel=new JLabel();ImageIcon readerAddIcon=Icon.add("readerAdd.jpg");logoLabel.setIcon(readerAddIcon);logoLabel.setOpaque(true);logoLabel.setBackground(Color.CYAN);logoLabel.setPreferredSize(new Dimension(400,60));getContentPane().add(logoLabel,BorderLayout.NORTH);final JPanel panel=new JPanel();panel.setLayout(new FlowLayout());getContentPane().add(panel);final JPanel panel_1=new JPanel();final GridLayout gridLayout=new GridLayout(0,4);gridLayout.setVgap(15);gridLayout.setHgap(15);panel_1.setLayout(gridLayout);panel_1.setPreferredSize(new Dimension(450,200));panel.add(panel_1);final JLabel label_2=new JLabel();label_2.setText("姓名:");panel_1.add(label_2);readername=new JTextField();readername.setDocument(new Document(10));panel_1.add(readername);final JLabel label_3=new JLabel();public void actionPerformed(final ActionEvent e){Check validator=new Check(); //校验类String zj=String.valueof(comboBox.getSelectedIndex());String id=read_id.getText().trim();Vector v1=new Vector();v1.clear();v1.add("reader"); //读取配置文件中相应的查询语句v1.add(id);if(l==validator.Validate(V1)) //检查是否存在该读者{JOptionPane.showMessageDialog(null,"添加失败,该读者编号已存在!");}else{Inti=Business.InsertReader(readername.getText().trim(),sex.trim(),age.getText().trim(),zj number.getText().trim(),Date.valueOf(date.getText().trim()),maxnumber.getText().trim().tel.getText().trim (),Double.valueof(keepmoney.getText().trim()),zj,zy.getText().trim(),Date.valueOf(bztime.getText().trim()),read_id.getText().tri m());if(i==1){JOptionPane.showMessageDialog(null,"添加成功!");doDefaultCloseAction();}}}}class TelListener extends KeyAdapter{public void keyTyped(KeyEvent e){String numStr="0123456789-"+(char)8; //类型转换if(numStr.indexOf(e.getKeyChar())<0){e.consume();}}}//添加“关闭”按钮的事件监听器class CloseActionListener implements ActionListener{public void actionPerformed(final ActionEvent e){doDefaultCloseAction();}}private String[] columnNames("名称","性别","年龄","证件号码","借书证有效日期","借书量","电话","押金","证件","职业","读者编号","办证时间");private String[] array=new String[]{"身份证","军人证","学生证"};String id;private Object[][] getFileStates(List list){Object[][]results=new Object[list.size()][columnNames.length];for(int i=0;i<list.size();i++){Reader reader=(Reader)list.get(i);result[i][0]=reader.getName(); //定义二维数组String sex;if(reader.getSex().equals("1")){sex="男";}else{sex="女";}results[i][1]=sex; //读取读者歌属性值results[i][2]=reader.getAge();results[i][3]=reader.getIdentityCard();results[i][4]=reader.getDate();results[i][5]=reader.getMaxNum();results[i][6]=reader.getTel();results[i][7]=reader.getKeepMoney();results[i][8]=array[reader.getZj()];results[i][9]=reader.getZy();results[i][10]=reader.getBook_id();results[i][11]=reader.getBZtime();}return results;}//图书类别管理//添加图书信息utton.addActionListener(new ActionListener(){public void actionPerformed(final ActionEvent e){if(bookTypeName.getText().length()==0){JOptionPane.showMMessageDialog(null,"图书类别文本框不可为空");return;}if(days.getText().length()==0){JOptionPane.showMessageDialog(null,"可借天数文本框不可为空");return;}if(!check.isNumeric(days.getText().trim())){JOptionPane.showMessageDialog(null,"可借天数必须为数字");return;}if(fakuan.getText().length()==0){JOptionPane.showMessageDialog(null,"罚款文本框不可为空");return;}if(!check.isNumeric(fakuan.getText().trim())){JOptionPane.showMessageDialog(null,"罚款必须为数字");return;}inti=Business.InsertBookType(bookTypeName.getText().trim(),days.getText().trim(),Do uble.valueof(fakuan.getText.trim())/10);if(i==1){JOptionPane.showMessageDialog(null,"添加成功!");doDefaultCloseAction();}}});panel_6.add(button);final JButton buttonDel=new JButton();buttonDel.setText("关闭");buttonDel.addActionListener(new ActionListener(){public void actionPerformed(final ActionEvent e){doDefaultCloseAction();}});panel_6.add(buttonDel);setVisibel(true);}//修改图书类class ButtonAddListener implements ActionListener{public void actionPerformed(ActionEvent e){Object selectedItem=bookTypeModel.getSelectedItem();inti=Business.UpdatebookType(BookTypeId.getText().trim(),selectedItem.toString(),day s.getText().trim(),fk.getText().trim());if(i==1){JOptionPane.showMessageDialog(null,"修改成功");object[][] results=getFileStates(Business.selectBookCategory());model.setDataVector(results.columnNames);table.setModel(model);}}}。

图书管理系统程序源代码

图书管理系统程序源代码

源程序1.主窗体Private Sub add_back_Click()frmbackbookinfo.ShowEnd SubPrivate Sub add_binf_Click()frmaddbookinfo.ShowEnd SubPrivate Sub add_book_style_Click()frmaddbookstyle。

ShowEnd SubPrivate Sub add_manager_Click()frmadduser.ShowEnd SubPrivate Sub add_rinf_Click() frmaddreaderinfo.ShowEnd SubPrivate Sub add_rstyle_Click()frmaddreaderstyle.ShowEnd SubPrivate Sub change_binf_Click() frmmodifybookinfo。

ShowEnd SubPrivate Sub change_book_style_Click()frmmodifybookstyle。

ShowEnd SubPrivate Sub delete_binf_Click()frmmodifybookinfo。

ShowEnd SubPrivate Sub delete_book_style_Click()frmmodifybookstyle.ShowEnd SubPrivate Sub delete_rstyle_Click()frmmodifyreaderstyle。

ShowEnd SubPrivate Sub exit_Click()EndEnd SubPrivate Sub find_binf_Click()frmfindbook。

ShowEnd SubPrivate Sub find_lend_Click()frmfindborrowinfo。

ShowEnd SubPrivate Sub find_rinf_Click()frmfindreader.ShowEnd SubPrivate Sub password_Click()frmchangepwd。

基于Java的图书管理系统的设计与实现

基于Java的图书管理系统的设计与实现

基于Java的图书管理系统的设计与实现一、引言图书管理系统是一个用于管理图书信息的软件系统,它可以帮助图书馆或书店高效地管理图书的借阅、归还、查询等操作。

本文将介绍基于Java语言开发的图书管理系统的设计与实现过程,包括系统架构设计、功能模块划分、技术选型等方面。

二、系统架构设计1. 概述图书管理系统主要包括前台用户界面、后台管理界面和数据库三个部分。

前台用户界面用于读者进行图书查询、借阅等操作,后台管理界面用于管理员对图书信息进行管理,数据库用于存储图书信息。

2. 架构设计采用MVC(Model-View-Controller)架构模式,将系统分为模型层、视图层和控制层。

模型层负责数据的存取操作,视图层负责展示数据给用户,控制层负责接收用户输入并调用相应的模型进行处理。

三、功能模块划分1. 用户模块用户注册:读者可以通过注册账号来使用系统。

用户登录:已注册用户可以通过账号密码登录系统。

用户信息管理:用户可以查看和修改个人信息。

2. 图书管理模块图书查询:用户可以根据关键字搜索图书信息。

图书借阅:用户可以借阅所需图书。

图书归还:用户可以归还已借阅的图书。

3. 管理员模块管理员登录:管理员通过账号密码登录后台管理系统。

图书添加:管理员可以添加新的图书信息。

图书删除:管理员可以删除不需要的图书信息。

四、技术选型1. 后端技术Java语言:作为主要开发语言,具有跨平台性和稳定性。

Spring框架:提供了依赖注入和面向切面编程等功能。

MyBatis框架:用于数据库操作,提供了方便的ORM映射功能。

2. 前端技术HTML/CSS/JavaScript:用于前端页面的布局和交互效果。

Bootstrap框架:提供了响应式布局和丰富的UI组件。

3. 数据库MySQL数据库:作为数据存储介质,支持高并发和事务处理。

五、系统实现步骤搭建开发环境:安装JDK、Eclipse/IntelliJ IDEA等开发工具。

创建项目结构:按照MVC架构设计创建相应的包和类。

(完整word版)图书管理系统源代码

(完整word版)图书管理系统源代码

图书管理系统源代码(一)程序代码1。

主窗口界面import java.awt。

*;import java.awt。

event.*;import javax。

swing.*;import javax.swing.border.TitledBorder;import java.awt。

Font;import javax.swing。

JMenu;public class MainWindow extends JFrame implements ActionListener { private static final long serialVersionUID = 1L;static String loginName;static String loginNo;JLabel mlabel;JPanel jp=new JPanel();//建立菜单栏JMenu a=new JMenu();JMenu b=new JMenu();JMenu c=new JMenu();//建立系统管理菜单组JMenuItem aa=new JMenuItem();JMenuItem ab=new JMenuItem();JMenuItem ac=new JMenuItem();//建立读者管理菜单组JMenuItem bb=new JMenuItem();//建立书籍管理菜单组JMenuItem ca=new JMenuItem();JMenuItem cb=new JMenuItem();JMenuItem cc=new JMenuItem();JMenuItem cd=new JMenuItem();public MainWindow(){super(”图书管理系统");addWindowListener(new WindowAdapter(){System.exit(0);}});Container d=getContentPane();this。

基于java的图书馆管理系统毕业设计(含源文件)

基于java的图书馆管理系统毕业设计(含源文件)

毕业论文题目:图书馆集成系统目录前言第一章绪论第一节设计初衷第二节设计任务第三节 JAVA介绍第四节编程运行环境第五节系统简介第二章系统实现第一节系统设计流程第二节系统实现过程第三章结束语第四章附注谢辞参考文献毕业论文_____图书馆集成管理系统前言随着电脑技术的发展以及电脑网络的逐渐普及,英特网成为人们查找信息的重要场所。

二十一世纪是信息的时代,所以信息的交换和信息流通显的特别重要。

因此、图书馆使用电脑来管理成为必然。

第二章绪论第一节设计初衷第二节设计任务第三节 JAVA介绍JAVA是INTERNET开发的一个强大的工具,它是一个C++的简化版本。

JAVA是一门"简单的、面向对象的、强类型的、编译型的、结构无关的、多线程(multi-threaded)的、垃圾自动收集的、健壮的、安全的、可扩展的语言。

本系统使用的是美国微软公司的MICROSOFT VISUAL J++6.0。

MICROSOFT VISUAL J++6.0是用于JAVA编程的WINDOWS集成环境。

在Visual J++中,用户可以创建、修改、编译、运行、调试和封装应用程序,所有这些操作都在单一的环境中进行。

介绍Java的Windows基础类〔WFC〕,这个新的应用程序框架访问Microsoft Windows API,允许用户用Java编成语言编写全特性的Winndows应用程序。

WFC 也包装在中执行的动态HTML 对象模型,这就让用户能够动态地操作在客户和服务器两者上的HTML。

用户可以很方便地在Visual J++内访问数据。

通过添加WFC 数据控件在Forms Designer中的窗体上,可以快速配置数据检索和显示的方式。

Visual J++通过ActiveX Data Object(ADO, ActiveX数据对象)控件来访问数据,这是用于WFC应用程序的数据编程模块。

ADO对象的内核包含Connection(连接)、Command 〔命令〕和Recordset〔记录集〕对象,利用它们,可以连接到数据库和检索记录集。

java实训报告--图书管理系统

java实训报告--图书管理系统

java实训报告--图书管理系统一、项目介绍本项目是一个基于Java的图书管理系统,主要包括图书类别管理、图书信息管理、读者信息管理以及借阅和归还管理等模块。

实现了对图书馆资源的有效管理,提高了图书馆工作效率,满足了读者的需求。

二、需求分析1.用户权限分级实现用户登陆验证,分为管理员和普通用户两类,管理员有图书信息、读者信息、借阅还书和系统管理四种权限,普通用户只有查询和借还书的权限。

2.图书管理管理员可以对图书进行分类管理、添加书目、查看书目、修改和删除图书信息等操作。

3.读者管理管理员可以对读者进行添加、查看、修改和删除读者信息等操作。

普通用户只能查询自己的借书信息和还书日期。

4.借阅还书管理管理员可以对图书的借阅还书进行处理和管理,包括借书和还书操作,超期处理以及还书日期提醒等。

5.系统管理管理员可以对图书馆系统进行管理,包括用户管理、修改密码等操作。

三、设计实现1.数据库设计采用MySQL数据库进行数据存储,主要包括用户表、图书分类表、图书信息表、读者信息表、借阅信息表等。

2.界面设计采用Swing框架实现界面设计,UI界面简洁美观,与用户交互友好。

3.代码实现代码主要采用Java语言实现,采用MVC模式,将业务和UI 进行分离,提高了灵活性和可维护性。

四、实现效果本系统实现了对图书馆资源的有效管理,对管理员可以方便地进行操作,对普通用户可以快速方便地查询和借阅图书。

五、总结通过该项目的实现,使我深入学习了Java语言的面向对象编程、MVC模式、MySQL数据库的使用、Swing界面设计等技术,并深刻体会到了软件开发的需求分析、系统设计、编码实现、测试等基本流程。

同时,也感受到了信息化技术在实际工作中所带来的效率和便捷。

学校图书馆管理系统(java)

学校图书馆管理系统(java)

图书管理系统〔java〕本系统将会涉及到图书馆日常管理工作的根本常见细节,诸如新图书的入库登记,图书馆所有书籍的分类管理,图书的查询,图书的借阅、退还手续的登记,费旧图书的清理撤除等,本系统所要实现的这些功能根本上涵盖了图书馆的日常管理工作,根本能够满足校园图书馆的工作人员的管理需要。

在对本系统的具体开发过程当中,将采用Java语言进展开发,以Access实现后台数据库,本系统是完全基于图形化用户界面(GUI)的单机版本。

【关键字】信息化软件工程软件生命周期图形化用户界面AbstractThe full name of our System is: The Management Information System of Campus’s Library. At present, the computer technology is developing ever-growing, and the campus’s information construction also have pushing on, by contrast, the method of management in many university library is still by man, the library’workers must face to the large number of books, and also face to fall into the trouble. Actually, the work can be done by the computer which have a management information system. Then the heavy work will not be done by people, the library’workers can use computer to manage the books, and the everyday work will be easy.This is the goal which our system want to achieve finally.The principle of development to our system will be following with Software Engineering, we use the traditional model which be called Waterfall, and the course of development will be divided into six stage. We will develop the system in sequence.Our system contains many operations about library’s everyday work, such as Register New Books, Classify Books according to their subjects, Find Books, Dispose old books, and so on, our system can finish all of the work, and can meet the requirements of the library’sworkers.During the development of our system, we use the tool of JAVA to develop it, our system is on the basis of the Access Database.【KeyWords】Management Information System, Software Engineering, Ja目录一引论1〔一〕问题的定义1〔二〕可行性分析1〔1〕技术可行性1〔2〕经济可行性2二需求分析3数据库需求分析3〔1〕数据流图3〔2〕数据库逻辑构造设计4〔3〕数据库概念构造设计5 三系统设计6〔一〕总体设计6〔二〕详细设计6〔1〕各个模块的介绍6〔2〕流程图7〔3〕数据字典7〔4〕代码实现8四总结13五致谢14六参考文献14一引论〔一〕问题的定义首先,图书馆的管理直接关系到我们大学生如何更好的使用图书,更充分的利用现有资源学习,提高自身素质。

图书管理系统程序代码

图书管理系统程序代码

#include<fstream〉#include<iostream〉#include<stdlib.h〉#include〈ctime〉#include<cmath>#include〈termios.h〉#include <sstream〉#include<string。

h〉#include<assert.h〉//改变字体颜色#define NONE "\033[m"#define RED "\033[0;32;31m”#define GREEN ”\033[0;32;32m”#define BLUE "\033[0;32;34m”#define YELLOW ”\033[1;33m”#define LIGHT_RED ”\033[1;31m”#define LIGHT_GREEN "\033[1;32m"#define LIGHT_BLUE "\033[1;34m”/*程序导读:1。

程序中对书的操作,可通过书名,编号来进行,flag=0按书名来操作,flag=1按书编号来操作2.程序中对用户的操作,也可通过姓名,用户ID号或编号两种方式来进行,flag=0按姓名来操作,flag=1按用户ID号或编号来操作3。

本程序分5个部分,具体已标识如(1)图书管理。

.*/using namespace std;class Book{public:string book_name;string book_num;//编号string book_pre;//出版社string book_aut;//作者int book_con;//这样的书还有几本int book_mux;//这样的书总共有几本public:Book(){book_con=0;book_mux=0;}void show_book();};/****************************************(1)图书管理*******************************************/void Book::show_book(){cout<〈"书名:”<〈book_name<〈endl;cout〈〈”出版社:"〈<book_pre〈〈endl;cout<<”此书的作者:"〈<book_aut〈<endl;cout〈<”ISBN编号:”<〈book_num<〈endl;cout<<"此书共有"〈<book_mux<<”本”〈〈endl;cout<<”还有"<<book_con〈〈”本书未借出!"〈<endl;}class BookNode{public:Book book;BookNode *next;};BookNode *headbook=NULL;class BookManage{public:int totolbook;public:BookManage(){totolbook=0;}void addbook();void delbook(string s,int num,int flag);void findbook(string s,int flag);//查询图书};void BookManage::addbook(){string h;cout〈〈"添加输入0,退出输入—1"<〈endl;cin>>h;if(h==”-1”)return;else if(h=="0”)while(1){if(h==”-1”)break;else if(h==”0”){string na,nu,p1,aut;int con;BookNode *p=new BookNode;cout<<”请输入书名:"〈〈endl;cin〉>na;p—〉book.book_name=na;cout<〈"请输入ISBN编号:”<<endl;cin>〉nu;p->book。

图书馆管理系统(JavaWeb)

图书馆管理系统(JavaWeb)

图书馆管理系统(JavaWeb)图书馆管理系统(Java Web)概述基于Spring + Spring MVC + MyBatis的图书馆管理系统,使⽤Maven进⾏包管理。

主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还⽇志记录等。

项⽬演⽰<——点击跳转<——点击跳转<——点击跳转<——点击跳转环境配置需要提前配置好Maven环境,数据库为MySql,在src/main/resources/db.properties中修改MySql⽤户名和密码。

数据库脚本在library.sql中,可⾃动建库。

使⽤mvn jetty:run可快速搭建。

特别注意:如果要搭⼊服务器中使⽤,⽤tomcat跑需要将项⽬打包⼊tomcat中的root⽂件夹使⽤,因为项⽬设计时,⽤的jetty,所有jsp⽂件路径写的都是相对路径。

概念设计⽤户分为两类:读者、图书馆管理员。

图书馆管理员可以修改读者信息,修改书⽬信息,查看所有借还⽇志等;读者仅可以修改个⼈信息、借阅或归还书籍和查看⾃⼰的借还⽇志。

数据库E-R图逻辑设计共有6个表:1. 图书书⽬表book_info名类型长度⼩数点NULL⽤途键book_id bigint200否图书号✔name varchar200否书名author varchar150否作者publish varchar200否出版社ISBN varchar150否标准书号introduction text00是简介language varchar40否语⾔price decimal102否价格pub_date date00否出版时间class_id int110是分类号number int110是剩余数量2. 数据库管理员表admin名类型长度⼩数点NULL⽤途键admin_id bigint200否账号✔password varchar150否密码username varchar150是⽤户名3. 图书分类表class_info名类型长度⼩数点NULL⽤途键class_id int110否类别号✔class_name varchar150否类别名4. 借阅信息表lend_list名类型长度⼩数点NULL⽤途键ser_num bigint200否流⽔号✔book_id bigint200否图书号reader_id bigint200否读者证号lend_date date00是借出⽇期back_date date00是归还⽇期5. 借阅卡信息表reader_card名类型长度⼩数点NULL⽤途键reader_id bigint200否读者证号✔password varchar150否密码username varchar150是⽤户名6. 读者信息表reader_info名类型长度⼩数点NULL⽤途键reader_id bigint200否读者证号✔name varchar100否姓名sex varchar20否性别birth date00否⽣⽇address varchar500否地址phone varchar150否电话功能展⽰1. ⾸页登陆管理者账号:123456/123456(见数据库admin表)读者账号:10000/123456()见数据库reader_card表2. 管理员系统⽤登陆进⼊2.1 图书管理2.2 图书详情2.3 读者管理2.4 借还管理3. 读者系统3.1 查看全部图书3.2 个⼈信息查看,可以修个个⼈信息3.3 个⼈借阅情况查看。

javase综合案例

javase综合案例

javase综合案例综合案例:图书管理系统一、引言图书管理系统是一种用于管理与存储图书信息的软件系统。

该系统可以实现对图书的借阅、归还、续借、借阅记录查询等功能,方便图书馆管理人员进行图书管理工作。

本文将介绍一个基于JavaSE的图书管理系统的设计与实现。

二、需求分析1. 系统应具备管理员和读者两种角色,管理员可以进行图书管理操作,读者可以进行借阅和归还操作。

2. 系统应提供图书的添加、删除、修改和查询功能,管理员可通过图书的书名、作者等信息快速检索图书。

3. 系统应提供读者的注册、注销和查询功能,读者可以通过借阅号和密码登录系统。

4. 系统应记录借阅记录,包括借阅日期、归还日期和借阅状态等信息。

5. 系统应提供图书的借阅、归还和续借功能,借阅时应检查图书库存和读者的借书上限。

6. 系统应提供借阅记录的查询功能,管理员可按照读者或图书进行查询。

7. 系统应具备良好的用户界面,方便操作和使用。

三、系统设计根据需求分析,系统的核心功能包括图书管理、读者管理和借阅管理。

因此,可以设计三个核心类:Book、Reader和BorrowRecord。

1. Book类Book类用于存储图书信息,包括书名、作者、出版社、出版日期、图书编号和库存数量等属性。

该类还提供图书的添加、删除和修改方法,以及根据书名、作者等信息进行查询的方法。

2. Reader类Reader类用于存储读者信息,包括借阅号、姓名、性别、年龄和借书上限等属性。

该类还提供读者的注册、注销和查询方法,以及读者登录系统的方法。

3. BorrowRecord类BorrowRecord类用于存储借阅记录,包括借阅日期、归还日期、借阅状态、借阅图书和借阅读者等属性。

该类还提供借书、还书和续借的方法,以及查询借阅记录的方法。

四、系统实现根据系统设计,可以编写相关的Java类文件来实现图书管理系统。

以下是部分代码示例:Book.java:```javapublic class Book {private String name;private String author;private String publisher;private String publicationDate;private int stock;// 构造方法// 添加图书public void addBook() {// 添加图书逻辑}// 删除图书public void deleteBook() {// 删除图书逻辑}// 修改图书public void modifyBook() {// 修改图书逻辑}// 根据书名和作者查询图书public void searchBook(String name, String author) { // 查询图书逻辑}}Reader.java:```javapublic class Reader {private String name;private String gender;private int age;private int borrowLimit;// 构造方法// 注册读者public void register() {// 注册逻辑}// 注销读者public void cancel() {// 注销逻辑}// 查询读者信息public void searchReader() {// 查询读者逻辑}// 读者登录public void login(String borrowId, String password) { // 登录逻辑}}BorrowRecord.java:```javapublic class BorrowRecord {private Date borrowDate;private Date returnDate;private boolean borrowStatus;private Book book;private Reader reader;// 构造方法// 借书public void borrow(Book book, Reader reader) {// 借书逻辑}// 还书public void returnBook(Book book, Reader reader) { // 还书逻辑}// 续借public void renew(Book book, Reader reader) {// 续借逻辑}// 查询借阅记录public void searchRecord(Book book, Reader reader) { // 查询记录逻辑}}```以上仅为图书管理系统的基本功能和类的设计示例,实际开发中还需进一步完善和优化。

图书管理系统源码(java实现)

图书管理系统源码(java实现)

【图书管理系统】【MainPro包】1.系统登录页面public class Login extends Frame {private static final long serialVersionUID = -1758475247807861408L;TextField text_user;TextField text_pass;public Login() {1 this.setTitle("登录");this.setLayout(null);//默认流式布局this.setSize(260, 170);/* 定义标签与文本框*/Label lbUser = new Label("用户名:");text_user = new TextField();Label lbPass = new Label("密码:");text_pass = new TextField();Button btn_ok = new Button("确定");Button btn_cancel = new Button("取消");lbUser.setBounds(40, 53, 60, 20);//x,y,width,heightlbPass.setBounds(40, 83, 60, 20);text_user.setBounds(100, 50, 120, 20);text_pass.setBounds(100, 80, 120, 20);btn_ok.setBounds(45, 120, 80, 25); // 确定按钮btn_cancel.setBounds(135, 120, 80, 25); // 取消按钮/* 添加标签与文本框*/add(lbUser);add(lbPass);add(text_user);add(text_pass);add(btn_ok);add(btn_cancel);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置this.setVisible(true); // 使窗体可见btn_ok.addActionListener((new ActionListener() {public void actionPerformed(ActionEvent e) {btn_okActionPerformed(e);//自定义确定按钮触发的实施过程}}));btn_cancel.addActionListener((new ActionListener() {public void actionPerformed(ActionEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}}));this.addWindowListener(new WindowAdapter() {/* 关闭窗口*/// 重写windowClosing()方法public void windowClosing(WindowEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);} }); }public void btn_okActionPerformed(ActionEvent e) {String user = text_user.getText();String pass = text_pass.getText();String is_admin;// 如果用户名或密码任一为空,则终止后续操作if (user.equals("")||pass.equals("")) {JOptionPane.showMessageDialog(null, "用户名或密码不能为空!");return;}try {// 核对用户名和密码String sql = "select * from user where username=" + "'" + user + "' and password=" + "'" + pass + "'";ResultSet rs = DbOp.executeQuery(sql);// 如果此用户存在,则记录其状态(否:不是管理员,是:是管理员)if (rs.next()) {is_admin = rs.getString("is_admin");} else {JOptionPane.showMessageDialog(null, "用户名或密码不正确!");return;}GlobalVar.login_user = user; // 记录登录的用户名ShowMain show = new ShowMain(); // 调用主程序// 只有管理员才能使用"基础管理"和"借阅管理"菜单show.setRights(is_admin);// 释放窗体及其全部组件的屏幕资源,即使释放登录窗体dispose(); // 释放当前窗体} catch (SQLException e1) {JOptionPane.showMessageDialog(null, "用户数据库有误!");}}}2.系统首页页面public class ShowMain extends Frame {private static final long serialVersionUID = 5003296786441785470L;MenuBar menuBar;Menu jcwh, jcwh_book, jcwh_reader;//基础维护:图书维护、读者维护Menu jywh, cxgl, xtgl;//借阅维护、查询管理、系统管理MenuItemjcwh_book_add,jcwh_book_update,jcwh_book_delete,jcwh_reader_add,jcwh_reader_update,jcwh_reader_delete;MenuItem jywh_borrow, jywh_back;MenuItem cxgl_book, cxgl_reader;MenuItem xtgl_update_pass, xtgl_exit;public void setRights(String rights) {// 如果不是管理员,则禁止用户维护图书信息和读者信息以及禁止进行借阅管理,即只能查询if (rights.equals("否")) {jywh.setEnabled(false);jcwh.setEnabled(false);}}public ShowMain() {setTitle("图书管理系统");setLayout(new BorderLayout());setSize(640, 480);menuBar = new MenuBar();jcwh = new Menu("基础维护");// 基础维护菜单jcwh_book = new Menu("图书维护");// 图书维护菜单jcwh_book_add = new MenuItem("添加");// 添加图书菜单jcwh_book_update = new MenuItem("修改");// 修改图书菜单jcwh_book_delete = new MenuItem("删除");// 删除图书菜单jcwh_reader = new Menu("读者维护");// 读者维护菜单jcwh_reader_add = new MenuItem("添加读者");// 添加读者菜单jcwh_reader_update = new MenuItem("修改读者");jcwh_reader_delete = new MenuItem("删除读者");jywh = new Menu("借阅管理");jywh_borrow = new MenuItem("借书管理");jywh_back = new MenuItem("还书管理");cxgl = new Menu("查询管理");cxgl_book = new MenuItem("图书查询");cxgl_reader = new MenuItem("读者查询");xtgl = new Menu("系统管理");xtgl_update_pass = new MenuItem("修改密码");xtgl_exit = new MenuItem("退出系统");// 添加图书菜单jcwh_book.add(jcwh_book_add);jcwh_book.add(jcwh_book_update);jcwh_book.add(jcwh_book_delete);jcwh.add(jcwh_book);jcwh_reader.add(jcwh_reader_add);jcwh_reader.add(jcwh_reader_update);jcwh_reader.add(jcwh_reader_delete);jcwh.add(jcwh_reader);jywh.add(jywh_borrow);jywh.add(jywh_back);cxgl.add(cxgl_book);cxgl.add(cxgl_reader);xtgl.add(xtgl_update_pass);xtgl.add(xtgl_exit);menuBar.add(jcwh);menuBar.add(jywh);menuBar.add(cxgl);menuBar.add(xtgl);setMenuBar(menuBar);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见jcwh_book_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("save");} });jcwh_book_update.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("update");} });jcwh_book_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("delete");} });jcwh_reader_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("save");} });jcwh_reader_update.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("update");} });jcwh_reader_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("delete");} });jywh_borrow.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Borrow();} });jywh_back.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Back();} });cxgl_book.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookQuery();} });cxgl_reader.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderQuery();} });xtgl_update_pass.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new UpdatePassword();} });xtgl_exit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}});this.addWindowListener(new WindowAdapter() {/* 关闭窗口*/// 重写windowClosing()方法public void windowClosing(WindowEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}});}}3.图书管理public class BookManeger extends JFrame {private static final long serialVersionUID = 377287301994613384L;private Label lbbookid_c = new Label("图书编号");private TextField tf_bookid_c = new TextField();private Label lbbookid = new Label("图书编号");private TextField tf_bookid = new TextField();private Label lbbookname = new Label("图书名称");private TextField tf_bookname = new TextField();private Label lbbooktype = new Label("图书类别");private Choice tf_booktype = new Choice();private Label lbauthor = new Label("作者");private TextField tf_author = new TextField();private Label lbtranslator = new Label("译者");private TextField tf_translator = new TextField();private Label lbpublisher = new Label("出版社");private TextField tf_publisher = new TextField();private Label lbpublish_time = new Label("出版时间");private TextField tf_publish_time = new TextField();private Label lbprice = new Label("定价");private TextField tf_price = new TextField();private Label lbstock = new Label("库存数量");private TextField tf_stock = new TextField();private Button queryBtn = new Button("查询");private Button saveBtn = new Button("保存");private Button closeBtn = new Button("关闭");private String optionStr;BookManeger(String str) {optionStr = str;ggFrame(optionStr);saveBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid);map.put("bookname", tf_bookname);map.put("booktype", tf_booktype);map.put("author", tf_author);map.put("translator", tf_translator);map.put("publisher", tf_publisher);map.put("publish_time", tf_publish_time);map.put("price", tf_price);map.put("stock", tf_stock);int i ;if(optionStr.equals("delete")){i = Jcwh.btn_delActionPerformed(e, map);}else{i = Jcwh.btn_saveActionPerformed(e, map,optionStr);}if (i == 1) {String showInfo = "";if(optionStr.equals("save")){showInfo = "图书添加成功!";}else if(optionStr.equals("update")){showInfo = "图书修改成功!";}else if(optionStr.equals("delete")){showInfo = "图书删除成功!";}JOptionPane.showMessageDialog(null, showInfo);// 清空全部文本框clearAllTextfield();}}});closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); // 释放当前窗体}});/* 关闭窗口*/this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { // 关闭当前窗口dispose(); // 释放当前窗体}});}private void ggFrame(String str) {setLayout(null);setSize(500, 320);lbbookid.setBounds(50, 40, 50, 20); // 图书编号tf_bookid.setBounds(110, 40, 100, 20);lbbookname.setBounds(240, 40, 50, 20); // 图书名称tf_bookname.setBounds(300, 40, 100, 20);lbbooktype.setBounds(50, 80, 50, 20); // 图书类别tf_booktype.setBounds(110, 80, 100, 20);tf_booktype.add("科技");tf_booktype.add("文学");tf_booktype.add("社科");tf_booktype.add("其他");lbauthor.setBounds(240, 80, 50, 20); // 作者tf_author.setBounds(300, 80, 100, 20);lbtranslator.setBounds(50, 120, 50, 20); // 设置译者tf_translator.setBounds(110, 120, 100, 20);lbpublisher.setBounds(240, 120, 50, 20); // 出版社tf_publisher.setBounds(300, 120, 100, 20);lbpublish_time.setBounds(50, 160, 50, 20); // 出版时间tf_publish_time.setBounds(110, 160, 100, 20);lbprice.setBounds(240, 160, 50, 20); // 定价tf_price.setBounds(300, 160, 100, 20);lbstock.setBounds(50, 200, 50, 20); // 库存数量tf_stock.setBounds(110, 200, 100, 20);saveBtn.setBounds(150, 240, 80, 25); // 保存按钮closeBtn.setBounds(280, 240, 80, 25);// 关闭按钮if(str.equals("save")){setTitle("添加图书");}else if(str.equals("update")){setTitle("修改图书");lbbookid_c.setBounds(100, 10, 50, 20); // 图书编号tf_bookid_c.setBounds(160, 10, 100, 20);tf_bookid.setEditable(false);//修改的图书信息中id不可以修改queryBtn.setBounds(280, 10, 80, 20); // 查询按钮add(lbbookid_c);add(tf_bookid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid_c);Book book = (Book)Jcwh.btn_queryActionPerformed(e,map).get("book");if(book!=null){tf_bookid.setText(book.getId());tf_bookname.setText(book.getBookname());// 将Choice的选定项设置为其名称等于指定字符串的项tf_booktype.select(book.getBooktype());tf_author.setText(book.getAuthor());tf_translator.setText(book.getTranslator());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf(book.getPrice()));tf_stock.setText(String.valueOf(book.getStock()));}}});saveBtn.setLabel("修改");//将按钮显示文字修改成“修改”}else if(str.equals("delete")){setTitle("删除图书");lbbookid_c.setBounds(100, 10, 50, 20); // 图书编号tf_bookid_c.setBounds(160, 10, 100, 20);tf_bookid.setEditable(false);//修改的图书信息中id不可以修改queryBtn.setBounds(280, 10, 80, 20); // 查询按钮add(lbbookid_c);add(tf_bookid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid_c);Book book = (Book)Jcwh.btn_queryActionPerformed(e,map).get("book");if(book!=null){tf_bookid.setText(book.getId());tf_bookname.setText(book.getBookname());// 将Choice的选定项设置为其名称等于指定字符串的项tf_booktype.select(book.getBooktype());tf_author.setText(book.getAuthor());tf_translator.setText(book.getTranslator());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf(book.getPrice()));tf_stock.setText(String.valueOf(book.getStock()));}}});saveBtn.setLabel("删除");//将按钮显示文字修改成“删除”}add(lbbookid);add(tf_bookid);add(lbbookname);add(tf_bookname);add(lbbooktype);add(tf_booktype);add(lbauthor);add(tf_author);add(lbtranslator);add(tf_translator);add(lbpublisher);add(tf_publisher);add(lbpublish_time);add(tf_publish_time);add(lbprice);add(tf_price);add(lbstock);add(tf_stock);add(saveBtn);add(closeBtn);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见}private void clearAllTextfield() {tf_bookid.setText("");tf_bookname.setText("");tf_author.setText("");tf_translator.setText("");tf_publisher.setText("");tf_publish_time.setText("");tf_price.setText("");tf_stock.setText("");}}4.读者管理public class ReaderManeger extends JFrame {private static final long serialVersionUID = -2399939451497711745L;Label lbreaderid_c = new Label("读者编号");TextField tf_readerid_c = new TextField();Label lbreaderid = new Label("读者编号");TextField tf_readerid = new TextField();Label lbreadername = new Label("读者姓名");TextField tf_readername = new TextField();Label lbreadertype = new Label("读者类别");Choice tf_readertype = new Choice();Label lbsex = new Label("性别");Choice tf_sex = new Choice();Label lbmax_num = new Label("可借数量");TextField tf_max_num = new TextField();Label lbdays_num = new Label("可借天数");TextField tf_days_num = new TextField();Button queryBtn = new Button("查询");Button saveBtn = new Button("保存");Button closeBtn = new Button("关闭");private String optionStr;//保存、修改、删除ReaderManeger(String str){optionStr = str;ggFrame(optionStr);saveBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid);map.put("readername", tf_readername);map.put("readertype", tf_readertype);map.put("sex", tf_sex);map.put("days_num", tf_days_num);map.put("max_num", tf_max_num);int i ;if(optionStr.equals("delete")){i = Jcwh.btn_delReaderActionPerformed(e, map);}else{i = Jcwh.btn_saveReaderActionPerformed(e,map,optionStr);}if (i == 1) {String showInfo = "";if(optionStr.equals("save")){showInfo = "读者添加成功!";}else if(optionStr.equals("update")){showInfo = "读者修改成功!";}else if(optionStr.equals("delete")){showInfo = "读者删除成功!";}JOptionPane.showMessageDialog(null, showInfo);// 清空全部文本框clearAllTextfield();}}});closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); // 释放当前窗体}});this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { // 关闭当前窗口dispose(); // 释放当前窗体}});}private void ggFrame(String str) {setLayout(null);setTitle("添加读者信息");setSize(500, 230);lbreaderid.setBounds(50, 50, 50, 20);tf_readerid.setBounds(110, 50, 100, 20);lbreadername.setBounds(240, 50, 50, 20);tf_readername.setBounds(300, 50, 100, 20);lbreadertype.setBounds(50, 80, 50, 20);tf_readertype.setBounds(110, 80, 100, 20);tf_readertype.add("教师");tf_readertype.add("学生");tf_readertype.add("职工");lbsex.setBounds(240, 80, 50, 20);tf_sex.setBounds(300, 80, 100, 20);tf_sex.add("男");tf_sex.add("女");lbmax_num.setBounds(50, 110, 50, 20);tf_max_num.setBounds(110, 110, 100, 20);lbdays_num.setBounds(240, 110, 50, 20);tf_days_num.setBounds(300, 110, 100, 20);saveBtn.setBounds(150, 150, 80, 25);closeBtn.setBounds(280, 150, 80, 25);if(str.equals("save")){setTitle("添加读者");}else if(str.equals("update")){setTitle("修改读者");lbreaderid_c.setBounds(100, 10, 50, 20);tf_readerid_c.setBounds(160, 10, 100, 20);tf_readerid.setEditable(false);queryBtn.setBounds(280, 10, 80, 20);add(lbreaderid_c);add(tf_readerid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid_c);Reader reader = (Reader)Jcwh.btn_queryReaderActionPerformed(e,map).get("reader");if(reader!=null){tf_readerid.setText(reader.getId());tf_readername.setText(reader.getReadername());tf_readertype.select(reader.getReadertype());tf_sex.select(reader.getSex());tf_days_num.setText(String.valueOf(reader.getDays_num()));tf_max_num.setText(String.valueOf(reader.getMax_num()));}}});saveBtn.setLabel("修改");//将按钮显示文字修改成“修改”}else if(str.equals("delete")){setTitle("删除图书");lbreaderid_c.setBounds(100, 10, 50, 20);tf_readerid_c.setBounds(160, 10, 100, 20);tf_readerid.setEditable(false);queryBtn.setBounds(280, 10, 80, 20);add(lbreaderid_c);add(tf_readerid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid_c);Reader reader = (Reader)Jcwh.btn_queryReaderActionPerformed(e,map).get("reader");if(reader!=null){tf_readerid.setText(reader.getId());tf_readername.setText(reader.getReadername());tf_readertype.select(reader.getReadertype());tf_sex.select(reader.getSex());tf_days_num.setText(String.valueOf(reader.getDays_num()));tf_max_num.setText(String.valueOf(reader.getMax_num()));}}});saveBtn.setLabel("删除");//将按钮显示文字修改成“删除”}add(lbreaderid);add(lbreadername);add(lbreadertype);add(lbsex);add(lbmax_num);add(lbdays_num);add(tf_readerid);add(tf_readername);add(tf_max_num);add(tf_days_num);add(tf_readertype);add(tf_sex);add(saveBtn);add(closeBtn);setLocationRelativeTo(null);setVisible(true);}private void clearAllTextfield() {tf_readerid.setText("");tf_readername.setText("");tf_max_num.setText("");tf_days_num.setText("");}public static void main(String[] args) {ReaderManeger r = new ReaderManeger("update");}}5.借书public class Borrow extends Frame {private static final long serialVersionUID = -1036076990599464079L;String SepLine = "-------------------------------------------------";Label lbbookid = new Label("图书编号");Label lbreaderid = new Label("读者编号");TextField tf_bookid = new TextField();TextField tf_readerid = new TextField();Button queryBtn = new Button("查询");Label lbbookinfo = new Label(SepLine + "图书信息" + SepLine); Label lbbookname = new Label("图书名称:");Label tf_bookname = new Label("xx");Label lbauthor = new Label("作者:");Label tf_author = new Label("xx");Label lbpublisher = new Label("出版社:");Label tf_publisher = new Label("xx");Label lbpublish_time = new Label("出版时间:");Label tf_publish_time = new Label("xx");Label lbprice = new Label("定价:");Label tf_price = new Label("xx");Label lbstock = new Label("库存数量:");Label tf_stock = new Label("xx");Label lbreaderinfo = new Label(SepLine + "读者信息" + SepLine); Label lbreadername = new Label("读者姓名:");Label tf_readername = new Label("xx");Label lbreadertype = new Label("读者类型:");Label tf_readertype = new Label("xx");Label lbmax_num = new Label("最大可借数:");Label tf_max_num = new Label("xx");Label lbdays_num = new Label("最大可借天数:");Label tf_days_num = new Label("xx");Label lbborrowinfo = new Label(SepLine + "借阅信息" + SepLine); Label lbborrowednum = new Label("该读者已借图书数量:"); Label tf_borrowednum = new Label("xx");Label lbif_borrow = new Label("该读者是否可借所选图书:"); Label tf_if_borrow = new Label("xx");Label lbborrow_date = new Label("借阅日期:");Label tf_borrow_date = new Label("xx");Button borrowBtn = new Button("借出");Button closeBtn = new Button("关闭");public Borrow() {setLayout(null);setTitle("借阅图书");setSize(500, 420);this.setForeground(Color.BLACK); // 设置前景色为黑色lbbookid.setBounds(30, 40, 50, 25); // 图书编号tf_bookid.setBounds(90, 40, 90, 20);lbreaderid.setBounds(200, 40, 50, 25); // 读者编号tf_readerid.setBounds(260, 40, 90, 20);queryBtn.setBounds(370, 40, 80, 25); // 查询按钮lbbookinfo.setBounds(30, 70, 440, 25); // 图书信息提示条lbbookname.setBounds(30, 100, 60, 25); // 图书名称tf_bookname.setBounds(90, 100, 200, 25);lbauthor.setBounds(310, 100, 60, 25); // 作者tf_author.setBounds(370, 100, 90, 25);lbpublisher.setBounds(30, 125, 60, 25); // 出版社tf_publisher.setBounds(90, 125, 200, 25);lbpublish_time.setBounds(310, 125, 60, 25); // 出版时间tf_publish_time.setBounds(370, 125, 90, 25);lbprice.setBounds(30, 150, 60, 25); // 定价tf_price.setBounds(90, 150, 200, 25);lbstock.setBounds(310, 150, 60, 25); // 库存数量tf_stock.setBounds(370, 150, 90, 25);lbreaderinfo.setBounds(30, 180, 440, 25); // 读者信息提示条lbreadername.setBounds(30, 205, 60, 25); // 读者姓名tf_readername.setBounds(90, 205, 90, 25);lbreadertype.setBounds(310, 205, 60, 25); // 读者类型tf_readertype.setBounds(370, 205, 90, 25);lbmax_num.setBounds(30, 230, 75, 25); // 最大可借数tf_max_num.setBounds(105, 230, 90, 25);lbdays_num.setBounds(310, 230, 85, 25); // 最大可借天数tf_days_num.setBounds(395, 230, 70, 25);lbborrowinfo.setBounds(30, 260, 440, 25); // 借阅信息提示条lbborrowednum.setBounds(30, 285, 120, 25);// 已借图书数量tf_borrowednum.setBounds(150, 285, 50, 25);lbif_borrow.setBounds(30, 310, 145, 25); // 是否可借tf_if_borrow.setBounds(175, 310, 50, 25);lbborrow_date.setBounds(30, 335, 60, 25);// 借书日期tf_borrow_date.setBounds(90, 335, 100, 25);borrowBtn.setBounds(160, 365, 80, 25);// 借出按钮borrowBtn.setEnabled(false); // 开始时禁用借出按钮closeBtn.setBounds(260, 365, 80, 25);// 关闭按钮queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { btn_querywActionPerformed(e); } }); borrowBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { btn_borrowActionPerformed(e); } });closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { setForeground(Color.BLACK); dispose(); } }); this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setForeground(Color.BLACK); // 设置前景色为黑色dispose(); // 关闭窗体}});add(lbbookid);add(lbreaderid);add(queryBtn);add(lbbookinfo);add(lbbookname);add(lbauthor);add(lbpublisher);add(lbpublish_time);add(lbprice);add(lbstock);add(lbreaderinfo);add(lbreadername);add(lbreadertype);add(lbmax_num);add(lbdays_num);add(lbborrowinfo);add(lbborrowednum);add(lbif_borrow);add(lbborrow_date);add(borrowBtn);add(closeBtn);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见setForeground(Color.RED); // 设置前景色为红色add(tf_bookid);add(tf_readerid);add(tf_bookname);add(tf_author);add(tf_publisher);add(tf_publish_time);add(tf_price);add(tf_stock);add(tf_readername);add(tf_readertype);add(tf_max_num);add(tf_days_num);add(tf_borrowednum);add(tf_if_borrow);add(tf_borrow_date);}// 图书和读者查询private void btn_querywActionPerformed(ActionEvent e) {String bookid = tf_bookid.getText();String readerid = tf_readerid.getText();// 如果图书编号或读者编号两者均为空,或者有一个为空,则返回if (bookid.equals("") || readerid.equals("")) {JOptionPane.showMessageDialog(null, "图书编号和读者编号均不能为空!");init(); // 重新初始化各参数并禁止借出按钮return;}// 按编号查询图书,结果存入book对象中Book book = BookSelect.SelectBookById(bookid);if (book != null) { // 如果查询到结果,将其显示在各文本框中tf_bookname.setText(book.getBookname());tf_author.setText(book.getAuthor());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf((book.getPrice())));tf_stock.setText(String.valueOf(book.getStock()));} else {JOptionPane.showMessageDialog(null, "图书编号有误,查无此书!");init(); // 重新初始化各参数并禁止借出按钮return;}if (book.getStock() == 0) {JOptionPane.showMessageDialog(null, "图书已无库存,无法借阅!");init(); // 重新初始化各参数并禁止借出按钮return;}// 按编号查询读者,结果存入reader对象中Reader reader = ReaderSelect.selectReaderById(readerid);// 如果查询到结果,将其显示在各文本框中if (reader != null) {tf_readername.setText(reader.getReadername());tf_readertype.setText(reader.getReadertype());tf_max_num.setText(String.valueOf(reader.getMax_num()));tf_days_num.setText(String.valueOf(reader.getDays_num()));} else {JOptionPane.showMessageDialog(null, "读者编号有误,查无此人!");init(); // 重新初始化各参数并禁止借出按钮return;}// 查询指定读者是否已借过指定图书且未归还if (IfBorrowBack.findbook(bookid, readerid)) {JOptionPane.showMessageDialog(null, "该读者已借阅所选图书,且未归还!");init(); // 重新初始化各参数并禁止借出按钮return;}// 统计读者所借图书数量int borrowednum = statborrowednum(readerid);tf_borrowednum.setText(String.valueOf(borrowednum));// 如果读者已借图书尚未超出其允许最大借书量,则允许其继续借阅所选图书if (borrowednum < reader.getMax_num()) {tf_if_borrow.setText("是");// 创建一个简单日期格式对象,注意:MM一定要用大写SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 创建日期变量,其内容为当前日期Date currentdate = new Date();// 将日期按指定格式输出String borrowdate = sdf.format(currentdate);tf_borrow_date.setText(borrowdate);borrowBtn.setEnabled(true); // 使借出按钮有效} else {JOptionPane.showMessageDialog(null, "该读者借书过多,无法继续借阅!");init(); // 重新初始化各参数并禁止借出按钮return;}}// 填写借出图书记录private void btn_borrowActionPerformed(ActionEvent e) {String sql;String bookid = tf_bookid.getText();String readerid = tf_readerid.getText();String borrowdate = tf_borrow_date.getText();// 为borrow表增加借书记录sql = "insert into borrow (book_id,reader_id,"+ "borrow_date,if_back) values('" + bookid + "','" + readerid + "','" + borrowdate + "','否')";。

java+swing+mysql图书管理系统(附完整源代码)

java+swing+mysql图书管理系统(附完整源代码)

课程设计精品图书If理系统书生系统说明:本系统釆用eclipse开发,IDEA, eclipse, myedipse均可运行界面采用swing实现数据库:mysql.附sql代码,其余数据库可复制sql代码运行数据库连接文件mysql-connector-java-8.0.16.jar本系统的背景图片可根据自己的需求替换项目分为管理员和普通用户两种角色管理员有图书査询、图书借还、账户管理(修改密码、账户信息、借书记录)、图书管理(増加、修改、删除)的权限普通用户有图书査询、图书借还、账户管理(修改密码、借书记录)的权限项目结朴-温图书系饨>,JRE 基绽库(JavaSE-12]IS src y .[« Dao>dZl AdminDao.java>® BookDao.java><2)BorrowDao.java>I/) DB.java>El LandDao.javav SB Test>JZ) LandTest.java击View>ABorrowBookFace.java 通AccountMsgFacejava>i£\ AddBookFace.java>(2 AdminFace.java>Lfi BookAdminFace.java>® BookReturnFace.java>Si BookSearc h Fac e.java>DeleteBookFace.java>JZ) LogonFace.java>Si MainFace.java>JZl UBorrowBookFace.java><2)UpdateBookFace.java>UpdatePswFace.java>E) UserFace.java> i引用的阵y 4 datebase圍tsglsys.sql〜〜img。

图书管理系统需求分析报告附有java代码

图书管理系统需求分析报告附有java代码

目录一.概述1。

编写目的2.项目背景3.定义4。

参考资料5。

开发环境二.需求分析1.问题提出2.系统的业务功能分析3.需完成的功能三.系统需求说明1。

对功能的规定2。

对性能的规定3.输入输出要求四.新系统的逻辑模型1.图书馆组织机构分析2。

系统功能结构图3。

业务流程图4。

数据流程图5.数据字典一.概述1、编写目的按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的图书管理系统。

通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容2、项目背景数据处理手工操作,工作量大,出错率高,出错后不易更改。

图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了.造成查询费时、费力.如要对很长时间以前的图书进行更改就更加困难了. 。

a.待开发的软件系统的名称是《图书管理系统》b。

本软件适用于教育界,他是比较完善的系统管理软件,对图书馆的书籍、读者资料、借还书等可以进行方便的管理。

C.开发员:蔚奇秀,曹海花,李小峰,祁乐3、定义数据流程图(DFD):为描述软件系统中的信息流提供了一个图形方法。

箭头代表数据流,方框代表数据的源点或终点,圆框代表数据流的交换,双杠代表数据存储的地方.数据字典是对数据流程图中的数据,变换等进行精确的定义。

4、参考资料1.萨师煊、王珊《数据库系统概论》高等教育出版社2000。

22.俞盘祥、沈金发《数据库系统原理》清华大学出版社2000。

63.王珊、陈红《数据库系统原理教程》清华大学出版社1998。

74.施伯乐、丁宝康《数据库系统教程》高等教育出版社1999.125、开发环境WindowXP,/7 Microsoft Visual C++, SQLSerevr2000.一、需求分析1、问题的提出:图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。

图书借阅管理系统java代码

图书借阅管理系统java代码

以我给的标题写原创文档,最低1200字,要求以Markdown文本格式输出,不要带图片和AI、人工智能、Markdown、GPT等关键词,标题为:图书借阅管理系统java代码# 图书借阅管理系统Java代码## 一、介绍图书借阅管理系统是一个帮助图书馆管理图书借阅情况的系统。

本系统基于Java开发,采用面向对象的编程方式,实现了对图书信息、借阅记录等数据的管理与处理。

用户可以通过该系统查询图书信息、借阅图书、归还图书,并实现了管理员对系统的管理功能。

## 二、功能模块### 1. 图书管理模块- 实现对图书信息的添加、删除、修改和查询功能。

- 对图书的分类管理,方便用户按照分类查找图书信息。

### 2. 用户管理模块- 用户注册与登录功能,保证用户数据的安全。

- 用户查询借阅情况、借阅历史等个人信息。

### 3. 借阅管理模块- 实现图书的借阅功能,包括借书日期、归还日期等信息的记录。

- 用户借阅超时提醒,确保图书及时归还。

### 4. 管理员模块- 管理员登录后可以对图书信息、用户信息进行管理。

- 实现图书归还、逾期处理等功能。

## 三、系统架构本系统采用MVC(Model-View-Controller)架构,实现了模型层、视图层、控制层之间的分离,提高了系统的灵活性和可维护性。

具体架构如下:1. Model层:负责处理数据的逻辑操作,包括对图书信息、用户信息、借阅记录等数据的管理。

2. View层:负责系统的界面展示,包括用户界面和管理员界面。

3. Controller层:负责处理用户请求,调用Model层的方法,并将结果返回给View层进行展示。

## 四、代码示例以下是借阅图书的Java代码示例:```javapublic class BorrowBook {private Book book;private User user;private Date borrowDate;private Date returnDate;// Constructorpublic BorrowBook(Book book, User user, Date borrowDate, Date returnDate) {this.book = book;er = user;this.borrowDate = borrowDate;this.returnDate = returnDate;}// Getters and setters}```以上代码实现了一个借阅图书的类`BorrowBook`,包含了借阅的图书信息、用户信息,借阅时间和归还时间。

Java 图书馆管理系统(附全代码)_课程设计报告之欧阳地创编

Java 图书馆管理系统(附全代码)_课程设计报告之欧阳地创编

《数据库系统概论》课程报告课题名称:小型图书管理系统课题负责人名(学号):best同组成员名单(角色):指导教师:评阅成绩:评阅意见:提交报告时间:12月15日小型图书管理系统计算机科学与技术专业学生指导老师[摘要] 随着计算机技术的飞速发展,利用计算机来获得和处理信息是当今信息管理的一大特点。

伴随计算机硬件的快速发展,有关信息管理的软件——数据库系统软件也在迅猛发展着。

图书馆是高等院校的重要组成部门,是教师和学生获取知识的重要场所。

由于图书馆主要从事大量的图书资料的储存和流通。

所以一直以来,计算机在图书馆的图书管理中得到了广泛的应用。

本系统实现图书信息管理的系统化,规范化和自动化,以最大程度提高操作人员的办公效率。

关键词:JAVA、JDBC、SQL Server、数据库、图书馆管理一、实验题目:小型图书管理系统二、实验的目的和要求:完成一个小型图书管理系统,功能要求如下:1)能够通过书籍基本信息(包括:书号、书名、出版社、出版日期、作者、内容摘要)单个或以AND方式组合多个条件查询书籍信息;2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量3)可增添新的书籍4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)5)可修改书籍的基本信息6)能够通过读者基本信息(包括:证号、姓名、性别、系名、年级)单个或以AND方式组合多个条件查询读者信息7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期8)可增添新的读者9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)10)可修改读者的基本信息11)可完成借还书籍的手续12)还书时如超期,应该显示超期天数13)借书时如果有超期的书没有还,则不允许借书14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息三、实验的环境:1、硬件环境:CPU:Intel(R) Core i53230 2.60GHzRAM:8GB2、软件环境:操作系统:Windows 7 Ultimate SP1编译软件:Eclipse LunaMicrosoft SQL Server四、系统ER图五、表结构定义(使用表格说明)六、系统功能模块1)能够通过书籍基本信息单个或组合多个条件查询书籍信息;2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量3)可增添新的书籍4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)5)可修改书籍的基本信息6)能够通过读者基本信息单个或组合多个条件查询读者信息7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期8)可增添新的读者9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)10)可修改读者的基本信息11)可完成借还书籍的手续12)还书时如超期,应该显示超期天数13)借书时如果有超期的书没有还,则不允许借书14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息七、程序框架流程图九、程序运行结果八、核心代码AddBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassAddBookextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = newJLabel("Book Number:");JLabel bookName = newJLabel("Book Name:");JLabel bookAuthor = newJLabel("Book Author:");JLabel press = newJLabel("Press:");JLabel pressTime = newJLabel("Press time:");JLabel bookAbstract = newJLabel("Abstract:");JLabel storage = newJLabel("Storage:");JLabel remain = newJLabel("Remain");JLabel remain1 = newJLabel("Update with Storage"); JTextFieldnumberField =newJTextField();JTextFieldnameField = newJTextField(); JTextFieldauthorField =newJTextField();JTextFieldpressField =newJTextField(); JTextFieldpressTimeField = newJTextField();JTextFieldabstractField = newJTextField();JTextFieldstorageField = newJTextField();JButton cancel = newJButton("Cancel");JButton confirm = newJButton("Confirm!!");public AddBook() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(9, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(bookName);p1.add(nameField);p1.add(bookAuthor);p1.add(authorField);p1.add(press);p1.add(pressField);p1.add(pressTime);p1.add(pressTimeField);p1.add(bookAbstract);p1.add(abstractField);p1.add(storage);p1.add(storageField);p1.add(remain);p1.add(remain1);p1.add(cancel);p1.add(confirm);cancel.addActionListener(this); confirm.addActionListener(this);}publicvoidactionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == confirm) {this.dispose();BookInfo book = new BookInfo(numberField.getText(), nameField.getText(),authorField.getText(),pressField.getText(), pressTimeField.getText(), abstractField.getText(),Integer.parseInt(storageField.getText()),Integer.parseInt(storageField.ge tText()));ArrayList<String> strArray = new ArrayList<String>(); strArray = op.addBookJudgement();intn = 0;intreplicate = 0;while (n <Integer.parseInt(strArray.get(0))) { n++;if(numberField.getText().equals(strArra y.get(n))) {replicate++;}}if (replicate == 0) {op.saveBook(book);JOptionPane.showMessageDialog(nu ll, "Add a book successfully!","Information",RMATION_MESSAGE);} else {JOptionPane.showMessageDialog(nu ll,"This book(number) has already existed!", "Warning",RMATION_MESSAGE);}}}}AddReader.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassAddReaderextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel readerNumber = new JLabel("Reader Number:");JLabel readerName = newJLabel("Reader Name:");JLabel sex = new JLabel("Sex:");JLabel dpt = newJLabel("Department:");JLabel grade = newJLabel("Grade:");JTextField numberField = new JTextField();JTextField nameField = new JTextField();JTextField sexField = new JTextField();JTextField dptField = new JTextField();JTextField gradeField = new JTextField();JButton cancel = newJButton("Cancel");JButton confirm = newJButton("Confirm!!");public AddReader() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(6, 2, 20, 10));p1.add(readerNumber);p1.add(numberField);p1.add(readerName);p1.add(nameField);p1.add(sex);p1.add(sexField);p1.add(dpt);p1.add(dptField);p1.add(grade);p1.add(gradeField);p1.add(cancel);p1.add(confirm);cancel.addActionListener(this); confirm.addActionListener(this);}publicvoidactionPerformed(ActionEvent e) { // TODO Autogenerated method stub if (e.getSource() == cancel) { this.dispose();}if (e.getSource() == confirm) {this.dispose();ReaderInfo reader = new ReaderInfo(numberField.getText(), nameField.getText(),sexField.getText(),dptField.getText(),Integer.parseInt(gradeField.getText() ));ArrayList<String> strArray = new ArrayList<String>(); strArray = op.addReaderJudgement(); intn = 0;intreplicate = 0;while (n <Integer.parseInt(strArray.get(0))) { n++;if(numberField.getText().equals(strArra y.get(n))) {replicate++;}}if (replicate == 0) {if (!sexField.getText().equals("boy")&& !sexField.getText().equals("g irl")) {JOptionPane.showMessageDialog(null,"In the Sex field, you can only input 'boy' or 'girl'!","Warning",RMATION_MESSAGE);} else {op.saveReader(reader);JOptionPane.showMessageDialog(nu ll,"Add a reader successfully!", "Information",RMATION_MESSAGE);}} else {JOptionPane.showMessageDialog(nu ll,"This reader(number) has already existed!", "Warning",RMATION_MESSAGE);}}}}BookDetails.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;importjavax.swing.table.DefaultTableModel; publicclassBookDetailsextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();JLabel bookNumber = newJLabel("Book Number:");JLabel bookName = newJLabel("Book Name:");JLabel author = newJLabel("Author:");JLabel press = newJLabel("Press:");JLabel pressTime = newJLabel("Press time:");JLabel bookAbstract = new JLabel("Abstract:");JLabel storage = newJLabel("Storage:");JLabel remain = newJLabel("Remain:");JLabel numberField = newJLabel();JLabel nameField = new JLabel();JLabel authorField = newJLabel();JLabel pressField = new JLabel();JLabel pressTimeField = new JLabel();JLabel abstractField = new JLabel();JLabel storageField = newJLabel();JLabel remainField = newJLabel();JButton cancel = newJButton("Cancel");JLabel details = newJLabel("Borrow and reaturn details");Object[] s = { "Reader number", "Borrow time", "Deadline", "Over time" };Object[][] ob1 = newObject[7][4];JTable table = new JTable(ob1, s);JScrollPane scrollPane = new JScrollPane(table);public BookDetails(String number) {BookInfo book = newBookInfo(number);ob1 = op.borrowListForBook(number); for (inti = 0; i < 5; i++) {DefaultTableModel books = new DefaultTableModel(ob1, s);for (intn = 0; n < 7; n++) {for (intm = 0; m < 4; m++) {ob1[n][m] = this.ob1[n][m];}table.setModel(books);table.invalidate();}}ArrayList<String> strArray = new ArrayList<String>();strArray = op.outputBook(book); numberField.setText(number); nameField.setText(strArray.get(1)); authorField.setText(strArray.get(2)); pressField.setText(strArray.get(3)); pressTimeField.setText(strArray.get(4 ));abstractField.setText(strArray.get(5) );storageField.setText(strArray.get(6)); remainField.setText(strArray.get(7));c.add(p1, BorderLayout.NORTH);c.add(p2, BorderLayout.CENTER);c.add(p3, BorderLayout.SOUTH);p1.setLayout(new GridLayout(9, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(bookName);p1.add(nameField);p1.add(author);p1.add(authorField);p1.add(press);p1.add(pressField);p1.add(pressTime);p1.add(pressTimeField);p1.add(bookAbstract);p1.add(abstractField);p1.add(storage);p1.add(storageField);p1.add(remain);p1.add(remainField);p1.add(details);scrollPane.setBounds(0, 0, 800, 300); p2.add(scrollPane);p3.add(cancel);table.setPreferredScrollableViewportS ize(new Dimension(400, 100));cancel.addActionListener(this);}publicvoidactionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}}}BookInfo.javapublicclass BookInfo {private String number, name, author, press, pressTime, bookAbstract; privateinttotal, remain;// default constructorpublic BookInfo() {}public BookInfo(String number) {this.number = number;}public BookInfo(String number, String name) {this.number = number; = name;}public BookInfo(String number, String name, String author, String press,String pressTime,String bookAbstract, inttotal, intremain) {this.number = number; = name;this.author = author;this.press = press;this.pressTime = pressTime;this.bookAbstract = bookAbstract; this.total = total;this.remain = remain;}publicvoid setRemain(inti) { this.remain=i;}public String getNumber() { returnnumber;}public String getName() { returnname;}public String getAuthor() { returnauthor;}public String getPress() { returnpress;}public String getPressTime() { returnpressTime;}public String getBookAbstract() { returnbookAbstract;}publicint getTotal() { returntotal;}publicint getRemain() { returnremain;}}BookRetrieval.javaimport java.awt.BorderLayout; import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;importjavax.swing.table.DefaultTableModel; classBookRetrievalextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p4 = new JPanel();JPanel p5 = new JPanel();JLabel bookNumber = newJLabel("Book Number:");JLabel bookName = newJLabel("Book Name:");JTextField number = new JTextField();JTextField name = newJTextField();JButton back = new JButton("Back (Fresh)");JButton addBook = newJButton("Add a book");JButton deleteBook = newJButton("Delete a book");JButton editBook = newJButton("Edit a book");JButton search = newJButton("Search for details!");JButton borrowBook = newJButton("Borrow a book");JButton returnBook = newJButton("Return a book");Font font1 = new Font("00", Font.BOLD, 20);Object[] s = { "Number", "Name","Author", "Press", "Press Time", "Abstract", "Storage", "Remain" };Object[][] ob = newObject[40][8];JTable table = new JTable(ob, s);JScrollPane scrollPane = new JScrollPane(table);public BookRetrieval() {BookInfo book = newBookInfo();ob = op.allBook(book);for (inti = 0; i < 5; i++) {DefaultTableModel books = new DefaultTableModel(ob, s);for (intn = 0; n < 20; n++) {for (intm = 0; m < 8; m++) {ob[n][m] = this.ob[n][m];}table.setModel(books);table.invalidate();}}c.add(p4, BorderLayout.NORTH);c.add(p1, BorderLayout.CENTER);c.add(p5, BorderLayout.SOUTH); search.setFont(font1);p4.setLayout(new GridLayout(2, 4, 20, 10));p4.add(back);p4.add(addBook);p4.add(editBook);p4.add(deleteBook);p4.add(borrowBook);p4.add(returnBook);p1.setLayout(null);scrollPane.setBounds(0, 0, 800, 300); p1.add(scrollPane);p5.setLayout(new GridLayout(5, 1, 0,0));p5.add(bookNumber);p5.add(number);p5.add(bookName);p5.add(name);p5.add(search);table.setPreferredScrollableViewportS ize(new Dimension(400, 300)); addBook.addActionListener(this); search.addActionListener(this); back.addActionListener(this); deleteBook.addActionListener(this); editBook.addActionListener(this); borrowBook.addActionListener(this); returnBook.addActionListener(this);}publicvoidactionPerformed(ActionEvent e) {if (e.getSource() == search) {ArrayList<String> strArray = new ArrayList<String>(); strArray = op.addBookJudgement();String s1 =number.getText();String s2 =name.getText();intn = 0;intreplicate = 0;while (n <Integer.parseInt(strArray.get(0))) { n++;if (s1.equals(strArray.get(n))) { replicate++;}}ArrayList<String> strArray1 = new ArrayList<String>(); strArray1 = op.addBookJudgement1();intn1 = 0;intreplicate1 = 0;while (n1 <Integer.parseInt(strArray1.get(0))) {n1++;if (s2.equals(strArray1.get(n1))) { replicate1++;}}if (replicate == 0 && replicate1 == 0) {JOptionPane.showMessageDialog(nu ll,"Please input a correct book numberor name!","Warning",RMATION_MESSAGE);} elseif (replicate !=0 || replicate1 != 0) {if (replicate == 0 && replicate1 != 0) {BookInfo book= new BookInfo(s1, s2);String s =op.searchBookByName(book);BookDetails f= new BookDetails(s);//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Book Details");f.setLocation(300, 200);f.setSize(480, 470);f.setVisible(true);} elseif(replicate != 0) {BookDetails f= new BookDetails(s1);//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Book Details");f.setLocation(300, 200);f.setSize(480, 470);f.setVisible(true);}}}if (e.getSource() == back) {this.dispose();MyFrame f = new MyFrame();//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Library ManagementSystem");f.setLocation(300, 200);f.setSize(580, 300);f.setVisible(true);}if (e.getSource() == addBook) {AddBook f = new AddBook();//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Add a book");f.setLocation(300, 200);f.setSize(300, 400);f.setVisible(true);}if (e.getSource() == deleteBook) {DeleteBook f = new DeleteBook();//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Delete a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == borrowBook) {BorrowBook f = new BorrowBook();//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Borrow a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == returnBook) {ReturnBook f = new ReturnBook();//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Return a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == editBook) {SelectEdit f = new SelectEdit();//f.setDefaultCloseOperation(JFrame.EXI T_ON_CLOSE);f.setTitle("Edit a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}}}BorrowBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassBorrowBookextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = newJLabel("Book Number:");JTextField numberField = new JTextField();JLabel readerNumber = newJLabel("Reader Number:");JTextField readerNumberField = new JTextField();JButton cancel = newJButton("Cancel");JButton borrow = newJButton("Borrow!!");public BorrowBook() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(3, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(readerNumber);p1.add(readerNumberField);p1.add(cancel);p1.add(borrow);cancel.addActionListener(this); borrow.addActionListener(this);}publicvoidactionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) { this.dispose();}if (e.getSource() == borrow) {String bookNumber = numberField.getText();ArrayList<String> strArray = new ArrayList<String>(); strArray = op.addBookJudgement(); intn = 0;intreplicate = 0;while (n <Integer.parseInt(strArray.get(0))) { n++;if(bookNumber.equals(strArray.get(n))) {replicate++;}}String readerNumber = readerNumberField.getText();ArrayList<String> strArray1 = new ArrayList<String>(); strArray1 = op.addReaderJudgement(); intn1 = 0;intreplicate1 = 0;while (n1 <Integer.parseInt(strArray1.get(0))) { n1++;if(readerNumber.equals(strArray1.get(n1 ))) {replicate1++;}}if (replicate == 0 || replicate1 == 0) {JOptionPane.showMessageDialog(null,"Please input a correct book number and a reader number!","Warning",RMATION_MESSAGE);} else {BookInfo book = new BookInfo(bookNumber);ArrayList<String> s = new ArrayList<String>();s = op.outputBook(book);if (Integer.parseInt(s.get(7)) > 0) { ints1 =op.reBorrowCheck(numberField.getText( ),readerNumberField.getText());if (s1 == 1) {JOptionPane.showMessageDialog(null,"You have borrowed this book, can not reborrow it!","Unsuccessful",RMATION_MESSAGE);} else { longcurrentTime =System.currentTimeMillis();if(op.deadLineCheck(readerNumberField.g etText(),currentTime) != 0) {JOptionPane.showMessageDialog(null,"You have exceeded the deadline, please return these books first!", "Unsuccessful",RMATION_MESSAGE);} else {BookInfo book1 = newBookInfo(s.get(0), s.get(1),s.get(2), s.get(3), s.get(4),s.get(5),Integer.parseInt(s.get(6)),Integer.parseInt(s.get(7)) 1); op.inputBook(book1);String borrowTime =Long.toString(System.currentTimeMillis());String deadline =Long.toString(System.currentTimeMillis() + 2592000000l);System.out.println(borrowTime);System.out.println(deadline);op.insertBorrow(numberField.getText(), readerNumberField.getText(), borrowTime,deadline);JOptionPane.showMessageDialog(null,"Borrowed this book successfully, you have 30 days to enjoy this book!", "Successful",。

Java_项目开发实例_图书信息管理系统开发文档及源码

Java_项目开发实例_图书信息管理系统开发文档及源码

图书信息管理系统一、系统功能概述:根据图书信息管理系统的特点,可以将本系统分为2大功能模块,分别为:基础数据维护、系统数据维护。

本系统各个部分及其包括的具体功能模块如下图所示:二、数据库设计:图书信息表:图书类别表:用户信息表:三、系统源代码:Com.zhang.dao:Dao.java //数据库的连接与操作类package com.zhang.dao;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.zhang.model.BookInfo;import com.zhang.model.BookType;import com.zhang.model.Operator;import com.zhang.model.Reader;import er;public class Dao {protected static String dbClassName ="com.microsoft.sqlserver.jdbc.SQLServerDriver";protected static String dbUrl = "jdbc:sqlserver://localhost:1433;"+ "DatabaseName=db_lib;SelectMethod=Cursor";protected static String dbUser = "sa";protected static String dbPwd = "zhangyong";protected static String second = null;private static Connection conn = null;//创建数据库连接private Dao() {try {if (conn == null) {Class.forName(dbClassName).newInstance();conn= DriverManager.getConnection(dbUrl, dbUser, dbPwd);System.out.println("数据库连接成功!");}elsereturn;} catch (Exception ee) {ee.printStackTrace();}}//执行查询private static ResultSet executeQuery(String sql) {try {if(conn==null)new Dao();returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR _UPDATABLE).executeQuery(sql);} catch (SQLException e) {e.printStackTrace();return null;} finally {}}//执行更新private static int executeUpdate(String sql) {try {if(conn==null)new Dao();return conn.createStatement().executeUpdate(sql);} catch (SQLException e) {System.out.println(e.getMessage());//if(e.getMessage().equals("[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]DELETE 语句与 COLUMN REFERENCE 约束'FK_TB_BORRO_REFERENCE_TB_BOOKI' 冲突。

毕业论文 java图书管理系统

毕业论文 java图书管理系统

毕业论文 java图书管理系统Java图书管理系统是一种管理和维护图书信息的软件系统,其主要目的是帮助图书管理员更加便捷和高效地处理图书的各种信息和管理任务。

本文将详细介绍一个基于Java编程语言的图书管理系统的设计和实现过程,主要包括系统需求分析、系统架构设计、技术选型、系统实现和测试等方面内容。

一、系统需求分析1.系统功能需求:(1) 图书信息的添加、修改、删除和查询功能(2) 用户账户管理功能,包括用户注册、登录、修改和删除等功能(3) 图书借阅和归还功能(4) 借阅历史记录查询功能(5) 管理员管理功能,包括管理员账户注册、登录、修改和删除等功能2.系统性能需求:(1) 系统响应速度快、稳定性高,能够同时处理多个用户请求(2) 系统具有一定的容错性,能够应对突发故障的情况(3) 系统具有一定的可扩展性和可维护性,方便后期系统的维护和升级二、系统架构设计基于系统需求分析,我们采用了三层架构设计,即表现层、逻辑层和数据访问层。

其中,表现层包括用户界面等,逻辑层实现系统的业务逻辑,数据访问层则负责访问数据库中的数据。

具体架构如下所示:三、技术选型为了实现这个图书管理系统,我们采用了以下技术:1.开发环境:Eclipse IDE2.数据库:MySQL3.后端框架:SpringMVC4.前端框架:Bootstrap5.数据访问层框架:MyBatis6.其他技术:HTML、CSS、JavaScript、JSP等四、系统实现1.系统登录:2.图书管理:3.借阅管理:4.归还管理:五、系统测试我们对系统进行了多项测试,包括性能测试、稳定性测试等,结果表明我们的系统能够满足系统需求分析中的各项功能和性能需求,并且具有较高的稳定性和可靠性。

六、总结本文介绍了一个基于Java编程语言的图书管理系统的设计和实现过程,包括系统需求分析、系统架构设计、技术选型、系统实现和测试等方面内容。

本系统采用了三层架构设计,采用了多项技术,经过测试能够满足系统需求分析中的各项功能和性能需求,在实现过程中我们也遇到了一些问题,但我们通过合理的解决方案最终成功地完成了这个项目。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

声明:本系统是基于C/S的图书管理系统,主要使用的是Oracle数据库,下面附所有实现代码package library;import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class book_add extends JFrame implements ActionListener{DataBaseManager db=new DataBaseManager();ResultSet rs;JPanel panel1,panel2;JLabel book_id_label,book_name_label,author_label,press_label,press_date_label,price_label,book_num_label,borrowed_num_label,a ddress;JTextField book_id_TextField,book_name_TextField,author_TextField,press_TextField,press_date_TextField,price_TextField,book_num_TextField,borrowed_count;JComboBox addresst;Container c;JButton clear,add,exit;public book_add(){super("添加图书信息");c=getContentPane();c.setLayout(new BorderLayout());book_id_label=new JLabel("编号",JLabel.CENTER);book_name_label=new JLabel("名称",JLabel.CENTER);author_label=new JLabel("作者",JLabel.CENTER);press_label=new JLabel("出版社",JLabel.CENTER);press_date_label=new JLabel("出版日期",JLabel.CENTER); price_label=new JLabel("价格",JLabel.CENTER);book_num_label=new JLabel("库存数",JLabel.CENTER); borrowed_num_label=new JLabel("已借阅数",JLabel.CENTER); address=new JLabel("藏书地址",JLabel.CENTER);book_id_TextField=new JTextField(15);book_name_TextField=new JTextField(15);author_TextField=new JTextField(15);press_TextField=new JTextField(15);press_date_TextField=new JTextField(15);price_TextField=new JTextField(15);book_num_TextField=new JTextField(15);borrowed_count=new JTextField(15);borrowed_count.setText("0");addresst=new JComboBox();addresst.addItem("扬子津图书馆");addresst.addItem("荷花池图书馆");addresst.addItem("瘦西湖图书馆");addresst.addItem("淮海路图书馆");panel1=new JPanel();panel1.setLayout(new GridLayout(9,2));panel1.add(book_id_label);panel1.add(book_id_TextField);panel1.add(book_name_label);panel1.add(book_name_TextField);panel1.add(press_label);panel1.add(press_TextField);panel1.add(author_label);panel1.add(author_TextField);panel1.add(press_date_label);panel1.add(press_date_TextField);panel1.add(price_label);panel1.add(price_TextField);panel1.add(book_num_label);panel1.add(book_num_TextField);panel1.add(borrowed_num_label);panel1.add(borrowed_count);panel1.add(address);panel1.add(addresst);panel2=new JPanel();panel2.setLayout(new GridLayout(1,3));clear=new JButton("清空");clear.addActionListener(this);add=new JButton("添加");add.addActionListener(this);exit=new JButton("退出");exit.addActionListener(this);panel2.add(clear);panel2.add(add);panel2.add(exit);c.add(panel1,BorderLayout.CENTER);c.add(panel2,BorderLayout.SOUTH);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==exit){this.dispose();}else if(e.getSource()==clear){book_id_TextField.setText("");book_name_TextField.setText("");author_TextField.setText("");press_TextField.setText("");press_date_TextField.setText("");price_TextField.setText("");book_num_TextField.setText("");}else if(e.getSource()==add){if(book_id_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "书号不能为空");}else if(book_name_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "书名不能为空");}else if(author_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "作者不能为空");}else if(press_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "出版社不能为空");}else if(press_date_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "出版日期不能为空");}else if(price_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "价格不能为空");}else if(book_num_TextField.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "库存不能为空");}else if(borrowed_count.getText().trim().equals("")){JOptionPane.showMessageDialog(null, "借阅数不能为空");}else {try{String strSQL="insert into book(book_id,book_name,press,author,press_date,price,book_count,borrowed_count, store_address) values('"+book_id_TextField.getText().trim()+"','"+book_name_TextField.getText().trim()+"','"+press_TextField.getText().trim()+"','"+author_TextField.getText().trim()+"','"+press_date_TextField.getText().trim()+"','"+price_TextField.getText().trim()+"','"+book_num_TextField.getText().trim()+"','"+borrowed_count.getText().trim()+"','"+addresst.getSelectedItem()+"')";if(db.updateSql(strSQL)){this.dispose();JOptionPane.showMessageDialog(null,"添加图书成功");}else{JOptionPane.showMessageDialog(null,"添加图书失败");this.dispose();}db.closeConnection();}catch(Exception ex){System.out.println(ex.toString());}}}}}package library;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;public class book_delete extends JFrame implements ActionListener{ DataBaseManager db=new DataBaseManager();ResultSet rs;Container c;JLabel TipLabel=new JLabel("请选择要删除的书名",JLabel.CENTER);JComboBox bb=new JComboBox();JButton yes,exit;JPanel panel1=new JPanel();public book_delete(){super("删除图书信息");c=getContentPane();c.setLayout(new BorderLayout());try{String strSQL="select book_name from book where book_count>borrowed_count";rs=db.getResult(strSQL);while(rs.next()){bb.addItem(rs.getString(1));}}catch(SQLException sqle){System.out.println(sqle.toString());}catch(Exception ex){System.out.println(ex.toString());}c.add(TipLabel,BorderLayout.NORTH);c.add(bb,BorderLayout.CENTER);yes=new JButton("确定");exit=new JButton("退出");yes.addActionListener(this);exit.addActionListener(this);panel1.add(yes);panel1.add(exit);c.add(panel1,BorderLayout.SOUTH);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==exit){this.dispose();}else if(e.getSource()==yes){try{String strSQL="select borrowed_count from book where book_name='"+bb.getSelectedItem()+"'";rs=db.getResult(strSQL);if(!rs.first()){JOptionPane.showMessageDialog(null,"书库里没有你要删除的书");}else{String strSql="delete from book where book_name='"+bb.getSelectedItem()+"'and borrowed_count=0";rs.first();int count=rs.getInt(1);if(!(count==0)){JOptionPane.showMessageDialog(null,"此书还有学生没有还,不可删除");}else if(db.updateSql(strSql)){JOptionPane.showMessageDialog(null,"删除成功");db.closeConnection();this.dispose();}else{JOptionPane.showMessageDialog(null,"删除失败");db.closeConnection();this.dispose();}}}catch(SQLException sqle){System.out.println(sqle.toString());}catch(Exception ex){System.out.println(ex.toString());}}}}package library;import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class book_modify extends JFrame implements ActionListener{ DataBaseManager db=new DataBaseManager();ResultSet rs;JPanel panel1,panel2,panel3;JLabel TipLabel=new JLabel("输入书名点确定,将调出此书的相关信息");JLabel book_name_label,author_label,press_label,press_date_label,price_label;JTextField book_name_TextField,author_TextField,press_TextField,press_date_TextField,price_TextField;Container c;JButton clear,yes,update,exit;public book_modify(){super("修改图书信息");c=getContentPane();c.setLayout(new BorderLayout());panel3=new JPanel();panel3.add(TipLabel);c.add(panel3,BorderLayout.NORTH);book_name_label=new JLabel("名称",JLabel.CENTER);author_label=new JLabel("作者",JLabel.CENTER);press_label=new JLabel("出版社",JLabel.CENTER);press_date_label=new JLabel("出版日期",JLabel.CENTER);price_label=new JLabel("价格",JLabel.CENTER);book_name_TextField=new JTextField(15);author_TextField=new JTextField(15);press_TextField=new JTextField(15);press_date_TextField=new JTextField(15);price_TextField=new JTextField(15);panel1=new JPanel();panel1.setLayout(new GridLayout(6,2));panel1.add(book_name_label);panel1.add(book_name_TextField);panel1.add(author_label);panel1.add(author_TextField);panel1.add(press_label);panel1.add(press_TextField);panel1.add(press_date_label);panel1.add(press_date_TextField);panel1.add(price_label);panel1.add(price_TextField);panel2=new JPanel();panel2.setLayout(new GridLayout(1,4));clear=new JButton("清空");yes=new JButton("确定");update=new JButton("更新");exit=new JButton("退出");panel2.add(clear);panel2.add(yes);panel2.add(update);panel2.add(exit);clear.addActionListener(this);yes.addActionListener(this);update.addActionListener(this);exit.addActionListener(this);update.setEnabled(false);c.add(panel1,BorderLayout.CENTER);c.add(panel2,BorderLayout.SOUTH);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==exit){this.dispose();;}else if(e.getSource()==clear){book_name_TextField.setText("");author_TextField.setText("");press_TextField.setText("");press_date_TextField.setText("");price_TextField.setText("");}else if(e.getSource()==yes){try{String strSQL="select * from book where book_name='"+book_name_TextField.getText().trim()+"'";rs=db.getResult(strSQL);while(rs.next()){book_name_TextField.setText(rs.getString("book_name"));author_TextField.setText(rs.getString("author"));press_TextField.setText(rs.getString("press"));press_date_TextField.setText(rs.getString("press_date"));price_TextField.setText(rs.getString("price"));}update.setEnabled(true);}catch(NullPointerException upe){System.out.println(upe.toString());}catch(Exception es){System.out.println(es.toString());}}else if(e.getSource()==update){try{String strSQL="update book set book_name='"+book_name_TextField.getText().trim()+"',press='"+press_TextField.getText().trim()+"',author='"+author_TextField.getText().trim()+"',press_date='"+press_date_TextField.getText().trim()+"',price='"+price_TextField.getText().trim()+"' where book_name='"+book_name_TextField.getText().trim()+"'";if(db.updateSql(strSQL)){this.dispose();JOptionPane.showMessageDialog(null,"更新图书成功");}else {JOptionPane.showMessageDialog(null,"更新图书失败");}db.closeConnection();}catch(Exception sqle){System.out.println(sqle.toString());}}}}package library;import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import java.sql.SQLException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class bookborrow extends JFrame implements ActionListener{ DataBaseManager db=new DataBaseManager();ResultSet rs;Container c;JPanel panel1,panel2;JLabel borrowname,bookname,borrowdate,returndate,is_return_label;JTextField borrowdateField,returndateField,is_return;JButton clear,yes,cancel;JComboBox borrownameBox=new JComboBox();JComboBox booknameBox=new JComboBox();public bookborrow(){super("书籍出借");c=getContentPane();c.setLayout(new BorderLayout());Calendar cal = Calendar.getInstance();int year,month,day;// year=cal.get(Calendar.YEAR);// month=cal.get(Calendar.MONTH)+3;//从0开始的// day=cal.get(Calendar.DAY_OF_MONTH);// java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// String cdate = sdf.format(cal.getTime());// String da=Integer.toString(year)+"-0"+Integer.toString(month)+"-"+Integer.toString(day);borrowname=new JLabel("借阅者姓名",JLabel.CENTER);bookname=new JLabel("书名",JLabel.CENTER);borrowdate=new JLabel("借书日期",JLabel.CENTER);// returndate=new JLabel("应还日期",JLabel.CENTER);is_return_label=new JLabel("是否归还",JLabel.CENTER);borrowdateField=new JTextField(15);// borrowdateField.setText(cdate);// returndateField=new JTextField(15);// returndateField.setText(da);is_return=new JTextField(15);is_return.setText("否");try{String strSql="select student_name from reader ";rs=db.getResult(strSql);while(rs.next()){borrownameBox.addItem(rs.getString(1));}}catch(SQLException sqle){System.out.println(sqle.toString());}catch(Exception ex){System.out.println(ex.toString());}try{String strSQL="select book_name from book where book_count>borrowed_count";rs=db.getResult(strSQL);while(rs.next()){booknameBox.addItem(rs.getString(1));}}catch(SQLException sqle){System.out.println(sqle.toString());}catch(Exception ex){System.out.println(ex.toString());}panel1=new JPanel();panel1.setLayout(new GridLayout(5,2));panel1.add(borrowname);panel1.add(borrownameBox);panel1.add(bookname);panel1.add(booknameBox);panel1.add(borrowdate);panel1.add(borrowdateField);// panel1.add(returndate);// panel1.add(returndateField);panel1.add(is_return_label);panel1.add(is_return);c.add(panel1,BorderLayout.CENTER);panel2=new JPanel();panel2.setLayout(new GridLayout(1,3));clear=new JButton("清空");yes=new JButton("确定");cancel=new JButton("取消");clear.addActionListener(this);yes.addActionListener(this);cancel.addActionListener(this);panel2.add(clear);panel2.add(yes);panel2.add(cancel);c.add(panel2,BorderLayout.SOUTH);setVisible(true);setSize(300,300);}public void actionPerformed(ActionEvent e){if(e.getSource()==cancel){this.dispose();}else if(e.getSource()==clear){borrowdateField.setText("");// returndateField.setText("");is_return.setText("");}else if(e.getSource()==yes){if(borrownameBox.getSelectedItem().equals("")){JOptionPane.showMessageDialog(null, "对不起,没有读者借阅");}else if(booknameBox.getSelectedItem().equals("")){JOptionPane.showMessageDialog(null, "对不起,现在书库没有书");}else {try{//系统计算归还日期//获取输入的借阅日期,自动加两个月String startDate=borrowdateField.getText().trim();SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");Date dateStart=format.parse(startDate);Calendar cd=Calendar.getInstance();cd.setTime(dateStart);cd.add(Calendar.MONTH, 2);String returnDate=format.format(cd.getTime());String strSQL="insert into borrow(student_name,book_name,borrow_date,return_date,is_returned) values('"+borrownameBox.getSelectedItem()+"','"+booknameBox.getSelectedItem()+"','"+borrowdateField.getText().trim()+"','"+returnDate+"','"+is_return.getText().trim()+"')";if(db.updateSql(strSQL)){JOptionPane.showMessageDialog(null, "借阅完成");strSQL = "update reader set borrow_count=borrow_count+1 where student_name='"+borrownameBox.getSelectedItem()+"'";db.updateSql(strSQL);strSQL="update book set borrowed_count=borrowed_count+1 where book_name='"+booknameBox.getSelectedItem()+"'";db.updateSql(strSQL);db.closeConnection();this.dispose();}else{JOptionPane.showMessageDialog(null, "借阅失败");db.closeConnection();this.dispose();}}catch(Exception se){System.out.println(se.toString());}}}}}package library;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Vector;public class bookborrowlist extends JFrame implements ActionListener{ DataBaseManager db=new DataBaseManager();ResultSet rs;Container c;JPanel panel1,panel2;JLabel bookname,studentname;JTextField booknamet,studentnamet;JButton search,exit;JTable table=null;DefaultTableModel defaultModel=null;public bookborrowlist(){super("借阅列表");c=getContentPane();c.setLayout(new BorderLayout());bookname=new JLabel("书名",JLabel.CENTER);studentname=new JLabel("人名",JLabel.CENTER);booknamet=new JTextField(15);studentnamet=new JTextField(15);search=new JButton("查询");exit=new JButton("退出");search.addActionListener(this);exit.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(studentname);box1.add(studentnamet);box1.add(search);Box box2=Box.createHorizontalBox();box2.add(bookname);box2.add(booknamet);box2.add(exit);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(Box.createVerticalGlue());panel1=new JPanel();panel1.add(boxH);panel2=new JPanel();String []name={"读者","书名","借阅时间","应还时间","是否归还"};String [][]data=new String[0][0];defaultModel=new DefaultTableModel(data,name);table=new JTable(defaultModel);table.setPreferredScrollableViewportSize(new Dimension(400,80));JScrollPane s=new JScrollPane(table);panel2.add(s);c.add(panel1,BorderLayout.NORTH);c.add(panel2,BorderLayout.SOUTH);}public void actionPerformed(ActionEvent e){if(e.getSource()==exit){db.closeConnection();this.dispose();}else if(e.getSource()==search){String strSQL="select student_name,book_name,borrow_date,return_date,is_returned from borrow";String strSql=null;if(studentnamet.getText().trim().equals("")&&booknamet.getText().trim().equals( "")){strSql=strSQL;}else if(studentnamet.getText().trim().equals("")){strSql="selectstudent_name,book_name,borrow_date,return_date,is_returned from borrow where book_name='"+booknamet.getText().trim()+"'";}else if(booknamet.getText().trim().equals("")){strSql="selectstudent_name,book_name,borrow_date,return_date,is_returned from borrow where student_name='"+studentnamet.getText().trim()+"'";}else{strSql="selectstudent_name,book_name,borrow_date,return_date,is_returned from borrow where student_name='"+studentnamet.getText().trim()+"'and book_name='"+booknamet.getText().trim()+"'";JOptionPane.showMessageDialog(null, "你借的书还还有7天超期");}try{int rowCount=defaultModel.getRowCount()-1;int j=rowCount;for(int i=0;i<=rowCount;i++){defaultModel.removeRow(j);defaultModel.setRowCount(j);j=j-1;}rs=db.getResult(strSql);while(rs.next()){Vector insertRow=new Vector();insertRow.addElement(rs.getString(1));insertRow.addElement(rs.getString(2));insertRow.addElement(rs.getString(3));insertRow.addElement(rs.getString(4));insertRow.addElement(rs.getString(5));defaultModel.addRow(insertRow);}table.revalidate();}catch(SQLException sqle){System.out.println(sqle.toString());}catch(Exception ex){System.out.println(ex.toString());}}}}package library;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;public class bookborrowModify extends JFrame implements ActionListener{ DataBaseManager db=new DataBaseManager();ResultSet rs;JPanel panel1,panel2,panel3;Container c;JLabel tiplabel=new JLabel("输入借阅者姓名和书名单击确定,将调出此书的相关信息");JLabel borrowlabel,namelabel,borrowdate;JTextField borrowField,nameField,dateField;JButton clear,yes,update,cancel;public bookborrowModify(){super("修改图书出借信息");c=getContentPane();c.setLayout(new BorderLayout());panel3=new JPanel();panel3.add(tiplabel);c.add(panel3,BorderLayout.NORTH);borrowlabel=new JLabel("借阅者姓名",JLabel.CENTER);namelabel=new JLabel("书名",JLabel.CENTER);borrowdate=new JLabel("借书日期",JLabel.CENTER);borrowField=new JTextField(15);nameField=new JTextField(15);dateField=new JTextField(15);panel1=new JPanel();panel1.setLayout(new GridLayout(3,2));panel1.add(borrowlabel);panel1.add(borrowField);panel1.add(namelabel);panel1.add(nameField);panel1.add(borrowdate);panel1.add(dateField);c.add(panel1,BorderLayout.CENTER);panel2=new JPanel();panel2.setLayout(new GridLayout(1,4));clear=new JButton("清空");yes=new JButton("确定");update=new JButton("更新");cancel=new JButton("取消");clear.addActionListener(this);yes.addActionListener(this);update.addActionListener(this);cancel.addActionListener(this);panel2.add(clear);panel2.add(yes);panel2.add(update);panel2.add(cancel);c.add(panel2,BorderLayout.SOUTH);setVisible(true);setSize(400,200);}public void actionPerformed(ActionEvent e){if(e.getSource()==clear){borrowField.setText("");nameField.setText("");dateField.setText("");}else if(e.getSource()==cancel){this.dispose();}else if(e.getSource()==yes){try{String strSQL="select student_name,book_name,borrow_date from borrow where student_name='"+borrowField.getText().trim()+"'and book_name='"+nameField.getText().trim()+"'";rs=db.getResult(strSQL);if(!rs.first()){JOptionPane.showMessageDialog(null,"此学生没有借过书或者没有此书");}else{borrowField.setText(rs.getString(1));nameField.setText(rs.getString(2));dateField.setText(rs.getString(3));update.setEnabled(true);}}catch(Exception ex){System.out.println(ex.toString());}}else if(e.getSource()==update){String strSQL="update borrow set borrow_date='"+dateField.getText().trim()+"' where student_name='"+borrowField.getText().trim()+"'and book_name='"+nameField.getText().trim()+"'";if(db.updateSql(strSQL)){JOptionPane.showMessageDialog(null,"更新成功");db.closeConnection();this.dispose();}else{JOptionPane.showMessageDialog(null,"更新失败");db.closeConnection();this.dispose();}}}}package library;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Vector;public class booklist extends JFrame implements ActionListener{DataBaseManager db=new DataBaseManager();ResultSet rs;Container c;JPanel panel1,panel2,panel3;JLabel bookname,authorname,press;JTextField booknamet,authornamet,presst;JButton search,exit;JTable table=null;DefaultTableModel defaultModel=null;public booklist(){super("书籍信息查询");c=getContentPane();c.setLayout(new BorderLayout());bookname=new JLabel("书名",JLabel.CENTER);authorname=new JLabel("作者",JLabel.CENTER);press=new JLabel("出版社",JLabel.CENTER);booknamet=new JTextField(15);authornamet=new JTextField(15);presst=new JTextField(15);search=new JButton("查询");exit=new JButton("退出");search.addActionListener(this);exit.addActionListener(this);panel1=new JPanel();panel1.add(bookname);panel1.add(booknamet);panel1.add(authorname);panel1.add(authornamet);panel2=new JPanel();panel2.add(press);panel2.add(presst);panel2.add(search);panel2.add(exit);String []name={"书号","书名","出版社","作者","出版日期","价格","图书数目","已借数目","剩余数目","藏书地址"};String [][]data=new String[0][0];defaultModel=new DefaultTableModel(data,name);table=new JTable(defaultModel);table.setPreferredScrollableViewportSize(new Dimension(400,80));JScrollPane s=new JScrollPane(table);panel3=new JPanel();panel3.add(s);c.add(panel1,BorderLayout.NORTH);c.add(panel2,BorderLayout.CENTER);c.add(panel3,BorderLayout.SOUTH);}public void actionPerformed(ActionEvent e){if(e.getSource()==exit){db.closeConnection();this.dispose();}else if(e.getSource()==search){String strSQL="select book_id,book_name,press,author,press_date,price,book_count,borrowed_count,book_ count-borrowed_count,store_address from book";String strSql=null;if(booknamet.getText().trim().equals("")&&authornamet.getText().trim().equals(" ")&&presst.getText().trim().equals("")){strSql=strSQL;}elseif(booknamet.getText().trim().equals("")&&authornamet.getText().trim().equals("")) {strSql="selectbook_id,book_name,press,author,press_date,price,book_count,borrowed_count,book_ count-borrowed_count,store_address from book where press='"+presst.getText().trim()+"'";}elseif(authornamet.getText().trim().equals("")&&presst.getText().trim().equals("")) {strSql="selectbook_id,book_name,press,author,press_date,price,book_count,borrowed_count,book_ count-borrowed_count,store_address from book where book_name='"+booknamet.getText().trim()+"'";}elseif(booknamet.getText().trim().equals("")&&presst.getText().trim().equals("")) {strSql="selectbook_id,book_name,press,author,press_date,price,book_count,borrowed_count,book_。

相关文档
最新文档