长春大学课程设计学生选课系统软件工程合格版.docx
《长春大学课程设计学生选课系统软件工程合格版.docx》由会员分享,可在线阅读,更多相关《长春大学课程设计学生选课系统软件工程合格版.docx(36页珍藏版)》请在冰豆网上搜索。
长春大学课程设计学生选课系统软件工程合格版
学生选修课程管理系统
第9小组
学号
姓名
具体模块
成绩
备注
041140336
蔡忠文
老师操作模块
组长
041140337
李梓郡
学生操作模块
组员
041140338
王超
课程操作模块
组员
041140339
张畅
数据库设计
组员
1可行性分析
1.1经济上的可行性
界面友好,操作简单,系统实现可行,因此经济可行。
该系统可以容易实现学生、老师和教学系统管理员与学校之间的联系,在Internet上实现完成部分教务工作,提高办事效率。
1.2技术上的可行性
随着互联网的蓬勃发展,越来越多的机构将科研管理与Internet融合到一起,以方便个高校管理。
在这样一个社会背景下,基于Windows和SQLServer2005设计出数据库,运用先进的ASP.NET技术、先进的C#语言,采用B/S模式开发的大学生选修课管理系统,将学生、老师、管理员有机地结合在一起,有效地提高管理水平和效率。
随着科学技术的不断提高,计算机科学日渐成熟,基于以上的技术在现今比较容易实现。
1.3操作上的可行性
该系统操作方便,简单。
2需求分析
2.1需求陈述
系统功能模块基本将本系统划分为三大模块,即学生选课模块、教师开课模块以及管理员管理模块。
(1)学生选课模块:
在这个模块中,允许学生修改个人信息,浏览基本的课程;并实现主要的选课功能,包括填写选课信息、查看已选课程、修改选课等。
(2)教师开课模块:
这个模块主要是让教师申请教课,同时教师可以修改个人信息、浏览基本课程以及查看学生的选课情况等。
(3)管理员管理模块:
这个模块的功能比较多,主要包括创建课程的指定任课老师、设定课程人数、统计学生选课信息、发通知等等。
(4)通用功能模块:
即用户登录、密码修改等功能的实现。
2.2分析建模
根据系统需求
角色确定,外部参与者如下:
①管理员:
对学生和教师基本资料维护,对课程基本资料进行添加、删除、更新或查询等;
②学生:
进行课程预览,选课信息查询,进行选课,成绩查询等;
③教师:
查询课程,申请教课及课程报名人数情况,进行成绩评定等;
确定用例
与管理员有关的用例:
发布通知、分配帐号密码、注销或修改用户状态、创建课程,定任课老师、设定课程人数、统计学生选课信息;
与学生有关的用例:
修改个人信息、选课操作、修改选课、浏览课程、查询成绩
与教师有关的用例:
申请教课、浏览课题、查询学生选课情况、成绩评定
建立系统用例图
此系统用例图包括:
学生选课系统的高层用例图,管理员管理子系统用例图,教师管理子系统用例图以及学生选课子系统的用例图。
系统用例
大学生选修课用例描述
管理员:
管理员负责整个选修课系统的全面工作
管理员使用子系统“选课管理”中的教学大纲信息和“科室分配管理”中的教师信息,制定选课表
管理员点击子系统“课程信息管理”对学生和教师基本资料维护,课程基本资料进行添加、删除、更新或查询等相关操作
学生:
进行课程预览,选课信息查询,进行选课,成绩查询等;
教师:
查询课程,申请教课及课程报名人数情况,进行成绩评定等;
成绩查询:
登录选课系统→选择用户“学生”→输入密码,提交→提示登录成功或错误信息→选择“选修课成绩查询”,选择学期→查到对应成绩。
成绩管理:
教师进行操作,包括教师录入和维护学生的成绩,统计成绩查询成绩,也可进行学生成绩的删除和修改工作。
详细描述如下:
登录:
通过用户名及密码登录学生选课系统→验证当前用户权限。
课程信息浏览:
让学生可以详细的了解课程情况。
选课:
学生可以选择要选修的课程。
选课概述:
前提条件(正确登录、同一选课选修两次第二次不计学分)→点击选课项→提交按钮→提示选课情况
修改选课:
由于主观或客观原因要求退课。
修改选课概述:
前提条件(限定的课程开设人数已满,或是不足规定人数取消该课程安排的信息,以及个人在规定日期前可以修改选课等)
成绩查询:
登录选课系统→选择用户“学生”→输入密码,提交→提示登录成功或错误信息→选择“选修课成绩查询”,选择学期→查到对应成绩。
学生选课系统的高层用例图如图2-1所示
图2-1学生选课系统的高层用例图
管理子系统用例
(1)用户登录
获取用户输入的用户名及密码;
若出现用户名、密码错误或不匹配现象,反馈错误提示;
在用户名及密码都正确的前提下,支持密码修改。
(2)选课系统
首先发布选课通知,即先对教师发出通知(教师得到通知后才可申请教课),然后对学生发出通知(此时已安排完有关选修课的所有信息)
创建课程指定任课教师
设定课程的人数和开课时间安排
分配账号及密码(由于是管理员操作此部分)。
(3)教师教课申请
获取教师申请教课的信息,包括教师信息及其所要教的课程课程信息;
提供教师浏览课程的功能,即课程时间、教室等的安排;并提供查询学生选课情况的功能,即选此门课程的名单等;
处理和统计教师对学生成绩的评定。
(4)学生选课
提供学生修改个人信息的功能;
提供学生浏览全部选修课信息的功能,然后接受学生的选课操作;
获取学生及其所选课程的信息后,提供学生浏览自己所选课程的安排情况;
得到选课系统的指令,在相应时间内可以让学生修改自己的选课;
将选课系统统计好的成绩信息反馈给学生供其浏览。
管理员管理子系统用例详细描述如下:
①发放通知:
此用例包含两种情况,一是相对于教师的,二是相对于学生的。
相对于教师,即对于选课信息录入后发放给教师的通知,相对于学生即是在安排完选课相应的教师、选课限定人数等规则后发放给学生的通知。
②学生及教师列表:
对于学生的个人信息、选课信息,教师的个人信息、对应教受的课程信息等的查询、删除、修改等操作。
③可选课程列表:
在限定人数已满或是人数不够不进行课程开设等情况下对于课程选择的限定。
④学生已选课程列表:
在课程修完教师评定相应成绩后,对于学生已选课程的成绩统计以及录入发放。
管理员添加及密码修改:
根据实际情况进行添加、修改等。
管理员管理子系统用例图如图2-2所示:
图2-2管理员管理子系统用例图
教师进行查询课程,申请教课及课程报名人数情况,进行成绩评定等工作。
主要是学生选课操作
提供学生修改个人信息的功能;
提供学生浏览全部选修课信息的功能,然后接受学生的选课操作;
获取学生及其所选课程的信息后,提供学生浏览自己所选课程的安排情况;
得到选课系统的指令,在相应时间内可以让学生修改自己的选课。
学生选课子系统如图2-3所示
图2-3学生选课子系统用例图
3分析设计
3.1系统功能结构设计
首先输入用户名和密码登录系统,系统给出提示,若登录成功后则进行课程信息查询。
然后对信息进行详细查看,例如选课时间安排、教师安排、人数安排等,之后可点击选择课程并提交确认,此时系统也会给出提示,若成功选择给出课程详细信息,否则将提示人数已满的限制信息。
修改所选课程,也必须找到自己已选课程列表并进行删除,然后再按相同方法进行选课,最终完成选课。
当然修改课程过程中,也要注意修改时间的限定,因为管理员也要统计学生及其所选课程的信息,所以必须在规定时间进行修改。
经过活动如图3-1所示
图3-1学生选课操作的活动图
顺序图如图3-2所示
图3-2学生选课操作顺序图
学生选课操作的协作图3-3所示:
图3-3学生选课操作的协作图
参与交互的对象有课程信息模块、课程安排模块及面向教师、学生。
此图主要考虑通过对象之间的交互共同完成选课操作的过程,各信息流向及标明的顺序更好诠释出管理员进行管理时所需对象及时间上的配合。
管理员管理操作的协作图如下所示:
参与的交互对象有课程信息模块、成绩评定模块、成绩管理模块以及学生。
首先教师进入课程信息模块,选择自已所教授的选修课,进而得到所有学生信息。
然后通过反馈的信息及自己记录的考勤情况(如特定安排取消的课时等)进入成绩评定模块。
一般是将所有学生进行统一打分,若不是统一的情况或是有修改等情况都可进入成绩管理模块进行相应操作。
在规定日期前上交评定成绩信息后再反馈给学生。
如图3-4所示:
图3-4教师评定成绩的协作图
学生在选课操作中其生存周期中所处的不同状态、转换时的条件,虽然看似较为简单,但并不可忽视。
对于此信息的详细设计,可进一步用于用类状态的设计和编制类。
如图3-5所示:
图3-5学生登录选课的状态图
3.2.系统硬件结构设计
类模型是面向对象方法的核心,类模型从对象的角度描述系统的组成,描述对象及相互间的关系。
系统已在前面进行过简单描述,通过检查问题陈述中的所有名词短语和代词,得到初始类:
学生教师管理员选课操作选课管理申请教课
成绩管理成绩查询用户管理课程信息可选课程学生已选课程
经过分析最后得到教师、学生、管理员、课程信息及系统维护这几个类。
并标识出类的名称及属性。
如下图3-6所示:
图3-6类名称及属性
3.3系统软件架构设计
3.3.1功能要求:
(1)设计数据对象(表、视图、规则、函数等),完成学生自主选课,实现对于数据库完整性的检查;
(2)根据用户不同,指派不同权利:
管理员具有dbo权限,学生具有插入选课表、退课表权限,查询课程表权限,确保数据库的安全性;
(3)能够实现对于学生选课信息、课程信息、授课教师信息、教室使用信息的查询;
(4)设计触发器/存储过程,优化数据库查询、冲突检测、扩展数据库完整性和数据操纵功能;
(5)设计选课时间段,在指定时间段内,允许选课、退课。
(6)完成数据库的备份等事务处理,保证数据库的一致性,可靠性。
3.3.2实现要求
(1)根据系统的功能要求,建立了概念模型,设计各功能块的E-R图,对其合并,形成系统总E-R图,如图3-1所示。
(2)利用T-SQL实现数据库,关系表,视图,数据类型,存储过程及其他数据对象的建立、更新、修改及数据库完整性检查。
4详细设计
蔡忠文设计内容:
老师操作模块:
1)增加老师
2)根据教师号码修改教师信息
3)根据教师号码删除教师信息
4)根据教师号码查询教师的信息
5)查询所有教师的信息
李梓郡设计内容:
学生操作模块
1)增加学生
2)根据学号修改学生信息
3)根据学号删除学生信息
4)根据学号查询学生信息
5)查询所有学生信息
王超设计内容:
课程操作模块
1)增加课程
2)根据课程号修改课程信息
3)根据课程号删除课程的信息
4根据课程号查询课程的信息
5)查询所有课程
张畅设计内容:
系统的数据库设计:
本系统设计的是一个以班级为单位的选课数据库,能够实现学生自主选课功能,并能实现学生信息、课程信息、学生选课信息、教室信息、授课教师信息等的创建、更新、删除、修改,数据库完整性检查、冲突检测、查询优化以及数据库角色、权限的分配,实现数据库的备份等事务处理以保证数据的完整性、一致性、安全性、可靠性。
E-R图如4-1所示
图4-1学生选课系统总E-R图
表4-1教师表
字段名
字段类型
字段长度
是否为空
是否为主键
描述
tno
varcher
10
是
教师号
teacherpessword
varcher
10
是
密码
tname
varcher
10
是
姓名
tsex
varcher
5
是
性别
dno
varcher
10
否
系别
cnumber
varcher
10
否
所带课程号
4-2课程表
字段名
字段类型
字段长度
是否为空
是否为主键
描述
cname
varcher
10
否
否
课程名
cno
varcher
10
否
是
课程号
csore
double
否
否
课程的学分
dno
varcher
10
否
否
课程的系别
4-3成绩表
字段名
字段类型
字段长度
是否为空
是否为主键
描述
cno
varcher
10
否
课程号
son
varcher
10
否
学号
score
varcher
10
是
成绩
4-4学生表
字段名
字段类型
字段长度
是否为空
是否为主键
描述
sno
varcher
10
是
学号
sname
varcher
10
否
姓名
ssex
varcher
5
否
性别
dno
varcher
10
否
系别
sage
int
否
年龄
spassword
varcher
10
否
密码
4-5管理员表
字段名
字段类型
字段长度
是否为空
是否为主键
描述
manager
varcher
10
是
账号
managerpassword
varcher
10
否
密码
4-6系表
字段名
字段类型
字段长度
是否为空
是否为主键
描述
dno
varcher
10
是
系号
dname
varcher
10
否
系名
5实现
1.管理员底层代码:
packagexiangmu.dao;
importjava.util.List;
importxiangmu.po.course;
importxiangmu.po.manager;
importxiangmu.po.student;
importxiangmu.po.teacher;
publicinterfaceManagerDao{
//管理员登录
publicbooleaninToSystem(managerm);
//增加学生
publicbooleanaddStudentforManager(students);
//根据学生的学号修改学生的信息
publicbooleanupdateStudentforManager(Stringsno,students);
//根据学号删除学生的全部信息
publicbooleandeleteStudentforManager(Stringsno);
//根据学号查询学生的信息
publicstudentselectStudentforManager(Stringsno);
//查询所有学生的信息
publicListselectAllStudent();
//增加老师
publicbooleanaddTeacherforManager(teachert);
//根据教师号修改教师的信息
publicbooleanupdateTeacherforManager(Stringtno,teachert);
//根据教师号删除教师的信息
publicbooleandeleteTeacherforManager(Stringtno);
//根据教师号查询教师的信息
publicteacherselectTeacherforManager(Stringtno);
//查询所有教师的信息
publicListselectAllTeacher();
//增加课程
publicbooleanaddCourseforManager(coursec);
//根据课程号修改课程的信息
publicbooleanupdateCourseforManager(Stringcno,coursec);
//根据课程号删除课程的信息
publicbooleandeleteCourseforManager(Stringcno);
//根据课程号查询课程的信息
publiccourseselectCourseforManager(Stringcno);
//查询所有课程的信息
publicListselectAllCourse();
//退出系统
publicvoidbackSystem();
}
2.学生模块底层代码:
packagexiangmu.dao;
importjava.util.List;
importxiangmu.po.StuChengJi;
importxiangmu.po.course;
importxiangmu.po.score;
importxiangmu.po.student;
publicinterfaceStudentDao{
//登录系统
publicbooleaninToSystembyStudent(Stringsno,Stringspassword);
//选课
publicbooleanxunKebyStudent(Stringsno,Stringcno);
//查询所有已选课程
publicListxunAllKeChengbyStudent(Stringsno);
//查询自身的信息
publicstudentxunStudent(Stringsno);
//查询所选课程的成绩
publicListxunChengJibyStudent(Stringsno,scores);
//退课
publicbooleandeleteCoursebyStudent(Stringsno,coursec);
//退出系统
publicvoidbackSystembyStudent();
}
3.老师模块底层代码:
packagexiangmu.dao;
importjava.util.List;
importxiangmu.po.student;
importxiangmu.po.teacher;
publicinterfaceTeacherDao{
//登录系统
publicbooleaninToSystembyTeacher(Stringtno,Stringtpassword);
//查询所有自身所带课程的所有学生的信息
publicListxunAllStudentbyStudent(Stringtno);
//输入成绩(在上一步的结果上,输入成绩)
publicbooleanchengjibyTeacher(Stringsno,Stringsscore,Stringcno);
//查询自身的信息
publicteacherxunTeacherbyTeacher(Stringtno);
//退出系统
}
4.主界面的servlet代码如下:
packagexiangmu.gongneng;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassmainextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriterout=resp.getWriter();
Stringusername=req.getParameter("username");
Stringpassword=req.getParameter("password");
Stringyonghu=req.getParameter("yonghu");
if(yonghu.equals("student")){
req.getRequestDispatcher("/studentcaozuo").forward(req,resp);
}elseif(yonghu.equals("teacher")){
req.getRequestDispatcher("/teachercaozuo").forward(req,resp);
}elseif(yonghu.equals("manager")){
req.getRequestDispatcher("/managercaozuo").forward(req,resp);
}
}
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
this.doGet(req,resp);
}
}
5、管理员界面的代码:
packagexiangmu.gongneng;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importxiangmu.daoimpl.ManagerDaoimpl;
importxiangmu.po.manager;
publicclassmanagercaozuoextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
publicvoiddoGet(HttpServletRequestreque