学生管理系统(增删改查)

package com.zhidi.manger;

import java.util.Scanner;
/**
 * 主函数入口处
 * @author ytfunny.site
 *
 */
public class Show {
    public static Scanner sc=new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("*****************欢迎使用正方管理系统******************");
            boolean b=true;
            Login login = new Login();
            while(b){
                System.out.println("尚未登录,请选择:1、登录;2、注册;0、退出");
                String xz=sc.next();
                switch(xz){
                case "1":
                    boolean l=login.login();
                    if(l){
                        System.out.println("登录成功");
                        Main.order();
                    }else{
                        System.out.println("登录失败");
                    }
                    break;
                case "2":
                    login.reg();
                    break;
                case "0":
                    break;
                default:
                        System.out.println("输入有误");
                }
            }

        System.out.println("*****************感谢使用正方管理系统******************");
    }

}
package com.zhidi.manger;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    private static Scanner sc=new Scanner(System.in);
    private static List<Student> stulist=new ArrayList<Student>();
    private static ObjectStream os=new ObjectStream();
    public static void order(){
        Main m=new Main();
        System.out.println(Login.getUser().getName()+"欢迎使用教师管理系统");
        boolean b=true;
        while(b){
            System.out.println("请选择:1、添加学生;2、查看学生;3、存档;4、修改学生;5、删除学生,6、修改当前登录密码0、退出登录");
            String str=sc.next();
            switch(str){
            case "1":
                m.addStu();
                break;
            case "2":
                m.showStu();
                break;
            case "3":
                m.save();
                break;
            case "4":
                m.alterStu();
                break;
            case "5":
                m.delStu();
                break;
            case "6":
                m.alterPwd();
                return;
            case "0":
                System.out.println("是否保存:y/n");
                if(sc.next().equals("y")){
                    m.save();
                }
                b=false;
            }
        }
    }
    //添加学生;
    private void addStu(){
        Student stu=new Student();
        System.out.println("请输入学生姓名:");
        stu.setName(sc.next());
        System.out.println("请输入年龄:");
        stu.setAge(sc.nextInt());
        System.out.println("请输入性别:1.男,2.女");
        stu.setSex('男');
        if(sc.next().equals("2")){
            stu.setSex('女');
        }
        //将每个老师输入的学生归类,只是不打印
        User u=Login.getUser();
        stu.setUserName(u.getName());
        stulist.add(stu);
    }
    //查看学生
    private void showStu(){
        @SuppressWarnings("unchecked")
        List<Student> list=(List<Student>) os.readObj(Student.STUPATH);//读取学生对象
        if(list!=null && list.size()!=0){
            for (Student stu : list) {
                if(stu.getUserName().equals(Login.getUser().getName())){
                    //只打印对应老师输入的学生,其他人输入的学生信息不打印
                    System.out.println(stu);
                }
            }
        }
        if(stulist.size()>0){//如果临时文件中有学生信息
            for (Student student : stulist) {
                System.out.println(student);
            }
        }
    }
    //存档
    private void save(){
        @SuppressWarnings("unchecked")
        List<Student> list=(List<Student>) os.readObj(Student.STUPATH);
        if(list!=null && list.size()!=0){
            list.addAll(stulist);
            os.writeObj(list, Student.STUPATH);
        }else{
            os.writeObj(stulist, Student.STUPATH);
        }
        stulist.clear();
    }
    //修改学生
    private void alterStu(){
        Student s=null;
        @SuppressWarnings("unchecked")
        List<Student> list=(List<Student>) os.readObj(Student.STUPATH);//调出学生类对象
        System.out.println("请输入要修改的学生姓名:");
        String name=sc.next();
        if(name.equals("0")){
            return;//结束方法
        }
        for (Student stu : list) {
            if(stu.getName().equals(name)){//查到该学生信息时
                s=stu;//将集合中stu的地址付给s,此时s代替stu存在于集合list中
            }
        }
        if(s==null){
            System.out.println("查无此人");
            return;//结束方法
        }
        System.out.println("请输入修改后的姓名(输入0跳过此项):");
        String gn=sc.next();
        if(!gn.equals("0")){
            s.setName(gn);
        }
        System.out.println("请输入修改后的年龄(输入0跳过此项):");
        int ga=sc.nextInt();
        if(ga!=0){
            s.setAge(ga);
        }
        System.out.println("请输入修改后的性别(输入0跳过此项):");
        String gc=sc.next();
        if(!gc.equals("0")){
            s.setSex(gc.charAt(0));//将String类型的性别转为char类型
        }
        list.set(list.indexOf(s), s);
        os.writeObj(list,Student.STUPATH );
        System.out.println("修改完成");
    }
    //删除学生
    private boolean delStu(){
        Student st=null;
        @SuppressWarnings("unchecked")
        List<Student> list=(List<Student>) os.readObj(Student.STUPATH);//调出学生类对象
        System.out.println("请输入要删除的学生姓名:");
        String s=sc.next();
        if(list!=null && list.size()!=0){
            for (Student stu : list) {
                if(stu.getName().equals(s)){
                    st=stu;
                }
            }
        }
        if(st==null){
            System.out.println("查无此人");
            return false;//结束方法
        }
        System.out.println("确认删除:y/n");
        String sh=sc.next();
        if(sh.equals("y")){
            list.remove(st);//删除查到的指定学生对象
            os.writeObj(list, Student.STUPATH);
            System.out.println("删除成功");
            return true;
        }else{
            System.out.println("退出删除");
            return false;

        }
    }
    //修改密码
    private void alterPwd(){
        User u=null;
        @SuppressWarnings("unchecked")
        List<User>list=(List<User>) os.readObj(User.USERPATH);
        System.out.println("请输入管理员原密码:");
        String pw=sc.next();
        for (User user : list) {
            if(user.getPwd().equals(pw)){//原密码输入正确
                u=user;
            }
        }
        boolean bm=true;
        while(bm){
            System.out.println("请输入修改后的密码:");
            String str=sc.next();
            if(str.equals("0")){
                bm=false;
                return;//结束方法
            }
            System.out.println("请再次输入密码:");
            String strr=sc.next();
            if(strr.equals("0")){
                bm=false;
                return;//结束方法
            }
            if(str.equals(strr)){//密码输入一致
                u.setPwd(str);//修改密码
                os.writeObj(list, User.USERPATH);
                System.out.println("密码修改成功:");
                return;//结束方法
            }else{
                System.out.println("两次密码输入不一致,请重新输入:");
            }

        }

    }

}
package com.zhidi.manger;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 用户登录注册类
 * 
 * @author ytfunny.site
 *
 */
