学生管理系统:含注册登录操作

news2024/12/25 2:34:17

目录

一、分包概况:

二、USER包

1.AMain类:主函数所在

2.User类:构造账号属性

3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作

(1)Login类:登录类

(2)Register类:注册类

(3)RevisePassword类:修改密码类

(4)ShowPassword类:查看密码类

4.Console包:放用户操作台和管理员操作台

(1)ConsoleAdministrators类 :管理员操作台

(2)ConsoleUser类:用户操作台

5.Face包:界面包,编辑各个界面

(1)FaceLogon类:登录界面

(2)FaceAdministrators类:管理员操作台界面

(3)FaceUser类:用户操作台界面:

三、OPERATE包

1.Add类:

2.Delete类:

3.Revise类:

4.Seek类:

5.Show类:

四、STUDENT包

五、运行结果


一、分包概况:

 

二、USER包

1.AMain类:主函数所在

package USERS;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.Face.*;
import USERS.PasswordOperate.*;

public class AMain {//主函数
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        ArrayList<User> list = new ArrayList<>();//储存账号密码的集合

        list.add(new User("康茹", "20021127"));
        list.add(new User("小白", "12345678"));
        //初始化账号密码,以便于待会的登录操作

        FaceLogon.menu();//打印登录界面,调用FaceLogon中的menu方法

        while (true) {
            System.out.println("请输入您的选择:");
            String num = in.next();
            switch (num) {
                case "1":
                    Register.register(list);//跳到注册页面
                    break;
                case "2":
                    Login.login(list);//跳到登录页面
                    break;
                case "3":
                    RevisePassword.revisePassword(list);//忘记密码,重置密码
                    break;
                case "4":
                    ShowPassword.showPassword(list);//查看账号信息
                    break;
                case "5":
                    System.out.println("感谢你的使用!");//退出操作
                    System.exit(0);
                default:
                    System.out.println("无此操作!");//无此操作
                    break;
            }
        }
    }
}

2.User类:构造账号属性

package USERS;

public class User {//构造账号的属性
    private String username;//用户名
    private String password;//密码

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
}

3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作

(1)Login类:登录类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;//调用输入包

import USERS.User;
import USERS.Console.ConsoleAdministrators;
import USERS.Console.ConsoleUser;

public class Login {
    public static void login(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String username = in.next();

            // 判断用户名是否已经注册
            int index = getIndex(list, username);//调用getIndex方法遍历账号数组
            if (index == -1) {
                System.out.println("该用户名未注册!");
                return;
            }

            System.out.println("请输入密码:");
            String password = in.next();
            // 验证用户名和密码是否正确
            User user = new User(username, password);
            boolean flag = checkNameAndPwd(list, user);
            if (!flag) {
                if (i == 2) {
                    System.out.println("当前账号被锁定!");
                } else {
                    System.out.println("登录失败,用户名或密码错误,您还有" + (2 - i) + "次机会!");
                }
            } else {
                while (true) {
                    System.out.println("请输入你的身份:1.管理员 2.用户");
                    String id = in.next();
                    if (id.equals("1")) {
                        System.out.println("请输入管理员密钥:");
                        while (true) {
                            int key = in.nextInt();
                            if (key == 123456) {
                                ConsoleAdministrators.console();
                            } else {
                                System.out.println("密钥错误,请重新输入:");
                            }
                        }
                    } // 登录成功,跳转到控制台
                    else if (id.equals("2")) {
                        ConsoleUser.console();
                    } else {
                        System.out.println("输入错误,请重新输入:");
                    }
                }
            }
        }
    }

    // 验证用户名和密码
    public static boolean checkNameAndPwd(ArrayList<User> list, User userInfo) {
        for (int i = 0; i < list.size(); i++) {
            User user = list.get(i);
            if (user.getUsername().equals(userInfo.getUsername())
                    && user.getPassword().equals(userInfo.getPassword())) {
                return true;
            }
        }
        return false;
    }

    // 遍历数组,判断用户是否存在
    private static int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            boolean flag = list.get(i).getUsername().equals(username);
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

(2)Register类:注册类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.User;

public class Register {
    public static void register(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);

        // 键盘录入用户名
        String username;
        while (true) {
            System.out.println("请输入用户名:");
            username = in.next();
            boolean flag = contains(list, username);// 判断是否唯一
            if (flag) {
                System.out.println("用户名已存在,请重新输入:");
            } else {
                System.out.println("用户名:(" + username + ")可用");
                break;
            }
        }

