const readline = require('readline-sync')//引用readline-sync
//用户名,密码
let user = [{
username: 'yang',
password: 123
}, {
username: 'kai',
password: 456
}, {
username: 'ming',
password: 789
}
];
// 注册
let fn2 = function () {
console.log('请输入注册用户名:');
let username1 = readline.question();
console.log('请输入注册密码:');
let password1 = readline.question() - 0;
let obj = {};//创建对象
obj.username = username1;
obj.password = password1;
user.push(obj);//添加数据
console.log('注册成功,跳转登陆页面。。。。')
add();
// liuchen();
//调用登录
}
//登陆
let add = function () {
let s = 2;//错误的次数
while (true) {
console.log('请输入用户名:');
let username = readline.question();
console.log('请输入密码:');
let password = readline.question() - 0;
for (let i = 0; i < user.length; i++) {
if (username == user[i].username && password == user[i].password) {//判断输的值与初始值是否相等
console.log('欢迎你,登陆成功');
liuchen();//调用登陆后的主流程
return;
}
}
//输入不正确,超过三次
if (s != 0) {
console.log(`密码或账户有误,你还有${s}次机会,请重新输入!`);
s--; } else {
console.log('账户锁定!');
break;
}
}
}
//登录前主流程
let fn3 = function () {
console.log('请选择以下要求:1.登陆 2.注册 3.退出');
let num = readline.question() - 0;//选择要求
switch (num) {
case 1:
add();//调用add
break;
case 2:
fn2();//调用注册
break;
case 3:
console.log('欢迎下次光临,再见!')
return;//结束
}
}
//查询所有
let arr = [
{ id: 1, name: 'liu', age: '18', gender: 'nan', score: '98' },
{ id: 2, name: 'li', age: '20', gender: 'nv', score: '80' },
{ id: 3, name: 'zhang', age: '20', gender: 'nv', score: '90' },
{ id: 4, name: 'ma', age: '21', gender: 'nan', score: '70' }
]
console.log('学号\t姓名\t年龄\t性别\t成绩\t');
for (let ai of arr) {//遍历出数组
let str = '';
for (let key in ai) {//遍历出键名 str += ai[key] + '\t';
}
console.log(str);
}
let maxID = 4;//给一个固定的值
//分类查询
let chaxun = function () {
while (true) {
console.log('请选择查询类型: 1.姓名 2.年龄 3.性别 4.成绩 5.返回');
let num3 = readline.question() - 0;
switch (num3) {
case 1:
console.log('请输入要查询的名字:');
fun('name');
break;
case 2:
console.log('请输入要查询的年龄:');
fun('age');
break;
case 3:
console.log('请输入要查询的性别:');
fun('gender');
break;
case 4:
console.log('请输入要查询的成绩:');
fun('score');
break;
case 5:
return;
}
}
}
let fun = function (type) {//type键名为变量要用[]
let name = readline.question();
for (let i in arr) {//模糊查找
if (arr[i][type].search(name) >= 0) {
console.log(arr[i]);
}
}
//第二种方法
// for (let i = 0; i < arr.length; i++) {//精确查找
// if (arr[i][type] == name) {
// console.log(arr[i]);
// }
// }
}
//查询
let chaxun1 = function () {
while (true) {
console.log('请选择查询方式:1.查询所有 2.分类查询');
let num2 = readline.question() - 0;
switch (num2) {
case 1://查询所有
for (let a of arr) {//遍历数组
console.log(a);
}
break;
case 2://分类查询
chaxun();
break;
}
break;
}
}
//新增
let xinzhen = function () {
while (true) {
console.log('请输入新增学生姓名:');
let name = readline.question();
console.log('请输入新增学生的年龄:');
let age = readline.question();
console.log('请输入新增学生的性别:');
let gender = readline.question();
console.log('请输入新增学生的成绩:');
let score = readline.question();
let arr1 = {};//创建对象
arr1 = ({ id: ++maxID, name, age, gender, score });
arr.push(arr1);//添加数据
console.log(arr1)
break;
}
}
//修改
let xiugai = function () {
while (true) {
console.log('请输入要修改学生的学号:');
let id = readline.question() - 0;
for (let i4 = 0; i4 < arr.length; i4++) {
if (arr[i4].id == id) {//判断输入的id名
console.log('当前学生信息如下:');
console.log(arr[i4])
console.log('请选择要修改的信息:1.姓名 2.年龄 3.性别 4.成绩 5.返回')
let num4 = readline.question() - 0;
switch (num4) {
case 1:
xiugai1(i4, 'name');
break;
case 2:
xiugai1(i4, 'age');
break;
case 3:
xiugai1(i4, 'gender');
break;
case 4:
xiugai1(i4, 'score');
break;
case 5:
return;
}
}
} break;
}
}
let xiugai1 = function (i4, xinxi) {//i4.为学生下标的属性,xinxi为要修改的键名(变量用[])
console.log('请输入新的数据:');
let name = readline.question();
arr[i4][xinxi] = name;//输入的信息赋值给键名
console.log('修改成功!该学生信息如下:');
console.log(arr[i4]);
}
//删除
let shanchu = function () {
while (true) {
console.log('请输入要删除学生的学号:');
let id1 = readline.question() - 0;
for (let i5 = 0; i5 < arr.length; i5++) {
if (arr[i5].id == id1) {//判断输入的id1是否等于对象的键名
console.log('当前学生信息如下:');
console.log(arr[i5]);
console.log('确定删除:1.是 2.否');
let num5 = readline.question() - 0;
if (num5 == 1) {
console.log('删除成功!删除后信息如下:');
arr.splice(i5, 1);//删除数据i为下标,1为删除的个数
for (let a of arr) {
console.log(a);
}
} }
}
break;
}
}
//主控住流程
let liuchen = function () {
while (true) {
console.log('请选择一下操作:。。1.查询 2.新增 3.修改 4.删除 5.退出');
let num1 = readline.question() - 0;
switch (num1) {
case 1:
//查询
chaxun1(); break;
case 2:
// 新增
xinzhen();
break;
case 3:
//修改
xiugai();
break;
case 4:
//删除
shanchu();
break;
case 5:
//退出
console.log('欢迎下次使用,再见!');
return;
}
}
}
fn3();

