学生选课系统实验报告项目名称:学生选课系统姓名:学号:班级:指导老师:一.课程设计的目的与要求通过软件开发的实战训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计和综合分析,解决问题的能力。
具体如下:学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;1.学习使用MyEclipse开发工具的使用。
2.进一步加强和提高软件工程文档的编写能力;3.培养协作能力和团队精神。
一.设计正文1.概述1.1 课程题目:学生选课系统1.2系统的主要目标:本系统的目标是实现选课系统需所需的各种基本功能,包括学生选课,教师查看选修的课程,提交课程成绩功能以及管理添加学生,维护学生的信息,成绩管理,添加教师,维护教师的信息。
维护选修课程,查看学生的信息,查看教师的信息,查看课程的信息。
更新学生,老师,和课程的信息。
包括增加修改删除查找。
1.3 系统的开发环境及运行环境操作系统:windows建模工具数据库系统:sqlserver2005开发工具:MyEclipse8.6WEB服务器:Tomcat2.系统的需求分析学生选课系统的主要满足来自三个方面的需求,这三个方面分别是学生用户,教师用户和管理员用户,也即是三类用户角色。
(1)学生用户是主要的需求者,主要的需求功能是查询可选课程,查看自己的选课情况及进行选课。
(2)教师用户主要需求功能是查看自己所教授的课程,课程有哪些学生选修,以及利用本系统提交学生的成绩(3)管理员用户的功能需求较为复杂,包括对学生的信息,教师的信息,课程的信息进行管理。
在学生信息管理子模块中实现对学生的信息的添加,修改,删除操作。
还可以输入查询条件进行查询操作。
在教室管理模块中实现对教师信息的添加,修改删除,查询操作。
在课程管理的子模块中实现对课程的添加,修改,删除操作,查询操作。
本系统将管理员用户,教师用户,学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看,维护系统中的所有信息,如添加学生,添加课程,修改课程的信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程的成绩的权限;让学生拥有选课的权限。
2.1 系统用例图3.系统的总体设计二.管理员模块:1.对老师的操作:1)增加老师2)根据教师号码修改教师信息3)根据教师号码删除教师信息4)根据教师号码查询教师的信息5)查询所有教师的信息2.对学生的操作1)增加学生2)根据学号修改学生信息3)根据学号删除学生信息4)根据学号查询学生信息5)查询所有学生信息3.对课程的操作1)增加课程2)根据课程号修改课程信息3)根据课程号删除课程的信息4根据课程号查询课程的信息5)查询所有课程二.学生模块1.登录系统2.选课(只能选修学分小于等于8分的课程)3.查询所有已选的课4.退可操作5.查询自身信息6.查询所有所选课程的成绩7.退出系统三.老师模块1.登录系统2.查询所有已选自带课程的学生信息3.输入相应科目成绩4.查询自身信息四.系统的数据字典:教师号T-teacher课程表t-course学生表t-student五.程序的部分代码:1.管理员底层代码:package xiangmu.dao;import java.util.List;import xiangmu.po.course; import xiangmu.po.manager; import xiangmu.po.student;import xiangmu.po.teacher;public interface ManagerDao {//管理员登录public boolean inToSystem(manager m);//增加学生public boolean addStudentforManager(student s);//根据学生的学号修改学生的信息public boolean updateStudentforManager(String sno,student s);//根据学号删除学生的全部信息public boolean deleteStudentforManager(String sno);//根据学号查询学生的信息public student selectStudentforManager(String sno);//查询所有学生的信息public List<student> selectAllStudent();//增加老师public boolean addTeacherforManager(teacher t);//根据教师号修改教师的信息public boolean updateTeacherforManager(String tno,teacher t);//根据教师号删除教师的信息public boolean deleteTeacherforManager(String tno);//根据教师号查询教师的信息public teacher selectTeacherforManager(String tno);//查询所有教师的信息public List<teacher> selectAllTeacher();//增加课程public boolean addCourseforManager(course c);//根据课程号修改课程的信息public boolean updateCourseforManager(String cno,course c);//根据课程号删除课程的信息public boolean deleteCourseforManager(String cno);//根据课程号查询课程的信息public course selectCourseforManager(String cno);//查询所有课程的信息public List<course> selectAllCourse();//退出系统public void backSystem();}2.学生模块底层代码:package xiangmu.dao;import java.util.List;import xiangmu.po.StuChengJi;import xiangmu.po.course;import xiangmu.po.score;import xiangmu.po.student;public interface StudentDao {//登录系统public boolean inToSystembyStudent(String sno,String spassword);//选课public boolean xunKebyStudent(String sno,String cno);//查询所有已选课程public List<StuChengJi> xunAllKeChengbyStudent(String sno);//查询自身的信息public student xunStudent(String sno);//查询所选课程的成绩public List<score> xunChengJibyStudent(String sno,score s);//退课public boolean deleteCoursebyStudent(String sno,course c);//退出系统public void backSystembyStudent();}3.老师模块底层代码:package xiangmu.dao;import java.util.List;import xiangmu.po.student;import xiangmu.po.teacher;public interface TeacherDao {//登录系统public boolean inToSystembyTeacher(String tno,String tpassword);//查询所有自身所带课程的所有学生的信息public List<student> xunAllStudentbyStudent(String tno);//输入成绩(在上一步的结果上,输入成绩)public boolean chengjibyTeacher(String sno,String sscore,String cno);//查询自身的信息public teacher xunTeacherbyTeacher(String tno);//退出系统}5.主界面的servlet代码如下:package xiangmu.gongneng;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;public class main extends HttpServlet{private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();String username = req.getParameter("username");String password = req.getParameter("password");String yonghu = req.getParameter("yonghu");if(yonghu.equals("student")){req.getRequestDispatcher("/studentcaozuo").forward(req, resp);}else if(yonghu.equals("teacher")){req.getRequestDispatcher("/teachercaozuo").forward(req, resp);}else if(yonghu.equals("manager")){req.getRequestDispatcher("/managercaozuo").forward(req, resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);}}6.管理员界面的代码:package xiangmu.gongneng;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 xiangmu.daoimpl.ManagerDaoimpl;import xiangmu.po.manager;public class managercaozuo extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {PrintWriter out = response.getWriter();String username = request.getParameter("username");String password = request.getParameter("password");manager m = new manager(username,password);ManagerDaoimpl mipml = new ManagerDaoimpl();if(mipml.inToSystem(m)){request.getRequestDispatcher("managergongneng.jsp").forward(request, response);}else{request.getRequestDispatcher("/managerdengluerror").forward(request, response);}out.println(username);out.println(password);}}7.学生模块界面的代码:package xiangmu.gongneng;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 xiangmu.daoimpl.StudentDaoimpl;public class studentcaozuo extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {PrintWriter out = response.getWriter();String sno = request.getParameter("username");String spassword = request.getParameter("password");StudentDaoimpl simpl = new StudentDaoimpl();String sname = simpl.chaSnameforSno(sno);HttpSession sessionsno = request.getSession();HttpSession sessionsname = request.getSession();sessionsno.setAttribute("sno", sno);sessionsname.setAttribute("sname", sname);if(simpl.inToSystembyStudent(sno, spassword)){request.getRequestDispatcher("student/studentgongneng.jsp").forward(request, response);}else{request.getRequestDispatcher("/managerdengluerror").forward(request, response);}out.println(sno);out.println(spassword);}}8.老师界面的servlet代码:package xiangmu.gongneng;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 xiangmu.daoimpl.TeacherDaoimpl;public class teachercaozuo extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {PrintWriter out = response.getWriter();String tno = request.getParameter("username");String tpassword = request.getParameter("password");TeacherDaoimpl timpl = new TeacherDaoimpl();String tname = timpl.chaTnameforTno(tno);if(timpl.inToSystembyTeacher(tno, tpassword)){request.getRequestDispatcher("teacher/teachergongneng.jsp?tname="+tname+"").forwar d(request, response);}else{request.getRequestDispatcher("/managerdengluerror").forward(request, response);}out.println(tno);out.println(tpassword);out.flush();out.close();}}六.数据库设计的代码://创建课程表create table t_course(cno varchar(10) primary key ,cname varchar(10) ,cscore varchar(5) ,dno varchar(10) foreign KEY (dno) REFERENCES t_dept(dno) )//创建系表create table t_dept(dno varchar(10) primary key,dname varchar(10))//创建学生表create table t_student(sno varchar(10) primary key,spassword varchar(10),sname varchar(10),ssex varchar(5),sage int ,dno varchar(10) foreign KEY (dno) REFERENCES t_dept(dno), )//创建教师表create table t_teacher(tno varchar(10) primary key,tpassword varchar(10) ,tname varchar(10),tsex varchar(5) ,dno varchar(10) foreign KEY(dno) REFERENCES t_dept(dno), cno varchar(10) foreign KEY(cno) REFERENCES t_course(cno))//创建成绩表create table t_score(cno varchar(10) foreign KEY(cno) REFERENCES t_course(cno), sno varchar(10) foreign KEY(sno) REFERENCES t_student(sno), sscore varchar(5),primary KEY(sno,cno))//创建管理员表create table t_manager(managerid varchar(10) primary KEY,managerpassword varchar(10))七.程序的部分界面:1.学生界面:2.老师操作界面的部分截图:3.管理员操作界面的部分截图:八.总结:熟练掌握了学生选课的相关业务逻辑,并且能够熟练掌握关于SSH的相关增删改查的操作。