        // 键盘录入密码
        String password;
        while (true) {
            System.out.println("请输入密码:");
            password = in.next();

            System.out.println("请确认密码:");
            String password2 = in.next();

            if (password.equals(password2)) {
                System.out.println("两次密码一致!");
                break;
            } else {
                System.out.println("两次密码输入不一致,请重新输入:");
            }
        }

        User user = new User(username, password);
        list.add(user);

        System.out.println("注册成功!");
    }

    // 判断用户名是否唯一
    private static boolean contains(ArrayList<User> list, String username) {
        return getIndex(list, username) >= 0;
    }

    // 遍历数组,判断用户是否存在
    private static int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            boolean flag = list.get(i).getUsername().equals(username);
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

(3)RevisePassword类:修改密码类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.User;

public class RevisePassword {
    public static void revisePassword(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);

        System.out.println("请输入用户名:");
        String username = in.next();

        int index = getIndex(list, username);

        if (index == -1) {
            System.out.println("当前用户名未被注册!");
            return;
        }

        User user = list.get(index);// 获取要修改的用户对象
        String password;
        while (true) {
            System.out.println("请输入新的密码:");
            password = in.next();

            System.out.println("请确认新的密码:");
            String password2 = in.next();

            if (password.equals(password2)) {
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入!");
            }
        }

        user.setPassword(password);

        System.out.println("修改成功!");
    }

    // 获取用户对象对应的索引,判断用户是否存在
    private static int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            boolean flag = list.get(i).getUsername().equals(username);
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

(4)ShowPassword类:查看密码类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.User;

public class ShowPassword {
    public static void showPassword(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("此功能为管理员权限,请输入管理员密码:");
        int password = in.nextInt();
        if (password == 123456) {
            System.out.println("密码正确!");
            for (int i = 0; i < list.size(); i++) {
                User user = list.get(i);
                System.out.println("账号:" + user.getUsername() + "     密码:" + user.getPassword());
            }
            return;
        } else {
            System.out.println("密码错误!");
            return;
        }
    }
}

4.Console包:放用户操作台和管理员操作台

(1)ConsoleAdministrators类 :管理员操作台

package USERS.Console;

import java.util.ArrayList;
import java.util.Scanner;//调用输入包

import OPERATE.*;

import STUDENT.Student;

import USERS.Face.*;

public class ConsoleAdministrators {//管理员控制台
    public static void console() {
        Scanner in = new Scanner(System.in);

        FaceAdministrators.menu();

        ArrayList<Student> list2 = new ArrayList<Student>();
        
        while (true) {
            System.out.println("请选择需要进行的操作:");
            int num = in.nextInt();
            switch (num) {
                case 1:
                    Add.addStudent(list2);// 增加操作,传入list动态数组
                    break;
                case 2:
                    Delete.deleteStudent(list2);// 删除操作,传入list动态数组
                    break;
                case 3:
                    Revise.reviseStudent(list2);// 修改操作,传入list动态数组
                    break;
                case 4:
                    Seek.findStudent(list2);// 查找操作,传入list动态数组
                    break;
                case 5:
                    Show.showStudent(list2);// 展示操作,传入list动态数组
                    break;
                case 6:
                    System.out.println("感谢你的使用!");
                    System.exit(0);
            }
            System.out.println("1.增加 2.删除 3.修改 4.查询 5.展示 6.退出");// 方便下一步知晓操作
        }
    }
}

(2)ConsoleUser类:用户操作台

package USERS.Console;

import java.util.ArrayList;
import java.util.Scanner;//调用输入包

import OPERATE.*;

import STUDENT.Student;

import USERS.Face.*;

public class ConsoleAdministrators {//管理员控制台
    public static void console() {
        Scanner in = new Scanner(System.in);

        FaceAdministrators.menu();

        ArrayList<Student> list2 = new ArrayList<Student>();
        
        while (true) {
            System.out.println("请选择需要进行的操作:");
            int num = in.nextInt();
            switch (num) {
                case 1:
                    Add.addStudent(list2);// 增加操作,传入list动态数组
                    break;
                case 2:
                    Delete.deleteStudent(list2);// 删除操作,传入list动态数组
                    break;
                case 3:
                    Revise.reviseStudent(list2);// 修改操作,传入list动态数组
                    break;
                case 4:
                    Seek.findStudent(list2);// 查找操作,传入list动态数组
                    break;
                case 5:
                    Show.showStudent(list2);// 展示操作,传入list动态数组
                    break;
                case 6:
                    System.out.println("感谢你的使用!");
                    System.exit(0);
            }
            System.out.println("1.增加 2.删除 3.修改 4.查询 5.展示 6.退出");// 方便下一步知晓操作
        }
    }
}

5.Face包:界面包,编辑各个界面

(1)FaceLogon类:登录界面

