简单的Java小项目

news2024/12/16 14:50:25

学生选课系统

在控制台输入输出信息:
在这里插入图片描述

在eclipse上面的超级简单文件结构:
在这里插入图片描述
Main.java

package experiment_4;

import java.util.*;
import java.io.*;

public class Main {
    public static List<Course> courseList = new ArrayList<>();
    public static List<Teacher> teacherList = new ArrayList<>();
    public static List<Student> studentList = new ArrayList<>();

    public static void main(String[] args) {
        loadData();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("===== 欢迎使用学生选课系统 =====");
            System.out.print("请输入用户名(输入exit退出):");
            String username = scanner.nextLine();
            if (username.equals("exit")) {
                saveData();
                break;
            }
            System.out.print("请输入密码:");
            String password = scanner.nextLine();
            User user = null;
            if (username.equals("admin")) {
                user = new Admin(username, courseList, teacherList, studentList);
            } else {
                user = findUserByUsername(username);
            }
            if (user == null) {
                System.out.println("用户不存在!");
                continue;
            }
            if (!user.verifyPassword(password)) {
                System.out.println("密码错误!");
                continue;
            }
            user.operate();
        }
        scanner.close();
    }

    private static User findUserByUsername(String username) {
        for (Teacher teacher : teacherList) {
            if (teacher.getUsername().equals(username)) {
                return teacher;
            }
        }
        for (Student student : studentList) {
            if (student.getUsername().equals(username)) {
                return student;
            }
        }
        return null;
    }

    private static void loadData() {
        try (ObjectInputStream ois1 = new ObjectInputStream(new FileInputStream("C:\\Users\\86183\\Desktop\\courses.txt"));
             ObjectInputStream ois2 = new ObjectInputStream(new FileInputStream("C:\\Users\\86183\\Desktop\\teachers.txt"));
             ObjectInputStream ois3 = new ObjectInputStream(new FileInputStream("C:\\Users\\86183\\Desktop\\students.txt"))) {
            courseList = (List<Course>) ois1.readObject();
            teacherList = (List<Teacher>) ois2.readObject();
            studentList = (List<Student>) ois3.readObject();
        } catch (Exception e) {
            System.out.println("初次运行,未找到数据文件。");
        }
    }

    private static void saveData() {
        try (ObjectOutputStream oos1 = new ObjectOutputStream(new FileOutputStream("C:\\Users\\86183\\Desktop\\courses.txt"));
             ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream("C:\\Users\\86183\\Desktop\\teachers.txt"));
             ObjectOutputStream oos3 = new ObjectOutputStream(new FileOutputStream("C:\\Users\\86183\\Desktop\\students.txt"))) {
            oos1.writeObject(courseList);
            oos2.writeObject(teacherList);
            oos3.writeObject(studentList);
            System.out.println("数据已保存。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Admin.java

package experiment_4;

import java.util.*;
import java.io.*;


public class Admin extends User {
    private List<Course> courseList;
    private List<Teacher> teacherList;
    private List<Student> studentList;

    public Admin(String username, List<Course> courseList, List<Teacher> teacherList, List<Student> studentList) {
        super(username);
        this.courseList = courseList;
        this.teacherList = teacherList;
        this.studentList = studentList;
    }

    @Override
    public void displayMenu() {
        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. 显示学生列表");
        System.out.println("7. 显示教师列表");
        System.out.println("8. 恢复学生和教师初始密码");
        System.out.println("9. 添加老师和学生");
        System.out.println("10. 删除老师和学生");
        System.out.println("0. 退出");
        System.out.print("请选择操作:");
    }

    @Override
    public void operate() {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            displayMenu();
            int choice = scanner.nextInt();
            switch (choice) {
                case 1:
                    addCourse();
                    break;
                case 2:
                    deleteCourse();
                    break;
                case 3:
                    sortCoursesByStudentNumber();
                    break;
                case 4:
                    displayCourseList();
                    break;
                case 5:
                    modifyCourseTeacher();
                    break;
                case 6:
                    displayStudentList();
                    break;
                case 7:
                    displayTeacherList();
                    break;
                case 8:
                    resetPasswords();
                    break;
                case 9:
                    addUser();
                    break;
                case 10:
                    deleteUser();
                    break;
                case 0:
                    System.out.println("退出管理员系统。");
                    return;
                default:
                    System.out.println("无效的选择,请重新输入。");
            }
        }
    }

    private void addCourse() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入课程ID:");
        String courseID = scanner.nextLine();
        System.out.print("请输入课程名称:");
        String courseName = scanner.nextLine();
        System.out.print("请输入授课教师用户名:");
        String teacherName = scanner.nextLine();
        Teacher teacher = findTeacherByUsername(teacherName);
        if (teacher == null) {
            System.out.println("教师不存在!");
            return;
        }
        System.out.print("课程类型(1.必修 2.选修):");
        int type = scanner.nextInt();
        if (type == 1) {
            Course course = new CompulsoryCourse(courseID, courseName, teacher);
            courseList.add(course);
            // 所有学生自动加入必修课
            for (Student student : studentList) {
                student.getCoursesEnrolled().add(course);
                course.incrementStudentNumber();
            }
        } else if (type == 2) {
            System.out.print("请输入选修课最大人数:");
            int maxStudents = scanner.nextInt();
            Course course = new ElectiveCourse(courseID, courseName, teacher, maxStudents);
            courseList.add(course);
        } else {
            System.out.println("无效的课程类型!");
            return;
        }
        teacher.getCoursesTaught().add(courseList.get(courseList.size() - 1));
        System.out.println("课程添加成功!");
    }

    private void deleteCourse() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要删除的课程ID:");
        String courseID = scanner.nextLine();
        Course course = findCourseByID(courseID);
        if (course != null) {
            courseList.remove(course);
            // 从教师和学生的课程列表中删除该课程
            course.getTeacher().getCoursesTaught().remove(course);
            for (Student student : studentList) {
                student.getCoursesEnrolled().remove(course);
            }
            System.out.println("课程删除成功!");
        } else {
            System.out.println("课程不存在!");
        }
    }

    private void sortCoursesByStudentNumber() {
        Collections.sort(courseList, new Comparator<Course>() {
            @Override
            public int compare(Course c1, Course c2) {
                return c2.getNumberOfStudents() - c1.getNumberOfStudents();
            }
        });
        System.out.println("课程已按照选课人数排序!");
    }

    private void displayCourseList() {
        System.out.println("===== 课程清单 =====");
        for (Course course : courseList) {
            System.out.println(course);
        }
    }

    private void modifyCourseTeacher() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要修改的课程ID:");
        String courseID = scanner.nextLine();
        Course course = findCourseByID(courseID);
        if (course == null) {
            System.out.println("课程不存在!");
            return;
        }
        System.out.print("请输入新教师的用户名:");
        String teacherName = scanner.nextLine();
        Teacher newTeacher = findTeacherByUsername(teacherName);
        if (newTeacher == null) {
            System.out.println("教师不存在!");
            return;
        }
        // 更新教师信息
        course.getTeacher().getCoursesTaught().remove(course);
        course.setTeacher(newTeacher);
        newTeacher.getCoursesTaught().add(course);
        System.out.println("授课教师修改成功!");
    }

    private void displayStudentList() {
        System.out.println("===== 学生列表 =====");
        for (Student student : studentList) {
            System.out.println(student.getUsername());
        }
    }

    private void displayTeacherList() {
        System.out.println("===== 教师列表 =====");
        for (Teacher teacher : teacherList) {
            System.out.println(teacher.getUsername());
        }
    }

    private void resetPasswords() {
        for (Student student : studentList) {
            student.setPassword("123456");
        }
        for (Teacher teacher : teacherList) {
            teacher.setPassword("123456");
        }
        System.out.println("学生和教师密码已重置为初始密码!");
    }

    private void addUser() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("添加对象(1.教师 2.学生):");
        int type = scanner.nextInt();
        scanner.nextLine(); // 消耗换行符
        System.out.print("请输入用户名:");
        String username = scanner.nextLine();
        if (type == 1) {
            Teacher teacher = new Teacher(username);
            teacherList.add(teacher);
            System.out.println("教师添加成功!");
        } else if (type == 2) {
            Student student = new Student(username);
            // 将学生加入所有必修课
            for (Course course : courseList) {
                if (course instanceof CompulsoryCourse) {
                    student.getCoursesEnrolled().add(course);
                    course.incrementStudentNumber();
                }
            }
            studentList.add(student);
            System.out.println("学生添加成功!");
        } else {
            System.out.println("无效的类型!");
        }
    }

    private void deleteUser() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("删除对象(1.教师 2.学生):");
        int type = scanner.nextInt();
        scanner.nextLine(); // 消耗换行符
        System.out.print("请输入用户名:");
        String username = scanner.nextLine();
        if (type == 1) {
            Teacher teacher = findTeacherByUsername(username);
            if (teacher != null) {
                teacherList.remove(teacher);
                // 从课程中移除教师
                for (Course course : courseList) {
                    if (course.getTeacher().equals(teacher)) {
                        course.setTeacher(null);
                    }
                }
                System.out.println("教师删除成功!");
            } else {
                System.out.println("教师不存在!");
            }
        } else if (type == 2) {
            Student student = findStudentByUsername(username);
            if (student != null) {
                studentList.remove(student);
                // 从课程中移除学生
                for (Course course : student.getCoursesEnrolled()) {
                    course.decrementStudentNumber();
                }
                System.out.println("学生删除成功!");
            } else {
                System.out.println("学生不存在!");
            }
        } else {
            System.out.println("无效的类型!");
        }
    }

    private Teacher findTeacherByUsername(String username) {
        for (Teacher teacher : teacherList) {
            if (teacher.getUsername().equals(username)) {
                return teacher;
            }
        }
        return null;
    }

    private Student findStudentByUsername(String username) {
        for (Student student : studentList) {
            if (student.getUsername().equals(username)) {
                return student;
            }
        }
        return null;
    }

    private Course findCourseByID(String courseID) {
        for (Course course : courseList) {
            if (course.getCourseID().equals(courseID)) {
                return course;
            }
        }
        return null;
    }
}

