专栏首页为学Java基础---学生信息管理系统(借助Array List)

Java基础---学生信息管理系统(借助Array List)

需求: 制作一个简单的学生信息管理系统

1、通过键盘选择操作进行添加学生(学号,姓名,性别,年龄,成绩)的信息,这些信息通过数组存储。

2、同时还可以进行:

(1)查询某个或全体学生信息;

(2)修改学生信息;

(3)删除学生信息的操作。

要求: 有一定的优化,例如对用户输入信息是否符合要求的处理。

1.首先对学生的学号,姓名,性别,年龄,成绩这五个信息进行定义,为了不让所有人都能访问到,所以权限都定义为private,通过getter、setter方法进行访问:

/**
 * 
 * 设置学生信息
 * 
 * @author Incentancy
 *
 */
public class Student {
	
	private String stuName;
	
	private String stuNo;
	
	private String gender;
	
	private int age;
	
	private int score;

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public String getStuNo() {
		return stuNo;
	}

	public void setStuNo(String stuNo) {
		this.stuNo = stuNo;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}
	
}

2.然后在一个新类中添加对学生信息的增删改查操作,并且要求能对用户输入的数据进行初步的判断:

import java.util.ArrayList;
import java.util.Scanner;

import com.xt.eleventhHW.stu.Student;

public class StuData {
	
		private ArrayList stus = new ArrayList();
		
		//static int index = 0;
		
		Scanner scanner = new Scanner(System.in);

		

		/**
		 * 增加学生信息
		 * @param stu
		 */
		public void addStu(Student stu){		
			stus.add(stu);
		}
		
		//输入学生信息
		public void append(){
			
			Student stu = new Student();
			
			/**
			 * 通过封装方法,将学生信息赋给stus
			 */
			stu.setStuName(name());
			
			stu.setStuNo(stuNum());
			
			stu.setGender(gender());
			
			stu.setAge(age());
			
			stu.setScore(score());
			
			//将stu中的信息增添到stus中
			addStu(stu);
			
			System.out.println("学生信息已添加!");
			System.out.println();
		}
		
		
		//得到学生姓名
		public String name(){
			
			String name;
			
			System.out.println("请输入学生的姓名:");
			name = scanner.next();
			
			return name;
		}
		
		
		//得到学生学号
		public String stuNum(){
			
			String stuNum;
			
			System.out.println("请输入学生的学号:");
			stuNum = scanner.next();
			
			
			//如果学号不为11位,则重新输入,直到学号正确
			if(stuNum.length() != 11){
				System.out.println("您输入的学号有误!请重新输入!");
				stuNum();	
			}
					
			//如果学号已存在,则重新输入,直到不存在
			for(int i = 0; i < stus.size(); i++){
				if(stuNum.equals(stus.get(i).getStuNo())){
					System.out.println("该学号已存在!请重新输入!");
					stuNum();
					break;
				}
			}
			
			return stuNum;
		}
		
		//得到学生的性别
		public String gender(){
			
			String stuGender;
			
			System.out.println("请输入学生的性别:");
			stuGender = scanner.next();
			
			if(!stuGender.equals("男") && !stuGender.equals("女") ){
				System.out.println("您输入的学生性别有误!请重新输入!");
				gender();
			}
			
			return stuGender;
		}
		
		//得到学生的年龄
		public int age(){
			
			int stuAge;
			
			System.out.println("请输入学生的年龄:");
			stuAge = scanner.nextInt();
			
			if(stuAge < 0 || stuAge >=  80){
				System.out.println("您输入的年龄有误!请重新输入!");
				age();
			}
			
			return stuAge;
		}
		
		//得到学生的成绩
		public int score(){
			int stuScore;
			
			System.out.println("请输入学生的成绩:");
			stuScore = scanner.nextInt();
			
			if(stuScore < 0 || stuScore > 100){
				System.out.println("您输入的成绩有误!请重新输入!");
				score();
			}
			
			return stuScore;
		}
		
		
		/**
		 * 
		 * 删除学生信息
		 * 
		 * @param stuNo
		 */
		public void delStu(){
			
			System.out.println("请输入您想删除的学号:");
			String stuNo = scanner.next();
			
			boolean isDel = false;
			
			for(int i = 0; i < stus.size(); i++){
				if(stuNo.equals(stus.get(i).getStuNo())){
					isDel = true;
					stus.remove(i);
					break;
				}
			}
			
			if(isDel){
				System.out.println("删除操作已完成!");
			}else{
				System.out.println("无此学生信息!");
			}
		}
		
		
		/**
		 * 修改学生信息:
		 * 1.姓名
		 * 2.学号
		 * 3.性别
		 * 4.年龄
		 * 5.成绩
		 * @param stu
		 */
		public void updateStu(String stuNo){
			
			boolean flag = false;
			
			for(int i = 0; i < stus.size(); i ++){
				if(stuNo.equals(stus.get(i).getStuNo())){
					
					flag = true;
					
					information();
					
					switch(scanner.nextInt()){
						case 1:
							String name = name();
							stus.get(i).setStuName(name);;
							break;
						case 2:
							String stuNum = stuNum();
							stus.get(i).setStuNo(stuNum);
							break;
						case 3:
							String gender = gender();
							stus.get(i).setGender(gender);
							break;
						case 4:
							int age = age();
							stus.get(i).setAge(age);
							break;
						case 5:
							int score = score();
							stus.get(i).setScore(score);
							break;
						case 0:
							System.exit(0);
					}
					
					break;
				}
				
				if(!flag)
					System.out.println("您输入的学号不存在!");
			}
		}
		
