游戏管理系统

news2024/11/13 18:01:03

目录

Java程序设计课程设计

游戏管理系统

1系统简介

1.1需求分析

1.2 编程环境与工具

2系统总体设计

2.1 系统的功能模块图。

2.2 各功能模块简介。

3主要业务流程

(1)用户及管理员登录流程图

(2)信息添加流程

(3)信息删除流程

4数据库的设计

4.1 概念数据库设计

1游戏实体E-R

4.2 逻辑数据库设计

5系统功能详细实现及效果图

(1) 首页

(2) 游戏管理

(3)游戏分类界面

4用户退出界面

(5)管理员登录成功界面

6功能典型代码

7总结

(1) 收获

(2) 不足及原因

8参考文献

1系统简介

本游戏管理维护系统旨在提供一个统一的平台,对多种游戏进行管理和维护。系统涵盖了游戏信息管理、用户管理、游戏数据统计等功能,方便游戏管理员对游戏进行有效的管理和监控。

1.1需求分析

1.系统架构:采用 B/S 架构,基于 JavaWeb 技术实现。

2.数据库设计:使用关系型数据库,如 MySQL 或 Oracle 等。

3.技术框架:Spring、Spring Boot、MyBatis 等。

1.2 编程环境与工具

根据本系统体系结构特点和使用本系统的用户特点,编程环境与工具的配置如表1-1所示:

表1-1 开发环境

Tab. 1-1 Development environment table

类别

标准配置

开发语言

Java

开发工具

IDEA

开发环境

JDK 8.0

服务器

Tomcat 8.0

数据库

MySql 5.6

数据库连接池

C3P0

前端框架

BootStrap

2系统总体设计

2.1 系统的功能模块图。

按照系统的分析,本系统采用基于B/S架构的系统,系统分为管理员和普通用户两种身份,其中普通用户可以管理个人用户信息,也可·以对是否携带游戏、体温、手机号、出发地、目的地等进行修改操作;系统的管理员需要先登录,然后才能使用系统的各项功能,会涉及相应的信息。

2.2 各功能模块简介。

用户信息管理模块包括用户登录、注册、退出、信息查询和修改功能。系统首页,登录界面的主要功能是让用户输入账号和密码。账号通常是用户在注册时填写的用户名、手机号码或电子邮箱,而密码是用户用于验证身份的秘密字符组合。不同的账号密码对应进入不同的界面,有不同的权限,实现不同的功能。在登录界面中,通常会有两个输入框,分别用于输入账号和密码。 输入框应该具有清晰的标签,以指导用户正确输入信息。

管理员信息管理模块包括管理员登录退出、信息修改及对普通用户的信息进行增删改查,可以实现数据库备份,为保证数据安全本系统采用了数据库备份功能;管理员系统它需要有效地提供疫情数据的收集、汇总、分析和展示等功能,为疫情防控工作提供科学依据和决策支持。

基础信息维护模块包括游戏类别设置、游戏信息添加、以及用户是否携带游戏。

3主要业务流程

(1)用户及管理员登录流程图

对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图3-1所示。

3-1登录流程图

Figure 3-1 Login Flowchart

(2)信息添加流程

对于疫情防控管理系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图3-2所示。

图3-2信息添加流程图

Figure 3-2 Information is added to the Flowchart

(3)信息删除流程

不管是哪个用户角色进入到不通的系统操作界面,都可以进行不同的信息内容的操作功能,对用系统数据信息的删除,用户一旦将信息删除,那么该删除的数据信息将无法恢复,所以用户在对数据删除事,一定判断删除的内容是否是确定要删除的,确定无误后选择确定删除操作,如图3-3所示。

图3-3信息添加流程图

Figure 3-3 Information Deletion Flowchart

4数据库的设计

4.1 逻辑数据库设计

用表格列出表的结构及说明表中主要列的作用。

ID

名称

类型

是否主键

