【基于java的选课信息管理系统设计与实现10000字(论文)】_第1页
【基于java的选课信息管理系统设计与实现10000字(论文)】_第2页
【基于java的选课信息管理系统设计与实现10000字(论文)】_第3页
【基于java的选课信息管理系统设计与实现10000字(论文)】_第4页
【基于java的选课信息管理系统设计与实现10000字(论文)】_第5页
已阅读5页,还剩32页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

目录第一章概述 XXXIV3.7数据库设计数据库承载着整个系统的运行,在数据库设计的时候需要使数据库的容量能够供系统运行的调用,数据库的结构要尽量的简单,这样可以能使系统的工作量大大降低。在保证结构简单的情况下更加需要的是让数据库合理化,这样在运行时候才会避免出现错误。3.7.1数据库设计原则在数据库的设计中本着方便适应,结构简单合理的原则,其主要的方法原则有如下:(1)一个整体的数据库是有各个局部模块组成,其方法有从内之外,自顶向下等方法。(2)在数据库物理结构设计中主要分为存取方法和存储结构两个部分。(3)数据库设计存在多种关系模式,索引存取法是很常见的一种方法,自身体积小使用起来非常方便。3.7.2数据库概念设计数据库的设计归根结底是离不开数据的,如何能使数据可视化,就需要分析出合适用户使用的可视化视图,在整合集成每个视图,让数据库结构能够一体化,各个局部结构能够正常供系统运行。其概念设计常用的模型是实体-联系的模型,这种方法能够清楚的看到每个实体之间的联系,俗称E-R图。概念设计的出发点就是能够适应各种企业级应用程序,让其能够普遍的在各种各样的系统中得到应用。3.7.3数据库E-R图设计概念模式的设计通常使用的模型是E-R模型来表示数据之间的相互联系。E-R模型能够很明了的表明各个模块表之间的关系,不仅如此,在整体上能看清整个系统的优劣,对每个实体的属性也可以清晰的展示出来。本系统选课的E-R图如下图所示:图3-8E-R图3.7.4数据库表设计系统的正常运行离不开数据库,一个整体的数据库需要许多个表来实现,选课系统主要的表分别是课程信息表、学生留言表、选课信息表、课程类型表、老师信息表和学生信息表等。表3-1课程信息表字段数据类型长度是否可空注释nameVarchar50是名称xianxuanVarchar20是限选yixuanVarchar20是已选kexuanVarchar20是可选typeVarchar1是类型teacherVarchar20是老师timeVarchar8是时间表3-2学生留言信息表字段数据类型长度是否可空注释studentVarchar20是学生nameVarchar50是名称describeVarchar255是描述teacherVarchar20是老师refuwordVarchar255是回复timeVarchar8是时间表3-3选课信息表字段数据类型长度是否可空注释teacherVarchar20是老师classVarchar20是课程stateVarchar1是状态studentVarchar20是学生timeVarchar8是时间表3-4课程类型信息表字段数据类型长度是否可空注释nameVarchar50是名称commentVarchar255是备注表3-5老师信息表字段数据类型长度是否可空注释nameVarchar50是名称sexTinyint20是性别numVarchar20是电话timeVarchar8是时间表3-6学生信息表字段数据类型长度是否可空注释nameVarchar50是名称sexTinyint20是性别numVarchar20是电话timeVarchar8是时间第四章详细设计与实现4.1开发需求与系统架构4.1.1开发需求根据本次的实际情况,系统开发环境如下:操作系统:Windows7开发软件:Myeclipse10数据库:Mysql5.0开发语言:Java服务器:Tomcat6.0处理器:intelcorei7内存:8g4.1.2系统架构系统基于B/S模式,主要由jsp前端界面、java后端代码和mysql数据组成。主要运行流程:jsp界面通过HTTP协议访问服务器,服务器使用HttpServletRequest接收客户端请求,随后进行相应的逻辑处理与数据校验,请求参数通过myBatis框架中的Mapper与数据库进行交互,实现相应的增删改查操作。交互结束后,结果封装到HttpServletResponse当中返回给jsp界面。jsp通过html标签、jQuery组件、easyUI组件等进行数据展示。通过perties配置数据库信息(在cgm0xuanke\conf文件夹下边)jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc\:mysql\://localhost\:3306/db_cgm0xuankejdbc.username=adminjdbc.password=admin数据库信息配置到sqlMapConfig.xml文件当中,系统启动时通过读取该文件与数据库建立连接。进入前端页面时,jsp页面给后台服务发送请求,后台通过Controller接口接收请求,并进行相应的逻辑处理,通过mybatis框架与数据库进行交互,并对其进行相应的增删改查操作,得到的结果封装后返回到jsp界面,进行数据展示,如图4-1。图4-1系统总架构4.2系统主要功能其主要功能是可以修改每个角色用户的信息和课程信息,分配课程,留言能及时反馈等功能。4.2.1主界面功能实现每个角色用户需要先选择自己的角色类型,输入正确的账号密码才能登陆,其界面如图4-2,4-3所示。图4-2登录界面流程图 intguanliyuanxiugaimima(HttpServletRequesthttpreque, HttpServletResponsehttprespon){ try{ Stringglpwd2=httpreque.getAttribute("mima").toString(); JSONObjectjsonreusl=newJSONObject(); intz=0; Guanliguanliyuam=newGuanli(); guanliyuam.setAdminName(newString("admin")); Stringglpwd=(String)httpreque.getParameter("mima1"); guanliyuam.setGuanliPassword(glpwd); if(adsev.findGuanli(guanliyuam,z,z).size()==1){ guanliyuam=(Guanli)(adsev.findGuanli(guanliyuam,z,z)).get(z); guanliyuam.setAdminPassword(glpwd2); adsev.updateguanli(guanliyuam); 图4-3主界面功能实现4.2.2管理员登录功能模块管理员是权限最大的一个角色,把管理员的角色类型放在第一位,输入账号密码即可登录,登录后进入专属界面,查看所有的功能权限。其界面如图4-4,4-5所示。图4-4管理员登录流程图登录功能实现如下 intdenglu(HttpServletRequesthttpreqss, HttpServletResponsehttpresp)throwsThrowable{ dengluleixing=httpreqss.getAttribute("dengluleixing").toString(); yonhu111=httpreqss.getAttribute("yonhu111").toString(); mimade111=httpreqss.getAttribute("mimade111").toString(); LogBiaologb=newLogBiao(); logb.setRizhiName(yonhu111); logb.setDate(dddd); logb.setDengluIp(ip); Stringip=httpreqss.getRoIps(); Datedddd=Calendar.getInstance().getTime(); rizhiService.save(logb); if(yonhu111==null||mimade111.equals(“”)){ httpreqss.setAttribute("emsg",newString("usernameorpasswoorderror!")); httpreqss.getRequestDispatcher((new String("error/indexs.jsp")).forward(httpreqss, httpresp);图4-5管理员主界面4.2.3老师信息管理模块管理员可以管理老师各种信息,根据合理的具体情况能做出修改,可以根据用户名以及姓名进行筛选。其界面如图4-6,4-7所示。图4-6老师信息管理流程图 publicListgetYonhuList(Yonhurecord){ List<Yonhu>list= yonghuDao.selectAllUser(record,Yonhuname,page,rows,sdate,edate,sdate1,edate1); returnlist; } publicvoidupdateYonhu(YonhuYonhu){ yonghuDao.updateByID(Yonhu); } publicYonhugetYonhuById(intid){ YonhuYonhu=yonghuDao.selectUserByID(id); returnYonhu; } publicvoiddeleteYonghu(Integerid){ yonghuDao.deleteByPrimaryKey(id);}图4-7教师信息管理界面4.2.4课程类型信息管理模块课程类型的修改者来自管理员,它可以师生的实际需求设立课程,也可以对备注进行查看和修改。其界面如图4-8,4-9所示。图4-8课程类型管理流程图管理员输入课程类型信息的名称和备注,系统首先判断内容是否为空,如果不为空则向数据库插入一条数据,如果为空则提示用户信息输入有误。intaddSjleixing(HttpServletRequestrequest,HttpServletResponseresponse) throwsThrowable{ try{ StringsjleixingName=request.getAttribute("zijlxName").toString(); StringzijlxPhone=request.getAttribute("zijlxPhone").toString(); JSONObjectfrett=newJSONObject(); StringzijlxMark=request.getAttribute("zijlxMark").toString(); StringzijlxMark1=request.getAttribute("zijlxMark1").toString(); StringzijlxMark2=request.getAttribute("zijlxMark2").toString(); StringzijlxDizhi=request.getAttribute("zijlxDizhi").toString(); StringzijlxDate=request.getAttribute("zijlxDate").toString(); StringzijlxDate1=request.getAttribute("zijlxDate1").toString(); StringzijlxType=request.getAttribute("zijlxType").toString(); StringzijlxType1=request.getAttribute("zijlxType1").toString(); StringzijlxDouble=request.getAttribute("zijlxDouble").toString(); StringzijlxDouble1=request.getAttribute("zijlxDouble1").toString(); StringzijlxId=request.getAttribute("zijlxId").toString(); zijlxzijlx=newzijlx(); if(null!=zijlxId){ zijlx=zijlxService.getzijlx(Integer.parseInt(zijlxId); } if(null!=zijlxName){ zijlx.setzijlxName(zijlxName); } if(null!=zijlxPhone){ zijlx.setzijlxPhone(zijlxPhone); } if(null!=zijlxMark){ zijlx.setzijlxMark(zijlxMark); } if(null!=zijlxMark1){ zijlx.setzijlxMark1(zijlxMark1); } if(null!=zijlxMark2){ zijlx.setzijlxMark2(zijlxMark2); } if(null!=zijlxDizhi){ zijlx.setzijlxDizhi(zijlxDizhi); } if(null!=zijlxDate){ zijlx.setzijlxDate(DateUtil.formatString(zijlxDate, "yyyy-MM-ddhh:mm:ss"); } if(null!=zijlxDate1){ zijlx.setzijlxDate1(DateUtil.formatString(zijlxDate1, "yyyy-MM-ddhh:mm:ss"); } if(null!=zijlxType){ zijlx.setzijlxType(Integer.parseInt(zijlxType); } if(null!=zijlxType1){ zijlx.setzijlxType1(Integer.parseInt(zijlxType1); } if(null!=zijlxDouble){ zijlx.setzijlxDouble(Double.parseDouble(zijlxDouble); } if(null!=zijlxDouble1){ zijlx.setzijlxDouble1(Double.parseDouble(zijlxDouble1); } if(null!=zijlxId){ Datedate=newDate(); zijlx.setzijlxDate(date); zijlxService.modifyzijlx(zijlx); frett.put("失败了","true"); RespUtils.print(response,frett); }else{ zijlxService.save(zijlx); frett.put("成功了","true"); RespUtils.print(response,frett);图4-9课程类型信息管理界面4.2.5课程信息管理模块管理员决定课程信息,根据名称、类型以及老师信息进行查询,列表展示名称,类型,老师以及待选课程的数量等信息。其界面如图4-8,4-9所示。图4-10课程信息管理流程图管理员输入课程名称或类型或教师信息,如果不为空则,指令到达数据库根据条件搜索,查询出相关数据并返回展示;如果信息为空则提示用户信息输入错误。 publicvoidpartcomArr(HttpServletRequesthtreqs,HttpServletResponsehtrps) { intz=0; deptStr=htreqs.getAttribute("deptStr").toString(); empid=htreqs.getAttribute("empid").toString(); Deptdept=newDept(); if(null!=deptStr){ dept.setDeptType(Integer.parseInt(deptStr)); } if(empid.equals("")){ dept.setEmpId(Integer.parseInt(empid)); } try{ JSONObjectjobj=newJSONObject(); jobj.put("emid",""); jobj.put("deptName","pleasechoose..."); JSONArrayjarr=newJSONArray(); jarr.add(jobj); jarr.addAll(JSONArray.fromObject(deptService.queryDept(dept,z,z))); RespUtils.print(htrps,frett);图4-11课程信息管理界面4.2.6选课信息管理模块学生用户可以在选课界面进行选课或是取消选课的操作。其界面如图4-10,4-11,4-12所示。图4-12学生查询选课信息流程图学生输入需要查询的课程名称,如果不为空则系统从数据库中根据课程名称进行条件查询,查询出相关数据并返回展示;如果信息为空则提示查询的课程名称不可为空。图4-13学生取消选课流程图学生选择需要取消的选课,学生的操作行为会提交到系统,系统首先校验信息是否正确,如果正确,从数据库中删除这条选课记录,返回取消成功。如果不正确,则提示学生本次课程非所选课程,取消选课失败。publicvoidqueryOthers(HttpServletRequesthtrqs, HttpServletResponsehtrps)throwsThrowable{ StringotherId=htrqs.getAttribute("otherId").toString(); StringotherType1=htrqs.getAttribute("otherType1").toString(); StringotherType=htrqs.getAttribute("otherType").toString();intz=0; Stringpg=htrqs.getAttribute("pg").toString(); Stringrws=htrqs.getAttribute("rws").toString(); StringotherName=htrqs.getAttribute("otherName").toString(); StringotherPhone=htrqs.getAttribute("otherPhone").toString(); Otherother=newOther(); PgBeanpgBean=null; if(pg!="null"){ pgBean=newPgBean(Integer.parseInt(pg),Integer.parseInt(rws)); }else{ pgBean=newpgBean(z,z); } JSONArrayjsArr=JSONArray.fromObject(otherService.queryothers( other,pgBean.getStart(),pgBean.getrws())); JSONObjectreJson=newJSONObject(); inttotal=otherService.queryothers(other,z,z).size(); reJson.put("all",total); reJson.put("rws",jsArr); RespUtils.print(htrps,reJson);图4-14学生选课界面4.2.7学生留言模块老师用户们可以自己的系统界面查看到每个学生的留言信息,选中需要回复的学生选项,输入需要回复的内容然后点击回复按钮,就可以进行回复。其界面如图4-13,4-14所示。图4-15学生留言流程图publicvoidqueryTips(HttpServletRequesthtprqs, HttpServletResponsehtprps){ intz=0; Stringpage=htprqs.getAttribute("page").toString(); Stringrows=htprqs.getAttribute("rows").toString(); StringtipName=htprqs.getAttribute("tipName").toString(); StringtipId=htprqs.getAttribute("tipId").toString(); StringtipTypeid=htprqs.getAttribute("tipTypeid").toString(); StringtipType=htprqs.getAttribute("tipType").toString(); StringtipType1=htprqs.getAttribute("tipType1").toString(); Stringsdtid=htprqs.getAttribute("sdtid").toString(); StringdeptId=htprqs.getAttribute("deptId").toString(); StringteaId=htprqs.getAttribute("teaid").toString(); StringstepId=htprqs.getAttribute("stepId").toString(); StringcreateDate=htprqs.getAttribute("createDate").toString(); Stringupdatetime=htprqs.getAttribute("updatetime").toString(); SdtTipstip=newSdtTips(); PgEntitypgentyi=null; if(page!=null)){ pgentyi=newPgEntity(Integer.parseInt(page),Integer.parseInt(rows)); }else{ pgentyi=newPgEntity(z,z); } try{ JSONObjectjobj=newJSONObject(); JSONArrayjArrs=JSONArray.fromObject(tipService.querytips( tip,pgentyi.getStart(),pgentyi.getRows(),creatupdatetime,updatetime)); intalltips=tipService.querytips(tip,z,z,creatupdatetime,updatetime).size(); jobj.put("jArrs",jArrs); jobj.put("alltips",alltips); ResponseUtil.write(htprps,jobj); }catch(Exceptionexception){ log.error(exception); }图4-16学生留言界面第五章系统测试5.1测试的意义软件测试的含义就是对整个系统的一次考验,能否真正在实际中投入使用,在测试中能够得出在设计时不容易发现的问题,毕竟使用和设计是两个不同的概念。之所以需要测试就是想要在这个过程发现不足之处和问题,知道问题才能对症下药的去解决,所谓实践才是真理。5.2测试方法对每个模块进性操作测试和内容测试,使用正确的操作、错误的操作和不作为操作对每个模块进行测试。采用这种多方面多角度的测试方法能够检测出系统在性能上是否能够达标,测试的全面能够体现系统在设计的准确无误,在功能的上经得起不同程度和形势的考验。5.3测试用例表5-1用户登录模块测试用例用例编号测试用例描述操作过程及数据预期结果测试结果N001输入正确的用户名密码输入账号(cjhwan),密码(cjh519988)成功的跳转到角色所在的主界面通过N002输入错误的用户密码输入账号(cjhwan),密码(519988)系统界面没有成功跳转,提示账号密码错误通过N003空用户名密码输入账号(),密码()系统界面不发生跳转,提示错误通过表5-2课程管理模块测试用例用例编号测试用例描述操作过程及数据预期结果测试结果F001录入课程信息点击添加按钮,填写课程信息,点击确定按钮添加的课程信息在系统中显示通过F002修改课程信息点击列表操作栏中的修改链接,改动信息后,点击确定按钮课程信息发生变化,并显示通过F003删除课程信息选中要删除的信息,点击确定删除的信息不显示通过表5-3教师用户管理模块测试用例用例编号测试用例描述操作过程及数据预期结果测试结果T001点击新增按钮,输入正确信息按照系统流程填写教师用户相关信息后点击确定系统提示保存成功,教师用户信息保存到数据库通过T002点击修改按钮,输入错误信息按照系统流程将教师用户的不可为空信息填写为空后点击确定系统报错,跳转到保存失败界面通过T003点击新增按钮,不输入任何信息在不填写任何内容的情况下下,点击确定按钮系统报错,系统信息不做任何改变通过5.4测试总结经过测试,系统的设计能够初步的达到起初的需求,能够有效体现自身的价值。且各个功能模块之间能非常协调的一起运行,整合在一起组成一个完整的选手选课系统。第六章结论与展望经历了好几个月努力,在设计的管理系统呈现面前时标志着这段时间没有白白浪费,基于Java的选课信息管理系统在很大程度上减轻了高校在管理学生的工作量,它所拥有的学生留言功能能够解决学生在选课时遇见问题不能及时反馈给校方的问题。系统能够将课程有效的分为不同专业类型的模块,让学生在选课的时候能快速清晰的查询到自己需要的课程在这两个方面给学生的工作带来了不同以往的便利。学生能够随意选择和退选课程,这个功能实现了选择自由,不在局限于以前不能概览所有课程时所带来的困扰。管理员能查看所有用户的操作日志和改变用户的基本信息,能够分配课程给专业相关且适应的老师,避免在排课时所产生不必要的冲突和矛盾。这种将权利固定简单化的操作模式是管理员这个权限最大,工作最繁琐的岗位在工作上能够得心应手。教师能够及时查看学生选课时遇见困难的留言,知晓问题及时,不用在不了解情况下胡乱猜测。这个功能还能让教师一对一的给学生提供一些选课的建议。综上所诉,系统设计的很成功达到了在设计之初所期望能够达到的效果。系统在功能设计上的确是有一定的效果,但是个人的想法终究不能十全十美。还有很多东西需要更多科研者去研制和开发,这个系统在界面结构的设计上的选择上比较简单,其目的就是为了能够适应更加大范围的使用人群。但是在按钮的设计上没有使用动态按钮的设计,整体的系统主要集中于功能的设计,在美观上并没有做出很大程度的投入,这也是需要改进的地方。总的而言,管理系统能在很多地方起到实际性的作用,这也使得这一模块的技术应用会发展的更加好。参考文献[1]颜丹丹.高校选课管理信息系统研究与分析[M].云南:云南大学,2015.[2]常庆英.天津商业大学宝德学院网上选课系统的设计与实现[M].天津:电子科技大学,2013.[3]陈佳.南昌工学院选课系统设计与实现[D].湖北:湖北工业大学,2017.[4]周雨薇,李玉红.“互联网+”模式下图

温馨提示

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

评论

0/150

提交评论