赞
踩
简介
学生管理系统是一个典型的信息管理系统,熟悉并掌握其需求和设计思想对于理解和学习数据操作和Java编程有非常大的帮助。
设计思路
**思路:**分为学生端和教师端
IDEA新建java项目
点击文件 -->新建
点击src右键新建–>软件包
输入软件包名称,回车即可
分析
因为实体类可以提供更好的代码组织和数据封装,提高代码的可读性、可维护性和可扩展性,使程序更加健壮和易于开发和维护。
我们有分学生端和教师端,所以我们需要创建两个实体类
学生类和老师类都有自己的属性
学生类
信息 | 变量名 | 类型 |
---|---|---|
姓名 | Name | String |
学号 | Id | String |
年龄 | Age | int |
性别 | Sex | String |
密码 | Password | String |
家庭住址 | Address | String |
电话 | Phone | String |
语文成绩 | Chinese | double |
数学成绩 | Math | double |
英语成绩 | English | double |
总分 | Score | double |
教师类
信息 | 变量名 | 类型 |
---|---|---|
姓名 | Name | String |
工号 | Id | String |
年龄 | Age | int |
性别 | Sex | String |
密码 | Password | String |
电话 | Phone | String |
Student
package com.demo.studentsystem; public class Student { private String Name; //姓名 private String Id; //学号 private int Age; //年龄 private String Sex; //性别 private String Password; //密码 private String Address; //地址 private String Phone; //电话 private double Chinese; //语文成绩 private double Math; //数学成绩 private double English; //英语成绩 private double Score; //总分 public Student() { } public Student(String Name, String Id, int Age, String Sex, String Password, String Address, String Phone, double Chinese, double Math, double English) { this.Name = Name; this.Id = Id; this.Age = Age; this.Sex = Sex; this.Password = Password; this.Address = Address; this.Phone = Phone; this.Chinese = Chinese; this.Math = Math; this.English = English; } /** * 获取 * @return Name */ public String getName() { return Name; } /** * 设置 * @param Name */ public void setName(String Name) { this.Name = Name; } /** * 获取 * @return Id */ public String getId() { return Id; } /** * 设置 * @param Id */ public void setId(String Id) { this.Id = Id; } /** * 获取 * @return Age */ public int getAge() { return Age; } /** * 设置 * @param Age */ public void setAge(int Age) { this.Age = Age; } /** * 获取 * @return Sex */ public String getSex() { return Sex; } /** * 设置 * @param Sex */ public void setSex(String Sex) { this.Sex = Sex; } /** * 获取 * @return Password */ public String getPassword() { return Password; } /** * 设置 * @param Password */ public void setPassword(String Password) { this.Password = Password; } /** * 获取 * @return Address */ public String getAddress() { return Address; } /** * 设置 * @param Address */ public void setAddress(String Address) { this.Address = Address; } /** * 获取 * @return Phone */ public String getPhone() { return Phone; } /** * 设置 * @param Phone */ public void setPhone(String Phone) { this.Phone = Phone; } /** * 获取 * @return Chinese */ public double getChinese() { return Chinese; } /** * 设置 * @param Chinese */ public void setChinese(double Chinese) { this.Chinese = Chinese; } /** * 获取 * @return Math */ public double getMath() { return Math; } /** * 设置 * @param Math */ public void setMath(double Math) { this.Math = Math; } /** * 获取 * @return English */ public double getEnglish() { return English; } /** * 设置 * @param English */ public void setEnglish(double English) { this.English = English; } /** * 获取 * @return Score */ public double getScore() { this.Score = (this.Math+this.English+this.Chinese) / 3; return this.Score; } public String toString() { return "Student{Name = " + Name + ", Id = " + Id + ", Age = " + Age + ", Sex = " + Sex + ", Password = " + Password + ", Address = " + Address + ", Phone = " + Phone + ", Chinese = " + Chinese + ", Math = " + Math + ", English = " + English + ", Score = " + Score + "}"; } public void viewPerson(){ System.out.println("姓名:"+getName()); System.out.println("年龄:"+getAge()); System.out.println("学号:"+getId()); System.out.println("性别:"+getSex()); System.out.println("密码:"+getPassword()); System.out.println("住址:"+getAddress()); System.out.println("电话:"+getPhone()); } public void viewAchieve(){ System.out.println("语文成绩:"+getChinese()); System.out.println("数学成绩:"+getMath()); System.out.println("英语成绩:"+getEnglish()); System.out.println("总分:"+getScore()); } }
Teach
package com.demo.studentsystem; public class Teach { private String name; private String Id; private int Age; private String Sex; private String Password; private String Phone; public Teach() { } public Teach(String name, String Id, int Age, String Sex, String Password, String Phone) { this.name = name; this.Id = Id; this.Age = Age; this.Sex = Sex; this.Password = Password; this.Phone = Phone; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return Id */ public String getId() { return Id; } /** * 设置 * @param Id */ public void setId(String Id) { this.Id = Id; } /** * 获取 * @return Age */ public int getAge() { return Age; } /** * 设置 * @param Age */ public void setAge(int Age) { this.Age = Age; } /** * 获取 * @return Sex */ public String getSex() { return Sex; } /** * 设置 * @param Sex */ public void setSex(String Sex) { this.Sex = Sex; } /** * 获取 * @return Password */ public String getPassword() { return Password; } /** * 设置 * @param Password */ public void setPassword(String Password) { this.Password = Password; } /** * 获取 * @return Phone */ public String getPhone() { return Phone; } /** * 设置 * @param Phone */ public void setPhone(String Phone) { this.Phone = Phone; } public String toString() { return "Teach{name = " + name + ", Id = " + Id + ", Age = " + Age + ", Sex = " + Sex + ", Password = " + Password + ", Phone = " + Phone + "}"; } }
分析
创建main函数
接下来的实现都是在主函数里面创建了,自行创建main函数
public class SystemDemo {
public static void main(String[] args) {
}
}
/** * 主界面搭建 */ while (true) { System.out.println("_________________________________"); System.out.println(" 欢迎使用学生管理系统 "); System.out.println(" 1、登录系统 "); System.out.println(" 2、注册账号" ); System.out.println(" 3、退出系统" ); System.out.println("_________________________________"); //从键盘接受数据 System.out.println("请输入您的选择:"); Scanner scanner = new Scanner(System.in); int Number = scanner.nextInt(); if (Number == 1){ //调用登录界面 LoginSystem(); } else if (Number == 2){ //调用注册界面 RegisterSystem(); } else if (Number == 3){ System.out.println("感谢您的使用系统"); //调出循环 break; } else { System.out.println("输入错误,请选择序号里面的数字"); } }
分析
//登录界面 public static void LoginSystem() { System.out.println("欢迎进入登录界面"); Scanner scanner = new Scanner(System.in); while (true){ System.out.println("请输入您的身份(教师或者学生,输入0则返回上一级):"); String identity = scanner.next(); if ("教师".equals(identity)){ System.out.println("请输入您的工号:"); String id = scanner.next(); System.out.println("请输入您的密码"); String password = scanner.next(); //调用判断是否存在 boolean result = JudgmentExistTeach(id, password); if (result){ System.out.println("登录成功"); //跳转到教师端 TeachTerminal(id); } else { System.out.println("登录失败,请检查你的工号和密码是否有问题"); } } else if ("学生".equals(identity)){ System.out.println("请输入您的学号:"); String id = scanner.next(); System.out.println("请输入您的密码"); String password = scanner.next(); //调用判断是否存在 boolean result = JudgmentExistStudent(id, password); if (result){ System.out.println("登录成功"); //跳转到学生 StudentTerminal(id); } else { System.out.println("登录失败,请检查你的工号和密码是否有问题"); } } else { if (identity.equals("0")){ break; } System.out.println("您的输入有问题"); } } }
创建方法判断教师是否存在
通过传进来的id和password和集合进行判断,id存在,password正确说明登录成功
public static boolean JudgmentExist(String id,String password){ //如果列表里面没有东西,那就不需要判断,直接返回不存在 if (ArrayTeach.size() == 0){ System.out.println("用户不存在,请注册"); return false; } //循环判断用户是否存在 for (int i = 0; i < ArrayTeach.size(); i++) { if (ArrayTeach.get(i).getId().equals(id)){ if (ArrayTeach.get(i).getPassword().equals(password)){ return true; } } } return false; }
//判断学生用户是否存在 public static boolean JudgmentExistStudent(String id,String password){ //如果列表里面没有东西,那就不需要判断,直接返回不存在 if (ArrayStudent.size() == 0){ System.out.println("用户不存在,请注册"); return false; } //循环判断用户是否存在 for (int i = 0; i < ArrayStudent.size(); i++) { if (ArrayStudent.get(i).getId().equals(id)){ if (ArrayStudent.get(i).getPassword().equals(password)){ return true; } } } return false; }
public static void TeachTerminal(String id){ System.out.println("你好老师,欢迎来到教师端管理系统"); Scanner scanner = new Scanner(System.in); while (true){ 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("6、查询所有学生"); System.out.println("7、退出管理系统"); int Number = scanner.nextInt(); if (Number == 1){ System.out.println("请输入学生学号"); String checkId = scanner.next(); StudentId(checkId); } else if (Number == 2){ boolean result = AddStudent(); if (result){ System.out.println("添加成功"); } else { System.out.println("添加失败"); } } else if (Number == 3){ System.out.println("请输入学生学号"); String updateId = scanner.next(); //调用更新方法 boolean result = UpdateStudent(updateId); if (result){ System.out.println("修改成功"); } else { System.out.println("修改失败"); } } else if (Number == 4){ System.out.println("请输入要删除的学生学号"); String delId = scanner.next(); //调用删除方法 boolean result = delStudent(delId); if (result){ System.out.println("删除成功"); } else { System.out.println("删除失败"); } } else if (Number == 5){ //调用查询方法 selectStudent(); } else if (Number == 6){ //调用查看信息方法 selectInformation(); } else if (Number == 7){ System.out.println("感谢使用,再见"); System.exit(0); } else { System.out.println("输入错误请选择存在的序号"); } } }
通过id遍历数组实现
public static void StudentId(String id){
for (int i = 0; i < ArrayStudent.size(); i++) {
//如果id存在输出
if (id.equals(ArrayStudent.get(i).getId())){
System.out.println(ArrayStudent.get(i).toString());
}
}
}
//添加学生 public static boolean AddStudent(){ Scanner scanner = new Scanner(System.in); while (true){ System.out.println("请输入学生学号"); String id = scanner.next(); //调用查询id方法,查看id是否存在 boolean flag = JudgmentId(id); if (flag) { System.out.println("请输入学生姓名"); String name = scanner.next(); System.out.println("请输入学生年龄"); int age = scanner.nextInt(); System.out.println("请输入学生性别"); String sex = scanner.next(); System.out.println("请输入学生密码"); String password = scanner.next(); System.out.println("请输入学生住址"); String address = scanner.next(); System.out.println("请输入学生电话"); String phone = scanner.next(); System.out.println("请输入学生语文成绩"); double chinese = scanner.nextDouble(); System.out.println("请输入学生数学成绩"); double math = scanner.nextDouble(); System.out.println("请输入学生英语成绩"); double english = scanner.nextDouble(); Student student = new Student(); student.setId(id); student.setName(name); student.setSex(sex); student.setPassword(password); student.setAddress(address); student.setPhone(phone); student.setChinese(chinese); student.setMath(math); student.setEnglish(english); //添加进集合 ArrayStudent.add(student); //跳出循环 return true; } else { System.out.println("用户已经存在"); return false; } } }
该方法用于判断集合里面是否有这个学生了,在增删改查都用的到
public static boolean JudgmentId(String id){
for (int i = 0; i < ArrayStudent.size(); i++) {
if (ArrayStudent.get(i).getId().equals(id)){
return false;
}
}
return true;
}
通过id去确认学生信息进行修改
//修改学生信息 public static boolean UpdateStudent(String id){ Scanner scanner = new Scanner(System.in); boolean flag = JudgmentId(id); if (!flag){ //查询下标记位置 int i = checkIndex(id); if (i>-1){ System.out.println("请输入学生姓名"); ArrayStudent.get(i).setName(scanner.next()); System.out.println("请输入学生年龄"); ArrayStudent.get(i).setAge(scanner.nextInt()); System.out.println("请输入学生性别"); ArrayStudent.get(i).setSex(scanner.next()); System.out.println("请输入学生密码"); String password = scanner.next(); ArrayStudent.get(i).setPassword(scanner.next()); System.out.println("请输入学生住址"); ArrayStudent.get(i).setAddress(scanner.next()); System.out.println("请输入学生电话"); ArrayStudent.get(i).setPhone(scanner.next()); System.out.println("请输入学生语文成绩"); ArrayStudent.get(i).setChinese(scanner.nextDouble()); System.out.println("请输入学生数学成绩"); ArrayStudent.get(i).setMath(scanner.nextDouble()); System.out.println("请输入学生英语成绩"); ArrayStudent.get(i).setEnglish(scanner.nextDouble()); } return true; } else { System.out.println("不存在此学生"); return false; } }
该方法可以精准确认学生存放顺序位置,在修改和删除方法会使用到
//查询学生所在下标位置
public static int checkIndex(String id){
for (int i = 0; i < ArrayStudent.size(); i++) {
if (ArrayStudent.get(i).getId().equals(id)){
return i;
}
}
return -1;
}
通过上述方法,确认下标之后用remove方法删除
//删除学生信息
public static boolean delStudent(String id){
boolean flag = JudgmentId(id);
//存在返回flag
if (!flag){
int i = checkIndex(id);
ArrayStudent.remove(i);
return true;
} else {
System.out.println("学生不存在");
return false;
}
}
4.3.8、查询所有学生信息
//查询所有学生
public static void selectStudent(){
for (int i = 0; i < ArrayStudent.size(); i++) {
System.out.println(ArrayStudent.get(i).toString());
}
}
//查询学生申请信息
public static void selectInformation(){
for (int i = 0; i < ArrayInformation.size(); i++) {
System.out.println(ArrayInformation);
}
}
分析
//学生端 public static void StudentTerminal(String id){ System.out.println("你好同学,欢迎使用学生管理系统"); Scanner scanner = new Scanner(System.in); while (true){ System.out.println("请输入您的选项:"); System.out.println("1、查看个人信息"); System.out.println("2、查看学业成绩"); System.out.println("3、提交修改信息"); System.out.println("4、退出管理系统"); int index = scanner.nextInt(); if (index == 1){ viwePersonalInformation(id); } else if (index == 2){ viweAchieveInformation(id); } else if (index == 3){ submitUpdate(); System.out.println("提交成功,等待老师审核"); } else if (index == 4){ System.out.println("感谢使用,再见"); System.out.println("请选择登录或退出"); break; } else { System.out.println("输入错误请选择存在的序号"); } } }
//查看个人信息方法
public static void viwePersonalInformation(String id){
//查看学生所处下标
int i = checkIndex(id);
if (i > -1){
ArrayStudent.get(i).viewPerson();
}
}
//查看成绩
public static void viweAchieveInformation(String id){
int i = checkIndex(id);
if (i > -1){
ArrayStudent.get(i).viewAchieve();
}
}
//学生提交申请
public static void submitUpdate(){
Scanner scanner = new Scanner(System.in);
System.out.println("请描述你要更改的信息,例如:原姓名:小林修改为小陈");
String inform = scanner.next();
ArrayInformation.add(inform);
}
有一段时间没写这种控制台版本的了,花了将近两个小时的时间,基本功能已经实现了,相信大家第一个项目基本上都是学生管理系统,不知道这样子写有没有写明白了,没啥文化不太会写,项目里面其实还有很多可以修改的部分,比如一些方法可以用重载,如果是新手可以再以后学习到IO,再用IO来存储账号信息,后面学到mysql,再用mysql,这样子慢慢进步上去。
写这个项目主要是锻炼自己对Java编程语言有了更深入的了解和运用,对软件开发的整个生命周期有了更清晰的认识。
如果需要源码和笔记可以私信我或添加公棕号:小林学编程,回复学生管理系统
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。