20155233 实验一 Java开发环境的熟悉(Linux + IDEA)

实验内容

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

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

实验步骤

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

1.命令行下的程序开发

1.新建文件夹:

打开Linux下的终端控制(Ctrl+Alt+T) → 输入cd 20155233命令进入20155233目录 → 输入md 20155233建立以自己学号命名的文件夹 → 输入cd 20155233进入文件夹 → 输入md exp1建立“实验一”文件夹 → 输入cd exp1进入“实验一”文件夹

2.新建代码、编辑、运行:

输入gedit 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编译产生Hello.class,

输入java Hello产生以下画面:

(二)使用IDEA编辑、编译、运行、调试Java程序

1.打开Linux终端,输入./idea/bin/idea.sh打开IDEA,新建一个项目,放在HOME/20155233/20155233/exp1下。

2.新建一个HelloWorld类,输入以下代码:

public class HelloWorld {
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;
}
}

3.断点调试:

在需要设置断点的一行左侧单击鼠标,出现红色圆点。在上方Run菜单中找到Debug进行调试(参考下图)。

(三)实现学生成绩管理功能,并进行测试

1.设计思路,分布实现学生成绩管理中的各个功能,包括添加学生、删除学生、修改学生、查询学生、排序学生等。

2.设计步骤:

<1>设计Student类:

class Student {

    String name;

    String studentId;

    String sex;

    int grade;

    public Student(String name,String studentId,String sex,int grade){

        this.name= name;

        this.studentId= studentId;

        this.sex = sex;

        this.grade = grade;

    }

    public int getGrade(){

        return grade;

    }

    public String getName(){

        return name;

    }

    public String getSex(){

        return sex;

    }

    public void setGrade(int g){

        this.grade = g;

    }

    public String getStudentId(){

        return studentId;

    }

}

这里面定义了一些得到当前学生对象数据的一些get方法,和成绩修改的set方法。

<2>做一个比较简单的界面:


System.out.println("***************"); 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("***************"); System.out.println("您想选择的操作是:");

<3>各功能的实现

添加学生信息

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

                Scanner Sname = new Scanner(System.in);

                String name = Sname.nextLine();

                System.out.print("请输入学生的性别:");

                Scanner Ssex = new Scanner(System.in);

                String sex = Ssex.nextLine();

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

                Scanner SId = new Scanner(System.in);

                String studentId = SId.nextLine();

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

                Scanner Sgrade = new Scanner(System.in);

                int grade = Sgrade.nextInt();

                StudentList.add(new Student(name,studentId,sex,grade));

                System.out.println("添加成功!!!!!");

删除学生信息

                System.out.print("请告诉我需要删除学生的学号:");

                Scanner Sid = new Scanner(System.in);

                String SstudentId = Sid.nextLine();

                boolean isfindDelete = false;

                for (int i = 0; i < StudentList.size(); i++) {

                    if(SstudentId.equals(StudentList.get(i).getStudentId())){

                        System.out.println("发现了该学生,正在删除...");

                        StudentList.remove(i);

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

                        isfindDelete =true;

                    }

                }

                if(!isfindDelete){

                    System.out.println("抱歉,没有找到");

                }

修改学生成绩

System.out.print("请告诉我需要修改成绩学生的学号:");

                Scanner GId = new Scanner(System.in);

                String GstudentId = GId.nextLine();

                boolean isfindChange = false;

                for (int j = 0; j < StudentList.size(); j++) {

                    if(GstudentId.equals(StudentList.get(j).getStudentId())){

                        System.out.println("发现了该学生,正在修改...");

                        System.out.println("学生原成绩为"+StudentList.get(j).getGrade());

                        System.out.print("请输入修改后学生的成绩:");

                        Scanner Ggrade = new Scanner(System.in);

                        int grade2 = Ggrade.nextInt();

                        StudentList.get(j).setGrade(grade2);

                        System.out.println("修改成功!!!");

                        isfindChange =true;

                    }else{

                    }

                }

                if(!isfindChange){

                    System.out.println("抱歉,没有找到");

                }

                select(StudentList);

                break;

查询学生信息

System.out.print("请告诉我需要查询学生的学号:");

                Scanner CId = new Scanner(System.in);

                String CstudentId = CId.nextLine();

                boolean isfindData = false;

                for (int i = 0; i < StudentList.size(); i++) {

                    if(CstudentId.equals(StudentList.get(i).getStudentId())){

                        System.out.println("名字:"+StudentList.get(i).getName());

                        System.out.println("性别:"+StudentList.get(i).getSex());

                        System.out.println("学号:"+StudentList.get(i).getStudentId());

                        System.out.println("成绩:"+StudentList.get(i).getGrade());

                        isfindData = true;

                    }

                }

                if(!isfindData){

                    System.out.println("抱歉,没有找到");

                }

排序学生成绩

这个功能目前没有实现,将在后续的学习在完善并补充。

System.out.print("排序结果为:");
for (int i = 0; i < StudentList.size(); i++) {
for (int j = i+1; j < StudentList.size(); j++) {
if(StudentList.get(i).getGrade()<StudentList.get(j).getGrade())
XXX;(排序算法)
}
} for (int i = 0; i < StudentList.size(); i++) { System.out.printf("名字:"+StudentList.get(i).getName()); System.out.printf(" "); System.out.printf("性别:"+StudentList.get(i).getSex()); System.out.printf(" "); System.out.printf("学号:"+StudentList.get(i).getStudentId()); System.out.printf(" "); System.out.println("成绩:"+StudentList.get(i).getGrade()); }

