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

news2024/11/19 9:31:10

一、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、退出系统");
    }
}

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

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

相关文章

C++——oo的魅力之多态

文章目录 多态的概念多态的定义和实现多态的构成条件虚函数重写的两个例外协变(基类和派生类虚函数返回值类型不同)析构函数的重写(基类和派生类析构函数名字不同) c11 override 和 final关键字 重载&#xff0c;重写(覆盖)&#xff0c; 隐藏(重定义)对比抽象类(纯虚函数)多态的…

Vivado使用入门之二:网表物理约束

目录 一、背景 二、物理约束 2.1 概念 2.2 网表约束 2.2.1 CLOCK_DEDICATED_ROUTE 2.2.2 MARK_DEBUG 2.2.3 DONT_TOUCH 2.2.4 LOCK_PINS 三、位置约束 四、布线约束 4.1 route 4.2 assign routing mode 五、参考 一、背景 在工程设计中为了保证上板后功能正常&…

【BI看板】Docker-compose安装Superset,安装最新版本2.1.0

软件及环境准备 docker&#xff0c; docker-compose docker-compose安装 字节码安装 #wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 #mv docker-compose-linux-x86_64 docker-compose #chmod x /usr/local/bin/docker-com…

一、计算机网络体系结构

Content 1. 计算机网络的组成2. 计算机网络的功能3. 计算机网络的分类4. 计算机网络的性能指标5. 计算机网络分层结构OSI模型TCP/IP模型互联网五层模型共同点&#xff1a; 6. 计算机网络提供的服务按三种方式分类面向连接服务和无连接服务可靠服务和不可靠服务有连接服务和无连…

5G+AI数字化智能工厂建设解决方案PPT

导读&#xff1a;原文《5GAI数字化智能工厂建设解决方案》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。数字化智能工厂定义 智能基础架构协同框架 - 端、边、云、网…

Java课题笔记~ SpringMVC拦截器

SpringMVC 中的 Interceptor 拦截器&#xff0c;它的主要作用是拦截指定的用户请求&#xff0c;并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类&#xff0c;并且也找到了要执行该处理器类的处理器适配器&#xff0c…

2023华为产品测评官-开发者之声 + 华为云ModelArts试用体验心得

2023华为产品测评官&#xff0d;开发者之声 华为云ModelArts试用体验心得 文章目录 2023华为产品测评官&#xff0d;开发者之声 华为云ModelArts试用体验心得一、活动介绍二、华为云ModelArts简介三、AI Gallery简介步骤1&#xff1a;订阅模型步骤2&#xff1a;使用订阅模型部…

Reids 的整合使用

大家好 , 我是苏麟 , 今天带来强大的Redis . REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统&#xff0c;是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选…

冯·诺依曼计算机

一、定义 冯诺依曼机&#xff08;von Neumann machine&#xff09;&#xff0c;又称冯诺依曼计算机&#xff0c;根据冯诺依曼提出的存储程序概念设计的计算机。主要特征是&#xff1a;指令与数据都以二进制形式储存在存储器里&#xff1b;指令根据其储存的顺序执行。 冯…

SpringBoot常用注解 - @Controller

Controller : Controller是加在类上面的注解&#xff0c;使得类里面的每个方法都返回一个视图页面 实际开发中&#xff0c;有时候只是让后端的结果返回到前端&#xff0c;而不作为新的视图页面&#xff0c;此时需要结合 ResponseBody&#xff0c;让这个方法返回给前端的不是一个…

三星霸主地位“无可撼动“,DRAM内存市场份额创近 9 年新低仍第一

三星电子在DRAM市场的竞争地位一直备受关注。据报告显示&#xff0c;除了市场份额下降外&#xff0c;三星电子在上半年的销售额也出现了下滑。这主要是由于全球消费电子产品需求下滑&#xff0c;导致三星电子的芯片需求减少。 存储芯片业务所在的设备解决方案部门的营收和利润也…

快速提高写作生产力——使用PicGo+Github搭建免费图床,并结合Typora

文章目录 简述PicGo下载PicGo获取Token配置PicGo结合Typora总结 简述PicGo PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具 PicGo 本体支持如下图床&#xff1a; 七牛图床 v1.0腾讯云 COS v4\v5 版本 v1.1 & v1.5.0又拍云 v1.2.0GitHub v1.5.0SM.MS V2 v2.3.0-b…

Python_数据容器详解

Python数据容器 1. 列表基础语法和操作练习题 2. 列表的循环练习题 3. 元组 tuple4. 元组的循环练习题 5. 字符串6. 切片练习总结 7. set 集合8. 字典 dict字典的嵌套总结 字典常用操作练习 9. 对比总结以及通用操作对比总结通用操作 1. 列表基础语法和操作 """…

蓝桥杯嵌入式省一教程:(二)LCD显示

在嵌入式开发中&#xff0c;屏幕显示是一个非常重要的功能。同时&#xff0c;其移植对于初学者来说较为复杂&#xff0c;需要较好地掌握I2C或SPI等通讯协议。然而&#xff0c;在蓝桥杯中&#xff0c;比赛方已经为我们提供了与LCD有关的库&#xff0c;这让我们能够简单方便地使用…

Nginx 下载、安装与运行

下载地址 Nginx官网 - 下载页面 在Windows电脑&#xff0c;下载Windows版本。 下载的就是一个 zip 压缩包。解压后的文件就是可以直接使用的 Nginx 。 版本说明 选择 Mainline 版本就可以了。 解压到合适的位置 运行Nginx 命令行&#xff0c;进入 Nginx 所在的目录。运…

产品经理:能不能把 Vue 的中文输入法 bug 解决了?

前言 有个挺常见的需求相信大家应该都遇到过&#xff0c;就是一个搜索框&#xff0c;边输入边提示&#xff0c;类似于下面这样&#xff1a; 这玩意在前端也挺好实现的&#xff0c;就 v-model 然后 watch 再做个防抖请求接口呗&#xff01;于是我&#xff1a; <template>…

SAP MM学习笔记25- SAP中 基本数量单位,发注单位,发注价格单位

SAP 的 MM Master 中有 3种单位。 1&#xff0c;基本数量单位&#xff08; 基本订单单位&#xff0c; 库存管理的最小单位&#xff09; 2&#xff0c;发注单位&#xff08;订单单位&#xff09; 3&#xff0c;发注价格单位&#xff08;订单价格单位&#xff09; 管理 SAP 库…

【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建的功能

【jenkins】jenkins流水线构建打包jar&#xff0c;生成docker镜像&#xff0c;重启docker服务的过程&#xff0c;在jenkins上一键完成&#xff0c;实现提交代码自动构建&#xff0c;服务重启&#xff0c;服务发布的功能。一键实现。非常的舒服。 1. 启动脚本 shell脚本 这是 s…

测试部门来了个00后卷王之王,老油条感叹真干不过,但是...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

SystemVerilog之接口详解

1.入门实例 测试平台连接到 arbiter的例子&#xff1a;包括测试平台, arbiter仲裁器, 时钟发生器 和连接的信号。 ㅤㅤㅤ ㅤ ㅤㅤㅤㅤㅤ Arbiter里面可以自定义发送的权重&#xff0c; 是轮询还是自定义 grant表示仲裁出来的是哪一个&#xff0c;也即只有0&#xff0c;1&am…