一、学生成绩查询系统(Java实现)

项目要求(我们可以做的更面向对象一点,灵活处理):

具体思路如下:

1、引入程序需要调用的包

2、创建总程序包 "stuScoreInquirySystem"

3、在main类以及其他方法类外面定义好学生名字及课程名称并存入,给予静态赋值

4、分类创建方法

1、main()方法、

2、初始化方法  initScore()

3、输入成绩方法   scanfScore()

4、显示成绩方法   show()

5、运行程序方法(实现功能)run()

1、平均分方法  arg()

2、查询学生单科成绩方法 get()

3、单科成绩排名方法   subjectRank()


import java.lang.ArrayIndexOutOfBoundsException;
import java.util.Scanner; //引入Scanner包public class stuScoreInquirySystem {    //程序包名“学生成绩查询系统”Scanner src=new Scanner(System.in);final static int STUDENT_NUM=6;  //学生数量final static int COURSE_NUM=5;   //课程总数static String[] students={"zhang","wang","li","zhao","liu","song"};  //一维数组存入学生名字static String[] courses={"C","Java","mySQL","Linux","HTML"};    //一维数组存入课程名字static int[][] score=new int[STUDENT_NUM][COURSE_NUM];      //学生成绩存在二维数组中//main()入口public static void main(String[] args){initScore();scanfScore(score);show();run(students,courses,score);}//初始化“学生成绩二维数组”  随机数public static void initScore(){for(int i=0;i< score.length;i++){for(int j=0;j<score[0].length;j++){score[i][j]=(int)(Math.random()*1);  //java.lang.Math包里 随机数,返回大于等于0.0小于1.0的随机double数}}}//输入成绩public static void  scanfScore(int[][] score){Scanner src =new Scanner(System.in);System.out.println("请分别输入6位学生的成绩");for(int i=0;i< score.length;i++){System.out.println("请输入第"+(i+1)+"位名叫"+students[i]+"同学的各科成绩");System.out.println("请按照“C Java mySQL Linux HTML的顺序输入”");for(int j=0;j<score[0].length;j++){score[i][j]=src.nextInt();}}}//显示成绩方法public static void show(){System.out.print("\t");//第一行第一列的空格,让其空出来for(int i=0;i< courses.length;i++){    //一一打印课程名字(第一行)System.out.print(courses[i]+"\t");   //\t表示空格符,它使显示的成绩排列整齐}System.out.println();            //换行for(int i=0;i< score.length;i++){       //循环打印成绩System.out.print(students[i]+"\t");     //显示学生名字for(int j=0;j<score[i].length;j++){      //显示学生成绩System.out.print(score[i][j]+"\t");}System.out.println();}}//run运行程序public static void run(String[] students,String[] courses,int[][] score){Scanner sca=new Scanner(System.in);while(true){System.out.print("请输入命令:");String command1=sca.next();if(command1.equalsIgnoreCase("avg")){String command2=sca.next();arg(students, courses, score, command2);}else if(command1.equalsIgnoreCase("get")){String command2=sca.next();String command3=sca.next();get(students,courses,score,command2,command3);}else if(command1.equalsIgnoreCase("sort")){String comand2=sca.next();subjectRank(students,courses,score,comand2);}else if(command1.equalsIgnoreCase("exit")){System.out.println("退出查询系统!byebye!");return;}}}//arg各科目平均分   学生平均分public static void arg(String[] students,String[] courses,int[][] score,String str){int i_index=-1;int j_index=-1;int sum=0;int pj=0;for(int i=0;i< students.length;i++){if(str.equalsIgnoreCase(students[i])){i_index=i;}}for(int j=0;j< courses.length;j++){if(str.equalsIgnoreCase(courses[j]))j_index=j;}if(i_index==-1&j_index==-1)System.out.println("您输入的既不是学生,也不是课程");if(i_index!=-1){for(int i=i_index;i<=i_index;i++)for(int j=0;j< courses.length;j++){sum+=score[i][j];}pj=sum/ courses.length;System.out.println(students[i_index]+"的平均分是:"+pj);}else if(j_index!=-1){for(int i=0;i< students.length;i++)for(int j=j_index;j<=j_index;j++ ){sum+=score[i][j];}pj=sum/ students.length;System.out.println(courses[j_index]+"的平均分是:"+pj);}}//get  查询学生单科成绩public static void get(String[] students,String[] courses,int[][] score,String str1,String str2){int i_index=-1;    //初始化分数行坐标for(int i=0;i< students.length;i++){  //判断是否有这位同学,有,记下其坐标(行)if(students[i].equalsIgnoreCase(str1))i_index=i;}if(i_index==-1){System.out.println("没有"+str1+"这个人");return;     //如果没有找到该学生名字,则str1仍然等于-1,就退出(不执行下列代码)}int j_index=-1;   //初始化分数列坐标for(int j=0;j< courses.length;j++){   //判断这位同学是否有这门课程,有,记下其坐标(列)if(courses[j].equalsIgnoreCase(str2))j_index=j;}if(j_index==-1){System.out.println(str1+"没有"+str2+"这门课程");return;           //如果没有找到课程名称,str2仍然等于-1,就退出(不执行下列代码)}System.out.println(str1+"的"+str2+"的成绩是:"+score[i_index][j_index]);  //根据行列坐标输出这个值}//单科成绩排名public static void subjectRank(String[] students,String[] courses,int[][] score,String str){int j_index=-1;  //初始化课程坐标值(列)jfor(int j=0;j< courses.length;j++){    //查询是否存在该门课程if(str.equalsIgnoreCase(courses[j]))j_index=j;             //记下课程坐标}if(j_index==-1){             //判断查询的该门成绩是否存在,不存在退出System.out.println("没有"+str+"这门课程");return;}int sum=0;      //排序,先初始化工具量sum//String sumStu=new String("");  //建立一个字符串数组,并赋初始值,作为字符串工具转移变量  不知道行不行String sumStu=null;for(int i=0;i< students.length-1;i++)for(int j=0;j< students.length-1-i;j++){if(score[j][j_index]>score[j+1][j_index]){sum=score[j][j_index];sumStu=students[j];score[j][j_index]=score[j+1][j_index];students[j]=students[j+1];score[j+1][j_index]=sum;students[j+1]=sumStu;}}System.out.println("名次"+"\t"+"姓名"+"\t"+courses[j_index]+"\t"); //输出排名情况int i=0;for(int minCi=1;minCi<= students.length&i<students.length;minCi++){System.out.println(minCi+"\t"+ students[i]+"\t"+score[i][j_index]+"\t");i++;}}
}

