20155318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
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% |
20155318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告的更多相关文章
- 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
- 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...
- 20165205 实验一 java开发环境的熟悉 实验报告
20165205 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘喆君 学号:20165205 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...
- 实验一《开发环境的熟悉》&实验二《固件设计》
20145312&20145338 实验一<开发环境的熟悉>&实验二<固件设计> 合作博客链接:http://www.cnblogs.com/yx2014531 ...
- 20162327实验一Java开发环境的熟悉实验报告
20162327 <程序设计与数据结构>第一次实验报告 基础知识 1.JDB的使用 使用JDB调试程序需要以下五个步骤: 1.设置断点 stop in 2.run 3.print 4.ne ...
- 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
20145233 <Java程序设计>实验报告一:Java开发环境的熟悉 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...
- 20175236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:温丰帆 学号:20175236 指导教师:娄嘉鹏 实验日期:2019年4月2日 实验时间:13:45 - 15:25 实验序号:实验一 ...
- 20165234 《Java程序设计》实验一 Java开发环境的熟悉
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘津甫 学号:20165234 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:15:35 - 17:15 实验序 ...
- 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉
2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...
随机推荐
- python3程序设计基本方法
实例 6.升级维护 总结: 打了多年的游击战.突然经过教官的指导,觉得很受益,程序自学需要总结和交流.
- Io性能分析
一.iostat使用说明 1.命令使用方法 使用ixstat –x 1 可以每隔1秒钟采集所有设备的io信息.其中的1类似于使用“vmstat 1”后面的1. 2.命令格式说明 ―――――――――― ...
- css3动画相关笔记
1.$(".aa").delay(2500).animate({width:0}); // 延迟 2.setTimeout(function(){ --> css3 anim ...
- HTML的CoreText流畅度超过WebView。CoreText第三方框架DTCoreText的介绍
为什么要用CoreText(富文本)来取代WebView去显示内容.主要的原因就WebView有很大的问题,性能,FPS,卡顿,与原生不搭.这些都是大问题. WebView的缺点 1.直接使用WebV ...
- 2594. [WC2006]水管局长数据加强版【LCT+最小生成树】
Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一 ...
- Gluon 参数读取
ndarray: save , load from mxnet import nd from mxnet.gluon import nn x = nd.ones(3) # nd.save('x',x) ...
- Kali-linux其他信息收集手段
上面介绍了使用不同的工具以操作步骤的形式进行了信息收集.在Kali中还可以使用一些常规的或非常规方法来收集信息,如使用Recon-NG框架.Netdiscover工具和Shodan工具等.本节将介绍使 ...
- virtualbox+vagrant学习-4-Vagrantfile-3-Minimum Vagrant Version
Minimum Vagrant Version 可以在Vagrantfile中指定一组vagrant版本需求,以强制人们使用带有Vagrantfile文件的vagrant特定版本.这可以帮助解决使用带 ...
- Nexus修改admin密码及其添加用户
Nexus之所以修改密码,是为了安全起见,个人学习的话,本地windows或者虚拟机即可,外网服务器建议将密码修改复杂点,而且强烈建议端口不要8081,最好将其改为其他的.同样也是为了安全起见. 添加 ...
- Autoware 安装流程
1. 前言 最近一个项目采用Autoware的无人驾驶系统,在安装工控机的过程中,踩了不少坑,留下记录,造福后人. 相关的下载在我的百度网盘,大家自行下载.链接: https://pan.baidu. ...