课表生成系统

  • 格式:doc
  • 大小:362.00 KB
  • 文档页数:25

软件工程课程设计课表生成系统班级:2009级软件工程1班指导老师:***小组成员:组长王福200906084125组员姜朋200906084103组员谭明全2009060841392011年12月20日重庆三峡学院计算机科学与工程学院目录1需求分析————————————————————————————————2 1.1引言——————————————————————————————————2 1.2 总体概述————————————————————————————————2 1.3 具体需求————————————————————————————————42总体设计—————————————————————————————————8 2.1 编写目的————————————————————————————————8 2.2 范围——————————————————————————————————8 2.3 软件系统结构图—————————————————————————————8 2.4 数据库设计———————————————————————————————93详细设计————————————————————————————————123.1编写目的——————————————————————————————123.2课表生成系统程序流程图———————————————————————133.3界面设计——————————————————————————————144 系统测试—————————————————————————————————————221.需求分析1.1引言1.1.1目的目前计算机管理在日常生活中的地位变得越来越重要。

它能够代替人做各种重复、繁琐的劳动,并且拥有操作简单、可信度好、不易出错等优点,大大减少了不必要的人力消耗,提高个人的工作效率。

学生选课是每个学校必须面临的问题,所以,如何开发一个应用简单、界面友好、容易操作、数据安全性好的选课系统就成为非常重要的技术问题。

本系统是为了管理好学生选课信息而设计的,系统开发的总体任务是实现学生选课信息的系统化、规范化和程序化,建立学生选课系统对于减轻管理人员的劳动强度、提高工作质量和效率、可以快捷、方便的对相关信息进行查询、提高了信息资源的利用率和管理水平。

1.1.2定义课表生成系统(Schedule Generation System,简称SGS):为所要开发的软件系统的名称。

1.1.3参考资料《数据库实用教程》第三版董健全清华大学出版社《软件工程》张海藩清华大学出版社《Java web》张娜清华大学出版社《Java web 项目管理案例开发》吴亚峰、索依娜电子工业出版社1.2总体概述1.2.1系统属性课表生成系统是一个可与其他系统联合使用的系统,是为学生提供选课生成课表方面的需求。

1.2.2开发背景学校作为一种信息资源的集散地,学生和课程繁多,包含很多的信息数据的管理。

学生选课是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来人们使用传统人工的方式管理文件档案,由于信息比较多,选课信息的管理工作混乱而又复杂;一般选课情况是记录在文件上课程的数目和代号也记录在文件中,时间长了,如再要进行查询,造成查询费时、费力。

这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

作为计算机应用的一部分,使用计算机对学生选课信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高人事劳资管理的效率,也是科学化、正规化管理,与世界接轨的重要条件。

基于这些问题,有必要建立一个学生选课系统,使选课管理工作规范化,系统化,程序化,避免选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。

1.2.3产品功能图 1.11.2.4用户的特点课表生成系统的最终用户是学生,学生的特点就是根据选课系统提供的课程进行选择,而并不需要对课程进行增加删除等操作。

1.2.5限制与约束一个更为完善的课表生成系统,应提供更为便捷与强大的管理及选择功能,由于开发时间和计算机软硬件的限制,该系统提供这些功能有限,不能考虑到所有的情况。

本性能比较简单,能录入的学生信息也有限,对于管理方面也有一定的缺陷。

1.3具体需求1.3.1功能需求1、学生选课模块:操作对象:学生学生选课模块功能:学生参照学校对专业的课程安排,在开出课程的范围内选择下期待修课程,并可以查询已选课程情况。

1) 学生登陆界面:此功能用于学生自动登录选课系统,并验证学生信息,学生基本信息包括(学号,姓名,登录密码)2) 选课界面:学生可在此界面完成下学期计划要修课程的选择和退选 3)课表显示: 显示所选课程,并显示课程基本信息4)课程查询:查询所选课程5) 注册功能:学生可以自己注册信息2、选课管理模块:操作对象:管理员1)登陆界面:验证管理员身份2)录入:学院管理员初始化系统(录入学生,课程信息)a课程信息包括:课程编号、课程名称、课程性质、学分等。

