课程设计学生选课系统_第1页
课程设计学生选课系统_第2页
课程设计学生选课系统_第3页
课程设计学生选课系统_第4页
课程设计学生选课系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、学生选修课程管理系统第9小组学号姓名具体模块成绩备注041140336蔡忠文老师操作模块组长041140337李梓郡学生操作模块组员041140338王超课程操作模块组员041140339张畅数据库设计组员目录1 可行性分析31.1 经济上的可行性31.2 技术上的可行性31.3 操作上的可行性32 需求分析42.1需求陈述42.2分析建模43 分析设计103.1系统功能结构设计103.3系统软件架构设计144 详细设计165 实现206 测试316.1测试方法316.2测试用例327 总结347.1小组总结347.2个人总结341 可行性分析1.1 经济上的可行性界面友好,操作简单,系统实现

2、可行,因此经济可行。该系统可以容易实现学生、老师和教学系统管理员与学校之间的联系,在Internet上实现完成部分教务工作,提高办事效率。1.2 技术上的可行性随着互联网的蓬勃发展,越来越多的机构将科研管理与Internet融合到一起,以方便个高校管理。在这样一个社会背景下,基于Windows和SQL Server 2005设计出数据库,运用先进的ASP.NET技术、先进的C#语言,采用B/S模式开发的大学生选修课管理系统,将学生、老师、管理员有机地结合在一起,有效地提高管理水平和效率。随着科学技术的不断提高,计算机科学日渐成熟,基于以上的技术在现今比较容易实现。 1.3 操作上的可行性该系统

3、操作方便,简单。 2 需求分析2.1需求陈述系统功能模块基本将本系统划分为三大模块,即学生选课模块、教师开课模块以及管理员管理模块。 (1)学生选课模块:在这个模块中,允许学生修改个人信息,浏览基本的课程;并实现主要的选课功能,包括填写选课信息、查看已选课程、修改选课等。(2)教师开课模块:这个模块主要是让教师申请教课,同时教师可以修改个人信息、浏览基本课程以及查看学生的选课情况等。(3)管理员管理模块:这个模块的功能比较多,主要包括创建课程的指定任课老师、设定课程人数、统计学生选课信息、发通知等等。(4)通用功能模块:即用户登录、密码修改等功能的实现。2.2分析建模根据系统需求角色确定,外部

4、参与者如下:管理员:对学生和教师基本资料维护,对课程基本资料进行添加、 删除、 更新或查询等;学生:进行课程预览,选课信息查询,进行选课,成绩查询等;教师:查询课程,申请教课及课程报名人数情况,进行成绩评定等;确定用例与管理员有关的用例:发布通知、分配帐号密码、注销或修改用户状态、创建课程,定任课老师、设定课程人数、统计学生选课信息;与学生有关的用例:修改个人信息、选课操作、修改选课、浏览课程、查询成绩与教师有关的用例:申请教课、浏览课题、查询学生选课情况、成绩评定建立系统用例图此系统用例图包括:学生选课系统的高层用例图,管理员管理子系统用例图,教师管理子系统用例图以及学生选课子系统的用例图。

5、系统用例大学生选修课用例描述管理员:管理员负责整个选修课系统的全面工作管理员使用子系统“选课管理”中的教学大纲信息和“科室分配管理”中的教师信息,制定选课表管理员点击子系统“课程信息管理” 对学生和教师基本资料维护,课程基本资料进行添加、删除、更新或查询等相关操作学生:进行课程预览,选课信息查询,进行选课,成绩查询等;教师:查询课程,申请教课及课程报名人数情况,进行成绩评定等;成绩查询:登录选课系统选择用户“学生”输入密码,提交提示登录成功或错误信息选择“选修课成绩查询”,选择学期查到对应成绩。成绩管理:教师进行操作,包括教师录入和维护学生的成绩,统计成绩查询成绩,也可进行学生成绩的删除和修改

6、工作。详细描述如下:登录:通过用户名及密码登录学生选课系统验证当前用户权限。课程信息浏览:让学生可以详细的了解课程情况。选课:学生可以选择要选修的课程 。选课概述:前提条件(正确登录、同一选课选修两次第二次不计学分)点击选课项提交按钮提示选课情况修改选课:由于主观或客观原因要求退课。修改选课概述:前提条件(限定的课程开设人数已满,或是不足规定人数取消该课程安排的信息,以及个人在规定日期前可以修改选课等)成绩查询:登录选课系统选择用户“学生”输入密码,提交提示登录成功或错误信息选择“选修课成绩查询”,选择学期查到对应成绩。学生选课系统的高层用例图如图2-1所示图2-1 学生选课系统的高层用例图管

