Java学习Day10:总结帖

学习第十天,发一个总结帖!

1.基本数据类型,变量

基本数据类型不用过多赘述,其在后面不论是面型对象还有其他知识等都会经常使用;

变量最重要的就是其定义:

这对于我们之后理解自定义类型变量有很大的用处,因为这两种类型的变量,定义方式差不多,学习起来有连贯性。

2.scanner和if循环

scanner

需要导入包使用;

static Scanner sc =new Scanner(System.in)可以定义在全局;sc.next定义在具体位置;

if&&for循环

if&&for中最重要的两点我认为是循环条件以及循环的跳出;

循环的条件一般通过具体情况判断;

无限循环一般内部是某一模块的开始界面,以便于该模块的子模块执行完跳回,当然循环嵌套不宜太多。

循环的跳出可以使用break、添加for(;;)或while(ture)、a:for()+breaka等。

但是结构有好还得是设置FLAG==?,

1.不用增添过多的循环层数;

2.可以针对for循环内不可以使用if--else结构的特性实现循环内的不同条件选择执行;

3.可以有效地避免程序执行顺序问题。

3.数组

数组是学习自定义数据之前很重要的铺垫,可以通过自定义数据类型实现的,一般都可以通过数组实现,只是量的区别;

数组+循环就可以实现最基本的数仓功能。

数仓案例:

=========================================================================

import java.util.Scanner;

public class DataManager {
    public static void main(String[] args) {
        //数据加载:很多数--->Java如何存数据--->java知识点------>变量 和 数组----数组--->数组的定义格式
        double[] datas = new double[200];
        for (;;){
            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.print("请选择1----5:");
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
            if (num == 1){
                int temp = 0;
                for (int i = 0;i< datas.length;i++){
                    if (datas[i] !=0.0){
                        temp++;
                        System.out.println("数仓的数据有:"+datas[i]);
                    }
                    //如果上面一次都没进,意味着没有数据!
                    if (temp==0){
                        System.out.println("该数仓没有数据,请先完成添加!");
                        break;
                    }

                }
            } else if (num == 2) {
                System.out.print("请输入要修改的数据:");
                int updateid = scanner.nextInt();
                for (int i = 0;i<datas.length;i++){
                    if (datas[i] == updateid){
                        //提醒用户输入新的数据
                        System.out.print("请输入新的数据:");
                        datas[i] = scanner.nextInt();
                        System.out.println("您已修改成功!");
                        break;
                    }
                }
            } else if (num == 3) {
                System.out.print("请输入要添加的数据:");
                int newdata = scanner.nextInt();
                //查询操作 遍历数组,找到为0.0的位置 22 22
                for (int i = 0;i<datas.length;i++){
                    if (datas[i]==0.0){//该位置为空
                        //插入数据
                        datas[i] = newdata;
                        System.out.println("您已添加成功!");
                        break;//只允许每次只能插入一个!
                    }

                }
            } else if (num == 4) {
                //开关 : 开
                int flag = 1;
                System.out.print("请输入要删除的数据:");
                int deleteid = scanner.nextInt();
                for (int i = 0;i< datas.length;i++){// 12  22
                    if (deleteid == datas[i]){
                        datas[i] = 0.0;
                        flag = 2;
                        System.out.println("您已删除成功!");
                        break;
                    }
                }
                if (flag==1){
                    System.out.println("删除失败!");
                }
            } else if (num == 5) {
                System.out.println("您已成功退出!");
                //结束程序
                System.exit(0);
            }
        }
    }
}
=========================================================================

4.方法

定义方法时,不要考虑是我该定义有返回值还是无返回值,因为当我们调用该方法时,我们需要用值时,自然会知道;

还是三板斧!!!

编写方法三点!
1.我要干什么---决定方法体!
2.need什么东西才能干成---决定形式参数!
3.是否需要返回调用处---决定是否需要返回值及其类型!

阶段测试:学生测试系统

=========================================================================

package text;
import java.util.Scanner;
public class text {
    static Scanner sc =new Scanner(System.in);
    static int flag=0;
    static String [] nameList=new String[100];
    static String [] pwList=new String [100];
    static int flag1=0;
    public static void main(String[] args) {
        String stuName ="123";
        String stuPw = "123";
        for (;flag1==0;){
            System.out.println("在线考试练习系统");
            System.out.println("输入数字选择:(1.练题模式)(2.注册)(3.退出)");
            int num = sc.nextInt();
            dengluxitong(stuName, stuPw, num);
        }
    }

    private static void dengluxitong(String stuName, String stuPw, int num) {
        if (num ==1){
            System.out.println("===练题模式===");
            loginmodel(stuName, stuPw);
        } else if (num ==2) {
            System.out.println("请输入账号");
            String zhucename = sc.next();
            for (int i = 0; i < nameList.length; i++) {
                if (nameList[i]==null){
                    nameList[i]=zhucename;
                    System.out.println("请输入密码");
                    String zhucepw = sc.next();
                    pwList[i]= sc.next();
                    break ;
                }
            }
        }
        tuichumodel(num);
    }

