diff --git "a/03 \345\276\220\351\233\250\346\231\264/20221220 \345\255\246\347\224\237\344\277\241\346\201\257\347\256\241\347\220\206\347\263\273\347\273\237.md" "b/03 \345\276\220\351\233\250\346\231\264/20221220 \345\255\246\347\224\237\344\277\241\346\201\257\347\256\241\347\220\206\347\263\273\347\273\237.md" index c2adf6d3d99b75f7fd52f0cb97f544148e347def..b22ecbf74df717aad968a5cb83623199e7e66d66 100644 --- "a/03 \345\276\220\351\233\250\346\231\264/20221220 \345\255\246\347\224\237\344\277\241\346\201\257\347\256\241\347\220\206\347\263\273\347\273\237.md" +++ "b/03 \345\276\220\351\233\250\346\231\264/20221220 \345\255\246\347\224\237\344\277\241\346\201\257\347\256\241\347\220\206\347\263\273\347\273\237.md" @@ -1,3 +1,4 @@ +学生信息管理系统 ```java import java.util.Scanner; @@ -128,4 +129,197 @@ public class class16 { } ``` +图书信息管理系统 +```java +import java.util.Scanner; + +public class class17 { + //1.需求,设计一个java程序,来管理图书信息 + //2.图书信息包括:书库、书籍查询、书籍借阅、书籍归还、借阅人员 + //3.系统功能:添加书籍,删除书籍,修改书籍,查询书籍,浏览所有书籍 + static Scanner sc = new Scanner(System.in); + static String[] book = new String[10]; + public static void main(String[] args) { + /* + 欢迎界面、菜单、添加图书、修改图书、删除图书、查找图书、浏览所有图书、退出系统 + */ + book[0]="茶花女"; + book[1]="简爱"; + book[2]="绿山墙的安妮"; + book[3]="假如给我三天光明"; + book[4]="红岩"; + book[5]="海底两万里"; + book[6]="月亮与六便士"; + //添加要从索引7开始,为第一个null的位置 + while (true){ + start(); + int a=choiceMenu(sc.nextInt()); + if (a==1){ + break; //终止while + } + } + //结束了上面的循环,开启下面的系统 + System.out.println("=======成绩管理系统======="); + } + //1.欢迎界面 + public static void start() { + System.out.println("================================" + + "\n 欢迎使用图书信息管理系统 -" + + "\n- \t\t1.浏览所有图书信息\t\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 请输入对应的数字选择你需要的功能:"); + } + + //2.选择菜单 + public static int choiceMenu(int num) { + int a=0; + switch (num) { + case 1: + //1.浏览所有图书信息 + allBook(); + break; + case 2: + //2.添加图书信息 + add(); + break; + case 3: + edit(); + //3.修改图书信息 + break; + case 4: + delete(); + //4.删除图书信息 + break; + case 5: + search(); + //5.查询图书信息 + break; + case 6: + System.out.println("你选择了退出系统!"); + a=1; + //6.退出管理系统 + break; + default: + System.out.println("选项错误!"); + } + return a; + } + //浏览所有学生信息的方法,封装可以复用,方便维护 + //3.浏览图书信息 + public static void allBook() { + System.out.println("系统现在有以下图书:"); + int count=0; + for (String bookName : book) { + //1.当图书为null是+时,跳过,输出下一个 + if (bookName == null) { + count++; + continue; + } + System.out.println(bookName + "\t"); + + //2.当图书不为null时,输出 + // if (name!=null){ + //System.out.println(name+"\t"); + //} + //null的个数正好等于数组长度,数据库就没有任何数据 + if (count == book.length) { + System.out.println("目前,还没有此图书信息!"); + } + } + } + + //4.添加图书信息 + //list集合,其底部实现的代码,也是用了数组 + //数组和集合都是存储数据的容器,集合为可变长度,数组为固定长度 + // 代表泛型 + public static void add() { + //先找出没有图书的位置,也就是第一个null的位置 + //然后将它改成你要添加的图书 + System.out.println("请输入需要添加的图书:"); + String name = sc.next(); + //先判断是否已经有该图书 + int index=searchIndex(name); + if (index !=-1) { + System.out.println("该图书已存在,无法添加!"); + }else{ + int nullIndex = searchIndex(null); + book[nullIndex]=name; + System.out.println("图书已添加成功!"); + } + } + //4.1 把找位置的功能,独立出来,做一个方法,返回找到的位置 + public static int searchIndex(String str) { + //定义一个索引变量 + int index = -1; //在数组中,0表示第一个数,-1就表示不存在 + if (str == null) { //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; + } + //类中的方法,可以用修饰符来限制该方法能被谁调用 + //3.修改图书信息 + public static void edit() { + System.out.println("请问需要修改的图书?"); + String name=sc.next(); + //输入要修改的图书 + int index=searchIndex(name); + //查找图书?有,给出其索引值,将其索引值改为用户输入的书名 + //没有,就无法修改 + if (index == -1) { + System.out.println("对不起,没有该书籍,无法修改!"); + }else{ + System.out.println("请问你要把【"+name+"】修改为:"); + String newName=sc.next(); + book[index]=name; + System.out.println("修改成功!"); + } + } + //4.删除图书信息 + public static void delete() { + System.out.println("请问你要删除哪本图书?"); + String name=sc.next(); + //输入要删除的学生姓名 + int index=searchIndex(name); + //查找姓名?有,给出其索引值,将其索引值改为初始化为null + //没有,就无法删除 + if (index == -1) { + System.out.println("对不起,没有该图书,无法删除!"); + }else{ + book[index]=null; + System.out.println("删除成功!"); + } + } + //5.查询图书信息 + public static void search() { + System.out.println("请输入要查询的图书书名:"); + String name=sc.next(); + //查找所输入学生的信息 + int index=searchIndex(name); + // + if (index == -1) { + System.out.println("抱歉,没有找到!"); + }else { + System.out.println("恭喜,找到了!Ta在书架的第"+(index+1)+"个位置"); + } + } +} +``` diff --git "a/03 \345\276\220\351\233\250\346\231\264/20221223 \351\235\242\345\220\221\345\257\271\350\261\241.md" "b/03 \345\276\220\351\233\250\346\231\264/20221223 \351\235\242\345\220\221\345\257\271\350\261\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..ae93cab2c54210a3ac22e258dacb71da101f64c5 --- /dev/null +++ "b/03 \345\276\220\351\233\250\346\231\264/20221223 \351\235\242\345\220\221\345\257\271\350\261\241.md" @@ -0,0 +1,349 @@ +### 面向对象 + +#### 1.概述: + +- 是一种编程指导思想 +- 有类才有对象 + +```java +public class Test{ + public stctic void main (String[] args){ + 老师 t=new 老师(); + 试卷 s=t.出题(); + 学生 stu=new 学生(); + stu.考试(s); + t.试卷(s); + } +} +``` + +```java +public class Test{ + public stctic void main (String[] args){ + 顾客 g=new 顾客(); + 售货员 s=new 售货员(); + 钱 m=g.掏钱(); + 手机 p=s.卖手机(m); + g.获取手机(p); + } +} +``` + +1. 类 + +概述:是对现实生活中一类具有共同属性和行为的事物的抽象(设计图) + +2. 对象 + +是能够看的到摸得着真是存在的实体(设计图实体) + +3. 小结 + +类是对象的抽象,对象是类的实体 + +4. 对象的属性和行为 + +属性:对象具有各种不同的特征,每个对象的每个属性都拥有特制的值 + +行为:对象能够执行的操作 + +#### 2.类的定义 + +是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为 + +组成:属性和行为 + +- 属性:在类中通过成员变量来实现(类中方法外的变量) + +- 行为:在类中通过成员方法来实现(和前面的方法相比去掉了static关键字即可) + +定义步骤: + +1. 定义类 + +2. 编写类的成员变量 + +3. 编写类的成员方法 + +```java +public class 类名{ + //成员变量 + //变量1的数据类型 变量1; + //变量2的数据类型 变量2; + + //成员方法 + //方法1; + //方法2; +} +``` + +```java +//定义一个手机类 +public class phone{ + //成员变量 + String brand; //品牌 + double price; //价格 + String color; //颜色 + //成员方法(行为) + public void call{ + System.out.println("我可以打电话!"); + } + public void palyGarm{ + System.out.println("我可以玩游戏!"); + } +} +``` + +```java +//定义一个App类 +public class Phone{ + public static void main(Strinf[] args){ + //生产手机 小米13 + Phone xiaomi13=new Phone(); + //创建出的对象,称为实例,实例的属性,默认只有默认值 + //给实例的变量赋值 + xiaomi13.brand="小米"; + xiaomi13.price=2999; + xiaomi13.color="黑色"; + System.out.println("手机品牌:"+xaiomi13.brand); //null + System.out.println("手机价格:"+xaiomi13.price); //0.0 + System.out.println("手机颜色:"+xaiomi13.color); //null + + //Scanner sc=new Scanner (System.in); + //Random ran=new Random(); + String name="小米"; + //正确写法 String name=new String(original:"小米") + //成员方法 + xiaomi13.call + xiami13.palyGarm + + Phone.huawei=new Phone(); + huawei.brand="mate30pro"; + System.out.println("华为手机品牌"+huawei.brand); + + Phone iphone18=new Phone(); + iphone18.brand="苹果至尊18pro" + iphone18.price="999990"; + iphone18.color="粉色"; + System.out.println("小马用"+iPhone18.price+"元钱买了一部"+iPhone18.color+"的"+iPhone18.brand); + } +} +``` + +#### 3. 对象的使用 + +- **创建对象** + +```java +格式:类名 对象名=new 类名(); +示例:Phone p=new Phone(); +``` + +- ##### **对象使用** + +1.变量 + +```java +格式:对象名.变量名 +示例:p.brand +``` + +2.方法 + +```java +格式:对象名.方法名(参数) +示例:p.call(); +``` + +- ##### 练习(学生类的定义和使用) + +需求:定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用 + +分析: + +1. 定义一个学生类 + +```java +类名:Student +成员变量:name,age +成员方法:study(),doHomework() +``` + +2. 定义一个学生测试类 + +```java +类名:StudentDemo +//因为要做测试,所以要有一个主方法:main方法 +``` + +3. 在学生测试类中通过对象完成成员变量和成员方法的使用 + +```java +//给成员变量赋值,输出成员变量的值 +//调用成员方法 +``` + +代码示例: + +```java +public class Student{ + //学生属性(变量) + String name; + int age; + char sex; + //以上三个变量不属于局部变量 + //学生行为(方法) + public void eat { + System.out.println(age+"的"+sex+"同学"+name+"在吃饭"); + } + public void doHomework{ + System.out.println(age+"的"+sex+"同学"+name+"在写作业"); + } +} +``` + +```java +public class Student{ + public static void main(Strinf[] args){ + Student xm=new Student(); + xm.name="小明"; + xm.age=18; + xm.sex="男"; + //以上也为局部变量,main方法之中 + Student xh=new Student(); + xh.name="小红"; + xh.age=19; + xh.sex="女"; + + xm.eat(); + xh.eat(); + } + //a、b、c均为局部变量 + // + public static void getSum(int a,int b){ + int c=1;//ta在方法getSum{}之中 + System.out.println(a+b+c); + } +} +``` + +#### **4. Java 内存分配** + +栈:所有局部变量都会在栈内存中创建; + +- 局部变量:定义在方法之中的变量或者方法声明上的变量 +- 方法执行都会加载到栈中进行 +- 局部变量特点:随着方法的调用而存在,调用结束而消失 +- 代码: + +```java +Student s=new Student(); +``` + +堆:所有对象及其对应的实例变量和数组都将存储在此处 + +- 简单理解为:new出来的东西,都存储在堆内存中 +- 每一个new出来的东西都有一个地址值,使用结束,会在垃圾回收器空闲时被回收 +- 实例变量(成员变量)有初始化值: + - 基本数据类型:整数:0;浮点数:0.0;布尔型:false;字符:空字符 + - 应用数据类型:null + +#### 5.单个对象 + +```java +public class Student{ + //成员变量 + String name; + int age; + //成员方法 + public void study { + System.out.println("好好学习!"); + } + public void doHomework{ + System.out.println("多做练习!"); + } +} +``` + +```java +public class StudentTest01{ + public static void main(Strinf[] args){ + //创建对象 + Student s=new Student(); + System.out.println(s); //输出 001 + //使用成员变量 + System.out.println(s.name+","+s.age); //输出 null,0 + s.name="张曼玉"; + s.age=28; + System.out.println(s.name+","+s.age); //输出 张曼玉,28 + //使用成员方法 + s.study(); //输出 好好学习 + s.doHomework(); //输出 多做练习 + } +} +``` + +#### **6.多个对象** + +```java +public class StudentTest02{ + public static void main(Strinf[] args){ + //创建第一个对象并使用 + Student s1=new Student(); + s1.name="林青霞"; + s1.age=30; + System.out.println(s1.name+","+s1.age); //输出 林青霞,30 + s1.study(); //输出 好好学习 + s1.doHomework(); //输出 多做练习 + //创建第二个对象并使用 + Student s2=new Student(); + s2.name="张曼玉"; + s2.age=28; + System.out.println(s2.name+","+s2.age); //输出 张曼玉,28 + s2.study(); //输出 好好学习 + s2.doHomework(); //输出 多做练习 + } +} +``` + +#### **7.多个引用指向相同** + +```java +public class StudentTest03{ + public static void main(Strinf[] args){ + //创建第一个对象并使用 + Student s1=new Student(); + s1.name="林青霞"; + s1.age=30; + System.out.println(s1.name+","+s1.age); //输出 林青霞,30 + //把第一个对象的地址赋值给第二个对象 + Student s2=new Student(); + s2.name="张曼玉"; + s2.age=28; + System.out.println(s1.name+","+s1.age); //输出 张曼玉,28 + System.out.println(s2.name+","+s2.age); //输出 张曼玉,28 + } +} +``` + +#### 8.成员变量和局部变量的区别 + +```java +public class Student{ + //成员变量 + String name; + + //成员方法 + public void study { + int i=0; + System.out.println("好好学习!"); + } + public void doHomework{ + System.out.println("多做练习!"); + int j=0; + } + + int age; +} +``` + diff --git "a/03 \345\276\220\351\233\250\346\231\264/images/\344\277\256\351\245\260\347\254\246.doc" "b/03 \345\276\220\351\233\250\346\231\264/images/\344\277\256\351\245\260\347\254\246.doc" new file mode 100644 index 0000000000000000000000000000000000000000..d9200ca238d6f2c5e9aa6d0f446a3801359ea8c4 Binary files /dev/null and "b/03 \345\276\220\351\233\250\346\231\264/images/\344\277\256\351\245\260\347\254\246.doc" differ