实验感想

本次实验是对java基础的一次总结,以及对Linux基础的一次掌握,在实现学生成绩管理功能过程中遇到好多问题,主要包括以下:

1.各功能之间如何循环进入:把所有的实现过程全部放在select();方法中,这样可以避免选择完了一个操作后不能继续其他操作。大部分的操作都是依靠for循环来遍历操作,方便快捷。

2.学生信息如何存取、添加:通过static List<Student> StudentList = new LinkedList<Student>()建立链表存储信息。

3.在实现排序成绩中遇到以下问题:

 for (int i = 0; i < StudentList.size(); i++) {
for (int j = i+1; j < StudentList.size(); j++) {
if(StudentList.get(i).getGrade()<StudentList.get(j).getGrade()) Collections.swap(StudentList.get(i),StudentList.get(j));
}
}

采用Collections中的swap,但在调用中出现编译不通过,该问题通过参考书中的第9章以及多方修改,但未能解决,打算在以后的学习中再进行添加。

总结:磨刀不误砍柴工,在实验前一定要养成一个很好的预习,通过参考、搜索网络等要预先掌握解决问题的要点。本次实验在实现学生成绩功能上,主体框架参考网络,我通过修改达到自己所需的目的,从而减小了设计用时,效率明显增加。

PSP(Personal Software Process)时间:

步骤 耗时 百分比
需求分析 5min 3.6%
设计 10min 7.1%
代码实现 90min 64.3%
测试 20min 14.3%
分析总结 15min 10.7%

20155233 实验一 Java开发环境的熟悉(Linux + IDEA)的更多相关文章

  1. 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)

    20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...

  2. 实验一 Java开发环境的熟悉(Linux + Eclipse)

    学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...

  3. 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然

    https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...

  4. 20145203盖泽双实验一 Java开发环境的熟悉(Linux + Eclipse)

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  5. 《JAVA程序设计》20155214 实验一 Java开发环境的熟悉(Linux + IDEA)

    <JAVA程序设计> 实验一 Java开发环境的熟悉(Linux + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...

  6. 20155235 《Java程序设计》 实验一 Java开发环境的熟悉(Linux + Eclipse)

    20155235 <Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编 ...

  7. 20145303 实验一 Java开发环境的熟悉(Linux + Eclipse)

    20145303 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验题目(4):实现学生成绩管理功能,并进行测试 思路: 对于实现学生成绩管理(student performanc ...

  8. 20162303 实验一 Java开发环境的熟悉(Linux + Eclipse)

    北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 石亚鑫 学号:20162303 成绩: 2分 指导教师:娄嘉鹏 王志强 实验日期:3月17日 实验密 ...

  9. 20162321 实验一 Java开发环境的熟悉(Linux + Eclipse)

    北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王彪 学号:20162321 指导教师:娄嘉鹏 王志强 实验日期:3月25日 实验密级: 非密级 预 ...

随机推荐

  1. 今天调试一个open有个小启发

    从别处抄来一个代码 mode是:O_WRONLY 以只写方式打开文件 而实际上我用的是read操作,所以老是读出-1 检查了很久才发现是这个错误:O_WRONLY 以只写方式打开文件 -> O_ ...

  2. TreadingTCPServer

    TreadingTCPServer实现的socket服务器内部会为每个client创建一个线程,该线程用来和客户端进行交互. 1.TreadingTCPServer基础 使用TreadingTCPSe ...

  3. MAC软件工具下载

    CRThttps://www.cnblogs.com/codegeekgao/p/8277015.html navicathttp://xclient.info/search/s/navicat/?t ...

  4. SOJ 1085 SCU 简单计算几何

    BackGroud Year 2003不知你是否注意到,四川大学每年都会在各宿舍楼里放老鼠药,以解决学生宿舍的老鼠问题. 今年,学校的领导为了更好的展开灭鼠的行动,引进了一项新的技术:SCU(Supe ...

  5. 消息中间件--"rocketmq"01之环境搭建

    前置知识 ssh工具 连接linux工具SecureCRT 颜色设置,参考 中文乱码,参考 Linux相关知识 centos7 防火墙firewalld的基本使用,参考 启动: systemctl s ...

  6. python迭代、列表生成式

    迭代: 迭代对象(Iterable),可以直接作用于for循环的对象,如list / tuple / dict / set / str /等集合数据类型可以直接作用于for循环 >>> ...

  7. rabbitmq关于guest用户登录失败解决方法

    刚安装完rabbitmq,登录的时候出现了: login  failed问题: 查看rabbitmq的文档,发现在3.3.1以后的版中,处于安全的考虑,guest这个默认的用户只能通过localhos ...

  8. Spring中使用属性文件properties的两种方式

    实际项目中,通常将可配置的参数放到属性文件中,例如数据库连接信息.redis连接信息等,便于统一管理.然后通过IoC框架spring将其加载到上下文中,使得程序可以直接使用. 创建mysql.prop ...

  9. PAT——1037. 在霍格沃茨找零钱

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...

  10. java工作流引擎 Activiti6.0 websocket 即时聊天发图片文字 好友群组 SSM源码

    时通讯:支持好友,群组,发图片.文件,消息声音提醒,离线消息,保留聊天记录 工作流模块--------------------------------------------------------- ...