二、代码运行验证:

三、技巧及知识总结:

1、equalsIgnoreCase()与equals()方法不同的是,前者不区分大小写,因而使得用户输入命令的时候不用考虑大小写的情况

2、random()方法

Java中存在着两种Random函数,他们所在jdk包如下:

1、java.lang.Math.Random;(我用的是这一种,它可以随机给对象返回大于等于0.0小于1.0的double初始值,来初始化对象属性)

2、java.util.Random(我还不是很熟,大家可以复制百度一下,或者自己查一下API)

3、ArryIndexOfBoundsException:数组越界

合理:[0,arr.length-1]

越界:arr[-1],arr[arr.length]

在写这行代码的时候笔者也是初学者,报了好几个错误,这个最常见,大家一定要熟悉

4、next()和nextLine()的使用

1、next()它遇到空格或者enter键就停止读取,nextLine()遇到enter键才结束读取

2、next()从第一个非空字符开始读取,nextLine()不管字符空或非空,都读取(我举个例子你就明白了,我测试了)

//我输入一下命令(带有空格)hello ni hao ya  //hello前我输入了几个空格(注)
//若next()读取,会打印"hello",没有一点空格,而且不会打印“ni”、"hao"等等,因为遇到空格就停止了
//若nextLine[]读取,会打印"     hello ni hao ya",你输入的那一行有啥它就打印出啥,包括空格,直到按下enter键后,按enter键之前的都会打印出来
........................................................
//输入一行字符,以空格分开,怎么样分别存入它的值
//例如:输入“wo shi chao ji wu di da shuai ge” 我是超级无敌大帅哥9段字符,我可以用9个next()读取
//但是实际操作中不想写这么多行next()重复代码,我们可以用递归的思想,慢慢琢磨哈
//所以我这次想表达的是,next()方法可以一段一段读取字符串
...........................................................

5、编写代码是,要时刻考虑是否要立一个flag,如j_index、i_index就是我立的一个flag

6、"\t"的使用:为了实现让程序输出时如同表格一样整齐有序,我们可以巧妙学会使用"\t",它会自动识别字符长度,为字符分配空间。

"\t"是补全当前字符串长度到8的整数倍,补多少要看你\t前字符串长度,比如当前字符串长度10,那么\t后长度是16,也就是补6个空格,如果当前字符串长度13,此时\t后长度是16,补3个空格

7、有时候我们无法判断数组长度为多少时,可以使用"数组名.length"来解决,调用数组时我们通常用它的数组名,其实也就是它的首地址。

在这里要注意的是:一维、二维和多维;拿最常见的二维数组来举例:arr[不知道] [也不知道],arr.length表示一维行的长度,arr[0].length表示二维列的长度。都是首地址的形式,想一想哈哈。

8、数组的复制和赋值

array2 = array1; //赋值,相当于给它一个快捷方式,不开辟这么多空间 ,你就想想电脑桌面的快捷方式就可以了,他们两都指向堆中同一个地址,电脑桌面的快捷方式是指向硬盘中的一个储存地址

int [] arr1 = new int[arr.length];//要复制数组,就要new一个数组,给它开辟一个空间,这个是实实在在分配了与原数组一样的存储空间的

9、for(A;B;C)这个循环我最近也去大胆的乱测了一下,我尝试在A区多谢几条代码,用逗号分开,好像不行,我之后再去多多试一下,可能我说的是错哈B、C区我同样也试了一下,最终结果有待论证,我知道后会更新博客

10、这个成绩管理demo的”学生名字“放在了列,“课程名称”放在了行,它们虽然是以为数组,但是它们的角标可以注入我们的score[] []二维里,这个笔者刚开始想了好久都没想到,后面阴差阳错看了段源码恍然大悟

