20155318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
2017-04-08 16:37
465 查看
20155318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一、实验内容及步骤
(一)命令行下Java程序开发
步骤一(新建文件夹):打开windows下的cmd → 在C盘中建一个名为20155318的文件夹
md 20155318→输入
cd 20155303test进入文件夹→输入
md exp1建立“实验一”文件夹 → 输入
cd exp1进入“实验一”文件夹
步骤二:新建一个Hello.exe,写上相关代码后,将后缀改为Hello.java
import java.util.Scanner; public class Hello{ public static void main(String[] args){ System.out.println("Input your first name, please:"); Scanner s = new Scanner(System.in); String name = s.next(); System.out.println("Hello " + name + " !"); } }
步骤三:进行编译
输入命令
javac Hello.java,会发现exp1文件夹中出现一个Hello.class文件
运行Hello.class,结果如下图
(二)Idea下Java程序开发、调试
步骤一:在需要设置断点的一行左侧单击鼠标,出现红色圆点。比如如下在int sum=add(i,j);一行设置了断点
步骤二:Run→Debug...进行单步调试
步骤三:这些快捷图标从左数第二个至右依次是:程序向下执行一行、程序向下执行一行(不会进入官方类库的方法)、进入方法、跳出该方法、将程序运行到光标处
(三)练习:实现学生成绩管理功能
1. 程序设计学生管理系统需要有许多功能,最基本的要有输入学生姓名学号等信息、学生查询、成绩查询、成绩输入、按成绩排序等功能。存储这些信息就要用到数组以及接口的知识。
首先设计了一个Student类(包含学生各种信息)
package exp1; /** * Created by Administrator on 2017/4/7. */ import java.util.*; public class Student { private int num; private String name; private int age; private int java; private int math; private int sum; private int avg; public int getNum() { return num; } public void setNum(int num) { this.num = num; } 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 getJava() { return java; } public void setJava(int java) { this.java = java; } public int getmath() { return math; } public void setmath(int math) { this.math = math; } public int getSum() { return sum; } public void setSum() { this.sum = this.java+this.math; } public int getAvg() { return avg; } public void setAvg() { this.avg = this.sum/2; } public String toString(){ String str = "\t"+ this.num+"\t"+ this.name+"\t"+ this.age+"\t" + this.java+"\t"+ this.math +"\t"+ this.sum+"\t"+ this.avg; return str; } }
一个Admin类(实现各种功能)
public class Admin {//用来管理学生的一个类 String msg = "\t编号\t姓名\t年龄\tjava\tmath\t总分\t平均分"; public void print(Student[] arr){//刷新数据的方法 System.out.println(msg); for(int i=0;i<arr.length;i++){ if(arr[i]!=null){ arr[i].setSum(); arr[i].setAvg(); System.out.println(arr[i]); } } } public boolean exist(int num,Student stu){//判断学生是否存在的方法 if(stu!=null){ if(stu.getNum()==num){ return true; }else{ return false; } } return false; } public void Create(int num,String name,int age,Student[] arr){//添加学生的方法 Student stu = new Student(); stu.setNum(num); stu.setName(name); stu.setAge(age); int i = this.setIndex(arr); if(i==99999){ System.out.println("学生人数已添满,不能再添加了"); }else{ arr[i]=stu; } this.print(arr); } public int setIndex(Student[] arr){//返回数组为空的下标 for(int i=0;i<arr.length;i++){ if(arr[i]==null){ return i; } } return 99999; } public void find(int num,Student[] arr){//查询学生的方法 for(int i=0;i<arr.length;i++){//判断学生是否存在 if(this.exist(num,arr[i])==true){ System.out.println(msg); System.out.println(arr[i]); return; } } System.out.println("没有这个学生的存在"); } public void update(int num,String name,int age,Student[] arr){//更新学生基本信息的方法 for(int i=0;i<arr.length;i++){ if(this.exist(num, arr[i])==true){ arr[i].setName(name); arr[i].setAge(age); System.out.println("更新学生信息成功!"); this.print(arr); return; } } System.out.println("没找到这个学生更新信息失败"); } public void input(int num,Student[] arr){//输入学生成绩的方法 for(int i=0;i<arr.length;i++){ if(this.exist(num, arr[i])){ Scanner in = new Scanner(System.in); System.out.println("请输入"+arr[i].getName()+"java的成绩:"); if(in.hasNextInt()){//输入非整形数则不执行 arr[i].setJava(in.nextInt()); }else{ return; } System.out.println("请输入"+arr[i].getName()+"math的成绩:"); if(in.hasNextInt()){ arr[i].setmath(in.nextInt()); }else{ return; } this.print(arr); return; } } } public void courseSort(int num,Student[] arr){//根据指定科目排序的方法 if(num==1){ for(int i=0;i<arr.length;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]!=null&&arr[j]!=null){ if(arr[i].getJava()<arr[j].getJava()){ Student t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } } } }else if(num==2){ for(int i=0;i<arr.length;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]!=null&&arr[j]!=null){ if(arr[i].getmath()<arr[j].getmath()){ Student t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } } } } this.print(arr); } public void sumSort(Student[] arr){//根据总分排序的方法 for(int i=0;i<arr.length;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]!=null&&arr[j]!=null){ if(arr[i].getSum()<arr[j].getSum()){ Student t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } } } this.print(arr); } }
最后,设计一个测试类,通过调用构造函数验证程序。
package exp1; /** * Created by Administrator on 2017/4/7. */ import java.lang.*; import java.io.*; import java.util.*; public class Test {//主程序 public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("------请定义学生的人数:------"); Student[] stuArr = new Student[in.nextInt()]; Admin adminStu = new Admin(); while(true){ System.out.println("-----请选择你要执行的功能-----"); System.out.println("01:添加一个学生"); System.out.println("02:查找一个学生"); System.out.println("03:根据学生编号更新学生基本信息"); System.out.println("04:根据编号输入学生各门成绩"); System.out.println("05:根据某门成绩进行排序"); System.out.println("06:根据总分进行排序"); System.out.println("07:退出系统"); String number = in.next(); if(number.equals("01")){ System.out.println("请输入学生的编号:"); int num = in.nextInt(); System.out.println("请输入学生的姓名:"); String name = in.next(); System.out.println("请输入学生的年龄:"); int age = in.nextInt(); adminStu.Create(num,name,age,stuArr);//添加学生 }else if(number.equals("02")){ System.out.println("请输入学生的编号进行查找:"); int num = in.nextInt(); adminStu.find(num,stuArr);//查找学生 }else if(number.equals("03")){ System.out.println("请输入学生的编号:"); int num = in.nextInt(); System.out.println("请输入学生的姓名:"); String name = in.next(); System.out.println("请输入学生的年龄:"); int age = in.nextInt(); adminStu.update(num,name,age,stuArr);//更新学生基本信息 }else if(number.equals("04")){ System.out.println("执行输入成绩操作"); System.out.println("请输入学生编号:"); int num = in.nextInt(); adminStu.input(num, stuArr);//输入成绩 }else if(number.equals("05")){ System.out.println("执行根据某科目成绩排序操作"); System.out.println("请选择需要排序的科目名(1.java 2.math):"); int num = in.nextInt(); adminStu.courseSort(num,stuArr);//按科目排序 }else if(number.equals("06")){ System.out.println("执行根据总分排序操作"); adminStu.sumSort(stuArr);//按总分排序 }else if(number.equals("07")){ System.out.println("程序已退出"); //break; System.exit(0); } } } }
2. Idea运行与调试
输入功能
录入成绩的操作
根据总分进行排序
根据单科成绩进行排序
输入错误时自动忽略这次输入
二、实验过程中遇到的问题
问题一
在命令行下进行Java程序开发这个实验时,出现了如下图所示问题:解决方案:路径配置的问题,重新配置后不再出现问题
问题二
在编译Admin类时,出现如下图所示问题:解决方案:是编码出现的问题,IDEA与命令行所用编码不同,将编码改为UTF-8,可以运行成功。
三、实验感想和体会
这次实验让我回顾了命令行运行程序的过程,学习在IDEA下调试程序。今后的实验要提前预习。四、试验时间
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 20min | 16.7% |
设计 | 20min | 16.7% |
代码实现 | 30mim | 25.0% |
测试 | 20min | 16.7% |
分析总结 | 30min | 25.0% |
相关文章推荐
- 20155325《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告
- 20155336 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
- 20155218 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20145301《Java程序设计》实验报告一:Java开发环境的熟悉
- 20155238 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155237 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)
- 20155208 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155320《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155202 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155239《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155302 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 学号20155308 2016-2017-2 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20145211 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
- 2015309南皓芯《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155219 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- 20155211 《Java程序设计》实验一(Java开发环境的熟悉)实验报告