本人自学java一周,就可以写自己的一个小小项目了,不用感觉看不懂,全是白话,都能看懂,该程序主要实现对数据的增、删、改、查等功能,耐住性子往下看,相信你一定也能拿下!!!!
目录
一、需要掌握哪些知识点?
二、实施步骤
1.导包
2.创建学生类
3.测试
3.1 菜单
3.2 添加学生信息
3.3 修改学生信息
3.4 删除学生信息
3.5 查看学生信息
3.6 main函数的调用
总结
一、需要掌握哪些知识点?
循环语句:for、do..while、while
判断语句:if
集合:ArrayList
类的定义
封装:private
二、实施步骤
1.导包
什么导包啥的咱们也不用深入了解,都是小白,在这个管理系统,你们只需要记住,咱们只需要用到这两个包,键盘录入包,集合包;
代码如下(示例):
import java.util.Scanner; import java.util.ArrayList;
2.创建学生类
看不懂没事,在这我简单讲解一下这些关键字的含义,封装(private)的意思就是防止外部用户直接对系统内部的成员数据进行操作,说白了就是起到保护的作用,但难道这就意味着我们自己写的代码,自己也不能对数据进行操作吗,当然不行!!!,所以在该类中需要写成员方法:修改成员数据set成员名(),获取成员数据get成员名()。在这你可能会觉得总不能一个一个用set来给成员进行赋值吧,当然不是!!!,所以这里我们用带参构造方法public 类名(类型 成员变量){},在我们不写构造方法时,类中会自动默认我们写了一个无参构造方法,但我们写了带参构造时就一定要写无参,否则后续的bug你不可想象。至于this关键字就是当你的形参名和成员名一致时,起到一个指向的作用,可以理解为给成员加了一个标志,让你的形参名和成员名有些许不同;
代码如下:
//定义学生对象
public class Student {
private String sid;//学号
private String name;//姓名
private String age;//年龄
private String address;//居住地
//无参、带参构造方法
public Student(){
}
public Student(String sid,String name,String age,String address){
this.sid=sid;
this.name=name;
this.age=age;
this.address=address;
}
//成员方法
public void setAge(String age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setSid(String sid) {
this.sid = sid;
}
public void setAddress(String address) {
this.address = address;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public String getAge() {
return age;
}
public String getSid() {
return sid;
}
}
v
3.测试
3.1 菜单
一个简单的输出语句即可完成!
代码如下:
public static void mean(){
System.out.println("------------学生管理系统------------");
System.out.println("------------1、添加学生信息----------");
System.out.println("------------2、修改学生信息----------");
System.out.println("------------3、删除学生信息----------");
System.out.println("------------4、查看学生信息----------");
System.out.println("------------5、退出----------------");
}
3.2 添加学生信息
实现思路:不知你有没有遇到过你的名字和别人的名字一样的情况,但在这我们考虑的不是这个,而是学号,名字可以相同,但学号不行,所以首先需要写一个方法来判断学号是否被使用,如果被使用,我们需要让用户重新输入,每次的数据我们都导入至我们的集合中;
//检查学号是否存在
public static boolean isUsed(ArrayList array,String sid){
boolean temp = false;//未被使用
for(int i=0;i< array.size();i++){
Student s=array.get(i);
if (s.getSid().equals(sid)){
temp=true;
break;
}//学号存在
}
return temp;
}
//添加学生
public static void AddStudent(ArrayList array){
//创建录入对象
Scanner sc = new Scanner(System.in);
//创建学生对象
Student s=new Student();
String name,sid,age,address;
do{
//数据输入
System.out.println("请输入学号:");
sid=sc.nextLine();
//判断学号是否被使用
boolean temp=isUsed(array,sid);
if (temp){
System.out.println("该学号已被使用,请重新输入");
continue;
}
else{
System.out.println("请输入姓名:");
name=sc.next();
System.out.println("请输入年龄:");
age=sc.next();
System.out.println("请输入居住地址:");
address=sc.next();
//传入学生对象
//采用成员方法传
s.setAddress(address);
s.setAge(age);
s.setName(name);
s.setSid(sid);
//保存至集合中
array.add(s);
break;
}
}while(true);
System.out.println("添加成功!");
}
测试如下:
查看信息:
3.3 修改学生信息
实现思路:首先让用户输入需要修改的学号,然后判断学号是否存在,如果不存在让用户重新输入,存在则让用户输入需要修改的位置,这里才用do..while循环是防止用户需要修改多处信息;(equals是判断字符串的是否相同!)
public static void SetStudent(ArrayListarray){ Scanner sc =new Scanner(System.in); System.out.println("输入你需要修改的学生学号:"); String sid = sc.nextLine(); //判断输入学号是否存在 int index=-1;//不存在 for (int i=0;i< array.size();i++){ Student s = array.get(i); if (s.getSid().equals(sid)){ index=0; break; }//学号存在 } if (index==-1){ System.out.println("你输入的学号不存在,请重新输入:"); } else{ Student s=array.get(index); do { System.out.println("请输入需要修改的位置:"); String flag = sc.next(); String choose; if (flag.equals("姓名")) { System.out.println("输入新的姓名:"); String name = sc.next(); s.setName(name); System.out.println("是否还有别的信息需要更改(需要/不需要)"); choose = sc.next(); if (choose.equals("需要")){ continue; }else break; } else if (flag.equals("年龄")) { System.out.println("输入新的年龄:"); String age = sc.next(); s.setAge(age); System.out.println("是否还有别的信息需要更改(需要/不需要)"); choose = sc.next(); if (choose.equals("需要")){ continue; }else break; } else if (flag.equals("居住地")) { System.out.println("输入新的居住地:"); String address = sc.next(); s.setAddress(address); System.out.println("是否还有别的信息需要更改(需要/不需要)"); choose = sc.next(); if (choose.equals("需要")){ continue; }else break; } else System.out.println("输入错误,没有该信息,请重新输入!"); }while(true); System.out.println("修改成功!"); } }
测试如下:
查看信息:
3.4 删除学生信息
实现思路:首先也需要判断学号是否存在,不然删除啥啊,啥也删除不了。如果存在,采用for循环返回其在集合中的位置,届时直接删除即可!
public static void DropStudent(ArrayListarray){ Scanner sc =new Scanner(System.in); System.out.println("请输入你需要删除的学号:"); String sid = sc.nextLine(); int index=-1;//学号不存在 //检查学号是否被使用 for (int i = 0; i < array.size(); i++) { Student s = array.get(i); if (s.getSid().equals(sid)) { index = i; break; }//学号存在 } if (index == -1) { System.out.println("你删除的学号不存在,请重新输入:"); } else { array.remove(index); System.out.println("删除成功!"); } }
查看有那些信息:
删除操作后:
删除003并查看:
3.5 查看学生信息
实现思路:首先判断集合中是否有数据,没有就提示用户输入,有则一个for循环,切记切记!!!,我们在输出时必须将集合中的数据拿出来给到学生类,采用学生类中的成员方法进行数据的输出,不然拿出的数据将是一片,你都不明白哪个是哪个的;(这里涉及到集合的含义:我简单讲一下就是集合能够将你的一串信息放在一块儿,并保持原有的属性,你可以类比为你在讲一个学生对象的信息传到集合时,集合就给这个对象分配了一个小"房子",把这个对象存进去,当你取时,也是"房子"里的信息全取);
public static void PrintStudent(ArrayListarray){ if (array.size()==0){ System.out.println("无信息,请先添加信息再查询!"); return; } System.out.println("学号tt姓名tt年龄tt居住地"); for (int i=0;i< array.size();i++){ Student s = array.get(i); System.out.println(s.getSid()+"tt"+s.getName()+"tt"+s.getAge()+"岁"+"t"+s.getAddress()); } }
3.6 main函数的调用
public static void main(String[] args) {
//创建集合对象
ArrayList array=new ArrayList();
//创建录入对象
Scanner sc = new Scanner(System.in);
while(true){
mean();
System.out.println("请输入你的选择:");
int choose = sc.nextInt();
switch (choose){
case 1:{
AddStudent(array);
break;
}
case 2:{
SetStudent(array);
break;
}
case 3:{
DropStudent(array);
break;
}
case 4:{
PrintStudent(array);
break;
}
default:
System.out.println("谢谢使用!");
System.exit(0);
}
}
}
总结
积少成多,不必好高骛远,认真完成一个个小小的项目,回过头来你才会发现你的转变!!!
以上只是我的一些理解,希望多多指正,大家一起探讨编程!