7、理子系统用例(1)用户登录获取用户输入的用户名及密码;若出现用户名、密码错误或不匹配现象,反馈错误提示;在用户名及密码都正确的前提下,支持密码修改。(2)选课系统首先发布选课通知,即先对教师发出通知(教师得到通知后才可申请教课),然后对学生发出通知(此时已安排完有关选修课的所有信息)创建课程指定任课教师设定课程的人数和开课时间安排分配账号及密码(由于是管理员操作此部分)。(3)教师教课申请获取教师申请教课的信息,包括教师信息及其所要教的课程课程信息;提供教师浏览课程的功能,即课程时间、教室等的安排;并提供查询学生选课情况的功能,即选此门课程的名单等;处理和统计教师对学生成绩的评定。(4)学生选

8、课提供学生修改个人信息的功能;提供学生浏览全部选修课信息的功能,然后接受学生的选课操作;获取学生及其所选课程的信息后,提供学生浏览自己所选课程的安排情况;得到选课系统的指令,在相应时间内可以让学生修改自己的选课;将选课系统统计好的成绩信息反馈给学生供其浏览。管理员管理子系统用例详细描述如下:发放通知:此用例包含两种情况,一是相对于教师的,二是相对于学生的。相对于教师,即对于选课信息录入后发放给教师的通知,相对于学生即是在安排完选课相应的教师、选课限定人数等规则后发放给学生的通知。学生及教师列表:对于学生的个人信息、选课信息,教师的个人信息、对应教受的课程信息等的查询、删除、修改等操作。可选课程

9、列表:在限定人数已满或是人数不够不进行课程开设等情况下对于课程选择的限定。学生已选课程列表:在课程修完教师评定相应成绩后,对于学生已选课程的成绩统计以及录入发放。管理员添加及密码修改:根据实际情况进行添加、修改等。管理员管理子系统用例图如图2-2所示:图2-2 管理员管理子系统用例图教师进行查询课程,申请教课及课程报名人数情况,进行成绩评定等工作。主要是学生选课操作提供学生修改个人信息的功能;提供学生浏览全部选修课信息的功能,然后接受学生的选课操作;获取学生及其所选课程的信息后,提供学生浏览自己所选课程的安排情况;得到选课系统的指令,在相应时间内可以让学生修改自己的选课。学生选课子系统如图2-

10、3所示图2-3学生选课子系统用例图3分析设计3.1系统功能结构设计首先输入用户名和密码登录系统,系统给出提示,若登录成功后则进行课程信息查询。然后对信息进行详细查看,例如选课时间安排、教师安排、人数安排等,之后可点击选择课程并提交确认,此时系统也会给出提示,若成功选择给出课程详细信息,否则将提示人数已满的限制信息。修改所选课程,也必须找到自己已选课程列表并进行删除,然后再按相同方法进行选课,最终完成选课。当然修改课程过程中,也要注意修改时间的限定,因为管理员也要统计学生及其所选课程的信息,所以必须在规定时间进行修改。经过活动如图3-1所示图3-1 学生选课操作的活动图顺序图如图3-2所示图3-

11、2学生选课操作顺序图学生选课操作的协作图3-3所示:图3-3学生选课操作的协作图 参与交互的对象有课程信息模块、课程安排模块及面向教师、学生。此图主要考虑通过对象之间的交互共同完成选课操作的过程,各信息流向及标明的顺序更好诠释出管理员进行管理时所需对象及时间上的配合。管理员管理操作的协作图如下所示:参与的交互对象有课程信息模块、成绩评定模块、成绩管理模块以及学生。首先教师进入课程信息模块,选择自已所教授的选修课,进而得到所有学生信息。然后通过反馈的信息及自己记录的考勤情况(如特定安排取消的课时等)进入成绩评定模块。一般是将所有学生进行统一打分,若不是统一的情况或是有修改等情况都可进入成绩管理模

