20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
实验要求
- 使用JDK编译、运行简单的Java程序。
- 使用IDEA编辑、编译、运行、调试Java程序
实验内容
- 命令行下Java程序开发
- IDEA下Java程序开发、调试
- 实现学生成绩管理功能,并进行测试。
实验步骤(实现学生成绩管理功能,并进行测试)
前期准备
- Java相关基础知识储备,参考书籍Java学习笔记(第8版),参考博客[20145213祁玮](http://www.cnblogs.com/qiwei/)
- 预先安装好JDK,并配置好环境变量
- 下载好IntelliJ IDEA Community Edition 15.0.3,安装完毕后在IDEA界面中配置JDK,为后期运行IDEA调试程序做准备
功能分析 - 学生成绩管理系统要实现存储学生信息及相关成绩功能。
- 学生成绩管理系统要实现根据学生信息查找特定学生成绩功能。
- 学生成绩管理系统要实现计算各科目成绩平均数功能。
代码结构分析
1.需要一个功能类,提供各种方法,例如计算平均数,查找学生等。封装操作对象的流程.
2.需要一个主类,提供功能选择界面,负责人机互动,调用方法。
设计 - 功能类设计
- 先定义学生学号,姓名,各科目成绩等数据成员
- 再建立一个数组,索引范围为班级学生人数
- 设计方法,根据功能分析可以判断要设计三个方法,分别实现添加学生信息,查询学生信息,计算平均值。
- 主类设计
- 因为设计功能类为公开类,因此在主类开始先创建一个功能类实例。
- 利用
switch
语法,了解用户的需求功能,准确调用相关方法。
代码实现(IDEA环境下开发):
- 打开IDEA,创建“shiyan”包,将功能类代码与主类代码打包至其下。
- 分别创建主类
test
与功能类score
- 主类代码如下:
public class test{
public static void main(String[] args){
score sc = new score();
Scanner input = new Scanner(System.in);
for(;;){
System.out.println("学生成绩管理系统");
System.out.println("1.添加学生成绩");
System.out.println("2.查询指定学生成绩");
System.out.println("3.查询指定个科目平均成绩");
int xz =input.nextInt();
switch (xz){
case 1:
System.out.println("添加学生成绩");
score m= new score();
System.out.println("姓名:");
m.name=input.next();
System.out.println("学号:");
m.id=input.nextInt();
System.out.println("Chinese:");
m.Chinese=input.nextDouble();
System.out.println("English:");
m.English=input.nextDouble();
System.out.println("Math:");
m.Math=input.nextDouble();
sc.add(m);
break;
case 2:
System.out.println("请输入学生的学号");
int id =input.nextInt();
sc.selectById(id);
break;
case 3:
sc.showAvg();
break;
}
}
}
}
功能类代码如下:
package shiyan;
import javax.swing.text.AbstractDocument.Content;
public class score {
public int id;
public String name;
public double Chinese;
public double English;
public double Math;
score[] n = new score[50];
public void add(score m) {
for (int i = 0; i < n.length; i++) {
if (n[i] == null) {
n[i] = m;
break;
}
}
}
public void selectById(int id) {
for (int i = 0; i < n.length; i++) {
if (n[i] != null && n[i].id == id) {
System.out.println("姓名" + n[i].name + "Chinese" + n[i].Chinese + "Ehglish" + n[i].English + "Math" + n[i].Math);
}
}
}
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 2;
for (int i = 0; i < n.length; i++) {
number=i;
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
} else
break;
}
System.out.println("Chinese的平均分:" + sum1/number + "English的平均分:" + sum2 /number + "Math的平均分:" + sum3 / number);
}
}
调试
一开始我求平均数的方法代码如下:
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 2;
for (int i = 0; i < n.length; i++) {
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
}
System.out.println("Chinese的平均分:" + sum1 / i + "English的平均分:" + sum2 / i + "Math的平均分:" + sum3 / i);
}
}
执行结果如下
第一次求平均数是正确,但接下来竟不断进行求平均数,很明显没有在适宜的时机退出for循环语句,因此我做出以下代码改变:
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 2;
for (int i = 0; i < n.length; i++) {
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
}
else
break;
}
System.out.println("Chinese的平均分:" + sum1 / (i-1) + "English的平均分:" + sum2 / (i-1) + "Math的平均分:" + sum3 / (i-1));
}
所以做出这样改变,我是想在n[i]读取到null的时候退出for循环,这个代码放在C语言中是没有问题的,但唉Java中却出现编译失败,显示未定义i。后来在咨询同学后才明白这个i我是放在for循环中定义的,在退出for循环后,i就定义失效了。因此,我又做出如下改变:
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 0;
for (int i = 0; i < n.length; i++) {
number=i;
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
} else
break;
}
System.out.println("Chinese的平均分:" + sum1/number + "English的平均分:" + sum2 /number + "Math的平均分:" + sum3 / number);
}
最后总执行情况如下:
分析总结
这次抽到的题目是设计学生成绩管理系统,其实是一个比较老的题目了。早在学习C语言的时候,就已经做过类似的题目了。所以在设计代码之初,脑中就有一个整体大概构想了。这次用Java设计代码后,也是挺意外发现确实和C语言有一些共同之处,调用类中的方法和调用模块函数,类似的流程控制格式等。
体会
本次实验是学习Java基础知识,照敲书中代码这么久来第一次实战阅兵,我在设计之初时会有一种无处下嘴时的迷茫。先设计主类还是功能类?每次()中要填写什么?因为是用IDEA编译,边编译边纠错,一方面给我极大便利的同时,另一方面也莫名增加我心理压力。对Java代码基础格式我也不是特别熟,往往是一遍抱着课本一遍编译,照葫芦画瓢。
PSP(Personal Software Process)时间
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 10min | 8.3% |
设计 | 30min | 24.9% |
代码实现 | 50min | 41.5% |
测试 | 15min | 12.45% |
分析总结 | 15min | 12.45% |
20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)的更多相关文章
-
20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告
20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...
-
20145316《Java程序设计》实验一:Java开发环境的熟悉(Windows + IDEA)
20145316<Java程序设计>实验一:Java开发环境的熟悉(Windows + IDEA) 一.DOC命令行下Java程序开发 1.打开cmd,输入 mkdir 20145316命 ...
-
20145239 实验一 Java开发环境的熟悉(Windows + IDEA)
实验一 Java开发环境的熟悉(Windows + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序:2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JV ...
-
20145301《Java程序设计》实验报告一:Java开发环境的熟悉
20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习& ...
-
2018-2019-2-20175303 实验二 《Java开发环境的熟悉》实验报告
2018-2019-2-20175303 实验二 <Java开发环境的熟悉>实验报告 姓名:柴轩达 学号:20175303 班级:1753 实验课程:JAV ...
-
2018-2019-2-20175225 实验二《Java开发环境的熟悉》实验报告
姓名:张元瑞 学号:20175225 班级:1752 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2019.4.16 指导老师:娄嘉鹏 实验内容 测试点一 - " ...
-
20145312《Java第一次实验报告》
20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...
-
20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
-
20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)
20145212<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDE) 实验内容及步骤 1.命令行下的JAVA程序开发 建立并进入实验目录: 撰写简单的Hello ...
随机推荐
-
Winform 文本框多线程赋值
delegate void SetTextCallback(string text); private void showClientMsg(string text) { // InvokeRequi ...
-
jQuery中attr()方法用法实例
本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元 ...
-
【你吐吧c#每日学习】10.29 C#字符串类型&;Common operators
backslash \反斜杠 escape sequence 转义字符 double quote 双引号 new line 新行字符 Bell アラート Console.WriteLine(" ...
-
centos5.5關閉ssh保留運行的程序
SSH会话关闭时,ssh所关联的pty关闭,系统会给这个pty所关联的session中的所有进程发送SIGHUP信号, SIGHUP的默认信号处理程序是终止进程,除非进程自己处理了SIGHUP. 解决 ...
-
dojo表格的一些属性
dojo表格的属性总结归纳 1.表格无数据提示 data-dojo-props="noDataMessage:'无数据...'" 2.表格的高度自动适应 autoHeight=&q ...
-
Linux 常用指令整理
1. 查看端口占用情况 netstat -tunlp 2.压缩文件 文件夹 tar -cf 文件名.tar 文件夹 gzip 文件名.tar 文件 tar 文件名 文件1 文件2 ... gzip t ...
-
Leetcode11 Container With Most Water 解题思路 (Python)
今天开始第一天记录刷题,本人编程小白,如果有写的不对.或者能更完善的地方请个位批评指正! 准备按tag刷,第一个tag是array: 这个是array的第一道题:11. Container With ...
-
ku8eye 安装概览
ku8eye web 开发环境 当前版本的 ku8eye web开发环境 以docker镜像方式提供,下载地址为: http://pan.baidu.com/s/1gdYk4CV 文件名说明: ku8 ...
-
安装 Xshell 5/6 时出现.dll以及0xc000007错误的解决
安装 Xshell 5/6 时出现.dll以及0xc000007错误的解决 问题:缺少 mfc110.dll或者是其他.dll文件以及应用程序运行错误,如下所示. 方法: 一种是网上直接下载.(缺少. ...
-
React Native Android启动白屏的一种解决方案下
实现思路 思路大流程: 1.APP启动的时候控制ReactActivity从而显示启动屏. 2.编写原生模块,提供一个关闭启动屏的公共接口. 3.在js的适当位置(一般是程序初始化工作完成后)调用上述 ...