CompulsoryCourse.java

package experiment_4;

public class CompulsoryCourse extends Course {
    public CompulsoryCourse(String courseID, String courseName, Teacher teacher) {
        super(courseID, courseName, teacher);
    }

    @Override
    public String toString() {
        return super.toString() + "(必修课)";
    }
}

Course.java

package experiment_4;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Course implements Serializable {
    protected String courseID;
    protected String courseName;
    protected Teacher teacher;
    protected int numberOfStudents;
    protected List<Student> enrolledStudents;

    public Course(String courseID, String courseName, Teacher teacher) {
        this.courseID = courseID;
        this.courseName = courseName;
        this.teacher = teacher;
        this.numberOfStudents = 0;
        this.enrolledStudents = new ArrayList<>();
    }

    public String getCourseID() {
        return courseID;
    }

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    public int getNumberOfStudents() {
        return numberOfStudents;
    }

    public void incrementStudentNumber() {
        this.numberOfStudents++;
    }

    public void decrementStudentNumber() {
        this.numberOfStudents--;
    }

    public List<Student> getEnrolledStudents() {
        return enrolledStudents;
    }

    @Override
    public String toString() {
        return "课程ID:" + courseID + ", 课程名称:" + courseName + ", 授课教师:" + teacher.getUsername() +
                ", 选课人数:" + numberOfStudents;
    }
}

