Java学习——面向对象

简单用数组和面向对象的思维写一个学生信息管理系统

一,系统需求如下:

  1. 用户在控制台输入指定的序号,系统会根据输入数字运行相关的功能

  2. 1.学生添加 2.查询所有学生的信息 3.查询一个专业的学生信息 4.根据学号查询学生的信息 5.输入学号修改学生的专业

    截图如下

二,代码介绍

public class Student {
	private String sid;//学号
	private String name;//学生姓名
	private String sex;//学生性别
	private int age;//学生年龄
	private String major;//学生专业
	//无参构造
	public Student() {
		// TODO Auto-generated constructor stub
	}
	//有参构造
	public Student(String sid, String name, String sex, int age, String major) {
		this.sid = sid;
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.major = major;
	}

	@Override
	public String toString() {
		return "Student [sid=" + sid + ", name=" + name + ", sex=" + sex + ", age=" + age + ", major=" + major + "]";
	}

	public String getSid() {
		return sid;
	}

	public void setSid(String sid) {
		this.sid = sid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

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

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}

}

2,数据控制层StudentDao.java

mport java.util.Scanner;
/**
 * 真正项目中,主类是最简单的,对实体进行增删改查的操作是封装在另外一个类里的
 * 使用的时候进行调用封装类就可以了.
 * 就好比自己买车,我只用知道车的功能,效果等具体功能,我并不用去管车的发动机是怎么做的,车的软件系统是怎么做的
 * 我只要用它的功能就行了,这就是封装的思想。
 * 
 * Dao层就是对其进行增删改查的,以后JavaWeb里面dao层就是对数据库进行增删改查的
 * 这里相当于就是用数组来代表数据库
 * @author 吴小斌
 *
 */
public class StudentDao {
	Student stu = new Student();
	Student[] students = new Student[100];// 代表容器,可以理解为数据库
	Scanner sc = new Scanner(System.in);// 扫描器

	/*
	 * 添加学生信息的方法
	 */

	public void addStudent() {
		System.out.println("请输入学生学号");
		String sid = sc.next();
		System.out.println("请输入学生姓名");
		String name = sc.next();
		System.out.println("请输入学生性别");
		String sex = sc.next();
		System.out.println("请输入学生年龄");
		int age = sc.nextInt();
		System.out.println("请输入学生专业");
		String major = sc.next();
		Student stu = new Student(sid, name, sex, age, major);// 构造函数,直接给其赋值就行了
		// 这个循环判断的时候数组中的对象是不是为空,如果为空就赋值,如果不是空的,获取下一个位置
		for (int i = 0; i < students.length; i++) {
			if (students[i] == null) {// 判断对象为空要需要null
				students[i] = stu;
				break;
			}
		}
	}

	/*
	 * 获取全部信息
	 */
	public void showAll() {
		for (int i = 0; i < students.length; i++) {
			if (students[i] == null) {// 判断对象为空要需要null
			} else {
				System.out.println(students[i].toString());
			}
		}
	}

	/*
	 * 根据专业查询一类学生的信息
	 */
	public void findByMajor() {
		System.out.println("请输入专业名");
		String major = sc.next();
		boolean flag = false;
		for (int i = 0; i < students.length; i++) {
			if (students[i] == null) {// 判断对象为空要需要null
				break;
			} else {
				if (students[i].getMajor().equals(major)) {
					System.out.println(students[i].toString());
					flag = true;
				}
			}
		}
		if (!flag) {
			System.out.println("该专业暂未录入");
			System.out.println();
		}
	}

	/*
	 * 根据学号来查找某一个学生的全部信息
	 */
	public void findStuBySid() {
		System.out.println("请输入需要查询学生的学号");
		String sid = sc.next();
		boolean flag = false;
		for (int i = 0; i < students.length; i++) {
			if (students[i] == null) {
				break;
			} else {
				if (students[i].getSid().equals(sid)) {
					System.out.println("此学生的信息为:\n");
					System.out.println(students[i].toString());
					flag = true;
				}
			}
		}
		if (!flag) {
			System.out.println("系统中无此学号!!!");
			System.out.println();
		}
	}

	/*
	 * 根据学号来拿到学生的专业
	 */
	public String findStuMajorBySid(String sid) {
		String major = null;
		boolean flag = false;
		for (int i = 0; i < students.length; i++) {
			if (students[i] == null) {
				break;
			} else {
				if (students[i].getSid().equals(sid)) {
					major = students[i].getMajor();
				}
			}
		}
		return major;
	}

	/*
	 * 根据学号修改学生的专业为目标专业
	 */
	public void updateMajorBySid() {
		System.out.println("请输入学生的学号");
		String stuId = sc.next();
		System.out.println("请输入学生现在的本专业");
		String majorOld = sc.next();
		boolean flag = false;
		for (int i = 0; i < students.length; i++) {
			if (students[i] == null) {
				break;
			} else {// 如果说输入的学号跟学生的专业对应,则是正确的
				if (findStuMajorBySid(stuId).equals(majorOld)) {
					flag = true;
				}
			}
		}
		if (flag) {
			System.out.println("请输入转入的目标专业");
			String majorNew = sc.next();
			for (int i = 0; i < students.length; i++) {
				if (students[i] == null) {
					break;
				} else {
					students[i].setMajor(majorNew);
					System.out.println("修改专业后的信息如下\n" + students[i].toString());
				}
			}
		} else {
			System.out.println("学号跟专业对不上,错误");
			menu();
		}

	}

	/*
	 * 菜单方法
	 */
	public void menu() {
		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("请输入您的选择");
		int num = sc.nextInt();
		switch (num) {
		case 1:
			addStudent();
			menu();
			break;
		case 2:
			showAll();
			menu();
			break;
		case 3:
			findByMajor();
			menu();
			break;
		case 4:
			findStuBySid();
			menu();
			break;
		case 5:
			updateMajorBySid();
			menu();
			break;
		case 0:
			System.out.println("感谢使用,再见");
			System.exit(0);
		}
	}

}

3,主类StudentMain.java

public class StudentMain {
	public static void main(String[] args) {
		StudentDao stu=new StudentDao();
		stu.menu();
	}
	
}

三,个人总结

1,在类里面,主方法外面定义的扫描器Scanner类可以在整个类中进行调用

以后如果说需要在整个类中使用扫描器,就可以这么调用

2,本项目只是用到了数组来存储,缺点是很明显的,它的长度是固定的,所以就很有局限性

今后学到了集合,就可以用集合来实现,当然学了数据库就更简单了

3,在给数组遍历元素赋值的时候,有一个条件就是判断是否为空,如果说此处是空的话,那么就可以直接赋值

如果不是空,那么就需要给后面那个位置赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值