博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学号 2018-2019-20175212 实验一 《Java开发环境的熟悉》
阅读量:4342 次
发布时间:2019-06-07

本文共 8023 字,大约阅读时间需要 26 分钟。

学号 2018-2019-20175212 实验一 《Java开发环境的熟悉》

一、实验内容及步骤

1.使用JDK编译、运行简单的Java程序

  • mkdir 20175212exp1创建20175212epx1目录
  • cd 20175212exp1 进入20175212exp1目录
  • mkdir src , mkdir bin , cd src 创建子目录并进入
  • atom Hello.java 使用atom编辑器编写Hello.java文件
  • cd ..回到上级目录
  • javac -d bin src/Hello.java 编译代码并将可执行文件产生在bin目录中
  • cd bin java Hello 运行代码

实验截图如下

输入图片说明

2.使用IDEA调试Java程序

  • 设置断点 (如下图)

    输入图片说明

  • 单步运行

    step into(F7)

    step over(F8)

  • 从一个断点到另一个断点 Resume(F9)

  • 设置条件断点(如下图)

输入图片说明

  • 设置临时断点(如下图)
    输入图片说明

3.练习

实验题目:4. 实现学生成绩管理功能(增删改,排序,查找),并进行测试(正常情况,异常情况,边界情况)。

代码为:

package student.score.manage;public class Score {    String num;    String name;    double score;    public Score(){    }    public void setNum(String num) {        this.num = num;    }    public void setName(String name) {        this.name = name;    }    public void setScore(double score) {        this.score = score;    }}
package student.score.manage;import java.util.Scanner;public class ScoreList {    int maxLength = 100;    int length = 0;    Score[] data = new Score[maxLength];    Scanner input = new Scanner(System.in);    public ScoreList() {    }    //添加记录方法    public void add() {        if(length < maxLength) {            data[length] = new Score();            System.out.print("请输入学生的学号: ");            data[length].setNum(input.next());            System.out.print("请输入学生的姓名:");            data[length].setName(input.next());            System.out.print("请输入学生的成绩:");            data[length].setScore(input.nextDouble());            length++;            System.out.println("添加成功!");        }        else {            System.out.println("添加失败!");        }    }    //显示成绩单方法    public void transcript() {        System.out.println("=====================================");        System.out.println(" 学号                     姓名                      成绩 ");        for(int i = 0; i < length; i++) {            System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);        }        System.out.println("=====================================\n");    }    //成绩从高往低排序方法    public void sort() {        Score temp = new Score();        for(int i = 1; i < length; i++) {            for(int j = 0; j < length - i; j++) {                if(data[j].score < data[j + 1].score) { //冒泡法排序                    temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp;                }            }        }    }    //平均分、最大最小值方法    public void average() {        double sum = 0.0;        double max = 0.0;        double min = 100.0;        for(int i = 0; i < length; i++) {            sum += data[i].score;            max = max > data[i].score ? max : data[i].score;            min = min < data[i].score ? min : data[i].score; //三目运算法        }        System.out.printf("这门课的平均成绩为: %.2f\n", sum/length);        System.out.println("最高分为: " + max + "\n" + "最低分为: " + min + "\n");    }    //删除学生记录方法    public void delete() {        System.out.print("请输入您要删除信息的学生的学号: ");        String number1 = input.next();        int i, flag = length;        for(i = 0; i < length; i++) {            if(number1.equals(data[i].num)) {                flag = i; break;            }        }        if(i == length) {            System.out.println("查无此人!请核对后重新输入 \n");            delete();        }        else {            for(int j = flag; j < length; j++) {                data[j] = data[j + 1];            }            System.out.println("删除成功!\n");            length -= 1; //不减1会报数组越界的错误        }    }    //查询某个学生信息方法    public void inquire() {        System.out.print("请输入您要查询成绩的学生的学号:");        String number2 = input.next();        int i;        for(i = 0; i < length; i++) {            if(number2.equals(data[i].num)) {                System.out.println("====================================");                System.out.println(" 学号                     姓名                      成绩 ");                System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);                System.out.println("====================================\n");                break;            }        }        if(i == length) {            System.out.println("查无此人!请核对后重新输入学号 \n");            inquire();        }    }    //修改学生信息方法    public void recompose() {        System.out.print("请输入您要修改信息的学生的学号:");        String number3 = input.next();        int i;        for(i = 0; i < length; i++) {            if(number3.equals(data[i].num)) {                System.out.println("请输入该学生新的学号,姓名和成绩:");                data[i].setNum(input.next());                data[i].setName(input.next());                data[i].setScore(input.nextDouble());                System.out.println("修改成功!\n");                break;            }        }        if(i == length) {            System.out.println("查无此人!请核对后重新输入学号\n");            recompose();        }    }}
package student.score.manage;import java.util.Scanner;public class Test {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        String choice = "1";        ScoreList studentScoreList = new ScoreList();        System.out.println("**********学生成绩管理系统********");        while(choice.equals("0") == false) {            System.out.println("1.查看学生成绩单");            System.out.println("2.添加学生成绩记录");            System.out.println("3.修改学生成绩记录");            System.out.println("4.删除学生成绩记录");            System.out.println("5.查看某位学生成绩记录");            System.out.println("6.统计这门课平均分、最高分和最低分");            System.out.println("7.按成绩从高往低排序,并输出");            System.out.println("0.退出程序");            System.out.print("Enter your choice: ");            choice = input.next();            switch(choice) {                case "0":                    System.out.println("谢谢您的使用,欢迎下次光临!\n" + "**********按任意键结束程序**********");                    break;                case "1":                    studentScoreList.transcript();                    System.out.println("请问您还需要什么服务?\n");                    break;                case "2":                    int i = 1;                    do {                        studentScoreList.add();                        System.out.println("\n是否继续添加?" + "\n" + "0.否" + "\n" + "1.是");                        i = input.nextInt();                    }while(i == 1);                    System.out.println("请问您还需要什么服务?\n");                    break;                case "3":                    studentScoreList.recompose();                    System.out.println("请问您还需要什么服务?\n");                    break;                case "4":                    studentScoreList.delete();                    System.out.println("请问您还需要什么服务?\n");                    break;                case "5":                    studentScoreList.inquire();                    System.out.println("请问您还需要什么服务?\n");                    break;                case "6":                    studentScoreList.average();                    System.out.println("请问您还需要什么服务?\n");                    break;                case "7":                    studentScoreList.sort();                    studentScoreList.transcript();                    System.out.println("请问您还需要什么服务?\n");                    break;                default:                    System.out.println("Invalid input! Please enter again.");                    break;            }        }    }}

