学生选课系统(17页).doc
-学生选课系统-第 15 页目录1 问题定义12 可行性研究22.1 项目概述22.2 可行性分析的前提22.2.1 项目的目标22.2.2 项目的环境22.3 可选的方案22.3.1 方案一22.3.2 方案二22.4 所建议的系统22.4.1 系统说明22.4.2 高层数据流图32.5 经济可行性32.6 技术可行性32.7 操作可行性33 需求分析43.1 需求概述43.2 需求模型53.2.1 数据模型73.2.2 功能模型83.2.3 行为模型93. 数据字典104 总体设计114.1 系统体系结构114.2 模块详细说明124.3 数据库设计125 详细设计135.1 人机界面设计135.2 过程设计146 测试186.1 白盒测试186.2 黑盒测试187 结论19参考文献201 问题定义“选课”是现在高校行政管理工作中一项很重要的课题。而且是每个学期都必须要面对的问题。选课工作做不好,学生不知道自己将要学习的课程,老师也不知道自己将要讲授的课程,教务处的排课计划、教室安排等其他调度工作也无从做起。因此,如何解决高校教务管理中的选课工作便成为了如今各大高校面临的很实际的问题。 随着近几年高校的持续扩招,学生人数逐年增加。为了满足广大学生的求学需要,各个高校的师资力量、硬件配置也随之增强。这样一来,日常行政部门的工作也就越来越繁重,这一点在选课这块显得尤为突出。而传统的手工操作,即费时又费力,而且容易出错,工作效率较低。因此,拥有一套实用、高效、完善的在线选课系统就显得尤为重要,它可以提升高校的教育质量和教学管理质量,提高工作效率,降低行政成本。 大学期间总会有很多公共选修课,以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。原因是传统的选课方法没有预见性,大家没有事先协调好。并且学生选课存在这样的特点:公选课较多,学生人数众多,学生可根据自己的专业及兴趣选择公选课程进行学习,而且学生对课程的要求有较大差异。使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,学生通过本系统可以了解课题相关信息,进行自主选题,能够满足不同学生对不同题目的不同要求,有利于发挥学生的长处,而且能够充分利用学校的各类教学资源。使用本系统有三个角色,即管理员、学生和教师用户。管理员的权限最高,包括设置系统登陆信息, 用户基本信息、选课信息的录入、查看、修改、删除等,同时还具有查询各个模块的功能。老师和学生可以实现基本信息查询和进行选课的相关操作,如添加选课信息,退选等。2 可行性研究2.1 项目概述 本系统实现学生选课的基本功能,包括学生退选课,查看自己的选课信息;教师查看选课学生的信息,提交成绩;管理员添加学生、管理学生、管理成绩、添加教师、管理教师和管理课程等。系统利用.Net平台技术进行开发,实现学生选课的动态管理,使得对信息的管理更加及时、高效,提高了效率。同时还对系统的开发原理、功能特点和设计方案进行了介绍。2.2 可行性分析的前提2.2.1 项目的目标本系统目标是实现选课系统所需的各种基本功能,包括学生选课、退课功能和教师查看选修课程、提交课程成绩功能以及管理员添加学生、维护学生信息、成绩管理、添加教师、维护教师信息、维护选修课程,还有公用的修改密码等功能。2.2.2 项目的环境操作系统: Windows XP 建模工具: Rational Rose 2003数据库系统:SQL Server2005开发工具: Visual Studio 20102.3 可选的方案2.3.1 方案一中等成本方案:设计仅关于软件工程课程设计的管理系统2.3.2 方案二高成本方案:设计整个学校教学管理系统,利于学校教学质量的提高。2.4 所建议的系统2.4.1 系统说明 本系统实现学生选课的基本功能,包括学生退选课,查看自己的选课信息;教师查看选课学生的信息,提交成绩;管理员添加学生、管理学生、管理成绩、添加教师、管理教师和管理课程等。系统利用.Net平台技术进行开发,实现学生选课的动态管理,使得对信息的管理更加及时、高效,提高了效率。同时还对系统的开发原理、功能特点和设计方案进行了介绍。2.4.2 高层数据流图选课信息成绩查询的信息录入的信息学生选修课管理系统系统管理员用户2.5 经济可行性系统界面友好,操作简单,系统的配置要求不高,实现可行,因此经济可行。该系统可以容易实现学生、老师与学校之间的联系,在Internet上实现完成部分教务工作,提高办事效率。2.6 技术可行性 随着互联网的蓬勃发展,越来越多的机构将科研管理与Internet融合到一起,以方便个高校管理。在这样一个社会背景下,基于Windows和SQL Server 2005 ,运用先进的ASP.NET技术、先进的C#语言,采用B/S模式开发的学生网上选课系统,将学生、老师、管理员、有机地结合在一起,有效地提高管理水平和效率。2.7 操作可行性该选课系统既可以由管理员登录,录入开课信息,并且发布,也可以由学生登录,查看可选的课程信息,选择课程,该系统操作方便,简单有效。3 需求分析3.1 需求概述 学生选课系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户,也即是三类用户角色。(1)学生用户是主要的需求者,主要需求功能是查询可选课程、查看自己选课情况及进行选课、退课操作等;(2)教师用户主要需求功能是查看自己所教授的课程、课程有哪些学生选修、以及利用本系统提交学生的成绩;(3)管理员用户的功能需求较为复杂,包括对学生信息、教师信息、课程信息进行管理。在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。在教师管理子模块中,实现对教师信息的添加、修改、删除、查询等操作。在课程管理子模块中,实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。本系统将管理员用户、教师用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程成绩的权限;让学生拥有选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。3.2 需求模型类图说明:(1 )BaseUser类是一个系统角色用户的基类,主要方法有两个:modifyPWD() 用于修改用户的密码;loginCheck() 用于用户登录验证。(2)Admin类继承自BaseUser类。(3)Student类继承自BaseUser类,主要方法有:studentAdd() 用于添加学生;studentDel() 用于删除学生;studentUpdate() 用于更新学生信息;getStudents() 用于获取学生列表。(4)Teacher类继承自BaseUser类,主要方法有:teacherAdd() 用于添加教师;teacherDel() 用于删除教师;teacherUpdate() 用于更新教师信息;getTeachers() 用于获取教师列表。(5)Course类是一个课程类,主要方法有:courseAdd() 用于添加课程;courseDel() 用于删除课程;courseUpdate() 用于修改课程信息;getCourses() 用于获取课程列表。(6)Elect类是一个选课表类,主要方法有:elect() 选修课程;electDel() 退选课程;getElectInfo() 获取选课信息;haveSubmit() 检测是否已提交过成绩;submitScore() 提交成绩。3.2.1 数据模型学生选课系统总体E-nn111mmmmm学生学号姓名性别专业班级密码出生日期学院组成编号学院名称学习课程课程号类型学分学时教师课程名称教师组成教授开设姓名工号性别密码联系电话院部图3.3 总体E-R图3.2.2 功能模型D5重新登录查询D1成绩单选择学期登录失败登录失败提示统计结果统计信息课程信息学生信息D4学生报名表D3课程报名表D2学生信息表学生信息无效有效用户名密码学生图3.4 细化数据流图3.2.3 行为模型3. 数据字典管理员模块数据字典名字:用户登录别名:管理员用户登录描述:管理员用户登录通过系统管理员身份,发布开课、选课通知、教学信息、课程信息以及课程信息的更新和关闭选课系统 定义:管理员用户登录=用户名+密码位置:选课系统学生模块数据字典名字:学生选课别名:描述:学生通过登录选课系统,查看课程信息、进行选课活动、修改或删除所选课程定义:学生选课=姓名+学号+密码位置:选课系统教师模块数据字典名字:教师开课别名:描述:教师通过登录选课系统,进行开课、确定课程要求、修改或删除所开课程定义:教师开课=姓名+工号+密码位置:选课系统4 总体设计4.1 系统体系结构该体系结构说明了各个模块的功能学生选课系统4.2 模块详细说明表4-1 学生选课IPO表IPO表系统:学生选课系统模块:学生选课编号:作者:董小童 日期:被调用:选课系统调用:学生选课模块输入: 所选课程输出:选课表 处理:人数未满 可选选课 人数已满 不可选局部数据元素:注释:4.3 数据库设计学生表Student的详细数据字段:表4-2 Student学生用户表序号字段名字段类型说明备注1stuIDnvarchar(20)not null学生学号关键字2stuPwdnvarchar(20)not nul学生密码3stuNamenvarchar(20)not nul学生姓名4stuDepartInt学生系院号5stuGradeint学生年级6stuClassint学生班级5 详细设计5.1 人机界面设计5.2 过程设计开始结束点击选修选修成功更新选、退课课表提示时间冲突,不能选修上课时间冲突继续选课?是否是否图5.2 学生选修课程流程图学生模块详细代码如下:<html xmlns="http:/www.w3.org/1999/xhtml"><head runat="server"> <title>学生选课</title></head><body leftmargin="0" rightmargin="0" topmargin="0"> <form id="form1" runat="server"> <div> <table width="100%" bgcolor="#ccccff"> <tr> <td> <uc1:top ID="Top1" runat="server" /> </td> </tr> </table> <table id="table1" width="80%" border="0" align="center"> <tr> <td align="center"> <span style="font-size: 16pt;">可选修课程</span> </td> </tr> <tr> <td> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" Width="100%" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="SqlDataSource1" GridLines="Vertical" OnRowCommand="GridView1_RowCommand" Font-Size="10pt" DataKeyNames="courceID,teaID"> <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> <RowStyle BackColor="#EEEEEE" ForeColor="Black" Font-Size="10pt" /> <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> <HeaderStyle BackColor="Blue" Font-Bold="True" ForeColor="White" Font-Size="10pt" /> <AlternatingRowStyle BackColor="Gainsboro" /> <Columns> <asp:BoundField DataField="courceID" HeaderText="courceID" ReadOnly="True" Visible="False" SortExpression="courceID" /> <asp:BoundField DataField="teaID" Visible="False" HeaderText="teaID" ReadOnly="True" SortExpression="teaID" /> <asp:BoundField DataField="courceName" HeaderText="课程名称" SortExpression="courceName"> </asp:BoundField> <asp:BoundField DataField="teaName" HeaderText="教师姓名" SortExpression="teaName"></asp:BoundField> <asp:BoundField DataField="courceTime" HeaderText="上课时间" SortExpression="courceTime"> </asp:BoundField> <asp:BoundField DataField="courceAddress" HeaderText="上课地点" SortExpression="courceAddress"> </asp:BoundField> <asp:HyperLinkField DataNavigateUrlFields="courceID,teaID" DataNavigateUrlFormatString="courseDetail.aspx?courceID=0&teaID=1" HeaderText="详细." Text="详细." /> <asp:ButtonField HeaderText="选修" CommandName="select" Text="选修"></asp:ButtonField> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT Cource.courceID, Cource.teaID, Cource.courceName, Teacher.teaName, Cource.courceTime, Cource.courceAddress FROM Cource INNER JOIN Teacher ON Cource.teaID = Teacher.teaID WHERE NOT EXISTS (SELECT * FROM Elect WHERE (courceID=Cource.courceID and teaID=Cource.teaID and stuID = stuID)"> <SelectParameters> <asp:SessionParameter Name="stuID" SessionField="userID" /> </SelectParameters> </asp:SqlDataSource> </td> </tr> <tr> <td> <asp:Label runat="server" ID="errormess" ForeColor="Red" Font-Size="Smaller"></asp:Label> </td> </tr> <tr> <td style="height: 24px; text-align: center"> <span style="font-size: 16pt;">您已经选修的课程</span> </td> </tr> <tr> <td> <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" BackColor="White" Width="100%" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="SqlDataSource2" GridLines="Vertical" OnRowCommand="GridView2_RowCommand" DataKeyNames="stuID,courceID,teaID"> <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> <RowStyle BackColor="#EEEEEE" ForeColor="Black" Font-Size="10pt" /> <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> <HeaderStyle BackColor="Blue" Font-Bold="True" ForeColor="White" Font-Size="10pt" /> <AlternatingRowStyle BackColor="Gainsboro" /> <Columns> <asp:BoundField DataField="stuID" HeaderText="stuID" ReadOnly="True" SortExpression="stuID" Visible="False" /> <asp:BoundField DataField="courceID" HeaderText="courceID" ReadOnly="True" SortExpression="courceID"Visible="False" /> <asp:BoundField DataField="teaID" HeaderText="teaID" ReadOnly="True" SortExpression="teaID"Visible="False" /> <asp:BoundField DataField="courceName" HeaderText="课程名称" SortExpression="courceName"> <asp:BoundField DataField="teaName" HeaderText="教师姓名" SortExpression="teaName"></asp:BoundField> <asp:BoundField DataField="courceTime" HeaderText="上课时间" SortExpression="courceTime"> <asp:BoundField DataField="courceAddress" HeaderText="上课地点" SortExpression="courceAddress"> <asp:ButtonField HeaderText="退选" CommandName="shanchu" Text="退选 </Columns></asp:GridView> <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"SelectCommand="SELECT Elect.stuID, Elect.courceID, Elect.teaID, <SelectParameters> <asp:SessionParameter Name="stuID" SessionField="userID" /> </SelectParameters> </asp:SqlDataSource> <td style="height: 21px" align="center"> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="/ModifyPwd.aspx" Font-Size="10pt">修改密码</asp:HyperLink><asp:HyperLink ID="HyperLink2" runat="server" Font-Size="10pt" NavigateUrl="javascript:window.close()">退出系统</asp:HyperLink> </td></tr></table></div></form></body></html>6 测试6.1 白盒测试白盒测试采用循环测试,根据流程图可分为两类,简单循环和嵌套循环。简单循环:(1) 跳过循环,即0次(2) 通过循环1次(3) 通过循环n-1次(4) 通过循环n次(5) 通过循环n+1次 嵌套循环:(1)从内层循环开始测试,外层循环都设为最小值。(2)对内层循环使用简单循环测试方法,而使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试。(3)由内向外对下一个循环进行测试,但保持所有外层循环为最小值,其他嵌套循环为“典型”值。(4)继续进行下去,直到测试完所有循环。6.2 黑盒测试等价划分类:输入条件有效等价类无效等价类用户名(1)5位数字(3)有非数字字符(4)少于5位数字(5)多于5位数字密码(2)6位数字或字母字符(6)有非数字字母字符(7)少于6位字符(8)多于6位字符测试方案:编号覆盖等价类输入预期的输出1(1)(2)用户名:12000 密码:123456正确2(3)用户名:a2000错误3(4)用户名:2000错误4(5)用户名:112000错误5(6)密码:¥23456错误6(7)密码:23456错误7(8)密码:1123456错误7 结论通过这次课程设计,我们学到了很多关于信息系统方面的知识,也得到了很多,不仅将在书本中学到的知识运用到解决实际问题上,而且加强了自己的动手能力。在设计的过程中发现整个系统原理比最初想象的都要复杂,不过也没有太大的技术难点,经过不断的试验研究,我们参考了不少资料,花了差不多两个星期才把系统完成。设计出的系统基本具备需要的所有功能,实现证明数据也没有出错。在这一过程中,我们熟练掌握了表单设计的过程,并了解了表单在软件系统设计中的功能,为系统开发打下了基础。在完成系统设计、系统实施等的过程中,对以往老师在课堂上讲授的内容有了直观而具体的理解。由于时间仓促,我们并没有对系统做进一步的完善,还存在不少欠缺和需要改善的地方,例如系统的选课退选模块、数据库数据信息维护功能块、主界面显示当前日期时间等功能。期待有更多的机会让我们实践理论知识。让我们更多的了解这方面的知识。最后,要谢谢我们的指导老师。参考文献1 张海藩软件工程导论(第4 版)北京:清华大学出版社,20052 刁成嘉UML系统建模与分析设计北京:机械工业出版社,20073 UML基础与Rose建模案例北京:人民邮电出版社,20044 刘乃丽 ASPNET 20 网络开发详解北京:电子工业出版社,2008 5 等软件工程课程设计机械工业出版社, 2010