我是靠谱客的博主 甜甜睫毛膏,最近开发中收集的这篇文章主要介绍java程序设计实验一_20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

一、实验报告封面

课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩:

指导教师:娄嘉鹏 实验日期:2018年4月2日

实验时间:13:45 - 3:25

实验序号:实验一 实验名称:Java开发环境的熟悉

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

实验内容:

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

使用IDEA 编辑、编译、运行、调试Java程序。

实验要求:

没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;

完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);

实验报告中统计自己的PSP(Personal Software Process)时间;

严禁抄袭。

二、实验内容及步骤

(一)使用JDK编译、运行简单的java程序

建立“20165230exp1”的目录 ;

在“20165230exp1”目录下建立src,bin等目录;

在“20165230exp1”目录下通过javac -d bin src/Hello.java编译;通过java -cp bin tky.Hello运行,得到结果

再用tree查看目录结构,截图如下:

aaafc7d115a4c0782b5438adaa557914.png

代码提交码云:

e67eee8819d9f5f4e938e86d8c01844c.png

(二)IDEA下Java程序开发、调试

1、创建HelloJDB项目,输入如下代码:

package tky;

public class HelloJDB {

public static void main(String[] args) {

int i = 5;

int j = 6;

int sum = add(i, j);

System.out.println(sum);

sum = 0;

for (i = 0; i < 100; i++)

sum += i;

System.out.println(sum);

}

public static int add(int augend, int addend) {

int sum = augend + addend;

return sum;

}

}

2、运行代码

通过run运行(或快捷键Alt+Shift+F10):

0b3baedf1afef62f4ef958775d59e7d5.png

3、设置断点

通过在左侧行数栏单击行数(或快捷键Ctrl+F8)

d9472fc6bc48a3aef3c80ae9587c306f.png

4、单步调试

通过Debug开始调试(或使用Alt+Shift+F9快捷键)

使用Step Into(或快捷键F7)和 Step Over(或快捷键F8)继续向下运行程序

d98c99d5e7e71abb671da380bc47977d.png

注意区别

使用Step Into(或快捷键F7):单步执行,遇到子函数就进入并且继续单步执行

Step Over(或快捷键F8):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步

Run to Cursor:程序将运行至光标处

5、设置条件断点

设置断点后点击右键,在Condition栏里设置判断条件,此处将条件设置为i==50

07f6a507fd3ae0720f993ae51518742c.png

6、继续运行程序

通过Resume(或快捷键F9),或者直接点击红色方框处的图标,程序将从上一个断点运行至下一个断点(此处为运行至条件断点

4c61db9ceff621aa7599e31efb444550.png

(三)练习

1、设计思路

根据题目要求初步设计四个类:

首先设计一个Student类封装学生的基本信息,包括学号、姓名、成绩、平均成绩、总成绩

设计主程序,显示所要操作的界面与结果输出

具体设计一个Operation操作类,实现各种功能,包括增删改,排序,查找

最后设计一个wrongException测试类,用来测试异常情况

2、代码

(1)Student.java

class Student{

private int ID;

private String name;

private int grade;

public int getID(){

return ID;

}

public void setID(int ID){

this.ID=ID;

}

public String getName(){

return name;

}

public void setName(String name){

this.name=name;

}

public int getGrade() {

return grade;

}

public void setGrade(int grade) {

this.grade = grade;

}

}

(2)Test.java

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()];

Operation adminStu = new Operation();

while(true){

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.println("6:删除学生信息");

System.out.println("7:退出系统");

String number = in.next();

if(number.equals("1")){

System.out.println("请输入学生的学号:");

int num = in.nextInt();

System.out.println("请输入学生的姓名:");

String name = in.next();

System.out.println("请输入学生的成绩:");

int grade = in.nextInt();

try{

adminStu.Create(num,name,grade,stuArr);//添加学生

}

catch(wrongException e){

System.out.println("出现错误");

System.out.println(e.warnMess());

}

}else if(number.equals("2")){

System.out.println("请输入学生的学号进行查找:");

int num = in.nextInt();

try{

adminStu.find(num,stuArr);//查找学生

}

catch(wrongException e){

System.out.println("出现错误");

System.out.println(e.warnMess());

}

}else if(number.equals("3")){

System.out.println("请输入需要更改的学生的学号:");

int num = in.nextInt();

System.out.println("请输入学生的姓名:");

String name = in.next();

System.out.println("请输入学生的成绩:");

int grade = in.nextInt();

try{

adminStu.update(num,name,grade,stuArr);//更新学生基本信息

}

catch(wrongException e){

System.out.println("出现错误");

System.out.println(e.warnMess());

}

}else if(number.equals("4")){

System.out.println("执行输入成绩操作");

System.out.println("请输入学生的学号:");

int num = in.nextInt();

try {

adminStu.input(num, stuArr);//输入成绩

}

catch(wrongException e){

System.out.println("出现错误");

System.out.println(e.warnMess());

}

}else if(number.equals("5")){

System.out.println("根据成绩排序操作");

adminStu.Sort(stuArr);//按总分排序

}else if(number.equals("6")) {

System.out.println("请输入需要删除的学生学号");

int num = in.nextInt();

try {

adminStu.delete(num, stuArr);

}

catch(wrongException e){

System.out.println("出现错误");

System.out.println(e.warnMess());

}

} else if(number.equals("7")){

System.out.println("程序已退出");

//break;

System.exit(0);

}

}

}

}

(3)Operation.java

import java.util.*;

