基于SSH的网上选课系统_第1页
基于SSH的网上选课系统_第2页
基于SSH的网上选课系统_第3页
基于SSH的网上选课系统_第4页
基于SSH的网上选课系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学技术系《JavaEE框架技术》工程报告题目学生选课系统姓名学号专业计算机网络技术班级2023级3班2012年6月15日功能需求分析随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。针对学生选课这一环节,过去的选课方法是采用人工的方法去管理文件档案,而这种管理方式存在许多的缺点:保密性差、效率低,另外时间一长,将会产生大量的文件和数据,这对于查找、更新和维护都会带来不少的困难。随着科学技术的不断提高,计算机已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一局部,实用技术绝对选课信息进行管理,具有手工管理所无法比较的优点。本系统从学生网上自主选课以及教师的课程发布两个大方面进行了设计基本实现了查询个人信息、修改个人信息、查询所有课程、选课以及退课的功能。本程序前台采用AdobeDreamweaverCS5进行页面制作,后台由NavicatLiteforMySQL数据库支持,实现动态网页的效果,到达对数据库的操作以完成使用的要求。系统功能模块设计学生登录学生登录选课系统主页选课系统主页课程信息管理个人信息管理课程信息管理个人信息管理退选课程选修课程查看个人信息修改个人信息所有课程信息查看选课信息退选课程选修课程查看个人信息修改个人信息所有课程信息查看选课信息系统流程学生选课系统学生选课系统登录登录失败成功选课系统主页选课系统主页所有课程信息个人选课情况修改个人信息查看个人信息所有课程信息个人选课情况修改个人信息查看个人信息选课退选输入个人信息选课退选输入个人信息9选课成功退选成功修改成功选课成功退选成功修改成功退出系统退出系统数据库设计数据库概念设计=1\*GB3①管理员实体对象管理员实体对象如图4.1所示:管理员管理员登录号口令登录号口令图4.1管理员实体对象图=2\*GB3②学生实体对象学生实体对象如图4.2所示:照片备注总学分照片备注总学分学号学生专业ID出生时间性别姓名学号学生专业ID出生时间性别姓名图4.2学生实体对象图③专业实体对象专业实体对象如图4.3所示:专业专业辅导员人数辅导员人数专业名专业名图4.3专业实体对象图④课程实体对象课程实体对象如图4.4所示:课程号课程号课程学分课程名学时开学学期课程学分课程名学时开学学期图4.4课程实体对象图⑤学生-课程实体对象课程实体对象如图4.5所示:学号课程号_______学号课程号图4.5学生-课程实体对象图数据库逻辑设计=1\*GB3①登录表dlb表4.1登录表列名描述数据类型可空默认值说明id标识int×自增1主键,自增xh登录号char(6)×无外键,xsb中的xhkl口令char(20)×无②学生表xsb表4.2学生表列名描述数据类型可空默认值说明XH学号Char(6)×无XM姓名Char(8)×无XB性别Bit×无1:男,2:女CSSJ出生时间datetime√无ZY_ID专业IDint×无ZXF总学分int√无BZ备注Varchar(200)√无ZP照片mediumblob√无③专业表zyb表4.3专业表列名描述数据类型可空默认值说明idIDint×自增1主键zym专业名Char(12)×无rs人数int√0fdy辅导员Char(8)√无④课程表kcb表4.4课程表列名描述数据类型可空默认值说明kch课程号Char〔3〕×无主键kcm课程名Char〔12〕√无kxxq开课学期smallint√无1-8xs学时int√0xf学分int√0⑤连接表xs_kcb表4.5连接表列名描述数据类型可空默认值说明xh学号Char〔6〕×主键kch课程号Char〔3〕×主键工程标准工程名称:StudentCourse<学号>,中间不要加空格或其他字符,如:StudentCourse1023110935访问路径与工程名相同,如:://localhost:8080/StudentCourse1023110935/包命名标准*.entity实体类*.biz业务逻辑接口类*.biz.impl业务逻辑实现类*.daoDAO接口类*.dao.implDAO实现类*.web.action各个Action类尽量书写必要的文档和注释系统实现1.给工程添加Hibernate支持,建立实体类及其所对应的映射文件右击工程名StudentCourse1023110701,选择【MyEclipse】→【AddHibernateCapabilites】菜单项,出现如图6.1所示的对话框,选择Hibernate框架应用版本及所需要的类库。图6.1单击【Next】按钮,进入如图6.2所示页面。创立Hibernate配置文件hibernate.cfg.xml,将该文件放在src文件夹下。图6.2单击【Next】进入图6.3所示页面。指定hibernate数据库连接细节。图6.3单击【Next】。出现如图6.4所示页面。指定SessionFactory的位置以及类名。完成Hibernate的配置。图6.4在Myeclipse的src下新建com.cyy.entity包,用于存放与数据库对应的Java类POJO。翻开MyEclipseDatabaseExplorer视图。翻开之前的数据库连接,选择【XSCJ】【TABLE】菜单项,右击相应表,选择【HibernateReverseEngineering】菜单项,启动HibernateReverseEngineering向导,完成从已有的数据库表生成对应的Java类和相应的配置文件。实体类以及相应的配置文件:登录表:Dlb.javapublicclassDlbimplementsjava.io.Serializable{privateIntegerid;privateStringxh;privateStringkl;中间省略set和get方法}<hibernate-mapping><classname="com.cyy.entity.Dlb"table="dlb"catalog="sc"><idname="id"type="java.lang.Integer"><columnname="id"/><generatorclass="native"/></id><propertyname="xh"type="java.lang.String"><columnname="xh"length="6"not-null="true"/></property><propertyname="kl"type="java.lang.String"><columnname="kl"length="20"not-null="true"/></property></class></hibernate-mapping>学生表:Xsb.javapublicclassXsbimplementsjava.io.Serializable{privateStringxh;privateStringxm;privateStringxb;privateTimestampcssj;privateIntegerzyId;privateIntegerzxf;privateStringbz;privateStringzp;privateZybzyb;privateSetkch=newHashSet();省略set和get方法}<hibernate-mapping><classname="com.cyy.entity.Xsb"table="xsb"catalog="sc"><idname="xh"type="java.lang.String"><columnname="XH"length="6"/><generatorclass="assigned"/></id><propertyname="xm"type="java.lang.String"><columnname="XM"length="8"not-null="true"/></property><propertyname="xb"type="java.lang.String"><columnname="XB"not-null="true"/></property><propertyname="cssj"type="java.sql.Timestamp"><columnname="CSSJ"length="19"/></property><propertyname="zyId"type="java.lang.Integer"><columnname="ZY_ID"not-null="true"/></property><propertyname="zxf"type="java.lang.Integer"><columnname="ZXF"/></property><propertyname="bz"type="java.lang.String"><columnname="BZ"/></property><propertyname="zp"type="java.lang.String"><columnname="ZP"/></property><many-to-onename="zyb"class="Zyb"column="zy_id"cascade="all"></many-to-one><setname="kch"table="xs_kcb"cascade="all"><keycolumn="XH"></key><many-to-manyclass="Kcb"column="kch"></many-to-many></set></class></hibernate-mapping>课程表:Kcb.javapublicclassKcbimplementsjava.io.Serializable{privateStringkch;privateStringkcm;privateShortkxxq;privateIntegerxs;privateIntegerxf;privateSetxss=newHashSet();省略set和get方法}<hibernate-mapping><classname="com.cyy.entity.Kcb"table="kcb"catalog="sc"><idname="kch"type="java.lang.String"><columnname="kch"length="3"/><generatorclass="assigned"/></id><propertyname="kcm"type="java.lang.String"><columnname="kcm"length="12"/></property><propertyname="kxxq"type="java.lang.Short"><columnname="kxxq"/></property><propertyname="xs"type="java.lang.Integer"><columnname="xs"/></property><propertyname="xf"type="java.lang.Integer"><columnname="xf"/></property><setname="xss"table="xs_kcb"><keycolumn="kch"></key><many-to-manycolumn="XH"class="com.c"></many-to-many></set></class></hibernate-mapping>专业表:Zyb.javapublicclassZybimplementsjava.io.Serializable{privateIntegerid;privateStringzym;privateIntegerrs;privateStringfdy;省略set和get方法}<hibernate-mapping><classname="com.cyy.entity.Zyb"table="zyb"catalog="sc"><idname="id"type="java.lang.Integer"><columnname="id"/><generatorclass="assigned"/></id><propertyname="zym"type="java.lang.String"><columnname="zym"length="12"not-null="true"/></property><propertyname="rs"type="java.lang.Integer"><columnname="rs"/></property><propertyname="fdy"type="java.lang.String"><columnname="fdy"length="8"/></property></class></hibernate-mapping>2.DAO层的设计与实现2.1DAO接口登录接口:DlDAO.javapublicinterfaceDlDAO{publicDlbcheckLogin(Stringxh,Stringkl);}学生接口:XsDAO.javapublicinterfaceXsDAO{publicXsbselestInfoByXh(Stringxh);publicvoidupdateInfo(Xsbx);}课程接口:KcDAO.javapublicinterfaceKcDAO{publicList<Kcb>getAll();publicKcbgetOneById(Stringkch);}专业接口:ZyDAO.javapublicinterfaceZyDAO{publicZybgetZyb(intid);publicList<Zyb>getAll();}2.2DAO实现类登录接口的实现类:DlDaoImpl.javapublicclassDlDaoImplimplementsDlDAO{publicDlbcheckLogin(Stringxh,Stringkl){ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=null;try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromDlbwherexh=?andkl=?"); query.setParameter(0,xh); query.setParameter(1,kl); query.setMaxResults(1); Dlbdlb=(Dlb)query.uniqueResult(); txmit();if(dlb!=null){returndlb; }returnnull; }catch(Exceptione){ e.printStackTrace();returnnull; } }}学生接口实现类:XsDaoImpl.javapublicclassXsDaoImplimplementsXsDAO{publicXsbselestInfoByXh(Stringxh){ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=null;try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromXsbasxwherex.xh=?"); query.setParameter(0,xh); query.setMaxResults(1); Xsbx=(Xsb)query.uniqueResult();returnx; }catch(Exceptione){ e.printStackTrace();returnnull; } }publicvoidupdateInfo(Xsbx){ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=null;try{ tx=session.beginTransaction(); session.update(x); txmit(); HibernateSessionFactory.closeSession(); }catch(Exceptione){if(null!=tx) tx.rollback(); e.printStackTrace(); } }}课程接口实现类:KcDao.javapublicclassKcDaoImplimplementsKcDAO{publicList<Kcb>getAll(){ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=null;try{ tx=session.beginTransaction(); List<Kcb>list=session.createQuery("fromKcborderbykch").list(); session.clear();returnlist; }catch(Exceptione){ e.printStackTrace();returnnull; } }publicKcbgetOneById(Stringkch){ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=null;try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromKcbwherekch=?"); query.setParameter(0,kch); query.setMaxResults(1); Kcbk=(Kcb)query.uniqueResult(); session.clear();returnk; }catch(Exceptione){ e.printStackTrace();returnnull; } }}专业接口实现类:ZyDaoImpl.javapublicclassZyDaoImplimplementsZyDAO{publicList<Zyb>getAll(){try{ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=session.beginTransaction();Listlist=session.createQuery("fromZyb").list(); txmit(); HibernateSessionFactory.closeSession();returnlist; }catch(Exceptione){ e.printStackTrace(); }returnnull; }publicZybgetZyb(intid){try{ Sessionsession=HibernateSessionFactory.getSession(); Transactiontx=session.beginTransaction(); Queryquery=session.createQuery("fromZybwhereid=?"); query.setParameter(0,id); query.setMaxResults(1); Zybzyb=(Zyb)query.uniqueResult(); txmit(); HibernateSessionFactory.closeSession();returnzyb; }catch(Exceptione){ e.printStackTrace(); }returnnull; }}添加struts支持右击工程,【MyEclipse】【AddStrutsCapabilities】,进入如图6.5所示的页面。图6.5单击Next,如图6.6所示。图6.6完成添加struts支持的向导。3.1Action登录actionLoginAction.javapublicclassLoginActionextendsActionSupport{privateDlbdlb;privateDlDAOdldao;publicDlDAOgetDldao(){returndldao; }publicvoidsetDldao(DlDAOdldao){this.dldao=dldao; }publicDlbgetDlb(){returndlb; }publicvoidsetDlb(Dlbdlb){this.dlb=dlb; }publicStringexecute()throwsException{ Dlbd=dldao.checkLogin(dlb.getXh(),dlb.getKl()); System.out.println(d);if(d!=null){ Mapsession=ActionContext.getContext().getSession(); session.put("user",d);returnSUCCESS; }else{returnERROR; } }}获得学生当前个人信息GetXsInfoAction.javapublicclassGetXsInfoActionextendsActionSupport{privateXsDAOxsdao;privateXsbxs;privateKcbkc;privateZybzyb;publicXsDAOgetXsdao(){returnxsdao; }publicvoidsetXsdao(XsDAOxsdao){this.xsdao=xsdao; }publicXsbgetXs(){returnxs; }publicvoidsetXs(Xsbxs){this.xs=xs; }publicKcbgetKc(){returnkc; }publicvoidsetKc(Kcbkc){this.kc=kc; }publicZybgetZyb(){returnzyb; }publicvoidsetZyb(Zybzyb){this.zyb=zyb; }publicStringexecute()throwsException{Mapsession=ActionContext.getContext().getSession(); Dlbdlb=(Dlb)session.get("user");XsDAOxd=newXsDaoImpl(); Xsbxs=xd.selestInfoByXh(dlb.getXh());Maprequest=(Map)ActionContext.getContext().get("request"); request.put("xsinfo",xs);returnSUCCESS; }}修改学生信息UpdateXsInfo.javapublicclassUpdateXsInfoActionextendsActionSupport{privateXsbxs; XsDAOxsdao; publicXsDAOgetXsdao(){returnxsdao; }publicvoidsetXsdao(XsDAOxsdao){this.xsdao=xsdao; }publicXsbgetXs(){returnxs; }publicvoidsetXs(Xsbxs){this.xs=xs; }publicStringupdate()throwsException{ Mapsession=ActionContext.getContext().getSession(); Dlbd=(Dlb)session.get("user"); Xsbxsb=xsdao.selestInfoByXh(d.getXh()); xsb.setXm(xs.getXm()); System.out.println(xs.getXm()); xsb.setCssj(xs.getCssj()); xsb.setBz(xs.getBz()); xsb.setXb(xs.getXb()); xsdao.updateInfo(xsb);returnSUCCESS;}}获得学生选修的课程GetXkAction.javapublicclassGetXkActionextendsActionSupport{ XsDAOxsdao;publicXsDAOgetXsdao(){returnxsdao; }publicvoidsetXsdao(XsDAOxsdao){this.xsdao=xsdao; }publicStringgetXKInfo()throwsException{ Mapsession=ActionContext.getContext().getSession(); Dlbdlb=(Dlb)session.get("user"); Stringxh=dlb.getXh(); Xsbxsb=xsdao.selestInfoByXh(xh);Setlist=xsb.getKch(); System.out.println(list);Maprequest=(Map)ActionContext.getContext().get("request"); request.put("list",list);returnSUCCESS;}}退选课程DeleteXkAction.javapublicclassDeleteXkActionextendsActionSupport{privateKcbkc;privateXsDAOxsdao;publicKcbgetKc(){returnkc; }publicvoidsetKc(Kcbkc){this.kc=kc; }privateStringkch;publicStringgetKch(){returnkch; }publicvoidsetKch(Stringkch){this.kch=kch; }publicXsDAOgetXsdao(){returnxsdao; }publicvoidsetXsdao(XsDAOxsdao){this.xsdao=xsdao; }publicStringdeleteKC()throwsException{ Mapsession=ActionContext.getContext().getSession(); Maprequest=(Map)ActionContext.getContext().get("request"); Dlbdlb=(Dlb)session.get("user"); Stringxh=dlb.getXh(); Xsbs1=xsdao.selestInfoByXh(xh); Set<Kcb>list=s1.getKch(); System.out.println(list); Iteratorit=list.iterator();while(it.hasNext()){ Kcbkc=(Kcb)it.next();if(kch.equals(kc.getKch())){ it.remove(); } }s1.setKch(list);request.put("list",list);xsdao.updateInfo(s1);returnSUCCESS;}}所有课程信息AllKcAction.javapublicclassAllKcActionextendsActionSupport{ KcDAOkcdao;publicStringexecute()throwsException{ Listlist=kcdao.getAll(); Maprequest=(Map)ActionContext.getContext().get("request"); request.put("list",list);returnSUCCESS; }publicKcDAOgetKcdao(){returnkcdao; }publicvoidsetKcdao(KcDAOkcdao){this.kcdao=kcdao; }}选定课程SelectKcAction.javapublicStringselectKC()throwsException{ Mapsession=ActionContext.getContext().getSession(); Dlbdlb=(Dlb)session.get("user"); Stringxh=dlb.getXh();Xsbxs=xsdao.selestInfoByXh(xh);Setlist=xs.getKch();Iteratoritem=list.iterator();while(item.hasNext()){ Kcbkc=(Kcb)item.next();if(kch.equals(kc.getKch())){returnERROR; }}KcDAOkcdao=newKcDaoImpl();Kcbk=kcdao.getOneById(kch);System.out.println(k.getKcm());list.add(k);xs.setKch(list);xsdao.updateInfo(xs);returnSUCCESS; }}3.2配置文件struts.xml<struts><constantname="struts.objectFactory"value="spring"></constant> <constantname="struts.i18n.encoding"value="gbk"></constant><packagename="struts"extends="struts-default"namespace="/"><actionname="login"class="login"><resultname="success">/index.jsp</result><resultname="error">/login.jsp</result></action><actionname="xsinfoaction"class="xsinfo"><resultname="success">/selectXsInfo.jsp</result></action><actionname="updateXsaction"class="update"method="update"><resultname="success">updateXsInfoSuccess.jsp</result></action><actionname="select"class="selectCourse"method="selectKC"><resultname="success">/selectSuccess.jsp</result></action><actionname="deletecourse"class="deleteCourse"method="deleteKC"><resultname="success">/deleteXsCourseSuccess.jsp</result></action><actionname="allcourse"class="AllCourse"><resultname="success">/showAllCourse.jsp</result></action><actionname="xkAction"class="xkaction"method="getXKInfo"><resultname="success">/showXsCourse.jsp</result></action></package></struts>添加spring支持右击工程,【MyEclipse】【AddSpringCapabilities】,进入如图6.7所示的页面。图6.7单击完成即可。4.1Spring配置文件applicationContext.xml<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><propertyname="configLocation"><value>classpath:hibernate.cfg.xml</value></property></bean><!--学生操作类--><beanid="dldao"class="com.cyy.dao.impl.DlDaoImpl"></bean><beanid="login"class="com.cyy.web.action.LoginAction"><propertyname="dldao"ref="dldao"></property></bean><beanid="xsdao"class="com.cyy.dao.impl.XsDaoImpl"></bean><beanid="xsinfo"class="com.cyy.web.action.GetXsInfoAction"><propertyname="xsdao"ref="xsdao"></property></bean><beanid="update"class="com.cyy.web.action.UpdateXsInfoAction"><propertyname="xsdao"ref="xsdao"></property></bean><beanid="xkaction"class="com.cyy.web.action.GetXkAction"><propertyname="xsdao"ref="xsdao"></property></bean><beanid="kcdao"class="com.cyy.dao.impl.KcDaoImpl"></bean><beanid="AllCourse"class="com.cyy.web.action.AllKcAction"><propertyname="kcdao"ref="kcdao"></property></bean><beanid="deleteCourse"class="com.cyy.web.action.DeleteXkAction"><propertyname="xsdao"ref="xsdao"></property></bean><beanid="selectCourse"class="com.cyy.web.action.SelectKcAction"><propertyname="xsdao"ref="xsdao"></property></bean></beans>5添加struts-spring插件工程上右击-->构建路径-->添加库-->选择“MyEclipseLibrary〞库==>翻开添加库界面,如图6.8选择后,确定。图6.86web.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.5" xmlns="://java.sun/xml/ns/javaee" xmlns:xsi=":///2001/XMLSchema-instance" xsi:schemaLocation= ://java.sun/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value></context-param><!--实例化spring容器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter> <filter-name>struts2</filter-name> <filter-class> </filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping></web-app>7页面设计7.1登录页面login.jsp主要代码:<s:formname="loginForm"method="post"action="login.action">帐号<inputname="dlb.xh"type="text">密码<inputname="dlb.kl"type="password"><s:submitvalue="登录"></s:submit><s:resetvalue="重置"></s:reset></s:form>截图:7.2主页index.jsp页面超链接:<ahref=〞xsinfoaction〞>查询个人信息</a><ahref=〞updateXsInfo.jsp〞>修改个人信息</a><ahref=〞xkAction〞>个人选课情况</a><ahref=〞allcourse〞>所有课程信息</a>截图:7.3查询个人信息页面selectXsInfo.jsp主要代码:<s:setname="xs"value="%{#request.xsinfo}"></s:set> 照片:<imgsrc="/StudentCourse1023110701/images/<s:propertyvalue="%{#xs.zp}"/>"width="50"height="50"/>姓名:<s:propertyvalue="%{#xs.xm}"/>学号:<s:propertyvalue="%{#xs.xh}"/>性别:<s:propertyvalue="%{#xs.xb}"/>出生时间:<s:propertyvalue="%{#xs.cssj}"/>备注:<s:propertyvalue="%{#xs.bz}"/> 专业:<s:propertyvalue="%{#xs.zyb.zym}"/> 辅导员:<s:propertyvalue="%{#xs.zyb.fdy}"/> 总学分:<s:propertyvalue="%{#xs.zxf}"/>截图:7.4修改个人信息updateXsInfo.jsp<s:formmethod="post"action="updateXsaction">当前登录的用户

温馨提示

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

评论

0/150

提交评论