j2ee大作业
j2ee大作业
j2ee大作业J2EE论文考核大作业学校:院系:信息技术学院专业:计算机科学与技术姓名:学号:指导老师:一.在以Java技术为基础的Web开发中,前端开发包含哪些技术,后端开发包含哪些技术,各有何特点。
详细论述。
答:前端开发:前端开发技术CSS、HTML、javascript1、CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。
CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。
2、HTML(Hyper Text Mark-up Language )即超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出。
设计 HTML 语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。
这样,你只要使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。
HTML文本是由 HTML命令组成的描述性文本,HTML 命令可以说明文字、图形、动画、声音、表格、链接等。
HTML 的结构包括头部 (Head)、主体 (Body) 两大部分。
头部描述浏览器所需的信息,主体包含所要说明的具体内容。
3、JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
后端开发:Java语言体系比较庞大,包括多个模块。
J2EE大作业
武汉轻工大学数学与计算机学院2019-2020学年第一学期J2EE大作业指导老师: ******** 专业:信息管理与信息系统班级:信管1602班学号: ********** 姓名: *****2019年10月29 日1. 架构概述J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术。
这些技术的出现给电子商务时代的WEB应用程序的开发提供了一个非常有竞争力的选择。
怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。
完成这个步骤可以形成一个主要里程碑基线。
形成这个基线有很多好处:各种因数初步确定为了形成架构基线,架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡。
往往架构设计师在这个过程中要阅读大量的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额。
一旦架构设计经过评审,这些因数初步地就有了在整个项目过程中的对项目起多大作用的定位。
定向技术培训一旦架构师设计的架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了。
众多的项目经理都会对预备项目组成员的技术功底感到担心;他们需要培训部门提供培训,但就架构师面对的技术海洋,项目经理根本就提不出明确的技术培训需求。
怎不能够对体系中所有技术都进行培训吧!有了架构里程碑基线,项目经理能确定这个项目开发会采用什么技术,这是提出培训需求应该是最精确的。
不过在实际项目开发中,技术培训可以在基线确定之前与架构设计并发进行。
角色分工有了一个好的架构蓝图,我们就能准确划分工作。
如网页设计,JSP 标签处理类设计,SERVLET 设计,session bean设计,还有各种实现。
这些任务在架构蓝图上都可以清晰地标出位置,使得项目组成员能很好地定位自己的任务。
一个好的架构蓝图同时也能规范化任务,能很好地把任务划分为几类,在同一类中的任务的工作量和性质相同或相似。
JAVA J2EE大作业——学生信息管理系统
JA V A & J2EE大作业——学生信息管理系统/src/beanFind.javapackage bean;import java.io.File;import java.io.IOException;import java.util.Iterator;import javax.servlet.jsp.JspWriter;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Find {public String[] find(String id,String name,JspWriter out,String studentInfoPath) throws DocumentException, IOException{SAXReader saxReader = new SAXReader();Document document = saxReader.read(new File(studentInfoPath));Element root = document.getRootElement();String[]str=new String[7];int j=0;//遍历根结点(students)的所有孩子节点(肯定是student节点)boolean flagid,flagname;for ( Iterator<?> iter = root.elementIterator(); iter.hasNext(); ){out.print("<tr>");int i=0;Element element = (Element) iter.next();flagid=false;flagname=false;//遍历student结点的所有孩子节点(即id,name,age,gender,email,java),并进行处理Iterator<?> iterInner = element.elementIterator();Element elementInner = (Element) iterInner.next();if(elementInner.getText().equals(id)){flagid=true;}elementInner = (Element) iterInner.next();if(elementInner.getText().equals(name)){flagname=true;}if(id!=null&&name!=null){if(flagid&&flagname){j++;for ( Iterator<?> iterInner1 = element.elementIterator(); iterInner1.hasNext(); ){Element elementInner1 = (Element) iterInner1.next();str[i]=elementInner1.getText();out.print("<th>"+elementInner1.getText()+"</th>");i++;}break;}}else if(name!=null&&id==null){if(flagname){j++;for ( Iterator<?> iterInner1 = element.elementIterator(); iterInner1.hasNext(); ){Element elementInner1 = (Element) iterInner1.next();str[i]=elementInner1.getText();out.print("<th>"+elementInner1.getText()+"</th>");i++;}}}else if(id!=null&&name==null){if(flagid){j++;for ( Iterator<?> iterInner1 = element.elementIterator(); iterInner1.hasNext(); ){Element elementInner1 = (Element) iterInner1.next();str[i]=elementInner1.getText();out.print("<th>"+elementInner1.getText()+"</th>");i++;}break;}}else{break;}out.print("</tr>");}str[6]=j+"";return str;}}ReadUserInfo.javapackage bean;import java.io.IOException;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.LinkedList;public class ReadUserInfo {//文件中读取出的用户信息LinkedList<String> nameList = new LinkedList<String>();LinkedList<String> passList = new LinkedList<String>();// StringTokenizer相关变量String temp;String[] st;//用来保存用户输入信息String username;String password;public String getUsername(){return username;}public void setUsername(String username){ername = username;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public LinkedList<String> getNameList(){return nameList;}public LinkedList<String> getPassList(){return passList;}public void read(String path) throws IOException{File file = new File(path);BufferedReader br = new BufferedReader(new FileReader(file));while ((temp = br.readLine()) != null){st =temp.split(",");nameList.add(st[0]);passList.add(st[1]);}}public boolean checknp(String name,String pass){LinkedList<String> nlist = getNameList();LinkedList<String> plist = getPassList();if(!nlist.contains(name) || !plist.contains(pass)){return false;}if(nlist.indexOf(name) != plist.indexOf(pass)){return false;}return true;}}XmlPage.javapackage bean;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.Iterator;import java.util.List;import javax.servlet.jsp.JspWriter;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class XmlPage {public void Edit(String user,String Id,String Name,String Age,String Gender,String Email,String Java,String studentInfoPath) throws DocumentException, IOException {SAXReader reader = new SAXReader();Document document = reader.read(new File(studentInfoPath));Element root = document.getRootElement();Element element = null ;for ( Iterator<?> iter = root.elementIterator(); iter.hasNext(); ){element = (Element) iter.next();//遍历student结点的所有孩子节点(即id,name,age,gender,email,java),并进行处理Iterator<?> iterInner = element.elementIterator();Element elementInner = (Element) iterInner.next();if(elementInner.getText().equals(user))break;}if(!Id.isEmpty())element.element("id").setText(Id);if(!Name.isEmpty())element.element("name").setText(Name);if(!Age.isEmpty())element.element("age").setText(Age);if(!Gender.isEmpty())element.element("gender").setText(Gender);if(!Email.isEmpty())element.element("email").setText(Email);if(!Java.isEmpty())element.element("java").setText(Java);OutputFormat out = new OutputFormat(" ", true, "utf-8");XMLWriter writer = new XMLWriter(new FileOutputStream(studentInfoPath),out);writer.write(document);writer.close();}public boolean check(String id,String studentInfoPath) throws DocumentException{SAXReader reader = new SAXReader();Document document = reader.read(new File(studentInfoPath));Element root = document.getRootElement();boolean flag=true;for ( Iterator<?> iter = root.elementIterator(); iter.hasNext(); ){Element element = (Element) iter.next();//遍历student结点的所有孩子节点(即id,name,age,gender,email,java),并进行处理Iterator<?> iterInner = element.elementIterator();Element elementInner = (Element) iterInner.next();if(elementInner.getText().equals(id)){flag=false;break;}}return flag;}public void add(String Id,String Name,String Age,String Gender,String Email,String Java,String studentInfoPath) throws Exception {SAXReader reader = new SAXReader();Document document = reader.read(new File(studentInfoPath));Element root = document.getRootElement();Element parent = root.addElement("student");Element id= parent.addElement("id");id.setText(Id);Element name = parent.addElement("name");name.setText(Name);Element age= parent.addElement("age");age.setText(Age);Element gender = parent.addElement("gender");gender.setText(Gender);Element email = parent.addElement("email");email.setText(Email);Element java = parent.addElement("java");java.setText(Java);OutputFormat out = new OutputFormat(" ", true, "utf-8");XMLWriter writer = new XMLWriter(new FileOutputStream(studentInfoPath),out);writer.write(document);writer.close();}public void Del(String id,String studentInfoPath) throws Exception {SAXReader reader = new SAXReader();Document document = reader.read(new File(studentInfoPath));Element root = document.getRootElement();Element element = null ;for ( Iterator<?> iter = root.elementIterator(); iter.hasNext(); ){element = (Element) iter.next();//遍历student结点的所有孩子节点(即id,name,age,gender,email,java),并进行处理Iterator<?> iterInner = element.elementIterator();Element elementInner = (Element) iterInner.next();if(elementInner.getText().equals(id))break;}root.remove(element);OutputFormat out = new OutputFormat(" ", true, "utf-8");XMLWriter writer = new XMLWriter(new FileOutputStream(studentInfoPath), out);writer.write(document);writer.close();}public void Reader(int diPage,int pageFileSize,JspWriter out,String studentInfoPath) throws DocumentException, IOException{SAXReader saxReader = new SAXReader();Document document = saxReader.read(new File(studentInfoPath));Element root = document.getRootElement();// 用于记录学生编号的变量int num=0;//遍历根结点(students)的所有孩子节点(肯定是student节点)for ( Iterator<?> iter = root.elementIterator(); iter.hasNext(); ){out.print("<tr>");num++;Element element = (Element) iter.next();if(num>=(diPage*pageFileSize-(pageFileSize-1))&&num<=diPage*pageFileSize){//遍历student结点的所有孩子节点(即id,name,age,gender,email,java),并进行处理for ( Iterator<?> iterInner = element.elementIterator(); iterInner.hasNext(); ){Element elementInner = (Element) iterInner.next();out.print("<th>"+elementInner.getText()+"</th>");}}out.print("</tr>");}}public int Count(String studentInfoPath) throws DocumentException{SAXReader saxReader = new SAXReader();Document document = saxReader.read(new File(studentInfoPath));List<?> list = document.selectNodes("/students/student");int num = list.size();return num;}}/src/filterAuthorityFilter.javapackage filter;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class AuthorityFilter implements Filter{//FilterConfig可用于访问Filter的配置信息private FilterConfig config;//实现初始化方法public void init(FilterConfig config){this.config = config;}//实现销毁方法public void destroy(){this.config = null;}//执行过滤的核心方法public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws IOException,ServletException{//---------下面代码用于对用户请求执行预处理---------//获取ServletContext对象,用于记录日志ServletContext context = this.config.getServletContext();long before = System.currentTimeMillis();System.out.println("开始过滤...");//获取该Filter的配置参数String encoding = config.getInitParameter("encoding");String loginPage = config.getInitParameter("loginPage");String loginServlet = config.getInitParameter("loginServlet");String addsuccess = config.getInitParameter("addsuccess");String changePage = config.getInitParameter("changePage");String changesuccess = config.getInitParameter("changesuccess");String delete = config.getInitParameter("delete");//设置request编码用的字符集request.setCharacterEncoding(encoding);HttpServletRequest requ = (HttpServletRequest)request;HttpSession session = requ.getSession(true);//输出提示信息System.out.println("Filter已经截获到用户的请求的地址:" +requ.getServletPath());System.out.println("user:" +session.getAttribute("user"));//获取客户请求的页面String requestPath = requ.getServletPath();//如果session范围的user为null,即表明没有登录//且用户请求的既不是登录页面,也不是处理登录的页面if( session.getAttribute("user") == null&& !requestPath.endsWith(loginPage)&& !requestPath.endsWith(loginServlet)){request.setAttribute("tip", "nologin");request.getRequestDispatcher("/login.jsp").forward(request, response);}/*else if(requestPath.endsWith(addsuccess)||requestPath.endsWith(changePage)||requestPath.endsWith(changesuccess)||requestPath.endsWith(delete)){request.setAttribute("tip", "stop");request.getRequestDispatcher("/studentInfoDisplay.jsp").forward(request, response);}*///"放行"请求else{chain.doFilter(request, response);}//---------下面代码用于对服务器响应执行后处理---------long after = System.currentTimeMillis();//输出提示信息System.out.println("过滤结束");//输出提示信息System.out.println("请求被定位到" + ((HttpServletRequest) request).getRequestURI() +" 所花的时间为: " + (after - before));System.out.println("Session.tip:"+session.getAttribute("tip"));System.out.println("er:"+session.getAttribute("user"));}}/src/sevrvletLoginServlet.javapackage sevrvlet;import java.io.IOException;import java.io.PrintWriter;import javax.mail.Session;import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.jboss.weld.context.SessionContext;import bean.ReadUserInfo;public class LoginServlet extends HttpServlet {/*** Constructor of the object.*/public LoginServlet() {super();}/*** Destruction of the servlet. <br>*/public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ReadUserInfo r = new ReadUserInfo();r.read(request.getSession().getServletContext().getRealPath("")+"\\WEB-INF\\users.txt");String username = request.getParameter("username");String password = request.getParameter("password");HttpSession session = request.getSession(true);//RequestDispatcher dis = null;PrintWriter out = response.getWriter();if(!r.checknp(username,password)){out.print("<script>alert('Wrong username or password');location.href='../login.jsp';</script>");//dis = request.getRequestDispatcher("../login.jsp");}else{session.setAttribute("user", username);System.out.println("LoginServlet tip:"+session.getAttribute("tip"));//out.print("<script>alert('z!');location.href='../index.jsp';</script>");//dis = request.getRequestDispatcher("../studentInfoDisplay.jsp");out.print("<script>location.href='../studentInfoDisplay.jsp';</script>");}//dis.forward(request, response);}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here}}/src/tagIteratorTag.javapackage tag;import java.io.IOException;import java.util.Collection;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.SimpleTagSupport;public class IteratorTag extends SimpleTagSupport {private String collection;private String item;//collection的setter与getter函数public void setCollection(String conllection){this.collection = conllection;}public String getCollection(){return this.collection;}//item的setter与getter函数public void setItem(String item){this.item = item;}public String getItem(){return item;}@Overridepublic void doTag() throws JspException, IOException {// TODO Auto-generated method stubCollection itemlist = (Collection)getJspContext().getAttribute(collection);for(Object itemTemp : itemlist){getJspContext().setAttribute(item, itemTemp);getJspBody().invoke(null);}}/srcmytaglib.tld<?xml version="1.0"encoding="GBK"?><taglib xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>1.0</tlib-version><short-name>mytaglib</short-name><!-- 定义该标签库的URI --><uri>/mytaglib</uri><tag><!-- 定义标签名 --><name>iterator</name><!-- 定义标签处理类 --><tag-class>tag.IteratorTag</tag-class><!-- 定义标签体支持JSP脚本 --><body-content>scriptless</body-content><!-- 配置标签属性:collection --><attribute><name>collection</name><required>true</required><fragment>true</fragment></attribute><!-- 配置标签属性:item --><attribute><name>item</name><required>true</required><fragment>true</fragment></attribute></tag></taglib>/WebRootadd.jsp<%@page language="java"contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@page import="java.io.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=GBK"><title>添加信息</title></head><body><%-- <% if(request.getAttribute("tip") != null && request.getAttribute("tip").equals("stop")){request.removeAttribute("tip");out.print("<script>alert('不能直接访问该网页');</script>");}%> --%><center><jsp:useBean id="testBean"class="bean.XmlPage"scope="page"/><form action = "addsuccess.jsp"method = "post">请输入学生信息:<br><br>姓 名:<input type= "text"name="name"style = "width = 165px;height = 22px;"value=""/><br><br>学 号:<input type= "text"name="id"style= "width = 165px;height = 22px;"value=""/><br><br>年 龄:<input type= "text"name="age"style = "width = 165px;height = 22px;"value=""/><br><br>性 别:<input type= "text"name="gender"style style = "width = 165px;height = 22px;"value=""/><br><br>email:<input type= "text"name="email"style= "width= 165px;height = 22px;"value=""/><br><br>java :<input type= "text"name="java"style= "width= 165px;height = 22px;"value=""/><br><br><input type="submit"value="添加"/> <a href="studentInfoDisplay.jsp">返回</a></form></center></body></html>addsuccess.jsp<%@page language="java"contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@page import="java.io.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=GBK"><title>find</title></head><body><%//System.out.println("11213213");if(application.getAttribute("lock") == "true"){out.print("<script>alert('他人正在操作中');location.href='studentInfoDisplay.jsp';</script>");}else{application.setAttribute("lock", "true");}%><jsp:useBean id="testBean"class="bean.XmlPage"scope="page"/><%String Id=request.getParameter("id"),Name=request.getParameter("name"),Age=request.getParameter("age"),Gender=request.getParameter("gender"),Email=request.getParameter("email"),Java=request.getParameter("java");//Name= new String(Name.getBytes("ISO8859_1"), "GBK");//Gender= new String(Gender.getBytes("ISO8859_1"), "GBK");System.out.println(request.getRealPath("/WEB-INF/students.xml")) ;if(Id.isEmpty()||Name.isEmpty()||Age.isEmpty()||Gender.isEmpty() ||Email.isEmpty()||Java.isEmpty()){application.setAttribute("lock", "false");out.print("<script>alert('学生信息未填写完整!');location.href='add.jsp';</script>");}else{if(testBean.check(Id,request.getRealPath("/WEB-INF/students.xml"))) {testBean.add(Id, Name, Age, Gender, Email, Java,request.getRealPath("/WEB-INF/students.xml"));application.setAttribute("lock", "false");out.print("<script>alert('成功添加!');location.href='studentInfoDisplay.jsp';</script>");}else{application.setAttribute("lock", "false");out.print("<script>alert('该学生已存在!');location.href='add.jsp';</script>");}}%></body></html>change.jsp<%@page language="java"contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@page import="java.io.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=GBK"><title>修改信息</title></head><body><%-- <% if(request.getAttribute("tip") != null && request.getAttribute("tip").equals("stop")){request.removeAttribute("tip");out.print("<script>alert('不能直接访问该网页');</script>");}%> --%><center><jsp:useBean id="testBean"class="bean.XmlPage"scope="page"/><form action = "changesuccess.jsp"method = "post"><!-- 并发操作安全性代码 --><%String id=session.getAttribute("id").toString(),name=session.getAttribute("name").toString(),age=session.getAttribute("age").toString(),gender=session.getAttribute("gender").toString(),email=session.getAttribute("email").toString(),java=session.getAttribute("java").toString();%>在要修改处输入修改后信息:<br><br>姓 名:<input type= "text"name="name"style= "width = 165px;height = 22px;"value=<%=name%>><br><br>学 号:<input type= "text"name="id"style = "width = 165px;height = 22px;"value=<%=id %>><br><br>年 龄:<input type= "text"name="age"style = "width = 165px;height = 22px;"value=<%=age %>><br><br>性 别:<input type= "text"name="gender"style = "width = 165px;height = 22px;"value=<%=gender%>><br><br>email:<input type= "text"name="email"style= "width= 165px;height = 22px;"value=<%=email%>><br><br>java :<input type= "text"name="java"style= "width=165px;height = 22px;"value=<%=java%>><br><br><input type="submit"value="更改"/> <a href="studentInfoDisplay.jsp">返回</a></form></center></body></html>changesuccess.jsp<%@page language="java"contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@page import="java.io.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=GBK"> <title>find</title></head><body><%System.out.println("11213213");if(application.getAttribute("lock") == "true"){out.print("<script>alert('他人正在操作中');location.href='change.jsp';</script>");}else{application.setAttribute("lock", "true");}%><jsp:useBean id="testBean"class="bean.XmlPage"scope="page"/><%String user=session.getAttribute("id").toString();String Id=request.getParameter("id"),Name=request.getParameter("name"),Age=request.getParameter("age"),Gender=request.getParameter("gender"),Email=request.getParameter("email"),Java=request.getParameter("java");//Name= new String(Name.getBytes("ISO8859_1"), "GBK");//Gender= new String(Gender.getBytes("ISO8859_1"), "GBK");%><%if(!Id.equals(user)){if(testBean.check(Id,request.getRealPath("/WEB-INF/students.xml"))) {testBean.Edit(user,Id, Name, Age, Gender, Email, Java,request.getRealPath("/WEB-INF/students.xml"));application.setAttribute("lock", "false");out.print("<script>alert('成功更改!');location.href='studentInfoDisplay.jsp';</script>");}else{application.setAttribute("lock", "false");out.print("<script>alert('该学生已存在!');location.href='change.jsp';</script>");}}else{testBean.Edit(user,Id, Name, Age, Gender, Email, Java,request.getRealPath("/WEB-INF/students.xml"));application.setAttribute("lock", "false");out.print("<script>alert('成功更改!');location.href='studentInfoDisplay.jsp';</script>");}%></body></html>delete.jsp<%@page language="java"contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@page import="java.io.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=GBK"><title>删除</title></head><body><%if(application.getAttribute("lock") == "true"){out.print("<script>alert('他人正在操作中');location.href='studentInfoDisplay.jsp';</script>");}else{application.setAttribute("lock", "true");}%><jsp:useBean id="testBean"class="bean.XmlPage"scope="page"/><%String id=session.getAttribute("id").toString();%><%testBean.Del(id,request.getRealPath("/WEB-INF/students.xml")); %><%application.setAttribute("lock", "false");out.print("<script>alert('成功删除!');location.href='studentInfoDisplay.jsp';</script>");%></body></html>find.jsp<%@page language="java"contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@page import="java.io.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=GBK"><title>查找</title></head><body><%-- <% if(request.getAttribute("tip") != null &&。
JAVA课程大作业文档模板
皖西学院JA V A课程期末大作业( 2016 -- 2017 年度第二学期)课程名称:JA V A程序设计题目:备忘录系统院系:电信学院班级:电子1402班组名:风尘三侠组员(姓名+学号):陈松龄(2014013860)陈志康(2014013863)贾林松(2014013870)授课教师:范祥林日期:2017 年6 月18 日备忘录系统摘要:本作业利用JAVA进行开发,实现个人备忘录管理系统是能够运行在普通个人电脑上,为使用者提供日常信息管理功能的工具软件,使用者可以通过个人备忘录管理系统对日常工作/生活琐事进行更有效的管理,主要是为使用者提供对个人信息更方便的记录和查询功能,为使用者在个人信息管理上带来更多的便利。
具有日常记事:记录日常生活或者工作事件,以免遗忘,并提供记录的查询,添加和删除等管理功能。
一、目的与要求1.需求描述:基于MySql实现备忘录系统功能。
2.通过实践训练,进一步掌握JAVA开发方法,测试方法,提高软件开发和设计的能力。
3.进一步加强和提高工程文档的编写能力;二、需求分析本次系统采用结构化的设计方法进行设计,是设计成一个相对封闭的单机运行系统,作为大众化的应用软件,其用户界面是决定软件质量的首要条件。
所以,界面设计是开发与设计的重点。
充分贯彻简单易用、美观大方的基本原则,采用快速开发平台netbeans进行开发,并结合access数据库完成数据的导入。
NetBeans 平台是一种可重复使用的框架用于简化其他桌面应用程式的开发。
当基于NetBeans 平台的应用被执行,平台主要类别的main方法便会被执行。
可用的模组会被放置在存储器中,并且开始执行任务。
通常模组会只在被需要时,其代码才会被装进记忆。
应用程式能动态安装模组。
任何应用程式能包括更新模组,允许用户申请下载的应用程式升级和加入新功能。
这样安装,升级以及新发并行不必迫使用户每次再下载整个应用程式。
整个 Netbeans 平台提供对桌面应用程式常用的服务,允许开发者集中于仅限于他的应用程式的逻辑设计。
【精品】网上书店j2ee大作业
上海xxxxxx JavaEE课程大作业题目基于B/S结构的网上书店的设计与实现学号2008XXXX课号130501905姓名XXXX班级2008XXX院系计信专业软件工程2010-12—27目录第一章引言1.1研究背景国外的Web商务系统应用起步较早,所以应用的领域比较广,网络销售已经在人们日常消费中占到一定比例,Web商务系统也比较成熟。
人们可以以网络这个媒体,足不出户就可以搜索、查询到自己需要的信息、购买自己需要的商品。
我国电子商务的发展起源于70年代的EDI应用,我国海关是最早引入EDI进行报关,经过几年的完善发展目前企业可以通过上网申请报关。
电子商务概念首次引入中国是在1993年,第一笔网上交易发生在1996年。
目前我国网上书店的主要类型有:由国有新华书店投资建设的网上书店.一些有实力的传统书店,都会建立自己的网站,利用网络促销,争取更多的市场份额。
它们主要依托传统的图书大厦的图书储存进行网络售书,属于新华书店上网或上网的书店。
由出版社建立的网上书店。
因为网络出版的缘故,出版社是最早触网的,我国500多家出版社中,已建立网站的有349家,占62%.较好的出版社营销网站建设的特点是:以出版社本社出版物为网站核心,突出特色,访问速度快捷,信息及时更新,内容的合理编排以及完善的检索能力,较强的交互能力。
外贸出版公司投资建设的网上书店。
这一类网上书店立足公司主营业务,主要对海外进行图书销售,销售量逐渐增加.非出版业资本投资建设的网上书店。
如卓越网。
就目前情况而言,上述几类的网络书店可以分为两大类。
一类是没有实体书店的网上书店,以卓越网为代表,还有一类是以实体书店为支撑的。
在这个背景之下,我开发了网上书店管理系统,形成了以计算机技术、网络技术、以及数据库技术等有机地结合起来的网上书店管理系统。
充分利用网络技术、数据库技术和管理技术相互结合具有的优越性,将书店管理移置到互联网环境中进行,使书店更能有效的工作,完成各种任务,如网上购书,网上看书等一切依托上网的网上购物平台。
J2EE期末复习(含答案)
1、ORM 有什么好处?AA).能进行关系对象的映射B).具有控制器功能C).能在服务器端保存客户端状态D).向DTO传递数据2、在使用property标签时,如果要显示标签的代码,需要设置下面哪个属性的属性值? CA).defaultB).valueC).escapeD).id3、以下哪一种检索策略利用了外连结查询?CA).立即检索B).延迟检索C).迫切左外连结检索D).迫切右外连结检索4、如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用Session 的什么方法? AA).createQuery()B).query()C).queryAll()D).queryObject()5、HQL查询语句from Cat as cat,不仅仅返回Cat的实例,而且还返回____的实例。
BA).Cat 父类B).Cat 子类C).Cat 实现接口D).Cat 兄弟类6、下面哪些子句不支持算数表达式?CA).compute by 和order byB).compute by 和insert byC).order by 和group byD).insert by 和group by7、使用Hibernate 的QBC 查询,要使用SQL 中的类似select count(*) from tablename 方法求出记录数,必须使用哪一个类?BA).RestrictionsB).ProjectionsC).CriteriaD).Criteron8、Struts2中默认的主题是哪一种?BA).simpleB).xhtmlC).css_xhtmlD).ajax9、在Hibernate 中,关于数据库的方言,下面哪个说法是正确的?DA).可以不写数据库方言B).数据库方言没有作用,可以随便写C).有通用的数据库方言可以使用D).数据方言对应于每个数据库,主要用于产生SQL 语句数据方言对应于每个数据库10、在JEE企业级开发中,SSH框架中Struts主要是完成Web的MVC中的哪个角色?AA).C(控制器)和V(视图)B).M (模型)和C(控制器)C).只有C(控制器)D).V(视图)和M(模型)11、在Struts2的包配置中,下面哪个属性是必须指定的?CA).namespaceB).extendsC).nameD).abstract12、通过实现下面哪个接口,可以很容易地实现一个拦截器类的编写?BA).ActionB).InterceptorC).AbstractInterceptorD).MethodInterceptor13、Action运行期间所有用到的数据都保存在下面哪个对象中?DA).RequestB).SessionC).ResponseD).ActionContext14、在使用SSH进行JEE企业级开发中,通常把模板文件放置在/WEB-INF目录下的原因是?AA).因为模板文件不能直接访问,为了防止用户直接访问模板文件,所以放在/WEB-INF目录下,让这些文件直接访问不到。
华师《J2EE应用框架设计与项目开发》在线作业-0001
华师《J2EE应用框架设计与项目开发》在线作业-0001
写类的目的是为了描述一类事物共有的( )
A:属性
B:数量
C:范围
D:源文件
答案:A
对于预定义<%!预定义%>的说法错误的是:(? )
A:一次可声明多个变量和方法,只要以“;”结尾就行
B:一个声明仅在一个页面中有效
C:声明的变量将作为局部变量
D:在预定义中声明的变量将在JSP页面初始化时初始化
答案:C
下面概念中,不属于面向对象方法的是()
A:对象
B:继承
C:类
D:过程调用
答案:D
如何获取一个?Cookie[]( )。
A:request.getCookies()
B:request.getCookie()
C:response.getCookies()
D:response.getCookie()
答案:A
在JSP中使用<jsp:getProperty>标记时,不会出现的属性是:(??)
A:name
B:property
C:value
D:其他选项都选
答案:C
Servlet是用Java编写的运行在Web服务器中的程序,它可以调用服务器端的类,也可以被调用,因此它也是一个( )
A:类
B:结构
C:对象
D:变量
答案:A
泛型使用中的规则和限制是( )
A:泛类参数只能是类类型不能是简单类型。
[南开大学]21秋学期《J2EE信息系统设计》在线作业-答案
[南开大学]21秋学期《J2EE信息系统设计》在线作业试卷总分:100 得分:100一、单选题 (共 20 道试题,共 40 分)1.给定一个Servlet的代码片段如下: Public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ ______out.println(“hi kitty!”);out.close();}运行次Servlet时输出如下: hi kitty!则应在此Servlet下划线处填充如下代码。
(选项一项)【A.】PrintWriter out = respons<-E.->getWriter();【B.】PrintWriter out = request.getWriter();【C.】OutputStream out = respons<-E.->getOutputStream();【D.】OutputStream out = request.getWriter();[参考.选择]:A2.在JSP页面中使用bean,我们必须使用JSP动作标签( )。
【A.】useBean【B.】useBeans【C.】Beans【D.】JavaBean[参考.选择]:A3.ORM系统一般以中间件的形式存在,实现程序对象到关系数据库数据的映射下面哪个部分不属于ORM组成?()【A.】对持久类对象进行CRUD操作的API【B.】用于访问数据库的SQL语句【C.】规定mapping?metadata的工具【 D.】可以让ORM实现同事物对象一起进行dirty?checking,lazy?association?fetching和其他优化操作的技术[参考.选择]:B4.16) J2EE中,JSP EL表达式:s{(10*10) ne 100}的值是()。
J2EE作业步骤
<frameset cols="20%,*">
<frame src="left.jsp">
<frame src="right.jsp" name="right">
</frameset>
</frameset>
(4). 新建JSP命名为right.jsp(空白界面)
(5). 新建JSP命名为duInfo.jsp 使用Dreamweaver,打开duInfo.jsp
插入表格二行七列,输入内容:条形码,姓名,读者类型,证件类型,证件号码,电话,Email,保存。
在MyEclipse中拖入iterator,设置属性;<s:iterator id="al" value="#request.list">
3. 复制lib库包,将jar全部加入build path路径中
复制lib到src同级目录
右键单击工程名,Build path>Configure Build path…
选择Libraries,点击Add Enternal JARs…, 全选lib包,点击OK
4.添加数据库驱动,链接test,选择mircosoft-jtds驱动
Window>show view>other 输入DB,选中DB Browser
右键单击MyEclipse Derby>new
Driver template: Microsoft SQL Server(JTD)
J2ee大作业
网络信息安全课程总结201802810825 王晓磊软件工程1808班互联网爱八卦,互联网爱隐私!每个人的信息安全尤为重要,尤其是在这个科技大爆炸的时代,网络安全尤其显得重要。
那么网络安全面临那些安全威胁呢?❖网络恐怖主义▪如著名的恐怖组织“基地组织”以及近期活跃的极端恐怖组织ISIS,就非常善于利用网络,通过散布激进言论、散布谣言、散布血腥视频、攻击和破坏网络系统等方式造成社会轰动效应,增加对方(通常是国家)民众的恐惧心理,以达到破坏其社会稳定,甚至颠覆国家政权的目的。
❖网络谣言和网络政治动员▪网络谣言是指通过网络介质(例如邮箱、聊天软件、社交网站、网络论坛等)传播的没有事实依据的话语,主要涉及突发事件、公共领域、名人要员、颠覆传统、离经叛道等等内容。
▪谣言传播具有突发性且流动速度极快,因此极易会对正常的社会秩序造成不良影响。
❖网络谣言和网络政治动员▪所谓政治动员,是指在一定的社会环境与政治局势下,动员主体为实现特定的目的,利用互联网在网络虚拟空间有意图地传播针对性的信息,诱发意见倾向,获得人们的支持和认同,号召和鼓动网民在现实社会进行政治行动,从而扩大自身政治资源和政治行动能力的行为和过程。
▪当然,网络政治动员的作用是双面的,如果合理利用,也可以产生良好的正面效果。
❖网络欺凌▪个人或群体利用网络的便捷性,通过计算机或手机等电子媒介,以电子邮件、文字、图片、视频等方式对他人所进行的谩骂、嘲讽、侮辱、威胁、骚扰等人身攻击,从而造成受害者精神和心理创伤。
用信息流动过程来划分信息安全威胁种类:❖中断(Interruption)威胁:使得在用的信息系统毁坏或不能使用,即破坏可用性。
❖截获(Interception)威胁:是指一个非授权方介入系统,使得信息在传输中被丢失或泄露的攻击,它破坏了保密性。
非授权方可以是一个人、一个程序或一台计算机。
❖篡改(Modification)威胁:以非法手段窃得对信息的管理权,通过未授权的创建、修改、删除和重放等操作而使信息的完整性受到破坏。
J2EE大作业和报告基本要求(1)
J2EE大作业和报告基本要求:大作业是以J2EE主要技术的综合应用效果为考评依据,包括JSP、Servlet、JDBC、Hibernate、Struts或EJB技术。
要求学生以1-3人为单元,提交作品和文档。
小组中每个同学分别承担不同的模块任务,并以此为个人考评成绩的主要内容。
有完整调试、演示的作品将得到特殊加分。
具体要求:1.界面简洁,友好,符合实际需要;2.通过树状功能描述,进行功能分析;3.数据设计可以采用SQL Server 2000或2005,也可以采用MySQL数据库;4.针对各种配置文件,有分析和说明,不能出现光秃秃的单独配置文件;5.对系统所使用的运行环境有比较清楚的阐述;6.关键技术要求对所使用的J2EE技术有理论和应用角度的分析;7.总结要求对调试过程中的问题有测试和解决方法的说明;8.最后一周进行答辩和验收。
分数分布:(1)所提交大作业,要求使用到J2EE开发的某一主要技术,包括JSP、Servlet、JDBC、Hibernate、Struts或EJB技术。
(10分)(2)作品做到能演示(30分);(3)文档要求:⏹功能分析符合要求(10分),其他酌情次之;⏹数据库设计完整,页面测试正确(10分),其他酌情次之;⏹作品实现(包含配置和截图),有技术、有环境配置,有功能测试(20分),其他情况酌情次之;⏹关键技术阐述正确,重点突出,简明扼要(15分),其他酌情次之;⏹总结中,对开发过程中的问题阐述清楚,切中要害,提出了合理解决方案(5分),其他酌情次之。
要求缴付电子文档(PPT、作品代码和报告文档)及纸质的文档材料作为考评材料。
电子文档一律采用Office2003的Word工具编写。
参考书目:关键词可以是Eclipse、J2EE、Struts、Hibernate、EJB、JDBC等方面的书均可参考。
《J2EE平台中的开源框架应用技术》课程的课后作业及参考书
《J2EE平台中的开源框架应用技术》课程的课后作业及参考书1.1.1第一次作业(Struts方面)利用IntelliJ IDE工具(可以从下载)或者Sun NetBeans工具完成一个用户登录功能的Struts Web应用系统。
(1)要求将实现过程通过屏幕拷屏的方式放到Word文档中(形式可以参考教学讲义),以便让教师能够了解实现过程。
(2)提交时间各班的班长收集各个同学的作业的Word文档(以每个同学的学号和姓名作为文件名),打包成*.zip或者*.rar文件,在12月13日交给教师。
1.1.2第二次作业(Struts方面)(1)将第一次作业中的Struts Web应用改变为国际化效果的Web 应用程序(2)将其中的表单改变为DynaActionForm类(虚拟ActionForm技术)的表单(3)提交时间各班的班长收集各个同学的作业的Word文档(以每个同学的学号和姓名作为文件名),打包成*.zip或者*.rar文件,在12月20日交给教师。
1.1.3第三次作业(Spring方面)在您所熟悉的某个开发工具中(IntelliJ IDE、Sun NetBeans或者MyEclipse)实现一个基于Spring Ioc容器的J2SE应用程序。
提交时间各班的班长收集各个同学的作业的Word文档(以每个同学的学号和姓名作为文件名),打包成*.zip或者*.rar文件,在12月27日交给教师。
1.1.4第四次作业(Spring方面)在您所熟悉的某个开发工具中(IntelliJ IDE、Sun NetBeans)实现一个基于Spring Ioc容器的J2EE的Web应用程序。
提交时间各班的班长收集各个同学的作业的Word文档(以每个同学的学号和姓名作为文件名),打包成*.zip或者*.rar文件,在2007年1月10日交给教师。
1.1.5第五次作业(Hibernate方面)在您所熟悉的某个开发工具中(IntelliJ IDE、Sun NetBeans)实现一个基于Hibernate 框架技术的“一对多”关联映射技术的Java程序。
J2EE期末大作业
计算机科学与工程学院《J2EE应用框架设计与项目开发》课程设计项目文档项目名称网盘系统班级学号姓名目录1 概述 (1)2 需求分析 (1)2.1 系统需求概述 (1)2.2 用例分析 (1)3 系统设计 (2)3.1 技术路线 (2)3.2 系统总体架构设计 (2)3.3 数据库设计 (2)3.4 系统详细设计 (5)4 系统实现 (10)3.1 xx功能的实现 (10)3.2 xx功能的实现 (11)5 小结 (16)1 概述J2EE是Sun公司推出的一套面向企业级应用的分布式体系,与传统的应用程序编程模型有了很大的差别,J2EE体系提供了一个基于组件的思想来设计、开发、装配及部署企业级应用。
J2EE为多层分布式企业计算提供了一套完整的技术和设施,它不仅继承了Java语言的平台独立的特点,而且结合了组件技术,为现代企业多层分布式应用提供一套完整的解决方案。
此次项目名称为网盘系统,作为J2EE课程的期末项目提出,希望通过网盘系统的设计开发,了解软件文档的相关标准和编写原则,训练并掌握软件各类文档写作的技巧;由于网络硬盘综合了各种优点,是一种功能强大、操作便捷、大容量、异步的存储工具,方便用户管理使用。
该系统主要实现用户的注册、登录、密码找回功能;文件夹的增加、删除以及重命名功能;文件的上传、下载以及共享功能;2 需求分析2.1 项目名称网盘系统2.2系统需求概述2.2.1 系统运行环境a 集成开发环境:MyEclipseb Web应用服务器:Tomcat6.0c 数据库服务器:MySQL2.2.2 功能需求网盘系统以快捷方便安全的操作方式,成为了一种资料共享的捷径。
该项目实现了用户对于文件的方便的管理,用户可以通过注册获得该系统的使用权,从而登录该系统,若用户忘记密码还可找回密码。
用户登录该网盘系统后可对文件夹进行创建删除以及重命名,可进行文件的上传、下载以及共享。
(1)用户注册:第一次使用该系统的用户可点击登录界面上的注册按钮,输入用户名以及密码,回答密保问题(方便找回密码),完成注册。
南开24年秋季《J2EE信息系统设计》作业参考一
24秋学期《J2EE信息系统设计》作业参考1.下面JSP内置对象作用范围最大的是()application>session>request>page=其他的选项A:page选项B:Application选项C:Session选项D:Request参考答案:B2.Servlet中,HttpServletResponse的()方法用来把一个Http请求重定向到另外的URL。
(选择一项)选项A:sendURL()选项B:redirectURL()选项C:sendRedirect()选项D:redirectResponse()参考答案:C3.在J2EE中,test.jsp文件如下: buffer is 运行时,将发生()。
(选择一项)选项A:转译期错误选项B:运行期错误选项C:运行后,浏览器上显示:buffer is null选项D:运行后,浏览器上显示:buffer is ABC参考答案:A4.以下方法,哪个可使session无效?( )选项A:session.removeAttribute(String key)选项B:session.invalidate()选项C:session.setAttribute(String key)选项D:session.getAttribute(String key)参考答案:A5.在Servlet过滤器的生命周期方法中,每当传递请求或响应时,web容器会调用()方法。
(选择一项)选项A:init选项B:service选项C:doFilter选项D:destroy参考答案:C6.()类的对象代表的是XML文档中的标签元素,此类继承于Node,也是Node的主要子类选项A:Attribute选项B:Element选项C:Nodelist选项D:attr参考答案:B7.J2EE中,JSP EL表达式:s{(10*10) ne 100}的值是()。
(选择一项)选项A:0选项B:True选项C:False选项D:1参考答案:C8.Java字符串是()选项A:一个简单类型选项B:一个常量选项C:一个变量选项D:一个类参考答案:D9.JSP中page指令用于。
J2EE试题附答案(8)
J2EE固定练习试卷1. 下面( )是正确的?A.<% String myString=request.getServerName() %>B.<%= "Hello" %>C.<%! String myString="Hello" %>D.<%= out.print("Hello") %>★标准答案:B2. 一个Java RMI应用,需要定位服务器myServer端口99上的myRemoteTest 远程对象,下面哪个RMI URL是正确的?A.rmi://99: myServer /myRemoteTestB.myServer:99/myRemoteTestC.rmi://myServer:99/myRemoteTestD.rmi:/myServer:99/myRemoteTest★标准答案:C3. <html><body><jsp:useBean id="address" class="Address Bean" /><jsp:setPropertyname="address" property="city" /><jsp:get Property name="address" property="city" /></body></html>如果用下面的URL访问,页面会输出什么结果?( )http://localhost:8080/ address.jsp?city=ChicagoA.Los AngelesB.ChicagoC.MiamiD.以上都不对★标准答案:B4. 考察以下:陈述A: RMI中, 存根(stub)是表示远程对象的客户端的代理。
.陈述B: RMI系统结构中,传输层负责建立新的连接和管理现有的连接。
J2EE大作业
山西大学自动化与软件学院课程实验报告实验课程《软件质量保证与测试》实验名称学生宿舍管理系统实验时间第十六周学生班级 1808班学生学号xxxxxxxxx学生姓名xxxxxxxxx指导教师xxxxxxxxxxxxxxxxxx年6月14日目录第一章系统概述1.1 项目研究的背景1.2 项目选择与目的意义1.3 项目研究的目标与要求第二章需求分析2.1 用户需求分析2.2 处理对象分析2.3 功能需求分析2.4 安全性与完整性分析第三章系统设计3.1 系统架构图3.2 ER图3.3 数据库设计第四章系统实现与设计内容4.1 系统逻辑设计与实现4.2 连接数据库4.3 功能模块第五章使用手册5.1 登录界面5.2 系统管理员界面5.3 楼宇管理员界面5.4 学生登录界面第六章测试与部署6.1 运行环境6.2 系统测试6.2 系统部署第七章课程设计总结第一章系统概述1.1 项目研究的背景学生宿舍管理系统对于一个学校来说是必不可少的组成部分。
目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。
而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。
当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。
信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。
21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
我们针对如此,设计了一套学生宿舍管理系统。
学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。
由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院Java EE课程大作业题目计算机学院在线考勤系统学号 ******** 课号 ********* 姓名陈小格班级 2011053 院系计算机科学与技术学院专业计算机科学与技术(电企)2013-06-10目录第一章系统需求与分析 (3)第二章系统设计 (4)1. 系统组成: (4)2. UML活动关系图: (4)3. 功能设计 (6)4. 数据库设计 (7)5. 项目界面和完成功能 (10)第三章系统关键模块技术实现 (13)第四章系统测试与部署 (17)第五章系统开发总结与心得体会 (20)参考文献 (21)第一章系统需求与分析计算机学院在线考勤系统适用于对在校学生的各门课的出勤情况予以记录,计算和查询,一个有效的查询系统分别包括后台管理权限设计,录入设计和查询设计。
该系统的使用对象为三类人,分别为教师,学生,管理员。
具体任务分配如下所示:根据如上所示,本系统需要完成的功能如下1.学生系统学生通过学号和起始密码(111111)完成首次登陆,学生首先进行选课。
学生只能查询自己的考勤情况及最后得分,可根据课程号的课程名查询,同时可修改自己的登录密码,修改的密码则通过数据库返回给管理员,学生可至管理员处索取密码。
2.教师系统教师通过教师号和初始密码(111111)完成首次登陆,教师可查询自己教授的课程,并能够在自己所教授的课程里进行考勤录入,统计查询,录入得分等操作,可修改密码,密码同样将返回给管理员。
3.管理员系统管理员负责基本信息维护:学生信息导入、教师信息导入,被导入并输入资料的人才有资格登录此系统。
课程信息包括基本信息和指定授课老师,指定教师在指定时间对该门课的考勤录入资格;查看考勤信息则用于在期末计算学生平时成绩得分,管理员有权限修改。
第二章系统设计1. 系统组成:本项目采用jsp +hibernate+javaBean+Servlet技术完成由以下三部分组件组成:i.用户表示层(视图,即各jsp文件);ii.控制处理层(控制器,即各dao和serv);iii.业务逻辑层(模型,即各JavaBean);2. UML活动关系图:下图是具体的UML活动关系图,包含进入系统时可以进行的操作学生教师管理员3. 功能设计1.学生选课:学生可在管理员录入并开发权限的课程中选课。
考勤查询:学生可在线查询自己在各门课的出勤情况,期末过后也可在同页面查询该门课成绩(平时+考试)修改密码:修改登录密码2.老师课程查询:教师可查询自己教授的课程考勤录入:教师可录入自己所教授课的考勤情况填写分数:期末过后,教师可在系统中填写学生的卷面分数(占总成绩的70%),考勤所占分数(然后按学生出勤百分比算分)及剩余分数(两项占30分),系统由此得出学生期末分数。
修改密码:修改登录密码3.管理员教师信息录入:教师信息指教师的基本信息,包括教师号,姓名,性别,身份证号,联系电话,唯有被录入的教师才有权限以教师身份登录本系统。
学生信息录入:学生信息包括学号,姓名,班级,性别,身份证号,同样,唯有被录入的学生才有权限以学生身份登录本系统课程信息录入:课程信息包括课程号,课程名,授课教师号,授课开始周,授课结束周,授课时间,总课时,当学生登录系统选课时,对应的课程信息将显示在学生选课栏里供选择。
课程信息管理:用于修改删除课程信息课程控制:用于开启或关闭教师录入该门课成绩功能和学生选择该门课功能成绩管理:用于查看和修改学生的各项成绩4. 数据库设计数据表的设计及功能如下:●信息表,用于存放各种用户的基本信息●课程表,用于存放课程信息●考勤表,用于存放各门课的考勤信息信息表CREATE DATABASE IF NOT EXISTS school;USE school;DROP TABLE IF EXISTS `userinfo`;CREATE TABLE `userinfo` (`id` int(10) unsigned NOT NULL auto_increment,`no` varchar(45) default NULL,`Sname` varchar(45) default NULL,`Ssex` varchar(4) default NULL,`Ssf` varchar(45) default NULL,`se` varchar(45) default NULL,`Tphone` varchar(45) default NULL,`userType` int(10) unsigned default NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;课程表DROP TABLE IF EXISTS `course`;CREATE TABLE `course` (`id` int(10) unsigned NOT NULL auto_increment, `Cno` varchar(45) default NULL,`Tno` varchar(45) default NULL,`Cname` varchar(45) default NULL,`Cgra` int(10) unsigned default NULL,`Cov` int(10) unsigned default NULL,`Ctime` varchar(45) default NULL,`checksum` int(10) unsigned default NULL, `stuflag` int(10) unsigned default NULL, `teaflag` int(10) unsigned default NULL, `Chour` int(10) unsigned default NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;考勤表DROP TABLE IF EXISTS `checkpass`;CREATE TABLE `checkpass` (`id` int(10) unsigned NOT NULL auto_increment, `Cno` varchar(45) default NULL,`Sno` varchar(45) default NULL,`cweek` varchar(45) default NULL,`cnum` varchar(45) default NULL,`chall` varchar(45) default NULL,`Ath` varchar(45) default NULL,`Allgra` varchar(45) default NULL,`cname` varchar(45) default NULL,`qm` varchar(45) default NULL,`sname` varchar(45) default NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;5. 项目界面和完成功能1 登录2 修改密码学生1 选课2 成绩查询教师1 课程查询2 录入成绩管理员1.学生管理2.教师管理3.课程管理4.课程管理5.成绩管理第三章系统关键模块技术实现1.登录模块以下为serv中代码:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {UserDao userDao = new UserDao();String name = request.getParameter("name");String pss = request.getParameter("pss");Integer userType =Integer.valueOf(request.getParameter("select"));index.jsp页面上传登录信息由LoginServlet接受Userinfo userinfo = userDao.login(name, pss, userType);,Checkpass.dao通过Userinfo.java链接打开session对话,从数据库调用Userinfo表中数据,LoginServlet页面调用dao中Checkpass方法,用于验证jsp 页面上传信息是否合法if(userinfo!=null){HttpSession session = request.getSession();session.setAttribute("userInfo", userinfo);if(userType==1){request.getRequestDispatcher("studentMain.jsp").forward(request, response);}else if(userType==2){request.getRequestDispatcher("teacherMain.jsp").forward(request, response);}else if(userType==3){request.getRequestDispatcher("adminMain.jsp").forward(request, response);}}else {request.setAttribute("errorFlag", "error");request.getRequestDispatcher("index.jsp").forward(request, response);}}根据不同的判断结果执行不同的语句2.考勤录入模块模块执行顺序如下<form action="LoadScoreAction?actionFlag=saveInsert" method="post"> jsp页面利用ation方法传入flagservlet页面通过后台导入flag调用saveinsert方法else if("saveInsert".equals(actionFlag)){Integer id = Integer.valueOf(request.getParameter("id"));Checkpass checkpass = checkpassDao.loadcheckpassByid(id);Course course =courseDao.loadCourseByCno(checkpass.getCno());double cnum =request.getParameter("cnum")==""?0:Double.valueOf(request.getParamete r("cnum"));double qm =request.getParameter("qm")==""?0:Double.valueOf(request.getParameter( "qm"));double ath =request.getParameter("ath")==""?0:Double.valueOf(request.getParameter ("ath"));接收页面的传来的数据,因为考勤录入只有一个数,程序太单调,于是此处我不仅设置了考勤录入(未到次数),还设置了其他成绩录入(除考勤外的平时分得分,自定两项相加占总成绩的三十分),期末成绩录入。