持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,[点击查看活动详情]
学生管理系统
逻辑代码
需求
1,管理员:账户,密码.
2,学生:学号,姓名,班级,成绩。
3,功能:管理员需要登录才能管理学生信息。
4,管理学生的信息:查询,添加,删除,修改。
流程
Admin:管理员类。Student:学生类。
Datas类:用于存储数据。里面有admins容器和student容器。(Arraylist)
StudentDao:负责学生的增删查改,操作Datas里的数据,从Datas读取数据再StudentDao给数据进行操作,数据层业务逻辑。
AdminDao:query()查询。
StudentManagement:放主函数,负责页面展示,上层业务逻辑,操控的是StudentDao,AdminDao。直接对StudentDao进行操作。
1,先创建管理员类。(实体类)
2,创建学生类。(实体类)
3,封装数据。(模拟数据库,预先存入一些数据)通过主函数中输出Datas.admins.size(),Datas.students.size()来检测数据是否传入。通过主函数.
4,StudentDao.
检查toString,返回:创建对象,studentDao.queryAll();//排序。
增加一个学生:主函数中:studentDao.addStydent(new Student("111","22",12,"34"));
修改:studentDao.modifyByStydent("111",new Student("112","22",12,"34"));
5,AdminDao。
6,StudentManagement。
管理员类
属性:account账号,password密码。
账号和密码不需要用get和set,没有必要设置修改和访问器。
当传入的账户和密码都相同用equals比较。
public class Admin{
private String account;
private String password;
public Admin(){//无参的构造函数
super();
}
public Admin(String account,String password)//自动生成构造函数(SAS)
{
this.account=account;
this.password=password;
}
//重写equals
@Override
public boolean equals(Object obj){
if(this==obj)
return true;
if(this==null)
return false;
if(getClass()!=obj.getClass())
return false;
Admin other=(Admin)obj;
if(account==null){
if(other.account!=null)
return false;
}else if(!account.equals(other.account))
return false;
if( password==null){
if(other.password!=null)
return false;
}else if(! password.equals(other. password))
return false;
return true;
}
}
学生类
属性:studentID学号,name姓名,age年龄,classType班级。
需要对这四个属性进行get和set.
需要重写equals.只需要对studentID进行重写
重写toString,没有的话打印出的是他的类名和对象地址
public class Student{
private String studentID;
private String name;
private int age;
private String classType;
public Student(){
super();
}
public Student(String studentID,String name,int age,String classType){
super();
this.studentID=studentID;
this.name=name;
this.age=age;
this.classType=classType;
}
//所有属性的get和set。
//重写equlas。
//重写toString,4个类 }
Datas类
变量是静态类型,要写静态代码块
public class Datas{
public static ArraryList<Admin> admins = new ArraryList<Admin>();//管理员数据容器
public static ArraryList<student> students = new ArraryList<student>();//学生数据容器
//初始化
static{
admins.add(new Admin("admin123","123"));
student.add(new Student("123","12","1","1"));
}
}
StudentDao
对数据的操作。主要对学生数据进行的增删查改。
Student student :students: student遍历students。student表示的是students集合当中每一个学生的对象。
student.getStudentID().equals(studentID):把每一个对象的id和当前所传入的id比较。
add:不带角标添加元素,默认是尾插的。
students.get(i):集合里的某一个学生
public class StudentDao{
private static ArraryList<Student> student = Datas.students;
pulic void queryAll(){
//查询并打印所有的学生
if(student.isEmpty()){
System.out.println("无学生信息");
}else{//按照学号大小排序
student.sort(new Comparator<Student>(){
@Override//重写被实现的方法
public int compare(Student o1,Student o2){
return o1.getStudentID.compareTo(o2.getStudentID());//字符串比大小
}
});
for(Student student :students){
System.out.println(student);
}
}
}
//按照学号查找学生
public bolean queryByStudentID(String studentID){
if(students.isEmpty()){return false;}
for(Student student :students){
if( student.getStudentID().equals(studentID)){
return true;
}
}
return false;
}
//增加一个学生
public boolean addStudent(Student student)//传的是学生对象{
students.add(student);
}
//根据学号删除一个元素
public boolean deleteByStudentID(String studentID){
for(int i=0;i<student.size();i++){
if(students.get(i).getStudentID().equals(studentID)){
students.remove(i);
return true;
}
}
return false;
}
//根据学号修改一个学生
public boolean modifyByStudentID(String oriStudentID,Student newStudent){
int index=-1;
for(int i=0;i< students.size();i++){
if(students.get(i).getStudentID().equals(oriStudentID)){
index=i;
}
}
if(index==-1){
return false;
}
students.get(index).setStudentID(newStudent.getStudentID());
students.get(index).setName(newStudent.getName());
students.get(index).setAge(newStudent.getAge());
students.get(index).setClassType(newStudent.getClassType());
return true;
}
}
AdminDao
主要对管理员数据进行的一些查操作.
AdminDao adminDao=new AdminDao();
adminDao.query("123","111");
public class AdminDao{
private static ArrayList<Admin> damins =Datas.admins;
public boolean query(String account,String password){
return query(new Admin(account,password));
}
public boolean query(Admin loginadmin)
{
if(admins.isEmpty()){
return false;
}
for(Admin admin:admins){
if(admin.equals(loginadmin)){
return true;
}
}
return false;
}
}
StudentManagement
主函数
Scanner scanner=new Scanner(System.in)
scanner:输入用空格隔开。
int number = scanner.nextInt();
String number = scanner.next();//不能有空格
String number = scanner.nextLine();//最好用这个
类型转化:Integer.parseInt();
判断学号唯一:studentDao.queryByStudentID(studentID);
new一个对象的时候快捷键“a+/”
public class StudentManagement{
private static StudentDao= new StudentDao();
private static AdminDao adminDao=new AdminDao();
private static Scanner scanner=new Scanner(System.in)
public static void main(String[] args){
System.out.print("输入管理员账号");
String account = Scanner.nextLine();
System.out.print("输入管理员密码");
String password = Scanner.nextLine();
if(adminDao.query(account,password)){
System.out.print("登录成功");
showStudentManagementMenu();//打印学生管理目录的函数
}else{
System.out.print("登录失败");}
}
private static void showStudentManagementMenu(){
while(true)
{
System.out.print("学生管理界面");
System.out.print("1查询学生");
System.out.print("2添加学生");
System.out.print("3删除学生");
System.out.print("4修改学生");
System.out.print("5退出");
System.out.print("选择操作");
int choice = Integer.parseInt(scanner.nextLine());
if(choice==1){
studentDao.queryAll();
}else if(choice==5){
break;
}else if(choice==3){
System.out.print("输入学号");
String studentID=scanner.nextLine();
if(studentDao.deleteByStudentID(studentID)){
System.out.print("删除成功");
}else{
System.out.print("删除失败");
}
}else if(choice==4){
System.out.print("输入学号");
String originalID=scanner.nextLine();
if(!studentDao.deleteByStudentID(originalID)){
System.out.print("学生学号不存在");
continue;
}
System.out.print("输入修改后的学号");
String studentID=scanner.nextLine();
if(studentDao.modifyByStudentID(originalID,new Student(studentID))){
System.out.print("修改成功");
}else{
System.out.print("修改失败");
}
}
}
}
}
22.下