12、块进行相应操作。在规定日期前上交评定成绩信息后再反馈给学生。如图3-4所示:图3-4教师评定成绩的协作图 学生在选课操作中其生存周期中所处的不同状态、转换时的条件,虽然看似较为简单,但并不可忽视。对于此信息的详细设计,可进一步用于用类状态的设计和编制类。如图3-5所示:图3-5学生登录选课的状态图3.2.系统硬件结构设计类模型是面向对象方法的核心,类模型从对象的角度描述系统的组成,描述对象及相互间的关系。系统已在前面进行过简单描述,通过检查问题陈述中的所有名词短语和代词,得到初始类:学生 教师 管理员 选课操作 选课管理 申请教课成绩管理 成绩查询 用户管理 课程信息 可选课程 学生已选课程经

13、过分析最后得到教师、学生、管理员、课程信息及系统维护这几个类。并标识出类的名称及属性。如下图3-6所示:图3-6类名称及属性3.3系统软件架构设计3.3.1功能要求:(1) 设计数据对象(表、视图、规则、函数等),完成学生自主选课,实现对于数据库完整性的检查; (2) 根据用户不同,指派不同权利:管理员具有dbo权限,学生具有插入选课表、退课表权限,查询课程表权限,确保数据库的安全性; (3) 能够实现对于学生选课信息、课程信息、授课教师信息、教室使用信息的查询; (4) 设计触发器/存储过程,优化数据库查询、冲突检测、扩展数据库完整性和数据操纵功能; (5) 设计选课时间段,在指定时间段内,

14、允许选课、退课。(6) 完成数据库的备份等事务处理,保证数据库的一致性,可靠性。3.3.2 实现要求(1) 根据系统的功能要求,建立了概念模型,设计各功能块的E-R图,对其合并,形成系统总E-R图, 如图3-1所示。(2) 利用T-SQL实现数据库,关系表,视图,数据类型,存储过程及其他数据对象的建立、更新、修改及数据库完整性检查。4 详细设计蔡忠文设计内容:老师操作模块:1)增加老师2)根据教师号码修改教师信息3)根据教师号码删除教师信息4)根据教师号码查询教师的信息5)查询所有教师的信息李梓郡设计内容:学生操作模块1)增加学生2)根据学号修改学生信息3)根据学号删除学生信息4)根据学号查询

15、学生信息5)查询所有学生信息王超设计内容:课程操作模块1)增加课程2)根据课程号修改课程信息3)根据课程号删除课程的信息4根据课程号查询课程的信息5)查询所有课程张畅设计内容:系统的数据库设计:本系统设计的是一个以班级为单位的选课数据库,能够实现学生自主选课功能,并能实现学生信息、课程信息、学生选课信息、教室信息、授课教师信息等的创建、更新、删除、修改,数据库完整性检查、冲突检测、查询优化以及数据库角色、权限的分配,实现数据库的备份等事务处理以保证数据的完整性、一致性、安全性、可靠性。E-R图如4-1所示nn111mmmmm学生学号姓名性别专业班级密码出生日期学院组成编号学院名称学习课程课程号

16、类型学分学时教师课程名称教师组成教授开设姓名工号性别密码联系电话院部图4-1 学生选课系统总E-R图表4-1教师表字段名字段类型字段长度是否为空是否为主键描述tnovarcher10是教师号teacher pesswordvarcher10是密码tnamevarcher10是姓名tsexvarcher5是性别dnovarcher10否系别cnumbervarcher10否所带课程号4-2课程表字段名字段类型字段长度是否为空是否为主键描述cnamevarcher10否否课程名cnovarcher10否是课程号csoredouble否否课程的学分dnovarcher10否否课程的系别4-3成绩表字

17、段名字段类型字段长度是否为空是否为主键描述cnovarcher10否课程号sonvarcher10否学号scorevarcher10是成绩4-4学生表字段名字段类型字段长度是否为空是否为主键描述snovarcher10是学号snamevarcher10否姓名ssexvarcher5否性别dnovarcher10否系别sageint否年龄spasswordvarcher10否密码4-5管理员表字段名字段类型字段长度是否为空是否为主键描述managervarcher10是账号managerpasswordvarcher10否密码4-6系表字段名字段类型字段长度是否为空是否为主键描述dnovarch

