从零学java笔录-第37篇基础语法完结小项目练习-学生管理系统 基础版

前言:

本文是java基础语法完结项目篇-学生管理系统

本节内容:

1:学生系统需求及分析

2:重点代码分析

3:完整代码

4:本节总结&下节预告

本文出处:《凯哥陪你学系列之java基础篇.Java基本语法篇》中第37篇基础语法完结小项目练习-学生管理系统 基础版

欢迎访问凯哥个人博客:www.kaigejava.com

欢迎关注凯哥公众号:凯哥Java

一:学生系统需求及分析

需求:

假设有三个班级,每个班级中有三个学生,每个学生学科分别为语文、数学、英语且有对应的分数

现根据用户输入的班级以及选择的学生姓名查询对应的学生各科成绩、三科成绩总分以及平均分数。

思考:

根据需求我们可以分出如下

1.1:用什么存储数据呢?

1.2:每个班级中有三个学生,每个学生有三个学科且有对应的分数,这个又怎么存储怎么表示呢?

1.3:怎么根据用户输入的进行相应的查询呢?

1.4:怎么处理总分和平均分数呢?

分析:

1.1:我们已经学习掌握的知识中的能够用于存放东西的是数组。所以这里需要考虑到使用数组来存储

1.2:每个班级有三个学生,每个学生又有三个学科且三个学科都有对应的分数。这个怎么表示呢? 同样使用数组来表示,那么数组我们已经学过一维数组、二维数组。应该选择那个数组呢?

接着分析:

三个学生,三个学科而且学科有分数(假设都是整数的)。我们可以把每个学生的成绩(三个学科的得分)看作一个一维数组,成绩是整数类型的 所以可以得到一个学生的三科成绩数组 int [] arrscore = new int[3];

一个班级有三个学生,所以同样,学生可以用一维数组存放。因为学生姓名是String类型的。所以,我们可以得到学生数组 String[] studentArr = new String[3];

那么问题又来看,怎么把学生信息和各学科成绩关联在一起呢?

我们可以,用一个二位数组来进行管理,二维数组中[m]对应学生数组中每个学生对应的index,而二维数组中的[n]用来存放每个学科对应的分数。所以我们可以得到学生,成绩关联的数组

因为 学生index是int类型的。成绩也是int类型的。所以二维数组就是int类型的。

int [] []  studentScore = new int [3][3];

1.3:怎么获取到用户输入呢?可以使用scanner 函数。怎么根据用户输入的进行相应的查询呢?这里就使用到if判断语句了。

1.4:总分就是获取到每个学科的成绩进行累加,平均分数,就是总分/学科数就是平均分呢。

二:重点代码分析

1:用于存放每个班级的学生信息的:

2:用于存放学生和各科成绩的二维数组:

3:提示用户输入的:

4:获取指定学生的每个学科分数并求总分和平均分数

5:根据用户输入的进行查询

6:本代码对于的java类名为:

三:完整代码

