郑州轻工业学院
校外实习报告实习名称:嵌入式软件工程实践
姓名:王金锋
院(系):计算机与通信工程学院
专业班级:嵌入式软件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();
});
/*
* 初始化机构树
*/
function initTree() {
var setting = {
async : {
enable : true,
url : "tree.xsxxTreeAjax/loadBjxx.ajax",
autoParam : [ "id" ]
},
callback : {
onClick : zTreeOnClick
}
};
$.fn.zTree.init($("#bjTree"), setting);
}
//单击树上节点时触发事件
function zTreeOnClick(event, treeId, treeNode) {
document.getElementById("bjid").value=treeNode.id;
form.target = 'Itop';
document.getElementById("showXsxxList").click();
}
Page页面
class="com.zzxy.model.xsgl.kskmwh.ShowTreeKmInfoPage">
Java页面
public TreeNode getGradeTree() {
return this.getKskmwhFacade().getGradeTree();
}
@InjectPage("eps/xsgl/kskmwh/ListKskmInfo")
public abstract ListKskmInfoPage getListKskmInfoPage();
impl实现类,treenode获取树列表
public TreeNode getGradeTree() {
List
TreeNode rootNode = new TreeNode("ROOT", "班级信息", "TYPE_ROOT");
if (list != null && list.size() > 0) {
for (GRADE grade : list) {
TreeNode node = new TreeNode(grade.getId(), grade.getBjmc(),"TYPE_TREE");
rootNode.addChild(node);
}
}
return rootNode;
}
4-3
查询界面:点击查询之后进入此页面进行查询
班级展示
获取点击树节点后传入的班级id
public List
List list = null;
if (!this.getPage().getRequestCycle().isRewinding()) {
list = this.getKskmwhFacade().getListExam(grade, exam,
splitPageInfo);
}
return list;
}
然后impl实现类中调用getlist方法
public List getListExam(GRADE grade, EXAM exam, SplitPageInfo splitPageInfo) {
String sql = "SELECT * FROM EXAM WHERE NJBH =:NJBH";
MapSqlParameterSource mapParameterSource = new MapSqlParameterSource();
mapParameterSource.addValue("NJBH", grade.getId());
if (exam != null && exam.getKsmc() != null) {
sql += " AND KSMC LIKE :KSMC ";
mapParameterSource.addValue("KSMC", "%" + exam.getKsmc() + "%");
}
if (exam != null && exam.getKssj() != null) {
sql += " AND KSSJ =:KSSJ ";
mapParameterSource.addValue("KSSJ", exam.getKssj());
}
if (exam != null && exam.getZkr() != null) {
sql += " AND ZKR LIKE :ZKR";
mapParameterSource.addValue("ZKR", "%" + exam.getZkr() + "%");
}
return this.baseDaoEntity.getJdbcSplitEntity().selectSplit(sql,
mapParameterSource, splitPageInfo);
}
Getlist方法是通用的获取放方法,当点击树节点时传入班级id,其他为空,当为查询是传入一个字符串,通过拼接sql进行查询。
删除的时候会有提示信息,界面友好。
考试科目维护
班级展示
获取点击树节点后传入的班级id
public List
List list = null;
if (!this.getPage().getRequestCycle().isRewinding()) { list = this.getKskmwhFacade().getListExam(grade, exam,
splitPageInfo);
}
return list;
}
然后impl实现类中调用getlist方法
public List getListExam(GRADE grade, EXAM exam, SplitPageInfo splitPageInfo) {
String sql = "SELECT * FROM EXAM WHERE NJBH =:NJBH";
MapSqlParameterSource mapParameterSource = new MapSqlParameterSource();
mapParameterSource.addValue("NJBH", grade.getId());
if (exam != null && exam.getKsmc() != null) {
sql += " AND KSMC LIKE :KSMC ";
mapParameterSource.addValue("KSMC", "%" + exam.getKsmc() + "%");
}
if (exam != null && exam.getKssj() != null) {
sql += " AND KSSJ =:KSSJ ";
mapParameterSource.addValue("KSSJ", exam.getKssj());
}
if (exam != null && exam.getZkr() != null) {
sql += " AND ZKR LIKE :ZKR";
mapParameterSource.addValue("ZKR", "%" + exam.getZkr() + "%");
}
return this.baseDaoEntity.getJdbcSplitEntity().selectSplit(sql,
mapParameterSource, splitPageInfo);
}
Getlist方法是通用的获取放方法,当点击树节点时传入班级id,其他为空,当为查询是传入一个字符串,通过拼接sql进行查询。
考试科目维护
点击之后进行树状展示年级,点击年级之后展示改年级下的所有班级,点击班级后右侧展示改班级所有的考试科目
在此页面可以对考试科目进行一系列操作,包括修改,删除,批量删除,新功能。
新增页面
因为程序各个模块大致都类似,树状分类展示,单条信息改删,区域内新增,内容类似,因此只展示一个模块的代码作为实例
以考试科目维护为例
查询页面
还是列表展示页面,通过模糊查询返回一个列表。
编辑页(新增业)
编辑和新增是同一个页面
点击编辑或新增之后跳入一个turntoEdit的方法
public IPage turnToModifyExamPage(IRequestCycle cycle, String id) { EditKskmInfoPage page = getEditKskmInfoPage();
// student = new STUDENT();
//exam = new EXAM();
exam.setId(id);
exam = this.getKskmwhFacade().getExam(exam);
page.setGrade(exam.getGRADE());
page.setExam(exam);
return page;
}
在这个方法中传入id查询出该条记录的所有内容,用于在edit页面默认展示
Html页面面
function checkForm(loginForm,obj){
if(!checkFormItem(loginForm.ksmc, "C" ,60, 0,5, "考试名称" ))return false;
if(!checkFormItem(loginForm.zkr, "C" ,20, 0,5, "主考人" ))return false;
form.target = "_self";
$("#add").click();
$("#save").disabled = true;
return true;
}
//-->