(详细文档!)JavaSwing图书管理系统+mysql数据库

news2024/11/24 1:08:16

目 录

1.项目概述及需求分析................................ 1

2.系统设计......................................... 1

2.1程序总体设计......................................... 1

2.2数据库设计........................................... 2

2.3公共模块设计......................................... 2

3.系统实现......................................... 4

3.1登录界面............................................. 4

3.2主界面............................................... 5

3.3图片添加的实现....................................... 8

3.4用户页面的实现...................................... 10

3.5图书类别实现........................................ 15

4.总结............................................ 15

项目展示:

1 项目概述及需求分析

随着人们生活水平的提高,知识水平蓬勃发展,日渐增多的读书分子的学习带来了一定的压力,怎样的借用图书是亟待解决的重要问题,传统的管理方式带来了许多问题,例如去哪里买图书,需要买什么图书,这些问题导致无法做到随时随地阅读图书全面把控,本项目面向所有借书,目的是提高图书馆的管理效率,把人工从繁琐的工作中解放出来。

该系统主要实现的系统需求有如下几个方面:

庞大的消费群体拉动了图书的消费增长,同时为了安全要对借书人进行实名制的统计。

制定可控的图书管理系统,能自由的控制每天售出的图书本数,对书名,作者,出版社是本系统不可缺少的一部分,将图书的基本信息和数量写入到系统中,当顾客来借书时可以查询图书的价格。信息社会中Excel表格被广泛运用,实现将数据库的信息导出为Excel信息是必要的,这将方便信息的共享,同时Excel丰富的功能可以成为本程序的扩展功能,提高程序的兼容性,一举多得。

2 系统设计

2.1程序总体设计

该系统功能结构图如下图2.1所示:

图2.1 图书馆管理系统功能结构图

2.2数据库设计

本系统使用MySQL数据库管理系统建立数据库animal_dbms,涉及到的数据表如下:

  1. 用户表:此表用来储存顾客的信息,价格和出版社等,借书时增加游客信息,当还书时删除游客信息,查询顾客信息和借书人次都用到此表,主键是游客的姓名和电话组成的组合键。
  2. 图书表:存储了顾客和图书的基本信息。
  3. 价格表记录图书价格的表。
  4. 借阅表:记录借书人,借的书名,状态以及借书时间。

2.3公共模块设计

2.3.1数据库连接类

创建DB类用来连接mysql数据库,以及对数据库进行查询和更改操作,将所得到的值放到集合,传递给程序使用,实现程序与数据库之间的数据共享。

加载数据库驱动,并连接数据库,具体代码如下:

  package com.demo.utils;

import java.sql.Connection;

import java.sql.DriverManager;

public class DbUtil {

   //private String dbUrl="jdbc:mysql://localhost:3306/db_book_manager?useUnicode=true&characterEncoding=utf8"; // 数据库连接地址 5.x

   private String dbUrl="jdbc:mysql://localhost:3306/wgt?useSSL=false&serverTimezone=GMT&useUnicode=true&characterEncoding=UTF8"; // 数据库连接地址 8.0

   private String dbUserName="root"; // 用户名

   private String dbPassword="123456"; // 密码



   // 驱动名称

   //private String jdbcName="com.mysql.jdbc.Driver"; //myslq5.x

   private String jdbcName="com.mysql.cj.jdbc.Driver"; //myslq8.0



   public Connection getConnection()throws Exception{

       Class.forName(jdbcName);

      Connection con = (Connection) DriverManager.getConnection(dbUrl,dbUserName,dbPassword);

      return con;

   }



   public void closeCon (Connection con)throws Exception {

      if(con!=null){

         con.close();

      }

   }

   public static void main(String[] args) throws Exception {

      //运行后直接结束则代表连接成功

      DbUtil dbUtil=new DbUtil();

      dbUtil.getConnection();

   }

}
 

2.3.2封装常用的操作数据库的方法

public class toolUtil {





   public static int getCenterWidth(int width){

      GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

      Rectangle rect=ge.getMaximumWindowBounds();

      int w=rect.width;

      return w/2-width/2;

   }



   public static int getCenterHeight(int height){

      GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

      Rectangle rect=ge.getMaximumWindowBounds();

      int h=rect.height;

      return h/2-height/2;

   }



