• JavaScript编写学生查询系统


      1 const readline = require('readline-sync')//引用readline-sync
      2 //用户名,密码
      3 let user = [{
      4     username: 'yang',
      5     password: 123
      6 }, {
      7     username: 'kai',
      8     password: 456
      9 }, {
     10     username: 'ming',
     11     password: 789
     12 }
     13 ];
     14 // 注册
     15 let fn2 = function () {
     16     console.log('请输入注册用户名:');
     17     let username1 = readline.question();
     18     console.log('请输入注册密码:');
     19     let password1 = readline.question() - 0;
     20     let obj = {};//创建对象
     21     obj.username = username1;
     22     obj.password = password1;
     23     user.push(obj);//添加数据
     24     console.log('注册成功,跳转登陆页面。。。。')
     25     add();
     26     // liuchen();
     27     //调用登录
     28 }
     29 //登陆
     30 let add = function () {
     31     let s = 2;//错误的次数
     32     while (true) {
     33         console.log('请输入用户名:');
     34         let username = readline.question();
     35         console.log('请输入密码:');
     36         let password = readline.question() - 0;
     37         for (let i = 0; i < user.length; i++) {
     38             if (username == user[i].username && password == user[i].password) {//判断输的值与初始值是否相等
     39                 console.log('欢迎你,登陆成功');
     40                 liuchen();//调用登陆后的主流程
     41                 return;
     42             }
     43         }
     44         //输入不正确,超过三次
     45         if (s != 0) {
     46             console.log(`密码或账户有误,你还有${s}次机会,请重新输入!`);
     47             s--;
     48 
     49         } else {
     50             console.log('账户锁定!');
     51             break;
     52         }
     53     }
     54 }
     55 //登录前主流程
     56 let fn3 = function () {
     57     console.log('请选择以下要求:1.登陆 2.注册 3.退出');
     58     let num = readline.question() - 0;//选择要求
     59     switch (num) {
     60         case 1:
     61             add();//调用add
     62             break;
     63         case 2:
     64             fn2();//调用注册
     65             break;
     66         case 3:
     67             console.log('欢迎下次光临,再见!')
     68             return;//结束
     69     }
     70 }
     71 //查询所有
     72 let arr = [
     73     { id: 1, name: 'liu', age: '18', gender: 'nan', score: '98' },
     74     { id: 2, name: 'li', age: '20', gender: 'nv', score: '80' },
     75     { id: 3, name: 'zhang', age: '20', gender: 'nv', score: '90' },
     76     { id: 4, name: 'ma', age: '21', gender: 'nan', score: '70' }
     77 ]
     78 console.log('学号	姓名	年龄	性别	成绩	');
     79 for (let ai of arr) {//遍历出数组
     80     let str = '';
     81     for (let key in ai) {//遍历出键名
     82 
     83         str += ai[key] + '	';
     84     }
     85     console.log(str);
     86 }
     87 let maxID = 4;//给一个固定的值
     88 //分类查询
     89 let chaxun = function () {
     90     while (true) {
     91         console.log('请选择查询类型: 1.姓名 2.年龄 3.性别 4.成绩 5.返回');
     92         let num3 = readline.question() - 0;
     93         switch (num3) {
     94             case 1:
     95                 console.log('请输入要查询的名字:');
     96                 fun('name');
     97                 break;
     98             case 2:
     99                 console.log('请输入要查询的年龄:');
    100                 fun('age');
    101                 break;
    102             case 3:
    103                 console.log('请输入要查询的性别:');
    104                 fun('gender');
    105                 break;
    106             case 4:
    107                 console.log('请输入要查询的成绩:');
    108                 fun('score');
    109                 break;
    110             case 5:
    111                 return;
    112         }
    113     }
    114 }
    115 let fun = function (type) {//type键名为变量要用[]
    116     let name = readline.question();
    117     for (let i in arr) {//模糊查找
    118         if (arr[i][type].search(name) >= 0) {
    119             console.log(arr[i]);
    120         }
    121     }
    122 //第二种方法
    123     // for (let i = 0; i < arr.length; i++) {//精确查找
    124     //     if (arr[i][type] == name) {
    125     //         console.log(arr[i]);
    126     //     }
    127     // }
    128 }
    129 //查询
    130 let chaxun1 = function () {
    131     while (true) {
    132         console.log('请选择查询方式:1.查询所有 2.分类查询');
    133         let num2 = readline.question() - 0;
    134         switch (num2) {
    135             case 1://查询所有
    136                 for (let a of arr) {//遍历数组
    137                     console.log(a);
    138                 }
    139                 break;
    140             case 2://分类查询
    141                 chaxun();
    142                 break;
    143         }
    144         break;
    145     }
    146 }
    147 //新增
    148 let xinzhen = function () {
    149     while (true) {
    150         console.log('请输入新增学生姓名:');
    151         let name = readline.question();
    152         console.log('请输入新增学生的年龄:');
    153         let age = readline.question();
    154         console.log('请输入新增学生的性别:');
    155         let gender = readline.question();
    156         console.log('请输入新增学生的成绩:');
    157         let score = readline.question();
    158         let arr1 = {};//创建对象
    159         arr1 = ({ id: ++maxID, name, age, gender, score });
    160         arr.push(arr1);//添加数据
    161         console.log(arr1)
    162         break;
    163     }
    164 }
    165 //修改
    166 let xiugai = function () {
    167     while (true) {
    168         console.log('请输入要修改学生的学号:');
    169         let id = readline.question() - 0;
    170         for (let i4 = 0; i4 < arr.length; i4++) {
    171             if (arr[i4].id == id) {//判断输入的id名
    172                 console.log('当前学生信息如下:');
    173                 console.log(arr[i4])
    174                 console.log('请选择要修改的信息:1.姓名 2.年龄 3.性别 4.成绩 5.返回')
    175                 let num4 = readline.question() - 0;
    176                 switch (num4) {
    177                     case 1:
    178                         xiugai1(i4, 'name');
    179                         break;
    180                     case 2:
    181                         xiugai1(i4, 'age');
    182                         break;
    183                     case 3:
    184                         xiugai1(i4, 'gender');
    185                         break;
    186                     case 4:
    187                         xiugai1(i4, 'score');
    188                         break;
    189                     case 5:
    190                         return;
    191                 }
    192             }
    193         } break;
    194     }
    195 }
    196 let xiugai1 = function (i4, xinxi) {//i4.为学生下标的属性,xinxi为要修改的键名(变量用[])
    197     console.log('请输入新的数据:');
    198     let name = readline.question();
    199     arr[i4][xinxi] = name;//输入的信息赋值给键名
    200     console.log('修改成功!该学生信息如下:');
    201     console.log(arr[i4]);
    202 }
    203 //删除
    204 let shanchu = function () {
    205     while (true) {
    206         console.log('请输入要删除学生的学号:');
    207         let id1 = readline.question() - 0;
    208         for (let i5 = 0; i5 < arr.length; i5++) {
    209             if (arr[i5].id == id1) {//判断输入的id1是否等于对象的键名
    210                 console.log('当前学生信息如下:');
    211                 console.log(arr[i5]);
    212                 console.log('确定删除:1.是 2.否');
    213                 let num5 = readline.question() - 0;
    214                 if (num5 == 1) {
    215                     console.log('删除成功!删除后信息如下:');
    216                     arr.splice(i5, 1);//删除数据i为下标,1为删除的个数
    217                     for (let a of arr) {
    218                         console.log(a);
    219                     }
    220                 }
    221 
    222             }
    223         }
    224         break;
    225     }
    226 }
    227 //主控住流程
    228 let liuchen = function () {
    229     while (true) {
    230         console.log('请选择一下操作:。。1.查询 2.新增 3.修改 4.删除 5.退出');
    231         let num1 = readline.question() - 0;
    232         switch (num1) {
    233             case 1:
    234                 //查询
    235                 chaxun1();
    236                 
    237                 break;
    238             case 2:
    239                 // 新增
    240                 xinzhen();
    241                 break;
    242             case 3:
    243                 //修改
    244                 xiugai();
    245                 break;
    246             case 4:
    247                 //删除
    248                 shanchu();
    249                 break;
    250             case 5:
    251                 //退出
    252                 console.log('欢迎下次使用,再见!');
    253                 return;
    254         }
    255     }
    256 }
    257 fn3();
  • 相关阅读:
    Redis源码分析(三十四)--- redis.h服务端的实现分析(1)
    Redis源码分析(三十四)--- redis.h服务端的实现分析(1)
    Redis源码分析(三十三)--- redis-cli.c客户端命令行接口的实现(2)
    C# 接口
    C#属性有什么作用
    字节跳动面试总结
    大厂Redis高并发场景设计,面试问的都在这!
    上班摸鱼 手敲求水仙花数的代码!
    有一群志同道合的程序员朋友是怎样的体验?
    SpringBoot四大核心之自动装配——源码解析
  • 原文地址:https://www.cnblogs.com/yangkaiming/p/9125425.html
Copyright © 2020-2023  润新知