public class Login {
    private Scanner sc = new Scanner(System.in);
    private ObjectStream os = new ObjectStream();
    private static User user = null;

    public static User getUser() {
        return user;
    }

    @SuppressWarnings("static-access")
    public boolean login() {
        System.out.println("------用户登录-----");
        @SuppressWarnings("unchecked")
        List<User> list = (List<User>) os.readObj(User.USERPATH);
        boolean b = true;
        while (b) {
            System.out.println("请输入账号:");
            String name = sc.next();
            if (name.equals("0")) {
                return false;
            }
            if (list != null && list.size() != 0) {
                for (User user : list) {
                    if (user.getName().equals(name)) {// 匹配到此账号
                        boolean b2 = true;
                        while (b2) {
                            System.out.println("请输入密码:");
                            String pwd = sc.next();
                            if (pwd.equals("0")) {
                                return false;
                            }
                            if (user.getPwd().equals(pwd)) {
                                this.user=user;
                                return true;
                            } else {
                                System.out.println("密码错误,请重新输入!");
                                continue;
                            }
                        }
                    }
                }
                System.out.println("用户不存在,请重新输入账号!");// 没有匹配到账号
                continue;
            } else {// 数据库为空
                System.out.println("数据库中没有用户信息,请先注册!");
                return false;
            }

        }
        return true;
    }