   public static boolean isEmpty(String str){

      if(str != null && !"".equals(str.trim())){

         return false;

      }

      return true;

   }

   

   public static Long getTime(){

      long time = System.currentTimeMillis();

      return time;

   }



   

   public static String getDateByTime(Long time){

      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

      String string = format.format(new Date(time));

      return string;

   }

   public static User getUser(HttpSession session){

      User user = (User) session.getAttribute("user");

      return user;

   }

   public static void setUser(HttpSession session,User user){

      session.setAttribute("user", user);

   }

}

3 系统实现

3.1登录界面

登录界面,输入用户名和密码,本系统的初始用户名为:admin,密码为:admin,界面如下:

图3.1 登录界面

登录页面实现代码:

public class AdminBookAdd extends JFrame {

   private JFrame jf;

   private JTextField textField;

   private JTextField textField_1;

   private JTextField textField_2;

   private JTextField textField_3;

   private JTextField textField_4;

   private JTextField textField_6;

   private JComboBox comboBox;

   BookDao bookDao=new BookDao();

   DbUtil dbUtil=new DbUtil();

   BookTypeDao bookTypeDao=new BookTypeDao();

   public AdminBookAdd(){

      jf=new JFrame("管理员界面");

      int width = 600;

      int height =400;

      jf.setBounds(toolUtil.getCenterWidth(width), toolUtil.getCenterHeight(height),width, height);

      jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      jf.getContentPane().setLayout(null);

      JPanel panel = new JPanel();

      panel.setBorder(new TitledBorder(null, "\u4E66\u7C4D\u6DFB\u52A0", TitledBorder.LEADING, TitledBorder.TOP, null, Color.RED));

      panel.setBounds(23, 21, 540, 275);

      jf.getContentPane().add(panel);

      panel.setLayout(null);
 
 

3.2主界面

主界面为空布局,顶部为菜单栏,具体界面如下:

图3.2 主界面

主页面实现代码:

public AdminBookEdit(){

   jf=new JFrame("管理员界面");

   int width = 600;

   int height =650;

   jf.setBounds(toolUtil.getCenterWidth(width), toolUtil.getCenterHeight(height),width, height);

   jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   

   JMenuBar menuBar = new JMenuBar();

   jf.setJMenuBar(menuBar);

   

   JMenu mnNewMenu = new JMenu("类别管理");

   menuBar.add(mnNewMenu);

   

   JMenuItem mntmNewMenuItem = new JMenuItem("类别添加");

   mntmNewMenuItem.addMouseListener(new MouseAdapter() {

      public void mousePressed(MouseEvent evt) {

         jf.dispose();

         new AdminMenuFrm();

      }

   });

   mnNewMenu.add(mntmNewMenuItem);

   

   JMenuItem mntmNewMenuItem_1 = new JMenuItem("类别修改");

   mntmNewMenuItem_1.addMouseListener(new MouseAdapter() {

      public void mousePressed(MouseEvent evt) {

         jf.dispose();

         new AdminBTypeEdit();

      }

   });

   mnNewMenu.add(mntmNewMenuItem_1);

   

   JMenu mnNewMenu_2 = new JMenu("书籍管理");

   menuBar.add(mnNewMenu_2);

   

   JMenuItem mntmNewMenuItem_2 = new JMenuItem("书籍添加");

   mntmNewMenuItem_2.addMouseListener(new MouseAdapter() {

      public void mousePressed(MouseEvent evt) {

         jf.dispose();

         new AdminBookAdd();

      }

   });

   mnNewMenu_2.add(mntmNewMenuItem_2);

   

   JMenuItem mntmNewMenuItem_3 = new JMenuItem("书籍修改");

   mnNewMenu_2.add(mntmNewMenuItem_3);

   

   JMenu menu1 = new JMenu("用户管理");

   menuBar.add(menu1);

   

   JMenuItem mntmNewMenuItem_4 = new JMenuItem("用户信息");

   mntmNewMenuItem_4.addMouseListener(new MouseAdapter() {

      public void mousePressed(MouseEvent evt) {

         jf.dispose();

         new AdminUserInfo();

      }

   });

   menu1.add(mntmNewMenuItem_4);

   

   JMenuItem mntmNewMenuItem_5 = new JMenuItem("借阅信息");

   mntmNewMenuItem_5.addMouseListener(new MouseAdapter() {

      public void mousePressed(MouseEvent evt) {

         jf.dispose();

         new AdminBorrowInfo();

      }

   });

   menu1.add(mntmNewMenuItem_5);

   

   JMenu mnNewMenu_1 = new JMenu("退出系统");

   mnNewMenu_1.addMouseListener(new MouseAdapter() {

      public void mousePressed(MouseEvent evt) {

         JOptionPane.showMessageDialog(null, "欢迎再次使用");

         jf.dispose();

      }

   });

   menuBar.add(mnNewMenu_1);



   jf.getContentPane().setLayout(null);

   

   JPanel panel = new JPanel();

   panel.setBorder(new TitledBorder(null, "\u4E66\u76EE\u67E5\u8BE2", TitledBorder.LEADING, TitledBorder.TOP, null, Color.RED));

   panel.setBounds(20, 10, 541, 78);

   jf.getContentPane().add(panel);

   panel.setLayout(null);

   

   comboBox = new JComboBox();

   comboBox.setFont(new Font("幼圆", Font.BOLD, 15));

   comboBox.setBounds(55, 28, 109, 24);

   comboBox.addItem("书籍名称");

   comboBox.addItem("书籍作者");

   panel.add(comboBox);

   

   textField = new JTextField();

   textField.setBounds(185, 28, 146, 24);

   panel.add(textField);

   textField.setColumns(10);

   

   JButton btnNewButton = new JButton("查询");

   btnNewButton.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {

         int index = comboBox.getSelectedIndex();

         if(index==0){

            String bookName = textField.getText();

            Book book = new Book();

            book.setBookName(bookName);

            putDates(book);

         }else{

            String authoerName = textField.getText();

            Book book = new Book();

            book.setAuthor(authoerName);

            putDates(book);

         }

      }

   });

3.3图书添加的实现

图书界面,输入书名、作者,选择出版社,点击添加按钮。如图3.3:

图3.3  管理员界面图

图书添加的实现代码:

btnNewButton.setFont(new Font("幼圆", Font.BOLD, 14));

btnNewButton.setBounds(352, 28, 81, 25);

panel.add(btnNewButton);

JPanel panel_1 = new JPanel();

panel_1.setLayout(null);

panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u4E66\u7C4D\u4FE1\u606F", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(255, 0, 0)));

panel_1.setBounds(20, 105, 541, 195);