ElectiveCourse.java

package experiment_4;

public class ElectiveCourse extends Course {
    private int maxStudents;

    public ElectiveCourse(String courseID, String courseName, Teacher teacher, int maxStudents) {
        super(courseID, courseName, teacher);
        this.maxStudents = maxStudents;
    }

    public int getMaxStudents() {
        return maxStudents;
    }

    @Override
    public String toString() {
        return super.toString() + ", 最大选课人数:" + maxStudents + "(选修课)";
    }
}

Student.java

package experiment_4;

import java.util.*;

public class Student extends User {
    private List<Course> coursesEnrolled;

    public Student(String username) {
        super(username);
        this.coursesEnrolled = new ArrayList<>();
    }

    @Override
    public void displayMenu() {
        System.out.println("===== 学生菜单 =====");
        System.out.println("1. 修改登录密码");
        System.out.println("2. 查看自己所上课程");
        System.out.println("3. 选修课选课");
        System.out.println("0. 退出");
        System.out.print("请选择操作:");
    }

    @Override
    public void operate() {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            displayMenu();
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消耗换行符
            switch (choice) {
                case 1:
                    changePassword(scanner); // 传递 Scanner 对象
                    break;
                case 2:
                    viewCoursesEnrolled();
                    break;
                case 3:
                    selectElectiveCourse();
                    break;
                case 0:
                    System.out.println("退出学生系统。");
                    return;
                default:
                    System.out.println("无效的选择,请重新输入。");
            }
        }
    }

    public void changePassword(Scanner scanner) { // 接受 Scanner 作为参数
        System.out.print("请输入新密码:");
        String newPassword = scanner.nextLine();
        super.changePassword(newPassword); // 调用父类的方法
    }

    public void viewCoursesEnrolled() {
        System.out.println("===== 已选课程列表 =====");
        for (Course course : coursesEnrolled) {
            System.out.println(course);
        }
    }

    public void selectElectiveCourse() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入选修课ID:");
        String courseID = scanner.nextLine();
        Course course = findCourseByID(courseID);
        if (course == null) {
            System.out.println("课程不存在!");
            return;
        }
        if (!(course instanceof ElectiveCourse)) {
            System.out.println("这不是一门选修课!");
            return;
        }
        ElectiveCourse electiveCourse = (ElectiveCourse) course;
        if (electiveCourse.getNumberOfStudents() >= electiveCourse.getMaxStudents()) {
            System.out.println("选课人数已满!");
            return;
        }
        if (coursesEnrolled.contains(course)) {
            System.out.println("您已选过此课程!");
            return;
        }
        coursesEnrolled.add(course);
        course.incrementStudentNumber();
        System.out.println("选课成功!");
    }

    private Course findCourseByID(String courseID) {
        for (Course course : Main.courseList) {
            if (course.getCourseID().equals(courseID)) {
                return course;
            }
        }
        return null;
    }

    public List<Course> getCoursesEnrolled() {
        return coursesEnrolled;
    }
}

Teacher.java

package experiment_4;

import java.util.*;

public class Student extends User {
    private List<Course> coursesEnrolled;

    public Student(String username) {
        super(username);
        this.coursesEnrolled = new ArrayList<>();
    }

    @Override
    public void displayMenu() {
        System.out.println("===== 学生菜单 =====");
        System.out.println("1. 修改登录密码");
        System.out.println("2. 查看自己所上课程");
        System.out.println("3. 选修课选课");
        System.out.println("0. 退出");
        System.out.print("请选择操作:");
    }

    @Override
    public void operate() {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            displayMenu();
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消耗换行符
            switch (choice) {
                case 1:
                    changePassword(scanner); // 传递 Scanner 对象
                    break;
                case 2:
                    viewCoursesEnrolled();
                    break;
                case 3:
                    selectElectiveCourse();
                    break;
                case 0:
                    System.out.println("退出学生系统。");
                    return;
                default:
                    System.out.println("无效的选择,请重新输入。");
            }
        }
    }

    public void changePassword(Scanner scanner) { // 接受 Scanner 作为参数
        System.out.print("请输入新密码:");
        String newPassword = scanner.nextLine();
        super.changePassword(newPassword); // 调用父类的方法
    }

    public void viewCoursesEnrolled() {
        System.out.println("===== 已选课程列表 =====");
        for (Course course : coursesEnrolled) {
            System.out.println(course);
        }
    }

    public void selectElectiveCourse() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入选修课ID:");
        String courseID = scanner.nextLine();
        Course course = findCourseByID(courseID);
        if (course == null) {
            System.out.println("课程不存在!");
            return;
        }
        if (!(course instanceof ElectiveCourse)) {
            System.out.println("这不是一门选修课!");
            return;
        }
        ElectiveCourse electiveCourse = (ElectiveCourse) course;
        if (electiveCourse.getNumberOfStudents() >= electiveCourse.getMaxStudents()) {
            System.out.println("选课人数已满!");
            return;
        }
        if (coursesEnrolled.contains(course)) {
            System.out.println("您已选过此课程!");
            return;
        }
        coursesEnrolled.add(course);
        course.incrementStudentNumber();
        System.out.println("选课成功!");
    }

    private Course findCourseByID(String courseID) {
        for (Course course : Main.courseList) {
            if (course.getCourseID().equals(courseID)) {
                return course;
            }
        }
        return null;
    }

    public List<Course> getCoursesEnrolled() {
        return coursesEnrolled;
    }
}

