主页 > 案例大全 > 论文案例实践-实验室排课管理系统

论文案例实践-实验室排课管理系统

2021-05-14 13:08:52

  步入二十世纪以后,工业革命的爆发,计算机事业的发展,逐渐产生了第四代计算机。用计算机的地方越来越多了。教育事业的发展,多种多样的特色学校被设立起来了,越来越多的社会人士也会选择到学校里面教教书,逐渐的学校开始面临对教师课程安排过于复杂的问题,一个学校,每个学科每天的课程以及教师的分配,使得人工排课管理的工作量迅速的增加,传统的人工的处理方式已经跟不上飞速发展的网络时代,大量教师课程安排难于通过传统人工的方法进行管理。排课管理工作如采用传统的人工管理方式,就存在着不少的缺点,如:效率低,易混乱,易遗漏,不匹配,容易出现冲突等等。这就非常需要人们能利用起来计算机技术来解决学校管理者对于教师课程安排的自动化、安排课程合理的问题,开发一个自动的排课管理系统就可以解决这些问题了。如果选择了合适的开发工具,来开发一个排课管理系统,将会帮助学校提高工作效率,实现排课管理工作流程的系统化、规范化和自动化。排课管理系统可以分为登录、修改密码、排课、自动排课、手动排课、查看课表这几种功能。

  排课管理系统是学校的重要组成部分,排课管理系统提供了从选派老师到 段级,课表安排到时间的完整的一整套体系。系统可以安排教师的日常管理,开发排课管理这个程序可以高效快速的完成教师的排课调课等操作,减少了人工的浪费,完成了及时的线上交流,且任务得到了分配又避免了冲突,极大地节约了人工成本。促进了教务处的管理信息化的发展,适应了当下时代的发展。该系统包含了教师和学生的登录,教师可以网上调课、排课,通过数据库里面输入的信息进行择优选择,课程在一周的时间里面尽量安排的分布均匀,从而给学生一定的消化时间,可以帮助学生更好的理解。学生可以网上查阅自己的课表进行选课和退课操作,同学可以便捷的知道自己的课程信息。

  2、选题意义

  (1)推进教育发展的进度,高效快捷的完成教师排课和学生选课,保障了教学任务的正常运行,减少人工的消耗,带来高效率的方案。

  (2)节省人工去翻阅教室安排表的时间,在线上完成基本的的交流,让教师能快速了解到什么时间段哪些教室是空着的,更快速的完成教务的管理,达到规范排课管理和高效率的成效,从根本上节约了时间,节省了资源。

  (3)教师调课更轻松,了解各个时间段教室的安排和自己课程的具体情况,省去了需要自己去一个个查阅的麻烦,线上审批请假也给领导便利。

  (4)其他教师或者程序员输入的各项基础信息很好的保存了下来,方便了避免日后的相同信息的重叠,提高了老师在进行调课的效率。

  (5)网站的设计方式让其更合理化,可以随时查看自己的课程信息以及进行简单的调课的操作,方便了操作以及后期维护、信息更新。

  (6)选用visual studio 2012设计语言来开发项目让我可以进一步的熟悉项目开发的流程,了解各项工具的使用,可以使我快速的融入到工作的环境中去,提高自身的专业能力,加强学习能力和工作经验。

  (二)开发工具

  1、Visual Studio 2010

  Visual Studio有许多版本,就和windows有家庭版初级版一样,首先我们需要先去网站上查找资源,保存你需要的版本的链接,下载解压,运行里面的setup.exe安装。安装完成后我们还需要进行一些简单的配置,我们需要选择visual c++的开发设置,然后在菜单工具栏里面可以设置字体以及颜色,当我们在单击工具栏的空白区域的时候,就可以直接把工具栏调出来给自己使用,既节约了时间,又方便了我们的操作。这样我们就可以方便地直接地在工具栏上面选择你要编译的项目,并且在vs2010里面可以进行编译整个解决方案、运行程序、调试程序等等操作。在单击了自定义下面的添加按钮后,就可以添加新的按钮。另外在软件里面不能单独编译一个.cpp文件或者一个.c文件,他们必须依赖于某一个项目而存在。

  2、SQL Server

  我们都知道SQL Server是微软发布的新一代数据平台产品,全面支持云技术与平台,它具有使用方便、伸缩性好、集成度高等特性。在发布这个版本的时候提出“大数据”代替“云”的口号,与此同时SQL Serve还增加了许多新功能,比如分布式回放、增强的Power Shell支持、增强审计功能等等。此外系统还提出了更多要求,支持的操作系统更多了有Windows 7、windows server 2008 R2,开始支持32位系统以及64位系统,性对于来说选择了速度更快的处理器,最低1GB RAM。

  3、C#

  C#语言是一门比较新的程序开发语言,由微软公司开发,是一种现代的、通用的、面向对象的编程语言,拥有c语言和c++的强大功能以及有简单易用的特点,开发逻辑清晰明了,同学学习起来也比较容易,它对程序的控制方便,虽然C#没有像Java语言那么强大,但是用来开发中小型的实验室排课系统C#语言就再合适不过了。因为C#语言是基于.NET开发出来的,是.NET框架的一部分,所以在开发Web应用程序时可以选择性的使用.NET编程语言来开发。C#语言具有语法简单,执行方便的特点,开发人员在进行系统开发时可以灵活使用。C#非常接近于c语言和c++,所以C#语言的语法是基于C++语言而来的,但与C++相比,C#语言更加地简单、容易操作、学习、产生高效率的程序。同时C#语言去除了C++语言中一些不重要的部分,这样可以减轻程序员的开发负担。系统程序、普通的电脑应用程序以及高级手机程序都能够通过C#来进行编写,正是因为C#语言的高效率,所以在考虑开发实验室排课系统时我选择采用了C#系统。

  4、B/S结构

  B/S和C/S都是互联网的发展而出现的一种网络结构模式,而且用的非常广泛。首先,简单来说B/S就是浏览器/服务器模式,随着物联网的发展,这种模式统一了客户端,能够让比较核心的任务得以在服务器端完成,人们只需要在自己的电脑或者手机上面安装一个浏览器就可以让信息交互,比如在日常的生活中我们使用手机去搜索浏览就是应用了B/S结构的交互,所以就便利而言,B/S只需要简单维护服务器端就好了。而C/S就是客户端/服务器模式,在处理时需要将处理的东西分配到客户端与服务器上,如此就降低了通信成本,相反的是在升级维护上很困难,比如我们手机上常常下载的微信、QQ等。虽然B/S是C/S的改进版,它有不可避免的缺陷,比如通信开销大、系统和数据的安全性难以保障。B/S框架是目前被广泛采用的一种最流行的网络架构,它是一种基于互联网的程序架构。当前的使用已经非常广泛,从C/S框架改进来的,可以说是三层C/S构架,这一改进给程序开发的模式带来新的技术革命。B/S从C/S中脱离出来,随着web技术的发展而发展,两种模式有他自己的特色优势,在不同的系统里,可以交叉着进行使用,这样就可以保证了数据的安全性。我们开发的是一套实验室排课系统,所以我们可以把排课系统系统配置在远程的服务器上,在得到访问权限之后,只要能够上网就可以使用和访问该系统并进行相关的操作,在这样的模式下,我们之后只需要对服务器上的程序进行维护,就可保证程序的正常使用,从而大大的提高了工作效率,来降低了维护的成本。

  (三)主流技术

  1、ASP.NET技术

  ASP全程(Active Server Pages)是用于Web应用开发的一种编程技术,属于WebForm,简单的说也就是B/S模式的开发。将程序在服务器端首次运行时进行编译。ASP.NET提供了新的编程模式可以让程序更加安全伸缩性也更强,ASP.Net的最大特点是强大的伸缩性和多种开发工具的支持,语言灵活些,无论采用C语言、C++语言、C#语言对软件系统进行开发,在软件系统的运行和编译过程中同样的都被编译成一种通用的中间的语言程序,不影响软件系统的运行效率,是一种全新的、多语言支持的先进开发框架。ASP.Net软件系统框架具有良好的结构、扩展性、简易型性、可用型性、可缩放性、可管理型性、高性能的执行效率的特点,所以使它成为了目前为止最流行的Web开发技术。这种设计在第一次执行后,不用重新编译就能够直接运行,在速度和效率上都比ASP要高。ASP.NET在代码方面,可以达到完全分离的效果,但是把它与ASP相比,ASP.NET的代码要少一些。所以在开发排课管理系统这个程序时,我们优先的选择了ASP.NET技术。

  2、B/S框架

  B/S和C/S都是互联网的发展而出现的一种网络结构模式,而且用的非常广泛。首先,简单来说B/S就是浏览器/服务器模式,随着物联网的发展,这种模式统一了客户端,能够让比较核心的任务得以在服务器端完成,人们只需要在自己的电脑或者手机上面安装一个浏览器就可以让信息交互,比如在日常的生活中我们使用手机去搜索浏览就是应用了B/S结构的交互,所以就便利而言,B/S只需要简单维护服务器端就好了。而C/S就是客户端/服务器模式,在处理时需要将处理的东西分配到客户端与服务器上,如此就降低了通信成本,相反的是在升级维护上很困难,比如我们手机上常常下载的微信、QQ等。把系统的核心功能集中在服务器上,以此简化了系统的开发、维护、使用。B/S具有方便维护的特点所以不用安装软件也可以操作。但是虽然B/S是C/S的改进版,它也有不可避免的缺陷,比如通信开销大、系统和数据的安全性难以保障等等。B/S框架是目前被广泛采用的一种最流行的网络架构,它是一种基于互联网的程序架构。当前的使用已经非常广泛,从C/S框架改进来的,可以说是三层C/S构架,这一改进给程序开发的模式带来新的技术革命。B/S从C/S中脱离出来,随着web技术的发展而发展,两种模式有他自己的特色优势,在不同的系统里,可以交叉着进行使用,这样就可以保证了数据的安全性。

  二、系统分析

  (一)需求分析

  在实际生活中,每一天都难免会遇到老师突然有事需要调课的现象,如果单纯靠人工来完成的话,需要提前了解已经被使用了的教室编号和剩余的教室编号,甚至要知道因为特殊的原因本来预定了后来又取消了的教室编号等等,总而言之人工可以完成排课任务但是确实极其复杂。所以开发本系统就是要在有限的教学环境里,确定哪位教师上课、在哪间教室上课以及课程的安排,然后能够根据各个方面的特殊原因对课程做出相应的调整,同时节约了时间。更多时候在排课时遇到的问题会是多个 段级同时需要使用教室,这时候系统就会以整个学校作为一个单位,进行最优化的时间的安排、课程的安排、教室的安排。这样既符合了学校老师的教学要求又节省了时间与人力,而且本系统简单易操作。

  (二)业务分析

  在可以进行排课前需要教师把课程输入进去,根据数据库的内容进行筛选,计算机的速度很快就会给出结果,当你对结果不满意的时候你还可以对过程提出帅选条件比如教室的容纳人数,这样可以使结果令人满意,在根本上节约了人工操作时查阅了解的时间,计算机操作的又不会有数据上的差错,避免了错写漏写的问题。预定教室记录,可以记录老师预定的教室,同时有预定的时间段,时间段以及预定老师对所有人可见。

  (三)功能模块设计

  1、系统登录模块

  学生、教师、管理员注册一个账号,用户可通过账号密码在已连网的系统上进行登录,账户密码正确了则可以进入到程序排课管控系统里,反之登录失败。

  2、修改密码模块

  登录系统成功后,有需求也可以修改密码。当用户进入修改密码的界面后,用户输入原密码、新密码,当用户输入无误后,点击确认修改按钮即可修改成功。

  3、学期管理模块

  在这个界面我们可以添加学期名称,教学周数,每天上课次数,每周上课天数,然后单击保存按钮。在这个界面我们同样可以看到已经存在的课程信息,对这个信息我们可以删除、修改、查询、保存。

  4、 段级管理模块

  在这个界面里,用户可选择添加、修改或删除 段级信息,其中 段级管理信息包括 段级名称、院系名、年级、专业名以及人数等信息,方便简单易操作。

  5、课程管理模块

  在用户登录后,可以填写任意课程名称、学时等来添加课程,最后点击提交信息按钮,完成操作。在课程管理界面,在课程管理界面可通过课程名称进行课程信息的快速查询,对已有课程管理员可进行修改、操作。

  6、课表和排课管理模块

  用户在该界面可以进行手动排课,然后可在课表管理界面可通过 段级、课程名称来进行课表的信息快速查询,对已有课表可进行修改、删除操作。

  (四)功能模块设计图

  功能模块如图1所示。

  图1系统功能模块图

  三、数据库设计

  (一)数据库E-R图

  对概念进行设计时采用实体—联系(E-R)的数据库图。E-R模型法的构成元素是实体、属性、联系这三个,数据模型可以用E-R图来表示,对实体特性的描述就是属性。

  1、 段级实体属性E-R图

  如图2-1所示.

  图2-1 段级实体属性图

  2、课程表实体属性E-R图

  如图2-2所示.

  图2-2课程表实体属性图

  3、科目实体属性E-R图

  如图2-3所示.

  图2-3科目实体属性图

  4、管理员实体属性E-R图

  如图2-4所示.

  图2-4管理员属性实体图

  5、学期实体属性E-R图

  如图2-5所示.

  图2-5学期实体属性图

  (二)表结构

  数据库中含有五张表,有用来记录当前用户的所有有关 段级信息的用户表Class 段级信息表,有包含课程内容的课程表信息表,有包含科目相关信息的科目信息表,有记录管理员的信息的管理信息表,有记录学期的相关信息的学期信息表。

  表1 段级信息表(Class)

  字段名称字段意义字段类型字段长度是否主键能否为空

  ID编号int 1,1是否

  Bname名称nvarchar 50否是

  num人数nvarchar 50否是

  表2课程表信息表(KeChengBiao)

  字段名称字段意义字段类型字段长度是否主键能否为空

  ID编号int 1,1是否

  xueqi学期nvarchar 50否是

  banji 段级nvarchar 50否是

  kecheng课程nvarchar 50否是

  jiaoshi教室nvarchar 50否是

  laoshi老师nvarchar 50否是

  jieci节次nvarchar 50否是

  xingqi星期nvarchar 50否是

  表3科目信息表(KeMu)

  字段名称字段意义字段类型字段长度是否主键能否为空

  ID编号int 1,1是否

  Kname名称nvarchar 50否是

  表4管理员信息表(LoginUser)

  字段名称字段意义字段类型字段长度是否主键能否为空

  ID编号int 1,1是否

  name用户名nvarchar 50否是

  Password密码nvarchar 50否是

  表5学期信息表(Xueqi)

  字段名称字段意义字段类型字段长度是否主键能否为空

  ID编号int 1,1是否

  Kname名称nvarchar 50否是

  四、系统实施

  1、数据库的连接

  在web文件中设置数据库连接字符串

  <appSettings>

  <add key="ConnectionString"value="server=.;database=paike;Integrated Security=True"/>

  </appSettings>

  sql server账号名

  sa

  sql server密码

  sasa

  2、登录模块

  功能:登录模块为每个员工提供了登录实验室排课管理系统的权限,其界面设计如图3所示:

  图3登陆界面

  用户通过注册得到一个账号密码,该用户通过网站进行登录实验室排课管理系统界面,输入用户名密码,若是账号密码正确则可以进入,不正确则登录不进去。

  关键代码:

  string sqlstr="select name,Password from LoginUser where name='"+this.username.Text.Trim()+"'";//通过用户名向数据库查询从而得到对应得密码

  SqlAdapter myAdapter=new SqlAdapter(sqlstr,scon);//数据的适配器

  Set myDataSet=new Set();//具体实例化dataset

  myAdapter.Fill(mySet,"LoginUser");//给数据库填充数据

  if(myDataSet.Tables[0].Rows.Count>0)//判断数据的表行数是否是大于0的

  {

  stringstrPwd=myDataSet.Tables[0].Rows[0]["Password"].ToString();//将密码转化为string类型

  string BaseEID=myDataSet.Tables[0].Rows[0]["name"].ToString();

  if(strPwd!=userpwd.Text.Trim())//判断密码正确性

  {

  this.LabelMsg.Text="密码错误!";

  }

  else

  {

  sqlstr="select name from LoginUser where name='"+this.username.Text.Trim()+"'";

  das.Fill(ds,"LoginInUser");

  if(das.Tables[2].Rows.Count>0)

  {

  Session["admin"]=username.Text.Trimi();//session传值为接下来的操作做准备

  Response.Redirect("main.aspx?name="+UserName);//跳转

  }

  else

  {

  this.LabelMsg.Text="对不起,没有此操作员!";

  }

  说明:这段代码采用form表单提交数据,验证用户的用户名密码的正确性,若正确,则用户可以进入排课管理系统,若失败,则会有信息提示,用户名或者密码错误,无法进入系统,最后把相应的值展示出来。

  3、密码修改模块

  功能:用户可以通过使用新密码来修改原密码,其界面设计如图4所示。密码修改模块可以让用户对自己的密码进行修改操作,输入自己的原密码后输入自己的新密码并确认新密码,确定输入无误后单击确认修改,则可成功。

  图4修改密码界面

  修改密码的关键代码:

  Alert alert=new Alert();

  if(!IsPostBack)

  {

  }

  ///<summary>

  ///修改密码

  ///</summary>

  private void UPpwd()

  {

  SqlHelper mydata=new SqlHelper();

  string name=Session["admin"].ToString();//将session传的值转化为字符串类型

  try

  {

  mydata.RunSql("update LoginUser set Password='"+txtpwd2.Text+"'where name="+name);//使用update更新语句实现修改密码功能

  Label4.Text="修改成功!";

  }

  catch

  {

  Label4.Text="修改失败!";

  }

  }

  ///<summary>

  ///检验原来的密码

  ///</summary>

  private void chkpwd()

  {

  SqlHelper data=new SqlHelper();

  SqlDataReader dr;

  dr=data.GetDataReader("select*from LoginUser where name='"+Session["admin"].ToString()+"'and Password='"+txtpwd1.Text+"'");//查询

  if(dr.Read())

  {

  UPpwd();

  }

  else

  {

  Label4.Text="原密码不正确!";

  }

  }

  chkpwd();

  }

  说明:这段代码通过txtUser和txtPwd的定义来完成两个控件对密码的修改,设置用户名的长度与密码的长度均不能小于1位,确定无误后,单击确认修改则会显示成功界面。

  4、学期管理模块

  功能:用户通过输入学期名称、教学周期、每周上课天数、每天上课节次完成学期信息的录入工作,使得数据库里面添加了更多的学期信息,为后期的手动或自动排课填充了数据,它的界面设计如图6所示。

  用户添加了学期信息之后还可以进入进行学期管理,比如查询、添加、等操作,方法简单易操作,在此界面用户既可以继续添加又可以查看前面录入的学期信息,它的设计界面如图7所示。

  图6添加学期界面

  图7学期管理界面

  添加学期信息的关键代码:

  string name=txtUser.Text.Trim();

  if(name.Length<1)

  {

  alert.Alertjs("长度不能小于1位");

  return;

  }

  data.RunSql("insert into Xueqi(name)values('"+txtUser.Text+"')");

  Label4.Text="添加成功!";

  txtUser.Text="";

  }

  protected void InitData()

  {

  SqlHelper mydata=new SqlHelper();

  GridView1.DataSource=mydata.GetDataReader("select*from Xueqi");

  GridView2.DataBind();

  }

  //GridView控件RowDeleting的事件

  SqlHelper mydata=new SqlHelper();//创建新的SqlHelper

  string ID=GridView2.DataKey[e.Rowdex].Values[2].ToString();

  try

  {

  mydata.RunSql("delete from Xueqi where id='"+ID+"'");

  Label4.Text="删除成功!";

  GridView1.EditIndex=-1;

  InitData();

  }

  catch

  {

  Label4.Text="删除失败!";

  }

  //GridView控件RowUpdating事件

  Protected void GridView1_RowCancelingEdit(object sender,GridViewCancelEditEventArgs e)

  {

  GridView1.EditIndex=-1;

  InitData();

  }

  //GridView控件RowEditing事件

  说明:通过button来实现学期管理的效果,通过添加删除修改等操作来实现基本操作,学期信息的输入为后面的自动排课提供了数据支持,对于用户的使用也很便捷,只需要鼠标单击按钮,进行简单的输入就可以完成。

  5、 段级管理模块

  功能: 段级管理模块可添加、修改和删除 段级的相关信息, 段级管理信息包括管理 段级名、院系名、年级、专业名以及人数的功能,界面设计如图8所示。

   段级管理模块是当系统的开发人员在需要修改 段级模块的相关信息时,可以通过添加、修改、删除等操作来实时完成信息的更新,来把发现的新的具体内容更新,使得后面的自动排课能够更加准确,这样主要是防止具体信息没有被了解,浪费了排课时间。

  图8 段级管理界面

  程序问题处理关键代码:

  SqlHelper mydata=new SqlHelper();

  string ID=GridView1.DataKeys[e.RowIndex].Values[0].ToString();

  try

  {

  mydata.RunSql("delete from Class where id='"+ID+"'");

  Label4.Text="删除成功!";

  GridView1.EditIndex=-1;

  InitData();

  }

  catch

  {

  Label4.Text="删除失败!";

  }

  }

  //GridView控件RowUpdating事件

  说明:通过form表单来,td里面设置表格的宽高,再对背景的颜色设置,可添加、修改和删除 段级信息, 段级信息包括 段级名、院系、年级、专业以及人数的功能。 段级管理模块是当项目的开发人员在需要修改 段级信息时,可以通过添加、修改、删除等操作来实时完成信息的更新,来把发现的新的具体内容更新,使得后面的自动排课能够更加准确,这样主要是防止具体信息没有被了解,浪费了排课时间。

  8、课程管理模块

  功能:课程管理模块为项目课程信息展示界面,界面设计如图9所示。

  工作实习记录模块可以通过点击输入框输入课程名称,选择课程的性质,输入总学时、理论学时、实验学时、周学时、选择自己想要的授课方式,最后提交信息,这样在自己的数据库中就有了这个课程的相关信息,在进行排课的时候就可以全方位的了解到这个课程的特性,选择出他的最优选择。后期因为特殊原因如果课程信息有变化了,可以直接进入课程管理界面进行增加、删除等基本操作,不用再重新全部要填写。

  图9添加课程界面

  图10课程管理界面

  工作实习记录关键代码:

  SqlHelper data=new SqlHelper();

  Alert js=new Alert();

  //制定出教学计划

  if(!IsPostBack)

  {

  Binderbanji();

  //Binderjiaoshi();

  Binderkecheng();

  Binderlaoshi();

  Binderxueqi();

  }

  }

  //学期

  private void Binderxueqi()

  {

  ddxueqi.DataSource=data.GetDataReader("select*from Xueqi");

  ddxueqi.DataTextField="name";

  ddxueqi.DataValueField="id";

  ddxueqi.DataBind();

  }

  // 段级

  private void Binderbanji()

  {

  ddbanji.DataSource=data.GetDataReader("select*from Class");

  ddbanji.DataTextField="Bname";

  ddbanji.DataValueField="num";

  ddbanji.DataBind();

  }

  //课程

  private void Binderkecheng()

  {

  ddkecheng.DataSource=data.GetDataReader("select*from KeMu");

  ddkecheng.DataTextField="Kname";

  ddkecheng.DataValueField="num";

  ddkecheng.DataBind();

  }

  //教师

  Server.Transfer("PlanMange.aspx");

  //用于检查一个老师是否已经带过了一个 段级的同样的课程如果带过就跳出选择其他老师进行排课

  SqlDataReader dr;

  string sql1="select*from PlanInfo where banjiid='"+ddbanji.SelectedValue+"'and kechengid='"+ddkecheng.SelectedValue+"'and laoshid='"+ddlaoshi.SelectedValue+"'";

  dr=data.GetDataReader(sql1);

  if(dr.Read())//查询整个表判断当前老师是否重复

  {

  js.Alertjs("该老师已经安排了一个 段级的一样的课程请选择其他老师");

  }

  else

  {

  //插入语句

  string sql="insert into PlanInfo(xuqi,xueqiid,banji,banjiid,kecheng,kechengid,laoshi,laoshid,xueshi)values('"+ddxueqi.SelectedItem.Text+"','"+ddxueqi.SelectedValue+"','"+ddbanji.SelectedItem.Text+"','"+ddbanji.SelectedValue+"','"+ddkecheng.SelectedItem.Text+"','"+ddkecheng.SelectedValue+"','"+ddlaoshi.SelectedItem.Text+"','"+ddlaoshi.SelectedValue+"','"+txttime.Text+"')";

  data.RunSql(sql);//执行

  Alert.AlertAndRedirect("操作成功!","PlanMange.aspx");//提示

  }

  说明:界面通过使用七个label、七个text box以及两个button把label的属性名分别输入课程的名称、课程性质、总的学时时间、理论学时时间、实验学时时间、周学时时间、授课方式,两个button分别属性名输入为提交信息和返回。同样的方法在课程管理界面进行搭建,只是需要把button做改变,可以有一个查询和修改按钮,这样系统生成的时候,可以直接输入自己需要修改的课程名称,这样就不用自己去寻找,修改也是直接把自己要修改的内容直接在原地方输入点击修改就可以了,简单方便又易操作。

  7、课表和排课管理模块

  功能:课表和排课模块为用户自己手动排课界面,也可以自动排课,界面设计如图11和图12所示。

  用户通过对学期、 段级、星期、课节、课程的选择,完成一门课的最基本的排课时间的安排,在手动排课查询结果界面可以看到课程安排的基本信息。在自动排课界面只需要单击自动排课按钮就可以直接生成课程安排表,同样的也可以直接看到所有自动生成课程的安排信息。

  图11手动排课界面

  图12自动排课界面

  课表和排课管理的关键代码:

  private void Bindjiaoxuejihua()//自定义方法

  {

  DropDownList1.DataSource=data.GetDataReader("select*from PlanInfo where chk='否'");

  DropDownList1.DataTextField="kecheng";

  DropDownList1.DataValueField="id";

  DropDownList1.DataBind();

  }

  //取得教室信息

  //插入代码

  string sql="insert into kechengbiao(xueqi,banji,kecheng,jiaoshi,laoshi,jieci,xingqi)values('"+Label8.Text+"','"+Label7.Text+"','"+Label6.Text+"','"+DropDownList5.SelectedItem.Text+"','"+Label5.Text+"','"+txtjieci.Text+"','"+txtWeek.Text+"')";

  data.RunSql(sql);

  data.RunSql("update PlanInfo set chk='是'where id='"+DropDownList1.SelectedValue+"'");

  js.Alertjs("排课成功!");

  }

  //取出一共本 段级有几个课程没有排课

  sum=data.ReturnSql("select count(id)as num from PlanInfo where banjiid='"+DropDownList1.SelectedValue+"'and chk='否'");

  int sumINt=int.Parse(sum);

  //循环对没有进行排课的课程进行排课

  for(int i=1;i<=sumINt;i++)

  {

  SqlDataReader dr;

  dr=data.GetDataReader("select*from PlanInfo where banjiid='"+DropDownList1.SelectedValue+"'and chk='否'");

  dr.Read();

  id=dr["id"].ToString();

  xueqi=dr["xuqi"].ToString();

  kecheng=dr["kecheng"].ToString();

  laoshi=dr["laoshi"].ToString();

  SqlDataReader Room;

  Room=data.GetDataReader("select*from Room");

  Room.Read();

  jiaoshi=Room["name"].ToString();

  Random r=new Random();

  jieci=r.Next(8).ToString();

  xingqi=r.Next(5).ToString();

  //判断同一个教室不能同时上同样的课程

  SqlDataReader dr2;

  string sql1="select*from kechengbiao where jiaoshi='"+jiaoshi+"'and jieci='"+jieci+"'and xingqi='"+xingqi+"'";

  dr2=data.GetDataReader(sql1);

  if(dr2.Read())

  {

  js.Alertjs("发生上课地点冲突再次点击排课进行排课直到排完本 段级课程为止。");

  }

  else

  {

  string sql="insert into kechengbiao(xueqi,banji,kecheng,jiaoshi,laoshi,jieci,xingqi)values('"+xueqi+"','"+DropDownList1.SelectedItem.Text+"','"+kecheng+"','"+jiaoshi+"','"+laoshi+"','"+jieci+"','"+xingqi+"')";

  data.RunSql(sql);

  data.RunSql("update PlanInfo set chk='是'where id='"+id+"'");

  js.Alertjs("排课成功!");

  }

  }

  Bindjiaoxuejihua();

  Server.Transfer("ClassSheetMange.aspx");

  }

  说明:界面通过使用label button等控件完成的,label用来输入名称,而button用来点击,通过增加、查询按钮对输入信息的查找。按钮的单击就可以完成基本操作,代码使按钮智能化,单击就可以自动排课。

  五、系统测试

  1、功能性测试

  功能性测试也叫行为性测试,只是需要来测试看看它的功能是否来实现出来,并不需要关心它的代码和结构是什么,主要是用来测试软件能否符合用户的需求。

  2、功能测试表

  表7功能测试表

  编号测试对象测试步骤预期结果实际效果

  1登录页面1.输入没有的用户名和密码用户名或密码有误用户名或密码有误

  2.输入正确的用户名和密码登录成功登录成功

  2手动

  排课

  结果

  查询手动排课排课成功排课成功

  查询排课结果显示结果显示结果

  自动排课点击即可排课排课成功

  查看排课结果显示排课结果显示排课结果

  查看课程表显示课程表排课成功

  3修改密码输入原密码新密码并且确认新密码修改密码成功修改密码成功

  4学期管理添加学期界面添加成功添加成功

  修改或查询学期相关信息修改或查询成功修改或查询成功

  5 段级管理添加或修改 段级的相关信息添加或修改成功添加或修改成功

  6课程管理输入一个课程的相关信息并提交课程信息添加成功课程信息添加成功

  对于课程的信息修改或查询修改或查询成功修改或查询成功

  六、系统使用说明

  1、安装数据库

  开发项目第一步要进行安装数据库SQL Serve,谷歌搜索sql serve找到sql serve的官网,打开下载项再点击了解更多,找到社区版sql serve,根据自己的需求选择版本,点击sql serve的安装程序,然后根据电脑的位数选择sql serve的版本,下载并安装程序,然后一直点击下一步,看到填写账号和密码的把自己想要的账号密码填入,最后完成数据库的安装。然后谷歌搜索Navicat进行下载,按照提示进行安装,装载完成后,打开安装完成的可视化工具,点击连接本地sql serve,输入刚才安装sql serve的账号及密码进行连接,然后单击左侧菜单建立数据库,然后新建连接,含有数据库文件把文本文件全部选择复制,然后粘贴到新建的连接中,选择执行就得到了所有数据表。

  2、连接数据库

  首先,打开vs2010,在菜单栏中的工具窗口的连接到数据库,随后会跳出选择数据源,在此窗口里选择Microsoft SQL Server,在弹出添加连接的窗口里面输入服务器名、用户名、密码并且选择数据库名,把数据库连接添加进去。

  说明:只需要修改用户名username和密码password为之前安装sql serve设置的账号密码。