课程大作业设计说明书
学生成绩管理系统
专业: 班级:
姓名: 学号: 评分: 指导教师:
一.需求分析: 我们小组的题目:学生成绩管理系统。参考凌展教务系统后,以其为模板进行模仿。
三类人员使用该系统:1.学生;2.教师;3.管理员。
1.学生
学生界面要完成的功能如下:
1,个人信息查看(包括:姓名、性别、学号、专业、出生年月、联系方式、籍贯等)
2,选修课程(在选课期间可以进行选课,选择后点击确定,数据提交到数据库)
3,课程查询( 选修课程的查询,教师评分后分数的查询,课程的学分、学时、授课老师,上课的时间、地点等)
4,密码修改(嵌在个人信息查看页面)
2.教师
教师界面要完成的功能如下:
1,个人信息查看(包括:姓名、性别、工号、职称、出生年月、联系方式、所教授课程等)
2,课程信息(所教授的课程的学分,学时,上课的时间、地点)
3,学生成绩打分(在页面输入成绩,保存至数据库,学生查询时调用)
4,密码修改(嵌在个人信息查看页面)
3.管理员
管理员界面要完成的功能如下:
1,课程信息录入(学生必修课信息的录入)
2,学生信息录入
3,教师信息录入
我负责的模块是登陆界面的跳转,学生界面的制作,数据库的创建、连接及部分调用。
界面跳转:
密码正确后跳转到各类使用人员的界面;若错误则回到界面。
学生界面的制作:
1,个人信息查看(包括:姓名、性别、学号、专业、出生年月、联系方式、籍贯等)
2,选修课程(在选课期间可以进行选课, 选择后点击确定,数据提交到数据库)
3,课程查询( 选修课程的查询,教师评分后分数的查询,课程的学分、学时、授课老师,上课的时间、地点等)
4,密码修改(嵌在个人信息查看页面)
数据库的创建、连接及部分调用:
负责建立学生表、课程表。实现界面与数据库的连接。在查询成绩时调用数据库查询教师已打分的课程;修改密码时调用原密码匹配,将新密码存入数据库。
二.概要设计: 1.模块设计:
添加学生信息学生信息管理删除学生信息修改学生信息查询学生信息删除教师信息教师信息管理添加教师信息修改教师信息查询教师信息添加课程信息学生成绩管理系统课程信息管理删除课程信息修改课程信息查询课程信息学生选课添加选课信息查询选课信息录入学生成绩查询学生信息学生成绩管理
我负责学生选课模块功能的实现,添加选课信息:在选课期间可以进行选课,选择后点击确定,数据提交到数据库。查询选课信息: 选修课程的查询,教师评分后分数的查询,课程的学分、学时、授课老师,上课的时间、地点等
2.
adminvarchar(8)varchar(20)varchar(20)ano = anoclassno = classnostudentsno varchar(8)anovarchar(3)dnovarchar(3)classno varchar(6)sname varchar(20)ssexvarchar(2)sbirth datestelvarchar(20)sid varchar(18)passwordvarchar(20)adminnoadminnamepassworddno = dnoAcademyanovarchar(3)anamevarchar(20)sno = scnoclassclassnovarchar(6)classdesc varchar(20)dno varchar(3)scnocnosnogradetnoscvarchar(6) varchar(6)varchar(8) float varchar(8)cno = cnocnocnamecredittimecoursevarchar(6) varchar(30) floatintclassno = classnocnoclassnotnotcnotcvarchar(6) varchar(6)varchar(8) varchar(6)cno = cnodepartmentdno varchar(3)anovarchar(3)dname varchar(30)ano = anotno = tnoteachertnovarchar(8)tnamevarchar(20)tsexvarchar(2)tbirth dateanovarchar(3)rank varchar(10)passwordvarchar(20) 我负责的是建立学生表,课程表2张表。
学生表以学号为主键,包含姓名、性别、学号、专业、出生年月、联系方式、籍贯等信息。
课程表以课程号为主键,包含课程的学分、学时、授课老师,上课的时间、地点等
三.详细设计: Servlet登陆:
学生StuLogin.html登录Login.jspcheckServlet成功教师TecLogin.html管理员失败AdminLogin.html 建立CheckServlet用来实现界面的跳转。
package util;
import java.io.IOException;
import java.io.PrintWriter;
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 query.AdminQuery;
import query.StuQuery;
import query.TecQuery;
import bean.Data;
public class CheckServlet extends HttpServlet {
public void doGet(HttpServletRequest throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest throws ServletException, IOException {
response.setContentType(\"text/html\");
PrintWriter out = response.getWriter();
request,
request,
HttpServletResponse response)
HttpServletResponse response)
Data data=new Data();
String user=request.getParameter(\"user\");
String password=request.getParameter(\"password\");
request.setAttribute(\"user\
request.getSession().setAttribute(\"user\
if(Integer.parseInt(request.getParameter(\"radio\"))==1)
{
StuQuery stu=new StuQuery();
if(stu.stuQuery(user, password)==1)
response.sendRedirect(\"StuLogin.html\");
else response.sendRedirect(\"login.jsp\");
}
else if(Integer.parseInt(request.getParameter(\"radio\"))==2)
{
TecQuery tec=new TecQuery();
if(tec.tecQuery(user, password)==1)
response.sendRedirect(\"TecLogin.html\");
else
response.sendRedirect(\"login.jsp\");
}
else if(Integer.parseInt(request.getParameter(\"radio\"))==3){
AdminQuery admin=new AdminQuery();
if(admin.adminQuery(user, password)==1)
response.sendRedirect(\"AdminLogin.html\");
else
response.sendRedirect(\"login.jsp\");
}
out.close();
}
登陆界面:学生的用户名及初始密码又管理员提供。密码正确跳转到学生主页面,错误则回到原界面。
图1 登录界面
学生管理界面:
修改成功查看信息StuServletStuInfo.jsp修改密码StuChange.jspStuChangeServlet修改失败查看成绩TecLogin.htmlStuGradeServletStuGrade.jsp选修课程查看已选课程SelectCourseServletStuCourse.jspStuCourseServletCheckCourse.jsp 主界面由5个jsp页面组成,右边list.jsp指导学生登陆后的操作。
1,个人信息查看(包括:姓名、性别、学号、专业、出生年月、联系方式、籍贯等)
2,选修课程(在选课期间可以进行选课,选择后点击确定,数据提交到数据库)
3,课程查询( 选修课程的查询,教师评分后分数的查询,课程的学分、学时、授课老师,上课的时间、地点等)
4,密码修改(嵌在个人信息查看页面)
主界面:
图2 学生模块主界面
个人信息查看(包括:姓名、性别、学号、专业、出生年月、联系方式、籍贯等)
图3 学生个人信息查询界面
选修课程(在选课期间可以进行选课,选择后点击确定,数据提交到数据库)
图4 学生选课界面
课程查询( 选修课程的查询,教师评分后分数的查询,课程的学分、学时、授课老师,上课的时间、地点等)
图5 学生课程查询界面
密码修改:
个人能力问题,没有做出来。当时的构想是建立一个Servlet,将原密码与数据库中的密码相比较,并且两次输入新密码,比较新密码相同后,将新密码替换数据库中原密码。碰到的问题是:原密码与数据库中的相同,且新输入的密码2次一致后跳转出现了问题。没有做出这个“”且“”的关系。
数据库的设计:
学生表
学生表包含学号,学生名,密码。学号作为登陆账号,学生其余信息由管理员录入。
StudentDao
package dao;
import java.sql.*;
import dto.StudentDto;
import util.DBConn;
public class StudentDao {
DBConn db;
Connection conn;
PreparedStatement pstmt;
StudentDto sdto;
ResultSet rs;
Statement stmt;
public StudentDao(){
db=new DBConn();
conn=db.getConnection();
}
public StudentDao(StudentDto sdto){
this.sdto=sdto;
db=new DBConn();
conn=db.getConnection();
}
public ResultSet checkStudent(){
try{
pstmt=conn.prepareStatement(\"select * from 学生 where 学号=? and 密码=?\");
pstmt.setString(1,sdto.getSno());
pstmt.setString(2,sdto.getPassword());
rs=pstmt.executeQuery();
return rs;
} catch(Exception e){
e.printStackTrace();
return null;
}
}
public StudentDto findBySno(){
String Sno=sdto.getSno();
String sql = \" select * from 学生 where 学号 = '\" + Sno + \"'\";
try {
stmt = conn.createStatement();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(sql);
try {
rs = stmt.executeQuery(sql);
if (rs.next()) {
sdto.setSno(rs.getString(\"学号\"));
sdto.setSname(rs.getString(\"学生名\"));
sdto.setPassword(rs.getString(\"密码\"));
sdto.setSex(rs.getString(\"性别\"));
}
return sdto;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
StudentDto
package dto;
public class StudentDto {
private String Sno;
private String Sname;
private String password;
private String Sex;
public String getSno() {
return Sno;
}
public void setSno(String sno) {
Sno = sno;
}
public String getSname() {
return Sname;
}
public void setSname(String sname) {
Sname = sname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return Sex;
}
public void setSex(String sex) {
Sex = sex;
}
}
课程表:
课程表由管理员管理,学生在查询时调用该表。由于个人能力问题,只做出了学生查询必修课程调用数据库,学生选课并存入数据库由同组的另外一名同学完成。
CourseDao
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import util.DBConn;
import dto.CourseDto;
import dto.StudentDto;
public class CourseDao {
DBConn db;
Connection conn;
PreparedStatement pstmt;
CourseDto cdto;
ResultSet rs;
Statement stmt;
public CourseDao(){
db=new DBConn();
conn=db.getConnection();
}
public CourseDao(CourseDto cdto){
this.cdto=cdto;
db=new DBConn();
conn=db.getConnection();
}
public ResultSet listCourse() throws SQLException{
String sql = \"select * from 课程\";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}
}
CourseDto
package dto;
public class CourseDto {
private String Cno;
private String Cname;
private String Credit;
private String Time;
private String Tname;
public String getCno() {
return Cno;
}
public void setCno(String cno) {
Cno = cno;
}
public String getCname() {
return Cname;
}
public void setCname(String cname) {
Cname = cname;
}
public String getCredit() {
return Credit;
}
public void setCredit(String credit) {
Credit = credit;
}
public String getTime() {
return Time;
}
public void setTime(String time) {
Time = time;
}
public String getTname() {
return Tname;
}
public void setTname(String tname) {
Tname = tname;
}
}
DBConn.java
package util;
import java.sql.*;
public class DBConn {
private Connection conn;
public Connection getConnection(){
try {
Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\");
conn
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
DriverManager.getConnection(\"jdbc:sqlserver://localhost:1433;databaseName=heyue\\"heyue\
=
}
因篇幅问题不能全部显示,请点此查看更多更全内容