数据库图书管理系统(含代码)

合集下载

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

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

图书管理系统数据库源代码//创建工程及设计主界面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);}}}。

图书馆管理系统源代码

图书馆管理系统源代码

以我给的标题写原创文档,最低1200字,要求以Markdown文本格式输出,不要带图片和AI、人工智能、Markdown、GPT等关键词,标题为:图书馆管理系统源代码# 图书馆管理系统源代码## 一、引言图书馆作为一个重要的知识资源和学术场所,对于学生和研究人员具有重要意义。

为了更好地管理图书馆资源和提供服务,图书馆管理系统应运而生。

本文将介绍图书馆管理系统的源代码设计和实现。

## 二、系统功能需求### 1. 登录功能- 提供管理员和用户登录功能- 管理员可进行图书管理、借阅管理等操作- 用户可查询图书信息、借阅情况等### 2. 图书管理- 添加新书籍信息- 修改或删除现有书籍信息- 查询图书信息,包括书名、作者、出版社等### 3. 借阅管理- 用户借阅图书- 用户归还图书- 管理员监管借阅情况### 4. 查询功能- 用户可以根据条件查询图书信息- 管理员可以查询借阅情况、用户信息等## 三、系统设计### 1. 数据库设计- 数据库包括图书信息表、用户信息表、借阅记录表等- 表之间建立关联,保证数据一致性和完整性### 2. 源代码结构```- books- README.md- book.js- bookRouter.js- users- README.md- user.js- userRouter.js- borrows- README.md- borrow.js- borrowRouter.js- index.js```### 3. 源代码逻辑- 使用Node.js构建后端服务- 使用Express框架处理路由和请求- 使用MongoDB作为数据库存储## 四、系统实现### 1. 登录功能```javascript// 用户登录router.post('/login', (req, res) => {// 处理登录逻辑});// 管理员登录router.post('/admin/login', (req, res) => { // 处理管理员登录逻辑});```### 2. 图书管理```javascript// 添加新书籍router.post('/addBook', (req, res) => {// 处理添加书籍逻辑});// 修改书籍信息router.put('/updateBook/:id', (req, res) => {// 处理修改书籍信息逻辑});// 删除书籍router.delete('/deleteBook/:id', (req, res) => {// 处理删除书籍逻辑});```### 3. 借阅管理```javascript// 用户借阅图书router.post('/borrowBook', (req, res) => {// 处理借阅图书逻辑});// 用户归还图书router.put('/returnBook/:id', (req, res) => {// 处理归还图书逻辑});```## 五、总结通过本文介绍,读者可以了解图书馆管理系统源代码的设计和实现逻辑。

图书馆管理系统完整代码

图书馆管理系统完整代码
out.println("<h3>"+warning3+"</h3>"); String login=request.getParameter("login"); if(login!=null)
out.println("<h3>"+login+"</h3>"); %> </div></body> </html>
logon.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 "/TR/html4/loose.dtd"> <html> <script language="JavaScript">
{ alert("请输入有效电话!"); return false;
} } var em,index; em=myform.email.value; index=myform.email.value.indexOf('@'); if(index<=0||index>=em.length-1) {
alert("请输入合法的电子邮件地址!"); return false; } } </script> <head> <title>用户注册</title> </head> <body><div align="center"><h2> 用户注册 </h2> <%!String sex=null; %> <form action="dealLogon.jsp" method="post" onSubmit="return check()" name="myform"> <table height="100%" border="1" align="center" width="90%"> <tbody><tr> <td align="right">用户名:<br></td> <td align="left"><input type="text" name="username"></td></tr> <tr> <td align="right">真实姓名:<br></td> <td align="left"><input type="text" name="truename"></td></tr> <tr> <td align="right">密码:</td> <td align="left"><input type="password" name="password"></td></tr> <tr> <td align="right">确认密码:</td> <td align="left"><input type="password" name="confirmPassword"></td></tr> <tr> <td align="right">年龄: </td> <td align="left"><input type="text" name="age"></td></tr> <tr> <td align="right">性别:</td> <td align="left"><input type="radio" name="sex" value="男" <%if(sex.equals("男")) out.println("checked");%>> <img src="Images/boy.gif" width="24" height="24">男

