js学生管理系统代码

需求:

 - 管理员信息功能:

//   * 可登录、注册

//   * 账号必须是6-18的数字、字母下划线,第一位只能是字母

//   * 登录成功后可对学生信息进行操作

- 学生信息功能:

//   * 操作提示: 1.新增  2.删除  3.查询  4.修改  5.退出

//   * 1.1 新增可增: name、age、gender、score。 id 自增

//   * 2.1 删除: 按 id 删

//   * 3.1 查询:1.查询所有 2.分类查询 3.退出查询

//          3.1.1 打印所有学生数组

//          3.1.2 1.姓名 2.年龄 3.性别 4.成绩

//   * 4.1 修改:根据输入的学生 id 修改,可改:

//         1. 姓名 2. 年龄 3. 性别 4. 成绩 5.完成

直接在Visual studio code 中终端运行即可。

这个主要包含了js基础阶段的大部分知识点,包括数组、函数等之类的方法,算是一道比较笼统的题。学生管理系统的页面版后面会发,请君一阅。

【注:仅作自己查看和分享学习之用】

// 管理员
const users = [
    { username: 'zhangsan', password: '123' },
    { username: 'lisisi', password: '456' }
];
// 学生
const studentsData = [
    { id: 1, name: 'zhao', age: '18', gender: 'male', score: '98' },
    { id: 2, name: 'qian', age: '20', gender: 'female', score: '100' },
    { id: 3, name: 'sun', age: '17', gender: 'male', score: '77' },
    { id: 4, name: 'li', age: '22', gender: 'female', score: '65' },
    { id: 5, name: 'zhou', age: '19', gender: 'male', score: '80' }
];
const rs = require(`readline-sync`);
let enter = true, operEnter = true, correct = /^([a-z]|[A-Z]){1}\w{5,17}$/;
function main() {
    console.log(`欢迎进入学生管理系统!`);
    while (enter) {
        console.log(`请选择:1、登录  2、注册  0退出`);
        let xuan = rs.question() - 0;
        switch (xuan) {
            case 1://登录
                login(users, correct);
                break;
            case 2://注册
                register(users, correct);
                break;
            case 0://退出
                let welExit = '欢迎';
                enter = exit(enter, welExit);
                break;
            default:
                console.log(`没有这个选项功能,请重新选择!`);
                break;
        }
    }

}
main();

//登录界面
function login(users, correct) {
    console.log(`======登录界面======`);
    //登录一共有三次机会
    for (let i = 0; i < 3; i++) {
        console.log(`请输入账号:`);
        let userNum = rs.question();
        console.log(`请输入密码:`);
        let pwd = rs.question();
        if (correct.test(userNum)) {
            let zai1 = users.some(item => item.username == userNum && item.password == pwd);
            if (zai1) {
                console.log(users);
                console.log(`登录成功!欢迎您进入学生管理主菜单界面!`);
                operEnter = true;
                operation(studentsData);
                break;
            } 
            if (2 - i == 0) {
                console.log(`三次机会已用完,账号已锁定,请联系管理员!`);
                break;
            }else {
                console.log(`账号或密码错误,您还有${2 - i}次机会!`);
            }
        } else {
            console.log(`账号格式错误!只能是首位为字母的6-18的数字、字母及下划线`);
            i--;
        }
    }
}

//注册界面
function register(users, correct) {
    console.log(`======注册界面======`);
    while (true) {
        console.log('请输入您要注册的账号:');
        let newUser = rs.question();
        console.log('请输入您要注册的密码:');
        let newPwd = rs.question();
        if (correct.test(newUser)) {
            let zai2 = users.filter(item => item.username == newUser);
            if (zai2.length == 0) {
                users.push({ username: newUser, password: newPwd });
                break;
            } else {
                console.log('账户已存在,请重新输入!');
            }
        } else {
            console.log(`账号格式错误!只能是首位为字母的6-18的数字、字母及下划线`);
        }

    }
}

//主界面
function operation(studentsData) {
    while (operEnter) {
        console.log(`1: 新增  2: 删除  3: 查询  4: 修改  0: 退出`);
        console.log(`请输入您的选择:`);
        let choose = rs.question() - 0;
        switch (choose) {
            case 1://新增
                add(studentsData);
                break;
            case 2://删除
                remove(studentsData);
                break;
            case 3://查询
                search(studentsData);
                break;
            case 4://修改
                modify(studentsData);
                break;
            case 0://退出
                let operExit = '主菜单';
                operEnter = exit(operEnter, operExit);
                break;
            default:
                console.log(`没有这个选项功能,请重新选择!`);
                break;
        }
    }
}

//新增界面
function add(studentsData) {
    console.log(`=====新增界面=====`);
    console.log(`请输入姓名:`);
    let name = rs.question();
    console.log(`请输入年龄:`);
    let age = rs.question();
    console.log(`请输入性别:`);
    let gender = rs.question();
    console.log(`请输入成绩:`);
    let score = rs.question();
    //获取新增学生的下标
    let index = studentsData.length + 1;
    studentsData.push({ id: index, name, age, gender, score });
    console.log(`恭喜您添加成功!`);
    console.log(studentsData);
}

