基于java语言简单版的学生信息系统

功能简介:

a:可以对学生信息增删改查,

b:每一种操作都是使用容器进行

c:使用自己写的工具类,可以实现多次调用,实现代码的复用,增加可读性

d:语法使用嵌套循环,一般使用while,swich。。case,for

代码实现:

//测试类

package com.xinboedu.www.test;

public class TestSystem {

public static void main(String[] args)

{

StudentSystem studentSystem = new StudentSystem();

studentSystem.start();

}

}

学生信息系统:

package com.xinboedu.www.test;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.LinkedList;

//学生信息系统

public class StudentSystem {

//记录学生个数

private Student student;

//容器保存学生信息

LinkedList<Student> list=new LinkedList<>();//增删效率高,所以就linkedlist

ArrayList<Student> alist=new ArrayList<>();//读写效率高

//系统开始

boolean isStart=true;

public void start()

{

System.out.println("欢迎使用学生信息管理系统");

while(isStart)

{

System.out.println("1.输入学生信息");

System.out.println("2.查看学生信息");

System.out.println("3.修改学生信息");

System.out.println("4.删除学生信息");

System.out.println("5.退出");

int i = GetScanner.getscanner(5);

switch (i) {

case Content.INDEX_PUTNIFOR:

putInfo(1);

break;

case Content.INDEX_SELECTIFOR:

selectInfo();

break;

case Content.INDEX_SETIFOR:

setInfo();

break;

case Content.INDEX_DELECTNIFOR:

Student st = delectInfo();

System.out.println("毕业的学生为:"+st);

break;

case Content.EXIT:

isStart=false;

break;

default:

break;

}

}

}

private Student delectInfo() {

System.out.println("请输入要删除学生的学号:");

int reNum = GetScanner.getscanner(list.size());

Student student2 = list.remove(reNum-1);//根据学号移除某个学生的信息,返回值是被移除的那个学生信息

return student2;

}

//修改学生信息

private void setInfo()

{

boolean yesOrNO=true;

while(yesOrNO)

{

bianli() ;

System.out.print("请输入要修改学生的学号");

int index = GetScanner.getscanner(list.size());

Student st= list.get(index-1);

setOneStudent(st);

System.out.print("继续修改其他学生信息?");

yesOrNO = GetScanner.getYesOrNO();

}

}

//修改一个学生信息

private void setOneStudent(Student st) {

boolean yesOrNO=true;

while(yesOrNO)

{

System.out.println("1.修改名字");

System.out.println("2.修改年龄");

System.out.println("3.修改性别");

System.out.println("4.修改联系方式");

System.out.println("5.修改修改地址");

setInfo(st);

System.out.println("是否继续修改:");

yesOrNO = GetScanner.getYesOrNO();

}

}

private void setInfo(Student st) {

switch (GetScanner.getscanner(5)) {

case Content.INDEX_SETNAME:

String name = GetScanner.getString("姓名");

st.setName(name);

break;

case Content.INDEX_SETAGE:

int age=GetScanner.getInt("年龄");

st.setAge(age);

break;

case Content.INDEX_SETSEX:

String sex = GetScanner.getString("性别");

st.setSex(sex);

break;

case Content.INDEX_SETPHONE:

String phone = GetScanner.getString("联系方式");

st.setPhone(phone);

break;

case Content.INDEX_SETADDRESS:

String address = GetScanner.getString("联系地址");

st.setAddress(address);

break;

default:

break;

}

}

//按学号查询学生信息

private void selectInfo() {

bianli();

boolean yesOrNO=true;

while(yesOrNO)

{

System.out.println("请输入你要查询的学生学号:");

int index = GetScanner.getscanner(list.size());

Student st= list.get(index-1);

if(index<=list.size())

{

//alist.add(st);

System.out.println(st);

System.out.println("是否继续查询:");

yesOrNO = GetScanner.getYesOrNO();

}

}

}

//输入学生信息

private void putInfo(int num) {

int index=0;

boolean yesOrNO=true;

while(yesOrNO)

{

if(index<=num)

{

String name = GetScanner.getString("姓名");

int age=GetScanner.getInt("年龄");

String sex = GetScanner.getString("性别");

String phone = GetScanner.getString("联系方式");

String address = GetScanner.getString("联系地址");

Student student2 = new Student(name, age, sex, phone, address);

list.add(student2);

index++;//计算学生信息录入的个数

System.out.println("是否继续输入");

yesOrNO = GetScanner.getYesOrNO();

}else

{

System.out.println("学生以录入满了~~");

break ;

}

}

bianli();

}

//遍历

private void bianli()

{

Iterator<Student> iterator = list.iterator();

boolean hasNext = iterator.hasNext();

for(int i=0;i<list.size();i++)

{

Student next = iterator.next();

System.out.println((i+1)+"."+next);

}

}

}

//学生类

package com.xinboedu.www.test;

public class Student {

private String name;//姓名

private int age;//年龄

private String sex;//性别

private String phone;//联系方式

private String address;//联系电话

public Student(String name, int age, String sex, String phone,

String address) {

super();

this.name = name;

this.age = age;

this.sex = sex;

this.phone = phone;

this.address = address;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((address == null) ? 0 : address.hashCode());

result = prime * result + age;

result = prime * result + ((name == null) ? 0 : name.hashCode());

result = prime * result + ((phone == null) ? 0 : phone.hashCode());

result = prime * result + ((sex == null) ? 0 : sex.hashCode());

return result;

}

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Student other = (Student) obj;

if (address == null) {

if (other.address != null)

return false;

} else if (!address.equals(other.address))

return false;

if (age != other.age)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

if (phone == null) {

if (other.phone != null)

return false;

} else if (!phone.equals(other.phone))

return false;

if (sex == null) {

if (other.sex != null)

return false;

} else if (!sex.equals(other.sex))

return false;

return true;

}

//重写toString方法

public String toString() {

return " 姓名=" + name + ", 年龄=" + age + ", 性别=" + sex

+ ", 联系方式=" + phone + ", 联系地址=" + address ;

}

}

//接口,用常量避免出现魔鬼数字

package com.xinboedu.www.test;

//接口

public interface Content {

//设置常量

int INDEX_PUTNIFOR=1;

int INDEX_SELECTIFOR=2;

int INDEX_SETIFOR=3;

int INDEX_DELECTNIFOR=4;

int EXIT=5;

int INDEX_SETNAME = 1;

int INDEX_SETAGE = 2;

int INDEX_SETSEX = 3;

int INDEX_SETPHONE = 4;

int INDEX_SETADDRESS = 5;

}

//复用代码,可以封装成库,实现多次调用

package com.xinboedu.www.test;

import java.util.Scanner;

public class GetScanner {

private static Scanner s=new Scanner(System.in);

//获取索引

public static int getscanner(int num)

{

int nextInt=0;

boolean isOver=false;

while(!isOver)

{

System.out.println("输入(1~"+num+")");

nextInt=s.nextInt();

if(nextInt>=1&&nextInt<=num)

{

isOver=true;

}else

{

System.out.println("输入错误,");

}

}

return nextInt;

}

//获取Yes Or No

public static boolean getYesOrNO()

{

System.out.println("是否确定? 1.确定2.取消");

int i = getscanner(2);

if(i==1)

{

return true;

}else{

return false;

}

}

//获取字符串

public static  String getString(String info)

{

System.out.println("请输入"+info+":");

String str = s.next();

return str;

}

//获取int类型

public static  int  getInt(String info)

{

System.out.println("请输入"+info+":");

int i = s.nextInt();

return i;

}

}

时间: 2024-08-25 13:49:00

基于java语言简单版的学生信息系统的相关文章

基于Java语言构建区块链(一)—— 基本原型

引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式.了解和掌握区块链相关知识和技术,是我们每位开发人员必须要去做的事情,这样我们才能把握住这波时代趋势的红利. 本文将基于Java语言构建简化版的blockchain,来实现数字货币. 创建区块区块链是由包含交易信息的区块从后向前有序链接起来的数据结构.区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块.以比特币为例,每个区块主要包含

