【问题标题】:Designing an attendance system using QR code with Firebase使用 Firebase 的 QR 码设计考勤系统
【发布时间】:2019-03-15 20:06:51
【问题描述】:

我正在做一个学术项目。简单的想法是创建一个如下所示的考勤系统:

  1. 教师在网站中登录他的帐户。
  2. 教师选择一个部分。
  3. 老师生成一个二维码,让学生扫描就可以上课。
  4. 学生使用 android 应用登录到他的帐户。
  5. 学生打开扫描仪扫描二维码。
  6. 系统会标记该学生在该特定部分和特定日期的出勤情况。

这是我正在使用的 firebase 数据库的设计

db{  

    Teachers{
         "cEEbohuR2bK6opZJ1z5RoPrbbrx1":{ //auth uid  
              tchName:"Jason",
              tchID:"24123"
    }
    Students:{
         "GsBEVEtZ9CeqzztDWEQd9GluVJJ3":{  //auth uid
              studentName:"Mark",
              stuID:"37294"
}
    Courses:{
         "JAVA101":{  //courseID
              courseName:"Java Programing",
}
    Sections:{  
        "56345":{ //secID
         tchID:"24123", //acts like a foreign key
         courseID:"JAVA101", //acts like a foreign key
           Students:{
            "37294":{
               studentName:"Mark"               
       }
   }
}

    Attendance:{  
        "56345":{ //secID
           "1-8-2018":{ //auto generated date?
               "37294":{ //stuID
                  attended:"true" // sets to true after scanning the qr code
            }
          }
        } 
     }
  }

我对 qr 代码的想法是,当老师生成它时,QR 中的值将是 Section ID,然后我需要在学生扫描它时将它与学生 ID 合并,在获得我需要的两个值之后自动生成讲座日期 ,所以我将有 3 个值(secID,stuID,日期) 将其插入到考勤树中,并使 “attended” 属性设置为“true”

现在我的问题是:

  1. 有没有更好的方法来设计我的数据库?
  2. 我上面的 qr 想法可以执行还是有更好的方法?

【问题讨论】:

  • 如果该系统旨在出于任何重要原因实际跟踪出勤率,我发现学生拍摄 QR 码的照片并将其发送给不在场的其他人以便他们可以签到的潜在问题.
  • 我以后可能会为二维码添加一个时间限制来解决这个问题。

标签: javascript android firebase firebase-realtime-database qr-code


【解决方案1】:

您是否需要讲师检索出勤列表?如果您的需求不同,上面显示的嵌套对象可能会更扁平。在 Firebase 中,您需要在查看后创建数据库结构(例如,您将从数据库中检索以显示给用户的内容)。强烈反对嵌套,数据重复是可以接受的。

例如,如果我希望用户通过选择部分 ID 和日期来阅读与会者列表,我将创建一个如下所示的表格:

Attendance:{
    "123456":                //section ID
       {"01-08-2019":        //date
           {"865768": true}  //student ID: attendance status  
       }
           }

我可以使用参考检索与会者列表:

`Attendance/${sectionID}/${date}/`

如果我希望我的用户点击学生的 ID 并检索学生的所有出勤记录,我可以有一个更扁平的列表:

AttendanceRecord: {
     "865768": {     //student ID
     "LxLy1a":   {   //unique attendance record key
               date: "01-08-2019",
               sectionId: "123456",
               status: true
                }                       
                   }

如果我的应用程序的视图不同,我将不得不以不同的方式构建我的数据库,以便更容易从 Firebase 读取数据,而不会深入到嵌套对象中。

您不必太害怕复制您的数据。根据应用中的视图更改数据库。

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多