基于RFID的教室资源管理系统.docx
《基于RFID的教室资源管理系统.docx》由会员分享,可在线阅读,更多相关《基于RFID的教室资源管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
基于RFID的教室资源管理系统
洛阳理工学院
课程设计报告
课程名称物联网综合实训
设计题目基于RFID的教室资源管理系统
专业计算机应用技术
完成日期2015.1.4
课程设计任务书
设计题目:
基于RFID的教室资源管理系统
设计内容与要求:
1.通过教师上下课的刷卡而实时获得相关信息;
2.对教室使用状况,使用时间,使用者详细信息进行统计管理;
3.利用非接触式IC卡进行网上查询、确认、管理的校园教室使用状况管理系统。
小组分工:
张灿灿:
配置课程表,配置教室。
王艳婷:
教室管理,配置院系。
梁晓珂:
系统管理,配置专业。
张康茹:
教师管理,配置课程。
程海燕:
终端管理,配置班级。
楚翠翠:
卡片管理。
指导教师:
2014年12月27日
课程设计评语
成绩:
指导教师:
_______________
年月日
1概述
1.1课程设计的目的和意义
学校在每个学期开学的时候,都要把所有理论课程、实验课程、上机操作课程、英语口语课程的上课时间、上课地点、主讲老师和上课人数安排好,并且与其它课程不发生冲突!
同时为了方便学生查询自己上课的时间、上课的地点、主讲老师,还要方便学生查询教室资源的空闲和相关感兴趣的课程。
应该建立一个教室审批管理系统,把这些环节通过计算机处理一减轻学校的工作负担。
随着大学办学规模的不断扩大,学校的管理能力也需要同步得到发展!
作为人才的培养基地,学校管理能力的进步与发展对整个教学系统起着巨大的作用,作为学校资源之一的教师资源管理也日益显得重要!
与传统的管理手段相比,教室审批管理系统的应用使得学校由传统管理手段向现代化、科学化管理转变,大大提高了教学资源的利用能力,降低了学校在管理方面的费用与精力。
开发出一个具有管理能力的教室审批管理系统,是学校提高自身资源利用的必要工具,作为学校从传统的管理向现代化、科学化管理转变的一个标志,具有相当重要的意义。
首次基于现实生活进行系统的分析和开发,实现了教室审批管理系统的各个功能;结合现实生活,对各项系统的操作进行更加人性化的设计,使得用户能够通过本系统充分利用学校的教学资源。
1.2任务及要求
1.登陆模块,具有系统用户登录检验功能。
2.主界面模块,用于显示系统主要功能界面。
3.用户管理模块,系统管理员分配用户名和密码,根据不同用户选择不同权限。
4.基本信息管理模块,对基本信息、教师信息、学生信息、教室使用信息进行添加、删除、修改。
2系统总体方案
2.1系统总体方案分析
本系统包括有教师管理,卡片管理,终端管理,系统管理,数据字典,教室管理六部分,每部分分别有增删改除的相应功能,可以再教室管理里面查看打卡记录,在卡片管理里面进行发卡和挂失的功能,系统管理里面来添加设置相关的用户信息,数据字典里面进行数据的添加,例如教室,院系,专业等的相关配置信息。
总体的流程图如图2-1
图2-1总体流程图
2.2基于RFID工作原理
RFID技术的基本工作原理并不复杂:
标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(Passive Tag,无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签或主动标签),解读器读取信息并解码后,送至中央信息系统进行有关数据处理。
一套完整的RFID系统,是由阅读器(Reader)与电子标签(TAG)也就是所谓的应答器(Transponder)及应用软件系统三个部份所组成,其工作原理是Reader发射一特定频率的无线电波能量给Transponder,用以驱动Transponder电路将内部的数据送出,此时 Reader便依序接收解读数据,送给应用程序做相应的处理。
以RFID卡片阅读器及电子标签之间的通讯及能量感应方式来看大致上可以分成:
感应耦合(Inductive Coupling)及后向散射耦合(Backscatter Coupling)两种。
一般低频的RFID大都采用第一种式,而较高频大多采用第二种方式。
阅读器根据使用的结构和技术不同可以是读或读/写装置,是RFID系统信息控制和处理中心。
阅读器通常由耦合模块、收发模块、控制模块和接口单元组成。
阅读器和应答器之间一般采用半双工通信方式进行信息交换,同时阅读器通过耦合给无源应答器提供能量和时序。
在实际应用中,可进一步通过Ethernet或WLAN等实现对物体识别信息的采集、处理及远程传送等管理功能。
应答器是RFID系统的信息载体,目前应答器大多是由耦合原件(线圈、微带天线等)和微芯片组成无源单元。
2.3数据库设计
根据数据库的原理分析,本系统共建14个表,包括Band表,Card,表,Classes表Cours表
Courseinfo表,Depart表,Device表,Major表,Record表,Rights表,Role表,Room表,Teacher表,User表。
表2-1Band
Band表里面主要字段有bid表示绑定的id,bname表示绑定名称。
表2-2Card
Card表中cardid表示卡的id号,cardSerial表示卡号序列,cstate表示卡挂失。
表2-3Classes
Classes表中classid表示班级的id,classname表示班级名字,grade表示年级。
表2-4Course
Course表courseid表示课程id,tid表示教师id,classid表示班级id/。
表2-5Courseinfo
Courseinfo表中courseid表示课程id,coursename表示课程名,cistate表示课程状态。
表2-6Depart
Depart表中did表示院系id,dname表示院系名字,dstate表示院系状态。
表2-7Device
Device表中deviceid表示装置id,dstate表示装置状态。
表2-8Major
Major表中mid表示专业id,mstate表示专业状态,did表示院系id。
/
表2-9Record
Record表中recordid表示记录id,tid表示教师id。
表2-10Rights
Rights表中r_i权限id,表示rid表示角色id,bid表示绑定id。
表2-11Role
Role表中rid表示角色id,rname表示角色名字,rstate表示角色状态。
表2-12Room
Room表中roomid表示教室id,rstate表示教室的状态。
表2-13Teacher
Teacher表中tid表示教师id,tphone表示教师电话号。
表2-14User
User表中userid表示用户id,uname表示用户名字,upawd表示用户密码。
3软件设计
3.1系统分析
3.1.1软件编译环境
1.编程软件MyEclipse
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。
MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。
MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。
可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。
2.数据库MySQL
MySQL(发音为"myesscueel",不是"mysequel")是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语句(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。
大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。
一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的MontyWidenius的女儿也叫My。
这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。
获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。
3.2配置课程表
3.2.1添加课程表
主要实现对课程的表的添加,包括专业、课程、教室、班级、星期、上课实现等功能,如图3-1:
图3-1添加课程表
publicclassCourse{
privateintc_id;
privateCourseInfocourseInfo;
privateTeacherteacher;
privateClassesclasses;
privateStringdate;
privateStringtime;
publicCourse(){
super();
}
publicCourse(intc_id,CourseInfocourseInfo,Teacherteacher,
Classesclasses,Stringdate,Stringtime){
super();
this.c_id=c_id;
this.courseInfo=courseInfo;
this.teacher=teacher;
this.classes=classes;
this.date=date;
this.time=time;
}
/**
*@returnthec_id
*/
publicintgetC_id(){
returnc_id;
}
/**
*@paramc_idthec_idtoset
*/
publicvoidsetC_id(intc_id){
this.c_id=c_id;
}
/**
*@returnthecourseInfo
*/
publicCourseInfogetCourseInfo(){
returncourseInfo;
}
/**
*@paramcourseInfothecourseInfotoset
*/
publicvoidsetCourseInfo(CourseInfocourseInfo){
this.courseInfo=courseInfo;
}
/**
*@returntheteacher
*/
publicTeachergetTeacher(){
returnteacher;
}
/**
*@paramteachertheteachertoset
*/
publicvoidsetTeacher(Teacherteacher){
this.teacher=teacher;
}
/**
*@returntheclasses
*/
publicClassesgetClasses(){
returnclasses;
}
/**
*@paramclassestheclassestoset
*/
publicvoidsetClasses(Classesclasses){
this.classes=classes;
}
/**
*@returnthedate
*/
publicStringgetDate(){
returndate;
}
/**
*@paramdatethedatetoset
*/
publicvoidsetDate(Stringdate){
this.date=date;
}
/**
*@returnthetime
*/
publicStringgetTime(){
returntime;
}
/**
*@paramtimethetimetoset
*/
publicvoidsetTime(Stringtime){
this.time=time;
}
3.2.2查看课程表
主要对课程表的查看,获取一些信息,同时还具有编辑,删除功能,来实现一个课表查看页面,如图3-2所示:
图3-2查看课程表
publicinterfaceCourseService{
/**
*保存课程表
*@paramcourse
*@return
*@throwsMyException
*/
publicbooleansaveCourse(Coursecourse)throwsMyException;
/**
*更新课程表
*@paramcourse
*@return
*@throwsMyException
*/
publicbooleanupdateCourse(Coursecourse)throwsMyException;
/**
*删除数据
*@paramc_id
*@return
*@throwsMyException
*/
publicvoiddeleteCourse(intc_id,HttpServletResponseresp)throwsException;
/**
*根据Id获取课程表实体
*@paramc_id
*@return
*@throwsMyException
*/
publicCoursegetCourseById(intc_id)throwsMyException;
/**
*分页查询
*@parampager
*@paramrequest
*@paramresp
*@throwsException
*/
publicvoidgetListByPager(Pagerpager,HttpServletRequestrequest,HttpServletResponseresp)throwsException;
/**
*根据院系ID得到专业信息
*@paramdid
*@paramresp
*@throwsException
*/
publicvoidgetMajorsByDid(intdid,HttpServletResponseresp)throwsException;
/**
*根据专业ID得到教师信息
*@parammid
*@paramresp
*@throwsException
*/
publicvoidgetTeachersByMid(intmid,HttpServletResponseresp)throwsException;
/**
*根据专业ID得到课程信息
*@parammid
*@paramresp
*@throwsException
*/
publicvoidgetCourseInfoesByMid(intmid,HttpServletResponseresp)throwsException;
/**
*根据专业ID得到班级信息
*@parammid
*@paramresp
*@throwsException
*/
publicvoidgetClassesByMid(intmid,HttpServletResponseresp)throwsException;
}
3.3配置教室
3.3.1添加教室
添加教室ID,实现如图3-3显示:
图3-3添加教室
classRooms{
privateintroomid;
privateStringroomNo;
privateStringrstate;
privateStringop;
publicRooms(introomid,StringroomNo,Stringrstate,Stringop){
super();
this.roomid=roomid;
this.roomNo=roomNo;
this.rstate=rstate;
this.op=op;
}
/**
*@returntheroomid
*/
publicintgetRoomid(){
returnroomid;
}
/**
*@paramroomidtheroomidtoset
*/
publicvoidsetRoomid(introomid){
this.roomid=roomid;
}
/**
*@returntheroomNo
*/
publicStringgetRoomNo(){
returnroomNo;
}
/**
*@paramroomNotheroomNotoset
*/
publicvoidsetRoomNo(StringroomNo){
this.roomNo=roomNo;
}
/**
*@returntherstate
*/
publicStringgetRstate(){
returnrstate;
}
/**
*@paramrstatetherstatetoset
*/
publicvoidsetRstate(Stringrstate){
this.rstate=rstate;
}
/**
*@returntheop
*/
publicStringgetOp(){
returnop;
}
/**
*@paramoptheoptoset
*/
publicvoidsetOp(Stringop){
this.op=op;
}
}
3.3.2查看教室
查看教室主要包括,序号、教室好、状态、以及操作编辑和禁用功能,实现效果如图3-4所示:
图3-4查看教室
publicclassRoomServiceImplimplementsRoomService{
@Resource
privateRoomDaoroomDao;
publicbooleansaveRoom(Roomroom)throwsMyException{
intn=roomDao.save(room);
if(n>0){
returntrue;
}else{
returnfalse;
}
}
publicbooleanupdateRoom(Roomroom)throwsMyException{
intn=roomDao.update(room);
if(n>0){
returntrue;
}else{
returnfalse;
}
}
publicvoiddeleteRoom(introomid,HttpServletResponseresponse)
throwsException{
Roomroom=roomDao.findEntityById(roomid);
intn=roomDao.delete(room);
response.setCharacterEncoding("utf-8");
PrintWriterout=response.getWriter();
Stringstr="";
if(n>0){
str="{\"success\":
true}";
}else{
str="{\"success\":
false}";
}
out.print(str);
out.flush();
out.close();
}
publicRoomgetRoomById(introomid)throwsException{
returnroomDao.findEntityById(roomid);
}
publicvoidgetListByPager(Pagerpager,HttpServletResponseresp)throwsException{
Listlist=roomDao.getRoomListByPager(pager);
pager.setRecordList(list);
intlength=roomDao.getAllList().size();
pager.setiTotalRecords(length);
if(pager.getsSearch()==null||"".equals(pager.getsSearch())){
pager.setiTotalDisplayRecords(length);
}else{