毕业论文-高考志愿填报分析助手_第1页
毕业论文-高考志愿填报分析助手_第2页
毕业论文-高考志愿填报分析助手_第3页
毕业论文-高考志愿填报分析助手_第4页
毕业论文-高考志愿填报分析助手_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1绪论 21.1研究背景 21.2研究现状 31.3课题的研究内容与意义 32平台与开发工具 42.1开发平台介绍 42.2框架开发方法与技术 42.3开发语言与开发环境 43系统分析 53.1系统角色 53.2功能结构图 54系统设计 74.1系统架构设计 74.1.1分层体系结构 74.1.2MVC结构和Struts框架 74.1.3分层体系结构 84.2系统模块设计 84.3界面设计 84.4类设计 95数据库设计 105.1数据库设计 105.1.1管理员信息 105.1.2院校基本信息管理 105.1.3院校录取分数线信息 115.1.4专业信息 125.1.5专业 125.1.6专业录取分数线信息 135.2数据库建模 136系统实现 146.1创建JavaEE工程 146.2管理员登录功能实现 156.3院校模块功能实现 196.3.1新增院校 196.3.2查询院校 216.3.3院校加入对比 236.3.4浏览高校对比 246.4专业模块功能实现 256.4.1新增专业 256.4.2查询专业 266.4.3院校开设专业 296.5院校分数线模块功能实现 306.5.1新增院校分数线 306.5.2查询院校分数线 316.5.3估分选大学 326.5.4院校录取概率 356.6专业分数线模块功能实现 366.6.1新增专业分数线 366.6.2查询专业分数线 376.6.3估分选专业(截图) 386.6.4专业录取概率(截图) 387系统测试 397.1搭建测试环境 397.2测试方法 397.3功能模块测试 397.3.1首页 397.3.2登录 407.3.3新增院校 417.3.4新增专业 417.3.5新增院校分数线 427.3.6估分选大学(修改) 427.3.7新增专业分数线 437.3.8估分选专业(调错、截图) 437.3.9加入对比 44结束语 44致谢 45参考文献 461绪论1.1研究背景志愿是考生的意愿的具体体现。高考志愿在招生录取的工作中具有特定的含义,它是考生根据社会的需要,按照国家招生的有关规定,从本人学习成绩及专业兴趣和特长的实际出发,选择学校和专业;也是考生自觉自愿的意向,它受到招生部门的承认,并成为高校录取新生的重要依据。高考志愿填报对高考录取结果起到了关键性的作用,它不仅关系着考生四年的大学经历,更与考生未来人生的发展有着非常重要的关系。常言道:七分考,三分报。据统计数据显示,每年落榜的考生中,有46%的考生因为填报志愿失误,这其中,大多是因为出现志愿撞车以及对高校分数预估不足的情况。高考的结束并不意味着高考这场没有硝烟的战争的结束,反而是高考志愿填报这场战争的开始。考生及家长要了解招生形势,本地区各科类报考人数、各批次各科类招生计划数、录取比例等等,整体把握填报志愿的原则和方向,避免主观臆断。考生及其家长往往根据往年的历史数技术。它是免费和开源的,也是目前学习与开发JavaWeb应用程序的首选。JDK是Java的开发平台,在编写Java程序时,需要JDK进行编译处理;JRE是Java程序的运行环境,包含了JVM的实现及Java核心类库,编译后的Java程序必须使用JRE执行。在下载的JDK安装包中集成了JDK与JRE,所以在安装JDK过程中会提示安装JRE。MYSQL是一个小型关系型数据库管理系统,由于体积小、速度快、开放源码,成为本系统的首选。JDBC就是Java数据库连接,它提供了访问数据库的API,它是由一些Java类和接口组成,是Java运行平台的核心类库中的一个部分。在程序中可以通过使用JDBC连接到关系数据库,并使用结构化查询语言来完成对数据库中的表的记录的查询、修改、更新和删除操作。名称版本语言windows操作系统Windows7旗舰版简体中文Tomocat6.0默认JDK6U25英文Eclipse8.2默认Navicat-for-MYSQL10.1中文MYSQL5.5默认表2-1运行开发环境3系统分析本章分析了系统角色,确定了功能结构为管理员登录、院校模块、专业模块、院校分数线模块、专业分数线模块,并按照功能结构图来进行功能分析。3.1系统角色高考志愿填报助手系统服务于考高学子,旨在帮助学生选择志愿填报的高校、专业。本系统有2类角色,分别为游客、管理员:游客:可以查询各省市院校和专业的历年分数线,能够使用估分选大学、估分选专业等功能。管理员:具有游客的所有权限,并可以登录到后台对院校、专业、分数线等信息进行管理。3.2功能结构图本系统主要分为管理员登录、院校模块、专业模块、院校分数线模块、专业分数线模块。功能结构图如下所示:图3-1功能结构图管理员登陆:管理员在前台首页上点击“管理员登录”超链接,进入登录页面。输入账号密码可进入后台的“高校招生信息发布系统”。新增院校:管理员登录后,可以新增院校基本信息。包括院校的名称、校徽、所在地等。查询院校:可通过学校设置院校省份、院校分类、特殊属性、学历层次来筛选查看学校。搜索结果以列表显示。加入对比:可将有意向的院校加入对比栏。对比院校的性质、类别、985、211、教育部直属等信息。新增专业:新增专业基本信息,包括专业名称、学科、门类、专业代码、修业年限、专业介绍等。“新增专业”界面参考“新增院校”界面。院校开设专业:由于不同的院校会开设不同的专业,并有自己的开设要求。本功能首先要选择院校,然后为该院校开设专业(专业基本信息来自数据库),并填写开设时间、状态、备注等信息。查询专业:以院校、学科、门类为条件,搜索专业信息,以列表形式显示。新增院校分数线:新增院校录取分数线信息,包括所属院校ID、生源地(省份)、科别(文科/理科/综合)、录取批次(提前批/本科一批/本科二批/本科三批)、年份、最高分、平均分、省控线、录取人数等。查询院校分数线:用户在首页上方有一个查询区域,根据查询页面中下拉框中的院校省份、科别(文科、理科、综合)、录取批次、录取年份等条件来搜索大学录取分数线。估分选大学:根据分数、地区、第几批、科别来挑选可能录取的大学。新增专业分数线:新增专业录取分数线信息,将某院校某专业每年的录取分数线及录取人数等信息保存到数据库中。本功能首先要选择院校,再选择专业,然后录入生源地、年份、最高分、平均分、招生人数等信息。查询专业分数线:根据省份、科别、专业名称、录取批次、录取年份来筛选专业录取线。估分选专业:根据地区、科别(文科/理科/综合)、分数、年份来选专业。4系统设计4.1系统架构设计系统基于Java语言,使用Eclipse开发工具,JDK1.6和Tomcat6.0开发环境,采用JSP、JSTL&EL技术,Struts2.x框架、JDBC和MySQL数据库开发的JavaEE程序,实现了高考志愿填报助手系统的功能。程序架构采用分层结构和MVC结合方式进行设计。4.1.1分层体系结构三层结构是层次风格中典型的结构,包括表示层,业务逻辑层和数据访问层,三层之间使用业务模型(实体对象)进行传递。在JavaEE程序结构中,采用包进行分层。如下图所示:图4-1三层结构4.1.2MVC结构和Struts框架MVC模式包括视图、控制器和模型,Struts框架符合MVC思想,其中action充当控制器作用。Struts2是一个运行于Web容器的表示层轻量级框架,与三层结构结合时,与视图(JSP)一起组成表示层,进行视图导向和业务逻辑调用。Struts2的Action作为控制器,进行统一的跳转控制和业务逻辑调用。一个JSP页面对应一个Action控制器,由其进行访问的跳转控制。当Action类的方法执行完成时,返回一个字符串类型的结果码,框架根据struts.xml配置,查找<result>节点中匹配的name属性值,向用户输出。4.1.3分层体系结构结合三层结构和Struts2框架设计“高考志愿填报助手”架构。表示层由JSP和Struts2充当,业务逻辑层和数据访问层,充当了模型的角色。程序结构如下:图4-1系统结构4.2系统模块设计按“分而治之”思想,进行模块划分,分为管理员登录、院校模块、专业模块、院校分数线模块、专业分数线模块。4.3界面设计系统页面分为首页、频道页(栏目页)、管理页面、功能增删改查页面等类型。一般先进行原型界面绘制,然后再生产html静态页面,最后进行提炼,分离出公共页面,如头部和脚部,形成最终jsp页面。1.高考志愿填报助手系统有如下页面。(1)首页(index.jsp)。(2)管理员登录(login.jsp)页面。(3)频道页面(估分选大学、估分选专业、查看大学分数线、查看专业分数线)。(4)浏览大学页面(college.jsp)、浏览专业页面(major.jsp)。(5)管理首页(管理员)。(6)功能页面:院校模块,专业模块,院校分数线模块、专业分数线模块。(7)公共页(头部和脚部)2.系统根据不同的功能将设计不同的子界面。界面设计的原则如下:(1)页面风格确定系统有哪些页面,确定页面的类型和布局风格。确定系统的整体色系,页面背景颜色,字体、图片和按钮等色系。(2)原型界面根据页面风格、各页面功能和信息,绘制页面白板图。(3)效果图片根据页面风格和色系,设计效果图片,通过PhotoShop绘制和Fireworks切割。(4)页面交互关系描述各页面之间的交互关系。(5)HTML静态页面使用Dreamweaver结合网页技术将效果图进行设置,最后形成HTML静态页面。(6)界面评审和测试对界面进行评审和测试,及时发现并消除界面中的缺陷,修正HTML静态页面。(7)边界对象设计系统界面类,将HTML页面转换为界面类,设计界面类之间的关系4.4类设计主要进行类设计,以及类属性和方法设计。在高考志愿填报助手系统中,有几种类型:1、实体类主要对应数据库中表,这种类主要用于在各层之间传递数据,这种类设计,一般包括无参构造方法,getXX()和setXX()方法。2、表示层类界面类一般用JSP充当,根据功能进行设计。表示层框架主要用Struts框架,对应主要类为各种action类。在新闻管理系统中,请求页面,都是通过action跳转到jsp页面来处理请求。3、业务逻辑层类主要进行业务逻辑处理,一般都是业务方法。逻辑层类存放在service包中。4、数据访问层主要进行数据数据库访问,每个类设计新增、修改、删除和查询功能。接口存放在dao包中,相应实现类存放在impl包中。5、工具类设计将公共的方法抽离出来形成工具类,供其他类使用,如数据库管理工具类和自定义异常类等。工具类存放在utils包中。5数据库设计根据需求分析确定数据信息,抽样数据字典,建立概念模型。本章介绍了数据库设计的整个流程。5.1数据库设计分析高考志愿填报分析助手系统流程和数据.设计数据库,根据数据需求,确定实体以及其之间的关系(E-R图),选择关系模型,选用MySQL作为数据库服务器,设计数据库表。5.1.1管理员信息管理员信息(Admin)数据元素名内部名值域值义类型/长度ID号id主键用户名Name唯一性,用户名不能重复字符串类型/40密码Password字符串类型/205.1.2院校基本信息管理院校基本信息管理(College)数据元素名内部名值域值义类型/长度ID号id主键校名name字符串类型/40校徽logo图片的路径字符串类型/100所在地province字符串类型/100院校性质level0普通本科1独立学院2高职高专3中外合作办学4远程教育学院5HND项目6成人教育整型院校类别type0综合类1理工类2农林类3医药类4师范类5语言类6财经类政法类7体育类8艺术类9民族类10军事类整型教育部直属zhishu1是0不是整型211大学is2111是0不是整型985大学is9851是0不是整型招办电话tel字符串类型/50通讯地址address字符串类型/100电子邮箱email字符串类型/100招生网址URL字符串类型/100备注remark文本5.1.3院校录取分数线信息院校录取分数线信息(CollegeCutoff)的录入、修改、删除、查询。数据元素名内部名值域值义类型/长度ID号id主键院校IDcid外键整型生源地provence字符串类型/20文理科Genera0文科1理科整型录取批次batch0本科一批1本科二批2本科三批3专科一批4专科二批整型年份year字符串类型/20最高分hscore整型平均分ascore整型省控线cscore整型录取人数number整型备注remark文本5.1.4专业信息专业信息(MajorInfo):各院校专业信息的新增、修改、删除。数据元素名内部名值域值义类型/长度ID号id主键学科discipline字符串类型/40门类category字符串类型/40专业名称name字符串类型/40专业代码code采用6位数字组成,如“哲学-010101”修业年限limits整型授予学位degree