JavaScript编写学生查询系统的更多相关文章

  1. java web知识点复习,重新编写学生选课系统的先关操作。

    为了复习之前学习的相关的html,javaweb等知识.自己有重新编写了一遍学生选课系统. 下面主要展示登录界面的代码,以及各个大的主页面的相关jsp. <%@ page language=&q ...

  2. 暑假闲着没事第一弹:基于Django的长江大学教务处成绩查询系统

    本篇文章涉及到的知识点有:Python爬虫,MySQL数据库,html/css/js基础,selenium和phantomjs基础,MVC设计模式,ORM(对象关系映射)框架,django框架(Pyt ...

  3. JAVA | 学生选课系统

    这里使用JAVA语言编写的简易的学生选课系统,展现的都是这个系统核心代码. 其中有不足欢迎批评和指正! 链接数据库的代码 package connection;//连接数据库student impor ...

  4. C语言程序设计#成绩查询系统

    学生成绩管理系统 [注释]:请点赞,好人一生平[yi]安[wo]. #codeblocks程序下编写 #include<stdio.h>#include<stdlib.h>// ...

  5. 用Javascript编写Chrome浏览器插件

    原文:http://homepage.yesky.com/62/11206062.shtml 用Javascript编写Chrome浏览器插件 2010-04-12 07:30 来源:天极网软件频道 ...

  6. JavaScript编写了一个计时器

    初学JavaScript,用JavaScript编写了一个计时器. 设计思想: 1.借助于Date()对象,来不断获取时间点: 2.然后用两次时间点的毫秒数相减,算出时间差: 3.累加时间差,这样就能 ...

  7. 【云图】如何制作全国KTV查询系统?

    原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

  8. 【百度地图API】建立全国银行位置查询系统(五)——如何更改百度地图的信息窗口内容?

    原文:[百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 摘要: 酷讯.搜房.去哪儿网等大型房产.旅游酒店网站,用的是百度的数据库,却显示了自定义的信息窗口内容,这是 ...

  9. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

    原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?&quo ...

随机推荐

  1. BZOJ1103 [POI2007]大都市

    Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了. 不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1.. ...

  2. 洛谷P4716 【模板】最小树形图(朱刘算法)

    题意 题目链接 Sol 朱刘算法?感觉又是一种神仙贪心算法 大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边 不详细说了,丢链接走人.. #include<bit ...

  3. bootStrap下拉菜单 点击下拉列表某个元素,列表不隐藏

    html: <a class="dropdown-toggle bgImg-priceWran " id="dropdownMenu1" data-tog ...

  4. WinForm实现Rabbitmq官网6个案例-Publishe/Subscribe

    代码: namespace RabbitMQDemo { public partial class PublishSubscribe : Form { private string exchangeN ...

  5. js 判断 复选框全选、全不选、反选、必选一个

    一个挺 使用的 js 代码片段,  判断  复选框全选.全不选.反选.必选一个 记录下, 搬来的 思路: 修改数据的 选中与否状态, 拿到所有的输入框,看是否有选中的状态 <html> & ...

  6. MySQL数据库(7)----数据库的选择、创建、删除和更改

    1.选择数据库 使用 USE 语句可以选择数据库,并把它指定为MySQL服务器连接的默认(当前)数据库: USE db_name; 要想选择数据库,用户必须要具备相应的访问权限:否则,会出现错误提示. ...

  7. Linux基础入门之网络属性配置

    Linux基础入门之网络属性配置 摘要 Linux网络属性配置,最根本的就是ip和子网掩码(netmask),子网掩码是用来让本地主机来判断通信目标是否是本地网络内主机的,从而采取不同的通信机制. L ...

  8. Android 一种非常好用的Android屏幕适配

    前言 网上关于屏幕适配的文章已经铺天盖地了,为什么我还要讲?因为网上现在基本都是使用px适配,即每种屏幕分辨率的设备需要定义一套dimens.xml文件.再加上有些手机还有虚拟按键(例如华为),这样就 ...

  9. Creating dynamic/configurable parameterized queries in Entity Framework

    https://dillieodigital.wordpress.com/2013/05/09/creating-dynamicconfigurable-parameterized-queries-i ...

  10. 微信小程序-03-小程序开发框架

    微信小程序-03-小程序开发框架 官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html 小程序开发框架 ...