(完整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。

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

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

数据库图书管理系统含代码The following text is amended on 12 November 2020.目录一.需求描述和系统边界数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。

对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。

随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的数目逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,创建图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。

该图书管理系统支持2类用户:管理员和读者。

读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。

二.需求分析1.业务需求图书管理系统的主要业务包括:包括图书馆内书籍的信息,读者信息,以及借阅信息。

此系统功能分为面向读者和面向管理员两部分,其中读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。

2.功能需求及数据需求分析(1)注册管理管理员注册。

管理员注册时要求填写基本信息,包括管理员编号、姓名、性别、联系电话、家庭住址。

系统检查所有信息填写正确后管理员注册成功。

读者注册。

读者注册时要求填写基本信息,包括读者编号、姓名、性别、联系电话、学院等。

系统检查所有信息填写正确后读者注册成功。

(2)图书管理增加图书信息。

当有新的图书入库时,管理员负责添加图书信息,包括书名、分类、图书编号、作者、出版社、出版时间、简介等。

图书信息查询。

管理系统需提供方便快捷的方式进行图书检索。

如可以输入指定的关键词进行简单查询,也可以根据书名、分类、图书编号、作者、出版社、出版时间、简介等单一或组合条件进行查询。

图书管理系统毕业设计源代码

图书管理系统毕业设计源代码

图书管理系统毕业设计源代码1. 简介图书管理系统是一个用于管理图书馆藏书及借阅情况的软件系统。

本文档将详细介绍图书管理系统的毕业设计源代码。

2. 源代码结构图书管理系统的源代码采用模块化的设计,分为以下几个模块: - 用户管理模块:负责管理员和读者的管理,包括用户注册、登录、修改密码等功能。

- 图书管理模块:负责图书的录入、删除、查找等功能。

- 借阅管理模块:负责借阅记录的管理,包括借书、还书、查看借阅历史等功能。

- 统计分析模块:负责统计图书馆的借阅情况、读者喜好等信息。

- 权限管理模块:负责管理不同角色的权限,例如管理员有更高的权限。

3. 技术选型•后端开发语言:采用Java语言进行开发,利用Java的面向对象和多线程的特性来实现系统的各个功能模块。

•前端开发:采用HTML、CSS和JavaScript进行前端开发,使用Bootstrap框架来实现页面的美化和响应式布局。

•数据库:采用MySQL关系数据库管理系统,存储图书馆的图书信息、用户信息及借阅记录等数据。

4. 代码实现细节4.1 用户管理模块用户管理模块的主要功能包括用户注册、登录、修改密码等。

- 用户注册:用户可以填写注册表单,并将信息提交到服务器进行注册。

服务器会将用户的信息存储到数据库中,并为用户分配一个唯一的ID。

- 用户登录:用户在登录页面输入用户名和密码,服务器会校验用户的登录信息,并根据用户的角色跳转到相应的首页。

- 修改密码:用户可以在个人信息页面修改密码,需要输入原密码和新密码。

4.2 图书管理模块图书管理模块的主要功能包括图书的录入、删除、查找等。

- 图书录入:管理员可以在后台管理页面输入图书的信息,包括书名、作者、出版社、ISBN等,并提交保存到数据库中。

- 图书删除:管理员可以根据图书的ID或其他关键字进行图书的删除操作,同时删除数据库中的对应记录。

- 图书查找:管理员和读者可以根据图书的关键字进行查找,系统会显示匹配的图书列表。

图书管理系统程序源代码

图书管理系统程序源代码

源程序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.ShowEnd Sub2.LoginOption ExplicitPrivate Sub cmdOK_Click()Dim strUserName As StringDim strPassword As StringDim strTargetAsp As StringDim conn As ADODB.ConnectionDim rsLogin As ADODB.RecordsetDim strSQL As StringIf Trim(txtUserName.Text) = "" ThenMsgBox "“用户名”不能为空!"Exit SubElsestrUserName = Trim(txtUserName.Text)End IfIf Trim(txtPassword.Text) = "" ThenMsgBox "“口令”不能为空!"Exit SubElsestrPassword = Trim(txtPassword.Text)End If'检查口令、用户身份Set conn = New ADODB.Connectionconn.Provider = "Microsoft.jet.OLEDB.4.0"conn.ConnectionString = "D:\图书管理系统\book.mdb"conn.OpenstrUserName = Replace(strUserName, "'", "“")strSQL = "select*from 系统管理where 用户名='" & strUserName & "'and 密码='" & strPassword & "'"Set rsLogin = conn.Execute(strSQL)If rsLogin.EOF Or rsLogin.BOF ThenMsgBox "用户名或口令错误,请检查!"txtPassword.SelStart = 0txtPassword.SelLength = Len(txtPassword.Text)txtPassword.SetFocusElseSelect Case rsLogin("权限")Case "领导"strTargetAsp = "LeadersMain.asp"Case "主任"strTargetAsp = "ZhuRenMain.asp"Case "秘书"strTargetAsp = "MishuMain.asp"Case "图书管理员"strTargetAsp = "TuShuManagerMain.asp"Case ElsestrTargetAsp = "OtherMain.asp"End SelectSaveSetting "JGYOA", "Login", "UserName", strUserNameHyperlink.NavigateTo "HTTP://" & "/oa/" & strTargetAspEnd If'释放变量Set rsLogin = NothingSet conn = NothingEnd Sub3.frmaddbookinfoPrivate Sub Command1_Click()Dim rs_addbook As New ADODB.RecordsetDim sql As StringIf Trim(Combo1.Text) = " " ThenMsgBox "请选择图书种类", vbOKOnly + vbExclamation, ""Combo1.SetFocusExit SubEnd IfIf Trim(Text1.Text) = " " ThenMsgBox "图书编号不能为空", vbOKOnly + vbExclamation, ""Text1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = " " ThenMsgBox "书名不能为空", vbOKOnly + vbExclamation, ""Text2.SetFocusExit SubEnd IfIf Not IsDate(Text5.Text) ThenMsgBox "请按照yyy-mm-dd格式输入日期", vbOKOnly + vbExclamation, ""Text5.SetFocusExit SubEnd IfIf Not IsDate(Text6.Text) ThenMsgBox "请按照yyy-mm-dd格式输入日期", vbOKOnly + vbExclamation, ""Text6.SetFocusExit SubEnd Ifsql = "select * from 书籍信息where 书籍编号='" & Text1.Text & "'" rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_addbook.EOF Thenrs_addbook.AddNewrs_addbook.Fields(0) = Trim(Text1.Text)rs_addbook.Fields(1) = Trim(Text2.Text)rs_addbook.Fields(2) = Trim(Combo1.Text)rs_addbook.Fields(3) = Trim(Text3.Text)rs_addbook.Fields(4) = Trim(Text4.Text)rs_addbook.Fields(5) = Trim(Text5.Text)rs_addbook.Fields(6) = Trim(Text6.Text)rs_addbook.Fields(7) = "否"rs_addbook.UpdateMsgBox "添加图书信息成功!", vbOKOnly, ""rs_addbook.CloseElseMsgBox "图书编号重复!", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = ""rs_addbook.CloseExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim rs_leibie As New ADODB.RecordsetDim sql As Stringsql = "select * from 图书类别"rs_leibie.Open sql, conn, adOpenKeyset, adLockPessimisticrs_leibie.MoveFirstDo While Not rs_leibie.EOFCombo1.AddItem rs_leibie.Fields(0)rs_leibie.MoveNextLooprs_leibie.CloseEnd Sub4.frmaddbookstylePrivate Sub Command1_Click()Dim rs_bookstyle As New ADODB.RecordsetDim sql As StringIf Trim(Text1.Text) = "" ThenMsgBox "图书种类不能为空", vbOKOnly + vbExclamation, ""Text1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = "" ThenMsgBox "种类编号不能为空", vbOKOnly + vbExclamation, ""Text2.SetFocusExit SubEnd Ifsql = " select * from 图书类别where 类别名称='" & Text1.Text & "'" rs_bookstyle.Open sql, conn, adOpenKeyset, adLockOptimisticIf rs_bookstyle.EOF Thenrs_bookstyle.AddNewrs_bookstyle.Fields(0) = Trim(Text1.Text)rs_bookstyle.Fields(1) = Trim(Text2.Text)rs_bookstyle.UpdateMsgBox "添加图书类别成功!", vbOKOnly, ""rs_bookstyle.CloseElseMsgBox "读者类别重复!", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = " "rs_bookstyle.CloseExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub5.frmaddreaderinfoOption ExplicitDim rs_addreader As New ADODB.RecordsetPrivate Sub Command1_Click()Dim sql As StringIf Trim(Combo1.Text) = "" ThenMsgBox "请选择读者种类", vbOKOnly + vbExclamation, ""Combo1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = "" ThenMsgBox "读者姓名不能为空", vbOKOnly + vbExclamation, ""Text1.SetFocusExit SubEnd IfIf Trim(Text3.Text) = "" ThenMsgBox "读者编号不能为空", vbOKOnly + vbExclamation, ""Text2.SetFocusExit SubEnd Ifsql = "select * from 读者信息where 读者编号='" & Text2.Text & "'" rs_addreader.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_addreader.EOF Thenrs_addreader.AddNewrs_addreader.Fields(0) = Trim(Text2.Text)rs_addreader.Fields(1) = Trim(Text3.Text)rs_addreader.Fields(2) = Trim(Combo2.Text)rs_addreader.Fields(3) = Trim(Combo1.Text)rs_addreader.Fields(4) = Trim(Text5.Text)rs_addreader.Fields(5) = Trim(Text6.Text)rs_addreader.Fields(6) = Trim(Text4.Text)rs_addreader.Fields(7) = CDate(Text1.Text)rs_addreader.UpdateMsgBox "添加读者信息成功!", vbOKOnly, ""rs_addreader.CloseElseMsgBox "读者编号重复!", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = ""rs_addreader.CloseExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Combo2.AddItem "男"Combo2.AddItem "女"Dim rs_leibie As New ADODB.RecordsetDim sql As Stringsql = "select * from 读者类别"rs_leibie.Open sql, conn, adOpenKeyset, adLockPessimisticrs_leibie.MoveFirstDo While Not rs_leibie.EOFCombo1.AddItem rs_leibie.Fields(0)rs_leibie.MoveNextLooprs_leibie.CloseEnd Sub6.frmaddreaderstyleOption ExplicitDim rs_readerstyle As New ADODB.RecordsetPrivate Sub Command1_Click()Dim sql As StringIf Trim(Text1.Text) = "" ThenMsgBox "读者种类不能为空!", vbOKOnly + vbExclamation, ""Text1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = "" ThenMsgBox "借书数量不能为空!", vbOKOnly + vbExclamation, ""Text2.SetFocusExit SubEnd IfIf Trim(Text3.Text) = "" ThenMsgBox "借书期限不能为空!", vbOKOnly + vbExclamation, ""Text3.SetFocusExit SubEnd IfIf Trim(Text4.Text) = "" ThenMsgBox "有限期限不能为空!", vbOKOnly + vbExclamation, ""Text4.SetFocusExit SubEnd Ifsql = "select*from 读者类别where 种类名称='" & Text1.Text & "'" rs_readerstyle.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_readerstyle.EOF Thenrs_readerstyle.AddNewrs_readerstyle.Fields(0) = Trim(Text1.Text)rs_readerstyle.Fields(1) = Trim(Text2.Text)rs_readerstyle.Fields(2) = Trim(Text3.Text)rs_readerstyle.Fields(3) = Trim(Text4.Text)rs_readerstyle.UpdateMsgBox "添加读者类别成功!", vbOKOnly, ""rs_readerstyle.CloseElseMsgBox "读者类别重复!", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = ""rs_readerstyle.CloseExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub7.frmadduserPrivate Sub Command1_Click()Dim sql As StringDim rs_add As New ADODB.RecordsetIf Trim(Text1.Text) = "" ThenMsgBox "用户名不能为空", vbOKOnly + vbExclamation, ""Exit SubText1.SetFocusElsesql = "select * from 系统管理"rs_add.Open sql, conn, adOpenKeyset, adLockPessimisticWhile (rs_add.EOF = False)If Trim(rs_add.Fields(0)) = Trim(Text1.Text) ThenMsgBox "已有这个用户", vbOKOnly + vbExclamation, ""Text1.SetFocusText1.Text = ""Text2.Text = ""Text3.Text = ""Combo1.Text = ""Exit SubElsers_add.MoveNextEnd IfWendIf Trim(Text2.Text) <> Trim(Text3.Text) ThenMsgBox "两次密码不一致", vbOKOnly + vbExclamation, ""Text2.SetFocusText2.Text = ""Text3.Text = ""Exit SubElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, ""Combo1.SetFocusCombo1.Text = ""Exit SubElsers_add.AddNewrs_add.Fields(0) = Text1.Textrs_add.Fields(1) = Text2.Textrs_add.Updaters_add.CloseMsgBox "添加用户成功", vbOKOnly + vbExclamation, ""Unload MeEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Combo1.AddItem "system"Combo1.AddItem "guest"End Sub8.frmbackbookinfoPrivate Sub Combo1_Click()Combo2.ListIndex = Combo1.ListIndexEnd SubPrivate Sub Combo2_Click()Combo1.ListIndex = Combo2.ListIndexEnd SubPrivate Sub Combo3_Click()Combo4.ListIndex = Combo3.ListIndexEnd SubPrivate Sub Combo4_Click()Combo3.ListIndex = Combo4.ListIndexEnd SubPrivate Sub Command1_Click()Dim book_num As StringDim reader_num As StringDim answer As StringDim rs_back As New ADODB.RecordsetDim sql As StringOn Error GoTo delerrorbook_num = DataGrid1.Columns(3).CellV alue(DataGrid1.Bookmark) reader_num = DataGrid1.Columns(1).CellV alue(DataGrid1.Bookmark) answer = MsgBox("确定要还这本书吗?", vbY esNo, "")If answer = vbY es Thensql = "select * from 借阅信息where 书籍编号='" & book_num & "'"rs_back.CursorLocation = adUseClientrs_back.Open sql, conn, adOpenKeyset, adLockPessimisticrs_back.Deleters_back.Updaters_back.Closesql = "select * from 书籍信息where 书籍编号='" & book_num & "'"rs_back.CursorLocation = adUseClientrs_back.Open sql, conn, adOpenKeyset, adLockPessimisticrs_back.Fields(7) = "否"rs_back.Updaters_back.Closesql = "select * from 读者信息where 读者编号='" & reader_num & "'"rs_back.CursorLocation = adUseClientrs_back.Open sql, conn, adOpenKeyset, adLockPessimisticrs_back.Fields(8) = rs_back.Fields(8) - 1rs_back.Updaters_back.CloseIf findform = True ThenCommand1_ClickElseCommand2_ClickEnd IfMsgBox "成功删除!", vbOKOnly + vbExclamation, ""DataGrid1.AllowDelete = FalseElseExit SubEnd Ifdelerror:If Err.Number <> 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Command3_Click()Dim rs_reader As New ADODB.RecordsetDim sql As Stringfindform = Turesql = "select*from 借阅信息where 读者姓名='" & Combo2.Text & "'" rs_reader.CursorLocation = adUseClientrs_reader.Open sql, conn, adOpenKeyset, adLockPessimisticSet DataGrid1.DataSource = rs_readerDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseEnd SubPrivate Sub Command4_Click()Dim rs_book As New ADODB.RecordsetDim sql As Stringfindform = Falsesql = "select * from 借阅信息where 书籍编号='" & Combo3.Text & "'" rs_book.CursorLocation = adUseClientrs_book.Open sql, conn, adOpenKeyset, adLockPessimisticSet DataGrid1.DataSource = rs_bookDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseEnd SubPrivate Sub Form_Load()Dim rs_reader As New ADODB.RecordsetDim rs_book As New ADODB.RecordsetDim sql As Stringsql = "select * from 读者信息"rs_reader.CursorLocation = adUseClientrs_reader.Open sql, conn, adOpenKeyset, adLockPessimisticIf Not rs_reader.EOF ThenDo While Not rs_reader.EOFCombo1.AddItem rs_reader.Fields(1)Combo2.AddItem rs_reader.Fields(0)rs_reader.MoveNextLoopEnd Ifrs_reader.Closesql = "select * from 借阅信息"rs_book.CursorLocation = adUseClientrs_book.Open sql, conn, adOpenKeyset, adLockPessimisticIf Not rs_book.EOF ThenDo While Not rs_book.EOFCombo3.AddItem rs_book.Fields(3)Combo4.AddItem rs_book.Fields(4)rs_book.MoveNextLoopEnd Ifrs_book.CloseEnd Sub9.frmborrowbookOption ExplicitDim leibie As StringDim qixian As IntegerDim shumu As IntegerDim maxnum As IntegerPrivate Sub Combo1_Change()Combo2.ListIndex = Combo1.ListIndexEnd SubPrivate Sub Combo2_Change()Combo1.ListIndex = Combo2.ListIndexEnd SubPrivate Sub Command1_Click()Dim rs_borrowbook As New ADODB.RecordsetDim sql As Stringsql = "select * from读者信息where读者编号='" & Combo1.Text & "" rs_borrowbook.Open sql, conn.adOpenKeyset, adLockPessimisticleibie = rs_borrowbook.Fields(3)shumu = rs_borrowbook.Fields(8)rs_borrowbook.Closesql = "select * from读者类别where种类名称='" & leibie & ""rs_borrowbook.Open sql, conn.adOpenKeyset, adLockPessimistic qixian = rs_borrowbook.Fields(2)maxnum = rs_borrowbook.Fields(1)rs_borrowbook.CloseIf shumu >= maxnum ThenMsgBox "该读者借书数额已满!", vbOKOnly + vbExclamation Exit SubEnd Ifsql = "select * from借阅信息"rs_borrowbook.Open sql, conn.adOpenKeyset, adLockPessimisticrs_borrowbook.AddNewrs_borrowbook.Fields(1) = Combo1.Textrs_borrowbook.Fields(2) = Combo2.Textrs_borrowbook.Fields(3) = Label8.Captionrs_borrowbook.Fields(4) = Label9.Captionrs_borrowbook.Fields(5) = Daters_borrowbook.Fields(6) = DateAdd("Ww", qixian, Date)rs_borrowbook.Updaters_borrowbook.Closesql = "select * from书籍信息where书籍编号='" & book_num & ""rs_borrowbook.Open sql, conn.adOpenKeyset, adLockPessimisticrs_borrowbook.Fields(7) = "是"rs_borrowbook.Updaters_borrowbook.Closesql = "select * from读者信息where读者编号='" & Combo1.Text & "" rs_borrowbook.Open sql, conn.adOpenKeyset, adLockPessimisticrs_borrowbook.Fields(8) = rs_borrowbook.Fields(8) + 1rs_borrowbook.Updaters_borrowbook.CloseMsgBox "本书借阅成功!", vbOKOnly + vbExclamationUnload MeEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim rs_borrow As New ADODB.RecordsetDim rs_reader As New ADODB.RecordsetDim sql As Stringsql = "select * from 书籍信息where 书籍编号= '" & book_num & "'" rs_borrow.Open sql, conn, adOpenKeyset, adLockPessimisticLabel8.Caption = rs_borrow.Fields(0)Label9.Caption = rs_borrow.Fields(1)Label10.Caption = rs_borrow.Fields(2)Label11.Caption = rs_borrow.Fields(3)Label12.Caption = rs_borrow.Fields(4)Label13.Caption = rs_borrow.Fields(5)Label14.Caption = rs_borrow.Fields(6)sql = "select * from 读者信息"rs_reader.Open sql, conn, adOpenKeyset, adLockPessimisticIf Not rs_reader.EOF ThenDo While Not rs_reader.EOFCombo1.AddItem rs_reader.Fields(1)Combo2.AddItem rs_reader.Fields(0)rs_reader.MoveNextLoopElseMsgBox "请先登记读者", vbOKOnly + vbExclamationExit SubEnd Ifrs_borrow.Closers_reader.CloseEnd Sub10.frmchangepwdPrivate Sub Command1_Click()Dim rs_chang As New ADODB.RecordsetDim sql As StringIf Trim(Text1.Text) <> Trim(Text2.Text) ThenMsgBox "密码不一致", vbOKOnly + vbExclamation, ""Text2.SetFocusText1.Text = ""Text2.Text = ""Elsesql = "select*from 系统管理where 用户名='" & userID & "'"rs_chang.Open sql, conn, adOpenKeyset, adLockPessimisticrs_chang.Fields(1) = Text1.Textrs_chang.Updaters_chang.CloseMsgBox "密码修改成功", vbOKOnly + vbExclamation, ""Unload MeEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub11.frmfindbookOption ExplicitDim panduan As StringPrivate Sub Command1_Click()Dim rs_findbook As New ADODB.RecordsetDim sql As StringIf Check1.V alue = vbChecked Thensql = "书名='" & Trim(Text1.Text & "") & "'"End IfIf Check2.V alue = vbChecked ThenIf Trim(sql) = "" Thensql = "类别='" & Trim(Combo1.Text & "") & "'"Elsesql = sql & "and 书名='" & Trim(Combo1.Text & "") & "'"End IfEnd IfIf Check3.V alue = vbChecked ThenIf Trim(sql) = "" Thensql = "作者='" & Trim(Text2.Text & "") & "'"Elsesql = sql & "and 作者='" & Trim(Text2.Text & "") & "'"End IfEnd IfIf Check4.V alue = vbChecked ThenIf Trim(sql) = "" Thensql = "出版社='" & Trim(Text3.Text & "") & "'"Elsesql = sql & "and 出版社='" & Trim(Text3.Text & "") & "'"End IfEnd IfIf Check5.V alue = vbChecked ThenIf Trim(sql) = "" Thensql = "书籍编号='" & Trim(Text4.Text & "") & "'"Elsesql = sql & "and 书籍编号='" & Trim(Text4.Text & "") & "'"End IfEnd IfIf Trim(sql) = "" ThenMsgBox "请选择查询方式!", vbOKOnly + vbExclamationExit SubEnd Ifsql = "select * from 书籍信息where " & sqlrs_findbook.CursorLocation = adUseClientrs_findbook.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_findbookEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Command3_Click()If Trim(book_num) = "" ThenMsgBox "请选择要借阅的图书!", vbOKOnly + vbExclamationExit SubEnd IfIf panduan = "是" ThenMsgBox "此书已被借出!", vbOKOnly + vbExclamationExit SubEnd Iffrmborrowbook.ShowEnd SubPrivate Sub DataGrid1_RowColChange(LastRow As V ariant, ByV al LastCol As Integer) book_num = DataGrid1.Columns(0).CellV alue(DataGrid1.Bookmark)panduan = DataGrid1.Columns(7).CellV alue(DataGrid1.Bookmark)End SubPrivate Sub Form_Load()Dim rs_find As New ADODB.RecordsetDim sql As Stringsql = "select * from 图书类别"rs_find.Open sql, conn, adOpenKeyset, adLockPessimisticrs_find.MoveFirstIf Not rs_find.EOF ThenDo While Not rs_find.EOFCombo1.AddItem rs_find.Fields(0)rs_find.MoveNextLoopCombo1.ListIndex = 0End Ifrs_find.CloseEnd Sub12.frmfindborrowinfoPrivate Sub Command1_Click()Dim sql As StringDim rs_find As New ADODB.RecordsetIf Option1.V alue = True Thensql = "select * from 书籍信息where 是否被借出='是'"End IfIf Option2.V alue = True Thensql = "select * from 书籍信息where 是否被借出='否'"End IfIf Option3.V alue = True Thensql = "select * from 书籍信息where 读者姓名='" & Text1.Text & "'" End Ifrs_find.CursorLocation = adUseClientrs_find.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_findEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub13.frmfindreaderOption ExplicitPrivate Sub Command1_Click()Dim rs_findreader As New ADODB.RecordsetDim sql As StringIf Check1.V alue = vbChecked Thensql = "读者编号='" & Trim(Text1.Text & "") & "'"End IfIf Check2.V alue = vbChecked ThenIf Trim(sql) = "" Thensql = "读者姓名='" & Trim(Text2.Text & "") & "'"Elsesql = sql & "and读者姓名='" & Trim(Text2.Text & "") & "'" End IfEnd IfIf Check3.V alue = vbChecked ThenIf Trim(sql) = "" Thensql = "读者类别='" & Trim(Combo1.Text & "") & "'"Elsesql = sql & "and读者类别='" & Trim(Combo1.Text & "") & "'" End IfEnd Ifsql = "select * from 读者信息where " & sqlrs_findreader.CursorLocation = adUseClientrs_findreader.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_findreader'rs_findreader.CloseEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim rs_find As New ADODB.RecordsetDim sql As Stringsql = "select * from 读者类别"rs_find.Open sql, conn, adOpenKeyset, adLockPessimisticIf Not rs_find.EOF ThenDo While Not rs_find.EOFCombo1.AddItem rs_find.Fields(0)rs_find.MoveNextLoopCombo1.ListIndex = 0End Ifrs_find.CloseEnd Sub14.frmmodifybookinfoOption ExplicitDim rs_book As New ADODB.RecordsetPrivate Sub cmdcancel_Click()rs_book.CancelUpdateDataGrid1.AllowAddNew = FalseDataGrid1.AllowUpdate = Falsecmdmodify.Enabled = Truecmddel.Enabled = Falsecmdcancel.Enabled = Falsecmdupdate.Enabled = FalseEnd SubPrivate Sub cmddel_Click()Dim answer As StringOn Error GoTo delerroranswer = MsgBox("确定要删除吗?", vbY esNo, "")If answer = vbY es ThenDataGrid1.AllowDelete = Truers_book.Deleters_book.UpdateDataGrid1.RefreshMsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = FalseElseExit SubEnd Ifdelerror:If Err.Number <> 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub cmdmodify_Click()Dim answer As StringOn Error GoTo cmdmodifycmddel.Enabled = Falsecmdmodify.Enabled = Falsecmdupdate.Enabled = Truecmdcancel.Enabled = TrueDataGrid1.AllowUpdate = Truecmdmodify:If Err.Number <> 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub cmdupdate_Click()If Not IsNull(DataGrid1.Bookmark) Thenrs_book.UpdateEnd Ifcmdmodify.Enabled = Truecmddel.Enabled = Truecmdcancel.Enabled = Falsecmdupdate.Enabled = FalseDataGrid1.AllowUpdate = FalseMsgBox "修改成功!", vbOKOnly + vbExclamation, "" End SubPrivate Sub Form_Load()Dim sql As StringOn Error GoTo loaderrorsql = "select * from 书籍信息"rs_book.CursorLocation = adUseClientrs_book.Open sql, conn, adOpenKeyset, adLockPessimistic cmdupdate.Enabled = FalseDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseIf userpow = "guest" ThenFrame2.Enabled = FalseEnd IfSet DataGrid1.DataSource = rs_bookExit Subloaderror:MsgBox Err.DescriptionEnd SubPrivate Sub Form_Unload(Cancel As Integer)Set DataGrid1.DataSource = Nothingrs_book.CloseEnd Sub15.frmmodifybookstyleOption ExplicitDim rs_reader As New ADODB.RecordsetPrivate Sub cmdcancel_Click()rs_reader.CancelUpdateDataGrid1.AllowAddNew = FalseDataGrid1.AllowUpdate = Falsecmdmodify.Enabled = Truecmddel.Enabled = Truecmdcancel.Enabled = Falsecmdupdate.Enabled = FalseEnd SubPrivate Sub cmddel_Click()Dim answer As StringOn Error GoTo delerroranswer = MsgBox("确定要删除吗?", vbY esNo, "")If answer = vbY es ThenDataGrid1.AllowDelete = Truers_reader.Deleters_reader.UpdateDataGrid1.RefreshMsgBox "成功删除!", vbOKOnly + vbExclamation, ""DataGrid1.AllowDelete = FalseElseExit SubEnd Ifdelerror:If Err.Number <> 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub cmdmodify_Click()Dim answer As StringOn Error GoTo cmdmodifycmddel.Enabled = Falsecmdmodify.Enabled = Falsecmdupdate.Enabled = Truecmdcancel.Enabled = TrueDataGrid1.AllowUpdate = Truecmdmodify:If Err.Number <> 0 ThenMsgBox Err.DescriptionEnd IfEnd SubPrivate Sub cmdupdate_Click()If Not IsNull(DataGrid1.Bookmark) Thenrs_reader.UpdateEnd Ifcmdmodify.Enabled = Truecmddel.Enabled = Truecmdcancel.Enabled = Falsecmdupdate.Enabled = FalseDataGrid1.AllowUpdate = FalseMsgBox "修改成功!", vbOKOnly + vbExclamation, ""End SubPrivate Sub Form_Load()Dim sql As StringOn Error GoTo loaderrorsql = "select * from 图书类别"rs_reader.CursorLocation = adUseClientrs_reader.Open sql, conn, adOpenKeyset, adLockPessimisticcmdupdate.Enabled = False '窗体刚刚加载时,"取消"按钮应设置为不可用,即将其Enabled属性设为False'设定DataGrid控件属性DataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseIf userpow = "guest" ThenFrame2.Enabled = FalseEnd If'添加错误处理语句Set DataGrid1.DataSource = rs_reader '使用DataGrid控件来显示图书类型数据表中的数据信息Exit Subloaderror:MsgBox Err.DesctiptionEnd SubPrivate Sub Form_Unload(Cancel As Integer)Set DataGrid1.DataSource = Nothingrs_reader.CloseEnd Sub16.frmmodifyreaderstyleOption ExplicitDim rs_reader As New ADODB.RecordsetPrivate Sub cmdcancel_Click()rs_reader.CancelUpdateDataGrid1.RefreshDataGrid1.AllowAddNew = FalseDataGrid1.AllowUpdate = Falsecmdmodify.Enabled = Truecmddel.Enabled = Truecmdcancel.Enabled = Falsecmdupdate.Enabled = FalseEnd SubPrivate Sub cmddel_Click()Dim answer As StringOn Error GoTo delerroranswer = MsgBox("确定要删除吗?", vbY esNo, "")If answer = vbY es ThenDataGrid1.AllowDelete = Truers_reader.Deleters_reader.UpdateDataGrid1.RefreshMsgBox "成功删除!", vbOKOnly + vbExclamation, ""DataGrid1.AllowDelete = FalseElseExit Sub。

图书管理系统源代码 (3)

图书管理系统源代码 (3)

图书管理系统源代码1. 简介图书管理系统是一种用于管理图书馆或书店中图书信息的软件系统。

它主要提供了图书的添加、编辑、删除、查询等功能,便于管理人员对图书信息进行集中管理,同时也能方便读者进行图书的查询和借阅操作。

本文档将介绍一个基于Python的简单图书管理系统的源代码,以及其使用说明和功能演示。

2. 系统设计2.1 使用的库该图书管理系统使用了以下Python库来实现不同功能:•Tkinter:用于GUI界面的设计和实现。

•SQLite3:用于图书信息的持久化存储。

2.2 数据库设计在该图书管理系统中,我们使用了一个简单的图书信息表来存储图书的相关信息。

该表包含以下字段:•book_id:图书ID,唯一标识一个图书。

•book_title:图书标题,描述图书的名称。

•book_author:图书作者,描述图书的作者信息。

•book_publisher:图书出版商,描述图书的出版商信息。

2.3 功能设计该图书管理系统实现了以下功能:•添加图书:管理员可以添加一本新的图书到系统中。

•编辑图书:管理员可以编辑已存在的图书信息。

•删除图书:管理员可以从系统中删除指定的图书。

•查询图书:管理员和读者都可以根据图书的标题、作者或出版商来查询图书信息。

3. 源代码以下是该图书管理系统的源代码(使用Python编写):```python import tkinter as tk import sqlite3连接到数据库conn = sqlite3.connect(’library.db’) c = conn.cursor()创建图书信息表c.execute(’’’ CREATE TABLE IF NOT EXISTS books ( book_id INTEGER PRIMARY KEY AUTOINCREMENT, book_title TEXT, book_author TEXT, book_publisher TEXT ) ’’’)窗口初始化window = () window.title(。

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

目录一.需求描述和系统边界 (2)二.需求分析 (2)1.业务需求 (2)2.功能需求及数据需求分析 (2)3.业务规则分析 (3)三.实体集及属性 (4)四.联系集及E-R图 (5)五.逻辑数据库设计 (6)六.数据库编程 (7)1.创建表 (7)2.创建触发器 (10)3.管理员操作 (10)4.读者操作 (11)5. 管理员对借阅关系的操作 (12)七.代码实现 (13)1.输入数据设计 (13)2.完成借阅、续借、归还的操作设计 (15)八.模式求精 (17)九.小结 (17)一.需求描述和系统边界数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。

对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。

随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的数目逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,创建图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。

该图书管理系统支持2类用户:管理员和读者。

读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。

二.需求分析1.业务需求图书管理系统的主要业务包括:包括图书馆内书籍的信息,读者信息,以及借阅信息。

此系统功能分为面向读者和面向管理员两部分,其中读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。

2.功能需求及数据需求分析(1)注册管理管理员注册。

管理员注册时要求填写基本信息,包括管理员编号、姓名、性别、联系电话、家庭住址。

系统检查所有信息填写正确后管理员注册成功。

读者注册。

读者注册时要求填写基本信息,包括读者编号、姓名、性别、联系电话、学院等。

系统检查所有信息填写正确后读者注册成功。

(2)图书管理增加图书信息。

当有新的图书入库时,管理员负责添加图书信息,包括书名、分类、图书编号、作者、出版社、出版时间、简介等。

图书信息查询。

管理系统需提供方便快捷的方式进行图书检索。

如可以输入指定的关键词进行简单查询,也可以根据书名、分类、图书编号、作者、出版社、出版时间、简介等单一或组合条件进行查询。

图书信息更新及删除。

图书信息发布后,管理员可以随时更新和删除图书信息。

(3)借阅图书读者登入图书管理系统之后,将需要的图书的信息输入,可以借阅图书。

由管理员将图书信息修改为“不在馆”。

(4)续借图书读者借书之后,一个月后应归还。

如有需要可以续借图书30天。

此操作由管理员完成。

(5)归还图书读者将已借图书归还给图书馆时,需要管理员确认信息。

并将图书信息修改为“在馆”3.业务规则分析基于功能需求,通过进一步了解,图书管理业务需求如下:(1)所有用户均可以搜索图书信息。

但只有管理员可以对图书信息进行修改。

(2)管理员由管理员编号唯一标识。

(3)每位读者由读者编号唯一标识。

(4)图书编号是图书的唯一标识。

(5)借阅图书后需记录图书当前状态包括在馆、不在馆、已归还、未归还、是否续借。

(6)同一图书分类中可以有多本图书,但是每本图书只能在一种个图书分类中。

三.实体集及属性图3-1图书实体集E-R图图3-2管理员实体集E-R图图3-3读者实体集E-R图图3-4图书分类实体集E-R图四.联系集及E-R图五.逻辑数据库设计表3-1 BookClass表3-4 Admin表3-7 Admin_Reader六.数据库编程1.创建表(1)创建图书分类表BookClassCREATE TABLE BookClass(classNo varchar(3)not null, className varchar(20)null, CONSTRAINT BookClassPK PRIMARY KEY(classNo) )(2)创建图书表BookCREATE TABLE Book(bookNo varchar(20)not null,classNo varchar(3)not null,bookName varchar(50) not null,author varchar(12)not null,publishName varchar(50),publishDate datetime,introduction varchar(200),CONSTRAINT BookPK PRIMARY KEY(bookNo),CONSTRAINT BookPK1 FOREIGN KEY(classNo)REFERENCES BookClass (classNo))(3)创建管理员表AdminCREATE TABLE Admin(adminNo varchar(12)not null,adminName varchar(12)not null,aSex varchar(2) not null,aPhoneNumber varchar(12) null,address varchar(40) null,CONSTRAINT AdminPK PRIMARY KEY(adminNo))(4)创建读者表ReaderCREATE TABLE Reader(readerNo varchar(12) not null,readerName varchar(10) not null,rSex varchar(2)not null,rPhoneNumber varchar(12) null,institute varchar(20) not null,effectDate datetime,lostEffectDate datetime,breakRules char(2),borrowAdd int,CONSTRAINT ReaderPK PRIMARY KEY(readerNo))(5)创建借阅表BorrowCREATE TABLE Borrow(adminNo varchar(12) not null,bookNo varchar(20)not null,readerNo varchar(12) not null,borrowDate datetime not null,shouldDate datetime not null,renewal char(4) not null,CONSTRAINT BorrowPK PRIMARY KEY(adminNo,readerNo,bookNo), CONSTRAINT BorrowPK1 FOREIGN KEY(adminNo)REFERENCES Admin(adminNo),CONSTRAINT BorrowPK2 FOREIGN KEY(readerNo)REFERENCES Reader(readerNo),CONSTRAINT BorrowPK3 FOREIGN KEY(bookNo)REFERENCESBook(bookNo),)(6)创建管理员_图书表Admin_BookCREATE TABLE Admin_Book(adminNo varchar(12) not null,bookNo varchar(20) not null,shopTime datetime,inLibrary char(4)CONSTRAINT Admin_BookPK PRIMARY KEY(adminNo,bookNo), CONSTRAINT Admin_BookPK1 FOREIGN KEY(adminNo)REFERENCES Admin(adminNo),)(7)创建管理员_读者 Admin_ReaderCREATE TABLE Admin_Reader(adminNo varchar(12) not null,readerNo varchar(12) not null,bookNo varchar(20) not null,brCheck char(4) not null,CONSTRAINT Admin_readerPK PRIMARY KEY(adminNo,readerNo,bookNo), CONSTRAINT Admin_readerPK1 FOREIGN KEY(adminNo)REFERENCES Admin(adminNo),CONSTRAINT Admin_readerPK2 FOREIGN KEY(readerNo)REFERENCES Reader(readerNo),CONSTRAINT Admin_readerPK3 FOREIGN KEY(bookNo)REFERENCES Book(bookNo))2.创建触发器Create Trigger RENEWOn Borrowfor UpdateAsIf Update(renewal)beginUpdate BorrowSet shouldDate=shouldDate+30Where adminNo=1001end3.管理员操作(1)注册INSERT INTO Admin (adminNo, adminName, aSex, aPhoneNumber, address) V ALUES(#adminNo, #adminName, #aSex, #aPhoneNumber, #address)(2)注销DELETE FROM AdminWHERE(adminNo =#adminNo);(3)修改个人信息UPDATE AdminSET(adminNo=#adminNo, adminName= #adminName, aSex=#aSex, aPhoneNumber #aPhoneNumber, address#address);(4)增加图书INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)V ALUES(#bookNo, #classNo,#bookName, #author, #publishName, #publishDate,#introduction)(5)删除图书DELETE FROM BookWHERE(bookNo=#bookNo)(6)修改图书信息UPDATE Book (bookNo=#bookNo, classNo=#classNo,bookName=#bookName, author=#author, publishName=#publishName, publishDate=#publishDate, introduction=#introduction)(7)增加图书分类INSERT INTO BookClass(classNo,className)V ALUES(#classNo,#className)(8)删除图书分类DELETE FROM BookClassWHERE(classNo=#classNo)(9)更新图书分类UPDATE BookClass(classNo=#classNo,className=#className)4.读者操作(1)注册INSERT INTO Reader (readerNo, readerName, rSex, rPhoneNumber , institute, effectDate, lostEffectDate, breakRules,borrowAdd)V ALUES(#readerNo, #readerName, #rSex,# rPhoneNumber , #institute,#effectDate,# lostEffectDate, #breakRules,#borrowAdd)(2)注销DELETE ReaderWHERE(readerNo=#readerNo)(3)修改个人信息UPDATE ReaderSET (readerNo =#readerNo, readerName =#readerName, rSex= #rSex, rPhoneNumber =# rPhoneNumber , institute= #institute, effectDate=#effectDate ,lostEffectDate=# lostEffectDate, breakRules =#breakRules, borrowAdd =#borrowAdd)(4)查询SELECT * FROM BookWHERE bookNo=#bookNo OR bookName=#bookName5. 管理员对借阅关系的操作(1) 插入读者的信息INSERT INTO Borrow(adminNo, bookNo,readerNo,borrowDate,shouldDate,renewal)V ALUES(#adminNo, #bookNo,# readerNo,#borrowDate,#shouldDate,#renewal)(2) 更新信息①更新借出信息UPDATE BorrowSET(borrowDate =# borrowDate, shouldDate = shouldDate +30,renewal=’0’) WHERE(adminNo =# adminNo AND readerNo =#readerNo AND bookNo =#bookNo)UPDATE Admin_BookSET(inLibrary=’0’)WHERE(bookNo=#bookNo)UPDATA ReaderSET (borrowAdd= borrowAdd +1)WHERE(readerNo=#readerNo)INSERT INTO Admin_Reader (adminNo, readerNo, bookNo, brCheck)V ALUES(#adminNo, #readerNo, #bookNo, #brCheck)②更新续借信息UPDATE BorrowSET (renewal=#renewal)WHERE (adminNo=# adminNo AND readerNo=#readerNo AND bookNo=#bookNo) ③更新还书信息UPDATE Admin_BookSET(inLibrary=1)WHERE(bookNo =#bookNo)UPDATE Admin_ReaderSET(brCheck =’1’)WHERE(adminNo =# adminNo AND readerNo =# readerNo AND bookNo =# bookNo)七.代码实现1.输入数据设计(1)插入图书分类INSERT INTO BookClass (classNo,className)VALUES('C01','信息技术教材')INSERT INTO BookClass (classNo,className)VALUES('C02','小说')INSERT INTO BookClass (classNo,className)VALUES('C03','外语')INSERT INTO BookClass (classNo,className)VALUES('C04','漫画')(2)插入管理员INSERT INTO Admin (adminNo, adminName, aSex, aPhoneNumber, address) VALUES('1001','王子','女','012345678','北京')(3)插入读者INSERT INTO Reader (readerNo, readerName, rSex, rPhoneNumber , institute, effectDate, lostEffectDate, breakRules,borrowAdd)VALUES('11111','李瑞','男','123456789','软件','2010-09-02','2014-06-30','1','10')(4)插入图书INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1234','C01','数据库系统原理与设计','万常选','清华大学出版社','2009-03-05','数据库教程')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1235','C01','JAVA','吴京','清华大学出版社','2007-05-07','JAVA基础教程')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1236','C02','红楼梦','曹雪芹','清华大学出版社','2009-09-04','中国四大名著之一')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1237','C03','英语写作','刘平惠','浙江大学出版社','2006-10-21','基础英语写作教程')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1238','C04','最漫画','郭敬明','长江出版社','2011-03-17','漫画连载')(5)插入管理员_书籍表INSERT INTO Admin_Book (adminNo, bookNo ,shopTime, inLibrary) VALUES('1001','S1234','2010-7-7','0')INSERT INTO Admin_Book (adminNo, bookNo, shopTime, inLibrary) VALUES('1001','S1235','2008-7-8','1')(6)插入借阅信息INSERT INTO Borrow (adminNo,bookNo,readerNo,borrowDate,shouldDate ,renewal)VALUES('1001','S1234','11111','2012-6-1','2010-7-1','0')INSERT INTO Admin_Reader (adminNo, readerNo, bookNo,brCheck ) VALUES('1001','11111','S1234','0')2.完成借阅、续借、归还的操作设计假设读者想借书籍名为《JAVA》且不知道bookNo(1)借阅操作如下:if((select bookName from Book where bookNo='S1235')='JAVA')beginINSERT INTO Borrow (adminNo, bookNo,readerNo,borrowDate,shouldDate ,renewal)VALUES('1001','S1235','11111','2012-6-8','2012-7-8','0')UPDATE Admin_BookSET inLibrary ='0'WHERE bookNo='S1235'UPDATE ReaderSET borrowAdd=borrowAdd+1WHERE readerNo ='11111'INSERT INTO Admin_Reader (adminNo, readerNo, bookNo, brCheck)VALUES('1001','11111','S1235','0')print'借阅成功!'endelseprint'借阅失败!'(2)续借操作如下:if((SELECT renewalFROM BorrowWHERE adminNo ='1001'AND readerNo ='11111'AND bookNo ='S1235')='0') beginUPDATE BorrowSET renewal='1'WHERE adminNo ='1001'AND readerNo ='11111'AND bookNo ='S1235'print'续借成功!'endelseprint'续借失败!'(3)归还操作如下:If((SELECT brCheckFROM Admin_ReaderWHERE adminNo ='1001'AND readerNo ='11111'AND bookNo ='S1235')='0') BEGINUPDATE Admin_BookSET inLibrary ='1'WHERE bookNo ='S1235'print'还书成功!'endelseprint'还书失败!'八.模式求精Admin_Book (adminNo, bookNo, shopTime, inLibrary)依据BCNF, Admin_Book可以分解为以下两个模式:Admin_ Book (bookNo, shopTime, inLibrary)Admin_s(adminNo,bookNo)可以验证,关系模式满足BCNF要求,且分解是无损分解。

相关文档
最新文档