1. 网站地图
  2. 设为首页
  3. 关于我们


基于MVC和ExtJS的高校学生信息管理系统的 设计与实现

发布时间:2022-12-25 11:23
目 录
摘 要 ...I
Abstract II
1综述 1
1.1系统编写目的 1
1.2系统建设背景 1
1.3系统发展趋势 2
1.4文章组织结构 3
2需求分析   5
2.1角色功能需求分析 5
2.1.1系统管理需求分析 5
2.1.2学生管理需求分析 6
2.1.3身份验证需求分析 6
2.2系统功能需求分析 7
2.2.1信息管理需求分析   7
2.2.2培养管理需求分析 8
2.2.3档案管理需求分析 9
2.2.4数据检索需求分析 9
2.2.5权限管理需求分析 9
2.3系统功能用例分析 10
2.3.1角色模块用例分析 10
2.3.2信息管理用例分析 12
2.3.3培养管理用例分析   14
2.3.4档案管理用例分析 14
2.3.5数据维护用例分析 15
2.4数据流程分析 16
2.4.1数据流程图 16
2.4.2数据字典 17
2.5本章小结 19
3系统设计 20
3.1功能结构设计 20
3.1.1个人信息管理功能设计 20
3.1.2培养信息管理功能设计 21
3.1.3学生工作管理功能设计 21
3.1.4毕业信息管理功能设计 22
3.1.5学位档案管理功能设计 22
3.1.6系统信息维护功能设计 23
3.2技术架构设计 24
3.3系统详细设计 27
3.3.1层次架构 27
3.3.2调用逻辑 27
3.3.2目录结构 29
3.4数据库设计 29
3.5.1概念结构设计 29
3.4.2 E-R关系设计 30
3.4.3数据库表设计 33
3.5本章小结 36
4系统实现 37
4.1系统页面实现 37
4.1.1权限控制模块实现 37
4.1.2个人信息管理实现 38
4.1.3学生工作管理实现 39
4.1.4培养信息管理实现 40
4.1.5学位档案管理实现 42
4.1.6部分关键代码实现 43
4.2系统运行维护 50
4.2.1系统的测试步骤 50
4.2.2系统的维护方法 51
4.3本章小结 52
53
附录 54
参考文献 61
63
1综述
1.1系统编写目的
基于MVC和ExtJS的高校学生信息管理系统采用计算机技术和数据储存技术,将 学生信息才用计算机语言的形式管理起来,提高了学生信息的管理效率,并能准确地发 现错误和纠正,从而使信息的有效管理,规范高校对学生信息的管理。同时可以满足学 生管理一体化的信息管理需求,提供一个安全和有效的实施方法,对高校学生信息进行 高校的管理,以提高高校学生管理的信息化程度,使高校学生管理力度和管理标准得到 增强。具体表现为以下几个方面:
1•使用学生信息管理系统对学生信息的管理更加科学、规范,更加实用方便。
2.使用网络访问的方式随时访问学生信息,为信息的修改录入提供方便。因此,不 管学生和老师在不在高校里,都可以通过访问网络的方式,使用用户名和密码来登录自 己的系统,进行基本信息的修改,提高了学生信息的实时性和准确性。
3.提高学生工作的工作效率。学生的信息存储在数据库中,对于管理者来说,查找, 更改学生的信息会变得十分容易,这样可以大大提高工作效率。
1.2系统建设背景
随着计算机、网络和信息技术的发展,社会进入了一个信息化的时代,信息在人们 日常生活中的地位越来越高。同时,全国高校的大范围扩招,高校的办学规模和学生数 量不断增加,由于办学规模和学生数量的不断增加是的教学资源和信息资源变的越来越 紧张,给高校的教学管理和学生管理工作增加了很大的难度。怎样才能提高信息和资源 的利用率,是高校的教学管理和学生管理工作做到规范化、科学化和便捷化,已经成了 现在高校学生信息管理甚至是对整个高校进行管理的重点[“】。
之前高校对学生的管理全靠人力完成•有时因为管理人员的疏忽造成高校学生信息 的丢失,高校学生的价值没有得到应有发挥•我们经过考察各高校的学生信息的管理工 作,几乎所有学生信息管理均没有形成成套的管理体系多学生信息进行统一的管理工作 卩叨。甚至有的高校还在使用手工的管理方式进行管理,这样既复杂又不方便,工作效 率低,也容易出错。为了方便高校对学生信息的统一管理,这就萌发了我们想开发一个 高校学生信息管理系统软件的想法
目前在国内学生管理信息系统中,很少学生管理信息系统可以从全体使用者的角度 出发,为用户提供快速的边界一站式服务。现在的学生信息管理系统只能实现单点访问 登陆,不能提供全面的学生信息资料服务,实现学生信息的服务系统的一体化。从用户 的角度出发,为实现方便快捷的综合性服务,以及把快速服务作为出发点度,针对目前 没有被提出的,使用新一代身份认证模式的学生信息服务系统,所以快速服务和新一代 身份识别的结合使学生信息建立快捷服务的系统,将给高校带来极大的方便。本文的主 要工作是着手构造一个学生信息的综合管理信息服务系统,通过一卡通建设和身份验证 单点登录完成学生信息管理功能,实现快捷方便的学生信息管理系统。
因此,本论文结合高校学生管理工作,査找具体工作中的问题,在对系统进行开发 时通过调研对抽象出系统的模型,对学生信息进行综合管理;并且给出具体的系统设计 分析,以及基于MVC和ExtJS的高校学主信息管理系统的设计、开发和实现的方法,并 使用ExtJS技术和MVC框架对高校学生信息管理系统进行实现。基于MVC和ExtJS的高 校学生信息管理系统采用MVC技术与EXTJS前端技术结合的方式进行开发,将大量的学 生信息使用数据化的方式存放到数据库中,提供人机友好的交互界面,是信息的录入速 度有了很大的提高,同时论文中主要的工作是对高校学生信息管理系统的实现提出了使 用ExtJS技术和MVC框架进行实现的设计方法和理念,应进行了深入的研究。采用ExtJS 技术和MVC框架对系统进行开发,使用Struts来实现MVC结构,使用Hibernate管理 数据集,并使用ExtJS技术开发学生信息管理系统的页面建立基于MVC和ExtJS 的高校学生信息管理系统的开发模型,并采取软件工程的管理方法对基于MVC和ExtJS 的高校学生信息管理系统项目的开发进行开发流程、业务流程的管理和文档描述,实现 开发的专业化。
1.3系统发展趋势
现在,随着高校招生数量的继续增加,学生,教师和工作人员的数量也越来越多, 这就造成学生信息的数量急剧增加,因此在处理这项工作的统筹管理时,工作人员需要 花费很多努力,才能确保工作的正确性和可靠性,因此,学生管理信息系统的实施具有 迫切性和紧迫性,但在现有的资源和条件下就产生了对高校学生信息管理系统的需求。 十几年来高校学生的管理全靠人力de】.有时因为工作人员的疏忽造成高校学生信息的 丢失损害现象相当严重,髙校学生的价值没有得到应有发挥•我们经过考察各高校的学生 信息的管理工作,几乎所有学生信息管理均没有形成成套的管理体系多学生信息进行统 一的管理工作。甚至有的高校还在使用手工的管理方式进行管理,这样既复杂又不方便, 工作效率低,也容易出错。为了方便高校对学生信息进行的统一管理,说以就产主了开 发一个高校学生信息管理系统的想法。
所以综上所述,本学生管理信息系统的开发实施是可行的。从技术研究背景方面讲, 笔者准备使用MVC和ExtJS技术对系统进行构建,MVC(Model View Controller)框架㈣创] 和ExtJS框架都是现在软件工程开发所使用的主流技术,下面分别给出简单介绍:
MVC是一个系统的体系结构框架应用程序的输入,处理,输出流量按照型号,视 图,控制器相互隔离的方式,这样的应用程序分为三个层-模型层,视图层,控制层, 让你可以减少耦合的软件工程项目开发和维护了很大的方便程度。MVC是Xerox PARC 在八十年代为编程语言Smalltalk发明的一种软件设计模式,至今已被广泛使用。最近 几年被推荐为Oracle旗下Sun公司JavaEE系统的设计模式[31'32],并且受到越来越多的 使用ColdFusion和PHP的开发者的欢迎。
ExtJS是一个主要的前端用户界面编写工具,用于创建与技术无关的ajax前端框架, 这是一个基于Web的富客户端框架,它是完全基于标准的W3C技术结构的建设,使用 所有的DIV, HTML, CSS等技术。ExtJS的最突出的地方,是开发了一系列非常简 单易用的控件和组件,我们只需要使用这些组件可以实现各种丰富多彩的UI开发,使 用起来非常方便,可以使用它简单地做出十分优雅美观的页面,所以被广泛使用。
总之,实现基于MVC和ExtJS的学生信息管理系统的主要目的是,以满足学生管 理一体化的信息管理需求,提供一个安全和有效的实施方法,对高校学生信息进行高校 的管理,以提高高校学生管理的信息化程度,使高校学生管理力度和管理标准得到增强。 其意义在于:1.管理更加科学,有规范性。使用学生信息管理系统对学生信息的管理更 加规范,更加实用方便。2.使用网络访问的方式随时访问学生信息,为信息的修改录 入提供方便。因此,不管学生和老师在不在高校里,都可以通过访问网络的方式,使用 用户名和密码来登录自己的系统,进行基本信息的修改,提高了学生信息的实时性和准 确性。3.提高学生工作的工作效率。学生的信息存储在数据库中,对于管理者来说,查 找,更改学生的信息会变得十分容易,这样可以大大提高工作效率。
1-4文章组织结构
论文被分为五个章节。本文主要介绍基于MVC和ExtJS的学生信息管理系统的设 计和实现,以及具体的系统设计分析,以及基于MVC和ExtJS的高校学生信息管理系 统的设计、开发和实现的方法。
第一章综述。说明了在开发该系统的主要工作和论文的背景,组织结构。介绍了系 统的开发背景,系统的应用现状,系统的研究现状和应用相关的技术简介。
第二章是需求分析。对基于MVC和ExtJS的学生信息管理系统的整体业务服务进 行了描述,同时,描述了需求分析,系统的分析,根据该系统的需求。
第三章是系统设计。提出了系统的设计原则和要求,介绍了整个系统的设计,应用 系统的技术架构,功能设计和详细设计的需求,并数据库设计的基础上,给出整体方案 系统设计,功能设计。
第四章是系统实现。本章系统业务系统的实施为实现这个项目,并通过可视化界面 的代码描述。此外,本章还对需要的一些关键技术的实现进行说明,并简要介绍了系统 功能在应用程序中的具体代码。
第五章是总结和展望。对于这个文章进行总结并指出不足和下一步工作。
2需求分析
本章介绍基于MVC和ExtJS的学生信息管理系统的分析和系统的功能需求分析。 分析前先对学生管理工作的业务逻辑进行调査和研究,把学生管理职能岗位分解成各种 业务信息管理服务,完成业务功能需求分析。这种信息管理服务是,面向学生和老师的 应用,信息服务业务流程的状态需要满足学生信息管理的数据操作要求,需求分析是对 这些业务过程进行分类总结,形成文件形式的详细描述,即文档。同时,把用户需求抽 象成系统开发需要的需求定义描述,从而形成程序人员容易理解的开发需求文档。系统 的需求分析是否完整,能否满足用户的需求是系统开发成功与否的关键。
2.1角色功能需求分析
根据用户对基于MVC和ExtJS的学生信息管理系统的实际的需求情况,可以把系 统角色分为:系统管理员,学生。下面分别进行介绍:
2.1.1系统管理需求分析
(1) 学生信息管理。对于在校学生的奖励和处罚的条件,学生信息的删除,修改 等。
(2) 毕业生信息管理。毕业生有资格毕业的审计,包括:在高校的情况,是否受 到处罚准予毕业等。同时,提供成绩管理,打印学生成绩单。
(3) 管理考试信息。管理员根据学生的考试成绩不及格信息来获得学生和学科名 单,并安排重建和重修考试。
(4) 课程的信息化管理。要设置为每门课程的学期开始,班级,课程,任课教师。
(5) 信息管理为贫困学生。对于学生谁想要申请助学贷款,贷款金额和欠款金额 统计,同时安排勤工俭学工作。
(6) 经理来管理。系统管理员分为:系统管理员,院系辅导员,任课教师。其中, 系统管理员可以为整个系统,包括信息和所有的学生,教师,案件处理和修改;辅导员的 学生只能修改信息,任课教师讲授的课程主要是对结果的信息集每学期我教课程成功 率,而报名结果,并保存,打印等操作。
(7) 进行用户管理。新入校的学生时,新的学生上学,放学的管理员设置提供了 许多要导入的页面,在相同的时间处,年级,班级的学生数,学生数按照作为一个学生 着陆系统使用的用户名。同样,对于第一份工作或新转入高校教师,管理员要设置工作 号,工号作为一名教师登录系统的用户名。同时,管理员可以查询所有用户的密码,可 以修改它。
2.1.2学生管理需求分析
(1)个人信息。学生登陆此系统后,需要提供个人基本信息填写的页面,包含学生所 需要填写的基本内容,包括:姓名、性别、民族、出生日期、政治面貌、籍贯、身份证 号、联系电话、所在班级、所学专业、所在系、家庭住址、父母及家庭情况等。除此之 外,并对原始默认密码进行修改。
(2)班级信息。学生可对本人所在的班级及课程信息进行査询搜索,包括:系别,所 修课程等。
(3)成绩信息。学生可查询己修课程的成绩,对于需重修的课程可获取需重修课程的 名称以及相应的上课时间、地点等,以便做好补考准备。
(4)贷款信息。学生可査询个人在校期间贷款与否以及贷款金额,査询页面中应包括 学生贷款金额和欠款金额等信息。如果没有贷款,则页面中显示“无记录”
(5)毕业审核信息。学生可査询对个人在校期间所获学分及奖惩信息,同时亦可査询 是否通过毕业审核,是否达到毕业要求等信息。
2.1.3身份验证需求分析
该系统是高校独立于外界而对学生信息进行统一管理的应用软件,使用范围仅限于 本校未毕业的学生及在职的教职工人员,因此在进入本系统之前需要验证身份。所有使 用者第一次在使用本系统时,需按管理员所注明的统一标码的用户名及密码进行首次登 录。
登录时使用者需根据自己的身份选择登录权限:管理员、辅导员、教师、学生。登 录后,使用者需修改原始密码,以防止其他人使用个人帐号,修改后的密码需要个人牢 记,若有遗忘,需要到管理员处查询修改。
在以上四个登录权限中,管理员的权限大于其他三个,管理员有权设置系统中其他 成员的权限,并修改、删除系统所有信息,对系统起到维护修复的作用。
辅导员权限登录本系统后,可对本学年度管理学生的信息进行修改维护并可査询其 他一些信息。
教师权限仅限于根据自身课程的要求设置该科目的考试形式。并给予学生最终的成 绩。
学生权限则是对自身实际情况对自身的信息进行改正并上传,同时査询其他相关信 息。
2.2系统功能需求分析
学生信息管理系统主要的业务功能分为:
(1)系统可通过用户的自身填写储存并上传至数据库的过程,从而实现对全校在校学 生的信息综合性管理。
(2)系统在统一学生信息后,可实现一对一的查询功能,只需输入名字或学号或院系 名称等查询内容,自动搜索数据库中相匹配信息,实现快速准确定位。
(3)对于学生信息库中错填,毕业,转学等需进行添加、修改、删除时,则可通过管 理员系统实现对信息的添加、修改、删除等功能。
综上所述,对于学生信息管理系统需求抽象总结归纳,把功能用例分为五个方面: 学生信息管理系统的角色模块用例分析、信息管理用例分析、培养用例分析,数据维护 用例分析和档案管理用例分析,下面进行具体介绍。
2. 2.1信息管理需求分析
(1)基本信息管理模块。
新生入学前,需要由管理员进行新一批学生的学号作为账号并设置原始登录密码。 新生开学后,按照指示登录系统,填写个人基本信息,并上传以便建立自身档案,属于 学生学籍档案管理的主要部分。由此,本模块可实现对学生以上基本信息的管理,通过 本模块的运行,实现对学生个人基本信息的査询、修改、删除以及打印等功能。
①导入学号信息:管理员统一录入新生学号作为登录账号,新生入学后由其本院系 告知自身学号信息,由此登录系统进行个人信息的录入。
②査询基本信息:根据登陆时不同的权限设定,登录人员可对系统中的信息实现查 询功能,其查询类别有学生学号、姓名、年级或专业等。
③修改基本信息:对于系统中的上传错误,或错填及一些意外失误等,需要对系统 中的信息进行修改功能。根据系统中所设定登录人员的不同,所修改的权限亦不相同。 除系统管理人员可对全部信息进行修改外,其他人员只能对所能管辖范围内的信息进行 修改。
④学籍变动情况:在校学生无权限对学籍变动进行修改,可进行修改的权限仅包括 管理教师或系统管理人员,修改内容包括学生在校期间的休学、退学及奖惩情况。对于 己毕业学生,有权限人员可“按班级”为单位对整体学籍信息进行删除,以便减少信息 库中不必要的存储。
⑤打印基本信息:根据以上系统功能,系统自动生成表格的形式查询结果,并由需 打印人员自行选择打印方式。
(2)贫困生信息管理
针对需申请贫困补助的学生可使用此项功能,由学生及管理人员填写输入信息,上 传并进行统一的信息管理,本模块可实现贫困生的家庭基本情况,申请助学贷款金额以 及在校期间补助发放情况的统计及信息的统一。
家庭自然情况:包括父母亲及兄弟姐妹的职业、健康情况,所患疾病及疾病的种类, 该生本年度家庭遇到的具体困难,外借财务金额等,以便管理贫困生家庭基本状况。家 庭情况查询:实现对贫困生按照姓名、班级或专业款项进行査询。家庭情况修改:由学 生提交修改内容于管理教师或系统管理人员,经审核后对所需修改信息进行修改,并限 定修改次数。用户记录删除:删除不再需要申请贫困生补助的学生记录。补助发放情况: 显示贫困生在校勤工助学信息,并统计高校内外为贫困生所发放的补助金额,以便于补 助的分配均匀。申请贷款数额:统计贫困生在校期间按个人所需申请的贷款金额及还款情 况。
(3)班级信息管理模块
本模块用于管理学生所在班级的信息,具体包括:班级信息填写、査询、修改和打 印。
2. 2. 2培养管理需求分析
培养管理模块所实现的功能主要在于针对学生在校期间的学习成绩的统一管理和 用户的单方向査询和修改等。其主要实现内容包括输入、査询、修改、删除、打印和统 计。
(1)成绩录入:此模块主要由教师使用,系统可实现由教师进行成绩录入,保存, 系统自动统计成绩分数并排名。其中,学习成绩在统计中按三部分进行划分统计,包括 平时成绩、期中成绩和期末成绩。教师在录入成绩时,系统可自动弹出该生以往成绩, 由教师评定以上三部分分数所占比例,由系统计算并确定最终总分。
(2)成绩的査询、修改和打印:此模块按学生所学课程或学生所处班级,院系, 专业以及姓名和学号进行査询,调出该生所得成绩,并实现成绩单的修改或打印功能, 其中修改部分需要权限限制。
(3)成绩信息统计:系统自动实现各课程按学生所在院系,班级以及年级的成绩 排名和最高最低分数。对于必修以及选修未及格的学生信息进行标记,统计并给予相应 的通知,以方便学生査询了解。
2. 2. 3档案管理需求分析
毕业生的档案管理信息的管理由系统中档案管理模块进行管理。档案管理模块所实 现功能为对毕业生的审核(包括成绩以及奖惩情况),毕业生档案的查询和打印。
(1) 档案审核:在毕业前,对每一名毕业生档案进行审核,包括成绩以及处分的 审核,按高校毕业标准,不符合毕业标准的学生档案,系统自动滤出不准许毕业。
(2) 档案审核査询:经系统对学生的档案按标准审核后,学生登录该系统自行查 询审核结果。
(3) 成绩査询及成绩表:系统可实现横纵向成绩查询,按个人总成绩查询或每学 年进行查询各科成绩,查询结果可自动生成打印模式进行打印。
2. 2.4数据检索需求分析
学生管理服务系统需求主要满足的客户群体是学生管理人员和使用该系统的老师 和学生,学生馆的高层管理者同样可以通过系统,对学生信息进行查询,提供相应的信 息查询服务。因此,学生管理服务系统的最重要的业务处理逻辑就是数据管理,这也是 学生管理人员最基本的操作。当然这里所说的学生信息数据的管理就是指的对基本的学 生信息的的增加,修改,删除等功能。学生管理需要用合理的、直观的方式把用户所需 要的正确信息展示给用户。根据用户对学生管理服务系统功能的需要进行考虑就成了一 项非常重要的工作。
2. 2. 5权限管理需求分析
权限管理模块的作用是对该系统内已注册的用户的信息进行管理和统计。
(1) 添加用户:对于增加的用户,可根据已注册用户名给予相应的权限进行信息 的录入和查阅。新增添用户可根据管理人员所录入的用户名进行相应权限的使用和操 作,并且不能越权。
(2) 修改密码:属于个人隐私和遵循保密原则,用户在初始登录后自行修改原始 密码为个人密码。
(3) 删除用户:对一些因特殊情况而产生的无效多余和过期的用户账号提供可以 删除的功能。
不同权限的用户使用,可由不同权限人员登录所呈现页面上方系统导航栏内导航, 从而进行相应权限的操作。
2.3系统功能用例分析
基于对学生和员工的需求,学生工作的各业务环节管理,学生管理职能需要各方面 的管理,并能够管理系统与其他部门整合协作。允许学生和工作人员能够轻松快速地管 理学生的信息,使学生得到合理应用和管理信息。
通过用例分析和系统实施者来描述系统需求分析。执行人是指一个人或其他人,应 使用软件应用程序或硬件进行系统交互,来完成一定的目标。学生信息管理系统的基础 上的需求的范围内,可以确定两个参与者:系统管理员和学生。
2. 3.1角色模块用例分析
为了保证基于MVC和ExUS的高校学生信息管理系统的用例分析的正确性,在分 析的基础上,我们要建立用例分析模型,描述出A角色与用例分析间的关系,从顶层用 例分析开始抽象,这里可以把角色模块分为两个用例分析:“系统后台管理”和“信息 査询”,其中,用例分析:信息査询是与角色“学生”进行交互的;用例分析:系统后 台管理是与角色“系统管理员”进行交互的。
用例分析中的“信息査询”可以进行再次划分,包括一下几个部分:班级信息、基 本信息、贷款信息、成绩信息、毕业审核信息等5个用例分析。并且在这也功能进行使 用时,都需要对用户的身份进行验证。如图2.1所示。
 
图2. 1信息査询Use Case图
Fig. 2. 1 The Use Case diagram of Information query
 
下面对用例分析“系统后台管理”进行再次划分,主要包括:贫困生管理、学生信 息管理、管理者管理、成绩管理、用户管理、课程管理、毕业生审核管理等七个用例分 析case,并且只有在通过管理员身份验证后才可以使用。
系统后台管理用例分析case如图2.2所示。
 
(1)用例分析''性能信息”:学生进入系统,对査询结果的信息。
(2) 进入系统后,使用用例分析“类信息”:学生类信息搜索。
(3) 用例分析“基本信息”:学生进入系统,您可以填写个人信息,查询,修改 等操作。
 
(5) 用例分析“用户管理”:管理员对系统的访问,可以进行用户名、初始密码 设置。
(6) 用例分析“毕业审核信息”:学生进入系统,査询自己是否通过毕业审核的 情况。
(7) 用例分析“课程管理”:管理员对系统的访问,您可以编程学期学期,高校 上课,任课教师,高校的位置和其他设置,删除,修改和其他操作。
(8) 用例分析“学生信息管理”:管理员进入系统后,学生基本信息的查询,修 改,删除等操作。
(9) 用例分析“贫困生管理”:管理员进入系统后,申请助学贷款的学生填写的 贷款金额,还款等。
(10) 用例分析“绩效管理”:在进入系统管理员,您可以管理每个学生的表现, 包括:为成绩不及格的同学安排补考的时间和地点,重修考试时间,其所取得的成绩应 该同时计入总成绩,增加相应的学分。
(11) 用例分析“管理员管理”:该系统包括四个权限:辅导员,管理员,学生 及任课教师。
(12) 用例分析“毕业生审核管理”:管理员对系统的访问,需要进行高级审计 的信息,包括:基本信息,受到的奖励,惩罚等,无论是研究生学历还是选择优秀毕业 生。
2.3.2信息管理用例分析
信息管理包括两个部分,一是个人信息管理,二是毕业信息管理。
个人信息管理包括学籍信息管理、在校表现信息、家庭信息维护、基本信息维护、 个人信息维护、修改个人密码等功能。
毕业信息管理包括学位信息管理、毕业学位的状态、学位信息确认、毕业信息核对、 学位信息核对、答辩信息管理等功能。
(1)个人信息管理
个人信息管理用例图如图2.3所示:
 
 
 
图2. 3个人信息管理用例分析图
Fi& 2.3 The Use Case diagram of Personal information management
(2)毕业信息管理
毕业信息管理用例图如图2.4所示:
 
 
图2. 4毕业信息管理用例分析图
Fig . 2. 4 The Use Case diagram of Graduate information management
2. 3.3培养管理用例分析
培养管理功能主要分为:学籍和培养管理、培养方案和个人计划、课程选课信息、 成绩管理等基本功能,其中,学籍和培养管理包括学籍变动申请、打印在校证明、査看 个人学籍信息,査看学籍信息;培养方案和个人计划包括申请导师、制定培养计划、个 人选修计划、培养计划修改;课程选课信息包括课程选课,选课结果査询、査看课表、 考试报名。
培养管理功能用例分析图如图2.5所示:
 
2.3.4档案管理用例分析
 
档案信息管理功能主要分为:毕业论文管理和档案信息管理,其中,毕业论文管理 可以分为论文提交、毕业信息、论文信息査询;档案信息管理可分为档案信息査询,档 案归档管理,填写卷内目录等功能。
档案信息管理用例分析图如图2.6所示:
 
 
 
Fig・ 2.6 The Use Case diagram of archives information management
2.3.5数据维护用例分析
数据维护用例如图2.7所示:
 
数据维护包括两个方面的功能,一是基础信息维护,二是系统信息维护。其中基础 信息维护包括:学生信息、贷款信息、毕业信息、成绩信息、档案信息、用户信息。系 统信息维护包括,系统备份、操作员管理、系统整理,系统异常维护。
 
 
2.4数据流程分析
2. 4.1数据流程图
实现的步骤为7步:
(1) 作为一个整体的系统的功能,定义了输入和输出信息。
(2) 找到系统的外部实体。一旦找到外部实体,可确定系统与外界的接口,该系 统数据流的源和目标会发现一个。
(3) 外部实体,以确定输入数据流和输出数据流。
(4) 在图中所示的系统的边缘。
(5) 输入流从外部实体(源)的方式,根据需要绘制一系列的逻辑过程的步骤, 外部实体,直到你找到所需的输出流的过程中,一个封闭的形式对数据流的系统逻辑。
(6) 系统的内部数据的处理和作为整体的功能,再次信息处理,传输,存储过程 能够被看见。
 
(7)解析这样的一个人,直到所有的处理步骤是非常具体的。 系统数据流图如下:
 
 
 
 
 
 
 
图2. 9数据流图
Fig . 2. 9 Data flow diagram
 
2. 4. 2数据字典
学生信息管理系统中的数据字典用表的形式描述如下:
(1)数据流描述
上图所示的数据流图中,包含“学生名单”,“变动成绩要求”,“删除成绩要求”, “添加成绩要求”,“新增的成绩",“原成绩”,“删除的成绩”,“修改后的成绩” 等数据流。
数据流名称:班级学生名单。
说明:某班全部学生的名单。
数据流来源:学生信息。
数据流去向:班级学生名单显示。
组成:班级、学号、姓名。
平均流量:
高峰期流量:
(2) 数据存储的描述
上图所示的数据流图中,包含“学生信息”和“考试成绩”等数据存储。
数据存储:考试成绩。
说明:保存学生各门功课的考试成绩。
流入数据流:新增的成绩、修改后的成绩。
流出数据流:原成绩。
组成:学号、姓名、成绩。
数据量:30000 (学生)*15 (课程)。
存储方式:随机存储。
(3) 数据项的描述
数据项名称:学号。
含义说明:唯一标识每个学生。
别名:学生编号。
类型:字符型。
长度:5。
取值范围:0000000000-9999999999。
取值含义:
(5)处理过程的描述
在图4所示的成绩录入数据流图中,包含“班级学生名单査询”、“增加成绩”、 “修改成绩”、“删除成绩”、“成绩查询”等处理过程。
处理过程:增加成绩。
说明:录入一个学生某门课程的考试成绩。
输入:学号、课程、成绩。
输岀:考试成绩。
处理:在“考试成绩”数据存储中增加一个学生的考试成绩。
2.5本章小结
本章分析了当前形势下的学生管理,学生信息管理系统的设计和开发完成的学生信 息管理系统,通过研究和分析,需求分析,提供足够的准备。本章主要是通过学生信息 管理系统的需求分析,学生信息管理系统被分解成几个主要功能模块,然后对各个功能 模块需要在系统使用案例分析的形式,进行了详细的介绍,用例图设计和实施的后续工 作奠定了基础。
3系统设计
根据软件工程的思想,对基于MVC轻量级框架的学生信息管理系统进行开发时, 首先要定义一套完整的形式化的结构框架,当然结构框架的设计是根据系统需求分析所 得到的需求进行的。在系统设计中,主要工作是首先对学生信息管理系统的功能结构进 行设计,完成各功能模块的概要设计,然后对技术架构进行设计,明确系统的技术架构, 以及不同的接口之间的调用方式,最后对数据库进行设计,完成实体关系对应,完善数 据库的完整性功能需求。开发使用sql2000数据以及tomcat web服务器,并使用ExtJS 对学生信息管理系统进行框架模版式呈现,后台业务逻辑处理使用MVC的小型轻量级 xueshengrts框架,这样就完成了整个学生信息管理系统的系统设计工作。
3.1功能结构设计
在本小节主要对基于EXTJS技术和MVC轻量级框架的学生信息管理系统的功能结 构设计进行了详细的介绍,然后针对基于EXTJS技术和MVC轻量级框架的学生信息管 理系统的功能结构设计中的一些重要的功能和一些技术上的难点进行了详细的介绍,把 基于EXTJS技术和MVC轻量级框架的学生信息管理系统的功能设计的结构设计完成。 在基于EXTJS技术和MVC轻量级框架的学生信息管理系统的功能结构设计过程中采用 整体化的方法进行功能结构设计,并同通过功能结构图的形式表达出来,使功能结构设 计更加直观易懂。同时,在基于EXTJS技术和MVC轻量级框架的学生信息管理系统的 设计时采用逐层分解的方法,釆用把相似的功能模块化的核心思想,自顶向下把整个基 于EXTJS技术和MVC轻量级框架的学生信息管理系统划分成多个功能模块。这样基于 EXTJS技术和MVC轻量级框架的学主信息管理系统的功能结构设计是为了区分不同的 模块之间的功能,每一个模块按照不同的功能进行划分,完成不同的业务逻辑功能,从 而实现业务功能的独立性。基于EXTJS技术和MVC轻量级框架的学生信息管理系统的 功能由软件来实现时,可以分为以下七个功能模块,这样不仅降低了系统设计的复杂性 而且还降低了系统开发的难度。各模块在这些关系的约束下共同构成一个统一的整体. 完成系统的功能。下面对学生信息管理系统的功能设计进行详细的介绍。
3.1.1个人信息管理功能设计
在高校学生信息管理系统中个人信息管理的主要工作是实现学籍信息管理、基本信 息维护、个人信息维护、家庭信息维护、在校表现信息、修改个人密码等功能。个人信 息的功能模块图如下。
 
 
3.1.2培养信息管理功能设计
在系统的培养管理功能的主要工作是对培养信息进行管理,如学籍和培养管理、培 养方案和个人计划、课程选课信息、成绩管理等基本功能,其中,学籍和培养管理包括 学籍变动申请、打印在校证明、查看个人学籍信息,査看学籍信息;培养方案和个人计 划包括;课程选课信息包括课程选课,选课结果查询、査看课表、考试报名。培养管理 功能结构图如下所示。
 
图3. 2培养管理功能结构图
Fig .3.2 Functional structure of Training management
3.1.3学生工作管理功能设计
系统中学生工作管理的主要工作是对学生日常管里中的信息进行管理,这也要求这 个模块对于査询筛选功能的的要求更加强烈。其功能主要包括:外出管理、德育考核管 理、奖学金信息管理、助管信息管理、助学金贷款管理、出国留学管理等功能。其中贷 款管理可以分为:填写贷款信息、提交贷款申请、填写还款信息、填写展期信息、提交 
还款申请、提交展期申请、贷款信息查询。出国留学管理包括:公派申请、出国审批、 出国状态査询、短期交流项目等。
报表管理更能结构图如下所示。
~学生工作管理~
出国留学管理
 
 
 
图3. 3学生工作管理功能结构图
Fig .3.3 Functional structure of Xueshengdent work management
3.1.4毕业信息管理功能设计
在学生信息管理系统中毕业信息管理的主要功能主要包括:学位信息管理、毕业学 位状态、学位信息确认、毕业信息核对、学位信息核对、答辩信息管理等。检索统计功 能结构图如下。
毕业信息管理
 
图3. 4毕业信息管理功能结构图
Fig. 3.4 Functional structure of Graduate information management
3.1.5学位档案管理功能设计
在学生信息管理系统中学位档案管理功能的主要工作是毕业论文管理和档案信息 管理功能。其功能主要包括:论文提交、论文信息査询、毕业信息査询、填写卷内目录、 档案信息査询、档案归档管理等功能。
学位档案管理功能结构图如图3.5所示。
 
 
图3. 5学位档案管理功能结构图
Fig .3.5 Functional structure of archives information management
 
3.1.6系统信息维护功能设计
在学生信息管理系统中系统维护的主要工作包括两个方面,一是基础信息维护,二 是系统信息维护。其中基础信息维护包括:学生信息、毕业信息、成绩信息、档案信息、 用户信息、贷款信息。系统信息维护包括,系统整理、操作员管理系统备份,系统异常 维护。这些项目在系统设计时,就己经进行了设置,只有系统管理员权限才可以对这些 基本数据进行维护,系统维护的功能结构图如图3.6所示。
 
 
 
 
 
3.2技术架构设计
基于MVC和ExUS技术的学生信息管理系统的应用体系框架,首先是采用Struts2 框架轻量级框架实现的,是MVC的设计思想。在Struts2中采用MVC的思想将业务逻 辑层和表示层分离,并使用拦截器对页面请求信息进行截取。Struts2的核心控制器文件 是Struts-config. Xml,使用Struts2框架时,首先对在Struts-config. Xml文件中添加映 射信息的配置,然后完成请求对应的action和severlet的编写。在用户对服务器提交请 求时,服务器会根据Struts-config. Xml的配置信息,对请求信息进行截取,然后根据 任务映射完成任务分流工作,使用不同的业务逻辑action和视图severlet为截取到的用 户提交信息提供服务,跳转到不同的功能页面。下面给出系统应用体系框架图,如图3.7:
 
图3. 7系统应用体系框架图
Fig. 3.7 Application system frame
基于MVC轻量级框架的学生信息管理系统中使用MVC的三层结构模式,MVC结 构的解释如下:
V (view)视图或表示逻辑层,视图是用户看到并与之交互的界面。对于过去的 Web应用程序,视图几乎就是HTML元素组成的界面,对于新类型的Web应用程序中 的HTML元素来说,HTML仍然是在视图中,起着重要的作用,但一些新技术已初露 端倪,并得到了大量应用,它们包括Adobe Flash和象XHTML XML/XSL, WML标记 语言和其他一些Web服务。
M(model)是一个模型,模型表示企业数据和业务规则。MVC三部分中,模型拥有大 部分的处理任务。例如,它可以用于诸如EJB和ColdFusion组件成员对象来处理数据库, 模型返回的数据是中立的,数据格式的模型,这种模型可以提供多个视图的数据,应用到模 型只需要编写一个代码,可以重复使用多个视图,所以减少了重复代码。
C(Controller)控制器,控制器接受用户的输入并调用模型和观点,来完成用户的需求, 所以当你点击超链接在网页和发送HTML表单,控制器本身不做任何与任何输出。它只 是接收请求并决定调用模型组件来处理请求,然后决定视图显示返回的数据。
系统MVC调用处理原理图如图3.8所示:
 
图3.8系统MVC调用处理原理图
Fig. 3.8 The principle diagram of the system call MVC processing
上面对MVC的技术架构进行了分析,下面就结合高校学生信息管理系统实际开发, 对高校学生信息管理系统的应用体系架构进行设计。
在 Struts + Spring + Hibernate 的组合框架模式中,Struts、Spring 和 Hibernate 都 有各自的特点,开发起来十分的方便,下面对各自的特点进行介绍:
Struts的MVC设计模式可以使我们的逻辑变得非常清晰。
Spring的IOC , AOP可以使我们的产品在最大程度上脱钩。
hibernate的实体对象,当然是持久性
Web层是MVC模式里面的“ C ”(控制器),商业逻辑层和表示层负责联动控 制,调用业务逻辑和业务数据使用Struts MVC表示层组织系统的性能的框架。
服务层(业务逻辑),负责实现业务逻辑。业务逻辑DAO层的基础上,通过积极 的模式包装DAO组件,完成系统需要的业务逻辑。
DAO层负责系统的持久化对象的数据交互。该层封装了数据,并实现对数据的添, 删,查,改等操作。
PO ,是系统的持久化对象。它的主要任务是实现实体类到关系型数据库的映射, 这个映射工具把类对象映射到关系数据库中的数据对象,为面向对象变成提供了方便的 数据库操纵,并且实现起来很容易,本系统是采用Hibernate作为ORM框架来实现的。
Spring的整个的中间层,网络层,服务层,DAO层及P0无缝集成,其数据服务 层的作用是用来存储数据。
学生信息管理系统的技术架构图,如图3.9所示:
/ 一 —一 /
18/* pc
浏览器
贝面里现
 
 
 
 
图3・9技术架构图
Fig .3.9 Technical architecture diagram
3.3系统详细设计
本节的主要的任务是在对高校学生信息管理系统的需求分析和总体设计的基础上, 针对系统的架构设计进行细化,完成了高校学生信息管理系统实现中的对象和类的详细 设计,并对设计的类和对象进行了详细的分析,并确定了这些类的属性和方法。
3. 3.1层次架构
学生信息管理系统的整体框架采用MVC模式的思想,使用Struts2的编程模式编写。 技术架构采用SH架构,即Struts和Hibernate的结合。
其系统技术架构如图3.10所示。
 
客户端 [ 表示层 ’;业务逻辑层 集成层 ? 数据库
 
图3.10层次架构图
Fig. 3.10 Hierarchical architecture diagram
系统在用户对服务器提交请求时,服务器会根据Struts-config. Xml的配置信息, 对请求信息进行截取,然后根据任务映射完成任务分流工作,使用不同的业务逻辑action 和视图severlet为截取到的用户提交信息提供服务,跳转到不同的功能页面。如服务器 在接受到用户的add.do请求时,就会返回给用户跳转到用户添加页面的信息,并在后台 进行相应的action类进行处理。
3.3.2调用逻辑
系统逻辑处理类的具体功能:
(1)Servant接口:系统提供一个接口,用于提供业务逻辑处理业务逻辑处理这个 借口时,他们需要被调用的入口处。
(2)ActionParser接口 :系统解析配置文件条目。
(3)XXXAction类:类表示一个范围内的业务流程,不同的业务,不同类型的治 疗,需要实现lAction接口,下层DAO接口和工具调用。它是一种系统服务处理逻辑控 制器。
(4)DAO接口:包数据库和事务操作。
具体的业务逻辑处理类图设计,如图3.11所示:
解析配置文件, 获取Action的入口条 />!
 
 
 
O
I XXXAction |
3
图3. 11框架类调用逻辑图
Fig. 3.11 Framework banji call logic diagram
3. 3. 3目录结构
主要目录结构如下:
配置文件路径 processes/mobilzhuanyeay/
源代码路径 com/aspire/comp/biz/mobilzhuanyeay/
配置文件:processes/mobilzhuanyeay/mobilzhuanyeayprocesses.xml
SQL 文件:processes/mobilzhuanyeay/sql_mobilzhuanyeay.xml
Action 类:com/aspire/comp/biz/mobilzhuanyeay/action/PayAction.java
DAO 类:com/aspire/comp/biz/mobilzhuanyeay/dao/PayDAO.java
Service 类:com/aspire/comp/biz/mobilzhuanyeay/service/PayService.java
Util 类:com/aspire/comp/biz/mobilzhuanyeay/util/MobilzhuanyeayUtils.java
Web
| ——build
| ——| ——build.cmd
| — | ——build.xml
| ——conf
|——db
| ——doc
| ——src
| ——| ——com/aspire/ comp/biz/xxx
| ——| —processes/xxx
图3.12目录结构图
Fig・3・12 The directory structure
3. 4数据库设计
在基于MVC轻量级框架的学生信息管理系统软件的开发中,数据库的设计使用 Hibernate技术对数据模型的操作。下面对学生信息管理系统的数据库设计进行介绍。
3.4.1概念结构设计
描述概念模型的有力工具是E-R模型,现根据系统数据流程图和对数据项的描述, 对系统中主要实体如图3.13进行设计。
 
 
图3. 13系统中各实体E-R
Fig. 3.13 Each entity E - R in the system
3. 4. 2 E-R关系设计
&R图,是实体-关系图,它可以提供了表示实体的属性和实体之间的联系的方法。 实体-关系图是用来描述现实世界概念模型的。系统的用户实体联系如图3.14所示。
 
 
图3. 14用户实体联系图
Fig .3.14 The yonghu entity relationship diagrams
 
其中。管理员可以对教师、学生实体进行创建。教师实体和班级实体是一对多的关 系,即一个教师实体可以对应多个班级实体,而一个班级实体只能有一个教师实体对应, 因为一个老师可以负责多个班级,而一个班级只能由一个老师负责。学生实体和班级实 体是多对一的关系,即一个班级实体可以对应多个学生实体,而一个学生实体只能有一 个班级实体对应,因为一个学生只能属于一个班级,而一个班级却可以有很多学生。
用户的属性如图3.15:
 
Fig. 3.15 The attribute of the yonghu 学生的属性如图3.16:
 
 
 
Fig. 3. 16 The attribute of the students 教师的属性如图3.17:
 
 
 
 
图3. 17教师的属性
Fig. 3.17 The attribute of teacher 课程的属性如图3.18:
 
 
选课表属性如图3.19:
 
 
图3.19排课属性
Fig . 3. 19 Arranging properties
 
排课及成绩属性如图3.20:
 
Fig. 3.20 Course selection and chengji table properties
 
3.4. 3数据库表设计
系统在数据表中遵循三个原则:
(1) 数据表中的主键字段号码的组合成为可能,从而使系统可以保存该查询的数 据设计的运行时间,而且还可以节省一个数据库索引的存储空间。
(2) 数据库的设计,尽可能表的数量,不仅能够避免数据冗余,但也客观世界的 抽象,简化ER图形式的高度。
(3) 在数据表设计中,尽可能的不增加表中的数据域的数目,从而减少了数据冗 余。
基于Ext js技术和mvc框架的学生信息管理系统的数据库设计的结果在下面的表中 所示的表中。每个表是一个数据库中的表。据的数据流,对其中的数据项被描述如下:
⑴学生登陆信息:包括密码、学号、权限、用户名。对数据类型进行设计。设计 结果如表3.1所示。
表3.1学生登陆信息表
Tab・ 3・1 Table of Student login information
列名 数据类型 非空 含义
Yonghu_ID Integer(4) 学生学号(主键)
Yonghu_qx Char (4) 用户权限
Yonghu_code Integer(4) 用户密码
Yonghu name Char(50) 学生姓名
(2)学生基本信息包含学号、姓名、性别、出生日期、籍贯、政治面貌、身份证号、 联系电话、班级、系部、家庭住址。同时给出其数据类型及其含义。设计结果如表3.2 所示。
 
(3)班级信息包含学号、姓名、系部、年级、班级、所学课程。并对其含义根据类 型进行设计。设计结果如表3.3所示。
表3. 3班级信息表
Tab. 3. 3 Table of The banji information
列名 数据类型 非空 含义
Class_course Char(50) 所学课程
Xuesheng^_class Char(50) 所在班级
Class_grade Char(50) 所在年级
Yonghu_ID Integer(4) 学生学号(主键)
Xuesheng_dbumenaer Char(50) 所在系
Yonghu name Char(50) 学生姓名
(4)教师信息:工号、 姓名、所教课程、 课程所在学期。
设计结果如表3.4所示。
表3. 4教师信息表
Tab. 3.4 Table of Laoshiers' information
列名 数据类型 非空 含义
Teach _dbumenaer Char(50)
Class_course Char(50)
Teach _name Char(50)
Chengji_term Char(50)
Teach ID Integer(4)
(5)成绩信息:姓名、学号、考核方式、所学课程、平时成绩、课程所在学期、期 末成绩占总成绩比例、期末成绩、期末占总成绩比例、及格情况、总成绩、学分。设计 结果如表3.5所示。
 
 
(6)贫困生信息:学号、姓名、班级、申请情况、贷款数额、是否减免、减免金额。 设计结果如表3.6所示。
表3. 6贫困生的信息表
Tab. 3・ 6 Table of Pinkunsheng information
列名 类型 非空 含义
Pinkunsheng^retu Boolean 是否还完贷款
Pinkunsheng_ream Long(10) 减免金额
Pinkunsheng^rkechengce Boolean 学费是否减免
Pinkunsheng_amount Long(10) 贷款数额
Pinkunsheng_app Boolean 是否申请
Xuesheng_class Char(50) 所在班级
Yonghu_name Char(50) 学生姓名
Yonghu ID Integer(4) 学生学号(主键)
 
(7)奖惩信息:学号、姓名、班级、三好学生、奖学金、国家奖励名称、省奖励名称、 校级奖励名称、记过处分、退学、休学、转学。设计结果如表3.7所示。
表3. 7奖惩信息表
Tab. 3. 7 Table of Rewards and punishments information
列名 类型 非空 含义
BUMEN_chan Char(50) 学籍变动
BUMEN_puni Char(50) 受过何种处罚
BUMEN_enco Char(50) 受过何种奖励
Xuesheng^class Char(50) 所在班级
Yonghu_name Char(50) 学生姓名
Yonghu ED Integer(4) 学生学号(主键)
(8)毕业信息:学号、姓名、成绩是否合格、能否毕业。设计结果如表3.8所示。
表3. 8毕业信息表
Tab. 3. 8 Table of The graduation information
列名 ® 含义
 
3. 5本章小结
本章主要介绍系统的总体设计,功能结构设计,技术架构设计,系统的详细设 计,以及数据库设计,为系统实现提供了一整套切实可行的解决方案.
 
 
4系统实现
本章对基于mvc框架和extjs技术的学生信息管理系统的几个功能模块的实现描述, 并给出了系统实现的解决方法进。主要分为权限控制实现、个人信息管理实现、学生工 作管理实现、培养信息管理实现、学位档案信息管理实现、系统维护实现、以及关键代 码代码设计的实现。
4. 1系统页面实现
由于基于MVC框架和Extjs技术的学生信息管理系统的实现模块较多,在此不进 行全面的描述,本小节仅仅对部分比较关键的模块进行介绍,以具有代表性的模块为例 进行详细的描述。
4. 1. 1权限控制模块实现
该系统是独立于外面的世界,而高校的学生信息进行统一管理的应用软件,使用仅 限于谁没有毕业从高校的教师和在职人员,所以在进入系统需要验证身份的学生。所有 用户第一次使用这个系统,调整应规定统一的标准代码的用户名和密码,首次登录的管 理员。
登录用户需要根据自己的身份选择注册表权限:管理员,辅导员,教师,学生。登 录后,用户需要修改原来的密码,以防止他人使用个人帐户,修改密码需要记住,如果 忘记了,管理员需要修改査询的个人信息。
辅导员权限登录本系统后,可对本学年度管理学生的信息进行修改维护并可查询其 他一些信息。
教师权限仅限于根据自身课程的要求设置该科目的考试形式。并给予学生最终的成 绩。学生权限则是对自身实际情况对自身的信息进行改正并上传,同时查询其他相关信 息。系统登录界面如图4.1所示。
用户名: 201113919
密码: ••••••
團记住密码
;登录 |忘记密疤|
图4.1登录实现图
Fig . 4. 1 Figure of Login
登录模块可能要考虑很多的扩展,登录页面也可以是一个单独的网页制作,这些页 面包括基本的TextBox和Label控件绘制基木的页面信息必须可以用来显示用户的登录 信息,包括用户如何指引填写适当的名称,并提示用户是否存在,该页面还包括两个 TextBox控件,供用户填写相关信息,以验证用户输入正确使用验证控件的页面,用户 输入控制。
登录页面部分关键代码见附录lo
4. 1. 2个人信息管理实现
个人信息管理的实现效果,如图4.2所示:
 
图4. 2个人信息管理实现图
Fig. 4. 2 Figure of Persorml infonnation management
个人信息管理实现的功能是对写牛个人信息的各项基础信息的管理,例如个人登录 密码、个人联系方式、入学信息等。
部分关键代码如下:
sub _test_book {
my $self = shift;
my $dbh = $selP>{dbh};
my $books = $selP>{meta}[BOOK];
#生产的操作sth
my %book_sth;
for my $name (keys %$books) {
my $nhash = { %{$books->{$name}->[BOOK_NHASH]} };
delete $nhash->{TS_C};
my %nhash = reverse %$nhash;
my @idx = sort { $a <=> $b } keys %nhash;
 
my @fld = @nhash{@idx};
my $sth_sel = $dbh->przhuanyeare(nselect". join(',@fld)." from book_$name order by id”);
my $sth_del = $dbh->przhuanyeare("delete from book_$name where id < 99999999999n);"
$book_sth {$name} = {
'select' => $sth_sel,
'delete* => $sth_del,
};
}
$sel f-> {test_book} = \%book_sth;
return $self;
}
#
#增加jzpz:
#1.清理 statement
#2. select
#
sub _testjzpz {
my Sself = shift;
my $dbh = $self->{dbh};
my %jzpz_sth =(
select => $dbh->przhuanyeare("select id, j」d, d」d, jb_id, db_id, ys_type, ys_id, fid, period from jzpz order by id"),
delete => $dbh->przhuanyeare("delete from jzpz where id < 99999999999'*),
);
$self^>{testjzpz} = \%jzpz_sth;
return $self;
}
4. 1.3学生工作管理实现
序号 姓名 学号
1
岂作
■'书卜出⑥里
'!'外出清假申请
V :慕健囱考核富渥
■!宰优秀研究生奖学金慎息管輝
丨1童看个人优秀奖学金申i青 i常删信慰言遲
1 I童看个人助愉岗位申请
-助玄信息鬣理
•适看个人助营商位申请 i岂国家助孚贷募
;学生填写贷隸ffi息
|犍交贷款申请
卜填写展期信息
1攜交轴延期申请
丨提交还^申请
!贷款状态査看
I 学生信息确认
图4. 3学生匚作管理实现图
Fig. 4. 3 Figure of Xueshengdent work management
学生工作管理模块有学生信息管理、德育考核管理、奖学金管理、助学贷款信息管 理等功能。
学生工作管理实现效果,如上图4.3所示:
(1)学生信息管理
主要用于学生基本信息的管理,供用户査询。学生只能査询他们自己的信息,学生 辅导员进行信息査询,管理员可以査询所有学生的信息。学生点击査询,显示自己的基 本信息。辅导员和管理员进入界面,査询号码,名称等,点击“査询”按钮,生成学生 信息査询。管理员査询,例如,在CX_click click事件触发SQLxueshenginfb类来访问 数据库获取所需的信息,并显示相应的控件在页。
(2)助学贷款信息管理
针对需申请贫困补助的学生可使用此项功能,由学生及管理人员填写输入信息,上 传并进行统一的信息管理,本模块可实现贫困生的家庭基本情况,申请助学贷款金额以 及在校期间补助发放情况的统计及信息的统一。
家庭自然情况:包括父母亲及兄弟姐妹的职业、健康情况,所患疾病及疾病的种类, 该生本年度家庭遇到的具体困难,外借财务金额等,以便管理贫困生家庭基本状况。(1) 家庭情况査询:实现对贫困生按照姓名、班级或专业款项进行査询。(2)家庭情况修改: 由学生提交修改内容于管理教师或系统管理人员,经审核后对所需修改信息进行修改, 并限定修改次数。
(3)用户记录删除:删除不再需要申请贫困生补助的学生记录。补助发放情况:显示 贫困生在校勤工助学信息,并统计高校内外为贫困生所发放的补助金额,以便于补助的 分配均匀。申请贷款数额:统计贫困生在校期间按个人所需申请的贷款金额及还款情况。
助学贷款信息管理部分关键代码见附录2。
4.1.4培养信息管理实现
这个功能是由任课教师完成第一学期任课教师选择的名称和类,JS_click事件类的 学生进入课堂的学生人数,姓名,然后设置任课老师平时的表现,中期成绩,比例的操 作最终成绩,完成后,按“确定”,成就条目,根据教师的比例计算总成绩的学生科设 置,系统设置,输入完成后,选择“保存”按钮的作用性能信息被保存到数据库中,学 生可以査询他们的结果。
培养信息管理实现效果,如图4. 4所示:
 
耀糾鈕.聊陛泵Nii虽譎
珈管理
乙锄和培粽囂理
「标時确
!切变动申请
! !gg个人系统状态 现在位務 —— 选课结果查询
 
迭课结果直询1:
下载上学年无必修课证明 学期下拉选择:全部 -
r导师与学生
![申谓諭
t培嫌方案和学生个人计划 占课程和选滦
1 :英语听说迭课 课程号 课程名 课序号 课程彳
MP0809001 马克思主义理论(理工医) 12 学位
MP0864001 医学统计学 2 学位
i卜学生选踝结果查®
!卜学生课鑽看
CET宠试根名 M08067019 皮肤粘膜病 1 非学£
M08067016 口腔免疫学 1 非学£
-成绩管理 MP0891001 第一外国语(英) 24 学位
学生鱼看成线 C08060026 现代分子生物学技术 2 非学£
MP0847003 计算机应用(医) 1 非学t
 
图4. 4培养管理实现图
Fig . 4. 4 Figure of Training management
为了方便不同的用户显示不同的内容,你可以使用内置的对象所提供的ASP.NET 编程和判断,例如,当您登录,如果登录成功后,系统会为用户建立配置Session对象。 会话内置在用户的浏览器内的过程中提出的对象,在关闭浏览器的过程中,如果用户或 用户不工作很长一段时间,那么Session将被取消内置对象。
其中,代码在页面中添加一个Label控件和一个图像控件,这两个控件呈现给不同 的用户不同的效果。
I 信恿试團脣养閭里I毕址和学位創里I毕11论丈菅理I出国菅團 研宅生工作I信息脈咅I诗案置劇创超金项目营理I
 
图4. 5出国管理实现图
Fig. 4.5 Figure of Management abroad
在学生信息管理系统中培养管理功能的主要工作是对书刊信息进行编造目录,如学 籍和培养管理、培养方案和个人计划、课程选课信息、成绩管理等基木功能,其中,学 籍和培养管理包括学籍变动申请、打印在校证明、查看个人学籍信息,查看学籍信息; 培养方案和个人计划包括;课程选课信息包括课程选课,选课结果查询、查看课表、考 试报名。
培养管理部分存储过程重要代码见附录3
4. 1.5学位档案管理实现
在学生信息管理系统中学位档案管理功能的主要工作是毕业论文管理和档案信息 管理功能。其功能主要包括:论文提交、论文信息查询、毕业信息查询、填写卷内目录、 档案信息查询、档案归档管理等功能。
学位档案管理的实现,如图4.6至4.8所示。
 
 
 
材料鮪 形成时间—x
VuZl&Xi-.?# 申済书
ii
bo •• . J IJZ.T'IKl U
学位论文评阅书(如有缓期申请学位审批裏、学位 论文修改申诉情况表的Pfl后〉
论文答揶记录
论文咎旃夷决票
图4. 6档案管理实现图
Fig .4.6 Figure of File management
 
 
丨个人信息菅理I培般團毕厨随團毕业论姻II骚團笳注I作I信息郦I档籍團澜竝顷目解I |
论刃0目
选题方式 请选择
论文类型 请选择▼
课题研究设计选题简介
 
图4. 7毕业论文管理实现图
Fig. 4. 7 Figure of Graduation thesis management
 
•学位信島S对
董看申请学位论文岌表情;兄 遷留人员状态查询
图4. 8毕业和学位管理实现图
Figure of Graduation and degree in management
主要用于学生在所有科目的审计综合成绩及格科目超过指定数量的高校或在校期 间,如果没有修复的高校没有留出足够的毕业学分,如果及格科目的数量,但不超过指 定数量的高校在毕业前仍然是失败的科目,系统将通知学生在毕业前化妆。Page_Load 事件提出在页面加载时,援引SQLgradu类来访问数据库,以获取有关学生成绩。
学位档案管理部分关键代码见附录4
4.1.6系统部分关键代码实现说明
在本节结合的系统实施过程中的例子实际使用了一些独特的,关键的类进行了介 绍,并给出了实例代码。代码实现了框架的配置信息如图4.9所示:
图4. 9配置框架实现图
Fig .4.9 Figure of Con figuration framework
在上面的配置框架图,使用了 Hibernate的数据持久化技术。Hibernate的技术实施 条件中使用变量封装一组搜索条件,然后调用Hibernate框架getObjectForm的方法来査 询从数据库中査询得到的数据,并返回数据封装在对象类型。
数据封装在Object类型的部分关键代码如下:
sub object {
my ($self; $req) = @_;
#Data::Dump->dump($self->{cfg}{batch}->jobs(l));
my $rtn = {
status => 0,
## if zkemel->prcess_count() > 16 ,
#{ status => 1, errmsg => Vesubmit it later, system busy*}
#my $date = $req->{ param} {date};
$date ~ s/-//g if $date;
#下载文件
if($req->{action} /Adown_file/) {
my $name = 'Zbatch'.
.$date ・
.$req->{param} {type}.
・'down:
my $rtn = zkemel->process_submit(
$name,
{
code => \&child,
para => [ $req ],
reap => 0, size => 1,
},
);
}
#分配任务
elsif($req-> {action} =- /Aassignjob/) {
my Sname = Nbatch,.
・ $date.
.$req->{param} {type}.
.'assign';
my $rtn = zkemel->process_submit(
$name,
{
code => \&child,
para => [ $req ],
reap => 0, size => 1,
},
);
}
#运行任务
elsif ($req->{action} j /^runjob/) {
my $job = $self->{cfg} {batch}->job($req->{param} {job_id}); my $name = Zbatch'.
・$date・
□ . $req->{param} {type}・
□・'load'・
u. $job->{index};
my $rtn = zkemel->process_submit(
$name3
{
code => \&child,
para => [ $req ],
reap => 0,
size => 1,
},
);
}
#运行工作
elsif ( $req->{action} =- /run_mission/) { warn "begin get jobs id…・・M if DEBUG; my $jobs = $self->{cfg} {batch}->jobs($req->{param} {mission_id}); Data::Dump->dump($req->{param} {missioned}) if DEBUG; warn ”run ids: \nH. Data::Dump->dump($jobs) if DEBUG; for (@$jobs) {
my $name = 'Zbatch1.
・$date.
・$req->{param} {type}.
u ・'load'・
□ • $_->{ index};
my $submit = {
action => 'runjob',
param => {
type => $req->{param} {type},
job_id =>
oper_yonghu => $req->{param} {oper^onghu}, },
};
zkemel->process_submit(
Sname,
{
code => \&child,
para => [ Ssubmit ],
reap => 0, size => 1,
} ); }
}
elsif ( $req->{action} =- /getjog/) {
$rtn->{ret} = $self->{cfjg}{batch}->getjog($req->{param});
} 一
elsif ( $req->{action}亠 /pack/) {
if (my $pm_id = $self->{cfjg} {pack}->pack_mission( { sm_date =>
 
$req->{param}{date} })) {
$req->{param} {pmission_id} = $pm_id;
my $name = 'Zpack1.
. $date;
my $rtn = zkemel->process_submit(
$name,
{
code => \&child,
para => [ $req ],
req? => 0, size => 1,
}, ); }
else {
$rtn->{ status} = 1;
$rtn->{errmsg} = "pack error'*;
}
}
else {
zlogger->error(ninvalid action[$req->{action}]*');
$rtn->{status} = 1;
$rtn->{errmsg} = "invalid action[$req-> {action} ]n;
}
return $rtn;
)
如果需要使用Hibernate的事务处理技术通过一组数据得到的,这就需要使用
Hibernate提供的技术框架getList方法,相同的条件下,只要要添加查询参数的参数査 询多个数据集时,Hibernate框架将査询列表返回到业务逻辑层数据封装在一组。
数据査询的实现类的名称GETDATE类是相关的数据査询功能,其部分源代码如
下:
#处理配置目录 mkpath("$self->{output}/$self->{project}/conf7proc"), mkpath("$self->{output}/$self->{project}/etc"); mkpath("$self->{output}/$self->{project}/log"); mkpath("$self->{output}/$self->{project}/libexec"); mkpath("$self->{output}/$self->{project}/lib"); mkpath("$self->{output}/$self->{project}/sbin");
#sql目录 mkpath("$self->{output}/$self->{project}/sql/table/book"); mkpath("$self->{output}/$self->{project}/sql/table/yspz"); mkpath("$self->{output}/$self->{project}/sql/table/dim"); mkpath("$self-> {output}/$self-> {project} /sql/table/dict"); mkpath("$self->{output}/$self->{project}/sql/view");
#模板目录 mkpath("$self->{output}/$self->{project}/t");
#测试目录 mkpath("$self->{output}/$self->{project}/template/test/yspz");
mkpath(n$self->{output}/$self->{prqject}/tempiate/test/bookn); #解析配置
Ssel^config^dimO or return; $self->config_bookO or return; $self>configjspz() or return; $self->config_proc() or return;
#模板工具
# $self>{tpl} = Text::Template->new(); return $self;
}
#文件目录检査检査
sub check {
my ($self) =@_; warn "input is not defined" and return unless $self->{input}; warn "output is not defined'* and return unless $self->{output};
warn ”project is not defined'1 warn "dir[$self-> {input} ] does not exists"
warn Mfile[$self->{base}/dim.dat] does not exists" n$self->{base}/dim.datM;
warn "dir [Eself^easel/book] does not exists1* M$self->{base}/bookn;
warn "dir [$selfA{input}/yppz] does not exists" H$self->{input}/yspzf';
warn "dir [$self->{output}] does not exists'1 return 1;
}
#Performance is very important for something as often used as accessors,
#so we optimize them by compiling our own code, don't be scared, we have
#tests for every single case
sub attr {
my (Sclass, $attrs, $default) =
return unless (Sclass = ref$class"ji $class) && $attrs;
Carp::croak 'Default has to be a code reference or constant value*
if ref $default && ref$defaultne "CODE1;
# Compile attributes
for my $attr (@{ref $attrs eq 'ARRAY' ? $attrs : [$attrs]}) {
Carp::croak qq{Attribute H$attrH invalid} unless $attr /A[a-zA-Z_J\w*$/;
#Header (check arguments)
my $code = "package $class;\nsub $attr {\n if (\@_ = 1) {\nn;
#No default value (return value)
unless (defined Sdefault) { $code 严” return \$_[0]{,$attr,};n}
#Default value
else {
#Return value
$code .= ” return \$_[0]{ 'Sattr1} if exists \$_[0] {'$attr‘} ;\nH;
#Return default value
$code = n return \$_[0]{'$attr'} = H;
$code .= ref$default eqYODE' ? ^default-^SJO]);': ^default;1;
} "
#Store value
$code = M\n }\n \$_[0]{'$attr'} = \$_[l];\nH;
#Footer (return invocant)
$code =H \$J0];\n}n;
#We compile custom attribute code for speed
no strict 'refs';
warn Attribute $attr in $class\n$code\n\nn if $ENV {ZETA_BASE_DEBUG};
Carp::croak nMojo::Base error: $@” unless eval "$code;l”;
}
在系统中,学生的身份进入系统管理,系统需要实现的Action类下面的描述,首先 需要学生管理Action类的DispatchAction类的方法和接口继承和实现,重写这个实现 Struts2的处理同时对多业务运营的要求。的DispatchAction类用户需要设置多个 ObjectDao类型的对象,实现对数据的操作,同时实现多个如setDispatch()和getDispatch O方法操作这些对象的get和set方法。这些方法的实现特定类别中的封装类调用方 法实现Object对象进行操作,以达到各种操作系统数据。
如下实现代码所示:
sub page_data {
my $self = shift;
my $sql = shift;
my Sindex = shift;
my @data;
my $size = $self->configure-> {page_size};
my Sstart = ( Sindex -1 ) * $size + 1;
my Send = (Sstart + $size );
my $sql_data =
"select * from ($sql) where rowid>=$start and rowid < $endH;
my $sql_count = "select count(*) from ($sql)";
#wam $sql_data;
#wam $sql_count;
my $dbh = $self->dbh;
my $dh = $dbh->przhuanyeare($sql_data);
my $ch = $dbh->przhuanyeare($sql_count);
$dh->execute;
while (my $row = $dh->fetchrow_hashref) {
$self->decode_ch($row);
push @data, $row;
}
$dh->finish;
$ch->execute;
my $count = $ch->fetchrow_arrayref->[0];
my ($total_page, $prev_page, $next_page ) = ( 1,1,1 );
use Intagereger;
if ($count % $size) {
$total_page = 1 + {count / Ssize;
}
else {
$total_page = $count / $size;
}
$totaljpage = 1 unless $total_page;
$prev_page = ( $index -1 )>0? $index -1:1; $next_page =
($index + 1 )<= $total_page ? $index + 1 : $total_page; return { data => \@data,
index => Sindex, count => Scoxint, prev_page => $prev_page, next_page => $next_page, total_page => $total_page
};
}
sub select {
my $self = shift;
my $sql = shift;
#use Data::Dump;
my $data;
$sql = $self->dbh->przhuanyeare($sql);
$sql->execute;
while (my $row = $sql->fetchrow_hashref) { $self->decode_ch($row);
push @$data, $row;
}
$sql->finish;
return $data;
}
sub update {
my $self = shift;
my $sql = shift;
$self->dbh->do($sql) or $self->errhandle($sql); $self->dbh->commit;
return 0;
}
sub errhandle {
my $self = shift;
my $sql = shift;
$self->dbh->rollback;
die "can't do [$sql]:H.$self->dbh->errstr; return 0;
}
#Performance is very important for something as often used as accessors,
#so we optimize them by compiling our own code, don't be scared, we have
#tests for every single case
sub attr {
my ($class, $attrs9 $default) =
return unless ($class = ref$class || $class) && Sattrs;
Carp::croak default has to be a code reference or constant value' if ref {default && ref Sdefault ne 'CODE*;
# Compile attributes
for my $attr (@{ref$attrs eq 'ARRAY* ? Sattrs : [$attrs]}) {
Carp::croak qq{Attribute H$attrH invalid} unless $attr =*- /A[a-zA-Z_J\w*$/;
#Header (check arguments)
my $code = "package $class;\nsub $attr {\n if (\@_ = 1) {\n”;
#No default value (return value)
unless (defined Sdefault) { $code = " return \$_[0]{f$attr'};" }
#Default value
else {
#Return value
$code .= ” return \$_[0]{'$attr'} if exists \$_[0]{'$attr'};\nH;
#Return default value
$code =" return \$_[0]{'$attr'}= ”;
$code .= ref Sdefault eq 'CODE' ? '$default->($_[0]);': 'Sdefaultf;
} _
#Store value
$code = ”\n }\n \$_[0]{'$attr*} = \$_[l];\nn;
#Footer (return invocant)
$code =" \$_[0];\n}";
#We compile custom attribute code for speed
no strict 'refs';
warn "- Attribute $attr in $class\n$code\n\nn if $ENV {ZETA_BASE_DEBUG}; Carp::croak nMojo::Base error: $@H unless eval n$code;l";
}
4.2系统运行维护
4. 2. 1系统的测试步骤
每个逻辑的每个步骤都是和系统测试的过程和系统的过程是相似的,同样是分割成 多个步骤来完成。因此,在系统中测试包括模块测试,系统测试,验收测试三个步骤, 下面进行详细的介绍。
(1)模块测试
模块测试是整体测试的重点,因为只有确保每个模块可以的功能没有问题,才可以 保证整个系统的运行。在对系统进行设计时,对每个模块的子功能吃都进行了明确定义。 模块测试的目的就是保证每一个模块都是可以完成单元功能的功能单元。虽然在实际的 系统测试过程中,测试的时间是十分有限的,但是在我们进行测试的过程中也是尽可能 的对模块进行全面的测试。模块测试的测试重点是特殊功能模块,并且使用具有代表性 的特殊的数据进行检测,査看系统模块的健壮性。如:系统登陆模块,学生的个人信息 模块,毕业信息模块等。发现有的逐条执行的语句中的每个模块的操作的编码和设计在 测试过程中的错误,并且它们已被修改的每个期间。
(2) 系统测试
系统测试是作为一个完整的系统测试子装配和测试。在这个过程中,发现的设计和 编码错误,要修改的程序中出现问题,而且还要验证,该系统可以实现的设计特点,以 确保系统的正常运行,同时确保系统的功能中可以完成要求的功能。
(3) 验收测试
验收测试的目的是验证系统确实能够满足用户的需求。在测试过程中,系统被充分 利用,例如:根据一组有效的用户名和初始密码,进入系统主页,因为这个系统是需要 输入用户名和密码,所以在测试过程中,和初始密码已被修改。
总的来说,这套系统已经超过了几步测试,虽然发现了一些问题,比如如何保持数 据库的数据一致性,也有未经授权的用户访问等问题,但它已被修改,基本使用方法系 统可以保证,也达到了对系统的要求设计。
4. 2. 2系统的维护方法
系统投入使用后,总是会有一些意想不到的问题,以改正错误或满足新的需求和修 改软件,那么我们就应定期进行维护系统。维护主要应包括以下几个方面:
(1) 系统维护:是指系统在日常使用过程中出现的各种问题,应及时维修和改造。 此外,由于高校的发展,改变或指定学生人数增多。因此,也需要定期升级系统,更新 和维护操作等。
(2) 数据文件维护:系统的维护起着重要的作用,包括建立一个新的数据文件, 修改文件等的原始数据。具体包括以下几个方面:
①数据库的安全性,完整性控制。在数据库中运行,由于外部条件的不断变化,所 以数据库的要求会有所不同,这就需要频繁的对数据库的修改,以满足用户的要求。
②数据库转储和恢复后的系统运行,以确保数据库的备份和恢复功能。例如:每年 都会有新入校的学生,转校,个别学生辍学,毕业年级的学生。因此,包括产生新生的 高校,毕业生信息归档,学籍变动的学生信息及其他信息必须经常进行相应的处理,维 护。
③重新组织和重新数据库结构:在工作一定时间后,系统数据继续被修改,更改数 据库或损坏的储存条件下的速度,从而减少数据访问的效率和性能时,重建数据库,确 保数据库根据原设计要求实现功能,删除不必要的垃圾数据,以提高速度和系统性能。
④数据库的性能,监测,分析:常规数据库的升级,更新等操作,确保跟上数据库 和其他系统的要求。
4.3本章小结
本章主要介绍了系统的具体实现方法和页面的详细设计,然后又给出了代码的设计 和实现,经过功能测试和运行维护,完成了系统的开发任务。
结 论
信息化是高校管理的必然趋势,其中学生信息管理系统是重要的组成部分。为此, 本文针对高校学生信息管理中的问题,设计并实现了基于MVC和ExtJS的高校学生信 息管理系统,可以初步满足高校学生信息管理的需求。本系统在设计与实现的过程中充 分考虑了系统的未来需求变动、系统功能扩展、系统功能升级等要求,具有代码重用性、 系统扩展性好、系统安全性高的特点,功能比较完善。
从需求调研、数据库的设计到编码实现,我收获很大。如在数据库设计方面改变了 以前对数据库的认识,锻炼了对E-R图的使用;在对系统进行完需求分析以后,根据 E-R图建表,建岀的表更合理,也更能满足需求。在技术方面,对Extjs技术以及MVC 框架有了更加深入的了解,加强了使用技能的锻炼,特别是sturts2中的函数,ResultSet, Calendar Date等。总之,通过这个系统的开发在软件工程领域里得到了全方面的提高。
在论文研究工作中遇到一些问题,如在对需求进行分析时,高校的管理人员对需求 描述很不清晰,导致开发的软件友好性不强,所以这是采用了反复调研的方式,先给出 一套解决方案,让用户给出缺点和不满意的地方,然后进行修改,最后得到人机交互友 好性好的系统模型。在技术方面,刚确定题目时,在对MVC框架的认识方面存在一些 问题,理解不够深刻,通过查资料向别人请教的方式现在已经基本掌握。今后,还会完 成高速扫描录入的功能和研发与高校一卡通的接口,使之更加完善。
附录1登录页面部分关键代码
sub clear {
my $self = shift;
my $book = shift;
#清理数据岸:ppz数据sequence
warn "begin alter seqjzpz'1 if DEBUG;
for (@$book) {
§sel化*{dbh}・>do("alter sequence seq_$_ restart with 1”); warn "begin clear if DEBUG;
$self->{test_book}->{$_}->{delete}->execute();
} ' "
warn "begin clear jzpz:…・"if DEBUG; $se^>{testjzpz}->{delete}->execute(); warn "begin commit....M if DEBUG; $self->{dbh}->commit();
$self->{dbh}->do(nalter sequence seqjzpz restart with l");my $self = shift; my $yspz = $self-> {meta} [Y SPZ];
for my Sycode (keys %$yspz) {
my $row = $yspz->{$ycode}; my $sql_upd =«EOF;
update yspz_$ycode set status = ? where period = ? and id = ? EOF ~
my $dstr =join ; ; map {lc $_ } @{$row->[YSPZ_FLIST]}; my $mark =join ; ; ('?) x @{$row->[YSPZ_FLIST]}; my $sql_ins =«EOF;
insert Intagero yspz_$ycode(id, $dstr, flag, ts_c) values(?, $mark, 0, current timestamp) EOF -
my $sql_upd_rk =«EOF;
update yspz_$ycode set flag = ?, revoke_cause = ?, revoke_yonghu = ?, ts_revoke = ? where period = ? and id = ?
EOF
my $sql_sel =«EOF;
select ♦ from yspz_$ycode where period = ? and id = ?
EOF -
my $sql_sel_rs =«EOF;
select * from yspz_$ycode where period = ? and id = ? with rs for update
EOF -
my $sel_yspz_ctrl =«EOF;
select cur from seq_yspz_ctrl where key = '$ycode‘ with rs for update
EOF _
my $upd_yspz_ctrl =«EOF;
update seq_yspz_ctrl set cur = ?, ts_c = current timestamp where key = Sycode' EOF -
chomp($sql_ins); chomp($sql_upd); chomp($sql_upd__rk);
chomp($sql_sel); chomp($sel_yspz__ctrl); chomp($upd__yspz_ctrl);
warn nsql_ins[$sql_ins]n if DEBUG;
warn nsql_upd[$sql_upd]n if DEBUG;
warn Hsql_upd_rk[$sql_upd_rk]n if DEBUG;
warn ”sq匸sel[§sql_selF ifDEBUG;
warn Msql_sel_rs[$sql_sel_rs]" if DEBUG;
$row->[YSPZ_INS] = $selfA{dbh}・>przhuanyeare($sql_ins);
$row->[YSPZ_UPD] = $self->{dbh}->przhuanyeare($sql_upd);
$row->[YSPZ_UPD_RK] = $self->{dbh}->przhuanyeare($sql_upd_rk); $row->[YSPZ__SEL] = $self->{dbh}->przhuanyeare($sql_sel);
$row->[YSPZ_CTRL_SEL] = $self->{dbh}->przhuanyeare($sel_yspz_ctrl); $row->[YSPZ_CTRL_UPD] = Ssel^fdbhJ^przhuanyeareCSupd^yspz^trl); $row->[YSPZ_SEL_RS] = $self->{dbh}->przhuanyeare($sql_sel_rs);
} ' return $self;
}
附录2助学贷款信息管理部分关键代码:
sub expect {
my $self = shift;
my $fell = shift;
my $meta_book = $self-> { meta} [BOOK];
#期望
my %exp; #总的期望值
my @expjzpz; #
for my $f (@$fall) {
$f^>{jzpz}->[3] =n. $meta_book->{$^{jzpz}->P]}[BOOK_ID]; # 调整 j_book ->jb_id
$f^>{jzpz}->[4] =H. $meta_book->{$f^>{jzpz}->[4]}[BOOK_ID]; # 调整 j_book ->jbjd
push @{$exp{$Q{j_book}}}, [map { V$_}
push @{$exp{$f->{d_book}}}, [ map {".$_} @{$f^>{d}}];
push @expjzpz, $f->{jzpz};
$exp{jzpz} = \@expjzpz;
}
return \%exp;
}
# sql目录
mkpath(n$self->{output}/$self->{project}/sql/table/bookn);
#账簿目录
 
mkpath("$self->{output}/$self->{project}/sql/viewn); # 视图目录
#模板目录
mkpath(n$selfl>{output}/$self->{project}/tn); # 测试目录
#测试目录
mkpath(”$self">{output}/$self">{prqject}/template/test/yspz”); mkpath(M$self-> {output}/$self-> {project} /template/test/bookM);
#解析配置
$self->config_dim() or return;
$self->config_book() or return;
$self->config_jyspz() or return;
$self->config_proc() or return;
#模板工具
# $self->{tpl} = Text::Template->new();
return $self;
}
#获取结果
sub result {
my $self = shift;
my $book = shift;
#结果数据
my %result;
for (@$book) {
$result{$_} = $self->{dbh}->selectall_arrayref($self->{test_book}->{$_}->{select});
} ~ "
$result{jzpz} = $self->{dbh}->selectall_arrayref($self->{testjzpz}->{select}); return \%result;
}
#撤卸测试环境
sub dtor {
my $self = shift;
$self->SUPER::dtor();
for (keys %{$self->{test_book}}) {
$self->{test_book}->{$_}->{select}->finish();
$self->{test__book}->{$_}->{delete}->finish();
} " _
$self->{testjzpz}->{select}->finish();
$self->{testjzpz}->{delete}->finish();
return Sself;
}
附录3培养管理模块部分存储过程:
sub params {
my Sself = shift;
my Sparams = shift;
my ( Scondition, $param )=(", ”);
if (exists $params-> {period} && (ref $params-> {period}) eq 'ARRAY') {
my $data = delete $params-> {period}; if($data->[l]){
$condition .= " and period>=$data->[l]H; Sparam = M&$data->[2]=$data->[ 1 ]H if $data->[2];
} if($data->[3]){ $condition ・=n and period<=$data->[3]H; Sparam = n&$data->[4]=$data->[3]n if $data->[4];
}
}
if (exists $params-> { status} && $params-> { status}) { Scondition .= n and status=n.delete $params->{status};
}
for my $key (keys %$params ) {
my Stype = ref $params->{$key}; if($type eq 'ARRAY'){
# 0: >= and <=
my $data = $params-> {$key}; if($data->[0]=0){ if ( $data->[l]) {
Scondition = n and $key>=$data->[l ]*'; $param ・="&$data->[2]=$data->[ 1 ]n if $data->[2];
} if($data->⑶){
Scondition = " and $key<=$data->[3]M; Sparam = "&$data->[4]=$data->[3]n if $data->[4];
}
}
elsif ( $data->[0] = 1) {
Scondition ・=” and $data->[ 1 ]=$data->⑵" if$data->[2];
Sparam = H&$data->[l]=$data->[3]n if $data->[2];
} elsif($data->[0] = 2){
Scondition = n and $key>=$data->[ 1 ]M if $data->[l]; $condition =n and $key<=$data->[2]M if $data->[2]; $param ・=n&$data->[3]=$data->[4]n
if$data->[l] || $data->[2];
}elsif($data->[0] = 3){ # a= b || aob
$condition •=" and $key=$data->[2]” if($data->[l]=l); {condition =n and $keyo$data->[2]n if($data->[l]=2);
}
} else { if (defined $params->{$key} && $params->{$key} ne ") { Scondition = H and $key=$params-> {$key}H; $param = "&$key=$params->{$key} n;
}
}
}
# sql目录
mkpath("$selfL>{output}/$self->{project}/sql/table/book"); mkpath(”$self">{output}/$self">{project}/sql/table/yspz”); mkpath("$self->{output}/$self->{project}/sql/table/dim,'); mkpath("$self->{output}/$self->{prqject}/sql/table/dictn); mkpath(” $self>{output}/$self">{pn)ject}/sql/view");
#模板目录
mkpath(n$self->{output}/$self->{prqject}/tH);
#测试目录
mkpath(” $self->{output}/$self»>{prqject}/template/test/yspz"); mkpath(n$self->{output}/$self->{prqject}/template/test/book,');
#解析配置
$self->config_dim() or return; $self->config^_book() or return; $self->config_yspz() or return; $self->config__proc() or return;
#模板工具
# $self->{tpl} = T ext::T emplate->new();
return Sself;
}
Scondition =- s/A and // if Scondition;
Sparam =- s/A&// if Sparam;
Sparam =- s/7/g if $param;
Scondition =' where '. Scondition if Scondition;
return { condition => Scondition, params => Sparam };
}
附录4学位档案管理部分关键代码:
sub updateRoutes{
my $self = shift;
my Sroutes = {};
my $data = $self->select("select route.route_regex as route_regex, role_route.role_id as id from tbl_route_inf route join tbl_role_route_map role_route on role_route.route_id=route.route_id order by id");
for my $row (@$data) {
$routes->{ $row->{id} } = [] unless exists $routes->{ $row->{id} };
push @{ $routes->{ $row->{id} } }, $row->{route_regex} if $row->{route_regex} ne
$self">memd・>setCroutes; Sroutes);
}
# sql目录
mkpath(H$self->{output}/$self->{project}/sql/table/bookn); mkpath(n$self->{output}/$self->{prqject}/sql/table/yspz,'); mkpath("$self-> {output}/$self-> {project}/sql/table/dimM); mkpath("$self->{output}/$self->{project}/sql/table/dictn); mkpath(M$self->{output}/$self->{project}/sql/view");
#模板目录 mkpath(n$self.>{output}/$self->{project}/tM);
#测试目录 #账簿目录
#原始凭证目录
#核算项相关目录
#字典表相关目录
#视图目录
#测试目录
 
mkpath(n$self->{output}/$self->{project}/template/test/yspzH); mkpath("$self->{output}/$self->{project}/template/test/bookH);
#解析配置
$self->config__dim() or return;
$self->config_book() or return;
$self->config_yspz() or return;
Sself-^onfigjjrocO or return;
#模板工具
# $self->{tpl} = Text::Template->new();
return $self;
}
#更新用户角色信息
sub updateYonghus{
my $self = shift;
my Syonghus = {};
my Syonghunames = {};
my $uids = {};
my $data = $self.>select(Hselect yonghu-yonghuname as yonghuname, yonghu.yonghu_id as yonghu_id, yonghu__role.role__id as role_id
from tbl_yonghuJnf yonghu
join tbl_yon函 u_n)le_m 塔 yonghu^role
on yonghu.yonghu_id=yonghu_role.yonghu__id order by yonghujdn);
for my $row (@$data) {
$yonghus->{ $row-> {yonghu_id} } = [] unless exists
$yonghus->{ $row->{yonghu_id} };
$yonghunames->{ $row->{yonghu_id} } = $row->{yonghuname}; $uids->{$row->{yonghuname}} = $row->{yonghu_id};
push @{$yonghus->{ $row->{yonghu_id} }}, $row->{role_id};
}
Ssel^memd^setCyonghus*, Syonghus);
$self4memd・>setfyonghunames; Syonghunames);
$self">memd->set°uids‘,$uids);
参考文献
[1]冉林•学生信息管理系统的设计与实现[D],成都:电子科技大学,2007.
[2]孟倩,周延.UML在数据库建模中的应用[J].计算机工程与应用.2005. (16): 52.
[3]David Sczhuanyepa. Microsoft ADO. NET. NewYork[J], Microsoft Press, 2002.
[4]周秉锋.UML软件建模[M].北京:北京大学出版社.2001.
[5]Silberschatz Azonic SB. Strategic directions in database systems-Breaking of the box [J],ACM Computing Surveys, 1996.
[6]Eriksson, H. Business Modeling with UML[M], China Machine Press, 2004.
[7]胡光富.学生管理信息系统的设计与实现.中国优秀博硕论文全文库.2004, (10): 13-15.
[8]Reagan Client/Server Computing, Upper Saddle[J]River, Nj:Pretice Hall, 2000.
[9]任美璇.基于校园网的学生信息管理系统[D],青岛:中国海洋大学,2009.
[10]王方杰.基于C/S模式的学生综合管理系统的实现[J],计算机与信息技术2009. 05:51-52
[11]顾明.MIS软件开发过程的描述[J].计算机应用与软件.2004, 2(3):21-22.
[12]徐宝文,周毓明卢红敏.UML与软件建模[M].北京:清华大学出版社.2006,3(6):13-22.
[13]Chamberlin D. D. Relational Database Management Systems [J], ACM Computing Surveys, 2000.13(9):130-138
[14]唐志军,闵立清.基于校园网结构的高校教学管理信息系统设计[J]福建电脑,2009. 04: 56-61.
[15]王业贤.基于Web的学籍管理系统的设计与实现[D],大庆:大庆石油学院,200&
[16]屈喜龙.UML及面向对象的分析与设计的研究[J].计算机应用研究.2005, (9): 51-52.
[17]孟倩,周延.UML在数据库建模中的应用[J].计算机工程与应用.2005, (16): 52.
[18]周秉锋.UML软件建模[M].北京:北京大学出版社.2001.
[19]范晓平.UML建模实例详解[M].北京:清华大学出版社.2005.
[20]孙跃勇.面向对象的软件测试研究[D].上海:复旦大学.2002.
[21]俞盘祥.ORACLE数据库系统基础[M].北京:清华大学出版社.1995.
[22]梁为,凌怀新,张晓钢,潘文辉.基于Oracle的日志分析器•计算机应
用.2003,23(7): 121-123
[23]BEA 公司.http://www. bea. com. cn/products/bea webtuxedo/. 2003
[24]scott.构建XML Web服务一一基于MICROSOFT . NET系统[M].北京:清华大学出版社.2002
[25]Jiawei Han, Micheline Kamber.数据挖掘概念与技术[M].北京:机械工业出版社,2001
[26]李燕风.浏览及访问模式的过程[J].计算机工程.2003, 29(15):45-47
[27]Jakob Nielsen, Marie Tahin.专业主页设计技术 50佳站点赏析[M].北京:人民邮电
出版社,2002
[28]Anthony Saunders, Credit Risk Measurement:the next great financial challenge, 2nd edition, amozon. com, p. 278
[29]左子叶,朱扬勇.基于数据挖掘聚类技术的信用评分评级[J].计算机应用与软 件,2004,24(4): 1-2
[30]王军.基于JMS的消息中间件设计与实现[J].计算机工程.2003, 23(8):64-67
[31]李劲.动态电子商务的ffEB服务[M].北京:清华大学出版社.2002
[32]徐德志,吴敏.XML数据库的树模型抽象及其査询[J].计算机工程.2003, 29(14) : 12-14
【本文地址:https://www.xueshulunwenwang.com//guanlilei/gongshangguanli/xixinguanli/5853.html

上一篇:大学生信息管理及就业预测系统的设计与实现

下一篇:水利工程施工监理质量控制信息管理系统

相关标签: