学生个人成绩管理系统的课程设计_第1页
学生个人成绩管理系统的课程设计_第2页
学生个人成绩管理系统的课程设计_第3页
学生个人成绩管理系统的课程设计_第4页
学生个人成绩管理系统的课程设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

PAGE软件学院课程设计报告书课程名称JAVAEE与中间件设计题目学生个人成绩管理系统专业班级软件学号姓名指导教师20年1月目录1设计时间 12设计目的 13设计任务 14设计内容 14.1需求分析 14.1.1总体目标 14.1.2具体目标 14.1.3数据建模(ER图) 24.1.4系统功能建模(数据流程图) 24.1.5数据字典 34.2总体设计 44.2.1系统层次图 44.2.2数据库设计 54.3详细设计 64.3.1模块功能设计 64.4运行与测试 74.4.1连接数据库 74.4.2系统界面的实现 74.4.3系统主要功能的实现 105总结与展望 18参考文献 19成绩评定 191设计时间2013年1月21日2013年1月27日2设计目的JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求同学们对课程中所学习到的知识综合运用,开发有一定规模的JavaWeb程序。3设计任务(一)必备功能说明:(1)功能描述:用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看、修改和删除自己的成绩信息;计算各课程的平均分。(2)添加学生成绩:学生添加成绩信息(包括学号、姓名、课程名称、成绩);(3)查看学生成绩:查看所有课程的成绩;(4)删除成绩:学生可以删除自己的成绩;(5)计算成绩平均分:计算出所有成绩的平均分(二)开发语言与开发环境:MyEclipse、Java、数据库(sqlserver2000、mysql、oracle等任选一种)4设计内容4.1需求分析4.1.1总体目标(1)获得登陆界面传递的权限信息,设置用户是否可以使用(课程信息修改和删除,成绩信息录入、修改和删除)这些操作.(2)进入学生成绩管理主窗口,设置等待操作状态4.1.2具体目标学生个人成绩管理系统需要实现以下功能:学生信息管理:用于对学生信息的录入,录入后对信息进行查询、修改或删除操作。课程信息管理:用于对课程信息的操作,包括录入课程信息,及对课程的查询、修改和删除操作。成绩信息管理:用于对成绩信息的管理操作,对学生课程成绩的录入,查询、修改及删除。统计功能管理:能够把所有学生的平均成绩信息和各科平均成绩信息按班级统计。还有用户的登录,普通用户只能查询,不能做修改和删除操作,只有管理员才能做修改和删除并所有的操作。本系统性能力求易于使用,具体有较高的扩展性和可维护性。4.1.3数据建模(ER图)学生学生课程成绩学习取得性别姓名学号课程号课程名院系图4-1学生成绩管理系统ER图4.1.4系统功能建模(数据流程图)E1管理员P0学生成绩管理系统E1管理员P0学生成绩管理系统E2普通用户F1学生信息F5学生信息F2学生信息F3课程信息F6课程信息F4课程信息图4-2学生成绩管理系统顶层数据流图E2普通E2普通用户E1管理员P1录入学生信息课程信息P2查询学生信息课程信息F7P2查询学生信息课程信息F8课程信息F9学生信息F10学生信息课程信息F11课程信息D1学生信息库D1学生信息库D2课程信息库D2课程信息库P5更新学生信息课程信息P3删除学生信息课程信息P5更新学生信息课程信息P3删除学生信息课程信息P4添加学生信息课程信息图4-3学生成绩管理系统一层数据流图4.1.5数据字典数据字典是对数据流图的解释和说明,包含的内容如下:(1)数据元素(数据流分量)。数据元素是不可再分的数据单位,一般而言,包括如下内容:数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系}。其中,后两项定义了数据的完整性约束条件,用于数据校验。名字:学生信息库名字:学生信息库别名:描述:一个学生相关的信息数据类型:字符型、数值型定义:学生信息=学号+姓名+性别+院系(2)数据流。是数据结构在系统内传输的路径。对数据流的描述通常包括如下内容:{数据流名,说明,编号,数据流来源,数据流去向,组成(数据结构)}名字:添加、更改、删除信息名字:添加、更改、删除信息描述:确保学生信息的准确编号:F1组成:姓名、学号、学院、性别、课程信息、用户密码名字:课程的统计、搜索描述:查询大学生课程的信息编号:F2组成:姓名、学号、学院、性别、统计各科成绩平均分、统计各个学生成绩平均分名字:课程的统计、搜索描述:查询大学生课程的信息编号:F2组成:姓名、学号、学院、性别、统计各科成绩平均分、统计各个学生成绩平均分名字:查询(选定条件查询)描述:查询了解大学生学生信息信息、课程信息的情况编号:F3组成:学号号、姓名、性别、院系、课程名称、成绩、用户密码名字:查询(选定条件查询)描述:查询了解大学生学生信息信息、课程信息的情况编号:F3组成:学号号、姓名、性别、院系、课程名称、成绩、用户密码名字:权限分配描述:确保学籍档案的安全性,任何人不得随意的更改或删除信息编号:F4组成:用户密码、用户的身份验证、姓名名字:权限分配描述:确保学籍档案的安全性,任何人不得随意的更改或删除信息编号:F4组成:用户密码、用户的身份验证、姓名(3)数据存储。数据存储是数据结构停留或保存的地方。也是数据流的来源和去向之一。可以是手工文档或手工凭单,也可以是计算及文档。一般而言,应包括如下内容:{数据存储名,说明,编号,输入的数据流,输出的数据流,组成(数据结构),数据量,存取频度,存取方式}。名字:学生信息库名字:学生信息库描述:一个学生的基本信息编号:D1组成:姓名、学号、性别、院系、课程名称、成绩名字:课程信息库名字:课程信息库描述:有关学生课程的信息编号:D2组成:姓名、学号、院系、课程名称、成绩名字:用户信息名字:用户信息描述:有关用户的基本信息编号:D5组成:姓名、身份证号、登陆密码、修改密码(4)数据处理。处理过程的具体处理逻辑通常在详细设计过程中用判定表或判定树来描述。在数据字典中,只需描述处理过程的说明性信息,通常包括以下内容:{处理过程名,说明,输入数据流,输出数据流,处理}名字:学生信息课程信息录入管理描述:一个学生基本信息以及课程信息的输入编号:P1输入/输出数据流:学生的基本信息及课程信息名字:学生信息课程信息录入管理描述:一个学生基本信息以及课程信息的输入编号:P1输入/输出数据流:学生的基本信息及课程信息名字:学生信息及课程信息查询管理描述:一个学生所有相关的信息编号:P2名字:学生信息及课程信息查询管理描述:一个学生所有相关的信息编号:P2输入/输出数据流:查询信息名字:学生信息删除管理描述:有关学生的信息情况编号:P3输入/输出数据流:学生信息、课程信息名字:学生信息添加管理描述:一个学生有关基本的信息编号:P4输入/输出数据流:学生信息、课程信息名字:学生信息更新管理描述:一个学生有关基本的信息编号:P5输入/输出数据流:学生信息、课程信息名字:用户管理名字:用户管理描述:对录入和使用学生学籍管理系统的用户信息进行权限的分配编号:P6输入/输出数据流:用户名、密码4.2总体设计4.2.1系统层次图JavaEE的体系结构有三层:表示层、业务逻辑层和数据持久层。开发一个SSH(Struts、Hibernate、Spring)项目,要遵循这三层模式。学生成绩管理系统学生成绩管理系统表示层业务逻辑层数据持久层图4-4系统体系结构表示层在开发阶段,一般用DAO实现与数据库的交互,进行CRUD操作,完成对底层数据库的持久化访问。这里的DAO实现类中用的了Spring整合Hibernate后提供的HibernateDaoSupport类。业务逻辑层业务逻辑组件是为控制器提供服务的,它依赖于DAO组件,是对DAO的封装,通过业务逻辑的封装,让控制器无需直接访问DAO的方法,而是调用业务逻辑的方法。数据持久层这里可以为项目添加Hibernate的开发能力。添加Spring开发能力时,已经把所需JARs全部添加进去,这里不用再添加任何类库。把Hibernate交由Spring来管理。然后生成对应的POJO类及相应的映射文件,使这5个表全部生成对应文件,也可以一次选中所有表一起生成。生成文件后要对这些文件的有些部分稍做修改,来实现它们之间的关系。4.2.2数据库设计Chart4-1UserLoginInformationChart表4-1用户登录信息表列名数据类型长度可空文字描述usernamepasswordvarcharvarchar5050NY用户名登录密码Chart4-2CourseInformationChart表4-2课程信息表列名数据类型长度可空文字描述cnocnamesnogradevarcharvarcharvarcharint5050504NYYY课程号课程名学号成绩Chart4-3StudentInformationChart表4-3学生信息表列名数据类型长度可空文字描述snonamesexyuanxivarcharvarcharvarcharvarchar50505050NYYY学号姓名性别院系Chart4-4StudentIndividualInformationChart表4-4学生个人成绩表列名数据类型长度可空文字描述snonamesexyuanxijavadbdesignjapaneseavagradevarcharvarcharvarcharvarcharintintintint505050504444NYYYYYYY学号姓名性别院系java数据库设计日语平均分数Chart4-5StudentInformationStatisticsChart表4-5课程信息统计表列名数据类型长度可空文字描述cnocnameavagradevarcharvarcharint50504NYY课程号课程名平均成绩4.3详细设计4.3.1模块功能设计Spring和Hibernate的整合,是由Spring的配置文件来管理Hibernate的配置,由Bean来实现数据库的连接,而他们的整合还提供了HibernateSupportDao类来实现DAO。又从Struts2与Spring的整合中可以看出,Struts2也把Action类的生成交给了Spring,利用Spring的依赖注入,完成业务逻辑对象的生成,这样就完成了它们3个之间的整合。JavaEE的体系结构有三层:表示层、业务逻辑层和数据持久层。开发一个SSH(Struts、Hibernate、Spring)项目,要遵循这三层模式。分别用SSH实现这样的目的:用Hibernate来完成数据的持久层应用,用Spring的Bean来管理组件(主要是DAO、业务逻辑和Struts的Action),而用Struts来完成页面的控制跳转。一个项目往往很大,在项目开发中需要一个团队而不是一个程序员来完成。这就需要整个团队协同工作,分工进行。所以面对接口编程给团队开发提供了很大的空间,只要有了这些接口,其他程序员就可以直接调用其中的方法,不管这个接口中的方法是如何实现的。开发一个项目,一般要先完成持久层数据连接,然后实现DAO,接着是业务逻辑,最后实现页面及控制逻辑。持久层数据domain:放置表对应的POJO类。DAOdao:放置DAO(数据访问对象)的接口,接口中的方法用来和数据库进行交互,这些方法由实现它们的类来实现。3.2.3业务逻辑及控制逻辑service:放置业务逻辑接口。接口中的方法用来处理用户请求,这些方法由实现接口的类来实现。action:放置对应的用户自定义的Action类。由Action类调用业务逻辑来处理用户请求,然后控制跳转。struts.xml:配置Action。4.4运行与测试4.4.1连接数据库publicstaticConnectiongetConnection(){ finalStringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; finalStringurl="jdbc:microsoft:sqlserver://localhost:1433;databasename=mydb"; Connectioncon=null; try{Class.forName(driver); }catch(ClassNotFoundExceptione){ System.out.println("驱动加载失败!");} try{ con=DriverManager.getConnection(url,"sa","sa"); }catch(SQLExceptione){ e.printStackTrace();} returncon; }4.4.2系统界面的实现图4-5用户登录界面图4-6运行主界面图4-7查询学生信息界面图4-8添加学生信息界面图4-9更新学生信息界面图4-10删除学生信息界面4.4.3系统主要功能实现struts.xml文件中部分代码 <actionname="login"class="action.UserAction"method="logins"> <resultname="SUCCESS">/index.jsp</result> <resultname="ERROR">/login.jsp</result> <resultname="showStudent"type="redirectAction">showStudent</result> </action><actionname="login"class="action.UserAction"method="login"> <resultname="success">/index.jsp</result> <resultname="failure">/login.jsp</result> <resultname="showStudent"type="redirectAction">showStudent</result> </action> <actionname="showStudent"class="action.StudentAction"method="showStudent"> <resultname="showStudent">/success.jsp</result> </action> <actionname="AddStudent"class="action.AddStudent"method="AddStudent"> <resultname="showStudent"type="redirectAction">showStudent</result> <resultname="failure">/Addfailure.jsp</result> </action> <actionname="DeleteStudent"class="action.DeleteStudent"method="DeleteStudent"> <resultname="showStudent"type="redirectAction">showStudent</result> <resultname="failure">/DeleteFailure.jsp</result> </action> <actionname="UpdateStudent"class="action.UpdateStudent"method="UpdateStudent"> <resultname="showStudent"type="redirectAction">showStudent</result> <resultname="failure">/UpdateFailure.jsp</result> </action>功能实现部分代码.1action层publicStringlogin(){ Useruser=newUser(); user.setUsername(username); user.setPassword(password); UserServiceuserService=newUserService(); if(userService.checkLogin(user)==true) returnSUCCESS; else returnERROR; } publicStringAddStudent(){ Students=newStudent(); s.setSno(sno); s.setName(name); s.setSex(sex); s.setYuanxi(yuanxi); s.setJava(java); s.setDbdesign(dbdesign); s.setJapanese(japanese); s.setAvagrade(avagrade); StudentServicestudentService=newStudentService(); if(studentService.AddStudent(s)) return"showStudent"; else return"failure";publicStringDeleteStudent(){ Students=newStudent(); s.setSno(sno); StudentServicestudentService=newStudentService(); if(studentService.DeleteStudent(s)) return"showStudent"; else return"failure"; }publicStringshowStudent(){ StudentServicestudentService=newStudentService(); Listlist=studentService.getStudent(); ActionContextactionContext=ActionContext.getContext(); Maprequest=(Map)actionContext.get("request"); request.put("list",list); return"showStudent";}publicStringUpdateStudent(){ Students=newStudent(); s.setSno(sno); s.setName(name); s.setSex(sex); s.setYuanxi(yuanxi); s.setJava(java); s.setDbdesign(dbdesign); s.setJapanese(japanese); s.setAvagrade(avagrade); StudentServicestudentService=newStudentService(); if(studentService.UpdateStudent(s)) return"showStudent"; else return"failure";}.1DAO层 publicListgetStudent(){ Connectioncon=DBConnection.getConnection(); Listlist=newArrayList(); try{ PreparedStatementps=con.prepareStatement("selectname,sex,yuanxi,java,dbdesign,japanese,avagradefromStudentwheresno=?"); ResultSetrs=ps.executeQuery(); while(rs.next()){ Students=newStudent(); s.setSno(rs.getString("sno")); s.setName(rs.getString("name"));s.setSex(rs.getString("sex"));s.setYuanxi(rs.getString("yuanxi"));s.setJava(rs.getInt("java"));s.setDbdesign(rs.getInt("dbdesign"));s.setJapanese(rs.getInt("japanese"));intavagrade; avagrade=(int)(rs.getInt("java")/3+rs.getInt("database")/3+rs.getInt("japanese")/3); s.setAvagrade(avagrade); list.add(s); } mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } publicbooleanAddStudent(Studentstudent){ Connectioncon=DBConnection.getConnection(); PreparedStatementps=null; intm=0; try{ ps=con.prepareStatement("insertintoStudentvalues(?,?,?,?,?,?,?)"); ps.setString(1,student.getSno()); ps.setString(2,student.getName()); ps.setString(3,student.getSex()); ps.setString(4,student.getYuanxi()); ps.setInt(5,student.getJava()); ps.setInt(6,student.getDbdesign()); ps.setInt(7,student.getJapanese()); m=ps.executeUpdate(); mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } if(m!=0){ returntrue; } else{ returnfalse; } } publicbooleanDeleteStudent(Studentstudent){ Connectioncon=DBConnection.getConnection(); intm=0; try{ PreparedStatementps=con.prepareStatement("deletefromStudentwheresno=?"); ps.setString(1,student.getSno()); m=ps.executeUpdate(); mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } if(m!=0){ returntrue; }else{ returnfalse; } } publicbooleanUpdateStudent(Studentstudent){ Connectioncon=DBConnection.getConnection(); intm=0; try{ PreparedStatementps=con.prepareStatement("updateStudentsetname=?,sex=?,yuanxi=?,java=?,dbdesign=?,japanese=?wheresno=?"); ps.setString(1,student.getName()); ps.setString(2,student.getSex()); ps.setString(3,student.getYuanxi()); ps.setInt(4,student.getJava()); ps.setInt(5,student.getDbdesign()); ps.setInt(6,student.getJapanese()); ps.setString(7,student.getSno()); m=ps.executeUpdate(); mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } if(m!=0){ returntrue; }else{ returnfalse; }publicclassUserDAO{ publicUsergetUser(Useruser){ Connectioncon=DBConnection.getConnection(); Useru=null; try{ PreparedStatementps=con.prepareStatement("select*fromuserwhereusername=?"); ps.setString(1,user.getUsername()); ResultSetrs=ps.executeQuery(); if(rs.next()){ u=newUser();//u存放的是数据库里用户信息;user存放表单里用户的信息 u.setUsername(rs.getString("username")); u.setPassword(rs.getString("password")); } mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } returnu; } }.1Service层publicListgetStudent(){ StudentDAOstudentDAO=newStudentDAO(); returnstudentDAO.getStudent(); } publicbooleanAddStudent(Students){ StudentDAOstudentDAO=newStudentDAO(); booleanstudent=studentDAO.AddStudent(s);//u数据库用户,student表单 returnstudent; } publicbooleanDeleteStudent(Students){ StudentDAOstudentDAO=newStudentDAO(); booleanstudent=studentDAO.DeleteStudent(s);//u数据库用户,student表单 returnstudent; } publicbooleanUpdateStudent(Students){ StudentDAOstudentDAO=newStudentDAO(); booleanstudent=s

温馨提示

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

评论

0/150

提交评论