解释

1

btId

int

不能

编号

2

btName

varchar

不是主键

不能

名称

btDescription

varchar

不是主键

不能

信息

类型信息表用来存放游戏类型信息,用来存放游戏类别,游戏名称。

ID

名称

类型

是否主键

解释

1

bId

int

不能

编号

2

bgameName

varchar

不是主键

不能

名称

3

bAuthor

varchar

不是主键

不能

作者

4

bSex

varchar

不是主键

不能

是否收费

5

bPrice

float

不是主键

不能

定价

6

bgameDescription

varchar

不是主键

不能

信息

7

btId

int

不是主键

不能

类型id

游戏信息表用来存放游戏信息,包括编号、名称、作者。

5系统功能详细实现及效果图

  1. 首页

 

  1. 游戏管理

(3)游戏分类界面

这部分主要展示当前游戏信息详细介绍,让用户对游戏信息获取更加完善;如下图所示

将我们的信息进行一个输出,输出数据库中的内容可以通过编写查询语句来实现。首先,需要连接到数据库,并构建一个查询语句,以从数据库中检索所需的信息。然后,执行查询,获取结果集,并将结果集中的内容进行输出,可以是在控制台打印、在界面上展示或者写入文件等方式。在输出信息之前,可能需要对结果进行格式化或者加工,以便更好地呈现给用户或者其他系统进行处理。最后,确保输出的信息是准确的、完整的,并且符合预期的要求。

4用户退出界面

这一部分是用户退出登录界面。如下图所示:

将登录凭证转为失效状态通常需要在数据库中进行更新操作。首先,需要构建一个更新语句,将特定的登录凭证的状态字段设置为失效状态。然后,执行该更新语句,以确保数据库中的登录凭证状态已经被更新。在执行更新操作之前,可能需要进行一些验证,例如验证用户的身份或者权限,确保只有有权的用户才能进行这个操作。另外,还需要确保更新操作是安全的,不会对数据库中的其他数据产生影响。最后,可以通过查询操作来验证登录凭证的状态是否已经成功地被更新为失效状态。

(5)管理员登录成功界面

这是使用管理员的账号和密码进行登录之后的界面,这个界面可以对普通用户进行查询、修改和删除以及添加操作。

通过对dao的操作进行对表的增删改查。

6功能典型代码

根据SQL语句执行数据库的增删改操作

public class gameDao {

    public boolean dataChange(String sql) {

        Connection conn = null;

        Statement stmt = null;

        ResultSet rs = null;

        int num = 0;

        try {

            //获得数据的连接

            conn = JDBCUtils.getConnection();

            //获得Statement对象

            stmt = conn.createStatement();

            //发送SQL语句

            num = stmt.executeUpdate(sql);

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            JDBCUtils.release(rs, stmt, conn);

        }

        // 对受影响行数进行判断

        if (num > 0) {

            return true;

        } else {

            return false;

        }

    }

    /**

     * 操作结果:根据参数sql获取数据库记录数据

     *

     * @param sql SQL语句

     * @return List 返回包含记录Records对象的集合

     */

    public List getRecordsDataBySql(String sql) {

        Connection conn = null;

        Statement stmt = null;

        ResultSet rs = null;

        List list = new ArrayList();

        try {

            //获得数据的连接

            conn = JDBCUtils.getConnection();

            //获得Statement对象

            stmt = conn.createStatement();

            //发送SQL语句

            rs = stmt.executeQuery(sql);

            while (rs.next()) {

                gameBean gameBean = new gameBean();

                // 索引是从1开始的

                gameBean.setgameId(rs.getInt(1));

                gameBean.setgameName(rs.getString(2));

                gameBean.setgameAuthor(rs.getString(3));

                gameBean.setgameAuthorSex(rs.getString(4));

                gameBean.setgamePrice(rs.getFloat(5));

                gameBean.setgameDescription(rs.getString(6));

                gameBean.setgameTypeId(rs.getString(7));

                list.add(gameBean);

            }

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            JDBCUtils.release(rs, stmt, conn);

        }

        return list;

    }