public class StudentSystem {

public static void main(String[] args) {

/**

* 数据准备:

* 1:定义班级 每个班有三个学生,每个学生的学科顺序:语文、数学、英语

* 提示:可以考虑二维数组

* 2:定义每个班的学生。

* 提示:可以考虑一位数组

*

*

*/

//定义三个班级,三个学生中每个学生的每个学科成绩

//定义一班学生和各科成绩的二维数组

int [][] oneClass = new int [3][3];

oneClass[0]= new int[] {90,80,66};

oneClass[1]= new int[] {88,100,99};

oneClass[2]= new int[] {98,100,52};

//定义二班学生和各科成绩的二维数组

int [][] twoClass = new int [3][3];

twoClass[0]= new int[] {60,60,66};

twoClass[1]= new int[] {88,80,99};

twoClass[2]= new int[] {55,100,68};

//定义三一班学生和各科成绩的二维数组

int [][] threeClass = new int [3][3];

threeClass[0]= new int[] {90,78,88};

threeClass[1]= new int[] {88,63,59};

threeClass[2]= new int[] {98,100,95};

//定义每个班中的三个学生

//定义一班每个学生姓名

String[] oneClassStudents = new String [] {"张三","李四","王五"};

//定义二班每个学生姓名

String[] twoClassStudents = new String [] {"周杰伦","中红衣","四小龙"};

//定义三班每个学生姓名

String[] threeClassStudents = new String [] {"张三丰","张无忌","周芷若"};

System.out.println("请选择班级 1:一班 2:二班 3:三班 ");

Scanner sc = new Scanner(System.in);//获取键盘录入的数据。获取用户选择的班级

int classIndex = sc.nextInt();

if(1==classIndex){//选择了一班

System.out.println("您好,您已经选择了一班");

//提示信息。注意不是println而是print这样就不换号了

System.err.print("请输入学生姓名序号:");

//循环对应班级的学生姓名

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

int no = i+1;//因为数组中下标是从0开始的,而现实中我们一般是从1开始的。所以要+1

if(i==oneClassStudents.length-1){//进行判断。如果是班级中最后一个学生的时候进行换行。这里使用的是println

System.err.println(no+":"+oneClassStudents[i]);

}else{//当不是最后一个时候,就不用换行了。

System.err.print(no+":"+oneClassStudents[i] +" ");

}

}

//以上for循环完成之后,输出的:请输入学生姓名序号:1:张三丰 2:张无忌 3:周芷若

Scanner scanner = new Scanner(System.in);//获取键盘录入的数据。获取用户选择的学生

int studentIndex = scanner.nextInt();

studentIndex-=1;//因为现实是从1开始的,而数组是从0开始的。所以需要-1

//获取学生姓名

String StudentName=oneClassStudents[studentIndex];

//获取学生对应的各科成绩

int [] studentScore =oneClass[studentIndex];

//通过自定义方法获取学生每个学科的信息以及总分、平均分

String detailMsg = getStudentDetail(studentScore);

System.out.println("学生姓名:"+StudentName +"。您本次考试信息详情如下:"+detailMsg);

}else if(2==classIndex){//选择了二班

//选择了二班

System.out.println("您好,您已经选择了二班");

System.err.print("请输入学生姓名序号:");

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

int no = i+1;

if(i==twoClassStudents.length-1){

System.err.println(no+":"+twoClassStudents[i]);

}else{

System.err.print(no+":"+twoClassStudents[i] +" ");

}

}

Scanner scanner = new Scanner(System.in);//获取键盘录入的数据

int studentIndex = scanner.nextInt();

studentIndex-=1;//

String StudentName=twoClassStudents[studentIndex];

int [] studentScore =twoClass[studentIndex];

//通过自定义方法获取学生每个学科的信息以及总分、平均分

String detailMsg = getStudentDetail(studentScore);

System.out.println("学生姓名:"+StudentName +"。您本次考试信息详情如下:"+detailMsg);

}else{//选择了三班

//选择了三班

System.out.println("您好,您已经选择了三班");

System.err.print("请输入学生姓名序号:");

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

int no = i+1;

if(i==threeClassStudents.length-1){

System.err.println(no+":"+threeClassStudents[i]);

}else{

System.err.print(no+":"+threeClassStudents[i] +" ");

}

}

Scanner scanner = new Scanner(System.in);//获取键盘录入的数据

int studentIndex = scanner.nextInt();

studentIndex-=1;//

String StudentName=threeClassStudents[studentIndex];

int [] studentScore =threeClass[studentIndex];

//通过自定义方法获取学生每个学科的信息以及总分、平均分

String detailMsg = getStudentDetail(studentScore);

System.out.println("学生姓名:"+StudentName +"。您本次考试信息详情如下:"+detailMsg);

}

}

/**

* 通过自定义方法获取学生每个学科的信息以及总分、平均分

* @param studentScore如参:学生信息

* @return str学生每个学科的信息以及总分、平均分

*/

public static String getStudentDetail(int[] studentScore) {

int ChineseScore =0;//定义用于存放语文分数的

int MethScore=0;//数学分数

int EnglishScore=0;//英语分数

int totalScore = 0;//总分

double avgScore = 0.0;//平均分数

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

if(0==i){//语文分数

ChineseScore = studentScore[i];

}else if(1==i){//数学分数

MethScore = studentScore[i];

}else{//英语分数

EnglishScore = studentScore[i];

}

}

totalScore = ChineseScore+MethScore+EnglishScore;

avgScore = totalScore/studentScore.length;

return "语文得分:"+ChineseScore+" 数学得分:"+MethScore+" 英语得分:"+EnglishScore +" 总分为:"+totalScore +" 平均分为:" +avgScore;

}

}

代码运行结果:

四:本节总结&下节预告

通过本项目我们需要掌握的:

1:根据需求,分析出我们需要的信息(这个需要慢慢培养)

2:根据需求分析出信息后,需要知道该使用什么技术来实现(这个需要慢慢培养)

以上两点都扯淡。因为先阶段咱们刚开始学,所以不着急。慢慢来

以下才是重点呢。

3:一维数组、二维数组的使用及获取数组中数据

4:for循环使用使用

5:if...else if...else的使用

6:自定义方法的使用

7:用户用户键盘录入int类型的数据。

下节预告:

1:思考,上面的这些代码,还可不可以在简单一些??

2:上面的代码运行一次就完了。怎么根据用户输入的,进行结束。

欢迎学习下一篇《从零学java笔录-第38篇基础语法完结小项目练习-学生管理系统升级版》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 6,952评论 0 9
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,589评论 0 9
  • 1.定义俩个整形变量并赋值,交换这俩个变量的值并输出。 public class Test2 { public s...
    Lilbetter_0326阅读 497评论 0 0
  • DAY 05 1、 public classArrayDemo { public static void mai...
    周书达阅读 654评论 0 0
  • /*【程序21】 * 作者 南枫题目:求1+2!+3!+...+20!的和 1. 程序分析:此程序只是把累加变成了...
    HUC南枫阅读 431评论 0 0