数据库图书管理系统(含代码)
图书管理系统数据库源代码
图书管理系统数据库源代码//创建工程及设计主界面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>"+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版)图书管理系统源代码
图书管理系统源代码(一)程序代码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)
图书管理系统源代码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(。
图书管理系统数据库实习报告(附设计过程及代码)
数据库系统课程设计学生姓名:李佳蓉班学号:114122-21指导教师:林伟华中国地质大学信息工程学院2014年3月20日图书管理系统1、需求分析图书管理系统中有图书、读者等信息。
图书有书号,书名,作者,出版社。
读者有读者号,姓名,地址,性别,年龄,单位。
对每本被借出的图书有读者号,书号,借书日期和应还日期。
常见的操作有对新购进的图书要进行入库,对丢失的图书要销毁其图书信息。
对新加盟的读者,将其信息加入到读者信息表中;对某些特定的读者,将其信息从读者信息表中删除。
当读者情况变化时,修改读者信息表中相应的记录。
对已还的图书确认书号和书名无误后可办理还书手续,并对借书信息作相应标记。
查询某种图书数量等。
C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。
客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS(数据库管理系统)的核心功能。
这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。
通过模仿书中学生管理系统的模式,建立一个基于C/S结构的图书管理系统,使得图书馆的图书管理,规范化,自动化进而达到提高图书管理效率的目的。
系统应既满足的条件有图书管理员对图书的管理,和读者对借书的需要,并达到操作过程中的直观,方便,安全等要求。
系统采用模块化设计的方法。
对于本系统,应有基本功能的实现:数据维护功能:保护管理员信息数据,保护读者信息数据,保护借出信息数据。
管理员功能:对图书信息的添加、修改、删除和查询,以及对读者信息的添加、修改和删除,还有根据读者的需求将图书借出、收还并记录借出记录。
读者功能:读者可通过本系统查询图书信息和借出记录。
2、概念设计E-R图:数据字典:各模块基本数据项:管理员(Manager)图书(Book)借出记录(Loanbook)数据结构:数据流图:下图是图书管理系统的数据流图。
图1 图书管理系统数据流图对“P1 内部管理”和“P2 借书管理”两个处理框进一步细化后得出第二层数据流图。
图书管理系统程序代码
#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。
图书管理系统的C#代码完整版
C#代码清单共1个项目,包含5个类。
项目: librarysystem类:主类代码:namespace librarysystem{ PublicationISBN = PublicationISBN;= PublicationName;= PublicationAuthor;= PublicationType;= PublicationStatus;}}}读者类代码:namespace librarysystem{ 询图书");("2.借书服务");("3.还书服务");("4.新出版物入库");("5.录入新读者");("6.查询读者的借阅信息");("7.退出管理系统");("-------------------------------------------------------------------");bool flag;do{flag = false;("请选择:");string key = ();switch (key){case"1":("请输入需要查询图书的书名:");ShowPubInfo();break;case"2":("请输入您的姓名:");();ShowBorrowInfo();("请输入您的姓名:");();ShowReturnInfo();break;case"4":("请按照提示逐步输入需要入库出版物的信息……");ShowAddPublications();break;case"5":("请按照提示逐步输入新注册读者的信息……");ShowAddReaders();break;case"6":("请输入您的姓名: ");();ShowRedPubInfo;break;case"7":flag = false;break;default:("无此业务,是否重新选择(y/n)");string answer = ();if (answer != "y"){flag = false;}else{flag = true;}break;}} while (flag);}/*显示查询到的出版物信息*/public void ShowPubInfo(){if ()){("您要查询的出版物信息:");("-------------------------------------------------------------------"); ("编号: " + ("出版物名字: " + ("出版物作者: " + ("出版物类型: " + if {("出版物状态:在架,可借");else{("出版物状态:未在架,不可借");}("-------------------------------------------------------------------"); ("");("");("是否办理其他业务(y/n)");string answer = ();if (answer == "y"){ShowMainMenu();();}else{("结束");}}else{("抱歉,未找到该图书!");("是否办理其他业务(y/n)");string answer = ();if (answer == "y"){ShowMainMenu();();();}else{("结束");}}}/*显示借阅操作结果*/public void ShowBorrowInfo(){if{("恭喜,借阅成功!");ShowRedPubInfo;}{("抱歉,借阅失败!");("是否办理其他业务(y/n)");string answer = ();if (answer == "y"){ShowMainMenu();}else{("结束");}}}/*显示归还操作结果*/public void ShowReturnInfo(){if{("恭喜,归还成功!");ShowRedPubInfo;}else{("抱歉,归还失败!");("是否办理其他业务(y/n)");string answer = ();if (answer == "y"){ShowMainMenu();}else{("结束");}}}public void ShowRedPubInfo(Readers red){("当前你的借阅信息如下:");("--------------------------------------------------------------------"); ("编号: " + ;("姓名: " + ;("性别: " + ;("主修专业: " + ;("已借图书: ");for (int{if [i] != ""){(" "+[i]);}}("");("--------------------------------------------------------------------"); ("");("是否办理其他业务(y/n)");string answer = ();if (answer == "y"){ShowMainMenu();}else{("结束");}}/*显示新出版物入库的信息*/public void ShowAddPublications(){pub = new Publications();("请输入出版物的编号: ");=();("请输入出版物的名称: ");= ();("请输入出版物的编者: ");= ();("请输入出版物的类型: ");= ();= true;(pub);("新出版物入库成功!");("是否办理其他业务(y/n)");string answer = ();if (answer == "y"){ShowMainMenu();();}else{("结束");}}/*显示新读者注册的信息*/public void ShowAddReaders(){red = new Readers();("请输入新注册读者的编号: "); = ();("请输入新注册读者的姓名: "); = ();("请输入新注册读者的性别: "); = ();("请输入新注册读者的院系: "); = ();("请输入新注册读者的专业: "); = ();for(int i=0;i<10;i++){[i]="";}(red);("新读者注册成功!");("是否办理其他业务(y/n) ");string answer = ();if (answer == "y"){ShowMainMenu();();();}else{("结束");}}}}。
图书管理完整代码
1.登录Login.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;class Login extends JFrame implements ActionListener{ Container cp=null;JFrame f=null;JButton j1,j2;JTextField t1;JPasswordField t2;JLabel jlable1,jlable2;Color c;JPanel jp1,jp2;Login(){f=new JFrame("小型图书管理系统");j1=new JButton("确定");j2=new JButton("取消");cp=f.getContentPane();jlable1=new JLabel(" 输入用户名");jlable2=new JLabel(" 用户密码");jp1=new JPanel();jp2=new JPanel();t1=new JTextField(18);t2=new JPasswordField(18);jp1.add(jlable1);jp1.add(t1);jp1.add(jlable2);jp1.add(t2);JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i> 欢迎登录</i></font>",SwingConstants.CENTER);cp.add(JL,"North");jp2.add(j1);jp2.add(j2);cp.add(jp1,"Center");cp.add("South",jp2);jp1.setBackground(new Color(255,155,255));Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*///setSize(x,y); /*让系统窗口平铺整个显示器窗口*/f.setSize(300,300);int xcenter=(x-300)/2;int ycenter=(y-300)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-----------------------------------------------------j1.addActionListener(this);//注册事件监听器j2.addActionListener(this);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});}public void confirm()//验证用户和密码是否存在{try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM");Statement sql=con.createStatement();String uname=t1.getText().trim();String Mima=t2.getText().trim();String queryMima="select * from YONGHU where 用户名='"+uname+"'AND 密码='"+Mima+"'";ResultSet rs=sql.executeQuery(queryMima);if(rs.next()) {new Book(uname);f.hide();con.close();}else{ JOptionPane.showMessageDialog(null,"该用户不存在","提示!",JOptionPane.YES_NO_OPTION);}t1.setText("");t2.setText("");} catch(SQLException g){ System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){confirm(); }else if(cmd.equals("取消")){f.dispose();}}public static void main(String args[]){Login a=new Login();}2.主界面Book.javaimport .*;import java.sql.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import java.util.*;class Book extends JFrame implements ActionListener{JButton QueryScore=new JButton("图书查询");JButton QueryXuefen=new JButton("图书入库");JButton jiangfa=new JButton("图书删除");JButton xuanke=new JButton("图书概览");JButton gaiMima=new JButton("修改密码");JMenuBar mb = new JMenuBar();//菜单栏JPanel jp=new JPanel();//用来填放子模块Container cp=getContentPane();String username; Book(){}Book(String username){ ername=username;mb.add(QueryScore);mb.add(QueryXuefen);mb.add(jiangfa);mb.add(xuanke);mb.add(gaiMima);cp.add(mb,"North");// 设置边框jp.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineB order(Color.blue, 2),null, TitledBorder.CENTER, TitledBorder.TOP));jp.setLayout(new BorderLayout());JLabel label1 = new JLabel(new ImageIcon("4.jpg"));jp.add(label1);/* JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",SwingConstants.CENTER);jp.add(JL,"North");*/JLabel label2 = new JLabel(new ImageIcon("2.jpg"));//jp.add(label2,"South");JScrollPane scrollpane=new JScrollPane(jp);cp.add(scrollpane);setTitle("欢迎登陆");Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*///setSize(x,y); /*让系统窗口平铺整个显示器窗口*/setSize(600,600);int xcenter=(x-600)/2;int ycenter=(y-600)/2;setLocation(xcenter,ycenter);/*显示在窗口中央*/setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//注册临听器QueryScore.addActionListener(this);QueryXuefen.addActionListener(this);jiangfa.addActionListener(this);xuanke.addActionListener(this);gaiMima.addActionListener(this);}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if (cmd.equals("图书查询")){ new QueryBook(); }if (cmd.equals("图书入库")){ new BookIn(); }if (cmd.equals("图书删除")){ new RemoveBook(); }if (cmd.equals("图书概览")){ new BookBrower().showRecord();}if (cmd.equals("修改密码")){ new UpdateMima(username);}}public static void main(String args[]){ new Book(""); }}3.图书查询QueryBook.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.util.*;import java.awt.Container;import java.sql.*;class QueryBook implements ActionListener{JFrame f3; Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按钮,确定、取消JLabel label; //标签:请输入图书号JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框JLabel label1,label2,label3,label4;QueryBook(){ f3=new JFrame();cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("取消");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>请输入图书号:</font>",SwingConstants.CENTER);label.setForeground(Color.blue);tf=new JTextField(20);//------------------------------------------------tf1=new JTextField(20);tf2=new JTextField(20);tf3=new JTextField(20);tf4=new JTextField(20);tf5=new JTextField(20);tf6=new JTextField(20);//------------------------------------------------//布局,添加控件JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North");JPanel pp2=new JPanel(new GridLayout(6,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(6,1));pp4.add(new JLabel("图书名",SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel("图书号",SwingConstants.CENTER));pp2.add(tf2);pp4.add(new JLabel("单价",SwingConstants.CENTER));pp2.add(tf3);pp4.add(new JLabel("作者",SwingConstants.CENTER));pp2.add(tf4);pp4.add(new JLabel("出版社",SwingConstants.CENTER));pp2.add(tf5);pp4.add(new JLabel("入库时间",SwingConstants.CENTER));pp2.add(tf6); pp3.add(jbt1); pp3.add(jbt2);cp.add(pp4,"West");cp.add(pp2,"Center");cp.add(pp3,"South");cp.add(jpane4,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/f3.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);/*f3.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});*/}//------------------------------------------------public void showRecord(){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM");Statement sql;String ql=tf.getText().trim();String s="select * from BOOK where 图书号 ='"+ql +"'";sql=con.createStatement();ResultSet rs=sql.executeQuery(s);if(rs.next()) {String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);tf1.setText(bname);tf2.setText(bno);tf3.setText(price);tf4.setText(writer);tf5.setText(publish);tf6.setText(indate);}else{JOptionPane.showMessageDialog(null,"您输入的图书号不存在,请重新输入","输入错误", JOptionPane.YES_NO_OPTION);}con.close();}catch(SQLException g){ System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}tf1.setEditable(false);tf2.setEditable(false);tf3.setEditable(false);tf4.setEditable(false);tf5.setEditable(false);tf6.setEditable(false);}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){ showRecord();tf.setText("");}else if(cmd.equals("取消"))f3.hide();}public static void main(String args[]){ QueryBook a=new QueryBook(); }}4.图书入库BookIn.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.util.*;import java.sql.*;import javax.swing.text.JTextComponent;//extends JFrameclass BookIn implements ActionListener{JFrame f3; Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按钮:确定、取消、JLabel label; //标签JTextField tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框JLabel label1,label2,label3,label4;String sno; BookIn(){f3=new JFrame();cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("取消");//------------------------------------------------JLabel label=new JLabel("<html><font color=#CC00FF size='4'> 图书入库</font>",SwingConstants.CENTER);label.setForeground(Color.blue);//------------------------------------------------tf1=new JTextField(20);tf2=new JTextField(20);tf3=new JTextField(20);tf4=new JTextField(20);tf5=new JTextField(20);tf6=new JTextField(20);//------------------------------------------------//布局,添加控件jp1.add(jbt1);jp1.add(jbt2);sno=tf4.getText();jp1.add(new JLabel("您好"+sno+"欢迎登陆学生信息系统")); JPanel jpanel=new JPanel();jpanel.add(label);JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North");JPanel pp2=new JPanel(new GridLayout(6,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(6,1));pp4.add(new JLabel("图书名",SwingConstants.CENTER)); pp2.add(tf1);pp4.add(new JLabel("图书号",SwingConstants.CENTER)); pp2.add(tf2);pp4.add(new JLabel("单价",SwingConstants.CENTER)); pp2.add(tf3);pp4.add(new JLabel("作者",SwingConstants.CENTER)); pp2.add(tf4);pp4.add(new JLabel("出版社",SwingConstants.CENTER)); pp2.add(tf5);pp4.add(new JLabel("入库时间",SwingConstants.CENTER)); pp2.add(tf6);pp3.add(jbt1);pp3.add(jbt2);cp.add(pp4,"West");cp.add(pp2,"Center");cp.add(pp3,"South");cp.add(jpane4,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/f3.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);/*f3.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});*/}//------------------------------------------------public void insertRecord(){if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().eq uals("")||tf4.getText().equals("")||tf5.getText().equals("")||tf6.getText().equals("")){JOptionPane.showMessageDialog(f3,"请填写图书资料");return;}try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM");Statement sql;String s="insert into BOOKvalues('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"');";//查询输入的图书号是否在数据库中存在String query="select * from BOOK where 图书号='"+tf2.getText()+"'"; sql=con.createStatement();ResultSet rs=sql.executeQuery(query);//返回查询结果集boolean moreRecords=rs.next();//判断结果集是否有数据if(moreRecords){ JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入"); con.close();tf2.setText("");}int insert=sql.executeUpdate(s);if(insert==1){ JOptionPane.showMessageDialog(null,"图书信息录入成功!");tf1.setText("");tf2.setText("");tf3.setText("");tf4.setText("");tf5.setText("");tf6.setText("");}}catch(SQLException g){ System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){ insertRecord(); }else if(cmd.equals("取消"))f3.hide();}public static void main(String args[]){ BookIn a=new BookIn(); }}5.图书删除RemoveBook.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.util.*;import java.awt.Container ;import java.sql.*;class RemoveBook implements ActionListener{JFrame f;Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2,jbt3;//按钮,查询、取消、修改JLabel label,L; //标签:请输入图书名JTextField tf; //定义文本框JTable table;//用来接收数据库中返回的信息Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];String sno;String count="xx";RemoveBook(){f=new JFrame();cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框jpS=new JPanel();jpanelWest=new JPanel();//------------------------------------------------jbt1=new JButton("查询");jbt2=new JButton("取消");jbt3=new JButton("删除");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>请输入要删除的图书名:</font>",SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel("该种图书共有"+count+"本");//------------------------------------------------table=new JTable(ar,columnName);//ar 存放表中的数据,columnname 表示列名JScrollPane scrollpane = new JScrollPane(table);//------------------------------------------------tf=new JTextField(18);//------------------------------------------------//布局,添加控件jpS.add(jbt1);jpS.add(jbt2);jpS.add(jbt3);JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);JPanel pp4=new JPanel();JPanel jpE=new JPanel();cp.add(jpanel,"North");JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用来放两个表p.setLayout(new BorderLayout());p.add(L,"North");p.add(scrollpane);cp.add(pp4,"West");cp.add(p,"Center");cp.add(jpS,"South");cp.add(jpE,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f.setSize(400,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);jbt3.addActionListener(this);/*f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}}}//------------------------------------------------int i=0;public void showRecord(String ql){while(i>=0){ ar[i][0]="";ar[i][1]="";ar[i][2]="";ar[i][3]="";ar[i][4]="";ar[i][5]="";i--;}i=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM"); Statement sql;String s="select * from BOOK where 图书名 ='"+ql +"'";sql=con.createStatement();ResultSet rs=sql.executeQuery(s);while(rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);ar[i][0]=bname;ar[i][1]=bno;ar[i][2]=price;ar[i][3]=writer;ar[i][4]=publish;ar[i][5]=indate;i++;}count=""+i+"";L.setText("该种图书共有"+count+"本");f.repaint();con.close();System.out.println(ar[0][1]);}catch(SQLException g){ System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void deleteRecord(int index)try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM");Statement sql;String ql=(String)(ar[index][1]);String s="delete * from BOOK where 图书号 ='"+ql +"'";sql=con.createStatement();int del=sql.executeUpdate(s);if(del==1){JOptionPane.showMessageDialog(null,"删除成功!","信息", JOptionPane.YES_NO_OPTION);}con.close();f.repaint();}catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String remember="";String ql="";String cmd=e.getActionCommand();if(cmd.equals("查询")){ql=tf.getText().trim();remember=ql;showRecord(ql);}if(cmd.equals("删除")){int index=table.getSelectedRow();if( index==-1)JOptionPane.showMessageDialog(null,"请选定要删除的表格行","输入错误", JOptionPane.YES_NO_OPTION);else {deleteRecord(index);//showRecord(remember);}}if(cmd.equals("取消"))f.hide();}public static void main(String args[]){ RemoveBook a=new RemoveBook(); }}6.图书概览BookBrower.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.util.*;import java.awt.Container;import java.sql.*;class BookBrower implements ActionListener{JFrame f;Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2;//按钮,查询、取消、修改JLabel label,L; //标签//定义文本框JTable table;//用来接收数据库中返回的信息Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];String sno;String count="xx";BookBrower(){f=new JFrame();cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框jpS=new JPanel();jpanelWest=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("返回");//------------------------------------------------JLabel label=new JLabel("<html><font color=#CC00FF size='4'> 图书概览</font>",SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel("书库现在共有图书"+count+"本");//------------------------------------------------table=new JTable(ar,columnName);//ar 存放表中的数据,columnname 表示列名 JScrollPane scrollpane = new JScrollPane(table);//------------------------------------------------//布局,添加控件jpS.add(jbt1);jpS.add(jbt2);JPanel jpanel=new JPanel();jpanel.add(label);JPanel pp4=new JPanel();JPanel jpE=new JPanel();cp.add(jpanel,"North");JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用来放两个表p.setLayout(new BorderLayout());p.add(L,"North");p.add(scrollpane);cp.add(pp4,"West");cp.add(p,"Center");cp.add(jpS,"South");cp.add(jpE,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f.setSize(400,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);/* f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});*/}//------------------------------------------------int i=0;public void showRecord(){while(i>=0){ ar[i][0]="";ar[i][1]="";ar[i][2]="";ar[i][3]="";ar[i][4]="";ar[i][5]="";i--;}i=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM"); String s="select * from BOOK ";Statement sql=con.createStatement();ResultSet rs=sql.executeQuery(s);while(rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);ar[i][0]=bname;ar[i][1]=bno;ar[i][2]=price;ar[i][3]=writer;ar[i][4]=publish;ar[i][5]=indate;i++;}count=""+i+"";L.setText("书库现在共有图书"+count+"本");f.repaint();con.close();}catch(SQLException g){ System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){ f.hide(); }if(cmd.equals("返回"))f.hide();}public static void main(String args[]){ BookBrower a=new BookBrower();a.showRecord();}}7.密码修改UpdateMima.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.util.*;import java.awt.Container ;import java.sql.*;class RemoveBook implements ActionListener{JFrame f;Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2,jbt3;//按钮,查询、取消、修改JLabel label,L; //标签:请输入图书名JTextField tf; //定义文本框JTable table;//用来接收数据库中返回的信息Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];String sno;String count="xx";RemoveBook(){f=new JFrame();cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框jpS=new JPanel();jpanelWest=new JPanel();//------------------------------------------------jbt1=new JButton("查询");jbt2=new JButton("取消");jbt3=new JButton("删除");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>请输入要删除的图书名:</font>",SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel("该种图书共有"+count+"本");//------------------------------------------------table=new JTable(ar,columnName);//ar 存放表中的数据,columnname 表示列名JScrollPane scrollpane = new JScrollPane(table);//------------------------------------------------tf=new JTextField(18);//------------------------------------------------//布局,添加控件jpS.add(jbt1);jpS.add(jbt2);jpS.add(jbt3);JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);JPanel pp4=new JPanel();JPanel jpE=new JPanel();cp.add(jpanel,"North");JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用来放两个表p.setLayout(new BorderLayout());p.add(L,"North");p.add(scrollpane);cp.add(pp4,"West");cp.add(p,"Center");cp.add(jpS,"South");cp.add(jpE,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f.setSize(400,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);jbt3.addActionListener(this);/*f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ System.exit(0);}});*/}//------------------------------------------------int i=0;public void showRecord(String ql){while(i>=0){ ar[i][0]="";ar[i][1]="";ar[i][2]="";ar[i][3]="";ar[i][4]="";ar[i][5]="";i--;}i=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{Connectioncon=DriverManager.getConnection("jdbc:odbc:TEST","SYSTEM","SYSTEM"); Statement sql;String s="select * from BOOK where 图书名 ='"+ql +"'";sql=con.createStatement();ResultSet rs=sql.executeQuery(s);。
数据库图书管理系统(含代码)
目录一.需求描述和系统边界 (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)注册管理管理员注册。
管理员注册时要求填写基本信息,包括管理员编号、姓名、性别、联系电话、家庭住址。
系统检查所有信息填写正确后管理员注册成功。
读者注册。
读者注册时要求填写基本信息,包括读者编号、姓名、性别、联系电话、学院等。
图书管理系统(源代码)
#include"stdio.h"#include"stdlib.h"#include"string.h"#define MENU_ADMIN_COUNT 2#define MENU_SEARCH_BOOK_COUNT 6 #define MENU_USER_COUNT 7#define BOOK_FILE "books.dat"#define USER_FILE "user.dat"#define MAX_BOOK_NAME 20#define MAX_PUBLISHER 20#define MAX_DATE 10#define MAX_AUTHOR 20#define MAX_ISBN 20typedef struct _book_info{ char book_name[MAX_BOOK_NAME]; char author[MAX_AUTHOR];char publisher[MAX_PUBLISHER];char pub_date[MAX_DA TE];char ISBN[MAX_ISBN];int pages;}book_info;typedef struct _book{ book_info bi;struct _book* next;}book;#define MAX_USERNAME 10#define MAX_PASSWORD 10typedef enum _USER_TYPE{ADMIN=0,USER}USER_TYPE;typedef struct _user_info{char username[MAX_USERNAME];char password[MAX_PASSWORD]; USER_TYPE user_type;}user_info;typedef struct _user{ user_info ui;struct _user* next;}user;void init_user();void load_users();USER_TYPE login();void add_user();void search_user();void save_users();void clear_users();void save_users_to_file();user* get_last_user();user* get_previous_user(user* p);user* find_user(char* name);void show_user(user_info* info);void input_user(user_info* info);void delete_user(user* p);void update_user(user* p);void init_book();void load_books();void add_book();void view_book();void delete_book();void save_books();void clear_books();void search_book_by_name();void search_book_by_author();void search_book_by_publisher();void search_book_by_pubdate();void search_book_by_isbn();int findstr(char *source,char *str);void save_books_to_file();book* get_last_book();book* get_previous_book(book* p);void input_book(book_info* info);void show_book(book_info* info);void show_admin_menu();void show_search_book_menu();void show_user_menu();void admin_exit();void user_exit();book *first_book=NULL;user* first_user=NULL;char menu_title[]="=========================================\n" "| 图书管理系统|\n""+---------------------------------------+\n";char menu_admin[]="| |\n" "| (1)图书管理|\n" "| (2)用户管理|\n" "| (3)退出系统|\n" "+---------------------------------------+\n";char admin_menu1[]="-----------------------------------------\n""| 图书管理|\n" "----------------------------------------|\n""| <1>新增图书|\n" "| <2>浏览图书|\n" "| <3>查找图书|\n" "| <4>删除图书|\n" "| <5>保存图书|\n" "| <0>返回主菜单|\n" "-----------------------------------------\n";char admin_menu2[]="----------------------------------------\n"" 用户管理|\n" "----------------------------------------|\n""| <1>新增用户|\n" "| <2>查找用户|\n" "| <3>保存用户|\n" "| <0>返回主菜单|\n" "|---------------------------------------|\n";void(*menu1_fun[])()={add_book,view_book,show_search_book_menu,delete_book,save_books,};void(*menu2_func[])()={add_user,search_user,save_users,};char menu_admin_search_book[]="| 查找图书:|\n" "| <1>按书名查找|\n" "| <2>按作者查找|\n" "| <3>按出版社查找|\n" "| <4>按出版日期查找|\n" "| <5>按国际标准书号(ISBN)查找|\n" "| <0>返回主菜单|\n" "+--------------------------------------+\n";void (*admin_search_book_func[])()={search_book_by_name,search_book_by_author,search_book_by_publisher,search_book_by_pubdate,search_book_by_isbn,};char menu_user[]="| <1>浏览图书|\n" "| <2>按书名查找图书|\n" "| <3>按作者查找图书|\n" "| <4>按出版社查找图书|\n" "| <5>按出版日期查找图书|\n" "| <6>按国际标准书号(ISBN)查找图书|\n" "| <0>退出系统|\n" "+--------------------------------------+\n";void (*user_func[])()={view_book,search_book_by_name,search_book_by_author,search_book_by_publisher,search_book_by_pubdate,search_book_by_isbn,user_exit};void add_book(){ char try_again='Y';book *p=NULL;book *new_book=NULL;while(try_again=='Y' || try_again=='y'){ new_book=(book*)malloc(sizeof(book));memset(new_book,0,sizeof(book));new_book->next=NULL;printf(">新增图书...\n");input_book(&(new_book->bi));p=get_last_book();if(p==NULL){ first_book=new_book;}else{ p->next=new_book;}printf(">继续添加图书吗?(y or n):");getchar();try_again=getchar();}}void view_book(){ book *p=NULL;char input='Y';int count=0;while(input=='y' || input=='Y'){ count=0;p=first_book;printf("+---------------------------------------+\n");printf("| 书名| 作者|\n");printf("+---------------------------------------+\n");while(p!=NULL){ printf("|%20s|%20s|\n",p->bi.book_name,p->bi.author);printf("+-------------------------------------+\n");count++;if(count==5){ count=0;printf(">显示下一页吗?(y or n):");getchar();input=getchar();if(input!='y' && input!='Y'){ break;}}p=p->next;}printf(">再次浏览图书吗?(y or n):");getchar();input=getchar();}}void search_book_by_name(){ book *p=NULL;char s[MAX_BOOK_NAME]={0};char input='Y';int count=0;int i=0;printf(">查找图书...\n");while(input=='Y' || input=='y'){ count=0;p=first_book;memset(s,0,MAX_BOOK_NAME);printf(">请输入书名(最大长度为%d):",MAX_BOOK_NAME);scanf("%s",s);while(p!=NULL){ if(findstr(p->bi.book_name,s)!=-1){ show_book(&(p->bi));count++;}p=p->next;}if(count==0){ printf(">没有找到图书%s。
图书管理系统(内附源代码)
本人是一个初学者,2个月前学习C#,学习过程中遇到过许多困难无法独立解决,现在做成了第一个系统:图书管理系统,各项功能均能顺利实现,因为知道很多初学者和我一样苦无求学之道,现在将部分主要源码上传,希望能得到高手的指点。
下面就是该系统的主要功能及代码:1.登陆界面主要代码:public partial class LoginForm:Form{public static string uacc;public static string upsw;public static string uname;public static string usex;public static string upart;public static string uright;public LoginForm(){InitializeComponent();}private void loginbtn_Click(object sender, EventArgs e){if (eracctxt.Text.Trim() == "” &&this。
pswtxt.Text == ””){MessageBox。
Show("请输入您的用户名和密码!”, ”提示!”);return;}try{string sql;sql = ”select * from tb_user where uacc='"+ this。
useracctxt.Text + ”' and upsw='”+ this.pswtxt。
Text + "’";OleDbDataReader dr = DBHelp。
OleReader(sql);dr.Read();if (dr。
HasRows){uacc = eracctxt。
Text;upsw = this。
pswtxt。
Text;uname = dr[”uname"].ToString();usex = dr["usex"].ToString();upart = dr["upart”].ToString();uright = dr["uright”]。
数据库图书管理系统(含代码)
目录一.需求描述和系统边界 (1)二.需求分析 (2)1.业务需求 (2)2.功能需求及数据需求分析 (2)3.业务规则分析 (3)三.实体集及属性 (3)四.联系集及E-R图 (4)五.逻辑数据库设计 (5)六.数据库编程 (6)1.创建表 (6)2.创建触发器 (9)3.管理员操作 (9)4.读者操作 (10)5. 管理员对借阅关系的操作 (11)七.代码实现 (12)1.输入数据设计 (12)2.完成借阅、续借、归还的操作设计 (14)八.模式求精 (16)九.小结 (16)一.需求描述和系统边界数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。
对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。
随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的数目逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,创建图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。
该图书管理系统支持2类用户:管理员和读者。
读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。
二.需求分析1.业务需求图书管理系统的主要业务包括:包括图书馆内书籍的信息,读者信息,以及借阅信息。
此系统功能分为面向读者和面向管理员两部分,其中读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。
2.功能需求及数据需求分析(1)注册管理管理员注册。
管理员注册时要求填写基本信息,包括管理员编号、姓名、性别、联系电话、家庭住址。
系统检查所有信息填写正确后管理员注册成功。
读者注册。
读者注册时要求填写基本信息,包括读者编号、姓名、性别、联系电话、学院等。
SQL数据库图书管理系统(完整代码)
广西交通职业技术学院信息工程系作品设计报告书题目:《图书管理系统》班级网络2012-1班学号 20120404026姓名唐张森课程名称数据库应用技术指导教师乐文行二O一三年六月目录数据库课程设计报告书一、设计目标1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织和实施。
2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试运行等工作。
3.培养把所学知识运用到具体对象,并能求出解决方案的能力。
二、数据库存储设计指导思想在数据库存储设计的无数选择中,简单是系统架构师和 DBA 的秘密武器。
简单,有时候就来自于对一个特定的表或表空间没有选择最优 I/O 特性,总有这么一种可能,一个富有经验的 DBA 拥有高超的存储技能并可以没有时间限制的去为一个非常重要的表或者索引配置一个存储。
然而这样做的问题是,就算能达到设计的最佳性能,为了维护原始对象,这也经常造成对一个系统的管理变得更加复杂。
好的数据库存储设计的要点是,在一个动态系统上,实现所有目标应该是最初的系统设计的一部分,并应该在数据库运行过程中长期进行。
这篇文档简单的最佳实践描述达到了这些目标并且几乎没有性能损失。
三、任务角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。
基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL 实现的查询语言及查询结果。
2.上机实现。
1.问题描述1.1背景随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
图书管理系统源代码(原创)
#include<stdio.h>#include<stdlib.h>#include<string.h>struct book{int num;char bname[50];char wname[20];char press[50];char sort[50];int time;float price;struct book *next;};struct book *creatbook(); //创建链表struct book *addbook(struct book *head); //添加图书int yanzheng(struct book *head,int m); //验证新添加的图书编码是否已存在void deletebook(struct book *head); //删除图书void fprint(struct book *head); //将链表写入文件struct book *load(); //从文件中读取信息并建成链表void print_book(struct book *head); //将链表信息输出void chaxun(struct book *head); //查询图书信息void num_chaxun(struct book *head); //按图书编号查询图书void wname_chaxun(struct book *head); //按作者名查询图书void sort_chaxun(struct book *head); //按类别查询图书void time_chaxun(struct book *head); //按出版时间查询图书void bname_chaxun(struct book *head); //按图书名查询图书void xiugai(struct book *head); //修改图书信息void paixu(struct book *head); //对图书进行排序void num_paixu(struct book *head); //按图书编号排序void time_paixu(struct book *head); //按图书出版时间排序void price_paixu(struct book *head); //按图书价格排序void bname_paixu(struct book *head); //按图书名排序void wname_paixu(struct book *head); //按作者名排序int main(){int choice,n,x,y=1,c,c1=1;char a,d,b[10],b1[10]="1";struct book *head=NULL;while(y){system("cls");printf("\n\n\n\n\n");printf(" ----------------------------------------------------------------------\n");printf(" --- ||-------------||-------图书信息管理系统--------||-----------||---\n");printf(" --- ||-------------||------- 登陆界面--------||-----------||---\n");printf(" ----------------------------------------------------------------------\n");printf("\n");printf(" ============1-进入系统===========\n");printf(" ============0-退出系统===========\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入选择:");scanf("%d",&n);printf("\n");getchar();switch(n){case 0:y=0;break;case 1:printf(" 请输入您的用户名(输入1即可):");gets(b);printf("\n");printf(" 请输入您的密码(输入1即可):");scanf("%d",&c);printf("\n");if(strcmp(b,b1)!=0||c!=c1){printf(" 验证失败,请重新输入!\n");scanf("%c",&d);getchar();system("cls");}else{printf(" 验证通过!请按Enter键进入!\n");scanf("%c",&d);getchar();x=1;while(x){system("cls");system ("color 1F");printf(" ----------------------------------------------------------------------\n\n");printf(" --- ||-------------||-------图书信息管理系统--------||-----------||---\n\n");printf(" --- ||-------------||-----------操作界面------------||-----------||---\n\n");printf(" ----------------------------------------------------------------------\n\n");printf(" ----------------------------------------------\n");printf(" ----||-----------系统菜单选项-----------||----\n");printf(" ----------------------------------------------\n");printf(" -|| 1-添加图书删除图书-2 ||-\n\n");printf(" -|| 3-图书列表图书排序-4 ||-\n\n");printf(" -|| 5-查询图书修改图书-6 ||-\n\n");printf(" -|| 7-录入数据退出系统-0 ||-\n\n");printf(" ----------------------------------------------\n");printf(" ----------------------------------------------\n\n");printf("请输入所选择的序号:");scanf("%d",&choice);getchar();system("cls");switch(choice){case 0:x=0;break;case 1:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{head=addbook(head);printf("添加成功!\n");printf("是否将新信息保存到文件?(y/n)\n");scanf("%c",&a);getchar();switch(a){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}break;}case 2:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{deletebook(head);getchar();break;}break;case 3:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{print_book(head);getchar();break;}case 4:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{paixu(head);getchar();}break;case 5:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{chaxun(head);getchar();}break;case 6:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{xiugai(head);getchar();break;}break;case 7:printf("注意:输入图书编码为0时结束!\n");head=creatbook();printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)\n");getchar();scanf("%c",&a);getchar();switch(a){case '0':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}break;default:printf("输入有误,请重新输入!\n");getchar();break;}}}break;default:printf(" 输入有误,请重新输入!\n");getchar();break;}}}//录入数据并形成链表struct book *creatbook(){struct book *head,*tail,*p;int num,time,n;char bname[50],wname[20],press[50],sort[50];float price;int size=sizeof(struct book);head=tail=NULL;printf("请输入图书编号:");scanf("%d",&num);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();while(1){p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p->next=NULL;if(head==NULL)head=p;elsetail->next=p;tail=p;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n"); }while(1);if(num==0)break;else{printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();}}return head;}//插入结点,并且插入后仍按一定顺序struct book *addbook(struct book *head){struct book *ptr,*p1,*p2,*p;char bname[50],wname[20],press[50],sort[50];int size=sizeof(struct book);int num,time,n=1;float price;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n");}while(1);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p2=head;ptr=p;while((ptr->num>p2->num)&&(p2->next!=NULL)){ p1=p2;p2=p2->next;}if(ptr->num<=p2->num){if(head==p2)head=ptr;else{p1->next=ptr;p->next=p2;}}else{p2->next=ptr;p->next=NULL;}return head;}//验证添加的图书编号是否已存在int yanzheng(struct book *head,int m){struct book *p;p=head;while(p!=NULL){if(p->num==m)break;p=p->next;}if(p==NULL)return 0;elsereturn 1;}//将新链表写入文件中void fprint(struct book *head){FILE *fp;char ch='1';struct book *p1;if((fp=fopen("f1.txt","w"))==NULL){printf("File open error!\n");exit(0);}fputc(ch,fp);for(p1=head;p1;p1=p1->next){fprintf(fp,"%d %s %s %s %s %d %f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort ,p1->time,p1->price);}fclose(fp);}//从文件中读取图书信息struct book *load(){FILE *fp;char ch;struct book *head,*tail,*p1;head=tail=NULL;if((fp=fopen("f1.txt","r"))==NULL){printf("File open error!\n");exit(0);}ch=fgetc(fp);if(ch=='1'){while(!feof(fp)){p1=(struct book *)malloc(sizeof(struct book));fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1-> time,&p1->price);if(head==NULL)head=p1;elsetail->next=p1;tail=p1;}tail->next=NULL;fclose(fp);return head;}elsereturn NULL;}//将整个链表的信息输出void print_book(struct book *head){struct book *ptr;if(head==NULL){printf("\n没有信息!\n");return;}printf(" 图书信息列表如下\n");printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(ptr=head;ptr;ptr=ptr->next)printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n", ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);printf("====================================================================== ======\n");}//删除图书信息void deletebook(struct book *head){int a;char b,ch='1';struct book *p1,*p2;FILE *fp;printf("请输入要删除的图书编号:");scanf("%d",&a);p1=head;if(p1->num==a&&p1->next==NULL){ //对于文件中只有一组数据printf("是否清空文件!(y/n)\n");getchar();scanf("%c",&b);getchar();switch(b){case 'n':break;case 'y':if((fp=fopen("f1.txt","w"))==NULL){printf("File open error!\n");exit(0);}fclose(fp);printf("文件已清空!\n");}}else{while(p1->num!=a&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->next==NULL){if(p1->num==a){p2->next=NULL;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}else{printf("没有找到要删除的数据!\n");getchar();}}else if(p1==head){head=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}else{p2->next=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}}}//图书查询void chaxun(struct book *head){int a;printf("==========================================================\n");printf(" ** 1-按图书编号查询2-按图书名查询**\n");printf(" ** 3-按图书类别查询4-按作者名查询**\n");printf(" ** 5-按出版时间查询0-退出查询**\n");printf("==========================================================\n");printf("请输入所选择的编号:");scanf("%d",&a);getchar();switch(a){case 0:break;case 1:num_chaxun(head);break;case 2:bname_chaxun(head);break;case 3:sort_chaxun(head);break;case 4:wname_chaxun(head);break;case 5:time_chaxun(head);break;default:printf("您的输入有误!\n");break;}}//按编号查询图书信息void num_chaxun(struct book *head){int a;struct book *p;printf("请选择您要查询的图书编号:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n", p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);printf("====================================================================== ======\n");}}//按图书名查询图书信息void bname_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->bname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");while(p!=NULL){if(strcmp(p->bname,a)==0){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n", p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);}p=p->next;}printf("====================================================================== ======\n");}}//按作者名查询图书信息void wname_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书作者名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->wname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");while(p!=NULL){if(strcmp(p->wname,a)==0){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n", p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("============================================================================\n");}}//按图书类别查询图书信息void sort_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书类别:");gets(a);p=head;while(p!=NULL){if(strcmp(p->sort,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");while(p!=NULL){if(strcmp(p->sort,a)==0){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n", p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("====================================================================== ======\n");}}//按图书出版时间查询图书信息void time_chaxun(struct book *head){int a,flag=0;struct book *p;printf("请选择您要查询的图书出版时间:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->time==a){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");while(p!=NULL){if(p->time==a){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n", p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("====================================================================== ======\n");}}//修改图书信息void xiugai(struct book *head){int a,b;char c;struct book *p;printf("请输入要修改的图书编号:");scanf("%d",&a);p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");getchar();}else{printf("============================================================\n");printf(" ** 1-编号2-图书名3-作者名**\n");printf(" ** 4-出版社5-类别6-出版时间**\n");printf(" ** 7-价格8-修改全部0-放弃修改**\n");printf("============================================================\n");printf("请选择你要修改的信息编号:");scanf("%d",&b);getchar();switch(b){case 1:printf("请输入新编号:");scanf("%d",&p->num);printf("修改成功!\n");getchar();break;case 2:printf("请输入新图书名:");gets(p->bname);printf("修改成功!\n");break;case 3:printf("请输入新作者名:");gets(p->wname);printf("修改成功!\n");break;case 4:printf("请输入新出版社:");gets(p->press);printf("修改成功!\n");break;case 5:printf("请输入新类别:");gets(p->sort);printf("修改成功!\n");break;case 6:printf("请输入新出版时间:");scanf("%d",&p->time);printf("修改成功!\n");getchar();break;case 7:printf("请输入新价格:");scanf("%f",&p->price);printf("修改成功!\n");getchar();break;case 8:printf("请输入新图书编号:");scanf("%d",&p->num);printf("请输入新图书名:");scanf("%s",p->bname);getchar();printf("请输入新作者名:");scanf("%s",p->wname);getchar();printf("请输入新出版社:");scanf("%s",p->press);getchar();printf("请输入新类别:");scanf("%s",p->sort);getchar();printf("请输入新出版时间:");scanf("%d",&p->time);getchar();printf("请输入新价格:");scanf("%f",&p->price);getchar();printf("修改成功!\n");getchar();break;case 0:break;default :printf("您的输入有误!\n");break;}printf("是否将修改后的信息保存到文件中?(y/n)\n");scanf("%c",&c);getchar();switch(c){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}}}//图书排序void paixu(struct book *head){int a;printf("================================================================\n");printf(" ** 1-按图书编号排序2-按出版时间排序**\n");printf(" ** 3-按图书价格排序4-按图书名排序**\n");printf(" ** 5-按作者名排序0-取消排序操作**\n");printf("================================================================\n");printf("请输入您选择的编号:");scanf("%d",&a);getchar();switch(a){case 0:break;case 1:num_paixu(head);break;case 2:time_paixu(head);break;case 3:price_paixu(head);break;case 4:bname_paixu(head);break;case 5:wname_paixu(head);break;default:printf("您的输入有误!\n");break;}}//按图书编号排序void num_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->num<a[index]->num)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(i=0;i<n;i++){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n",a[i]->n um,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("====================================================================== ======\n");break;default:printf("您的输入有误!\n");break;}}//按出版时间排序void time_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->time<a[index]->time)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(i=0;i<n;i++){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n",a[i]->n um,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("====================================================================== ======\n");break;default:printf("您的输入有误!\n");break;}}//按图书价格排序void price_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->price<a[index]->price)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(i=0;i<n;i++){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n",a[i]->n um,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("====================================================================== ======\n");break;default:printf("您的输入有误!\n");break;}}//按图书名排序void bname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->bname,a[i]->bname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(i=0;i<n;i++){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n",a[i]->n um,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("====================================================================== ======\n");break;default:printf("您的输入有误!\n");break;}}//按作者名排序void wname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->wname,a[i]->wname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("====================================================================== ======\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(i=0;i<n;i++){printf(" %3d %-12s %-8s %-14s %-2s %-4d %.2f\n",a[i]->n um,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("====================================================================== ======\n");break;default:printf("您的输入有误!\n");break;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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要求,且分解是无损分解。