		public void information(){
			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("0.退出");
			System.out.println("请输入序号:");
		}
		/**
		 * 根据学号查询学生信息
		 * 如果存在,输出学生信息
		 * @param stuNo
		 */
		public void queryStuByStuNo(String stuNo){
			
			boolean flag = false;
			
			for(int i = 0; i < stus.size(); i ++){
				if(stuNo.equals(stus.get(i).getStuNo())){
					System.out.println("姓名:" + stus.get(i).getStuName());
					System.out.println("学号:" + stus.get(i).getStuNo());
					System.out.println("性别:" + stus.get(i).getGender());
					System.out.println("年龄:" + stus.get(i).getAge());
					System.out.println("成绩:" + stus.get(i).getScore());
					
					System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");
					System.out.println("|\t姓名\t|\t\t学号\t\t|\t性别\t|\t年龄\t|\t成绩\t|");
					System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");
					System.out.println("|\t" + stus.get(i).getStuName() + "\t|\t    " + stus.get(i).getStuNo() + "     \t|\t" + stus.get(i).getGender() + 
							"\t|\t"  + stus.get(i).getAge() + "\t|\t" + stus.get(i).getScore() + "\t|");
					System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");
					
					flag = true;
				}
			}
			
			if(!flag)
				System.out.println("该学号不存在!");
		}
}

3.再新建一个类,将这个类作为操作菜单,通过用户输入的数字调用之前的增删改查操作:

import java.util.Scanner;

public class SystemService {
	
	Scanner scanner = new Scanner(System.in);
	
	
	public void bulletin(){
		System.out.println("1.添加学生信息");
		System.out.println("2.删除学生信息");
		System.out.println("3.修改学生信息");
		System.out.println("4.查询学生信息");
		System.out.println("0.退出系统");
		
		System.out.println("请输入序号:");
	}
	
	public void serviceChoose(){
		
		StuData sd = new StuData();
		
		System.out.println("-----欢迎使用学生信息管理系统-----");
		
		while(true){
			
			bulletin();
			
			switch(scanner.nextInt()){
				
				case 1:
					sd.append();
					System.out.println();
					break;
				case 2:
					sd.delStu();
					System.out.println();
					break;
				case 3:
					System.out.println("请输入要修改的学生的学号:");
					sd.updateStu(scanner.next());
					System.out.println();
					break;
				case 4:
					System.out.println("请输入要查询的学生的学号:");
					sd.queryStuByStuNo(scanner.next());
					System.out.println();
					break;
				case 0:
					System.exit(0);//退出系统
			}
		}
	}
}

4.最后写上主方法,就可以进行使用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础---简易提款机

    1.创建用户类User(包含卡号、姓名、密码、余额等属性),用户开卡时录入的姓名和密码(自动分配一个卡号、初始金额设置为0)。

    李志伟
  • 学生信息管理系统(使用数据库)

    2.新建操作类,因为这次要使用MySql数据库,所以要使用JDBC将Java与数据库链接起来。

    李志伟
  • Java基础---学生成绩操作系统

    1. 要求使用HashMap<String,Integer>存储每次考试的成绩(key键为姓名,value为成绩)。

    李志伟
  • Java中的引用传递

    我觉得引用传递  真的很好理解,不知道为什么大家觉得这么难,你只要掌握这几点就可以了

    wust小吴
  • 小朋友学Java(6):封装

    面向对象有三大特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。 本节讲封装。 程序1 class W...

    海天一树
  • 浅谈Java的反射机制

    JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调...

    浩Coding
  • 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    十方上下
  • 多线程编程学习八(原子操作类).

    Java 在 JDK 1.5 中提供了 java.util.concurrent.atomic 包,这个包中的原子操作类提供了一种用法简单、性能高效、线程安全地...

    JMCui
  • 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想。

    十方上下
  • Java开发GUI之Button控件 原

        Java中的awt包提供了丰富的用户界面组件。重要的是,Java的跨平台性使用awt包可以在Windows,MacOS等平台创建桌面软件。本篇博客总结B...

    珲少

扫码关注云+社区

领取腾讯云代金券