java集合学生管理系统
//student.java package com.sran.www; import java.util.Arrays;
import java.util.Scanner; public class Student implements Comparable<Student>{
int num;
String name;
int age;
double[]s;
double sum; //存储学生的总分 public Student()
{
s=new double[3];
} public static boolean insert()
{
Scanner sc=new Scanner(System.in);
String str=null;
boolean be=true; do
{
Student stud=new Student();
System.out.println("开始录入学生的相关信息.....");
System.out.print("学号:");
stud.num=sc.nextInt();
System.out.print("姓名:");
stud.name=sc.next();
System.out.print("年龄:");
stud.age=sc.nextInt(); System.out.println("依次输入三门课的成绩:");
System.out.print("语文:");
stud.s[0]=sc.nextDouble();
System.out.print("数学:");
stud.s[1]=sc.nextDouble();
System.out.print("英语:");
stud.s[2]=sc.nextDouble(); stud.sum=stud.calculate_sum(); StudentTest.set.add(stud); System.out.println("如果继续录入,则输入%,否则输入 #");
System.out.print("请输入:");
str=sc.next(); if(!(str.equals("%")||str.equals("#")))
{
be=false;
System.out.println("你输入有误,已强制结束录入操作");
} }while(str.equals("%") && be); return be;
} public static boolean delete()
{
String str=null;
boolean be=true;
System.out.println("开始删除学生的相关信息.....");
do
{
System.out.print("请输入要删除的学生的学号:");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt(); boolean flag=false; //设一标志位 for(Student stud:StudentTest.set)
{
if(s==stud.num)
{
StudentTest.set.remove(stud);
flag=true;
System.out.println("已删除该学生的信息");
break;
} } if(flag==false)
{
System.out.println("你要删除的学生的学号不存在");
} System.out.println("如果继续删除,则输入 %,否则输入#");
System.out.print("请输入:");
str=sc.next(); if(!(str.equals("%")||str.equals("#")))
{
be=false;
System.out.println("你输入有误,已强制结束删除操作");
} }while(str.equals("%") && be); return be;
} public static boolean seek()
{
String str=null;
boolean be=true;
System.out.println("开始查找学生的相关信息.....");
do
{
System.out.print("请输入要查找的学生的学号:");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt(); boolean flag=false; for(Student stud:StudentTest.set)
{
if(s==stud.num)
{
flag=true; //修改标志位
System.out.println("你要查找的学生的信息:"); System.out.println("学号:"+stud.num);
System.out.println("姓名:"+stud.name);
System.out.println("年龄:"+stud.age);
System.out.println("语文成绩:"+stud.s[0]);
System.out.println("数学成绩:"+stud.s[1]);
System.out.println("英语成绩:"+stud.s[2]); break;
}
} if(flag==false)
{
System.out.println("你要查找的学生的学号不存在");
} System.out.println("如果继续查找,则输入 %,否则输入#");
System.out.print("请输入:");
str=sc.next(); if(!(str.equals("%")||str.equals("#")))
{
be=false;
System.out.println("你输入的有误,已强制结束查询操作");
} }while(str.equals("%") && be); return be;
} public double calculate_sum()
{
sum=s[0]+s[1]+s[2];
return sum;
} @Override
public int compareTo(Student stud) {
this.sum=this.calculate_sum();
stud.sum=stud.calculate_sum(); if(this.sum>stud.sum) return -1;
else if(this.sum<stud.sum) return 1;
else
{
if(this.name.compareTo(stud.name)>0) return -1;
else if(this.name.compareTo(stud.name)<0) return 1;
else
return 0;
}
} public String toString()
{
System.out.println("学号"+"\t\t"+"姓名"+"\t\t"+"年龄"+"\t\t"+"语文"+"\t\t"+"数学"+"\t\t"+"英语"+"\t\t"+"总分");
return(num+"\t\t"+name+"\t\t"+age+"\t\t"+s[0]+"\t\t"+s[1]+"\t\t"+s[2]+"\t\t"+sum); } public static boolean update()
{
String str=null;
boolean bot=true; System.out.println("开始更新学生信息.....");
do
{
System.out.print("请输入要更新的学生的学号:");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
boolean be=false;
boolean br=false; for(Student stud:StudentTest.set)
{
if(stud.num==s)
{
be=true; //修改标志位
System.out.println("请输入要更新的哪一项: 其中1代表学号,2代表姓名,3代表年龄,4代表语文成绩,5代表数学成绩,6代表英语成绩");
System.out.print("请输入:");
int n=sc.nextInt(); switch(n)
{
case 1:
{
System.out.print("请输入修改后的学号:");
stud.num=sc.nextInt();
System.out.println("修改成功");
break;
}
case 2:
{
System.out.print("请输入修改后的姓名:");
stud.name=sc.next();
System.out.println("修改成功");
break;
}
case 3:
{
System.out.print("请输入修改后的年龄:");
stud.age=sc.nextInt();
System.out.println("修改成功");
break;
}
case 4:
{
System.out.print("请输入修改后的语文成绩:");
stud.s[0]=sc.nextDouble();
System.out.println("修改成功"); stud.sum=stud.calculate_sum(); //重新更新总分
br=true; break;
}
case 5:
{
System.out.print("请输入修改后的数学成绩:");
stud.s[1]=sc.nextDouble();
System.out.println("修改成功"); stud.sum=stud.calculate_sum(); //重新更新总分
br=true; break;
}
case 6:
{
System.out.print("请输入修改后的英语成绩:");
stud.s[2]=sc.nextDouble();
System.out.println("修改成功"); stud.sum=stud.calculate_sum(); //重新更新总分
br=true; break;
} } }
} if(br==true)
{
Object[]obj=StudentTest.set.toArray();
Arrays.sort(obj);
StudentTest.set.clear(); for(int i=0;i<obj.length;i++)
{
Student st=(Student)obj[i];
StudentTest.set.add(st);
}
} if(be==false)
{
System.out.println("你要修改的学生的学号不存在");
} System.out.println("如果继续修改,则输入 %,否则输入#");
System.out.print("请输入:");
str=sc.next(); if(!(str.equals("%")||str.equals("#")))
{
bot=false;
System.out.println("你输入有误,已强制结束更新操作");
} }while(str.equals("%") && bot); return bot;
} }
//StudentTest package com.sran.www; import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet; public class StudentTest {
static Set<Student>set=null; //定义集合,存储学生信息 public void fun()
{
int i;
boolean b,bt;
set=new TreeSet<Student>();
do{
int flag=0;
System.out.println("请输入1,2,3,4,5 1代表录入,2代表删除,3代表查找,4代表显示学生总成绩排名,5代表更新某个学生数据");
System.out.print("请输入:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(); switch(n)
{
case 1:
{
b=Student.insert();
if(b==true)
{
System.out.println("正常结束录入操作.....");
}
flag=1;
break;
}
case 2:
{
b=Student.delete();
if(b==true)
{
System.out.println("正常结束删除操作.....");
}
flag=1;
break;
}
case 3:
{
b=Student.seek();
if(b==true)
{
System.out.println("正常结束查询操作.....");
}
flag=1;
break;
}
case 4:
{
System.out.println("开始排名学生信息.....");
System.out.println("学生按总成绩排名:");
for(Student stud:set)
{
System.out.println(stud);
System.out.println();
} System.out.println("正常结束排名操作.....");
flag=1;
break;
} case 5:
{
b=Student.update();
if(b==true)
{
System.out.println("正常结束更新操作.....");
}
flag=1;
break;
} }
if(flag==0)
{
System.out.println("你输入有误,请重新输入");
} System.out.println(); do
{
bt=false;
System.out.println("继续所有学生信息操作,请输入1 退出学生信息系统 ,请输入0");
System.out.print("请输入:");
i=sc.nextInt(); if(i!=1 && i!=0)
{
bt=true;
System.out.println("输入有误,请重新输入");
} }while(bt==true); }while(i==1); System.out.println("你已退出学生信息系统....."); } public static void main(String[] args) {
new StudentTest().fun();
}
}
java集合学生管理系统的更多相关文章
- java构建学生管理系统(一)
用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等. 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览. 学生可以看自己的成绩和对自己信息的修改. 学生和老师有 ...
- Java 简化版学生管理系统(IO版)
Student management system 学生管理系统IO版 详细知识点可参考一下几篇文章 常用API Java 之ArrayList集合及应用 Java 之IO流及应用 Compreh ...
- Java案例——学生管理系统
简单完整的学生管理系统 学生类 public class Student { private String id; private String age; private String name; p ...
- Java+Mysql+学生管理系统
最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...
- Java 小型学生管理系统心得
这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧. 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么 ...
- Java开发学生管理系统
Java 学生管理系统 使用JDBC了链接本地MySQL 数据库,因此在没有建立好数据库的情况下没法成功运行 (数据库部分, Java界面部分, JDBC部分) 资源下载: http://downlo ...
- Java写学生管理系统
package Homework08;/*调试了一上午,收获:学会了昨天的debug的使用吸取教训:Student stus[]=new Student[2]; for (int i=0;i<s ...
- Java基础进阶:学生管理系统数组方式分包源码实现,教师管理系统集合和数组两种方式源码实现,图书馆管理系统源码实现,现附重难点,代码实现源码,课堂笔记,课后扩展及答案
1.案例驱动模式 1.1案例驱动模式概述 (理解) 通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题 1.2案例驱动模式的好处 (理解) 解决重复代码 ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
随机推荐
- winform窗体置顶
winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ...
- Mindjet MindManager思维导图工具的使用 - 项目管理系列文章
在项目管理过程中,不可避免的要使用到各种各样的项目管理工具.本文就对我自己使用的Mindjet Manager进行一下介绍,推荐给大家使用. 1. 打开软件 这里使用了2012版 2. 软件的界面 ...
- 【从零开始学习Hadoop】--1.Hadoop的安装
第1章 Hadoop的安装1. 操作系统2. Hadoop的版本3. 下载Hadoop4. 安装Java JDK5. 安装hadoop6. 安装rsync和ssh7. 启动hadoop8. 测试had ...
- [翻译] 聚集索引表 VS 堆表
前言: 本文对这篇博客Clustered Tables vs Heap Tables 的翻译, 如有翻译不对或不好的地方,敬请指出,大家一起学习进步. 问题描述 创建一个新表时,一个非常重要的设计原则 ...
- SQL Challenge ——快速找到1-100之间缺失的数
有个经典的题目:1-100之间的数字(不重复)存放在表里,共95行一列,但是里面缺了5个数字,怎么用SQL最快找出那五个数字. 我们先来看看Oracle数据库如何实现,如下所示,我们先准备测试环境和数 ...
- asp.net signalR 专题—— 第二篇 对PersistentConnection持久连接的快速讲解
上一篇我们快速的搭建了一个小案例,但是并没有对其中的方法进行介绍,这一篇我来逐一解析下. 一:从override的那些方法说起 不管怎么样,我们先上代码,如下: public class MyConn ...
- AsyncTask官方学习
异步任务学习 这两天使用到特别多的AsyncTask类,一块来学习一下吧 AsyncTask允许更方便和简单使用UI线程,这个类允许你在UI线程中进行后台操作和展示结果,而无需操作Thread或者ha ...
- 小结-stm32 驱动LED灯
使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位. http://www.cnblogs.com/xiaobo-Linux/ 然后,端口使能: //³õʼ ...
- 【转】能否用讲个故事的方式,由浅入深,通俗易懂地解释一下什么是天使投资,VC,PE.
能否用讲个故事的方式,由浅入深,通俗易懂地解释一下什么是天使投资,VC,PE 今天在知乎上看到一篇文章,觉得值得一转的,Here. 我给楼主讲个完整点的故事吧.长文慎点,前方高能,自备避雷针.18岁以 ...
- [WPF系列-高级TemplateBinding vs RelativeSource TemplatedParent]
What is the difference between these 2 bindings: <ControlTemplate TargetType="{x:Type Button ...