b选课信息包括:学生学号、学生姓名、课程名称、开课时间等。

3)修改课程:对下学期课程根据要求进行调整修改。

4)修改学生信息:根据学生动态,修改学生信息。

包括:姓名、学号、性别等。

1.3.2 数据字典名字:上课时间描述:包括cweek 和ctime ,标识上课的星期和第几节 定义:cweek=4{char },ctime=4{char }1.3.3登录信息数据流图验证 验证 验证管理员成功验证学生成功验证D2 数据信息1.3.4管理员管理操作数据流图1.3.5学生选课操作数据流图用户登录1.1验证用户登录身份 管理员学生1.3.6性能需求数据处理能力:针对学生选课信息,将学生选课的情况保存到数据库;针对管理员,对学生的信息的录入和删除,也将记录保存到数据,针对删除,则将数据从数据库删除,这对于数据库的性能需求较高。

2.总体设计2.1编写目的概要设计说明书是根据需求规格说明书的要求所编写的,是为详细设计作依据的,为详细提供标准。

2.2范围2.2.1系统主要目标本系统是智能化、可扩展性、集成有效性和垮平台的管理系统。

为了安全问题,本系统分成客户端和服务器端。

2.2.2设计约束、限制满足《需求规格说明书》的要求,在有限的时间内完成设计,以确保整个项目在预定时间内结项。

组员的知识水平和实践水平不足。

2.3软件系统结构图2.3.1课表生成系统的层次图2.3.2 模块命名规则模块的命名是多层汉语拼音首字母大写,编程实现简单易记,以下为各软件模块的命名,保证模块名称在项目内的唯一性和无二义性。

序号名称模块名称1选课信息course2查询课表timetable3删除学生delete_student5增加课程add_course6 删除课程delete_course2.4数据库设计2.4.1类型划分2.4.2标识符和约定2.4.3 数据库表设计格式说明2.4.3.1各表详细说明1)课程信息表(course)2)学生信息表(student)3)时间信息表()4)管理员登录信息表(admin)2.3.5 数据库结构设计2.3.5.1数据模型学生实体E-R图管理员实体E-R图实体关系图3.详细设计3.1编写目的本说明书确定系统的详细功能模块和数据结构,为下阶段开发工作提供依据。

3.1.1背景软件系统的名称:课表生成系统本项目的任务提出者:软件工程老师本项目的任务开发者:09软件工程1班小组组员软件系统的用户:全体高校在校学生3.1.2定义课表生成系统(Schedule Generation System,简称SGS):为所要开发的软件系统的名称。

3.1.3参考资料《数据库实用教程》第三版董健全清华大学出版社《软件工程》张海藩清华大学出版社《Java web》张娜清华大学出版社3.2课表生成系统程序流程图3.3界面设计要求主要界面有:登陆界面、管理员操作界面(学生信息管理界面、课程管理界面等)、学生操作界面(选课界面、课表界面等)。