    // 用户注册
    public void reg() {
        User u = new User();
        System.out.println("------用户注册-----");
        @SuppressWarnings("unchecked")
        List<User> list = (List<User>) os.readObj(User.USERPATH);
        boolean b = true;
        out: while (b) {
            System.out.println("请输入账号:");
            String name = sc.next();
            if(sc.next().equals("0")){
                return;//结束方法,退出
            }
            if (list != null && list.size() != 0) {
                for (User user : list) {
                    if (user.getName().equals(name)) {
                        System.out.println("此账号已存在,请重新输入");
                        continue out;
                    }
                }
                u.setName(name);
                break;
            } else {
                u.setName(name);
                break;
            }
        }
        System.out.println("请输入密码:");
        String pwd = sc.next();
        u.setPwd(pwd);
        if(sc.next().equals("0")){
            return;//结束方法,退出
        }
        if (list != null) {
            list.add(u);
        } else {
            list = new ArrayList<User>();
            list.add(u);
        }
        os.writeObj(list, User.USERPATH);
        System.out.println("注册成功");

    }
}
package com.zhidi.manger;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

/**
 * 学生信息的读取和写入
 * @author Administrator
 *
 */
public class ObjectStream {
    // 读取信息的方法
    public List<?> readObj(String path) {
        ObjectInputStream ois = null;
        List<?> list = null;
        try {
            File file = new File(path);
            if (file.exists()) {
                ois = new ObjectInputStream(new FileInputStream(file));
                list = (List<?>) ois.readObject();
            }
        } catch (FileNotFoundException e) {
            System.out.println("读取信息时未找到系统文件");
        } catch (ClassNotFoundException e) {
            System.out.println("读取信息时出现流异常");
        } catch (IOException e) {
            System.out.println("没有读取到指定信息数据");
        } finally {
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e) {
                    System.out.println("关闭读取信息资源时异常");
                }
            }
        }
        return list;
    }

    // 保存信息
    public void writeObj(List<?> list,String path){
        ObjectOutputStream oos= null;
        try {
            File file = new File(path);
            if(file.exists()){
                file.createNewFile();
            }
            oos = new ObjectOutputStream(new FileOutputStream(file));
            oos.writeObject(list);
        } catch (FileNotFoundException e) {
            System.out.println("保存信息时未找到系统文件");
        } catch (IOException e) {
            System.out.println("保存信息时出现流异常");
        }finally{
            if(oos!=null){
                try {
                    oos.close();
                } catch (IOException e) {
                    System.out.println("关闭保存信息资源时异常");
                }
            }
        }
    }
}
package com.zhidi.manger;

import java.io.Serializable;
/**
 * 学生信息类
 * @author ytfunny.site
 * @name 学生姓名
 * @STUPATH 设置学生信息保存的文件名常量
 * @userName 登录时用户名字
 */
@SuppressWarnings("serial")
public class Student implements Serializable{
    public static String STUPATH="data\\student.save";//设置学生信息保存的文件名常量
    private String name;//学生姓名
    private int age;//学生年龄
    private char sex;//学生性别
    private String userName;//登录时用户名字
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    @Override
    public String toString() {
        return "学生姓名:" + name + ",年龄:" + age + ", 性别:" + sex ;
    }


}
package com.zhidi.manger;

import java.io.Serializable;
/**
 * 用户信息类
 * @author Administrator
 * @USERPATH 用户信息保存路径
 * @name 用户登录时候的姓名
 * @pwd 用户登录时候的密码
 */
@SuppressWarnings("serial")
public class User implements Serializable{
    //保存信息用相对路径,信息随着项目走
    public static final String USERPATH="data\\user.save";//用户信息保存路径
    private String name;//用户登录时候的姓名
    private String pwd;//用户登录时候的密码
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    @Override
    public String toString() {
        return "用户姓名:" + name + ", 密码:" + pwd;
    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值