package USERS.Face;

public class FaceLogon {
    public static void menu() {
        System.out.println("----------欢迎来到登录界面-----------");
        System.out.println("*            1. 用户注册            *");
        System.out.println("*            2. 用户登录            *");
        System.out.println("*            3. 忘记密码            *");
        System.out.println("*            4. 查看账号信息        *");
        System.out.println("*            5. 退出系统            *");
        System.out.println("-------------------------------------");
    }
}

(2)FaceAdministrators类:管理员操作台界面

package USERS.Face;

public class FaceAdministrators {
    public static void menu() {
        System.out.println("欢迎来到学生成绩管理系统!");
        System.out.println("****请选择所需要的操作****");
        System.out.println("******1.添加学生信息******");
        System.out.println("******2.删除学生信息******");
        System.out.println("******3.修改学生信息******");
        System.out.println("******4.查询学生信息******");
        System.out.println("******5.显示学生信息******");
        System.out.println("******6.退出生成绩管理系统");
    }
}

(3)FaceUser类:用户操作台界面:

package USERS.Face;

public class FaceUser {
    public static void menu() {
        System.out.println("欢迎来到学生成绩管理系统!");
        System.out.println("****请选择所需要的操作****");
        System.out.println("******1.查询学生信息******");
        System.out.println("******2.退出生成绩管理系统");
    }
}

三、OPERATE包

1.Add类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Add {
    public static void addStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        
        System.out.println("请输入要添加的学生学号");
        String id = in.nextLine();
        
        System.out.println("请输入要添加的学生姓名");
        String name = in.nextLine();
        
        System.out.println("请输入要添加的学生成绩");
        double score = in.nextDouble();
        
        Student student = new Student(id, name, score);//采用有参构造赋值
        list.add(student);
        System.out.println("添加成功!");
    }
}

2.Delete类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Delete {
    public static void deleteStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你要删除的学生学号");
        String id = in.next();
        for (int i = 0; i < list.size(); i++) {// 遍历动态数组
            if (list.get(i).getId().equals(id)) {
                list.remove(i);
            }
        }
        System.out.println("删除成功!");
    }
}

3.Revise类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Revise {
    public static void reviseStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入要修改学生学号");
        String id = in.next();
        System.out.println("请输入学生的新姓名");
        String name = in.next();
        System.out.println("请输入学生的新成绩");
        double score = in.nextDouble();
        Student student = new Student(id, name, score);
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                list.set(i, student);
                break;
            }
        }
        System.out.println("修改成功!");
    }
}

4.Seek类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Seek {
    public static void findStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你要查找的学生学号");
        String id = in.next();
        for (int i = 0; i < list.size(); i++) {// 遍历动态数组
            if (list.get(i).getId().equals(id)) {
                System.out.println("查询成功!");
                System.out.println("该学生学号:" + list.get(i).getId() + "  该学生名字:" + list.get(i).getName() + "  该学生成绩:"
                        + list.get(i).getScore());
            }
        }
    }
}

5.Show类:

package OPERATE;

import java.util.ArrayList;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Show {
    public static void showStudent(ArrayList<Student> list) {
        System.out.println("查询成功!");
        for (int i = 0; i < list.size(); i++) {// 遍历动态数组
            System.out.println(
                    "学号:" + list.get(i).getId() + "  姓名:" + list.get(i).getName() + "  成绩" + list.get(i).getScore());
        }
        System.out.println("一共有 " + list.size() + " 个学生信息");
    }
}

四、STUDENT包

package STUDENT;

public class Student {
    String id;
    String name;
    double score;

    public Student() {
    }