    private static void loginmodel(String stuName, String stuPw) {
        for (;flag==0;){
            System.out.println("请登录");
            System.out.println("请输入账号:");
            String na = sc.next();
            System.out.println("请输入密码:");
            String pw = sc.next();
            if (na.equals(stuName)&&pw.equals(stuPw)){
                flag =1;
                for (;;){
                    System.out.println("练习题模块");
                    System.out.println("1.水仙花  2。计算分数  3.计算偶数的和  4.偶数奇数  5.打印星星  6.退出  ");
                    int choice =sc.nextInt();
                    if (choice==1){
                        shiuxianhuashu();
                    }
                    if (choice==2){
                        System.out.println("任意输入五个人成绩,打印输出总分平均分:");
                        zongchengjipingjunchengji();

                    }
                    if (choice==3){
                        System.out.println("for循环计算100内所有偶数和:");
                        oushuhe();
                    }
                    if (choice==4){
                        System.out.println("0-45所有奇偶数字个数及其对应的和:");
                        jiougeshuhetongji();

                    }
                    if (choice==5){
                        System.out.println("打印星星:");
                        xingxing();
                    }
                    if (choice==6){
                        System.out.println("退出:");
                        break ;
                    }

                }//习题模块
            }
            if (flag==0){
                System.out.println("账号或密码错误,请重新登录");
            }
        }
    }

    private static void xingxing() {
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < i+1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    private static void jiougeshuhetongji() {
        int countou=0;
        int countji=0;
        int sumou=0;
        int sumji=0;
        for (int i = 0; i <=45; i++) {
            if (i%2==0){
                sumou+=i;
                countou++;
            } else if (i%2!=0) {
                sumji+=i;
                countji++;
            }
        }
        System.out.println("偶数个数为"+countou);
        System.out.println("偶数和为"+sumou);
        System.out.println("奇数个数为"+countji);
        System.out.println("奇数和为"+sumji);
    }

    private static void oushuhe() {
        int sum=0;
        for (int i = 0; i <= 100; i++) {
            if (i%2==0){
                sum+=i;
            }
        }
        System.out.println(sum);
    }

    private static void zongchengjipingjunchengji() {
        int [] arry =new int[5];
        int sum =0;
        for (int i = 0; i < arry.length; i++) {
            System.out.println("请输入第"+(i+1)+"个成绩:");
            int chengji = sc.nextInt();
            arry[i]=chengji;
            sum+=chengji;
        }
        System.out.println("总成绩:"+sum);
        System.out.println("平均成绩:"+sum/5);
    }

    private static void shiuxianhuashu() {
        System.out.println("任意输入三个数,判断是否是水仙花数:");
        System.out.println("请输入一个三位数:");
        int shuixianhuashu=sc.nextInt();
        if(Math.pow(shuixianhuashu % 10, 3) + Math.pow(shuixianhuashu / 10 % 10, 3) + Math.pow(shuixianhuashu / 100 % 10, 3) == shuixianhuashu){
            System.out.println(shuixianhuashu+"是水仙花数");
        }else {
            System.out.println(shuixianhuashu+"不是水仙花数");
        }
    }

    private static void tuichumodel(int num) {
        if (num ==3){
            System.out.println("退出");
            flag1=1;
        }
    }
}

=========================================================================

5.自定义数据类型

1.基本定义

2.数据图

1.我们为什么要定义基本数据类型

基本数据类型在存储数据时相当于是数组的集合,我们可以看到在Student中,原本需要三个数组存储的数据变成了三个属性(id,那么,age);

2.关于空间

arr是在main中定义的存储Student类型数据的数组,这个行为在栈中开辟了一块空间用来存储arr数组,其中每个位置没有数据前都是null;

下文Student  a1 = new Student()也是同样的道理,不过a1数据是Student类的,每个a1都包括三个基本属性,其中的默认值是各自数据类型的默认值。

3.赋值?

从表面看不论是arr还是a1、a2都是在main也就是堆中,但是main中只存储了他们的栈中的地址,访问时并不能直接在main中找到他们存储的数据。

arr[0]=a1;看似是赋值操作,其实是在arr[0]中存储了a1的地址,这样之后使用a[0]时就可以直接根据地址的访问;

6.连接数据库

1.sql基本操作

creata  database  test ;

drop  database  test ;

创建新表:

create table ceshi(
 
ids int auto_increment primary key,
 
uid varchar(20),
 
name varchar(20),
 
class varchar(20),
 
foreign key(class) references class(code)
 
);

    CREATE TABLE 表名称
    (
    列名称1 数据类型,
    列名称2 数据类型,
    列名称3 数据类型,
    )
 

表操作:

1. SELECT 列名称 from 表名称
2. INSERT INTO table_name(列1,列2,...) VALUES(值1,值2,...)
3 .UPDATE 表名称 set 列名称 = 新值     WHERE 列名称 = 某值

4. DELETE FROM 表名称 WHERE 列名称 = 值

2.java链接数据库操作

1.Class.forName("com.mysql.cj.jdbc.Driver"); 
// 加载MySQL JDBC驱动
2.Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false",
        "root",
        "123456");