运行结果截图:

正常情况:

  1. 添加学生添加学生
  2. 打印成绩单打印成绩单
  3. 添加学生添加学生
  4. 删除学生删除学生
  5. 查询学生查询学生
  6. 统计平均,最值统计平均,最值

  7. 按成绩排序按成绩排序
  8. 退出程序退出程序

异常情况(当且不局限于 学号、成绩输入字符,名字输入数字时):

异常

用IDEA调试

调试

二、实验中遇到的问题

  • 问题一: 由于练习题目中所需构建的方法较多,难度也各不相同,但因没有主类无法进行分布编译,导致心态略炸。
  • 解决办法:利用IDAE的优点,利用软件的红波浪提醒,检查语法错误和遗漏,待完成主类之后再通过debug对程序进行调试并寻找逻辑错误。

    输入图片说明

  • 问题二:在三个类文件中首先引入包名package student.score.manage;,但一直提示语法错误。
  • 解决办法:为使成功编译运行,首先使用粗暴的办法,直接在windows目录下建立文件夹,如下图

    输入图片说明

    但回想起调试第四章代码,学习包时,编译时系统自动帮我建了文件夹。经过借鉴学习得知,原因为曾经使用的

    javac -d的编译方式 带有创建包的文件夹的功能

实验总结和感悟

  • 在类与程序的基本结构中,可以说java程序有一个个类所构成,各类均为主类所服务。另外的,如练习题四中,若一个类可在其他各类中使用,则可以选择带包编译,方便快捷。

  • 由于我抽到的题目在代码量上对我而言有些许困难,免不了有借鉴学习之处,也理解了一些还未看到的内容。因此我认为无论使结对学习写代码,或是在网上 理解的 借鉴学习,都能对自身起到鞭策追赶的作用。

  • IDEA对于语法错误与遗漏有着鲜明的提示(红色下波浪),但程序中的逻辑错误肉眼很难辨别,因而掌握使用强大的调试功能显得尤为重要。

步骤 耗时 百分比
需求分析 10min 6.7%
设计 20min 13.3%
代码实现 90min 60%
测试 10min 6.7%
分析总结 20min 13.3%

转载于:https://www.cnblogs.com/thz666/p/10596431.html

你可能感兴趣的文章
取余运算
查看>>
新手小白Linux(Centos6.5)部署java web项目(mysql5.7安装及相关操作)
查看>>
java学习之Runtime
查看>>
RPC 简单小试
查看>>
行内元素 块状元素 内联块状元素
查看>>
idea clion编译器
查看>>
java mysql与.net MSSQL性能测试
查看>>
unity 场景重新载入
查看>>
自动化测试用例设计学习心得总结
查看>>
Centos7在单用户模式下重置root密码
查看>>
使用jQuery的 autocomplete 实现输入框 自动提示补全
查看>>
201521123032《Java程序设计》第5周学习总结
查看>>
CSS3_02之2D、3D动画
查看>>
一个快速搜索下载jar包的网站
查看>>
flex加载元件的几种方式
查看>>
eclipse 插件,直接打开文件路径
查看>>
开发ShellCode的艺术
查看>>
numpy创建array【老鱼学numpy】
查看>>
day49 django 练习笔记
查看>>
纯css进度条效果
查看>>