    public Student(String id, String name, double score) {
        this.id = id;
        this.name = name;
        this.score = score;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

五、运行结果

/*
 * 运行结果
 * ----------欢迎来到登录界面-----------
 * 1. 用户注册 *
 * 2. 用户登录 *
 * 3. 忘记密码 *
 * 4. 查看账号信息 *
 * 5. 退出系统 *
 * -------------------------------------
 * 请输入您的选择:
 * 1
 * 请输入用户名:
 * 康茹
 * 用户名已存在,请重新输入:
 * 请输入用户名:
 * 张三
 * 用户名:(张三)可用
 * 请输入密码:
 * 123456
 * 请确认密码:
 * 123456
 * 两次密码一致!
 * 注册成功!
 * 请输入您的选择:
 * 1
 * 请输入用户名:
 * 张三
 * 用户名已存在,请重新输入:
 * 请输入用户名:
 * 李四
 * 用户名:(李四)可用
 * 请输入密码:
 * 123456
 * 请确认密码:
 * 123456
 * 两次密码一致!
 * 注册成功!
 * 请输入您的选择:
 * 4
 * 此功能为管理员权限,请输入管理员密码:
 * 123456
 * 密码正确!
 * 账号:康茹 密码:20021127
 * 账号:小白 密码:12345678
 * 账号:张三 密码:123456
 * 账号:李四 密码:123456
 * 请输入您的选择:
 * 2
 * 请输入用户名:
 * 康茹
 * 请输入密码:
 * 20021127
 * 请输入你的身份:1.管理员 2.用户
 * 1
 * 请输入管理员密钥:
 * 123456
 * 欢迎来到学生成绩管理系统!
 **** 请选择所需要的操作****
 ****** 1.添加学生信息******
 ****** 2.删除学生信息******
 ****** 3.修改学生信息******
 ****** 4.查询学生信息******
 ****** 5.显示学生信息******
 ****** 6.退出生成绩管理系统
 * 请选择需要进行的操作:
 * 1
 * 请输入要添加的学生学号
 * 2022400001
 * 请输入要添加的学生姓名
 * 康茹
 * 请输入要添加的学生成绩
 * 520
 * 添加成功!
 * 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
 * 请选择需要进行的操作:
 * 5
 * 查询成功!
 * 学号:2022400001 姓名:康茹 成绩520.0
 * 一共有 1 个学生信息
 * 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
 * 请选择需要进行的操作:
 * 4
 * 请输入你要查找的学生学号
 * 2022400001
 * 查询成功!
 * 该学生学号:2022400001 该学生名字:康茹 该学生成绩:520.0
 * 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
 * 请选择需要进行的操作:
 * 6
 * 感谢你的使用!
 */

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

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

相关文章

Java中「Future」接口详解

主打一手结果导向&#xff1b; 一、背景 在系统中&#xff0c;异步执行任务&#xff0c;是很常见的功能逻辑&#xff0c;但是在不同的场景中&#xff0c;又存在很多细节差异&#xff1b; 有的任务只强调「执行过程」&#xff0c;并不需要追溯任务自身的「执行结果」&#xff…

你可能并不需要useEffect

背景 相信大家在写react时都有这样的经历&#xff1a;在项目中使用了大量的useEffect&#xff0c;以至于让我们的代码变得混乱和难以维护。 难道说useEffect这个hook不好吗&#xff1f;并不是这样的&#xff0c;只是我们一直在滥用而已。 在这篇文章中&#xff0c;我将展示怎…

【Spring源码】讲讲Bean的生命周期

1、前言 面试官&#xff1a;“看过Spring源码吧&#xff0c;简单说说Spring中Bean的生命周期” 大神仙&#xff1a;“基本生命周期会经历实例化 -> 属性赋值 -> 初始化 -> 销毁”。 面试官&#xff1a;“......” 2、Bean的生命周期 如果是普通Bean的生命周期&am…

【故障诊断】基于 KPCA 进行降维、故障检测和故障诊断研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Flowable】Flowable流程设计器

Flowable流程设计器有两种实现方式 Eclipse DesignerFlowable UI应用 1.Eclipse Designer Flowable提供了名为Flowable Eclipse Designer的Eclipse插件&#xff0c;可以用于图形化地建模、测试与部署BPMN 2.0流程。 (1).下载安装Eclipse 去Eclipse官网下载即可&#xff1a…

【数据结构:复杂度】时间复杂度

本节重点内容&#xff1a; 算法的复杂度时间复杂度的概念大O的渐进表示法常见时间复杂度计算举例⚡算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&…

光伏发电系统模拟及其发电预测开源python工具pvlib

1. 太阳辐照量模拟 pysolar是一个用于计算太阳位置和辐照量的Python库。它是基于python语言编写的&#xff0c;可以方便地在各种python项目中使用。pysolar主要用于计算太阳的位置、太阳高度角、太阳方位角、日出和日落时间等信息。这些信息可以用于太阳能电池板和太阳能集热器…

Spark SQL实战(04)-API编程之DataFrame

1 SparkSession Spark Core: SparkContext Spark SQL: 难道就没有SparkContext&#xff1f; 2.x之后统一的 package com.javaedge.bigdata.chapter04import org.apache.spark.sql.{DataFrame, SparkSession}object SparkSessionApp {def main(args: Array[String]): Unit …

ChatGPT的发展对客户支持能提供什么帮助?

多数组织认为客户服务是一种开销&#xff0c;实际上还可以将客户服务看成是一种机会。它可以让你在销售后继续推动客户的价值。成功的企业深知&#xff0c;客户服务不仅可以留住客户&#xff0c;还可以增加企业收入。客户服务是被低估的手段&#xff0c;它可以通过推荐、见证和…

linux安装Detectron2

参考官方文档&#xff1a;https://detectron2.readthedocs.io/en/latest/tutorials/install.html 1.使用image拉取docker image链接&#xff1a;https://hub.docker.com/r/pytorch/pytorch/tags?page1&name1.8.1-cuda11.1-cudnn8-devel 左上角红框这里搜索1.8.1-cuda1…

Scala - 时间工具类 LocalDateTime 常用方法整理

目录 一.引言 二.LocalDateTime 获取与格式化 1.获取当前时间 LocalDateTime 2.根据时间戳获取 LocalDateTime 3.指定时间获取 LocalDataTime 4.LocalDataTime 格式化 三.LocalDateTime 读取时间细节 1.获取年-Year 2.获取月-Month 3.获取日-Day 4.获取时-Hour 5.获…

Vue3+vite2 博客前端开发

Vue3vite2 博客前端开发 文章目录Vue3vite2 博客前端开发前言页面展示代码设计卡片设计背景&#xff08;Particles.js粒子效果&#xff09;右侧个人信息与公告内容页友链总结前言 大家是否也想拥有一个属于自己的博客&#xff1f;但是如何去开发博客&#xff0c;怎样去开发一个…

新一代AI带来更大想象空间!上海将打造元宇宙超级场景!

引子 上海市经信委主任吴金城4月12日在“2023上海民生访谈”节目表示&#xff0c;上海将着力建设元宇宙智慧医院、前滩东体元宇宙、张江数字孪生未来之城等元宇宙超级场景。 吴金城说&#xff0c;新一代人工智能将带来更大的想象空间。比如&#xff0c;人工智能和元宇宙数字人的…

实验7---myBatis和Spring整合

实验七 myBatis和Spring整合 一、实验目的及任务 通过该实验&#xff0c;掌握mybatis和spring整合方法&#xff0c;掌握生成mapper实现类的两种生成方式。 二、实验环境及条件 主机操作系统为Win10&#xff0c;Tomcat,j2sdk1.6或以上版本。 三、实验实施步骤 略 四、实验报告内…

wait()、sleep()、notify()的解析

wait()、sleep()、notify()的解析 【&#x1f388;问题1】&#xff1a;wait()、sleep()、notify()有什么作用&#xff1f;【&#x1f388;问题2】&#xff1a;wait()、sleep()的区别&#xff1f;【&#x1f388;问题3】&#xff1a;为什么 wait() 方法不定义在 Thread 中&…

九龙证券|今年最贵新股来了,本周还有超低价新股可申购

本周&#xff08;4月17日—4月21日&#xff09;&#xff0c;截至现在&#xff0c;共有3只新股将进行申购&#xff0c;别离为科创板的晶合集成、创业板的三博脑科、北交所的华原股份。其间华原股份将于周一申购&#xff0c;发行价为3.93元/股&#xff0c;晶合集成将于周四申购&a…

全国青少年软件编程(Scratch)等级考试一级考试真题2023年3月——持续更新.....

一、单选题(共25题&#xff0c;共50分) 1. 下列说法不正确的是&#xff1f;&#xff08; &#xff09; A.可以从声音库中随机导入声音 B.可以录制自己的声音上传 C.可以修改声音的大小 D.不能修改声音的速度 试题解析&#xff1a;针对声音可以进行导入&#xff0c;上传&…

Android 不同分辨率下的Drawable尺寸资源设置

启动器图标 36x36 (0.75x) 用于低密度48x48&#xff08;1.0x 基线&#xff09;用于中密度72x72 (1.5x) 用于高密度96x96 (2.0x) 用于超高密度144x144 (3.0x) 用于超超高密度192x192 (4.0x) 用于超超超高密度&#xff08;仅限启动器图标&#xff1b;请参阅上面的 注&#xff09…

redis 主从模式、哨兵模式、cluster模式的区别

参考&#xff1a; ​https://blog.csdn.net/qq_41071876/category_11284995.html https://blog.csdn.net/weixin_45821811/article/details/119421774 https://blog.csdn.net/weixin_43001336/article/details/122816402 Redis有三种模式&#xff0c;分别是&#xff1a;主…

【C++】STL——用一个哈希表封装出unordered_map和unordered_set

用一个哈希表(桶)封装出unordered_map和unordered_set 文章目录用一个哈希表(桶)封装出unordered_map和unordered_set一、哈希表源码二、哈希函数模板参数的控制三、对上层容器构建仿函数便于后续映射四、string类型无法取模问题五、哈希表默认成员函数实现1.构造函数2.拷贝构造…