feiyangqingyun 发表于 2012-8-9 13:25:14

C#+TE6410编写的幼儿园安全管理系统完结版发布

本帖最后由 feiyangqingyun 于 2012-10-23 08:34 编辑

陆陆续续经过一个多月的开发调试,在S3C6410核心板上面开发的幼儿园安全管理系统终于确定!具备学生教师制卡功能、人员管理功能、出勤统计功能、手工出入园功能,同时智能显示器开关等功能!
新帖地址:http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=19030&extra=

feiyangqingyun 发表于 2012-8-9 13:35:32

一:数据库设计
用户表UserInfo
ID:编号
UserName:用户名
UserPwd:用户密码
UserType:用户类型(管理用户、操作用户)

IC卡信息表ICInfo
ID:编号
ICID:IC卡编号
ICName:姓名
ICClass:班级(如果是教师的话为空)
Type:类型(学生、教师)
Mode:模式(入园、出园)
Status:状态(健康、观察、服药)
TriggerTime:触发时间(年月日时分秒格式)

学生信息表StudentInfo
ID:编号
StudentID:学号
StudentName:姓名
StudentIC:对应IC卡号
Class:班级
StudentSex:性别
StudentX1:监护人1姓名
StudentX1Tel:监护人1联系方式
StudentX2:监护人2姓名
StudentX2Tel:监护人2联系方式
StudentAddr:家庭住址

教师信息表
ID:编号
TeacherID:教职工号
TeacherName:姓名
TeacherIC:IC卡号
TeacherSex:性别
TeacherTel:联系电话
TeacherAddr:家庭住址

feiyangqingyun 发表于 2012-8-9 13:36:12

二:问题分析
1:学生刷卡时,首先判断该学生是否已经刷卡,如果已经刷卡,则更改刷卡信息为当前刷卡信息,在身体状况(健康、观察、服药)改变时,将最近刷卡学生的身体状况更改为当前身体状况。
2:刷卡界面显示与关闭判断,定义变量LastTriggerTime存储最后刷卡时间,有学生刷卡时,将LastTriggerTime赋值为当前时间,启动定时器Timer间隔5000毫秒判断LastTriggerTime和当前时间,如果大于5分钟(系统配置),则自动关闭,一旦检测到刷卡则自动弹出。
3:刷卡信息界面自动判断弹出,定义全局变量IsReadCard,存储当前读卡状态,当切换到制卡界面后,IsReadCard为False,退出制卡界面后,IsReadCard为True,默认为True,定义全局变量IsReadCardShow,存储刷卡信息界面是否已经弹出,如果已经弹出则置为True,默认为False,主程序中读卡事件判断,当IsReadCard为True并且IsReadCardShow为False时候,弹出刷卡信息界面,并将信息传递过去。
4:手工出入园算法分析
定义链表StudentIn(未入园)StudentInX(已入园),查询学生信息表,查询刷卡信息表,条件:时间为今天,班级为当前班级参数,模式为入园或者出园,类型为学生或者教师,查询比较的条件为卡号(两个表都有,且可唯一确定一个学生或者教师),一一比较卡号,当相等则存入已入园链表StudentInX。
例如获取已入园学生:

feiyangqingyun 发表于 2012-8-9 13:37:00


#region学生入园数据

      List<string> StudentIn = new List<string>();
      List<string> StudentInX = new List<string>();      

      void GetStudentIn(string ClassName)
      {
            //找出对应班级所有学生姓名,一一与该班级已经刷卡的同学比较,不存在则加入到列表
            string sqlStudent = "select StudentName,StudentID,StudentIC from StudentInfo where Class='" + ClassName + "'";
            DataTable tempS = myApp.myData.GetDataTable(sqlStudent, "StudentInfo");
            
            string sqlIC = "select ICID from ICInfo where date()=date('now') and Type='学生' and Mode='入园' and ICClass='" + ClassName + "'";
            DataTable tempIC = myApp.myData.GetDataTable(sqlIC, "ICInfo");
         
            for (int i = 0; i < tempS.Rows.Count; i++)
            {               
                for (int j = 0; j < tempIC.Rows.Count; j++)
                {
                  if (tempS.Rows.ToString() == tempIC.Rows.ToString())
                  {                        
                        //已刷卡学生姓名存入列表
                        StudentInX.Add(tempS.Rows.ToString() + "(" + tempS.Rows.ToString() + ")");
                  }
                }
            }

            if (StudentInX.Count == 0)
            {
                for (int k = 0; k < tempS.Rows.Count; k++)
                {
                  string str = tempS.Rows.ToString() + "(" + tempS.Rows.ToString() + ")";
                  StudentIn.Add(str);
                }
                return;
            }

            for (int m = 0; m < tempS.Rows.Count; m++)
            {
                string str = tempS.Rows.ToString() + "(" + tempS.Rows.ToString() + ")";
                bool IsExist = false;

                for (int n = 0; n < StudentInX.Count; n++)
                {               
                  if (str == StudentInX)
                  {
                        IsExist = true;
                        break;                        
                  }                  
                }

                if (!IsExist)
                {
                  //未刷卡学生姓名存入列表
                  StudentIn.Add(str);
                }
            }         
            
      }

      void BindDataStudentIn()
      {
            lboxStudentIn.Items.Clear();
            lboxStudentInX.Items.Clear();
            StudentIn.Clear();
            StudentInX.Clear();

            this.GetStudentIn(cboxClass1.Text);

            foreach (string s1 in StudentIn)
            {
                lboxStudentIn.Items.Add(s1);
            }

            foreach (string s2 in StudentInX)
            {
                lboxStudentInX.Items.Add(s2);
            }
      }

      #endregion

liuyouran 发表于 2012-8-9 16:29:12

页: [1]
查看完整版本: C#+TE6410编写的幼儿园安全管理系统完结版发布