18、er10是系号dnamevarcher10否系名5 实现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(stude

19、nt s);/根据学生的学号修改学生的信息public boolean updateStudentforManager(String sno,student s);/根据学号删除学生的全部信息public boolean deleteStudentforManager(String sno);/根据学号查询学生的信息public student selectStudentforManager(String sno);/查询所有学生的信息public List<student> selectAllStudent();/增加老师public boolean addTeacherforM

20、anager(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 addC

21、ourseforManager(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 backSy

22、stem();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

23、 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 backSyste

24、mbyStudent();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);/输入成

25、绩(在上一步的结果上,输入成绩)public boolean chengjibyTeacher(String sno,String sscore,String cno);/查询自身的信息public teacher xunTeacherbyTeacher(String tno);/退出系统4.主界面的servlet代码如下:package xiangmu.gongneng;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet

26、.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class main extends HttpServletprivate static final long serialVersionUID = 1L;Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOE

27、xception 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("yo

28、nghu");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.getRequestDispatche

29、r("/managercaozuo").forward(req, resp);Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException this.doGet(req, resp);5、管理员界面的代码:package xiangmu.gongneng;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Se

30、rvletException;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 =

31、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(); S

32、tring 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").for

33、ward(request, response); else request.getRequestDispatcher("/managerdengluerror").forward(request, response); out.println(username); out.println(password);6.学生模块界面的代码:package xiangmu.gongneng;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import

34、 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

35、 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

36、 = 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(); session

37、sno.setAttribute("sno", sno); sessionsname.setAttribute("sname", sname); if(simpl.inToSystembyStudent(sno, spassword) request.getRequestDispatcher("student/studentgongneng.jsp").forward(request, response); else request.getRequestDispatcher("/managerdengluerror"

38、;).forward(request, response); out.println(sno); out.println(spassword);7.老师界面的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 java

39、x.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,

40、 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 t

41、impl = new TeacherDaoimpl(); String tname = timpl.chaTnameforTno(tno); if(timpl.inToSystembyTeacher(tno, tpassword) request.getRequestDispatcher("teacher/teachergongneng.jsp?tname="+tname+"").forward(request, response); else request.getRequestDispatcher("/managerdengluerror&

42、quot;).forward(request, response); out.println(tno); out.println(tpassword); out.flush(); out.close(); 8、数据库设计的代码:/创建课程表createtable t_course(cno varchar(10) primarykey ,cname varchar(10) ,cscore varchar(5) ,dno varchar(10) foreignKEY (dno) REFERENCES t_dept(dno)/创建系表createtable t_dept(dno varchar(10

43、) primarykey,dname varchar(10)/创建学生表createtable t_student(sno varchar(10) primarykey,spassword varchar(10),sname varchar(10),ssex varchar(5),sage int ,dno varchar(10) foreignKEY (dno) REFERENCES t_dept(dno),)/创建教师表createtable t_teacher(tno varchar(10) primarykey,tpassword varchar(10) ,tname varchar(

44、10),tsex varchar(5) ,dno varchar(10) foreignKEY(dno) REFERENCES t_dept(dno),cno varchar(10) foreignKEY(cno) REFERENCES t_course(cno)/创建成绩表createtable t_score(cno varchar(10) foreignKEY(cno) REFERENCES t_course(cno),sno varchar(10) foreignKEY(sno) REFERENCES t_student(sno),sscore varchar(5),primaryKE

45、Y(sno,cno)/创建管理员表createtable t_manager(managerid varchar(10) primaryKEY,managerpassword varchar(10) )程序的部分界面:1 学生界面如图5-1和 5-2所示:图5-1图5-22.老师操作界面的部分截图如图5-3和5-4所示:图5-3图5-43.管理员操作界面的部分截图5-5和5-6所示:图5-5图5-66 测试6.1测试方法黑盒测试选取测试用例的原则:1、所设计出的测试用例能够减少为达到合理测试所需要设计的附加测试用例数目2、所设计出的测试用例能够告诉我们,是否存在某些类型的错误,而不是仅仅指出与特定测试相关的错误是否存在3、正确的划分等价类,已根据等价类设计测试方案,以满足所有的测试都能追溯到用户需求尽量避免含糊的测试用例。尽量将具有相类似功能的测试用例抽象并归类。尽量避免冗长和复杂的测试用例。6.2测试用例表编号预期输入操作输出结果测试功能1添加成功张三 01213234点击添加添加成功添加2请输入学生姓名01001141点击添加请输入学生姓名添

温馨提示

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

评论

0/150

提交评论