版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课题名称:学生信息管理系统摘要随着各大高级学员的招生力度不断加大,学生信息的管理工作也变得尤为的繁重,传统的信息管理方式效率比较低,而且容易出现错误,数据修改和更新也不方便,很难满足目前工作的实际需求。本次设计的是一款基于B/S架构设计学生管理系统,方便对学生管理的需求进行分析。本系统主要包括以下功能:学生信息录入、教师信息录入、课程录入、年级录入、成绩管理等相关功能。通过系统可以快速的获取到每位学生的信息情况,使学生的信息管理变得高效。系统的设计与开发采用的是服务器/浏览器的系统结构模式,只要在浏览器上输入对应的域名,就可以登录到系统页面进行操作,使用Java语言编写后端代码,使用jsp技术编写前段页面代码,使用mysql数据库来存储学生及老师信息数据。本篇论文主要叙述的是本系统的分析、设计及系统开发的全部功能,体现出了学生管理系统的设计和实现方法,设计到学生管理的功能都会在论文中详细的描叙。关键字:学生信息管理系统、Java语言、jsp技术、mysql数据库。
目录TOC\o"1-3"\h\u16029一、项目介绍 一、项目介绍1.1项目背景随着信息技术的飞速发展和网络时代的到来,生活的便捷以及工作效率的提高,我们的生活已经融入了很多信息化的元素,现在的信息技术也变得越来越普及,不经促进了社会的高速发展,同时它也影响这人们的学习和工作以及生活等各个方面,随着信息技术的不断提高,计算机科学与技术也日渐成熟,其功能的强大已经让人们有了深刻的认识。信息技术已经进入了人类社会的各个领域,迅速的改变着人类社会的生产方式和生活方式,可以为人们减轻体力和脑力劳动,帮助人们完成一些比较难以完成任务的有效的工具。伴随着各大高校学校规模的不断扩大,各高校的信息管理方面也较受到巨大的考验,校园招生人数的增加,相应的学生的信息量也随之增加,也增加了学生信息管理的难度。面对这些庞大的数据信息,我们就需要设计一套完善的学生管理系统,来提高学生数据信息的管理,做到数据的规范化,标准化,科学化的管理,通过平台可以快速的分析数据,获取数据,同时提高工作效率,降低错误率的产生,实现无纸化办公,学生通过本系统可以实现日常的数据查询功能,如信息查询,成绩查询,课程查询等常规查询,教师使用方面如常规的学生信息维护,成绩维护操作,这个系统不经是可以实现学生信息数据的方便管理,还有很多方便日常管理的功能。1.2项目的研究及现状学生信息管理系统是每个院校必不可少使用的系统,所使用的人员比较多,如年级、班级、教师、学生,所涉及的功能也比较多,随着教学体系不断改善,选课制和学分制的展开和深入,学生成绩及日常管理工作的存储也变得繁重和复杂,所以需要研发一款功能齐全,操作简单,使用方便的学生信息管理系统。在国外大学院校中,他们的研发团队一般具有较大规模的稳定的技术队伍来提供服务与技术支持。相对于国外院校学生信息系统而言,国内院校信息化建设相对起步较晚。在数字化信息校园理论逐步应用的过程中,各院校之间,一方面不断加强各种硬件、系统软件的配置和网络维护,另一方面也不断开发实各类教学、科研、办公管理等应用系统,形成了较为规范的信息化建设体系。但是,由于信息化程度相对落后,资金短缺,体系不健全等原因,国内院校教务管理系统在机构设置、服务范围、服务质量及人员要求上与国外学校相比都有一定的差距。反观国内技术现状,在数据安全性和信息更新化方面存在有一定的不足,各现有系统资料单独建立,单点交互,共享性差;在以管理者为主体的方式中,信息取舍依赖管理者对于信息的认知与喜好,较不容易掌握用户信息真正的需求,也因此无法完全满足用户对功能的需求。因此,教务管理软件应充分依托校园网,实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的基础。1.3本次项目的主要内容本次项目设计的主要内容有:学生信息管理系统的需求分析学生信息管理系统开发的相关技术学生信息管理系统的总体设计数据库的概念设计各功能模块的详细设计二、相关技术介绍2.1B/S架构概述B/S(Brower/Server,浏览器/服务器)是Web技术兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。这种架构的模式,是将系统功能实现的核心部分集成到服务器中,简化了系统的开发、维护,方便客户使用。在客户端只需要安装一个浏览器,进行对服务器的访问,通过webserver请求数据就可以返回想要的结果。B/S的优点:在任何地方操作不需要安装专门的客户端软件,只需要使用浏览器就可以进行访问。由于异步技术的发展,程序在客户端可以进行部分处理,这样做的目的是可以大大减少服务器的负担,增加交互性,实现局部刷新,做到需要多少调用多少数据。结合浏览器的多种脚本语言技术,让浏览器实现复杂专用软件才能实现的强大功能,节约开发成本。2.2Java语言Java语言是一款面向对象的一款高级语言是由Sun公司(现已被oracle公司收购)由JamesGosling和同事们共同研发,并在1995年正式推出,据oracle官方数据指数,目前全球已有上亿的系统是使用Java开发的。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。其特点如下:跨平台语言,不管在是任何平台,任何操作系统下,只要安装了java虚拟机,就可以在平台上执行java代码。是通过将源文件转换为二进制的字节码文件,通过java虚拟机执行实现扩平台。面向对象的设计模式,可以将特定代码进行分装,从而实现代码的复用操作,不用重复造轮子。较高的安全性,编译时要进行Java语言和语义的检查,保证每个变量对应一个相应的值,编译后生成Java类。运行时Java类需要类加载器载入,并经由字节码校验器校验之后才可以运行。Java类在网络上使用时,对它的权限进行了设置,保证了被访问用户的安全性。内部分装了多线程编程技术,方便实现多线程编码,以及自动垃圾回收机制,开发的时候不用对程序中产生的垃圾手动进行回收,如果产生垃圾,GC机制会自动进行垃圾回收。2.3Mysql数据库Mysql数据库是一款开源的关系型数据库管理系统,是由一家名家MySQLAB功能开发和维护的,在2006年的时候又由SUN公司收购,这款数据库使用的是结构化数据存储方式,方便使用,通过表及字段的方式,可以快速的实现数据的增、删、改、查,因为是开源的,体积又小,深受广大开发人员的喜爱。2.4页面设计2.4.1Jsp页面技术使用jsp页面进行对前段页面的开发,jsp(JavaServer
Pages)是Sun公司开发的一种动态网页技术,jsp页面运行在应用服务器上,jsp页面不只可以编写常规的html代码,也可以编写java程序,其中的9大内置对象,可以更加方便的进行编程。2.4.2javaScript技术javaScript是一种脚本语言技术,是运行在浏览器中,不需要预编译,可直接执行,主要的用途就是进行对表单的校验、用户交互的事件处理及动画效果的设计等功能。2.4.3JQuery技术是javaScript封装以后的一个框架,也可以说是一个大的类库,jQuery是目前最流行的JS框架,而且提供了大量的扩展,主要的功能就是将繁琐的javaScript的代码进行简化操作,方便程序可发,方便阅读,及可以快速的使用Ajax异步刷新技术。2.4.4Easyui技术Easyui是一个基于Jquery框架的用户界面插件的一个集合,是一个敏捷开发的前段框架技术,能够帮助Web开发者更轻松的开发出功能丰富的并且美观的UI界面。通过jQueryEasyUI,开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,集成了各种用户界面插件,提供了创建页面的所需,可以轻松的完成前段页面的创建。2.5Tomcat服务器Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。Tomcaat服务器在配置完成后,Apache为Html页面提供服务,Tomcat实际是运行Jsp页面和Servlet服务的,另外,Tomcat服务器和IIS等服务器一样,都是用来处理HTML页面的功能,它还相当于是一个容器,用来执行Servlet类和JSP页面。三、需求分析3.1需求分析3.1.1学生信息系统需求简介学生信息管理系统考虑以下几方面的需求:每年开学时,新生来报到,要对没以为新生的信息建立个人档案,这部分工作由学籍管理人员进行维护和操作。学生个人档案包括学生学号、姓名、性别、出生日期、所属班级、所属院系、籍贯等。管理员创建年级信息、班级信息、课程信息及考试信息。教师负责学生信息的管理及考试成绩的录入。学生负责修改个人信息及考试成绩的查看。3.1.2功能需求软件需求分析是指对目标人间系统在功能、行为、性能、设计约束等方面的期望。需求分析是软件设计、实现测试直至维护的主要基础,良好的需求分析可以避免或尽早提出早起的错误,从而降低软件的开发成本,改进软件的质量。本信息管理系统完成以下任务:管理员功能学生信息添加学生列表--添加--填写学生学号--填写学生姓名--性别--年级--专业教师信息添加教师列表--添加--填写教师编号--教师姓名--手机号课程信息添加课程列表--添加--填写课程名称年级信息添加年级列表--添加--填写年级信息考试信息添加考试列表--添加--填写考试名称--选择考试年级--选择考试班级教师功能教师信息修改个人信息--可修改手机号、QQ号码学生功能学生信息修改个人信息--学生可修改性别、手机号、QQ号3.1.3非功能性需求用户界面需求:界面简洁、易于操作硬件需求:可靠性需求:保证用户在正常使用本系统时,不会产生数据丢失。3.2可行性分析开发任何一个系统,都存在时间和技术及资源上的限制。因此在每个项目开发之前,必须要对项目进行可行性分析,从而可以减少项目的开发风险,避免人力物力及财力的浪费。可行性分析主要包括经济可行性和技术可行性等。3.2.1经济可行性软件经济可行性主要是正对学校,开发项目的成本和收益相比较。在这个信息化时代,信息化管理必然使学生信息管理系统更加系统化,全面化、快速化,这样可以为学校带来高效的工作效益和经济效益,开发出本系统可以减少管理人员数量,而且管理方便,各功能实现快速,数据有效的管理。这些效益和管理上的便捷远远超过了开发本系统的成本,所以在经济上具有完全的可行性。3.2.2技术可行性本系统开发使用的开发工具是Eclipse,是一款强大的开发工具,这款开发工具不仅可以开发java后端代码,也可以进行前段页面的开发,还可以继承很多的第三方插件,如连接数据库插件、继承tomcat、集成版本控制器等。数据库表的设计和思想是本系统的核心所在,使用navicat连接数据库,它是一款可视化连接数据库软件系统,主要用来进行表的创建及系统开发时数据的查询。四、总体设计4.1流程设计管理员成绩统计管理考试列表:管理员添加考试相关信息,如考试列表的考试名称名称、考试时间、考试类别、考试年级及备注,及考试信息的删除及考试成绩的查看。学生信息管理学生列表:管理对学生信息的添加、修改、删除操作,填写完学生学号和姓名后即可完成学生信息的创建,创建完成后,学生默认密码为111111。教师信息管理教师列表:完成对教师信息的添加、修改、删除操作,填写完教师号和姓名后即可完成教师信息的创建,点击设计课程,可以添加年级、班级课程信息,创建完成后,教师默认密码为111111。基本信息管理年级列表:添加年级及年级所学课程信息班级列表:添加班级信息,包括班级名称及所属年级信息课程列表:添加课程信息,点击添加填写的课程信息系统管理系统设置:用于修改网站名称、教师公告及学生公告学生教学管理成绩查询:通过成绩查询可以查看到之前考试的各科成绩信息班级管理班级成员列表:用于查看本班级学生的个人信息,如手机号,qq号码等系统管理个人信息:用于修改自己的个人信息,如性别、电话、qq号码等。教师教学管理成绩登记:教师通过成绩登记选项,显示出自己所教学的班级,点击成绩登录对每门课程进行成绩登记,登记完成后进行提交操作。教师管理教师列表:显示教师列表信息。系统信息:修改教师信息及教师密码。4.2系统功能设计4.2.1数据库表设计班级表Classzz字段名称字段类型字段长度注释IdInt10班级idNameVarchar50班级名称GradeidInt10年级id课程表 course字段名称字段类型字段长度注释IdInt10课程idNameVarchar50课程名称课程教师课程对应表class_course_teacher字段名称字段类型字段长度注释IdInt10表idClasszzInt10班级idGradeidInt10年级idCourseidInt10课程idteacheridInt10教师id成绩表escore字段名称字段类型字段长度注释idint10成绩idexamidint10考试idclasszzidint10班级idstudentidint10学生idgradeidint10年级idcourseidint10课程idscoreint10成绩考试表exam字段名称字段类型字段长度注释idint10考试idnamevarchar50考试名称timedate100考试时间textvarchar100考试注释typeint10类型gradeidint10年级idclassidint10班级idcourseidint10课程id年级表grade字段名称字段类型字段长度注释idint10年级idnamevarchar100年级名称年级课程关联表grade_course字段名称字段类型字段长度注释IdInt10IdGradeidInt10年级idCourseidInt10课程id学生表student字段名称字段类型字段长度注释IdInt10学生idNumberInt10学号NameVarchar50学生姓名SexVarchar1学生性别PhoneInt11手机号码QqInt11Qq号码PhotoVarchar100照片路径ClassidInt10班级idGradeidInt10年级id系统表system字段名称字段类型字段长度注释IdInt10IdschoolNameVarchar100网站名称ForbidTeacherInt1教师登录开关0为教师可登录1位教师不可登录forbidStudentint1学生登录开关0为学生可登录1位学生不可登录noteTeacharvarchar200教师公告noteStudentvarchar200学生公告教师表teacher字段名称字段类型字段长度注释IdInt10教师idNumberInt10教师工号NameVarchar50教师名称SexVarchar1性别PhoneInt11手机号码QqInt11Qq号码PhotoVarchar100照片路径用户表user字段名称字段类型字段长度注释IdInt10用户idAccountInt10用户编号PasswordVarchar100用户密码NameVarchar100用户名称TypeInt1用户类型1为管理员2位教师3为学生4.2.2系统后台功能设计及流程实现后端设计方式用MVC结构进行代码的编写实现,把所有的类分开,这样做的目的是方便多人开发,方便修改及维护。包目录结构Com.pigboss.bean包存放的是实体类。Com.pigboss.dao.impl包存放的是dao层的实现类Cer包存放的是dao接口Com.pigboss.filter包存放的是servlet过滤器的配置Com.pigboss.listener包存放的是servlet监听器的配置Com.pigboss.service包存放的是业务层代码Com.pigboss.servlet包存放的是servlet类,用于获取请求和相应页面。Com.pigboss.util包存放的是项目所需要的工具类,如连接数据库类,文件图片上传类等连接数据库方式使用c3p0进行连接,c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它开源项目有Hibernate,Spring。将连接数据的所使用到的参数填写到c3p0.xml文件中,如所需要的连接驱动、连接url、用户名、密码、连接池数量等,方便填写和修改。一、连接数据库代码下载c3p0启动包修改配置文件<?xmlversion="1.0"encoding="UTF-8"?><c3p0-config> <default-config> <propertyname="driverClass">com.mysql.jdbc.Driver</property> <propertyname="jdbcUrl">jdbc:mysql://localhost:3306/ssms</property> <propertyname="user">root</property> <propertyname="password">111111</property> </default-config></c3p0-config>写一个工具类调用ComboPooledDataSource类实现数据库连接privatestaticComboPooledDataSourcedataSource=null; privatestaticThreadLocal<Connection>tl=newThreadLocal<Connection>(); static{ dataSource=newComboPooledDataSource(); } publicstaticDataSourcegetDataSource(){ returndataSource; } publicstaticConnectiongetConnection(){ Connectionconn=tl.get(); try{ if(conn==null){ conn=dataSource.getConnection(); } }catch(SQLExceptione){ e.printStackTrace(); } tl.set(conn); returnconn; }添加学生流程介绍前台将数据传入到后台当中,通过request.getParameterNames()过去到学生信息的集合,将学生信息集合通过while遍历的方式将每一个值赋值到student对象中,通过dao层的sql语句像数据库信息数据的添加。流程图实现代码privatevoidinsertStudent(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); //获取参数名 Enumeration<String>StudentList=request.getParameterNames(); Studentstudent=newStudent(); while(studentNames.hasMoreElements()){ StringstudentName=studentNames.nextElement(); Stringvalue=request.getParameter(studentName); try{ BeanUtils.setProperty(student,studentName,value); }catch(IllegalAccessException|InvocationTargetExceptione){ e.printStackTrace(); } } service.insertStudent(student); response.getWriter().write("success"); } publicvoidinsertStudent(Studentstudent){ //添加学生记录 dao.insert("INSERTINTOstudent(number,name,sex,phone,qq,clazzid,gradeid)value(?,?,?,?,?,?,?)", newObject[]{ student.getNumber(), student.getName(), student.getSex(), student.getPhone(), student.getQq(), student.getClazzid(), student.getGradeid() }); //添加用户记录 dao.insert("INSERTINTOuser(account,name,type)value(?,?,?)",newObject[]{ student.getNumber(), student.getName(), User.USER_STUDENT }); }学生列表遍历流程图前台调用ajax请求,通过dao层查询学生信息,将查询到的学生信息,将查询到的信息转换成json类型,返回到前台遍历展示。代码实现privatevoidstudentList(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); //年级ID Stringgradeid=request.getParameter("gradeid"); //班级ID Stringclazzid=request.getParameter("clazzid"); //获取分页参数 intpage=Integer.parseInt(request.getParameter("page")); introws=Integer.parseInt(request.getParameter("rows")); //封装参数 Studentstudent=newStudent(); if(!StringTool.isEmpty(gradeid)){ student.setGradeid(Integer.parseInt(gradeid)); } if(!StringTool.isEmpty(clazzid)){ student.setClazzid(Integer.parseInt(clazzid)); } //获取数据 Stringresult=service.getStudentList(student,newPage(page,rows)); //返回数据response.getWriter().write(result); }publicStringgetStudentList(Studentstudent,Pagepage){ //sql语句 StringBuffersb=newStringBuffer("SELECT*FROMstudent"); //参数 List<Object>param=newLinkedList<>(); //判断条件 if(student!=null){ if(student.getGrade()!=null){//条件:年级 intgradeid=student.getGrade().getId(); param.add(gradeid); sb.append("ANDgradeid=?"); } if(student.getClazz()!=null){ intclazzid=student.getClazz().getId(); param.add(clazzid); sb.append("ANDclazzid=?"); } } //添加排序 sb.append("ORDERBYidDESC"); //分页 if(page!=null){ param.add(page.getStart()); param.add(page.getSize()); sb.append("limit?,?"); } Stringsql=sb.toString().replaceFirst("AND","WHERE"); //获取数据 List<Student>list=dao.getStudentList(sql,param); //获取总记录数 longtotal=getCount(student); //定义Map Map<String,Object>jsonMap=newHashMap<String,Object>(); //total键存放总记录数,必须的jsonMap.put("total",total);//rows键存放每页记录listjsonMap.put("rows",list);//格式化Map,以json格式返回数据Stringresult=JSONObject.fromObject(jsonMap).toString();//返回 returnresult; }删除学生流程图代码实现privatevoiddeleteStudent(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); //获取要删除的学号 String[]numbers=request.getParameterValues("numbers[]"); String[]ids=request.getParameterValues("ids[]"); try{ service.deleteStudent(ids,numbers); response.getWriter().write("success"); }catch(Exceptione){ response.getWriter().write("fail"); e.printStackTrace(); } }publicvoiddeleteStudent(String[]ids,String[]numbers)throwsException{ //获取占位符 Stringmark=StringTool.getMark(numbers.length); Integersid[]=newInteger[ids.length]; for(inti=0;i<ids.length;i++){ sid[i]=Integer.parseInt(ids[i]); } //获取连接 Connectionconn=MysqlTool.getConnection(); //删除成绩表 dao.deleteTransaction(conn,"DELETEFROMescoreWHEREstudentidIN("+mark+")",sid); //删除学生 dao.deleteTransaction(conn,"DELETEFROMstudentWHEREidIN("+mark+")",sid); //删除系统用户 dao.deleteTransaction(conn,"DELETEFROMuserWHEREaccountIN("+mark+")",numbers); }修改学生信息流程图实现代码privatevoidupdateStudent(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); //获取参数名 Enumeration<String>studentNames=request.getParameterNames(); Studentstudent=newStudent(); while(studentNames.hasMoreElements()){ StringstudentName=studentNames.nextElement(); Stringvalue=request.getParameter(studentName); try{ BeanUtils.setProperty(student,studentName,value); }catch(IllegalAccessException|InvocationTargetExceptione){ e.printStackTrace(); } } service.updateStudent(student); response.getWriter().write("success"); }publicvoidupdateStudent(Studentstudent){ Stringsql=""; List<Object>params=newLinkedList<>(); params.add(student.getName()); params.add(student.getSex()); params.add(student.getPhone()); params.add(student.getQq()); if(student.getGrade()==null||student.getClazz()==null){ sql="UPDATEstudentSETname=?,sex=?,phone=?,qq=?WHEREnumber=?"; }else{ sql="UPDATEstudentSETname=?,sex=?,phone=?,qq=?,clazzid=?,gradeid=?WHEREnumber=?"; params.add(student.getClazzid()); params.add(student.getGradeid()); } params.add(student.getNumber()); //更新学生信息 dao.update(sql,params); }添加课程流程图代码实现privatevoidaddCourse(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); Stringname=request.getParameter("name"); Coursecourse=newCourse(); course.setName(name); service.addCourse(course); response.getWriter().write("success"); }使用sql语句添加课程publicvoidaddCourse(Coursecourse){ dao.insert("INSERTINTOcourse(name)value(?)",newObject[]{course.getName()}); }删除课程流程图代码实现privatevoiddeleteCourse(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); intcourseid=Integer.parseInt(request.getParameter("courseid")); try{ service.deleteClazz(courseid); response.getWriter().write("success"); }catch(Exceptione){ response.getWriter().write("fail"); e.printStackTrace(); } }publicvoiddeleteClazz(intcourseid)throwsException{ //获取连接 Connectionconn=MysqlTool.getConnection(); //删除成绩表 dao.deleteTransaction(conn,"DELETEFROMescoreWHEREcourseid=?",newObject[]{courseid}); //删除班级的课程和老师的关联 dao.deleteTransaction(conn,"DELETEFROMclazz_course_teacherWHEREcourseid=?",newObject[]{courseid}); //删除年级与课程关联 dao.deleteTransaction(conn,"DELETEFROMgrade_courseWHEREcourseid=?",newObject[]{courseid}); //最后删除课程 dao.deleteTransaction(conn,"DELETEFROMcourseWHEREid=?",newObject[]{courseid}); }遍历课程前台调用ajax异步请求,后台数据库,查询全部的学生信息列表并且存放到集合中,在将集合转换成json类型,通过return将查询到的结果返回到前台,通过ajax中的function:success(){}实现遍历展示。流程图实现代码privatevoidcourseList(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); Stringgradeid=request.getParameter("gradeid"); Stringresult=service.getCourseList(gradeid); //返回数据response.getWriter().write(result); }publicStringgetCourseList(Stringgradeid){ List<Object>list; if(StringTool.isEmpty(gradeid)){ list=dao.getList(Course.class,"SELECT*FROMcourse"); }else{ list=dao.getList(Course.class, "SELECTc.*FROMcoursec,grade_coursegcWHEREc.id=gc.courseidANDgc.gradeid=?", newObject[]{Integer.parseInt(gradeid)}); } //json化Stringresult=JSONArray.fromObject(list).toString();returnresult; }添加班级信息实现方式前台将班级id和班级名称传入到后台,通过request.getParameter(字段名)方法过去到传过来的班级id和班级名臣,调用dao层的方法,执行sql语句,完成班级添加工程。流程图实现代码privatevoidaddClazz(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); Stringname=request.getParameter("name"); Stringgradeid=request.getParameter("gradeid"); service.addClazz(name,gradeid); response.getWriter().write("success"); }publicvoidaddClazz(Stringname,Stringgradeid){ intgid=Integer.parseInt(gradeid); dao.insert("INSERTINTOclazz(name,gradeid)value(?,?)",newObject[]{name,gid}); }删除班级信息前台将班级id传入到后台,后台调用service层的方式获取到传入的班级id,调用dao层,执行sql代码,实现班级删除。流程图实现代码privatevoiddeleteClazz(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ intclazzid=Integer.parseInt(request.getParameter("clazzid")); try{ service.deleteClazz(clazzid); response.getWriter().write("success"); }catch(Exceptione){ response.getWriter().write("fail"); e.printStackTrace(); } } publicvoiddeleteClazz(intclazzid)throwsException{ //获取连接 Connectionconn=MysqlTool.getConnection(); //删除成绩表 dao.deleteTransaction(conn,"DELETEFROMescoreWHEREclazzid=?",newObject[]{clazzid}); //删除考试记录 dao.deleteTransaction(conn,"DELETEFROMexamWHEREclazzid=?",newObject[]{clazzid}); //删除用户 List<Object>list=dao.getList(Student.class,"SELECTnumberFROMstudentWHEREclazzid=?",newObject[]{clazzid}); if(list.size()>0){ Object[]param=newObject[list.size()]; for(inti=0;i<list.size();i++){ Studentstu=(Student)list.get(i); param[i]=stu.getNumber(); } Stringsql="DELETEFROMuserWHEREaccountIN("+StringTool.getMark(list.size())+")"; dao.deleteTransaction(conn,sql,param); //删除学生 dao.deleteTransaction(conn,"DELETEFROMstudentWHEREclazzid=?",newObject[]{clazzid}); } //删除班级的课程和老师的关联 dao.deleteTransaction(conn,"DELETEFROMclazz_course_teacherWHEREclazzid=?",newObject[]{clazzid}); //最后删除班级 dao.deleteTransaction(conn,"DELETEFROMclazzWHEREid=?",newObject[]{clazzid}); }班级列表实现方式前台ajax异步调用接口,后台调用service层,service调用dao层,获取到班级列表,将获取到的班级列表转换成json格式,返回前台,通过拼接字符串的方式完成遍历展示。流程图实现代码privatevoidclazzList(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //编码格式 request.setCharacterEncoding("UTF-8"); //获取参数 Stringgradeid=request.getParameter("gradeid"); if(StringTool.isEmpty(gradeid)){ return; } Stringresult=service.getClazzList(gradeid); //返回数据response.getWriter().write(result); }publicStringgetClazzList(Stringgradeid){ intid=Integer.parseInt(gradeid); //获取数据 List<Object>list=dao.getList(Clazz.class,"SELECT*FROMclazzWHEREgradeid=?",newObject[]{id}); //json化 JsonConfigconfig=newJsonConfig(); config.setExcludes(newString[]{"grade","studentList"});Stringresult=JSONArray.fromObject(list,config).toString();returnresult; }学生考试列表前台使用ajax异步调用,service层发出请求调用dao层,dao层查询考试列表,将考试列表转换成json格式返回前台,前台过去到数据后,信息遍历展示。流程图实现代码privatevoidstudentExamList(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //获取当前用户 Useruser=(User)request.getSession().getAttribute("user"); Stringnumber=user.getAccount(); Stringresult=service.studentExamList(number); response.getWriter().write(result); }publicStringstudentExamList(Stringnumber){ //获取学生详细信息 Studentstudent=newStudentDaoImpl().getStudentList("SELECT*FROMstudentWHEREnumber="+number,null).get(0); Stringsql="SELECT*FROMexamWHERE(gradeid=?ANDtype=1)OR(clazzid=?ANDtype=2)"; List<Object>param=newLinkedList<>(); param.add(student.getGradeid()); param.add(student.getClazzid()); //获取数据 List<Exam>list=dao.getExamList(sql,param); //格式化Map,以json格式返回数据Stringresult=JSONArray.fromObject(list).toString(); returnresult; }教师考试列表实现方法前台使用ajax异步调用,service层发出请求调用dao层,dao层查询考试列表,将考试列表转换成json格式返回前台,前台过去到数据后,信息遍历展示流程图实现代码privatevoidteacherExamList(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ //获取当前用户 Useruser=(User)request.getSession().getAttribute("user"); Stringnumber=user.getAccount(); Stringresult=service.teacherExamList(number); response.getWriter().write(result); }publicStringteacherExamList(Stringnumber){ //获取教师信息 Teacherteacher=newTeacherService().getTeacher(number); List<CourseItem>itemList=teacher.getCourseList(); if(itemList.size()==0){ return"";
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福利院开展足球比赛活动方案
- 电子商务行业跨境电商与物流方案
- 力学计算题考试题库及答案
- 织金社区考试真题及答案
- 学校意识形态工作责任制落实方案
- 2025年临床执业医师《内科学》卷
- 野生动植物保护规范考核试题及答案
- 医疗机构消防安全知识岗前培训试题及答案
- 医疗机构职业病防治法培训试题及答案
- 191公司例会部门会议模板
- 人工智能在绩效评价中的应用-全面剖析
- 2025年03月通榆县委统一战线工作部民族宗教事务服务中心公开选调事业编制工作人员笔试历年参考题库考点剖析附解题思路及答案详解
- 2025年上饶幼儿师范高等专科学校单招职业技能测试题库汇编
- T-CNITA 05103-2018 袋式除尘用水刺非织造滤料
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 《光的本质之争》课件
- 《任务型教学法在初中历史教学中的应用研究》
- 学校食堂员工培训
- 中药灌肠疗法课件
- 西门子S7-1500 PLC技术及应用 课件 第5章 S7-1500 PLC 的通信及其应用
- 2024年员工借调合同书
评论
0/150
提交评论