    /**

     * 操作结果:将集合转换成数组

     *

     * @param list 集合

     * @return String[][] 二维数组

     */

    public String[][] ListToArray(List<gameBean> list) {

        String[][] array = new String[list.size()][7];

        for (int i = 0; i < list.size(); i++) {

            gameBean l = list.get(i);

            array[i][0] = String.valueOf(l.getgameId());

            array[i][1] = l.getgameName();

            array[i][2] = l.getgameAuthor();

            array[i][3] = l.getgameAuthorSex();

            array[i][4] = String.valueOf(l.getgamePrice());

            array[i][5] = l.getgameDescription();

            array[i][6] = l.getgameTypeId();

        }

        return array;

    }

}

游戏面板

  gameAddPanel() {

        // 为游戏添加面板添加控件内容

        this.add(creategameAddBox());

        // 批量为按钮设置图标

        componentTools.setIcons(new JButton[]{addButton, resetButton}, new String[]{"src/gameManageSystem/images/add" +

                ".png", "src/gameManageSystem/images/reset.png"});

        // 游戏类别查询SQL

        String getgameTypeSQL = "select * from game_type";

        // 获取所有的游戏类别数据

        List gameTypeList = new gameTypeDao().getRecordsDataBySql(getgameTypeSQL);

        // 获取所有的游戏类别名称

        String[] typeNames = new String[gameTypeList.size()];

        for (int i = 0; i < gameTypeList.size(); i++) {

            gameTypeBean gameTypeBean = (gameTypeBean) gameTypeList.get(i);

            typeNames[i] = gameTypeBean.getgameTypeName();

        }

        // 初始化下拉列表框中的选项

        componentTools.addComboBoxItems(gameTypeComboBox, typeNames);

        // 为按钮注册事件监听器

        addButton.addActionListener(this);

        resetButton.addActionListener(this);

    }

    /**

     * 游戏添加面板的内容控件

     *

     * @return 返回一个Box

     */

    private Box creategameAddBox() {

        totalVBox = Box.createVerticalBox();

        funcationHBox = Box.createHorizontalBox();

        gameAddFuncationLabel = new JLabel("游戏添加功能");

        gameAddFuncationLabel.setFont(new Font("微软雅黑", Font.BOLD, 30));

        funcationHBox.add(gameAddFuncationLabel);

        totalVBox.add(funcationHBox);

        totalVBox.add(Box.createVerticalStrut(30));

        nameAndAuthorHBox = Box.createHorizontalBox();

        gameNameLabel = new JLabel("游戏名称:");

        gameNameTextField = new JTextField(10);

        gameAuthorLabel = new JLabel("游戏公司:");

        gameAuthorTextField = new JTextField(10);

        nameAndAuthorHBox.add(gameNameLabel);

        nameAndAuthorHBox.add(Box.createHorizontalStrut(40));

        nameAndAuthorHBox.add(gameNameTextField);

        nameAndAuthorHBox.add(Box.createHorizontalStrut(40));

        nameAndAuthorHBox.add(gameAuthorLabel);

        nameAndAuthorHBox.add(Box.createHorizontalStrut(40));

        nameAndAuthorHBox.add(gameAuthorTextField);

        totalVBox.add(nameAndAuthorHBox);

        totalVBox.add(Box.createVerticalStrut(30));

        sexAndPriceHBox = Box.createHorizontalBox();

        authorSexLabel = new JLabel("游戏类型:");

        Box sexHBox = Box.createHorizontalBox();

        femaleRadioButton = new JRadioButton("收费");

        maleRadioButton = new JRadioButton("免费");

        sexHBox.add(femaleRadioButton);

        sexHBox.add(maleRadioButton);

        radioButtonGroup = new ButtonGroup();

        radioButtonGroup.add(femaleRadioButton);

        radioButtonGroup.add(maleRadioButton);

        gamePriceLabel = new JLabel("游戏库存:");

        gamePriceTextField = new JTextField(5);

        sexAndPriceHBox.add(authorSexLabel);

        nameAndAuthorHBox.add(Box.createHorizontalStrut(50));

        sexAndPriceHBox.add(sexHBox);

        nameAndAuthorHBox.add(Box.createHorizontalStrut(100));

        sexAndPriceHBox.add(gamePriceLabel);

        nameAndAuthorHBox.add(Box.createHorizontalStrut(10));

        sexAndPriceHBox.add(gamePriceTextField);

        totalVBox.add(sexAndPriceHBox);

        totalVBox.add(Box.createVerticalStrut(30));

        typeHBox = Box.createHorizontalBox();

        gameTypeLabel = new JLabel("游戏类别:");

        // 实例化下拉列表框控件

        gameTypeComboBox = new JComboBox();

        typeHBox.add(gameTypeLabel);

        typeHBox.add(Box.createHorizontalStrut(40));

        typeHBox.add(gameTypeComboBox);

        totalVBox.add(typeHBox);

        totalVBox.add(Box.createVerticalStrut(30));

        descriptionHBox = Box.createHorizontalBox();

        descriptionLabel = new JLabel("游戏描述:");

        descriptionTextArea = new JTextArea(10, 40);

        descriptionHBox.add(descriptionLabel);

        descriptionHBox.add(Box.createHorizontalStrut(40));

        descriptionHBox.add(descriptionTextArea);

        totalVBox.add(descriptionHBox);

        totalVBox.add(Box.createVerticalStrut(30));

        buttonHBox = Box.createHorizontalBox();

        addButton = new JButton("添加");

        resetButton = new JButton("重置");

        buttonHBox.add(addButton);

        buttonHBox.add(Box.createHorizontalStrut(80));

        buttonHBox.add(resetButton);

        totalVBox.add(buttonHBox);

        return totalVBox;

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        // “添加”按钮的事件处理

        if (e.getSource() == addButton) {

            // 获取用户输入的游戏名称

            String name = gameNameTextField.getText();

            // 获取用户输入的游戏公司名字

            String author = gameAuthorTextField.getText();

            // 获取用户选择的游戏公司的性别

            String sex = "";

            if (maleRadioButton.isSelected()) {

                sex = maleRadioButton.getText();

            } else if (femaleRadioButton.isSelected()) {

                sex = femaleRadioButton.getText();

            }

            // 获取用户输入的游戏库存

            String price = gamePriceTextField.getText();

            // 获取用户选择的游戏类别

            String type = (String) gameTypeComboBox.getModel().getSelectedItem();

            // 获取用户输入的游戏描述

            String description = descriptionTextArea.getText();

            // 组装游戏类别SQL

            String gameTypeSQL = "select * from game_type where btName='" + type + "';";

            // 根据用户选择的游戏类别进行查询

            List gameTypeList = new gameTypeDao().getRecordsDataBySql(gameTypeSQL);

            // 获取查询结果

            gameTypeBean gameTypeBean = (gameTypeBean) gameTypeList.get(0);

            // 获取用户选择的游戏类别的id号

            int gameTypeId = gameTypeBean.getgameTypeId();

            // 组装新增SQL语句

            String sql =

                    "insert into game(bgameName, bAuthor, bSex, bPrice, bgameDescription, btId) values('" + name + "'," +

                            "'" + author + "','" + sex + "'," + price + ",'" + description + "'," + gameTypeId + ");";

            // 执行SQL并获取操作结果

            boolean isOK = new gameDao().dataChange(sql);

            // 对添加结果进行判断

            if (isOK) {

                // 添加成功则重置用户输入,并弹出提示框

                componentTools.reset(gameNameTextField, gameAuthorTextField, gamePriceTextField, descriptionTextArea);

                componentTools.reset(radioButtonGroup);

                componentTools.reset(gameTypeComboBox);

                JOptionPane.showMessageDialog(null, "添加成功!");

            } else {

                // 添加失败也弹出提示框

                JOptionPane.showMessageDialog(null, "添加失败!");

            }

        }

        // “重置”按钮的事件处理

        if (e.getSource() == resetButton) {

            // 重置用户输入和选择

            componentTools.reset(gameNameTextField, gameAuthorTextField, gamePriceTextField, descriptionTextArea);

            componentTools.reset(radioButtonGroup);

            componentTools.reset(gameTypeComboBox);

        }

    }

}