//删除界面
function remove(studentsData) {
    console.log(`=====删除界面=====`);
    console.log(`请输入您要删除的学生id:`);
    let id = rs.question() - 0;
    let flag = false;
    studentsData.forEach((item, index) => {
        if (item.id == id) {
            delete studentsData[index];
            flag = true;
            console.log(`删除成功!`);
        }
    });
    if (!flag) {
        console.log(`没有找到该id,该学生不存在!`);
        return;
    }
    console.log(studentsData);
}

//查询界面
function search(studentsData) {
    console.log(`=====查询界面=====`);
    while (true) {
        console.log(`请输入您的选择:1.查询所有 2.分类查询 0.退出查询`);
        let choice = rs.question() - 0;
        switch (choice) {
            case 1:
                console.log('学生数组为:', studentsData);
                break;
            case 2:
                console.log(`请输入您的查询类别:1.姓名 2.年龄 3.性别 4.成绩`);
                let choice2 = rs.question() - 0;
                switch (choice2) {
                    case 1:
                        let class1 = '姓名';
                        classify(studentsData, class1);
                        break;
                    case 2:
                        let class2 = '年龄';
                        classify(studentsData, class2);
                        break;
                    case 3:
                        let class3 = '性别';
                        classify(studentsData, class3);
                        break;
                    case 4:
                        let class4 = '成绩';
                        classify(studentsData, class4);
                        break;
                    default:
                        console.log(`没有这个选项功能,请重新选择!`);
                        break;
                }
                break;
            case 0:
                console.log(`您已成功退出查询页面!`);
                return;
            default:
                console.log(`没有这个选项功能,请重新选择!`);
                break;
        }
    }
}

//修改界面
function modify(studentsData) {
    console.log(`=====修改界面=====`);
    console.log(`请输入您要修改的学生id:`);
    let id = rs.question() - 0;
    let i = -1;
    studentsData.forEach((item, index) => {
        if (item.id === id) {
            i = index;
        }
    });
    if (i == -1) {
        console.log(`没有找到该id,该学生不存在!`);
        return;
    }
    console.log(i);
    console.log(`请选择您要修改的学生信息:1. 姓名 2. 年龄 3. 性别 4. 成绩 5.取消修改`);
    let choice3 = rs.question() - 0;
    switch (choice3) {
        case 1:
            let amend1 = '姓名';
            modifyStu(studentsData, amend1, i);
            break;
        case 2:
            let amend2 = '年龄';
            modifyStu(studentsData, amend2, i);
            break;
        case 3:
            let amend3 = '性别';
            modifyStu(studentsData, amend3, i);
            break;
        case 4:
            let amend4 = '成绩';
            modifyStu(studentsData, amend4, i);
            break;
        case 5:
            console.log(`您已取消修改!`);
            break;
        default:
            console.log(`没有这个选项功能,请重新选择!`);
            break;
    }
    console.log(studentsData);
}

//按类别查询界面
function classify(studentsData, classSearch) {
    console.log(`请输入您要查询的学生${classSearch}:`);
    let stuSearch = rs.question();
    let stu;
    if (classSearch == '姓名') {
        stu = studentsData.filter(item => item.name == stuSearch);
    } else if (classSearch == '年龄') {
        stu = studentsData.filter(item => item.age == stuSearch);
    } else if (classSearch == '性别') {
        stu = studentsData.filter(item => item.gender == stuSearch);
    } else {
        stu = studentsData.filter(item => item.score == stuSearch);
    }
    if (stu.length == 0) {
        console.log(`没有找到该学生信息!`);
        return;
    }
    console.log(`按${classSearch}查询如下-----------`);
    console.log('该学生数组为:', stu);
}

//修改学生信息
function modifyStu(studentsData, amend, i) {
    console.log(`请输入您要修改的学生${amend}:`);
    let stuModify = rs.question();
    if (amend == '姓名') {
        studentsData[i].name = stuModify;
    } else if (amend == '年龄') {
        studentsData[i].age = stuModify;
    } else if (amend == '性别') {
        studentsData[i].gender = stuModify;
    } else {
        studentsData[i].score = stuModify;
    }
    console.log(`修改成功!`);
}

//退出界面
function exit(exitEnter, useExit) {
    console.log(`请问是否选择退出,退出请按1,其他选项为取消退出:`);
    let tui = rs.question() - 0;
    if (tui == 1) {
        console.log(`您已成功退出!`);
        exitEnter = false;
    } else {
        console.log(`取消退出,回到${useExit}界面!`);
    }
    return exitEnter;
}

猜你喜欢

转载自blog.csdn.net/m0_71734538/article/details/128860684