From daafa7fb91a066a27278e37c3f70713bcb601c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=AD=A3=E7=84=95?= <1953038944@qq.com> Date: Thu, 22 Dec 2022 23:39:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B8=89=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\345\226\204 \344\275\234\344\270\232.md" | 216 ++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 "38 \351\273\204\346\255\243\347\204\225/20221222 \345\255\246\347\224\237\347\263\273\347\273\237\347\232\204\345\256\214\345\226\204 \344\275\234\344\270\232.md" diff --git "a/38 \351\273\204\346\255\243\347\204\225/20221222 \345\255\246\347\224\237\347\263\273\347\273\237\347\232\204\345\256\214\345\226\204 \344\275\234\344\270\232.md" "b/38 \351\273\204\346\255\243\347\204\225/20221222 \345\255\246\347\224\237\347\263\273\347\273\237\347\232\204\345\256\214\345\226\204 \344\275\234\344\270\232.md" new file mode 100644 index 0000000..fb5b869 --- /dev/null +++ "b/38 \351\273\204\346\255\243\347\204\225/20221222 \345\255\246\347\224\237\347\263\273\347\273\237\347\232\204\345\256\214\345\226\204 \344\275\234\344\270\232.md" @@ -0,0 +1,216 @@ +## 学生系统的完善 + +```java +package 学生管理系统; + +import java.util.Scanner; + +public class StudentManagerSystem { + //把扫描器放在最外层,这样里面所有的方法都能用,这个扫描器让所有公用 +// static 改为静态的让所有公用 + static Scanner sc = new Scanner(System.in); + //数组放在外面也能被所以使用,stu(数组名称)相当于一个数据库 + static String[] stu = new String[10]; + public static void main(String[] args) { + //定义这个数组,存放学生信息 +// String[] students = new String[10]; + //假设里面已经有一些学生信息了 + stu[0]="1号"; + stu[1]="2号"; + //添加从2开始,2这个索引,其实就是第一个null的位置 + //弄一个死循环,让他一直循环start,也就是目录,还有选择菜单 + while (true){ + start(); + int a = choiceMenu(sc.nextInt()); + if (a==1){ + break; + } + } + + } + //1、登入界面,\n是换行,\t空格 + public static void start(){ + System.out.println(); + System.out.println("==============================" + + "\n- 欢迎使用3班学生管理系统\t- " + + "\n- \t\t1.浏览所有学生信息 \t-" + + "\n- \t\t2.添加学生信息 \t\t-" + + "\n- \t\t3.修改学生信息 \t\t-" + + "\n- \t\t4.删除学生信息 \t\t-" + + "\n- \t\t5.查询学生信息 \t\t-" + + "\n- \t\t6.退出管理系统 \t\t-" + + "\n==============================\n" + + "\n 请输入对应的数字选择你需要的功能: "); + } + //2、根据输入的数字,进入不同的分支 + //因为是int型,所以会有返回值return + public static int choiceMenu(int num){ + //定义一个变量,用于6 + int a =0; + //swith会精确到某一个值,一般用于值比较少的时候 + switch (num){ + case 1: + //1、浏览所有学生信息 +// System.out.println("你选择了浏览所有学生"); + viwAllStudent(); + break; + case 2: + // 2.添加学生信息 + addStudent(); +// System.out.println("你选择了添加学生信息"); + break; + case 3: + //3.修改学生信息 + editStudent(); + break; + case 4: + //4.删除学生信息 + deleteStudent(); + break; + case 5: + // 5.查询单个学生信息 + searcStudent(); + break; + case 6: + // 6.退出管理系统 + System.out.println("你选择退出系统!"); + a =1; + break; + default: + System.out.println("不存在!"); + } + return a; + } + + + // /3、浏览所有学生信息 + public static void viwAllStudent(){ + System.out.println("一班现有以下学生:"); + //弄个计数器,统计null个数 + int count = 0; + for (String name : stu){ +// 第一种 + if (name ==null){ + count++; + continue;//跳过 + } + System.out.print(name+"\t"); +// 第二种 +// if (name !=null){ +// System.out.println(name+"\t"); +// } + } + //判断,null的个数等于数组的长度,说明整个数据库都是null,结论就是没有学生信息 + if (count == stu.length){ + System.out.println("目前,还没有学生信息!"); + } + } + + //4添加学生信息 + public static void addStudent( ) { +//先找出没有人的位置,也就是第一个null的位置 +//然后将它成你要添加的姓名 + //提示用户输入 + System.out.println("请输入你要添加的学生姓名:"); + //字符串的形式来接收用户所输入的文字 + String name =sc.next(); + //用int来接收seachIndex这个方法 + int index = searchIndex(name); + //先判断是否已经有该学生了 + if (index !=-1){ + System.out.println("该学生已经在数据库了,请不要重复添加"); + }else { + //用int来接收searchIndex方法 + int nullindex = searchIndex(null); +// 让数据库里的null等于用户输入的新添加的名字 + stu[nullindex] =name; + System.out.println("添加成功!"); + //添加到viwAllStudent这个方法里,这样才算添加成功 + viwAllStudent(); + } + + } + //4.1把找置位的功能,独立出来,做成一个方法,返回找到的位置 + public static int searchIndex(String str) { + //定义一个索引变量 + int index = -1;//因为在数组里0表示第一个,改成-1,就表示不存在 + //null是特殊的类型,所以要单独判断 + if (str == null) { + for (int i = 0; i < stu.length; i++) { + if (stu[i] == null) { + index = i; + break; + } + } + }else { + for (int i = 0; i < stu.length; i++) { + if (str.equals(stu[i])) { + index = i; + return index; + } + } + } + return index; + + } + + //5.修改学生的一个方法 + private static void editStudent() { + //1.输入要修改的学生姓名 + System.out.println("请问你要修改那一个学生"); + //字符串的形式来接收用户所输入的文字 + String name = sc.next(); + //在数组中,查找这个name所对应的索引值 + int index = searchIndex(name); + //判断这个索引值存在不存在 + if (index ==-1){ + System.out.println("对不起,没有该学生,无法修改!"); + }else { + //将索引值对应的元素改为用户输入的名字 + System.out.println("请问你要把【"+name+"】修改为谁:"); + //字符串的形式来接收用户所输入的文字 + String newName = sc.next(); + //把数据库里的值换为用户输入的值 + stu[index] =newName; + System.out.println("修改成功!"); + } + } + //6.删除学生信息 + public static void deleteStudent(){ + //1.输入要删除的学生姓名 + System.out.println("请问你要删除那一个学生"); + //字符串的形式来接收用户所输入的文字 + String name = sc.next(); + //在数组中,查找这个name所对应的索引值 + int index = searchIndex(name); + //判断这个索引值存在不存在 + if (index ==-1){ + System.out.println("对不起,没有该学生,无法删除!"); + }else { + //把数据库里的数据换为null空的 + stu[index] =null; + System.out.println("删除成功!"); + } + } +// 7.查询学生信息 + private static void searcStudent() { + System.out.println("请输入要查询学生姓名:"); + //字符串的形式来接收用户所输入的文字 + String name = sc.next(); + //引用方法,该方法用int来接收这个方法 + //查找这个学生的索引 + int index = searchIndex(name); + //判断若是该学生找不到就返回-1,找到了就返回索引+1 + if (index == -1){ + System.out.println("对不起,没有找到该学生!"); + }else { + //index+1是因为计算机是从0开始算一位数,+上1才是我们 正常的 + System.out.println("已找到该学生Ta在 "+(index+1)+" 的位置。"); + } +} +// 8.退出系统 +//在choiceMenu和main方法中完成退出系统 +} + +``` + -- Gitee From 6badf395a0f5f7d5d7eb3db9464f82bc5976ecb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=AD=A3=E7=84=95?= <1953038944@qq.com> Date: Mon, 26 Dec 2022 21:42:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E5=9B=9B=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60\345\217\212\344\275\234\344\270\232.md" | 270 ++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 "38 \351\273\204\346\255\243\347\204\225/20221223 \351\235\242\345\220\221\345\257\271\350\261\241\347\254\224\350\256\260\345\217\212\344\275\234\344\270\232.md" diff --git "a/38 \351\273\204\346\255\243\347\204\225/20221223 \351\235\242\345\220\221\345\257\271\350\261\241\347\254\224\350\256\260\345\217\212\344\275\234\344\270\232.md" "b/38 \351\273\204\346\255\243\347\204\225/20221223 \351\235\242\345\220\221\345\257\271\350\261\241\347\254\224\350\256\260\345\217\212\344\275\234\344\270\232.md" new file mode 100644 index 0000000..7f548e0 --- /dev/null +++ "b/38 \351\273\204\346\255\243\347\204\225/20221223 \351\235\242\345\220\221\345\257\271\350\261\241\347\254\224\350\256\260\345\217\212\344\275\234\344\270\232.md" @@ -0,0 +1,270 @@ +## 面向对象 + +面向对象是一种编程思维 + +#### 对象是什么? + +对象是看得到摸得着的东西,是真实存在的 + +对象的属性和行为 + +属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值 + +行为:对象能够执行的操作 + +#### 类是什么? + +是对现实生活中一类具有共同属性和行为的事物的抽象,确定的对象将会拥有属性和行为 + +类的组成:属性和行为 + +属性:在类中通过成员变量来体现(类中方法外的变量) + +行为:在类中通过成员方法来体现(在前面的方法相比去掉static关键字即可) + +二者的关系: + +类是对象的抽象,对象是类的实体 + +## 栈内存和堆内存 + +栈内存:所有局部变量都会在栈内存中创建 + +局部变量:定义在方法中的变量或方法声明上的变量 + +方法执行都会加载到栈中进行 + +局部变量的特点:随着方法的调用而存在,随着方法的调用完毕而消失 + +例如: + +```java +Student s = new Student(); +//Student s 会进入栈内存,main主方法也是在栈内存 +//而new Student会进入堆内存 +``` + +堆内存:所有对象及其对应的实例变量和数组都将存储在此处 + +简单理解:每new出来的东西都会在堆内存里 + +## 作业 + +```java +package 图书管理系统; + +import java.util.Scanner; + +public class BookManagerSystem { + + //把扫描器放在最外层,这样里面所有的方法都能用,这个扫描器让所有公用 +// static 改为静态的让所有公用 + static Scanner sc = new Scanner(System.in); + //数组放在外面也能被所以使用,book(数组名称)相当于一个数据库 + static String[] book = new String[5]; + public static void main(String[] args) { + //定义这个数组,存放图书信息 +// String[] book = new String[10]; + //假设里面已经有一些图书信息 + book[0]="精卫填海"; + book[1]="夸父追日"; + book[2]="女娲补天"; + //添加从3开始,3这个索引,其实就是第一个null的位置 + //弄一个死循环,让他一直循环start,也就是目录,还有选择菜单 + while (true){ + start(); + int a = choiceMenu(sc.nextInt()); + if (a==1){ + break; + } + } + + } + //1、登入界面,\n是换行,\t空格 + public static void start(){ + System.out.println(); + System.out.println("==============================" + + "\n- 欢迎使用闽大图书管理系统\t- " + + "\n- \t\t1.浏览所有图书信息 \t-" + + "\n- \t\t2.添加图书信息 \t\t-" + + "\n- \t\t3.修改图书信息 \t\t-" + + "\n- \t\t4.删除图书信息 \t\t-" + + "\n- \t\t5.查询图书信息 \t\t-" + + "\n- \t\t6.退出管理系统 \t\t-" + + "\n==============================\n" + + "\n 请输入对应的数字选择你需要的功能: "); + } + //2、根据输入的数字,进入不同的分支 + //因为是int型,所以会有返回值return + public static int choiceMenu(int num){ + //定义一个变量,用于6 + int a =0; + //swith会精确到某一个值,一般用于值比较少的时候 + switch (num){ + case 1: + //1、浏览所有图书信息 +// System.out.println("你选择了浏览所有图书"); + viwAllBook(); + break; + case 2: + // 2.添加图书信息 + addBook(); +// System.out.println("你选择了添加图书信息"); + break; + case 3: + //3.修改图书信息 + editBook(); + break; + case 4: + //4.删除图书信息 + deleteBook(); + break; + case 5: + // 5.查询图书信息 + searchBook(); + break; + case 6: + // 6.退出管理系统 + System.out.println("你选择退出系统!"); + a =1; + break; + default: + System.out.println("不存在!"); + } + return a; + } + + + // /3、浏览所有图书信息 + public static void viwAllBook(){ + System.out.println("闽大图书馆现有以下图书:"); + //弄个计数器,统计null个数 + int count = 0; + for (String name : book){ +// 第一种 + if (name ==null){ + count++; + continue;//跳过 + } + System.out.print(name+"\t"); +// 第二种 +// if (name !=null){ +// System.out.println(name+"\t"); +// } + } + //判断,null的个数等于数组的长度,说明整个数据库都是null,结论就是没有图书信息 + if (count == book.length){ + System.out.println("目前,还没有该图书信息!"); + } + } + + //4添加图书信息 + public static void addBook( ) { +//先找出没有人的位置,也就是第一个null的位置 +//然后将它成你要添加的图书 + //提示用户输入 + System.out.println("请输入你要添加的图书名称:"); + //字符串的形式来接收用户所输入的文字 + String name =sc.next(); + //用int来接收seachIndex这个方法 + int index = searchIndex(name); + //先判断是否已经有该图书 + if (index !=-1){ + System.out.println("该图书已经在数据库了,请不要重复添加"); + }else { + //用int来接收searchIndex方法 + int nullindex = searchIndex(null); +// 让数据库里的null等于用户输入的新添加的图书 + book[nullindex] =name; + System.out.println("添加成功!"); + //添加到viwAllBook这个方法里,这样才算添加成功 + viwAllBook(); + } + + } + //4.1把找置位的功能,独立出来,做成一个方法,返回找到的位置 + public static int searchIndex(String str) { + //定义一个索引变量 + int index = -1;//因为在数组里0表示第一个,改成-1,就表示不存在 + //null是特殊的类型,所以要单独判断 + if (str == null) { + for (int i = 0; i < book.length; i++) { + if (book[i] == null) { + index = i; + break; + } + } + }else { + for (int i = 0; i < book.length; i++) { + if (str.equals(book[i])) { + index = i; + return index; + } + } + } + return index; + + } + + //5.修改图书的一个方法 + private static void editBook() { + //1.输入要修改的图书 + System.out.println("请问你要修改那一本图书"); + //字符串的形式来接收用户所输入的文字 + String bookName = sc.next(); + //在数组中,查找这个name所对应的索引值 + int index = searchIndex(bookName); + //判断这个索引值存在不存在 + if (index ==-1){ + System.out.println("对不起,没有该图书,无法修改!"); + }else { + //将索引值对应的元素改为用户输入的图书 + System.out.println("请问你要把【"+bookName+"】修改为:"); + //字符串的形式来接收用户所输入的文字 + String newName = sc.next(); + //把数据库里的值换为用户输入的值 + book[index] =newName; + System.out.println("修改成功!"); + } + } + //6.删除图书信息 + public static void deleteBook(){ + //1.输入要删除的图书 + System.out.println("请问你要删除那一本图书"); + //字符串的形式来接收用户所输入的文字 + String name = sc.next(); + //在数组中,查找这个name所对应的索引值 + int index = searchIndex(name); + //判断这个索引值存在不存在 + if (index ==-1){ + System.out.println("对不起,没有该图书,无法删除!"); + }else { + //把数据库里的数据换为null空的 + book[index] =null; + System.out.println("删除成功!"); + } + } + // 7.查询图书信息 + private static void searchBook() { + System.out.println("请输入要查询图书:"); + //字符串的形式来接收用户所输入的文字 + String name = sc.next(); + //引用方法,该方法用int来接收这个方法 + //查找这个图书的索引 + int index = searchIndex(name); + //判断若是该图书找不到就返回-1,找到了就返回索引+1 + if (index == -1){ + System.out.println("对不起,没有找到该图书!"); + }else { + //index+1是因为计算机是从0开始算一位数,+上1才是我们 正常的 + System.out.println("已找到该图书Ta在 "+(index+1)+" 的位置。"); + } + } +// 8.退出系统 +//在choiceMenu和main方法中完成退出系统 + } + + + +``` + -- Gitee