需求:
- 管理员信息功能:
// * 可登录、注册
// * 账号必须是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;
}