 /*做一个表头栏数据  一位数组

  * */

 String[] title={"编号", "书名", "类别", "作者", "价格", "库存", "状态" };

/*具体的各栏行记录 先用空的二位数组占位*/

 String[][] dates={};

 /*然后实例化 上面2个控件对象*/

 model=new DefaultTableModel(dates,title);

 table=new JTable(model);

 putDates(new Book());//获取数据库数据放置table中        

  panel_1.setLayout(null);

  JScrollPane jscrollpane = new JScrollPane();

  jscrollpane.setBounds(20, 22, 496, 154);

   jscrollpane.setViewportView(table);

   panel_1.add(jscrollpane);

   jf.getContentPane().add(panel_1);

jf.getContentPane().add(panel_1);

table.addMouseListener(new MouseAdapter() {

   public void mousePressed(MouseEvent evt) {

      tableMousePressed(evt);

   }

});

JPanel panel_2 = new JPanel();

panel_2.setBounds(20, 310, 541, 292);

jf.getContentPane().add(panel_2);

panel_2.setLayout(null);



JLabel label = new JLabel("编号:");

label.setFont(new Font("幼圆", Font.BOLD, 14));

label.setBounds(58, 10, 45, 27);

panel_2.add(label);

textField_1 = new JTextField();

textField_1.setColumns(10);

textField_1.setBounds(101, 10, 129, 27);

panel_2.add(textField_1);

JLabel label_1 = new JLabel("书名:");

label_1.setFont(new Font("幼圆", Font.BOLD, 14));

label_1.setBounds(294, 10, 45, 27);

panel_2.add(label_1);

textField_2 = new JTextField();

textField_2.setColumns(10);

textField_2.setBounds(338, 10, 128, 27);

panel_2.add(textField_2);
 

3.4用户页面实现

public UserMenuFrm() {

   jf=new JFrame();

   jf.setTitle("用户页面");

   int width = 700;

   int height =900;

   jf.setBounds(toolUtil.getCenterWidth(width), toolUtil.getCenterHeight(height),width, height);

   jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   jf.getContentPane().setLayout(null);



   JPanel panel_1 = new JPanel();

   panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u501F\u9605\u4FE1\u606F", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(255, 0, 0)));

   panel_1.setBounds(23, 48, 651, 239);

   

    /*做一个表头栏数据  一位数组

     * */

    String[] title={"编号", "书名", "状态", "借书时间", "还书时间"};

   /*具体的各栏行记录 先用空的二位数组占位*/

    String[][] dates={};

    /*然后实例化 上面2个控件对象*/

    model=new DefaultTableModel(dates,title);

    table=new JTable();

    table.setModel(model);

    

    putDates(new BorrowDetail());//获取数据库数据放置table中

     panel_1.setLayout(null);

     JScrollPane jscrollpane = new JScrollPane();

     jscrollpane.setBounds(20, 22, 607, 188);

      jscrollpane.setViewportView(table);

      panel_1.add(jscrollpane);

      jf.getContentPane().add(panel_1);

      

      lblNewLabel_1 = new JLabel("New label");

      lblNewLabel_1.setForeground(Color.RED);

      lblNewLabel_1.setFont(new Font("Dialog", Font.BOLD, 18));

      lblNewLabel_1.setBounds(315, 10, 197, 28);

      jf.getContentPane().add(lblNewLabel_1);

      lblNewLabel_1.setText(LoginFrm.currentUser.getUserName());

      

      lblNewLabel_2 = new JLabel("欢迎您,");

      lblNewLabel_2.setFont(new Font("Dialog", Font.BOLD, 18));

      lblNewLabel_2.setBounds(254, 11, 258, 28);

      jf.getContentPane().add(lblNewLabel_2);

      

      JPanel panel = new JPanel();

      panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u8FD8\u4E66", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(255, 0, 0)));

      panel.setBounds(23, 294, 651, 70);

      jf.getContentPane().add(panel);

      panel.setLayout(null);

      

      JLabel lblNewLabel = new JLabel("编号:");

      lblNewLabel.setBounds(90, 25, 51, 27);

      panel.add(lblNewLabel);

      lblNewLabel.setFont(new Font("幼圆", Font.BOLD, 16));

      

      textField = new JTextField();

      textField.setBounds(145, 28, 116, 24);

      panel.add(textField);

      textField.setColumns(10);

      

      btnBackBook = new JButton("还书");

      btnBackBook.setFont(new Font("Dialog", Font.BOLD, 15));

      btnBackBook.setBounds(299, 25, 85, 31);

      panel.add(btnBackBook);

      

      button = new JButton("退出系统");

      button.setFont(new Font("Dialog", Font.BOLD, 15));

      button.setBounds(407, 25, 103, 31);

      panel.add(button);

      

      panel_2 = new JPanel();

      panel_2.setBorder(new TitledBorder(null, "借阅信息", TitledBorder.LEADING, TitledBorder.TOP, null, Color.RED));

      panel_2.setBounds(23, 374, 651, 346);

      jf.getContentPane().add(panel_2);

      panel_2.setLayout(null);

      

      textField_1 = new JTextField();

      textField_1.setColumns(10);

      textField_1.setBounds(252, 23, 135, 27);

      panel_2.add(textField_1);

      

      button_1 = new JButton("查询");

      button_1.addActionListener(new ActionListener() {

         public void actionPerformed(ActionEvent e) {

            int index = comboBox.getSelectedIndex();

            if(index==0){

               String bookName = textField_1.getText();

               Book book = new Book();

               book.setBookName(bookName);

               putDates(book);

            }else{

               String authoerName = textField_1.getText();

               Book book = new Book();

               book.setAuthor(authoerName);

               putDates(book);

            }

         }

      });

      button_1.setFont(new Font("幼圆", Font.BOLD, 16));

      button_1.setBounds(408, 20, 93, 33);

      panel_2.add(button_1);

      

      comboBox = new JComboBox();

      comboBox.setFont(new Font("幼圆", Font.BOLD, 15));

      comboBox.setBounds(123, 26, 109, 24);

      comboBox.addItem("书籍名称");

      comboBox.addItem("书籍作者");

      panel_2.add(comboBox);

      

       String[] BookTitle={"编号", "书名", "类型", "作者", "描述" };

         /*具体的各栏行记录 先用空的二位数组占位*/

          String[][] BookDates={};

          /*然后实例化 上面2个控件对象*/

          BookModel=new DefaultTableModel(BookDates,BookTitle);

          BookTable=new JTable(BookModel);

          putDates(new Book());//获取数据库数据放置table中        

          panel_2.setLayout(null);

           JScrollPane jscrollpane1 = new JScrollPane();

           jscrollpane1.setBounds(22, 74, 607, 250);

            jscrollpane1.setViewportView(BookTable);

            panel_2.add(jscrollpane1);

            jf.getContentPane().add(panel_1);

            

            JPanel panel_3 = new JPanel();

            panel_3.setBorder(new TitledBorder(null, "\u501F\u4E66", TitledBorder.LEADING, TitledBorder.TOP, null, Color.RED));

            panel_3.setBounds(23, 730, 645, 87);

            jf.getContentPane().add(panel_3);

            panel_3.setLayout(null);

            

            JLabel label = new JLabel("编号:");

            label.setFont(new Font("Dialog", Font.BOLD, 15));

            label.setBounds(68, 31, 48, 33);

            panel_3.add(label);

            

            textField_2 = new JTextField();

            textField_2.setEditable(false);

            textField_2.setColumns(10);

            textField_2.setBounds(126, 34, 135, 27);

            panel_3.add(textField_2);

            

            JLabel label_1 = new JLabel("书名:");

            label_1.setFont(new Font("Dialog", Font.BOLD, 15));

            label_1.setBounds(281, 31, 48, 33);

            panel_3.add(label_1);

            

            textField_3 = new JTextField();

            textField_3.setEditable(false);

            textField_3.setColumns(10);

            textField_3.setBounds(339, 34, 135, 27);

            panel_3.add(textField_3);

            

            JButton button_2 = new JButton("借书");

            //借书

            button_2.addActionListener(new ActionListener() {

               public void actionPerformed(ActionEvent e) {

                  String bookId = textField_2.getText();

                  String bookName = textField_3.getText();

                  if (toolUtil.isEmpty(bookId) || toolUtil.isEmpty(bookName)) {

                     JOptionPane.showMessageDialog(null, "请选择相关书籍");

                     return;

                  }

                  BorrowDetail borrowDetail = new BorrowDetail();

                  borrowDetail.setUserId(LoginFrm.currentUser.getUserId());

                  borrowDetail.setBookId(Integer.parseInt(bookId));

                  borrowDetail.setStatus(1);

                  borrowDetail.setBorrowTime(toolUtil.getTime());

                  Connection con = null;

                  try {

                     con = dbUtil.getConnection();

                     

                     //先查询是否有该书

                     ResultSet list = bdetailDao.list(con, borrowDetail);

                     while(list.next()){

                        JOptionPane.showMessageDialog(null, "该书已在借,请先还再借");

                        return;

                     }

                     int i = bdetailDao.add(con, borrowDetail);

                     if (i == 1) {

                        JOptionPane.showMessageDialog(null, "借书成功");

                        putDates(new BorrowDetail());

                     } else {

                        JOptionPane.showMessageDialog(null, "借书失败");

                     }

                  } catch (Exception e1) {

                     // TODO Auto-generated catch block

                     e1.printStackTrace();

                     JOptionPane.showMessageDialog(null, "借书异常");

                  }finally{

                     try {

                        dbUtil.closeCon(con);

                     } catch (Exception e1) {

                        // TODO Auto-generated catch block

                        e1.printStackTrace();

                     }

                  }

               }

            });
 

3.5图书类别实现

btnNewButton.setFont(new Font("幼圆", Font.BOLD, 14));

btnNewButton.setBounds(352, 28, 81, 25);

panel.add(btnNewButton);



JPanel panel_1 = new JPanel();

panel_1.setLayout(null);

panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u4E66\u7C4D\u4FE1\u606F", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(255, 0, 0)));

panel_1.setBounds(20, 105, 541, 195);



 /*做一个表头栏数据  一位数组

  * */

 String[] title={"编号", "书名", "类别", "作者", "价格", "库存", "状态" };

/*具体的各栏行记录 先用空的二位数组占位*/

 String[][] dates={};

 /*然后实例化 上面2个控件对象*/

 model=new DefaultTableModel(dates,title);

 table=new JTable(model);

 putDates(new Book());//获取数据库数据放置table中        

  panel_1.setLayout(null);

  JScrollPane jscrollpane = new JScrollPane();

  jscrollpane.setBounds(20, 22, 496, 154);

   jscrollpane.setViewportView(table);

   panel_1.add(jscrollpane);

   jf.getContentPane().add(panel_1);

jf.getContentPane().add(panel_1);



table.addMouseListener(new MouseAdapter() {

   public void mousePressed(MouseEvent evt) {

      tableMousePressed(evt);

   }

});

4 总结

通过这次Java大作业我深刻认识到了Java作为一门被广泛应用的高级语言的强大之处,丰富的类让开发变得得心应手,这次大作业让我明白了不要讲目光仅仅聚焦到课本上,要合理运用网络资源进行自主性学习,正所谓师傅领进门,修行在个人,学习不是光靠老师就能行的,自己还要付出加倍的努力。

该系统实现的优点:界面直观简洁,设计对用户友好;方便查找图书,登陆简单;实际应用性强,通用型较好;数据库设计合理,。

系统还存在一定的不足,表现在:代码不够成熟,简洁性不强;程序受众面较窄,用户局限性高;没有考虑并行操作和根据用户的使用的情况。

作为一名青岛学院的本科生,我们要学习的不光是一项技能还有学习分析问题、的方法,以及在现代软件开发中应该用到的基本技能,这些细节看似可有可无但是这恰恰是体现专业性的地方。所以我认为要学会触类旁通,利用丰富的网络资源去打磨细节,提升自己的综合能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文学习(一):基于遥感技术的凉山州森林火险预测方法研究

文章目录 摘要部分一、绪论二、研究区历史火情分析2.1凉山州森林火灾年际变化特征2.2凉山州森林火灾月际变化特征2.3凉山州森林火灾空间分布特征2.4森林火灾等级与起火原因分析 三、数据与方法3.1数据来源3.2数据预处理3.3研究方法3.3.1逻辑回归:最大似然估计3.3.2决…

iOS——持久化

iOS的数据存储机制 沙盒机制 应用沙盒文件夹包含了: Application(应用程序包):包含了所有的资源文件和和可执行文件,上架前经过数字签名,上架后不可修改。 Documents:文档目录,要保存程序生成的数据&…

华为OD机试 - 最大相连男生数 - 矩阵(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

[数据集][目标检测]水面垃圾检测数据集VOC+YOLO格式2027张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2027 标注数量(xml文件个数):2027 标注数量(txt文件个数):2027 标注…

信创实践(3):基于x2openEuler将CentOS升级成openEuler,享受其带来的创新和安全特性

引言: 在当前的 IT 行业中,创新和安全性是两大关键趋势。随着 CentOS 停止维护,许多用户正在寻找替代方案,以保持其系统的更新和安全。openEuler 作为一个强大的开源操作系统,成为了理想的迁移目标。本教程将指导您如…

大语言模型的上下文窗口(Context Windows):对人工智能应用的影响

大语言模型(LLMs)极大地提升了人工智能在理解和生成类人文本方面的能力。其中一个影响其效用的基本方面是它们的 “上下文窗口”—— 这个概念直接影响着这些模型接收和生成语言的有效性。我将深入探讨上下文窗口是什么、它们对人工智能应用的影响以及组…

【通俗理解】Baseline在竞赛中的意义——性能比较的标准尺

【通俗理解】Baseline在竞赛中的意义——性能比较的标准尺 关键词提炼 #Baseline #竞赛标准 #算法性能 #性能比较 #改进评估 #魔改基础 #优势彰显 第一节:Baseline的类比与核心概念【尽可能通俗】 1.1 Baseline的类比 Baseline在竞赛中就像是一场跑步比赛的起跑…

【IEEE独立出版 | 最终截稿时间:2024年9月9日23:59】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024)

【IEEE独立出版 | 最终截稿时间:2024年9月9日23:59】 第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024) 2024 3rd International Conference on Artificial Intelligence, Internet of Things and Cloud Computing Technology 202…

轻松驾驭开学季,智慧校园综合解决方案!

智慧校园是指运用先进的信息技术手段和智能化系统,对学校内部各种教育资源、管理流程和服务进行数字化、网络化、智能化的整合与优化,提供高效便捷的教育教学和管理服务环境的校园。 智慧校园建设从哪些方面入手呢? 1.智慧食堂管理系统 基于…

[3.4]【机器人运动学MATLAB实战分析】平面RRR机器人正运动学MATLAB计算

本文重点介绍平面RRR机械手结构的正运动学方程的算例,这些是工业机器人中经常遇到的。平面RRR机器人运动学建模如下: 机器人模型: 表1三连杆平面臂的DH参数 由于所有关节都是转动型的,对每一个关节都具有相同的定义的齐次变换矩阵结构,即: 则计算正运动学方程得:

xAI巨无霸超级计算机上线:10万张H100 GPU,计划翻倍至20万张

在短短四个多月的时间里,埃隆马斯克的X公司(前身为Twitter)推出了世界上最强劲的人工智能训练系统。名为Colossus的超级计算机使用了多达10万张NVIDIA H100 GPU进行训练,并计划在未来几个月内再增加5万张H100和H200 GPU。 “本周末…

时间序列神器Prophet教程-入门教程

公众号:尤而小屋编辑:Peter作者:Peter 大家好,我是Peter~ 今天给大家分享一个时间序列预测神器Prophet的简易入门教程。 什么是Prophet Prophet是一种基于加法模型的时间序列预测工具,由Facebook的数据科学团队开发…

实战训练与源码教程:用Real-ESRGAN对抗生成超分技术实现超高清图像!

目录 前言 超分数据如何构造呢? Real-ESRGAN 1. 高质量细节重建 2. 真实感和自然度 3. 处理真实世界数据 4. 多尺度和多种类型的输入 5. 视觉效果的提升 超分如何退化 1. 模糊处理 2. 噪声处理 3. 压缩失真 4. 训练数据的退化模拟 2.经典退化模型◆退…

【苍穹外卖】Day 7 缓存、购物车相关接口

1 缓存 存在问题: 用户端小程序展示的菜品数据都是通过査询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 >解决: 通过 Redis 来缓存菜品数据,减少数据库查询操作 缓存逻辑分析: 每个分…

PyDracula:用 PySide6 和 PyQt6打造现代感 Python GUI 的利器

PyDracula 是一个基于 PySide6 或 PyQt6 的 Python GUI 库,它以其现代、美观、易于定制的特点而闻名。PyDracula 融合了流行的 Dracula 主题,并提供了丰富的功能,让开发者可以轻松构建出具有吸引力的图形界面。本文将详细介绍 PyDracula 的核…

【Godot4.3】CanvasShape资源化改造

概述 通过把之前自定义的CanvasShape类变成资源类型,将可以同时用于CanvasItem绘图和创建扩展的Node2D和Polygon2D节点等。 本篇就完成CanvasShape类的资源化改造,并记录改造过程和思路。 CanvasShape资源类型体系 CanvasShape仍然为图形基类&#xf…

Android Auto未来可能支持无线电广播

通过Android Auto,可以在车载收音机上使用 Google 地图、音乐、收听播客,还能获取天气等基本信息。最近,国外科技媒体9to5Google通过分析 Android Auto v12.3 和 v12.4的应用程序的代码发现了一些提示信息,特别提到了 AM、FM、HD …

【Protobuf】xml、json与protobuf有什么区别,protobuf详解(保姆篇)

文章目录 简介Protobuf 的原理安装 Protobuf 编译器在 Python 中使用 Protobuf安装语言特定的 Protobuf 库定义消息结构生成代码使用 Protobuf 进行序列化和反序列化 在 Java 中使用 Protobuf安装和配置编译 .proto 文件使用生成的 Java 类创建和序列化对象 代码注释 高级特性嵌…

LabVIEW灵活集成与调试的方法

在LabVIEW开发中,为了构建一个既便于调试又能灵活集成到主VI中的控制VI,开发者需要采用适当的编程方式和架构。常见的选择包括模块化设计、状态机架构以及事件驱动编程。这些方法有助于简化调试过程、提高系统的稳定性,并确保代码的重用性和可…

day43-测试平台搭建之前端vue学习-基础2

目录 一、数据代理 二、事件处理 三、计算属性 四、监控属性 五、绑定样式 六、今日学习思维导图 一、数据代理 1.1.数据代理:通过一个对象代理对另外一个对象中属性的操作 (读/写) 1.2.Vue中数据代理的好处:更加方便的操作data中的数据 1.3.基本原…