11、A&&B 与 A&B 的区别(在之后的博客里我会细讲),这次简单点提:前者若A区false,B区就不执行了,后者若A区false,B区仍然执行。

12、注重代码的可读性,如驼峰命名法等

结束语:

不瞒你说,这是笔者学习java写的第一个像样的demo,最终就打算把它以一篇博客的形式呈现给大家,我会不断学习,创造更优质的内容,谢谢大家!

若有不足之处,请多指正!

学生成绩查询系统(Java实现),你第一个Java小项目相关推荐

  1. Java综合实践——学生成绩查询系统

    数组是最常用的一种数据结构,利用它可以解决很多较复杂的问题.通过一个"学生成绩查询系统"的设计,提高运用数组和编写较大规模代码的综合能力. "学生成绩查询系统" ...

  2. Java项目实训——学生成绩查询系统

    avg:分别统计学生或课程 get song Java:输出song的Java成绩 sort C:输出所有学生在C课程下的排名 new:重新输入学生的成绩 首先应定义静态变量: static Stri ...

  3. Java学生成绩查询系统系统

    项目要求: ①学生成绩查询系统中保存学生姓名.课程名称以及学生的课程成绩. ②查询系统从控制台输入统计命令以及参数,实现成绩的查询.主要命令如下: avg Java:统计课程Java的平均分. avg ...

  4. 学生成绩查询java版_学生成绩查询系统,基于ssm的JAVA系统

    每天记录学习,每天会有好心情.*^_^* 今天记录的项目是学生成绩查询系统,这个项目是这么回事:介绍了在Internet/WWW环境下构建学生成绩查询系统的设计思路与方法 ,阐述了在学生成绩查询系统中 ...

  5. android学生成绩查询代码,android学生成绩查询系统.pdf

    android学生成绩查询系统 嵌入式系统课程设计报告 学生成绩查询系统手机端 I 摘要 在 世纪的今天,互联网已深入世界的各个角落.而WAP技术的发展和无线业务的成 21 熟,为人们获取各种信息提供 ...

  6. eclipse和数据库实现学生成绩查询系统web界面

    学生成绩查询系统(eclipse+SQLserver+tomact) 开发环境 系统实现 总结+参考 开发环境 比较懒. 如果要做这种类似的系统大概都知道这些软件吧.所以这个部分比较粗糙 Java环境 ...

  7. 成绩查询系统c语言,学生成绩查询系统C语言代码(分服务器端和客户端).doc

    学生成绩查询系统C语言代码(分服务器端和客户端) 客户端:#include#include#include #pragma comment(lib , "Wsock32.lib " ...

  8. c语言学生成绩查询系统2018,南昊网上阅卷学生成绩查询系统

    2018南昊网上阅卷学生成绩查询系统开放了,这是面向南昊当地的中小学生们的一款优质的查询学习成绩的平台,只要登录自己的账号就能查询自己的成绩排名情况.对于老师来说这也是一款网上阅卷系统,是一个非常幼稚 ...

  9. 学生成绩查询c#语言,C#学生成绩查询系统.doc

    ????学院 毕 业 论 文(设 计) 论文(设计)题目:学生成绩查询系统 所属系别: 信息工程系 专业班级:06计算机网络技术1班 姓 名: 常 军 玲 学 号: 200608090830129 指 ...

最新文章

  1. MooTools教程(1):认识MooTools
  2. java中Error与Exception有什么区别
  3. Qt中为自己的程序建立一个消息循环
  4. Pandas to_bool
  5. 信息熵(Information Entropy)
  6. 什么是职场PUA?遇到以下这五种情况你就得当心了!
  7. c++和QT实现俄罗斯方块,使用GraphicsView。
  8. 知了课堂Day2——微信小程序基础02——wxss
  9. IP属地靠谱吗?或是一把双刃剑
  10. ET5.0 配置Excel
  11. 组织机构、权限、角色设计
  12. java 倒计时_Java倒计时实现的三种简单方式
  13. linux 运维工程师必备技能
  14. nginx反向代理 负载均衡
  15. jQuery.ajax 使用点滴
  16. 减脂期必看,13种怎么吃也不会胖的低热量食物
  17. origin画图很多个重叠在一起的
  18. MyTool_Static.EulerAngleConversion欧拉角,角度转换计算
  19. 计算机网络中的电路交换的优缺点,从多方面比较电路交换、报文交换和分组交换的主要优缺点...
  20. [Bug Fix]Messy Audio语音电话不清晰问题

热门文章

  1. java远程代码注入_Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 )...
  2. 什么是网页设计及其六大导航分类
  3. 哪个牌子的电视盒子好用?罗鹏数码盘点2023电视盒子排名
  4. 目标检测算法(YOLOv4)
  5. 关于Unity中新版动画系统的使用
  6. python绘制堆叠条形图
  7. linux 如何打开iso镜像文件,linux下如何读取使用iso 镜像文件的方法
  8. 【系统分析师之路】第十八章 系统安全分析与设计章节习题集
  9. 如何正确在word中打出 “°”和“°C”
  10. bios设置自动开机