专业介绍Introduction专业解释、目标、要求、课程说明、实践教学内容等文本备注remark文本5.1.5专业专业(Major):不同的院校,会开设不同的专业,并有自己的开设要求。数据元素名内部名值域值义类型/长度ID号id主键整型院校IDcid外键整型专业IDmid外键整型开设时间createtimeData&Time开设状态status0开设中1未开设整型备注remark文本5.1.6专业录取分数线信息专业录取分数线信息(major_cutoff)的录入、修改、删除。数据元素名内部名值域值义类型/长度ID号id主键专业IDmcid整型生源地province字符串类型/20文理科Genera0文科1理科整型录取批次batch0本科一批1本科二批2本科三批3专科一批4专科二批整型年份year字符串类型/20最高分hscore整型平均分ascore整型录取人数number整型备注remark文本5.2数据库建模选择E-R模型结合PowerDesigner进行数据库设计和建模,应用PowerDesigner建立CDM,LDM,PDM。根据数据字典可设计出mysql的PDM如下:院校:院校动态新闻,一对多院校:招生政策,一对多院校:院校录取分数线,一对多院校:专业信息,多对多专业:专业录取分数线,一对多图5-1E-R图SQL脚本:根据数据库设计和PDM文件,生成基于MySQL的SQL脚本,按照企业标准和规范进行优化。数据库构建:安装配置MySQL,使用MySQL指令导入SQL脚本,创建旅游信息管理系统数据库及表,使用MySQL指令和SQL语句进行基础数据初始化。数据库验证:根据系统的功能和数据库表关系,模拟程序流程,编写SQL语句验证数据库功能。持久化对象:设计持久化对象,确定它们的属性及其之间的关系。将持久化对象映射到数据库表。6系统实现 所有功能的实现按照界面层action、业务逻辑层Service、数据存储层Dao三层结构的方式进行设计和开发。6.1创建JavaEE工程本项目为采用三层结构结合MVC思想,基于Struts框架,创建项目工程。1、创建JavaEE高考志愿填报助手系统工程GaoKao(1)在工程的src目录下创建如下包。web、service、dao、model、utils包。(2)在工程的WebContent下创建以下文件夹。images:存放图片;js:存放脚本文件;css:存放样式文件;upload:存放上传文件。2、集成Struts2框架(1)导入Struts2开发JAR包打开lib文件夹,挑选如下JAR包,拷贝至工程的WebContent/WEB-INF/lib文件下。Struts2的不同版本和不同应用所需的JAR有所不同。(2)在web.xml中配置Struts2过滤器StrutsPrepareAndExecuteFilter是Struts2的核心控制器,它是实现了Filter接口的一个过滤器类,类路径为:org.apache.Struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter(3)创建struts.xml文件可以手工创建,也可以拷贝Struts2资源包示例中struts.xml文件。下面是应用资源包示例中struts.xml。方法如下:在Struts2下载资源包中,打开apps文件夹,解压其中的一个WAR文件,找到示例工程的WEB-INF/classes下的struts.xml。(4)运行机制集成Struts2之后,Struts2职责如下:通过Action接收请求,获取请求参数。调用业务逻辑层方法,处理业务。根据处理结果,选择视图页面展示结果信息。3、Struts2开发流程基于Struts框架开发,有如下步骤:创建Action类,覆写execute()方法,配置struts.xml,通过URL访问Action。6.2管理员登录功能实现管理员登录时,首先访问登录页面login.jsp,其次在登录页面上点击登录。登录成功会访问管理中心页面。用户退出系统时,可以进行注销,即登出操作。1、创建界面创建login.jsp页面,实现登录界面布局。创建adminCenter.jsp页面,作为后台首页。用户登录后,将会进入后台管理中心(即本页面)。2、实现Action用户登录成功,将使用session保存用户信息,并跳转到用户中心页面。在进行登出操作时,清理session值,并跳转到首页。访问路径控制器(Action)视图类型描述toLogin.actionToLoginAction/login.jsp转发访问登录页面user!login.actionUserActiontoAdmin.action重定向“管理员”登录成功/login.jsp转发登录失败,导向到登录页面user!logout.action/index.jsp转发注销登录,导向到首页toAdmin.actionToAdminAction/adminFrame.jsp转发访问管理员管理页面表6-1登录(1)、创建ToAdminAction,实现execute方法,判断管理员是否登录,如果登录则进入后台页面,若没有登录则进入登录页面。 publicStringexecute(){ Mapsession=ActionContext.getContext().getSession(); IntegeruserId=(Integer)session.get("userId"); //验证用户是否登录 if(userId!=null){ //已登录则跳转到管理员管理页面 return"admin"; }else{ //未登录则跳转到登录页面 return"login"; } }(2)、创建UserAction,提供login()、logout()等方法,用户登录时,访问UserAction中的方法进行登录操作。并实现界面跳转。publicStringlogin(){ try{ Map<String,Object>session=ActionContext.getContext() .getSession(); IntegeruserId=(Integer)session.get("userId"); //验证用户是否已经登录 if(userId==null){ userId=userService.login(name,password); if(userId>0){ //查询到匹配用户,保存至session中,跳转到用户中心页 session.put("userId",userId); session.put("userName",name); return"admin"; }else{ //登录失败,返回至登录页,提示错误信息 message="用户名或密码错误!"; return"login"; } }else{ return"admin"; } }catch(AppExceptione){ e.printStackTrace(); return"error"; }3、实现Service层代码创建UserService类,定义login(Stringname,Stringpassword)方法,调用dao层userDao.login(name,password)方法进行登录判断。publicintlogin(Stringname,Stringpassword)throwsAppException{ intuserId=-1; try{ //获取用户编号 userId=userDao.login(name,password); }catch(AppExceptione){ e.printStackTrace(); thrownewAppException("biz.UserService.login"); } //返回用户编号 returnuserId; }4、实现dao层代码创建UserDao类,定义login(Stringname,Stringpassword)方法,使用JDBC数据库编程技术,查询数据库中的管理员账号和密码,判断登录是否成功。publicintlogin(Stringname,Stringpassword)throwsAppException{ intuserId=-1; //声明数据库连接对象,预编译对象和结果集对象 Connectionconn=null; PreparedStatementpsmt=null; ResultSetrs=null; try{ //创建数据库连接 conn=DBUtil.getConnection(); //声明操作语句:根据用户名和密码查询用户编号,"?"为占位符 Stringsql="selectidfromt_adminwherename=?andpassword=?anddel=0"; psmt=conn.prepareStatement(sql); psmt.setString(1,name); psmt.setString(2,password); rs=psmt.executeQuery(); if(rs.next()){ userId=rs.getInt("id"); } }catch(SQLExceptione){ e.printStackTrace(); thrownewAppException("dao.UserDao.login"); }finally{ //关闭数据库操作对象,释放资源 DBUtil.closeResultSet(rs); DBUtil.closeStatement(psmt); DBUtil.closeConnection(conn); } returnuserId; }5、调试和运行访问http://localhost:8080/GaoKao/toLogin.action,输入管理员账号和密码,点击“登录”按钮。登陆页面如下:图6-2管理员登陆将访问http://localhost:8080/GaoKao/user!login.action。成功后,将进入后台页面。图6-2后台页面6.3院校模块功能实现6.3.1新增院校管理员在后台点击菜单中的“新增院校”,框架页面中显示新增院校界面。填写院校信息后,将把院校信息保存到数据库中。在新增院校的界面中处理以下数据:验证院校信息。(非空验证);将院校基本信息进行存储,返回新增院校页面进行提示,表单中保留上次新增的院校信息。1、创建界面创建addCollege.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“新增院校”超链接指向addCollege.jsp页面。2、实现Action1、创建CollegeAction类,实现“访问新增院校页面”的新增院校的add()方法,从界面上获得管理员输入的院校信息,调用CollegeService类的add()方法,新增院校信息。 publicStringadd(){ Mapsession=ActionContext.getContext().getSession(); IntegeruserId=(Integer)session.get("userId"); //验证用户是否登录 if(userId==null){ //未登录则跳转到登录页面 return"login"; } if(college==null){//输入不正确,跳转到新增院校页面 message="请正确填写院校的相关信息!"; return"add"; } if(getIs985().endsWith("on")){ college.setIs985(1); } if(getIs211().endsWith("on")){ college.setIs211(1); } if(getZhishu().endsWith("on")){ college.setZhishu(1); ; } System.out.println("Is985:"+college.getIs985()); if(service.add(college)){ message="新增成功!"; Maprequest=(Map)ActionContext.getContext().get("request"); //将本次新增信息传递到页面上显示 request.put("college",college); }else{ message="新增失败!"; } return"add"; }}3、实现Service层代码创建CollegeService类,定义add(College)方法,调用dao层保存院校信息。publicbooleanadd(Collegecollege){ returncollegeDao.add(college); }4、实现dao层代码创建CollegeDao类,定义add(Collegecollege)方法保存院校信息。publicclassCollegeDaoimplementsDao<College>{ publicbooleanadd(Collegecollege){ //保存学校信息,使用DBUtil类 Connectionconn=DBUtil.getConnection(); PreparedStatementpsmt=null; ResultSetrs=null; try{ //填入注册信息,"?"为占位符 Stringsql="insertintot_college(name,logo,province,level,type,is985,is211,zhishu,tel,address,email,url,remark,del)" +"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; psmt=conn.prepareStatement(sql); psmt.setString(1,college.getName()); //… intresult=psmt.executeUpdate();//执行更新操作 returnresult>0; }catch(SQLExceptione){ e.printStackTrace(); returnfalse; }finally{ //关闭数据库操作对象,释放资源 DBUtil.closeResultSet(rs); DBUtil.closeStatement(psmt); DBUtil.closeConnection(conn); } }5、调试和运行登录后台,选择新增院校,输入信息,点击新增按钮。 图6-3新增院校信息6.3.2查询院校 用户在页面点击菜单中的“搜索大学”,框架页面中显示院校列表。用户可以选择院校所在地、院校类别、院校性质,是否为985、211、教育部直属等条件,筛选院校。用户也能直接输入自己想要浏览的院校名称,直接搜索该校。根据输入条件,查询符合条件的院校信息,查询结果显示在列表中。1、创建界面创建checkCollege.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“查询院校”超链接指向checkCollege.jsp页面。2、实现Action在CollegeAction类中定义查询院校方法check(),调用CollegeService类的getAll()方法获取院校信息列表,传递到页面上。publicStringcheck(){ Mapsession=ActionContext.getContext().getSession(); IntegeruserId=(Integer)session.get("userId"); if(userId==null){ return"login"; } //获取院校列表 list=service.getAll(); return"check";}3、实现Service层代码在CollegeService类中定义getAll()方法,调用dao层查询数据库中的院校信息。publicList<College>getAll(){ returncollegeDao.getList(); }4、实现dao层代码在CollegeDao类中定义getList()方法,到数据库中查询院校列表。publicList<College>getList(){ //查询学校列表,使用DBUtil类 Connectionconn=DBUtil.getConnection(); PreparedStatementpsmt=null; ResultSetrs=null; List<College>list=newArrayList<College>(); try{ //声明操作语句:根据用户名和密码查询用户编号,"?"为占位符 Stringsql="select*fromt_collegewheredel=0"; //预编译sql psmt=conn.prepareStatement(sql); //执行查询操作 rs=psmt.executeQuery(); //查询到记录,提取用户信息 while(rs.next()){ Collegecollege=newCollege(); college.setId(rs.getInt("id")); //… college.setDel(rs.getInt("del")); list.add(college); } }catch(SQLExceptione){ e.printStackTrace(); }finally{ //关闭数据库操作对象,释放资源 DBUtil.closeResultSet(rs); DBUtil.closeStatement(psmt); DBUtil.closeConnection(conn); } returnlist; }5、调试和运行选择查询院校,即可看到所有院校信息列表。 图6-4用户查询院校与普通用户查询院校功能类似的,管理员在后台点击菜单中的“查询院校”,框架页面中显示院校列表。管理员有权限对列表中的院校进行查看、修改、删除的操作。 图6-5管理员查询院校6.3.3院校加入对比 用户在“大学搜索”或者“院校分数线”的院校列表中点击“+”,即可将该高校加入对比栏。此功能模仿现有的购物网站,方便顾客比质比价,买到物美价廉的物品。同样的,是为了方便考生及家长,通过比较,在同等情况下,选择到合适的院校。publicvoidremove(){ PrintStreamout=null; try{ out=newPrintStream(ServletActionContext.getResponse() .getOutputStream()); }catch(IOExceptione){ e.printStackTrace(); } Collegec=cService.get(id); if(c==null){ out.close(); return; } Map<String,Object>session=ServletActionContext.getContext() .getSession(); Cartcart=(Cart)session.get("cart"); if(cart!=null&&cart.removeItem(c)){ session.remove("cart"); session.put("cart",cart); out.print(true); } out.close(); }图6-6加入对比6.3.4浏览高校对比用户在对比栏中点击“对比”即可进入高校对比,查看对比栏中大学的对比情况:院校所在地、院校类别、院校性质,985、211、教育部直属。publicclassCart{ List<College>list=newArrayList<College>(); publicbooleanaddCartItem(Collegeitem){ for(Collegeit:list){ if(it.getId()==item.getId()) returnfalse; } if(list.size()<=4){ list.add(item); returntrue; } returnfalse; } publicList<College>getList(){ returnlist; } publicbooleanremoveItem(Collegeitem){ for(Collegeit:list){ if(it.getId()==item.getId()){ list.remove(it); returntrue; } } returnfalse; }图6-7浏览高校对比6.4专业模块功能实现6.4.1新增专业管理员在后台点击菜单中的“新增专业”,框架页面中显示新增专业界面。填写专业信息后,将把专业信息保存到数据库中。“新增专业”界面参考“新增院校”界面。在新增专业的界面中处理以下数据:验证专业信息(非空验证);将专业基本信息进行存储,返回新增专业页面进行提示,表单中保留上次新增的专业信息。1、创建界面创建addMajorInfor.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“新增专业”超链接指向addMajorInforjsp页面。2、实现Action1、创建MajorInfoAction类,实现“访问新增专业页面”的方法toAdd()及新增院校的add()方法,从界面上获得管理员输入的专业信息,调用MajorInfoService类的add()方法,新增专业信息。其代码结构与新增院校的代码结构一致。3、实现Service层代码创建MajorInfoService类,定义add(MajorInfo)方法,调用dao层保存院校信息。publicbooleanadd(MajorInfomajorInfo){ returnmajorInfoDao.add(majorInfo); }4、实现dao层代码创建MajorInfoDao类,定义add(MajorInfomajorinfo)方法连接数据库并保存院校信息。其核心sql语句如下:Stringsql="insertintot_majorinfo(discipline,category,name,code,limits,degree,introduction,remark,del)"+"values(?,?,?,?,?,?,?,?,?)";5、调试和运行登录后台,选择新增专业,输入信息,点击新增按钮。将实现专业新增的功能。图6-8新增专业6.4.2查询专业 用户在页面点击菜单中的“搜索”,框架页面中显示专业列表。用户可以选择学科、门类、专业代码,筛选专业。用户也能直接输入自己想要浏览的专业名称,直接搜索专业。根据输入条件,查询符合条件的专业信息,查询结果显示在列表中。1、创建界面创建checkMajorInfor.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“查询专业”超链接指向checkMajorInfor.jsp页面。2、实现Action在MajorInfoAction类中定义查询专业方法check(),调用MajorInfoService类的方法获取\专业信息列表,传递到页面上。publicStringcheck(){totalPage=majorInfoService.getTotalPages();totalRecords=majorInfoService.getTotalRecords(); //获取专业列表 list=majorInfoService.getListByPager(currentPage);disciplineList=majorInfoService.getAllDisciplineList();categoryList=majorInfoService.getAllCategoryList();codeList=majorInfoService.getAllCodeList(); return“check”;}3、实现Service层代码在MajorInfoService类中定义方法,调用dao层查询数据库中的专业信息。publicList<MajorInfo>getAll(){ returnmajorInfoDao.getList(); } publicList<MajorInfo>getListByPager(intcurrentPage){ returnmajorInfoDao.getListByPager(currentPage); } publicintgetTotalPages(){ returnmajorInfoDao.getTotalPages(); } publicintgetTotalRecords(){ returnmajorInfoDao.getTotalRecords(); } publicMajorInfoget(intid){ returnmajorInfoDao.get(id); } publicbooleandelete(intid){ returnmajorInfoDao.delete(id); } publicbooleanupdate(MajorInfomajorInfo){ returnmajorInfoDao.update(majorInfo); } //得到所有的学科 publicList<String>getAllDisciplineList(){ returnmajorInfoDao.getAllDisciplineList(); } //得到所有的专业代码publicList<String>getAllCodeList(){ returnmajorInfoDao.getAllCodeList(); }//得到所有的门类publicList<String>getAllCategoryList(){ returnmajorInfoDao.getAllCategoryList(); } publicList<MajorInfo>search(Stringdiscipline,Stringcategory, Stringcode,Stringname){ returnmajorInfoDao.search(discipline,category, code,name); }4、实现dao层代码在MajorInfoDao类中定义getList()方法,到数据库中查询专业列表。其核心sql语句如下://得到所有的学科Stringsql="selectdistinctdisciplinefromt_majorinfowheredel=0";//得到所有的专业代码Stringsql="selectdistinctcodefromt_majorinfowheredel=0";//得到所有的门类Stringsql="selectdistinctcategoryfromt_majorinfowheredel=0";//查询专业列表,使用DBUtil类并作分页处理Stringsql="select*fromt_majorinfowheredel=0limit"SQL语句计算查询的总记录数Stringsql="select*fromt_majorinfowheredel=0";5、调试和运行选择专业搜索,即可看到所有专业信息列表。 图6-9用户查询专业与普通用户类似的,管理员在后台点击菜单中的“查询专业”,框架页面中显示专业列表。管理员可以查看、修改、删除专业。图6-10管理员查询专业信息6.4.3院校开设专业管理员在后台点击菜单中的“院校开设专业”,框架页面中显示院校开设专业界面。选择专业和院校之后,点击“提交”按钮将为院校开设专业。由于不同的院校会开设不同的专业,并有自己的开设要求。本功能首先要选择院校,然后为该院校开设专业(专业基本信息来自数据库),并填写开设时间、状态、备注等信息。在院校开设专业的界面中处理以下数据:验证院校信息(非空验证);验证专业和院校是否存在;将所开专业添加到院校的基本信息表中,返回开设专业页面进行提示。1、创建界面创建addMajor.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“院校开设专业”超链接指向addMajor.jsp页面。2、实现Action1、创建MajorAction类,实现“访问院校开设专业界面”的方法toAdd()及院校的add()方法,从界面上获得管理员选择的专业院校和专业,调用MajorService类的add()方法,为院校开设专业。其代码结构与新增院校的代码结构类似。3、实现Service层代码创建MajorService类,定义add(Major)方法,调用dao层保存院校信息。publicbooleanadd(Majormajor){ returnmajorDao.add(major); }4、实现dao层代码创建MajorDao类,定义add(Majormajor)方法连接数据库并保存院校及新增专业信息。其核心sql语句如下:Stringsql="insertintot_major(mid,cid,createTime,status,remark,del)"+"values(?,?,?,?,?,?)";5、调试和运行登录后台,在专业管理一栏中选择“院校开设专业”,输入信息,点击新增按钮。将实现专业新增的功能。 图6-11院校开设专业6.5院校分数线模块功能实现6.5.1新增院校分数线管理员在后台点击菜单中的“新增院校分数线”,框架页面中显示新增院校分数线界面。新增院校录取分数线信息,包括所属院校ID、生源地(省份)、科别(文科/理科/综合)、录取批次(提前批/本科一批/本科二批/本科三批)、年份、最高分、平均分、省控线、录取人数等,填写信息后,将把院校的分数信息保存到数据库中。在新增院校分数线的界面中处理以下数据:验证院校分数线信息(非空验证);将院校分数线基本信息进行存储,返回新增院校分数线页面进行提示,表单中保留上次新增的院校分数线信息。1、创建界面创建addCollegeCutoff.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“新增院校分数线”超链接指向addCollegeCutoff页面。2、实现Action1、创建CollegeCutoffAction类,实现“访问新增院校分数线页面”的方法toAdd()及新增院校分数线的add()方法,从界面上获得管理员输入的学校和分数信息,调用CollegeCutoffService类的add()方法,新增分数信息。其代码结构与新增院校的代码结构一致。3、实现Service层代码创建CollegeCutoffService类,定义add(CollegeCutoff)方法,调用dao层保存分数信息。publicbooleanadd(CollegeCutoffcutoff){ returncutoffDao.add(cutoff); }4、实现dao层代码创建CollegeCutoffDao类,定义add()方法连接数据库并保存院校和分数信息。其核心sql语句如下:Stringsql="insertintot_college_cutoff(cid,province,genera,batch,year,hscore,ascore,cscore,number,remark,del)"+"values(?,?,?,?,?,?,?,?,?,?,?)";5、调试和运行登录后台,选择新增院校分数线,输入信息,点击新增按钮。将实现院校分数线新增的功能。图6-12新增院校分数线6.5.2查询院校分数线用户在首页上方有一个“搜索大学分数线”查询区域,根据查询页面中下拉框中的院校省份、科别(文科、理科、综合)、录取批次、录取年份等条件来搜索大学录取分数线。依据输入的类型和对应内容,进行院校分数线信息查询,并以列表形式显示查询结果。publicStringcheck(){ //初始化一个session对象 Mapsession=ActionContext.getContext().getSession(); //获取session中的用户信息 IntegeruserId=(Integer)session.get("userId"); //验证用户是否登录 if(userId==null){ //未登录则跳转到登录页面 return"login"; } //获取分数线列表 if(cutoff==null){ cutoff=newCollegeCutoff(); } clist=service.search(cutoff); return"check"; }图6-13用户搜索院校分数线图6-14管理员查看院校分数线6.5.3估分选大学根据分数、地区、第几批、科别来挑选可能录取的大学。管理员在后台添加院校分数线后,用户可以实现估分选大学功能。点击菜单中的“估分选大学”,将显示“估分选大学”界面,在下拉框中选择考生所在地、科属和预估分数,列表中将显示所有合适的院校。1、创建界面创建estimateCollege.jsp页面,实现界面布局。修改adminMenu.jsp页面,将“估分选大学”超链接指向estimateCollege.jsp页面。2、实现Action在CollegeCutoffAction类中定义估分选大学方法estimate(),调用CollegeCutoffService类的方法获取合适的信息列表,传递到页面上。publicStringestimate(){ Mapsession=ActionContext.getContext().getSession(); IntegeruserId=(Integer)session.get("userId"); //验证用户是否登录 if(userId==null){ //未登录则跳转到登录页面 return"login"; } if(cutoff==null){ cutoff=newCollegeCutoff(); } //获取分数线列表 clist=service.search(cutoff); return"estimate"; }3、实现Service层代码在CollegeCutoffService类中定义方法,调用dao层方法。publicList<CollegeCutoff>search(CollegeCutoffcc){ returncutoffDao.getList(cc); }4、实现dao层代码在CollegeCutoffDao类中定义getList()方法,到数据库中查询合适的信息。其核心算法和sql语句如下:publicList<CollegeCutoff>getList(CollegeCutoffcc){ Connectionconn=DBUtil.getConnection(); PreparedStatementpsmt=null; ResultSetrs=null; List<CollegeCutoff>list=newArrayList<CollegeCutoff>(); try{ //根据条件查询院校信息列表 Stringsql="select,cc.*fromt_collegeasc,t_college_cutoffasccwherecc.cid=c.idandcc.del=0"; //院校id if(cc.getCid()>0){ sql+="andcc.cid="+cc.getCid(); } //年份 if(!"".equals(cc.getYear())&&cc.getYear()!=null){ sql+="andcc.year='"+cc.getYear()+"'"; } //所在地 if(!"".equals(cc.getProvince())&&cc.getProvince()!=null){ sql+="andvincelike'%"+cc.getProvince()+"%'"; } //批次 if(cc.getBatch()>0){ sql+="andcc.batch="+cc.getBatch(); } //科属 if(cc.getGenera()>0){ sql+="andcc.genera="+cc.getGenera(); } //估分 if(cc.getScore()>0){ sql+="andcc.ascore<="+(cc.getScore()+17); sql+="andcc.ascore>="+(cc.getScore()-21); } sql+="orderbycc.ascoreasc"; System.out.println(sql+";"); psmt=conn.prepareStatement(sql); //执行查询操作 rs=psmt.executeQuery(); //查询到记录,提取录取线信息 } returnlist; }图6-15管理员估分选大学6.5.4院校录取概率在估分选大学中预测考生考上该校的概率,是根据分数、录取人数、学校层次的权值计算权重比分,重新排序,显示推荐列表。该权值在一定的范围内进行调查统计,得出分数因数0.5,录取人数因数0.3,学校层次因数0.2的分配比例最为恰当,并且后期经过测试,误差在可接受范围。if(count>0){ //计算权重比分,重新排序 doublep1=0.50;//分数因数 doublep2=0.30;//录取人数权值 doublep3=0.20;//学校层次因数 double[]power=newdouble[count]; //计算权重比分 for(inti=0;i<count;i++){ MajorCutoffc=(MajorCutoff)list.get(i); intcid=c.getCid(); System.out.println(cid); doubles1=c.getGailv()*p1;//分数线 doubles3=c.getNumber()*p2;//录取人数 Collegecollege=cService.get(cid); doubles2=(10-college.getLevel())*p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论