User.java

package experiment_4;

import java.io.Serializable;//允许类的对象可以被序列化

public abstract class User implements Serializable {
    protected String username;
    protected String password;//在定义该成员的类内部、同一包中的其他类、以及任何子类中(无论子类是否在同一个包中)都可以访问。

    public User(String username) {
        this.username = username;
        this.password = "123456"; // 初始密码
    }

    public String getUsername() {
        return username;
    }
    
    public void setPassword(String newPassword) {//设置密码
        this.password = newPassword;
    }


    public boolean verifyPassword(String password) {//验证密码
        return this.password.equals(password);
    }

    public void changePassword(String newPassword) {//修改密码
        this.password = newPassword;
        System.out.println("密码修改成功!");
    }
    
    

    public abstract void displayMenu();

    public abstract void operate();
}

无需用到模块化module-info.java

/**
 * 
 */
/**
 * 
 */
module experiment_4 {
}

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

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

相关文章

Android实现RecyclerView边缘渐变效果

Android实现RecyclerView边缘渐变效果 1.前言&#xff1a; 是指在RecyclerView中实现淡入淡出效果的边缘效果。通过这种效果&#xff0c;可以使RecyclerView的边缘在滚动时逐渐淡出或淡入&#xff0c;以提升用户体验。 2.Recyclerview属性&#xff1a; 2.1、requiresFading…

Avalonia的Ribbon

将以前Avalonia项目中的Ribbon单独隔离&#xff0c;提交到了github,方便大家查看修改。 Ribbon做成了组件&#xff0c;但是想要界面效果&#xff0c;还得结合窗体功能开发。 项目地址&#xff1a; jinyuttt/AvaloniaRibbonUI: AvaloniaRibbon component

Vue04

目录 一、学习目标 1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; 2.组件通信 3.综合案例&#xff1a;小黑记事本&#xff08;组件版&#xff09; 4.进阶语法 二、scoped解决样式冲突 1.默认情况&#xff1a; 三、data必须是一个函数 1、data为什么要写…

C# 探险之旅:第十八节 - 元组(Tuple):神奇的背包与丢弃的艺术,还有变身大法!

嘿&#xff0c;探险家们&#xff01;欢迎再次踏上C#的奇妙旅程。今天&#xff0c;我们要聊的是一个非常实用又有点懒散的旅行伴侣——元组&#xff08;Tuple&#xff09;。想象一下&#xff0c;你正准备来一场说走就走的旅行&#xff0c;但是不想带太多行李&#xff0c;只想简单…

SAP软件如何启用反记账功能

SAP软件和国内ERP软件不一样&#xff0c;它在录入会计凭证时是不可以录入负数的&#xff08;即红冲凭证&#xff09;&#xff0c;因此无法直接实现传统意义上的红字冲销。 比如&#xff0c;如下SAP正常和冲销业务产生会计凭证如下&#xff1a; 正常的业务凭证&#xff1a; 借…

若依-帝可得app后端

视频地址 https://www.bilibili.com/video/BV1pf421B71v?t=510.1 APP后端技术栈 架构解析 验证码功能 开发环境使用改的是固定的验证码 12345正式环境使用的是 阿里云的短信方案@Override public void sendSms(String mobile) {// String code = RandomUtil.randomNumbers(5);…

金融分析-Transformer模型(基础理论)

Transformer模型 1.基本原理 transformer的core是注意力机制&#xff0c;其本质就是编码器-解码器。他可以通过多个编码器进行编码&#xff0c;再把编码完的结果输出给解码器进行解码&#xff0c;然后得到最终的output。 1.1编码器 数据在编码器中会经过一个self-attention的…

JS-手写new