// 使用DriverManager获取数据库连接

3.Connection con = getConnection(); 
// 获取数据库连接

4.PreparedStatement ps = con.prepareStatement(sql) 
// 创建PreparedStatement对象

5.书写操作及占位符(插入举例)

PreparedStatement ps =con.prepareStatement("insert into shoping (id,name,count,price) values(?,?,?,?)");
// 创建PreparedStatement对象
ps.setInt(1,id);
ps.setString(2,name);
ps.setInt(3,count);
ps.setInt(4,price);
ps.execute();
System.out.println("插入成功");

ps.按照占位符数据种类书写(1对应id,以此类推)

小案例:

aboutdb1;
import java.sql.*;
import java.util.Scanner;
public class newDBsystem {
    private static Connection getConnection() throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL JDBC驱动
        Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false",
                "root",
                "123456");// 使用DriverManager获取数据库连接
        return con;
    }
    static Scanner sc=new Scanner(System.in);
    //main主类控制执行顺序
    public static void main(String[] args)throws Exception {
        while (true){
            System.out.println("====数仓管理系统=====");
            System.out.println("1.增  2.删  3.改  4.查  5.退出 ");
            int number = sc.nextInt();
            if (number==1){
                addmodel();
            }
            if (number==2){
                delmodel();
            }
            if (number==3){
                updatamodel();
            }
            if (number==4){
                checkmodel();
            }
            if (number==5){
                break;
            }
        }
    }
    //添加功能
    public static void  addmodel() throws Exception {
        Connection con =getConnection();
        System.out.println("===插入界面===");
        System.out.print("id:");
        int id = sc.nextInt();
        System.out.print("name:");
        String name =sc.next();
        System.out.print("count:");
        int count = sc.nextInt();
        System.out.print("price:");
        int price = sc.nextInt();
        PreparedStatement ps =con.prepareStatement("insert into shoping (id,name,count,price) values(?,?,?,?)");
        // 创建PreparedStatement对象
        ps.setInt(1,id);
        ps.setString(2,name);
        ps.setInt(3,count);
        ps.setInt(4,price);
        ps.execute();
        System.out.println("插入成功");
    }
    //查看功能
    public static void  checkmodel() throws Exception {
        Connection con =getConnection();
        String sql = "SELECT * FROM shoping";
        PreparedStatement ps = con.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        System.out.println("=================================");
        while (rs.next()) { // 遍历结果集
            // 使用rs.getXXX("columnName")方法获取每一列的值,并打印出来
            System.out.println("ID: " + rs.getInt("id") +
                    ", Name: " + rs.getString("name") +
                    ", count: " + rs.getInt("count") +
                    ", price: " + rs.getInt("price"));
        }
        ps.execute();
        System.out.println("=================================");
    }
    //删除功能
    public static void  updatamodel() throws Exception {
        Connection con =getConnection();
        System.out.println("===修改界面===");
        infoidname();
        System.out.print("请输入所要删除的数据对应id,以及其他字段想要修改的值:");
        System.out.print("id:");
        int id = sc.nextInt();
        System.out.print("其他字段的值:");
        System.out.print("name:");
        String name =sc.next();
        System.out.print("count:");
        int count = sc.nextInt();
        System.out.print("price:");
        int price = sc.nextInt();
        PreparedStatement ps =con.prepareStatement("update shoping set name =?,count =?,price=? where id=?");
        ps.setString(1,name);
        ps.setInt(2,count);
        ps.setInt(3,price);
        ps.setInt(4,id);
        int i=ps.executeUpdate();
        if (i>0){
            System.out.println("修改成功!");
        }
    }
    //修改功能
    public static void  delmodel() throws Exception {
        Connection con =getConnection();
        System.out.println("===删除界面===");
        System.out.print("请输入所要删除的数据对应id:");
        int id = sc.nextInt();
        PreparedStatement ps =con.prepareStatement("delete from shoping where id = ?");
        ps.setInt(1,id);
        ps.execute();
        System.out.println("删除成功");
    }
    //查看id及name
    public static void  infoidname() throws Exception {
        Connection con = getConnection();
        System.out.println("id及名称列表:");
        PreparedStatement ps=con.prepareStatement("select id from shoping");
        ResultSet resultSet = ps.executeQuery();
        while (resultSet.next()){
            System.out.print("id:"+resultSet.getInt("id"));
            System.out.print("       ");
        }
        System.out.println();
        PreparedStatement ps1=con.prepareStatement("select name from shoping");
        ResultSet resultSet1 = ps1.executeQuery();
        while (resultSet1.next()){
            System.out.print("name:"+resultSet1.getString("name"));
            System.out.print("   ");
        }
        System.out.println();

    }

数据库部分不全,以后会补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值