C#+TE6410编写的幼儿园安全管理系统完结版发布
本帖最后由 feiyangqingyun 于 2012-10-23 08:34 编辑陆陆续续经过一个多月的开发调试,在S3C6410核心板上面开发的幼儿园安全管理系统终于确定!具备学生教师制卡功能、人员管理功能、出勤统计功能、手工出入园功能,同时智能显示器开关等功能!
新帖地址:http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=19030&extra= 一:数据库设计
用户表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:家庭住址 二:问题分析
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。
例如获取已入园学生:
#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
页:
[1]