这是我刚学完Java封装继承的时候写的一个小案例,还不会使用集合,就用数组硬写了出来,但数组的缺点是不能改变数组的长度,虽然可以写个方法新建长度加一的数组然后把旧的数组装进去,但是真的好麻烦还没必要。如果想看用集合实现的代码可以到我的空间来看。

题目:设计一个名为Student 的类,包括属性有“学号”、“姓名”、以及 3 门课程“数学”、“英语”和“计算机”的成绩,包括的方法有计算 3 门课程的“总分”、“平均分”、“最高分”及“最低分”。

使用数组来实现对多个学生的管理。写一个控制台应用程序。

菜单如下:

1.添加学生

2.删除学生

3.查询学生

4.修改学生

5.打印学生

打印格式如下

学号 姓名 数学 英语 计算机

01 张三 56 65 77

02 李四 89 55 44

6.统计学生:

所有学生的“数学”、“英语”和“计算机”每门课程总的平均成绩、最高分、最低分。

打印格式:

学科 平均成绩 最高分 最低分

数学

英语

计算机

package com.qf.weektest;
import java.util.Scanner;
class Student{private String stuno;private String name;private float math;private float english;private float computer;
public float sum(float math,float english,float computer){return math+english+computer;
}
public float avg(Student stu[],String subject){//求学生数组的平均成绩if (subject.equals("数学")){float sum=0;for (int i = 0; i < stu.length; i++) {if (!stu[i].getName().equals("null")){sum=sum+stu[i].getMath();}}return sum;} else if (subject.equals("英语")) {float sum=0;for (int i = 0; i < stu.length; i++) {if (!stu[i].getName().equals("null")){sum=sum+stu[i].getEnglish();}}return sum;}else if(subject.equals("计算机")){float sum=0;for (int i = 0; i < stu.length; i++) {if (!stu[i].getName().equals("null")){sum=sum+stu[i].getComputer();}}return sum;}return 0.0f;}
public float max(Student stu[],String subject){//求单科最大值if (subject.equals("数学")){float temp=stu[0].getMath();for (int i = 1; i < stu.length; i++) {if (!stu[i].getName().equals("null")&&temp<stu[i].getMath()){temp=stu[i].getMath();}}return temp;}else if (subject.equals("英语")){float temp=stu[0].getEnglish();for (int i = 1; i < stu.length; i++) {if (!stu[i].getName().equals("null")&&temp<stu[i].getEnglish()){temp=stu[i].getEnglish();}}return temp;}else if(subject.equals("计算机")){float temp=stu[0].getComputer();for (int i = 1; i < stu.length; i++) {if (!stu[i].getName().equals("null")&&temp<stu[i].getComputer()){temp=stu[i].getComputer();}}return temp;}return 0.0f;
}public float min(Student stu[],String subject){//求单科最小值if (subject.equals("数学")){float temp=stu[0].getMath();for (int i = 1; i < stu.length; i++) {if (!stu[i].getName().equals("null")&&temp>stu[i].getMath()){temp=stu[i].getMath();}}return temp;}else if (subject.equals("英语")){float temp=stu[0].getEnglish();for (int i = 1; i < stu.length; i++) {if (!stu[i].getName().equals("null")&&temp>stu[i].getEnglish()){temp=stu[i].getEnglish();}}return temp;}else if(subject.equals("计算机")){float temp=stu[0].getComputer();for (int i = 1; i < stu.length; i++) {if (!stu[i].getName().equals("null")&&temp>stu[i].getComputer()){temp=stu[i].getComputer();}}return temp;}return 0.0f;}public String getStuno() {return stuno;}public void setStuno(String stuno) {this.stuno = stuno;}public String getName() {return name;}public void setName(String name) {this.name = name;}public float getMath() {return math;}public void setMath(float math) {this.math = math;}public float getEnglish() {return english;}public void setEnglish(float english) {this.english = english;}public float getComputer() {return computer;}public void setComputer(float computer) {this.computer = computer;}
}
class StudentManager extends Student{public void storageStudent(Student stu[]){//初始化学生信息for (int i = 0; i < stu.length; i++) {stu[i]=new Student();Scanner sc=new Scanner(System.in);System.out.println("请输入第"+(i+1)+"个学生的信息:");System.out.print("姓名:");stu[i].setName(sc.next());if (stu[i].getName().equals("null")){stu[i].setStuno("null");stu[i].setComputer(0);stu[i].setEnglish(0);stu[i].setMath(0);}else {System.out.print("  学号:");stu[i].setStuno(sc.next());System.out.print("   数学:");stu[i].setMath(sc.nextFloat());System.out.print("   英语:");stu[i].setEnglish(sc.nextFloat());System.out.print("   计算机:");stu[i].setComputer(sc.nextFloat());}}}
public int checkStudent(Student stu[]){//从左往右检查学生数组是否有空余的位置,如果有就返回空余位置的下标,如果没有就返回-1for (int i = 0; i < stu.length; i++) {if (stu[i].getName().equals("null")){return i;}}return -1;}public int findStudent(Student stu[],String name){//根据姓名查找学生的姓名,如果有就返回相应的坐标,如果没有就返回-1,这个方法和后面的查询学生方法有些重复,但是我在修改学生,删除学生方法中需要用到查询,所以就直接重写了一个方法for (int i = 0; i < stu.length; i++) {if (stu[i].getName().equals(name)){return i;}}return -1;}public void addStudent(Student stu[]){//添加学生信息int index=checkStudent(stu);if (index>=0){Scanner sc=new Scanner(System.in);System.out.println("请添加学生信息");System.out.print("姓名: ");stu[index].setName(sc.next());System.out.print("学号: ");stu[index].setStuno(sc.next());System.out.print("数学成绩:");stu[index].setMath(sc.nextFloat());System.out.print("英语成绩:");stu[index].setEnglish(sc.nextFloat());System.out.print("计算机成绩:");stu[index].setComputer(sc.nextFloat());System.out.println("添加成功");}else {System.out.println("没有多余的位置了,添加失败");}}public void deleteStudent(Student stu[]){//删除学生Scanner sc=new Scanner(System.in);System.out.println("请输入要删除的学生姓名:");String name=sc.next();int index=findStudent(stu,name);if (index>=0){stu[index].setName("null");stu[index].setStuno("null");stu[index].setComputer(0);stu[index].setEnglish(0);stu[index].setMath(0);System.out.println("删除完毕");}else {System.out.println("没有这个学生,删除失败");}}public void searchStudent(Student stu[],String name){//查询学生int index=findStudent(stu,name);if (index>=0){System.out.println("存在这个学生");}else {System.out.println("不存在这个学生");}}public void reviseStudent(Student stu[],String name){//修改学生的学号,成绩int index=findStudent(stu,name);if (index>=0){Scanner sc=new Scanner(System.in);System.out.println("原来的学生姓名为:"+stu[index].getName());System.out.print("请输入要修改的学生姓名:");stu[index].setName(sc.next());System.out.println("原来的学生学号为:"+stu[index].getStuno());System.out.print("请输入要修改的学生学号:");stu[index].setStuno(sc.next());System.out.println("原来的学生数学成绩为:"+stu[index].getMath());System.out.print("请输入要修改的数学成绩:");stu[index].setMath(sc.nextFloat());System.out.println("原来的学生英语成绩为:"+stu[index].getEnglish());System.out.print("请输入要修改的英语成绩:");stu[index].setEnglish(sc.nextFloat());System.out.println("原来的学生计算机成绩为:"+stu[index].getComputer());System.out.print("请输入要修改的计算机成绩:");stu[index].setComputer(sc.nextFloat());System.out.println("修改成功");}else {System.out.println("不存在这个人");}}public void printStudent(Student stu[]){//打印学生信息System.out.println("学生所有信息如下:");for (int i = 0; i < stu.length; i++) {if (!stu[i].getName().equals("null")){System.out.print("学号:"+stu[i].getStuno()+"   姓名:"+stu[i].getName()+"   数学:"+stu[i].getMath()+"   英语:"+stu[i].getEnglish()+"   计算机:"+stu[i].getComputer());System.out.println();}}}public void statisticsStudent(Student stu[],String subject){//统计学生信息System.out.println(subject+"  "+avg(stu,subject)+"  "+max(stu,subject)+"  "+min(stu,subject));}
}
public class Demo12 {public static void main(String[] args) {Student stu[]=new Student[4];StudentManager stum=new StudentManager();stum.storageStudent(stu);loop:while (true){Scanner sc=new Scanner(System.in);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("6.统计学生");System.out.println("7.退出操作");int chose=sc.nextInt();switch (chose){case 1:stum.addStudent(stu);break;case 2:stum.deleteStudent(stu);break;case 3:System.out.println("请输入要查询的学生姓名:");String name1=sc.next();stum.searchStudent(stu,name1);break;case 4:System.out.println("请输入要修改的学生姓名:");String name2=sc.next();stum.reviseStudent(stu,name2);break;case 5:stum.printStudent(stu);break;case 6:System.out.println("学科    平均成绩   最高分   最低分");stum.statisticsStudent(stu,"数学");stum.statisticsStudent(stu,"英语");stum.statisticsStudent(stu,"计算机");break;case 7:System.out.println("退出成功");break loop;default:break;}}}
}

Java实现一个学生成绩管理系统,要求存储学生信息并进行增删改查操作。相关推荐

  1. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  2. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  3. 学生信息管理系统(连接数据库,面向对象的方法实现学生信息的增删改查操作)...

    ---------------------------------------------------------------------------------------------------- ...

  4. 利用字典制作一个登录用户账号密码管理系统,实现对账号密码的增删改查等功能

    利用字典制作一个登录用户账号密码管理系统,实现对账号密码的增删改查等功能: 当前默认账号密码为:user = {'Wangwu':123456,'Zhangsan':456789,'Lisi':789 ...

  5. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作

    1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...

  6. 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!

    什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...

  7. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  8. Java程序-单链表增删改查(实现对水浒人物的增删改查操作)

    单链表增删改查(实现对水浒人物的增删改查操作) 前言 一.链表(Linked List)介绍 二.应用实例 1.问题描述 2.代码实现 总结 前言 参考:B站,尚硅谷数据结构与算法 课程 一.链表(L ...

  9. Java连接sqlserver数据库,并进行增删改查操作

    用编程语言连接数据库是程序员必备的技能,今天我们就来学习一下如何通过Java来连接sqlserver数据库,并实现增删改查操作. 需要用到的工具: Myeclipse,sqlserver数据库,Mic ...

最新文章

  1. 15.泡菜:pickle模块
  2. [Leedcode][JAVA][第56题][合并区间][数组][贪心算法]
  3. 万万没想到,我的炼丹炉玩坏了
  4. MonoTouch 二三事(三)mono mkbundle 打包程序的解包支持
  5. RAC性能分析 - gc buffer busy acquire 等待事件
  6. gg修改器修改内购_GG入门学习第六课:GG的防闪
  7. SoundTouch音频处理库
  8. 名词解释:DRAM, SRAM, SDRAM等
  9. sumif单列求和_EXCEL条件求和函数SUMIF的几种常见用法
  10. 互联网企业实习面试经验分享(谷歌微软hulu阿里腾讯字节美团百度等等)
  11. VMware虚拟机共享主机无线网络联网的设置方法
  12. 2021-2027全球与中国卸扣式绝缘子市场现状及未来发展趋势
  13. django项目中使用crontab定时任务
  14. 用PS制作公路上的逼真文字
  15. cuda的安装,及pytorch调用GPU步骤
  16. Mysql8.0设置允许远程连接
  17. 【异构图神经网络】HGraph || 附:AI研究生时间规划 建议(研一、研二、研三)
  18. spring cloud contract的应用实现与概念理解-服务提供者一侧的落地
  19. c语言for循环多条件判断,解决在for循环内判断条件多次执行
  20. 解决JSCH的sftp连接时出现的com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stre

热门文章

  1. 计算机唤醒休眠蓝屏,分享win10睡眠唤醒就蓝屏的解决办法
  2. Mybatis Plus 多租户架构(Multi-tenancy)实现
  3. 教你一眼认出英语单词的意思
  4. 顺序表练习(三):对称矩阵的压缩储存
  5. 杨家将杨业四子杨延辉子嗣传人世代居住松滋
  6. 计算机子网掩码作用,什么是子网掩码 子网掩码的作用是什么?
  7. 惜我者,我惜之; 冷我者,我弃之
  8. CNN之绘画风格迁移-附源码地址
  9. 1790: 九九八十一
  10. [《南国雪下》闲笔记事集]2010年12月15日 记雪