我们先再来理一理原型 Object1 {name:deng,age:18 } Object2 {name:ru,age:18 } const Person function(){} Person.prototype Object1; const p1 new Person(); console.log(p1.name); //deng Person.prototype null; console.log(p1.name); //deng上面给Person的构造函…

深圳国威HB1910数字IP程控交换机 generate.php 远程命令执行漏洞复现

0x01 产品描述: 深圳国威主营国威模拟、数字、IP 交换机、语音网关、IP 电话机及各种电话机。深圳国威电子有限公司HB1910是一款功能强大的网络通信设备,适用于各种企业通信需求。 0x02 漏洞描述: 深圳国威电子有限公司HB1910数字IP程控交换机generate.php存在远程命令执行…

机器学习预处理-表格数据的分析与可视化

机器学习预处理-表格数据的分析与可视化 最近在做一些模型部署的工作&#xff0c;但是发现对于数据的处理、分析、训练方面还是缺少一些系统的学习&#xff0c;因此抽空余时间分析总结一些使用python进行数据处理的实用案例&#xff0c;希望能够方便自己已经其他人的Ctrl CV。…

鸿蒙项目云捐助第六讲鸿蒙App应用的首页导航资讯功能的实现

鸿蒙项目云捐助第六讲鸿蒙App应用的首页导航资讯功能的实现 前面的教程中已实现了启动页&#xff0c;登录页&#xff0c;注册页及首页的部分功能。这里有一些朋友提出问题&#xff0c;如何设置登录页面的背景图片。这里稍带说一个这个功能的实现。 一、登录页面的背景图片实现…

【Vue3】前端使用 FFmpeg.wasm 完成用户视频录制,并对视频进行压缩处理

强烈推荐这篇博客&#xff01;非常全面的一篇文章&#xff0c;本文是对该博客的简要概括和补充&#xff0c;在不同技术栈中提供一种可行思路&#xff0c;可先阅读该篇文章再阅读本篇&#xff1a; FFmpeg——在Vue项目中使用FFmpeg&#xff08;安装、配置、使用、SharedArrayBu…

17、ConvMixer模型原理及其PyTorch逐行实现

文章目录 1. 重点2. 思维导图 1. 重点 patch embedding : 将图形分割成不重叠的块作为图片样本特征depth wise point wise new conv2d : 将传统的卷积转换成通道隔离卷积和像素空间隔离两个部分&#xff0c;在保证精度下降不多的情况下大大减少参数量 2. 思维导图 后续再整…

金蝶云苍穹踩过的坑(慢慢更新)

IDEA不能用最新版&#xff0c;不然搜不到金蝶的插件。 我用的是2024.1.7/2023.1.7 IDEA里增加金蝶插件库的地址也变了&#xff0c;现在是 https://tool.kingdee.com/kddt/idea-updatePlugins.xml 金蝶云苍穹部署在服务器 MAC本地IDEA调试的时候&#xff0c;登录N次能成功一次…

springboot438校园志愿者管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统校园志愿者管理系统信息管理难度大&#xff0c;容错率低&…

高项 - 信息系统管理

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 博文更新参考时间点&#xff1a;2024-11-09 高项 - 章节与知识点汇总&#xff1a;点击跳转 文章目录 高项 - 信息系统管理管理方法管理基础规划和组织设计和实施运维和服务优化和持续改进 管理要点数据管理运维管…

05、GC基础知识

JVM程序在跑起来之后&#xff0c;在数据的交互过程中&#xff0c;就会有一些数据是过期不用的&#xff0c;这些数据可以看做是垃圾&#xff0c;JVM中&#xff0c;这些垃圾是不用开发者管的&#xff0c;它自己会有一套垃圾回收系统自动回收这些内存垃圾&#xff0c;以备后面继续…

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…

【Unity3D】无限循环列表(扩展版)

基础版&#xff1a;【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…

Git-基础操作命令

目录 Git基础操作命令 case *查看提交日志 log 版本回退 get add . Git基础操作命令 我们创建并且初始化这个仓库以后&#xff0c;我们就要在里面进行操作。 Git 对于文件的增删改查存在几个状态&#xff0c;这些修改状态会随着我们执行Git的命令而发生变化。 untracked、…