基于Java实现简单Http服务器(转)

基于Java实现简单Http服务器(转) 本文将详细介绍如何基于java语言实现一个简单的Http服务器,文中将主要介绍三个方面的内容:1)Http协议的基本知识.2)java.net.Socket类.3)java.net.ServerSocket类,读完本文后你可以把这个服务器用多线程的技术重新编写一个更好的服务器.           由于Web服务器使用Http协议通信的因此也把它叫做Http服务器,Http使用可靠的TCP连接来工作,它是面向连接的通信方式,这意味着客户端和服务器每次通信

Java实现简单版SVM

最近的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,因为没有用到拉格朗日,对偶,核函数等等.而是用最简单的梯度下降法求解.其中的数学原理我参考了http://blog.csdn.net/lifeitengup/article/details/10951655,文中是用matlab实现的svm. 源代码和数据集下载:https://github.com/linger2012/simpleSvm 其中数据集来自于libsvm,我找了其中

基于JAVA语言的多线程技术

1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资源的基本单位:线程是操作系统进行调度,时间分配的基本单位: 进程由内核对象和地址空间两部分构成,内核对象就是一小块记录进程信息的内存,只允许操作系统访问:地址空间就是存放数据和程序的空间: 2.多线程运行机制 对于单个CPU,在每个时间点只能只能执行一个线程,多线程的实现是基于对时间片的轮回机制的,

基于java的简单Socket编程

1TCP协议与UDP协议     1.1 TCP               TCP是(Tranfer Control Protocol)的简称,是一种面向连接的保证可靠传输的协议.通过TCP协议传输,得到的是一个顺序的无差错的数据流.发送方和接收方的成对的两个socket之间必须建立连接,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作. TCP的

SimpleReact: 基于Java 8简单的FRP Fluent API

SimpleReact来自AOL的一个小型的支持并发的库包,其直接基于Java 8的CompletableFuture, JDK函数接口和Streams API构建,它的Fluent API能够提供解决90%的Reactive使用场景,重要的是没有带入任何复杂性.可以实现Functional Reactive Programming范式(简称:FRP,函数式响应编程) 使用SimpleReact能够方便扩展微服务,它能用于管理微服务的远程调用,能够应付高并发大型高性能平台的要求. 使用Simpl

基于Java语言构建区块链(三)—— 持久化 &amp; 命令行

引言上一篇 文章我们实现了区块链的工作量证明机制(Pow),尽可能地实现了挖矿.但是距离真正的区块链应用还有很多重要的特性没有实现.今天我们来实现区块链数据的存储机制,将每次生成的区块链数据保存下来.有一点需要注意,区块链本质上是一款分布式的数据库,我们这里不实现"分布式",只聚焦于数据存储部分. 给大家推荐一个java内部学习群:725633148,进群找管理免费领取学习资料和视频.没有错就是免费领取!大佬小白都欢迎,大家一起学习共同进步! 数据库选择 到目前为止,我们的实现机制中还

基于java语言的给cube添加custom view来实现权限控制

今天是农历2014年的最后一个工作日了,在这里提前祝大家新年快乐.羊年大吉!当然本人今天也拿出来点儿真东西,做为献给大家的新年礼物,依次共勉. 下文主要讲述的是使用Java代码来完成对cube基于部门维度创建custom view,实现角色级别的权限控制 第一部分:通用数据库设计 1:事实表(订单分析)--存放departkey关联部门 2:维度表(部门) 3:赋权表 role_id以及对应的role_name,来源于cognos cjap认证中的角色表depart_id以及对应的depart_

基于Java语言的MD5加密Base64转换方法

提供了基于MD5加密16位和32位的方法 1 import java.io.IOException; 2 import java.math.BigInteger; 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 import sun.misc.BASE64Decoder; 6 import sun.misc.BASE64Encoder; 7 /** 8 * <p>标