1、项目介绍
简介
学生管理系统是一个典型的信息管理系统,熟悉并掌握其需求和设计思想对于理解和学习数据库操作和Java编程有非常大的帮助。
设计思路
思路:分为学生端和教师端
-
学生端的功能分为登录、注册、查看个人信息、查看成绩、申请修改信息 -
教师端的功能分为登录、注册、查看学生信息、修改学生信息、删除学生信息、添加学生信息、查看学生申请的修改信息

2、项目搭建
IDEA新建java项目
点击文件 –>新建

点击src右键新建–>软件包

输入软件包名称,回车即可

3、创建实体类
分析
因为实体类可以提供更好的代码组织和数据封装,提高代码的可读性、可维护性和可扩展性,使程序更加健壮和易于开发和维护。
-
我们有分学生端和教师端,所以我们需要创建两个实体类
-
Student -
Teach -
学生类和老师类都有自己的属性
-
学生类
信息 变量名 类型 姓名 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
3.1、创建学生类
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());
}
}
3.2、创建教师类
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 + "}";
}
}
4、功能实现
分析
-
首先我们需要先搭建起来登录界面,登录界面应该包含登录、注册功能 -
登录注册需要填写身份,判断是学生还是教师,再选择进入对应的界面
创建main函数
接下来的实现都是在主函数里面创建了,自行创建main函数
public class SystemDemo {
public static void main(String[] args) {
}
}
4.1、编写主界面
/**
* 主界面搭建
*/
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("输入错误,请选择序号里面的数字");
}
}
4.2、编写登录界面
分析
-
登录界面需要验证身份,选择让进入学生端还是教师端
//登录界面
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;
}
4.3、编写教师端功能
-
教师端是比较复杂的,需要实现功能有:增删改查和查看学生修改申请
4.3.1、教师端主界面编写
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("输入错误请选择存在的序号");
}
}
}
4.3.2、查询单个学生信息功能实现
通过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());
}
}
}
4.3.3、添加学生功能实现
//添加学生
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;
}
}
}
4.3.4、查询id是否存在
该方法用于判断集合里面是否有这个学生了,在增删改查都用的到
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;
}
4.3.5、修改学生信息
通过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;
}
}
4.3.6、查询学生所在下标位置
该方法可以精准确认学生存放顺序位置,在修改和删除方法会使用到
//查询学生所在下标位置
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;
}
4.3.7、删除学生信息
通过上述方法,确认下标之后用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());
}
}
4.3.9、查询学生申请信息
//查询学生申请信息
public static void selectInformation(){
for (int i = 0; i < ArrayInformation.size(); i++) {
System.out.println(ArrayInformation);
}
}
4.4、编写学生端功能
分析
-
学生端的功能有:查看个人信息、查看成绩、提交修改申请,这些功能比较简单,都是一些循环遍历
4.4.1、学生端主界面编写
//学生端
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("输入错误请选择存在的序号");
}
}
}
4.4.2、查看个人信息功能实现
//查看个人信息方法
public static void viwePersonalInformation(String id){
//查看学生所处下标
int i = checkIndex(id);
if (i > -1){
ArrayStudent.get(i).viewPerson();
}
}
4.4.3、查看成绩信息功能实现
//查看成绩
public static void viweAchieveInformation(String id){
int i = checkIndex(id);
if (i > -1){
ArrayStudent.get(i).viewAchieve();
}
}
4.4.4、提交申请功能实现
//学生提交申请
public static void submitUpdate(){
Scanner scanner = new Scanner(System.in);
System.out.println("请描述你要更改的信息,例如:原姓名:小林修改为小陈");
String inform = scanner.next();
ArrayInformation.add(inform);
}
5、总结
有一段时间没写这种控制台版本的了,花了将近两个小时的时间,基本功能已经实现了,相信大家第一个项目基本上都是学生管理系统,不知道这样子写有没有写明白了,没啥文化不太会写,项目里面其实还有很多可以修改的部分,比如一些方法可以用重载,如果是新手可以再以后学习到IO,再用IO来存储账号信息,后面学到mysql,再用mysql,这样子慢慢进步上去。
写这个项目主要是锻炼自己对Java编程语言有了更深入的了解和运用,对软件开发的整个生命周期有了更清晰的认识。
如果需要源码和笔记可以私信我或添加公棕号:小林学编程,回复学生管理系统
原文始发于微信公众号(小林学编程):java入门项目:学生管理系统(进阶版超详细搭建)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/219437.html