public class Operation {//用来管理学生的一个类

public boolean exist(int num, Student stu) {//判断学生是否存在的方法

if (stu != null) {

if (stu.getID() == num) {

return true;

} else {

return false;

}

}

return false;

}

public void Create(int num,String name,int grade,Student[] arr)throws wrongException{//添加学生的方法

Student stu = new Student();

stu.setID(num);

stu.setName(name);

stu.setGrade(grade);

int i = this.setIndex(arr);

if(i==99999){

throw new wrongException("学生人数已添满,不能再添加了");

}

else {

arr[i] = stu;

}

System.out.println("学号:" + arr[i].getID() + " 姓名:" + arr[i].getName() + " 成绩: " + arr[i].getGrade());

}

public int setIndex(Student[] arr){//返回数组为空的下标

for(int i=0;i

if(arr[i]==null){

return i;

}

}

return 99999;

}

public void delete(int num, Student[] arr) throws wrongException {//删除学生成绩

for (int i = 0; i < arr.length; i++) {

if (this.exist(num, arr[i])) {

if (arr[i].getID() == num) {

arr[i] = null;

System.out.println("已成功删除");

return;

}

}

}

throw new wrongException("没有这个学生存在");

}

public void find(int num, Student[] arr) throws wrongException {//查询学生的方法

for (int i = 0; i < arr.length; i++) {//判断学生是否存在

if (this.exist(num, arr[i])) {

System.out.println("有这个学生,信息如下");

System.out.println("学号:" + arr[i].getID() + " 姓名:" + arr[i].getName() + " 成绩: " + arr[i].getGrade());

return;

}

}

throw new wrongException("没有这个学生的存在");

}

public void update(int num, String name, int grade, Student[] arr) throws wrongException {//更新学生基本信息的方法

for (int i = 0; i < arr.length; i++) {

if (this.exist(num, arr[i])) {

arr[i].setName(name);

arr[i].setGrade(grade);

System.out.println("更新学生信息成功!");

return;

}

}

throw new wrongException("没找到这个学生更新信息失败");

}

public void input(int num, Student[] arr) throws wrongException {//输入学生成绩的方法

for (int i = 0; i < arr.length; i++) {

if (this.exist(num, arr[i])) {

System.out.println("请输入成绩:");

Scanner in = new Scanner(System.in);

if (in.hasNextInt()) {//输入非整形数则不执行

arr[i].setGrade(in.nextInt());

} else {

return;

}

System.out.println("学号:" + arr[i].getID() + " 姓名:" + arr[i].getName() + " 成绩: " + arr[i].getGrade());

return;

}

}

}

public void Sort(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].getGrade() < arr[j].getGrade()) {

Student t = arr[i];

arr[i] = arr[j];

arr[j] = t;

}

}

}

}

for (int i = 0; i < arr.length; i++) {

if (arr[i] != null) {

System.out.println("学号:" + arr[i].getID() + " 姓名:" + arr[i].getName() + " 成绩: " + arr[i].getGrade());

}

}

}

}

(4)wrongException.java

class wrongException extends Exception { //自定义异常

String Message;

public wrongException(String s) {

Message = s;

}

public String warnMess( ){

return Message;

}

}

3、运行结果

命令行实现:

功能1:添加一个学生

47e212945de6fb20b67cf4e1eac2b966.png

功能2:查找一个学生

fa701f5d120d21e7b39aeee3770390ca.png

功能3:更新学生信息

18e96b2524c0ae67dc2debd068520dbd.png

功能4:录入学生成绩

7f7b9f2c64e22abf2054432b1fb60e3e.png

功能5:根据成绩排序

1e1f80a219a831a6a5daa9b83c548e14.png

功能6:删除一个学生

d04789ff9004512507242df917d6d1ba.png

IDEA测试:

功能1调试:

ae5237b673125991fda789eb8fd9b6a4.png

2dc0415f480e20ca1dd80070dcb88548.png

功能2调试:

06b26e5f3c137fc87ee221cb2cf294a7.png

0a1f0d940a252125299af0095c3d1483.png

异常情况:

23c432535a5d89034a12ee3ccbdac1e6.png

c8f5d322c1bd3227794e1de2c2de986b.png

4、实验遇到的问题

问题1:录入同样的学号,没有提示添加同一个人的错误,而是继续往里添加

问题1解决方案:通过throw添加抛出异常情况,解决问题

问题2:在测试异常的时候出现两句"学生已存在,不能添加"

问题2解决方案:发现是将该句写入了for循环里

问题3:排序功能无法实现

问题3解决方案: 通过检查代码发现是在添加学生的方法里,没有实现上一个学生添加完后保存进数组,而是在添加下一个后将上一个覆盖,最后通过反复修改与测试,成功实现排序功能

5、实验心得

本次实验需要实现的要求比较多,一开始拿到题目时没有思路,通过学习教材和学长学姐的博客,找到了设计基本的思路:首先根据需求构建框架,进行抽象与封装;然后设计主类与具体实现的类;最后还需要进行异常测试。在实验的过程中,遇到了很多问题,通过在网上查询和询问同学都一一解决。我意识到写一个程序就是逐步精益求精的过程,刚开始程序只能实现简单的功能,通过慢慢向功能类中添加功能代码并测试,再加上异常测试,不断的完善与进步。同时还有许多知识需要我不断的学习与积累,才能实现功能的强大。

6、码云代码链接

7、PSP时间

步骤

耗时

百分比

|需求分析 | 10min | 2% | |

| 设计 | 40min | 10% |

| 代码实现 | 30min | 8% | |

|分析总结 | 120min | 30% |

最后

以上就是甜甜睫毛膏为你收集整理的java程序设计实验一_20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告...的全部内容,希望文章能够帮你解决java程序设计实验一_20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部