20145328 《Java程序设计》实验一实验报告
实验名称
Java开发环境的熟悉(Windows + IDEA)
实验内容
使用JDK编译、运行简单的Java程序;
使用IDEA 编辑、编译、运行、调试Java程序。
实验步骤
(一)命令行下Java程序开发
在键盘上使用win + R打开运行,输入cmd进入命令行模式,如下图所示
进入工作路径,创建实验路径20145328,进入实验路径,建立实验一路径exp1,用记事本建立Hello.java文件并保存,对Hello.java文件进行编译并运行,过程以及运行结果如下图所示
(二)IDEA下Java程序开发、调试
在IDEA下新建项目如下图1所示,然后在下图2直接点击next,然后到了下图3中的时候自行设置项目路径以及项目名即可
在新建的项目中新建package,新建java class文件,在打开的文件中输入如下代码
package experiment_1;
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;
}
}
因为若在新建的package下新建java class文件,IDEA会自动在java文件中编写好package,所以第一行中的package名会根据新建的package名不一样而不同,会比直接用JDK编译方便很多,上面代码的运行结果如下图所示
建立断点并进行调试,在IDEA中可以直接点击需要设置断点的代码行最左端,设置好断点后,点击右上角瓢虫图标,或点击Run-Debug便可对程序进行调试,设置断点后,程序会直接运行到断点处停下。在调试界面下,会在每一行代码的右端显示变量的情况。而下方显示的调试结果的上面会有一行工具栏,可以在里面进行逐步运行等操作
练习4
package experiment_1;
/**
* Created by Administrator on 2016/4/10.
*/
import java.lang.*;
import java.io.*;
import experiment_1.*;
public class Main
{
public static void main(String[] args)
{
while(true)
{
Menu.paint();
int ctrlTag = Console.readInt();
switch(ctrlTag)
{
case 1:
{
Menu.action1();
break;
}
case 2:
{
Menu.action2();
break;
}
case 3:
{
Menu.action3();
break;
}
case 4:
{
Menu.action4();
break;
}
case 0:
{
System.exit(0);
break;
}
}
}
}
}
class Student
{
private int number;
private String name;
private int english;
private int math;
private int computer;
private int average;
private int total;
public Student()
{
}
public Student(int number, String name, int english, int math, int computer)
{
this.number = number;
this.name = name;
this.english = english;
this.math = math;
this.computer = computer;
total = english + math + computer;
average = total/3;
}
public int getNumber()
{
return number;
}
public String getName()
{
return name;
}
public int getEnglish()
{
return english;
}
public int getMath()
{
return math;
}
public int getComputer()
{
return computer;
}
public int getAverage()
{
return average;
}
public int getTotal()
{
return total;
}
}
class StudentSet
{
private static final int maxLen = 1000;
private static int len = 0;
private static Student[] data = new Student[maxLen];
public static int getMaxLen()
{
return maxLen;
}
public static int getLen()
{
return len;
}
public static Student getData(int index)
{
return data[index];
}
public static int addData(Student newData)
{
if (len < maxLen)
{
data[len] = newData;
len++;
return 0;
} else
{
return -1;
}
}
public static int search(int number)
{
for(int i = 0; i < len; i++)
{
if (data[i].getNumber() == number)
{
return i;
}
}
return -1;
}
public static int delete(int number)
{
for (int i = 0; i < len; i++)
{
if (data[i].getNumber() == number)
{
for (int j = i + 1; j < len; j++)
{
data[j-1] = data[j];
}
len--;
return 0;
}
}
return -1;
}
}
class Console
{
public static int readInt()
{
int result = 0;
try{
String temp =new BufferedReader(new InputStreamReader(System.in)).readLine();
result = Integer.parseInt(temp);
} catch (Exception e)
{
System.out.println("Error: "+e);
}
return result;
}
public static String readSting()
{
String result = null;
try{
result = new BufferedReader(new InputStreamReader(System.in)).readLine();
} catch (Exception e)
{
System.out.println("Error: "+e);
}
return result;
}
}
class Menu
{
public static void paint()
{
clrscr();
for (int i = 0; i < 80; i++)
{
System.out.print('=');
}
System.out.println();
System.out.println(" 学生成绩管理系统 ");
System.out.println();
System.out.println(" 1 输入记录 2 输出所有记录");
System.out.println(" 3 删除记录 4 查找记录");
System.out.println(" 0 退出");
for (int i = 0; i < 80; i++)
{
System.out.print('=');
}
System.out.println();
System.out.print("请输入命令:");
}
public static int action1()
{
while(true)
{
clrscr();
System.out.print("待输入记录的学号(输入“-1”退出):");
int number = Console.readInt();
if (number != -1)
{
System.out.print(" *姓名:");
String name = Console.readSting();
System.out.print(" *英语:");
int english = Console.readInt();
System.out.print(" *数学:");
int math = Console.readInt();
System.out.print(" *计算机:");
int computer = Console.readInt();
Student newData = new Student(number, name, english, math, computer);
if (StudentSet.addData(newData) == -1)
{
System.out.println("数据溢出!");
return -2;
}
} else
{
return -1;
}
}
}
public static void action2()
{
clrscr();
if (StudentSet.getLen() == 0)
{
System.out.println("没有记录!");
} else
{
System.out.println(" 数学|英语|计算机|平均|总计");
for (int i = 0; i < StudentSet.getLen(); i++)
{
System.out.println("学号:"+StudentSet.getData(i).getNumber()+" 姓名:"+StudentSet.getData(i).getName());
System.out.println(" "+StudentSet.getData(i).getMath()+" "+StudentSet.getData(i).getEnglish()+
" "+StudentSet.getData(i).getComputer()+" "+StudentSet.getData(i).getAverage()+" "+StudentSet.getData(i).getTotal());
}
}
}
public static void action3()
{
while(true)
{
clrscr();
System.out.print("请输入要删除记录的学号(输入“-1”退出):");
int number = Console.readInt();
if (number != -1)
{
if(StudentSet.delete(number) == -1)
{
System.out.println("没有找到相应的记录!");
return;
} else
{
System.out.println("删除记录成功!");
}
} else
{
return;
}
}
}
public static void action4()
{
clrscr();
System.out.print("请输入要查找记录的学号:");
int number = Console.readInt();
int i;
if ((i = StudentSet.search(number)) != -1)
{
clrscr();
System.out.println(" 数学|英语|计算机|平均|总计");
System.out.println("学号:"+StudentSet.getData(i).getNumber()+" 姓名:"+StudentSet.getData(i).getName());
System.out.println(" "+StudentSet.getData(i).getMath()+" "+StudentSet.getData(i).getEnglish()+
" "+StudentSet.getData(i).getComputer()+" "+StudentSet.getData(i).getAverage()+" "+StudentSet.getData(i).getTotal());
} else
{
System.out.println("没有找到相应的记录!");
}
}
public static void clrscr()
{ //temp function
System.out.println();
System.out.println();
}
}
运行结果如下
心得体会
PSP(Personal Software Process)时间:
步骤
耗时
百分比
需求分析
1h30min
42.8%
设计
30min
14.2%
代码实现
1h
28.5%
测试
20min
9.6%
分析总结
10min
4.9%
说实话,本次实验里,如果单单参照实验内容的话,那么本次实验算是比较简单的,最多也就是之前没有使用过断点进行程序调试,都是直接进行运行并对照着运行结果来进行调试。所以总体来说单就实验内容而言,并没有什么难度。
难度最大的也就是所做的练习,而这个练习说简单也简单,说难也难,毕竟学生成绩管理系统这个东西,能大能小,大了可以连图形界面都做出来,小了的话完全可以只用一个数组让输入字符以及成绩,然后输出。
所以最开始在实验内容完成开始做练习进行需求分析的时候就耗费了很长的时间,因为实在是在纠结这个题目的大小,最后思考许久决定这次的练习只做出最简单的增删查改,毕竟这样才能算是实现管理这个功能。