Java基础知识实际应用(学生信息管理系统、猜拳小游戏、打印日历)

一、Java学生信息管理系统

这个系统包含了添加、修改、删除、查询和显示所有学生信息等功能。您可以在此基础上进行修改和完善,以适应您的需求。

import java.util.Scanner;

public class StudentManagementSystem {
    private static Scanner scanner = new Scanner(System.in);
    private static int MAX_STUDENT_NUMBER = 100;
    private static Student[] students = new Student[MAX_STUDENT_NUMBER];
    private static int studentNumber = 0;

    public static void main(String[] args) {
        while (true) {
            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("*          0. 退出系统                          *");
            System.out.println("***********************************************");
            System.out.print("请选择操作:");
            int choice = scanner.nextInt();
            switch (choice) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    modifyStudent();
                    break;
                case 3:
                    deleteStudent();
                    break;
                case 4:
                    queryStudent();
                    break;
                case 5:
                    displayAllStudents();
                    break;
                case 0:
                    System.exit(0);
                default:
                    System.out.println("输入错误,请重新输入!");
            }
        }
    }

    private static void addStudent() {
        if (studentNumber >= MAX_STUDENT_NUMBER) {
            System.out.println("学生数量已达到最大值!");
            return;
        }

        scanner.nextLine(); // 消耗掉换行符
        System.out.print("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.print("请输入学生年龄:");
        int age = scanner.nextInt();
        System.out.print("请输入学生性别(0表示女性,1表示男性):");
        int gender = scanner.nextInt();
        System.out.print("请输入学生班级:");
        String className = scanner.next();

        Student student = new Student(name, age, gender, className);
        students[studentNumber++] = student;

        System.out.println("添加成功!");
    }

    private static void modifyStudent() {
        System.out.print("请输入要修改的学生姓名:");
        String name = scanner.next();
        for (int i = 0; i < studentNumber; i++) {
            if (students[i].getName().equals(name)) {
                System.out.print("请输入学生新的年龄:");
                int age = scanner.nextInt();
                System.out.print("请输入学生新的性别(0表示女性,1表示男性):");
                int gender = scanner.nextInt();
                System.out.print("请输入学生新的班级:");
                String className = scanner.next();

                students[i].setAge(age);
                students[i].setGender(gender);
                students[i].setClassName(className);
                System.out.println("修改成功!");
                return;
            }
        }

        System.out.println("没有找到该学生信息!");
    }

    private static void deleteStudent() {
        System.out.print("请输入要删除的学生姓名:");
        String name = scanner.next();
        int i = 0;
        for (; i < studentNumber; i++) {
            if (students[i].getName().equals(name)) {
                break;
            }
        }

        if (i == studentNumber) {
            System.out.println("没有找到该学生信息!");
            return;
        }

        for (; i < studentNumber - 1; i++) {
            students[i] = students[i + 1];
        }

        students[--studentNumber] = null;

        System.out.println("删除成功!");
    }

    private static void queryStudent() {
        System.out.print("请输入要查询的学生姓名:");
        String name = scanner.next();
        for (int i = 0; i < studentNumber; i++) {
            if (students[i].getName().equals(name)) {
                System.out.println(students[i]);
                return;
            }
        }

        System.out.println("没有找到该学生信息!");
    }

    private static void displayAllStudents() {
        for (int i = 0; i < studentNumber; i++) {
            System.out.println(students[i]);
        }
    }

    private static class Student {
        private String name;
        private int age;
        private int gender;
        private String className;

        public Student(String name, int age,int gender, String className) {
this.name = name;
this.age = age;
this.gender = gender;
this.className = className;
}

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getGender() {
        return gender;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    @Override
    public String toString() {
        String genderStr = gender == 0 ? "女" : "男";
        return "姓名:" + name + "  年龄:" + age + "  性别:" + genderStr + "  班级:" + className;
    }
}

二、Java实现猜拳小游戏

以下代码是一个猜拳小游戏的实现,其中包含了用户输入、随机数生成、逻辑判断和输出结果等功能。首先让用户输入名字,然后每轮循环中用户输入出拳手势,根据输入的数字1、2、3分别代表石头、剪刀、布;同时,系统也会产生一个随机数表示电脑出拳手势。判断用户和电脑的胜负关系,并输出结果。如果输入的数字为0则退出游戏。 MyMath是一个辅助类,用来生成1-3之间的随机整数。

import java.util.Random;
import java.util.Scanner;

public class GuessGame
{
    String userName;
    Scanner reader=new Scanner(System.in);
    public GuessGame()
    {
        System.out.println("------欢迎来到猜拳小游戏------");
        System.out.println("请输入你的名字:");
        this.userName= reader.next();
    }
    public void startGame()
    {
        System.out.println("欢迎你,"+userName);
        while(true)
        {
            System.out.println("请输入1-石头,2-剪刀,3-布,0-退出");
            int u=reader.nextInt();
            if(u>=1&&u<=3)
            {
                MyMath m=new MyMath();// 产生一个随机数
                int c=m.getRandom();
                judge(u,c);// 判断胜负
            }else if(u==0)
            {
                System.out.println("退出游戏,欢迎下次再玩");
                break;
            }else
            {
                System.out.println("输入有误,请再次输入");
            }
        }
    }
    public void judge(int u,int c)
    {
        if(u==1&&c==2||u==2&&c==3||u==3&&c==1)
        {
            System.out.println("你出的是"+getState(u)+",电脑出的是"+getState(c)+",你赢了!!!");
        }else if(u==1&&c==3||u==2&&c==1||u==3&&c==2)
        {
            System.out.println("你出的是"+getState(u)+",电脑出的是"+getState(c)+",你输了!!!");
        }else
        {
            System.out.println("你出的是"+getState(u)+",电脑出的是"+getState(c)+",平局!!!");
        }
    }
    public String getState(int u)
    {
        String state="";// 将类型与编号对应
        switch(u)
        {
            case 1:
                state="石头";
                break;
            case 2:
                state="剪刀";
                break;
            case 3:
                state="布";
                break;
        }
        return state;
    }
}
class MyMath
{
    public int getRandom()
    {
        Random rd=new Random();
        int number = rd.nextInt(3) + 1;//生成1-3的随机数
        return number;
    }
}

请输入1-石头,2-剪刀,3-布,0-退出
1
你出的是石头,电脑出的是石头,平局!!!
请输入1-石头,2-剪刀,3-布,0-退出
1
你出的是石头,电脑出的是石头,平局!!!
请输入1-石头,2-剪刀,3-布,0-退出
1
你出的是石头,电脑出的是石头,平局!!!
请输入1-石头,2-剪刀,3-布,0-退出
1
你出的是石头,电脑出的是石头,平局!!!
请输入1-石头,2-剪刀,3-布,0-退出
1
你出的是石头,电脑出的是布,你输了!!!
请输入1-石头,2-剪刀,3-布,0-退出
0
退出游戏,欢迎下次再玩

三、Java打印日历

在这里插入图片描述

package edu.java.homework.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class MyCalendar
{
    private final int year;
    private final int month;
    public MyCalendar(int year,int month)//构造函数
    {
        this.year=year;
        this.month=month;
    }
    public void printCalendar()
    {
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        int week=getWeekDay(year,month,1);//得到星期数
        for(int i=1;i<week;i++)
        {
            System.out.print("\t");
        }
        int monthDays=getMonthDays(year,month);//得到该月天数
        for(int i=1;i<=monthDays;i++)
        {
            if(getWeekDay(year,month,i)==7)
            {
                System.out.print(i+"\n");
            }else
                System.out.print(i+"\t");
        }
        System.out.println();
    }
    public int getWeekDay(int year,int month,int day)
    {
        int week=-1;
        // 使用Calendar类
        Calendar calendar=new GregorianCalendar(year,month-1,day);
        week=calendar.get(Calendar.DAY_OF_WEEK);
        return week;
    }
    public int getMonthDays(int year,int month)
    {
        int monthDays=0;
        if(month==4||month==6||month==9||month==11)
        {
            monthDays=30;
        }else if(month==2) // 2月需要判断是否为闰年
        {
            if(year%4==0&&year%100!=0||year%400==0)
            {
                monthDays=29;
            }else
                monthDays=28;
        }else
            monthDays=31;
        return monthDays;
    }
}

package edu.java.homework.chapter;

import edu.java.homework.calendar.MyCalendar;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Chapter1
{
    Scanner in=new Scanner(System.in);
    public void chapterMenu()
    {
        while(true)
        {
            System.out.println("请选择作业序号:");
            System.out.println("1--输出日历;2--人事管理系统;0--退出");
            int option;
            while(true) // 检验输入的是否为数字,不是则需重新输入
            {
                try
                {
                    option = in.nextInt();
                    break;
                }catch(InputMismatchException e)
                {
                    System.out.println("输入类型不匹配,请重新输入");
                    in=new Scanner(System.in);
                }
            }
            if(option==1)
            {
                work1();
            }else if(option==2)
            {
                work2();
            }else if(option==0)
            {
                break;
            }
        }
    }
    private void work1()
    {
        System.out.println("1、输出日历,格式如下:");
        MyCalendar myCalendar=new MyCalendar(2022,9);
        myCalendar.printCalendar();
    }
    private void work2()
    {
        System.out.println("2、输出如下:");
        System.out.println("************************");
        System.out.println("     人事管理系统");
        System.out.println("     1、添加用户");
        System.out.println("     2、查询用户");
        System.out.println("     3、退出系统");
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS:服务器字体 与 响应式布局(用法 + 例子 + 效果)

文章目录 服务器字体定义 服务器字体使用例子 响应式布局设备类型设备特性例子 服务器字体 解决字体不一致而产生的。 首先&#xff0c;在网上把字体下载好。 定义 服务器字体 font-face{font-family:字体名称;src:url(字体资源路径); }使用 在需要使用的选择器里加上 font…

【100天精通python】Day36:GUI界面编程_高级功能操作和示例

专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 一、GUI 高级功能 1 自定义主题和样式 自定义主题和样式可以让你的GUI应用程序在外观方面更加出色。在使用Tkinter时&#xff0c;你可以使用ttkthemes库来应用不同的主题和样式。…

OpenCV-Python中的图像处理-傅里叶变换

OpenCV-Python中的图像处理-傅里叶变换 傅里叶变换Numpy中的傅里叶变换Numpy中的傅里叶逆变换OpenCV中的傅里叶变换OpenCV中的傅里叶逆变换 DFT的性能优化不同滤波算子傅里叶变换对比 傅里叶变换 傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变…

flutter开发实战-just_audio实现播放音频暂停音频设置音量等

flutter开发实战-just_audio实现播放音频暂停音频设置音量等 最近开发过程中遇到需要播放背景音等音频播放&#xff0c;这里使用just_audio来实现播放音频暂停音频设置音量等 一、引入just_audio 在pubspec.yaml引入just_audio just_audio: ^2.7.0在iOS上&#xff0c;video_p…

使用vscode在vue项目中重命名文件选择了更新导入路径仍有部分导入路径没有更新

背景: 将一个js文件重命名&#xff0c;vscode弹出是否更新导入路径&#xff0c;选择更新导入后&#xff0c;发现js文件中导入路径都自动更新&#xff0c;vue文件中路径都没有更新。 解决方案&#xff1a; 在设置中搜索updateimport&#xff0c;将最下面的Vue>Update Imports…

步入React正殿 - 生命周期

目录 资料 三个阶段的生命周期函数 创建阶段 初始化阶段constructor 挂载阶段componentWillMount 挂载阶段render 挂载阶段componentDidMount 更新阶段【props或state改变】 更新阶段componentWillReceiveProps 更新阶段shouldComponentUpdate【可不使用&#xff0c;…

21款美规奔驰GLS450更换中规高配主机,汉化操作更简单

很多平行进口的奔驰GLS都有这么一个问题&#xff0c;原车的地图在国内定位不了&#xff0c;语音交互功能也识别不了中文&#xff0c;原厂记录仪也减少了&#xff0c;使用起来也是很不方便的。 可以实现以下功能&#xff1a; ①中国地图 ②语音小助手&#xff08;你好&#xf…

Handler机制(一)

Handler基础 Handler机制是什么&#xff1f; Handler是用来处理线程间通信的一套机制。 初级使用 第一步&#xff1a;在主线程中定义Handler private Handler mHandler new Handler(Looper.myLooper()){Overridepublic void handleMessage(NonNull Message msg) {super.ha…

C语言 字符指针

1、介绍 概念&#xff1a; 字符指针&#xff0c;就是字符类型的指针&#xff0c;同整型指针&#xff0c;指针指向的元素表示整型一样&#xff0c;字符指针指向的元素表示的是字符。 假设&#xff1a; char ch a;char * pc &ch; pc 就是字符指针变量&#xff0c;字符指…

Spring系列篇--关于IOC【控制反转】的详解

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Spring的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.什么是Spring 二.Spring的特点 三.什…

用node.js搭建一个视频推流服务

由于业务中有不少视频使用的场景&#xff0c;今天来说说如何使用node完成一个视频推流服务。 先看看效果&#xff1a; 这里的播放的视频是一个多个Partial Content组合起来的&#xff0c;每个Partial Content大小是1M。 一&#xff0c;项目搭建 &#xff08;1&#xff09;初…

Docker 安装和架构说明

Docker 并非是一个通用的容器工具&#xff0c;它依赖于已存在并运行的Linux内核环境。 Docker实质上是在已经运行的Liunx下制造了一个隔离的文件环境&#xff0c;因此他的执行效率几乎等同于所部署的linux主机。因此Docker必须部署在Linux内核系统上。如果其他系统想部署Docke…

使用maven打包时如何跳过test,有三种方式

方式一 针对spring项目&#xff1a; <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> …

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录 1.BaseAlertVC2.BindFrameNumAlertVC 1.BaseAlertVC import UIKitclass BaseAlertVC: GLBaseViewController {let centerView UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor UIColor(displayP3Red: 0, green: 0, blue: 0, alpha:…

【JVM】JVM垃圾收集器

文章目录 什么是JVM垃圾收集器四种垃圾收集器&#xff08;按类型分&#xff09;1.串行垃圾收集器(效率低&#xff09;2.并行垃圾收集器(JDK8默认使用此垃圾回收器&#xff09;3.CMS&#xff08;并发&#xff09;垃圾收集器(只针对老年代垃圾回收的&#xff09;4.G1垃圾回收器(在…

常见的路由协议之RIP协议与OSPF协议

目录 RIP OSPF 洪泛和广播的区别 路由协议是用于在网络中确定最佳路径的一组规则。它们主要用于在路由器之间交换路由信息&#xff0c;以便找到从源到目标的最佳路径。 常见的路由协议&#xff1a; RIP (Routing Information Protocol)&#xff1a;RIP 是一种基于距离向量算…

强训第33天

选择 C A ping是TCP/IP协议族的一部分&#xff0c;使用ICMP协议&#xff0c;ICMP底层使用IP协议。如果要ping其他网段&#xff0c;则需要设置网关。 如果是二层交换机故障&#xff0c;则ping同网段的也会不通。 C Dos攻击被称之为“拒绝服务攻击”&#xff0c;其目的是使计算机…

Windows 安装 pandoc 将 jupyter 导出 pdf 文件

Windows 安装 pandoc 将 jupyter 导出 pdf 文件 1. 下载 pandoc 安装文件2. 安装 pandoc3. 安装 nbconvert4. 使用 pandoc 1. 下载 pandoc 安装文件 访问 https://github.com/jgm/pandoc/releases&#xff0c;下载最新版安装文件&#xff0c;例如&#xff0c;3.1.6.1 版&#…

学习篇之React Fiber概念及原理

什么是React Fibber&#xff1f; React Fiber 是 React 框架的一种底层架构&#xff0c;为了改进 React 的渲染引擎&#xff0c;使其更加高效、灵活和可扩展。 传统上&#xff0c;React 使用一种称为堆栈调和递归算法来处理虚拟 DOM 的更新&#xff0c;这种方法在大型应用或者…

request发送http请求

今天正式开始为大家介绍接口自动化&#xff0c;相信很多做测试的朋友&#xff0c;都用过一些工具&#xff0c;比如jmeter&#xff0c;loadrunner&#xff0c;postman等等&#xff0c;所以今天先给那些基础不太好的同学&#xff0c;先讲讲postman如何来测接口以及如何用pthon代码…