郑州轻工业学院校外实习报告实习名称:嵌入式软件工程实践姓名:王金锋院(系):计算机与通信工程学院专业班级:嵌入式软件13-01学号:541313430141指导教师:实习单位:惠普-洛阳国际软件人才基地成绩:时间:年月日至年月日学生管理系统总结报告一、任务书针对高校管理人员开发一款学生管理系统,其中包括学生班级考试科目等信息的维护管理。实现电子化档案,便于管理。二、项目分析项目背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。目前,在学校里,随着高校规模的不断扩大和招生人数的不断增加,需要处理大量的学生数据信息。如何更好的组织学生信息,更加快捷的管理学生信息显得尤为的重要。为此我们为此开发了一套学生信息管理系统,本系统面向学校的教务人员,目的是为学校办公管理提供一个快速、简单规范的管理平台,使学院在学生信息管理方面更加规范化,快捷化便于管理人员对学生的管理开发出这套系统就要充分理解客户的需求,首先要有对学生的管理,学生的基本信息,姓名学号,班级年级等等,学生又是依托班而组织起来的,班级又有各种基本属性,班主任,地址等等,所以就要有班级模块三、项目设计四张主要的表设计如下:班级信息表,考试科目表,学生信息表,学生成绩表。为了降低各个模块间的联系,做到低耦合高内聚尽量减少主外键关系,以免实际应用中产生不必要的错误3-1项目主体共分为共分为五个模块如下3-2(1)班级信息维护能够添加、删除、修改、保存、查询的班级基本信息,对名称,班主任,地址。(2)对学生信息维护管理员登陆班级信息管理学生信息维护考试成绩维护考试科目维护学生信息统计分班级查看学生信息,然后对单个学生信息实现查看,修改。并且能在指定班级下新增,批量删除学生(3)学生查询统计分班级,分男女进行统计,柱状显示(4)考试科目维护选择班级展示改班级所有的考试科目,包括时间,地点,监考人,可以实现增删改查。(5)学生成绩维护分班级展示所有学生,选中学生后展示改学生所有的考试成绩,选中某门科目可以实现增删改。主要技术和框架:实现对班级,学生,考试和成绩基本信息的维护,包括增删改查,这是一个标准的增删改插的实现。代码重复率很高,便于项目的开发和缩短其周期我们决定采用tapestry框架,tapestry框架具有开发便捷,易于测试维护,便于二次开发等特点针对系统并发性较小,数据安全可靠性,为了便于维护采用从c3po数据库连接方式和oracle数据库。因为项目中需要固定的菜单栏,表头页眉等内容,iframe足以满足拼接需求,因此前端采用iframe页面拼接技术,简单整洁,更易于页面风格的统一,不容易产生杂乱感,页面树形结构采用Ztree异步加载,增强数据的可靠性和性。3-3代码结构四、程序清单登陆成功菜单界面4-1班级信息模块4-2直接展示所有班级列表信息,点击删除,和勾选复选框后可以批量删除,点击修改和新增后进入编辑页面,编辑完成后确认保存。树列表展示Html页面展示,page页面作为配置页面将html与java联系起来Html页面$(document).ready(function(){//初始化树initTree();});/**初始化机构树*/functioninitTree(){varsetting={async:{enable:true,url:tree.xsxxTreeAjax/loadBjxx.ajax,autoParam:[id]},callback:{onClick:zTreeOnClick}};$.fn.zTree.init($(#bjTree),setting);}//单击树上节点时触发事件functionzTreeOnClick(event,treeId,treeNode){document.getElementById(bjid).value=treeNode.id;form.target='Itop';document.getElementById(showXsxxList).click();}Page页面page-specificationclass=com.zzxy.model.xsgl.kskmwh.ShowTreeKmInfoPagecomponentid=treetype=xylib:Treebindingname=sourcevalue=gradeTree/bindingname=jsFunctionNamevalue='doClick'/bindingname=doClickvalue='true'/bindingname=valuevalue=selectedTreeNode//component/page-specificationJava页面publicTreeNodegetGradeTree(){returnthis.getKskmwhFacade().getGradeTree();}@InjectPage(eps/xsgl/kskmwh/ListKskmInfo)publicabstractListKskmInfoPagegetListKskmInfoPage();impl实现类,treenode获取树列表publicTreeNodegetGradeTree(){ListGRADElist=this.baseDaoEntity.getDao().select(newGRADE());TreeNoderootNode=newTreeNode(ROOT,班级信息,TYPE_ROOT);if(list!=null&&list.size()0){for(GRADEgrade:list){TreeNodenode=newTreeNode(grade.getId(),grade.getBjmc(),TYPE_TREE);rootNode.addChild(node);}}returnrootNode;}4-3查询界面:点击查询之后进入此页面进行查询班级展示获取点击树节点后传入的班级idpublicListEXAMgetListExam(){Listlist=null;if(!this.getPage().getRequestCycle().isRewinding()){list=this.getKskmwhFacade().getListExam(grade,exam,splitPageInfo);}returnlist;}然后impl实现类中调用getlist方法publicListgetListExam(GRADEgrade,EXAMexam,SplitPageInfosplitPageInfo){Stringsql=SELECT*FROMEXAMWHERENJBH=:NJBH;MapSqlParameterSourcemapParameterSource=newMapSqlParameterSource();mapParameterSource.addValue(NJBH,grade.getId());if(exam!=null&&exam.getKsmc()!=null){sql+=ANDKSMCLIKE:KSMC;mapParameterSource.addValue(KSMC,%+exam.getKsmc()+%);}if(exam!=null&&exam.getKssj()!=null){sql+=ANDKSSJ=:KSSJ;mapParameterSource.addValue(KSSJ,exam.getKssj());}if(exam!=null&&exam.getZkr()!=null){sql+=ANDZKRLIKE:ZKR;mapParameterSource.addValue(ZKR,%+exam.getZkr()+%);}returnthis.baseDaoEntity.getJdbcSplitEntity().selectSplit(sql,mapParameterSource,splitPageInfo);}Getlist方法是通用的获取放方法,当点击树节点时传入班级id,其他为空,当为查询是传入一个字符串,通过拼接sql进行查询。删除的时候会有提示信息,界面友好。考试科目维护班级展示获取点击树节点后传入的班级idpublicListEXAMgetListExam(){Listlist=null;if(!this.getPage().getRequestCycle().isRewinding()){list=this.getKskmwhFacade().getListExam(grade,exam,splitPageInfo);}returnlist;}然后impl实现类中调用getlist方法publicListgetListExam(GRADEgrade,EXAMexam,SplitPageInfosplitPageInfo){Stringsql=SELECT*FROMEXAMWHERENJBH=:NJBH;MapSqlParameterSourcemapParameterSource=newMapSqlParameterSource();mapParameterSource.addValue(NJBH,grade.getId());if(exam!=null&&exam.getKsmc()!=null){sql+=ANDKSMCLIKE:KSMC;mapParameterSource.addValue(KSMC,%+exam.getKsmc()+%);}if(exam!=null&&exam.getKssj()!=null){sql+=ANDKSSJ=:KSSJ;mapParameterSource.addValue(KSSJ,exam.getKssj());}if(exam!=null&&exam.getZkr()!=null){sql+=ANDZKRLIKE:ZKR;mapParameterSource.addValue(ZKR,%+exam.getZkr()+%);}returnthis.baseDaoEntity.getJdbcSplitEntity().selectSplit(sql,mapParameterSource,splitPageInfo);}Getlist方法是通用的获取放方法,当点击树节点时传入班级id,其他为空,当为查询是传入一个字符串,通过拼接sql进行查询。考试科目维护点击之后进行树状展示年级,点击年级之后展示改年级下的所有班级,点击班级后右侧展示改班级所有的考试科目在此页面可以对考试科目进行一系列操作,包括修改,删除,批量删除,新功能。新增页面因为程序各个模块大致都类似,树状分类展示,单条信息改删,区域内新增,内容类似,因此只展示一个模块的代码作为实例以考试科目维护为例查询页面还是列表展示页面,通过模糊查询返回一个列表。编辑页(新增业)编辑和新增是同一个页面点击编辑或新增之后跳入一个turntoEdit的方法publicIPageturnToModifyExamPage(IRequestCyclecycle,Stringid){EditKskmInfoPagepage=getEditKskmInfoPage();//student=newSTUDENT();//exam=newEXAM();exam.setId(id);exam=this.getKskmwhFacade().getExam(exam);page.setGrade(exam.getGRADE());page.setExam(exam);returnpage;}在这个方法中传入id查询出该条记录的所有内容,用于在edit页面默认展示Html页面面functioncheckFo