连接JDBC类

public class JDBCUtils {

    /**

     * 加载驱动,并建立数据库连接

     *

     * @return 返回数据库连接

     * @throws SQLException           抛出SQLException

     * @throws ClassNotFoundException 抛出ClassNotFoundException

     */

    public static Connection getConnection() throws SQLException, ClassNotFoundException {

        // 设置数据库驱动

        Class.forName("com.mysql.jdbc.Driver");

        // 数据库链接URL及数据库名称

        String url = "jdbc:mysql://localhost:3366/gamesys?useUnicode=true&characterEncoding=utf8&useSSL=false";

        // 登录账户名

        String username = "root";

        // 登录账户密码

        String password = "root";

        // 创建连接

        Connection conn = DriverManager.getConnection(url, username, password);

        return conn;

    }

    /**

     * 关闭数据库连接,释放资源

     *

     * @param stmt Statement对象

     * @param conn Connection对象

     */

    public static void release(Statement stmt, Connection conn) {

        if (stmt != null) {

            try {

                stmt.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

            stmt = null;

        }

        if (conn != null) {

            try {

                conn.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

            conn = null;

        }

    }

    /**

     * 关闭数据库连接,释放资源

     *

     * @param rs   ResultSet对象

     * @param stmt Statement对象

     * @param conn Connection对象

     */

    public static void release(ResultSet rs, Statement stmt, Connection conn) {

        if (rs != null) {

            try {

                rs.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

            rs = null;

        }

        release(stmt, conn);

    }

}

7总结

  1. 收获

本游戏管理维护系统为游戏管理员提供了一个便捷的工具,方便对游戏进行管理和维护。通过本系统,帮助管理员及时发现并解决游戏中出现的问题。系统还支持多种数据分析和报表生成功能,帮助管理员深入了解游戏运营情况,及时调整策略和优化运营方案。同时,系统还提供了用户反馈和投诉处理模块,帮助管理员及时处理用户反馈和投诉,提升用户满意度和游戏口碑。总之,本游戏管理维护系统为游戏管理员提供了全方位的管理工具,帮助他们更好地管理和运营游戏,提升游戏的竞争力和用户体验。

  1. 不足及原因

然而,Javaweb游戏系统也存在一些不足之处。首先,系统的安全性有待加强,存在一定的安全漏洞和风险,需要进一步加强系统的安全防护措施。其次,系统的游戏内容和功能还有待丰富和完善,此外,系统的用户体验和界面设计也需要进一步改进,以提升用户的操作便利性和游戏体验。另外,系统的数据备份和恢复功能也需要加强,以防止数据丢失和系统故障。最后,系统的跨平台兼容性和移动端适配性也需要进一步提升,以满足不同用户群体的需求。综上所述,Javaweb游戏系统虽然已经提供了便捷的管理工具,但仍然需要在安全性、功能完善性、性能优化等方面进行进一步改进和提升。

8参考文献

[1]李洋,张华(2018)。基于Java的Web游戏管理系统的设计与实现。2018年第四届国际控制、自动化和机器人技术会议(ICCAR)论文集,368-372页。

[2]王勇,陈瑜(2017)。基于Java EE的Web游戏管理系统的研究与实现。2017年第三届国际控制、自动化和机器人技术会议(ICCAR)论文集,464-468页。

[3]刘敏,王亮(2016)。基于Java的Web游戏管理系统的设计与实现。2016年第三届国际信息科学和控制工程会议(ICISCE)论文集,1080-1083页。

[4]郭军,陈华(2015)。基于Java的Web游戏管理系统的研究与实现。2015年第七届智能人机系统与控制技术国际会议(IHMSC)论文集,233-236页。

[5]梁山(2018)。《Java Web开发技术及实例详解》。清华大学出版社。

[6]王静,吴立(2015)。《Java Web开发技术及实例详解》。清华大学出版社。

完整源码:

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

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

相关文章

Java语言程序设计——篇十三(3)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

virtual_host.hpp模块

目录 一.VirtualHost虚拟机模块介绍 二.VirtualHost的实现 1. 类概述 2. 交换机操作 3. 队列操作 4. 绑定操作 5. 消息操作 6. 清理操作 总结 三.全部代码 一.VirtualHost虚拟机模块介绍 虚拟机是对之前几个数据管理模块的整合&#xff0c;并封装了之前的一些操作。…

安装Jmeter,配置jdk

注意点: java的jdk和jmeter的版本相匹配 ! ! ! 目前我使用的是1.8的的,jmeter使用的是5.6.3 JDK下载地址&#xff1a;https://www.oracle.com/cn/java/technologies/downloads 别管,直接傻瓜式安装点点就完了... 1.电脑-属性-高级系统设置-环境变量 2.系统变量-新建-变量…

如何理解:进程控制

文章目录 前言&#xff1a;进程创建&#xff1a;进程终止&#xff1a;如何终止进程&#xff1f;进程等待非阻塞等待&#xff1a; 总结&#xff1a; 前言&#xff1a; ​ 对于前面的地址空间的学习&#xff0c;我们现在了解到原来所谓变量的地址其实是虚拟地址&#xff0c;该虚…

python管理mysql(实现读写分离)及如何用Mycat读写分离

Day24 编写python代码实现读写分离 1、安装pymysql&#xff0c;它是python管理mysql的驱动&#xff0c;或者称为连接器 [rootpyhton ~]#pip3 config set global.index-url Simple Index [rootpython ~]# pip3 install pymysql #安装pymysql [rootpyhton ~]# python3 …

【C++】什么是内存管理?

如果有不懂的地方&#xff0c;可以看我以往文章哦&#xff01; 个人主页&#xff1a;CSDN_小八哥向前冲 所属专栏&#xff1a;C入门 目录 C/C内存分布 C内存管理方式 new/delete操作内置类型 new/delete操作自定义类型 operator new与operator delete函数 new和delete实现…

【秋招笔试】24-08-10-OPPO-秋招笔试题(第二套)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

2024巴黎奥运会VIS视觉设计分享学习

2024年巴黎奥运会的视觉识别系统&#xff08;VIS&#xff09;以其独特的设计和创意&#xff0c;展现了法国的优雅与活力。该设计融合了现代感与传统元素&#xff0c;以巴黎标志性的建筑和文化为灵感&#xff0c;创造出一系列令人印象深刻的视觉符号。 色彩上&#xff0c;采用了…

SpringCloud网关

1.网关的作用 2.网关入门 2.1引入依赖 <dependencies><dependency><groupId>com.heima</groupId><artifactId>hm-common</artifactId><version>1.0.0</version></dependency><!--网关--><dependency><g…

【qt】基于tcp的客户端搭建

ui界面设计 我们给客户端提供服务器的ip地址&#xff0c;以及服务器的端口号 1.界面设计 2.修改对象名称 代码实现 断开按键的槽函数处理 转到槽&#xff0c;然后实现槽函数&#xff0c;直接关闭该窗口&#xff0c;就可以了 连接槽函数编写&#xff0c;首先要支持网络通信…

C# 解析html

C#解析html库 网上查找有如下几个库 SGMLReader (好久不更新了)html-agility-pack(活跃)AngleSharp(活跃)CsQuery(好久不更新) 选择AngleSharp 原因:能向写js一样获取元素 安装AngleSharp 1.2.0-beta.431 using AngleSharp.Html.Parser;namespace HtmlParse01;class Progr…

示波法电子血压原理

血压是指血液在血管内流动时作用于单位面积血管壁的侧压力&#xff0c;它是推动血液在血管内流动的动力。在不同血管内被分别称为动脉血压、毛细血管压和静脉血压&#xff0c;通常所说的血压是指体循环的动脉血压。 血压正常范围值&#xff1a;收缩压130mmHg&#xff0c;舒张压…

【Python学习-UI界面】PyQt5 小部件9-QMenuBar,QMenuQAction 菜单栏

样式如下: 在pyqt5中直接添加就行&#xff0c;子项只能输入英文&#xff0c;输入中文的方式待研究 一个水平的 QMenuBar 位于QMainWindow对象的标题栏下方&#xff0c;用于显示QMenu对象。 QMenu 类提供了一个可以添加到菜单栏的小部件。它还用于创建上下文菜单和弹出菜单。…

基于YOLOv10深度学习的草莓成熟度检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、人工智能

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

SpringCloud完整教程

一下内容为本人在听黑马程序员的课程时整理的 微服务技术栈 ⎛⎝≥⏝⏝≤⎛⎝ ⎛⎝≥⏝⏝≤⎛⎝ ⎛⎝≥⏝⏝≤⎛⎝ ⎛⎝≥⏝⏝≤⎛⎝ 1、微服务框架 1.1、认识微服务 1.1.1、服务架构演变 **单体架构&#xff1a;**将业务的所有功能集中在一个项目中开发&#xff0c;打包成…

TypeScript 编译选项

编译TS 编译 .ts 文件&#xff1a; tsc app.ts执行命令tsc app.ts 可以把 单个文件 app.ts编译成 app.js。 这个命令需要每次编译时手动执行。 自动编译文件 tsc app.ts -w // 或者 tsc app.ts --watch通常 -w 或 --watch 指令用于启动 TypeScript 编译器的监视模式。 编译…

梅丽尔·斯特里普表演艺术家中心对外开放并恢复线下活动 体现了她的“卓越”

梅丽尔斯特里普表演艺术家中心对外开放并恢复线下活动 体现了她的“卓越” 2024-08-14 20:38 发布于&#xff1a;河北省 该中心将为美国演员工会和美国电视广播艺人协会的艺术家提供资源和机会&#xff0c;而且全部免费 同时命名的还有汤姆汉克斯和丽塔威尔逊放映室、妮可…

工业WiFi网关在工业领域的具体应用-天拓四方

工业WIFI网关在工业领域的应用已经变得极为广泛&#xff0c;它不仅是连接工业设备、传感器与云平台之间的桥梁&#xff0c;更是推动工业智能化和自动化的重要动力。下面将进一步详细介绍工业WiFi网关在工业领域的一些具体应用。 工业自动化生产&#xff1a; 在工业自动化生产…

算法力扣刷题记录 八十一【343. 整数拆分】

前言 动态规划第8篇。记录 八十一【343. 整数拆分】 一、题目阅读 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。返回 最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 …

货代企业转型海外仓,会面临哪些难点?

根据数据统计&#xff0c;跨境电商出口B2C物流市场规模已经达到3825亿元&#xff0c;其中海外仓物流以2102亿的规模以及55%的市场份额成为主流。从细分领域看&#xff0c;其中FBA物流、第三方仓、自建仓的市场规模分别达到1156亿、736亿、210亿。 在跨境物流行业中&#xff0c…