课程设计报告书
课程名称设计题目专业班级学 号 姓 名 指导教师 java EE课程设计 学生个人成绩管理系统 国际专2010
************
吴威威 王峰
2012年 11 月
目 录
1 设计时间 ...................................................................... 3 2 设计目的 ...................................................................... 3 3 设计任务 ...................................................................... 3 3.1任务说明 ............................................................... 3 3.2系统目标 ............................................................... 3 3.3功能要求 ............................................................... 3 4 设计内容 ...................................................................... 4 4.1界面构建 ............................................................... 4 4.2详细设计 ............................................................... 4 4.2.1流程设计 ....................................................... 4 4.2.2数据库设计(sqlserver2000) ...................... 5 4.2.3运行调试 ....................................................... 6 4.2.4主要源代码 .................................................... 8 5总结与展望 ................................................................. 19
1 设计时间 2012.12.12----2012.12.18 2 设计目的 本程序用于用户对学生成绩排名进行简单的管理,本程序针对于对安全系数要求不高,操作不是很复杂的小型客户开发。本程序可以实现对学生信息的添加、查看、删除、成绩排名等操作,同时支持查看所有课程信息,功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作。 同时,本程序对系统要求配置较低,运行速度快,而却对数据库管理要求较低。本程序数据库采用sqlserver2000进行数据存储,该数据库可实现关系较为简单的数据管理。 3 设计任务 3.1任务说明 (一)必备功能说明: (1)功能描述:用户以合法身份登录系统后,才能进行所有操作;登录系统时,有两种权限:管理员权限和学生用户权限。管理员用户可以查看所有学生的成绩信息(假设只有一门课程),以及对所有学生的成绩进行排名;学生用户可以添加、查看和删除自己的成绩信息。 (2)添加学生成绩:学生添加成绩信息(包括学号、姓名、成绩); (3)查看学生成绩:管理员可以查看所有学生的成绩,学生用户只能查看自己的成绩; (4)删除成绩:学生可以删除自己的成绩; (5)对成绩排名:管理员对所有学生成绩进行排名。 (二)开发语言与开发环境: MyEclipse、Java、数据库 3.2系统目标 软件开发的意图便于用户对学生的管理,方便查看学生的情况。如用户对学生基本信息进行添加、查看、删除、成绩排名等。 3.3功能要求 1学生添加自己课程成绩的功能 2管理员查看所有学生课程成绩的功能 3学生查看自己课程成绩的功能
4学生删除学生课程成绩的功能 5 管理员对成绩排名的功能 4 设计内容 4.1界面构建 1、为了便于各种操作,软件采用多页面的模式。用户可在不同网页进行相应操作(录入、查询、修改、删除、显示所有信息)。 2、主页面(显示所有信息页面)是用户进行各种操作的平台,具体操作在各个独立功能页面中完成。 3、主页面的主要功能位于操作表列中,为进入各个功能窗口的唯一通道。 4、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户。如当录入成功或删除成功,弹出成功以及相应的简明信息提示当,当录入、删除失败以及输入不当时,弹出错误以及简单的错误原因提示用户重新操作。 5、页面布局尽量合理,各组件位置分布均匀美观。 4.2详细设计 4.2.1 流程设计 本系统采用struts2框架,用到了和数据库有关的最基本的方法定义,包括增删改查等。主要Action类与页面的设计如下: 包名 类名 AddStudentAction.java DeleteStudentAction.java com.actions LoginAction.java ModifyConfirmAction.java ModifyStudentAction.java com.bean Students.java 功能 添加信息 删除信息 登录验证 确定修改 修改信息 Bean类,包含所有属性和getters及setters
数据库连接类,包含所有和数据库有com.db DB.java 关的方法定义 表1:包与类定义 页面名称 login.jsp showStudents.jsp modify.jsp Suc.jsp addStudent.jsp 作用 登录页面 主要操作界面,显示所有信息和所有操作控件 修改页面 修改成功页面 添加页面 表2:页面设计 4.2.2数据库设计(sqlserver2000) 表列名 username password 类型 varchar varchar 表3:管理员表设计login 长度 50 50
图1.管理员表login 4.2.3运行调试 图2.登录前页面login.jsp 图3.登录错误界面login.jsp
图4.登录成功页面showStudents.jsp 图5.添加学生信息modify.jsp 图6.添加学生信息成功页面Suc.jsp 图7.删除学生信息deleteStudent.jsp
图8.对成绩进行排序 4.2.4主要源代码 1 与数据库的连接 package com.dujie.util; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class ConnectionUtil { private static String driver; private static String url; private static String user; private static String password;
static { try { Properties pro = new Properties(); InputStream fis = Connection.class.getClassLoader() .getResourceAsStream(\"jdbc.properties\"); pro.load(fis); //连接Oracle pro.load(new FileInputStream(\"jdbc_oracle.properties\")); //连接MySql pro.load(new FileInputStream(\"jdbc_mysql.properties\")); pro.load(new FileInputStream(\"../QueryScore/jdbc_mysql.properties\")); driver = pro.getProperty(\"jdbc.driver\"); url = pro.getProperty(\"jdbc.url\"); user = pro.getProperty(\"jdbc.user\"); password = pro.getProperty(\"jdbc.password\"); driver = \"com.mysql.jdbc.Driver\"; url = \"jdbc:mysql://127.0.0.1:3306/queryscore\"; user = \"sa\"; password = \"sa\"; Class.forName(driver); // // // // // // } catch (Exception e) { } e.printStackTrace(); } public static Connection getConnection() throws SQLException { } public static void main(String[] args) throws SQLException { return DriverManager.getConnection(url, user, password);
} } Connection con = ConnectionUtil.getConnection(); System.out.println(con.isClosed()); 2 对数据库内的数据查询 package com.dujie.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import com.dujie.bean.Student; import com.dujie.util.ConnectionUtil; public class StudentDAO { private static final String SQL_GETBYLOGIN = \"select * from users where loginname = ? and loginpassword = ?\"; private static final String SQL_CHANGESCORE = \"update users set score = ? where id = ?\"; private static final String SQL_GETBYID = \"select * from users where id = ?\"; private static final String SQL_GETALL = \"select * from users where status = 0 and score > 0\"; private static final String SQl_SORT = \"select * from users where status = 0 and score > 0 order by score desc\"; public ArrayList } return stuList; } catch (SQLException e) { e.printStackTrace(); throw e; }finally{ rs.close(); ps.close(); con.close(); } public ArrayList ResultSet rs = null; try { con = ConnectionUtil.getConnection(); ps = con.prepareStatement(SQL_GETBYLOGIN); ps.setString(1,loginName); ps.setString(2,loginPwd); rs = ps.executeQuery(); while(rs.next()){ Student stu = new Student(); stu.setId(rs.getInt(\"id\")); stu.setName(rs.getString(\"name\")); stu.setScore(rs.getInt(\"score\")); stu.setStuid(rs.getInt(\"stuid\")); return stu; } return null; } catch (SQLException e) { e.printStackTrace(); throw e; }finally{ rs.close(); ps.close(); con.close(); } } public boolean changeScore(int id,int score) throws SQLException{ Connection con = null; PreparedStatement ps = null; try { con = ConnectionUtil.getConnection(); ps = con.prepareStatement(SQL_CHANGESCORE); ps.setInt(1,score); ps.setInt(2,id); int result = ps.executeUpdate(); if(result > 0){ return true; }else{ return false; } } catch (SQLException e) { e.printStackTrace(); throw e; } }finally{ ps.close(); con.close(); } } public Student getById(int id) throws SQLException{ Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = ConnectionUtil.getConnection(); ps = con.prepareStatement(SQL_GETBYID); ps.setInt(1,id); rs = ps.executeQuery(); while(rs.next()){ Student stu = new Student(); stu.setId(rs.getInt(\"id\")); stu.setName(rs.getString(\"name\")); stu.setScore(rs.getInt(\"score\")); stu.setStuid(rs.getInt(\"stuid\")); return stu; } return null; } catch (SQLException e) { e.printStackTrace(); throw e; }finally{ rs.close(); ps.close(); con.close(); } } 3用户登录页面的实现 package com.dujie.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.dujie.util.ConnectionUtil; public class LoginDAO { private static final String SQL_CHECK = \"select * from users where loginname = ? and loginpassword = ?\"; public int loginCheck(String loginName,String loginPwd) throws Exception { } Connection con = null; PreparedStatement ps = null; ResultSet rs = null; int result = -1; try { con = ConnectionUtil.getConnection(); ps = con.prepareStatement(SQL_CHECK); ps.setString(1,loginName); ps.setString(2,loginPwd); rs = ps.executeQuery(); while(rs.next()){ } return result; result = rs.getInt(\"status\"); return result; } catch (SQLException e) { e.printStackTrace(); throw e; }finally{ } rs.close(); ps.close(); con.close(); } public static void main(String[] args) throws Exception { } LoginDAO login = new LoginDAO(); System.out.println(login.loginCheck(\"123\4JavaBean的实现 代表用户登录信息的JavaBean类的类名为“Student”该类包含5个私有属性“id”“name”“score”“stuid”“Id”及其每个属性的set,get方法。它的实现代码如下: package com.dujie.bean; public class Student { private int id; private String name; private int score; private int stuid; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public int getStuid() { return stuid; } public void setStuid(int stuid) { this.stuid = stuid; } } 5 Action实现 Student Action: package com.dujie.action; import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.dujie.bean.Student; import com.dujie.dao.StudentDAO; public class StudentAction { private String score; public String changeScore() throws NumberFormatException, SQLException{ HttpServletRequest request = ServletActionContext.getRequest(); int id = (Integer)request.getSession().getAttribute(\"id\"); StudentDAO stuDAO = new StudentDAO(); System.out.println(score+\":\"+id); stuDAO.changeScore(id, Integer.parseInt(this.score)); return \"changeScore\"; } public String sort() throws SQLException{ StudentDAO stuDAO = new StudentDAO(); HttpServletRequest request = ServletActionContext.getRequest(); request.getSession().setAttribute(\"list\ return \"sort\"; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } } Login action package com.dujie.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.dujie.bean.Student; import com.dujie.dao.LoginDAO; import com.dujie.dao.StudentDAO; public class LoginAction { private String loginName; private String password; public String execute() throws Exception{ LoginDAO loginDAO = new LoginDAO(); StudentDAO stuDAO = new StudentDAO(); System.out.println(this.loginName+\":\"+this.password); int state = loginDAO.loginCheck(this.loginName, this.password); if(state == 1){ HttpServletRequest request = ServletActionContext.getRequest(); request.getSession().setAttribute(\"list\ return \"admin\"; }else if(state == 0){ Student stu = stuDAO.getByLogin(loginName, password); HttpServletRequest request = ServletActionContext.getRequest(); request.getSession().setAttribute(\"id\ return \"student\"; }else{ return \"failed\"; } } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 6:struts.xml配置: http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"> 成绩评定 成绩 教师签字 因篇幅问题不能全部显示,请点此查看更多更全内容