界面设计主要采用的是Java web中的JSP方法来实现的,如登陆界面如下:JSP代码为:<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>login</title><link type="text/css" rel="stylesheet" media="all" href="style/login.v1.css" /> <script type=text/javascript language="javascript">function input_hover(obj, color) {obj.style.border = '1px solid ' + color;}</script></head><body><div class="login-form-div"><div class="lf-title"><td align="right" >学生选课系统</td></div><form action="jsp\userlogincheck.jsp" method="post" id="login-form"accept-charset="gb2312" target="_parent" onSubmit="return docheck()"> <table border="0" cellspacing="2" cellpadding="2" class="lf-wrapper"> <tr><td class="t">用户名:</td><td align="left"><input type="text" name="UserName" value="" id="login-email" class="lf-input"onMouseOver="input_hover(this, '#0081ff');" onMouseOut="input_hover(this,'#a4a4a4');" onFocus="input_hover(this, '#0081ff');" onBlur="input_hover(this, '#a4a4a4');" tabindex="1"></td></tr><tr><td class="t">密码:</td><td align="left"><input type="password" name="UserPassword" value="" id="login-password" class="lf-input" onMouseOver="input_hover(this, '#0081ff');" onMouseOut="input_hover(this,'#a4a4a4');" onFocus="input_hover(this, '#0081ff');" onBlur="input_hover(this, '#a4a4a4');" tabindex="2"> <a href="jsp/user_reg.jsp">没有账户?</a></td> </tr><td width="50%" align="right" height="25"><input type="radio" name="Type" value="0" checked>学生&nbsp;<input type="radio" name="Type"value="1">管理员</td><!-- <tr><td colspan="2">记住我的帐号</td></tr> --></table><p><input type="image" src="style/button.gif" tabindex="3"></p> </form></div></body></html>课程添加页面和JSP代码:<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312" import="java.sql.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Insert title here</title></head><body><%request.setCharacterEncoding("gb2312");String Cno=request.getParameter("Cno");String Cname=request.getParameter("Cname");String Ctype=request.getParameter("Ctype");String Ccode=request.getParameter("Ccode");String Cplace=request.getParameter("Cplace");String Cweek=request.getParameter("Cweek");String Ctime=request.getParameter("Ctime");String Cperiod=request.getParameter("Cperiod");try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){out.print("数据库驱动程序装入错误");}String url ="jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ=C:\\db.mdb";//数据库连接Connection con= DriverManager.getConnection(url);Statement stmt = con.createStatement();String sql="insert into Course(Cno,Cname,Ctype,Ccode,Cplace,Cweek,Ctime,Cperiod) values('"+Cno+"','"+Cname+"','"+Ctype+"','"+Ccode+"','"+Cplace+"','"+Cweek+"',' "+Ctime+"','"+Cperiod+"')";int result=stmt.executeUpdate(sql);if(result==0)response.sendRedirect("error.jsp");else{con.close();response.sendRedirect("course.jsp");//out.println(result);}%></body></html>课表显示页面和源代码:%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="java.sql.*,java.util.*,java.io.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>查看课表</title><style>.in{border:0px solid white;}</style></head><body><h1 align="center">查看课表</h1><table width="90%" border="1" cellspacing="2" cellpadding="2" bordercolor=#CC0000><tr align="center"><td>时间</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td><td>星期七</td></tr><%try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){out.print("数据库驱动程序装入错误");}for(int j=1;j<6;j++){if(j==1){%><tr><td align="center">第一二节</td><% }else if(j==2){%><tr><td align="center">第三四节</td><%}else if(j==3){%><tr><td align="center">第五六节</td><% }else if(j==4){%><tr><td align="center">第七八节</td><% }else if(j==5){%><tr><td align="center">第九十节</td><% }String url ="jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ=C:\\db.mdb";//数据库连接Connection con= DriverManager.getConnection(url);Statement stmt = con.createStatement();String s_UserName = (String)session.getAttribute("UserName");String strSql = "select * from Timetable where Sno='"+s_UserName+"'";ResultSet rs=stmt.executeQuery(strSql);ArrayList group=new ArrayList();String sStr =" ";while(rs.next()){group.add(rs.getString("Cno"));}rs.close();int glen = group.size();for(int k=1;k<8;k++){String Sk=""+k;String Sj=""+j;int check=0;for (int i=0;group!=null&&i<glen;i++){sStr = group.get(i).toString();String strSql1 = "select * from Course where Cno='"+sStr+"'";ResultSet rs1=stmt.executeQuery(strSql1);while(rs1.next()){String S_Cno = rs1.getString("Cno");String S_Ctime=rs1.getString("Ctime");String S_Cname=rs1.getString("Cname");String S_Cplace=rs1.getString("Cplace");String S_CWeek=rs1.getString("CWeek");String S_Cperiod=rs1.getString("Cperiod");if(S_CWeek.equals(Sk) && S_Ctime.equals(Sj)){check=1;%><td align="center"><%= S_Cname %> <%= S_Cplace %></td><!--在此处添加课表内容--><%}}rs1.close();}if(check==0){%><td align="center">无</td><%}}%></tr><%}%></table></body></html>4系统测试测试日志编号:001编号:002编号:003编号:004。