1、教务管理系统课程设计软件工程课程设计说明书教务管理系统学生姓名学 号所在专业计算机科学与技术所在班级指导教师提交时间 第一章 绪言教务系统管理平台充分利用互联网络B/S管理系统模式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务系统,用一个帐号解决学校教务教学管理,并且学校可以自由选择学校需要的教务管理系统,灵活地定制符合学校自己实际情况的教务系统1.1 系统及需求分析 1.1.1 系统需求通过调查,要求系统需要有以下功能: 由于操作人员的计算机知识普遍较差,要求有良好的人机界面; 由于该系统的使用对象多,要求有较好的权限管理; 原始数据修改简单方便,支持多条件修改 方便
2、的数据查询,支持多条件查询; 在相应的权限下,删除数据方便简单,数据稳定性好; 数据计算自动完成,尽量减少人工干预;1.1.2可行性分析由于本系统管理的对象单一,都是在校学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。且学校用于学生管理的微机都是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。本系统的设计是在Window XP中文版操作系统环境下,使用VS2005开发成功的。数据库是SQL2005,在开发过程中,如何选择
3、数据库管理是一个重要的问题,目前,数据库产品较多、开发工具也很多。每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,在选择开发工具时也考虑它的健壮性、可移性、安全性等问题。1.2系统功能简介本系统主要可以实现以下的管理功能:教师管理、学生管理、课程管理、班级管理、成绩管理等等。1.2.1 项目规划教务管理系统是一个典型的数据库应用程序,由教师级管理、学生管理、课程管理、班级管理、成绩管理等模块组成,特规划如下:1.2.2 教师管理教师管理囊括了教师资料管理,教师资料添加的相关信息。a教师资料管理:可以按条件分类查询教师信息;如果没有选择条件,系统将查询
4、出全部的教师信息。可根据需要打印查询结果。b. 教师资料添加:按照教师号,姓名,所在院系等等信息添加到数据库中,并予以显示是否成功。1.2.3 学生管理a学生资料管理:可以按条件分类查询学生信息;如果没有选择条件,系统将查询出全部的学生信息。可根据需要打印查询结果。 b学生资料添加:按学号,姓名,所在院系等等信息添加到数据库中,并予以显示是否成功。c所在院系资料:可以按条件分类查询院系信息;如果没有选择条件,系统将查询出全部的院系信息。可根据需要打印查询结果。d所在专业资料:可以按条件分类查询专业信息;如果没有选择条件,系统将查询出全部的专业信息。可根据需要打印查询结果。1.2.4 成绩管理可
5、以对考试成绩进行查询,修改以及录入。也可以将补考通知单按指定格式进行打印,发放给学生。1.2.5 课程管理本模块包括课程资料管理,课程资料添加,课程类别资料等等功能a课程资料管理:可以按条件分类查询课程信息;如果没有选择条件,系统将查询出全部的课程信息。可根据需要打印查询结果。 b课程资料添加:按课程号,课程名,课程类别等等信息添加到数据库中,并予以显示是否成功。c课程类别资料:可以按条件分类查询课程信息;如果没有选择条件,系统将查询出全部的院系信息。可根据需要打印查询结果。1.2.6 用户管理此项功能只限管理员使用,管理登录用户的密码等信息和进行增加删除修改功能。1.2.7 系统开发的目标出
6、于本系统是学校学生管理的一个综合性的系统,本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。第二章 系统分析2.1业务流程分析2.1.1教师管理业务流程图2.1.2学生管理业务流程图2.1.3课程管理业务流程图2.1.4成绩管理业务流程图2.2数据流程分析2.2.1数据流程图由于本系统的数据模块较多,下面仅以学生成绩管理模块为例来进行编制。学生成绩管理系统0层数据流程图学生成绩管理系统1层数据流程图2.3数据存储分析:实体联系图数据模型设计。首先来做出学生成绩管理系统的E-R图,分析这个问题的实体,从系统分析可以知道,学生的成绩是由任课教师按照课程给出的,学生、课程、教师组成
7、了这个系统的三个实体。学生成绩管理系统中学生与课程的E-R图教师与课程这两个实体之间,是一对多联系;一位教师可以都多门课程,而一门课程对于学生成绩来说只能有一位教师(英语、高等数学有多位教师教,但对某个固定的学生来说只能有一位教师)。其E-R图,如下所示。教师与课程的E-R图组合到一起,得到最后的E-R图,有了E-R图,就可以设计数据库。下图为数据模型图。第三章 系统设计3.1软件模块结构设计3.1.1 系统方案确定通过对系统的调研与分析,系统主要应完成的功能有:教师管理,学生管理,课程管理,成绩管理,班级管理,用户管理。3.1.2 软件结构设计本系统在执行时,先根据不同的操作人员的需要来进行
8、相应的模块,然后可以输入数据或者进行其它的查询或浏览等操作;总体来说,本系统属于一个事务型管理系统。 3.2 数据库设计数据库采用了Microsoft的SQL20053.2.1 数据库表数据库关系图如下开发系统时涉及的表如下Class表字段名称类型宽度classIDchar7classNameVarchar12specialityIDChar5specialityNameVarchar30EntranceYearChar4MonitorIDChar10Course表字段名称类型宽度courseIDChar8coursenameVarchar20coursetypeIDvarchar3total
9、periodtinyintweekperiodtinyintcredithourtinyintremarkVarchar50Coursetype表字段名称类型宽度coursetypeIDvarchar3Typenamevarchar18DepartmentID表字段名称类型宽度departmentIDchar3departmentNamevarchar30departmentHeadChar8Grade表字段名称类型宽度studentIDChar10courseIDChar8GradeTinyintSpeciality表字段名称类型宽度specialityIDvarchar5specialit
10、yNameVarchar30DepartmentIDChar3Speciality_course 表字段名称类型宽度specialityIDChar5CourseIDChar8TermTinyintStudent表字段名称类型宽度studentID Char10studentNameVarchar10NationChar10SexChar2BirthdayDatetimeclassIDChar7TelephoneVarchar16CredithourTinyintRu_dataChar4AddressVarchar50Pwdvarchar16RemarkVarchar200Teacher表字段
11、名称类型宽度teachaerIDChar8teacherNameVarchar10deparmentIDChar3SexChar2technicalPostChar16TelephoneChar16HomeaddrVarchar50PwdVarchar16RemarkVarchar200User表 字段名称类型宽度usenameChar10MypasswordVarchar50Usertypevarchar20第四章 系统的功能 4.1 系统界面 4.1.1 系统登录界面4.1.2 系统主界面4.1.3 系统用户管理界面4.1.4 系统教师资料管理界面4.1.5 系统课程界面4.1.6 系统成
12、绩界面4.1.7 系统学生界面4.2 代码部分4.2.1 login.aspxusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public
13、 partial class _Default : System.Web.UI.Page SqlConnection sms_conn; public int PageCount, PageSize, RecordCount, CurrentPage; protected void Page_Load(object sender, EventArgs e) string sms_connstr = System.Configuration.ConfigurationManager.AppSettingssms_dbconn; /建立连接 sms_conn = new SqlConnection
14、(sms_connstr); protected void Button_logoin(object sender, EventArgs e) string str_pwd = this.mypassword.Text.Trim().Replace(, ); string sqlstr = select usertype from Users where username= + username.Text + and mypassword=password; SqlCommand cmd = new SqlCommand(sqlstr, sms_conn); cmd.Parameters.Ad
15、d(new SqlParameter(password, SqlDbType.VarChar, 50); cmd.Parameterspassword.Value = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str_pwd, MD5).ToString();/密码加密 sms_conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() = true) Sessionuser = this.username.Tex
16、t.Trim();/管理员用户,Session进行传值 Sessiontype = druserType.ToString().Trim();/管理员类型 FormsAuthentication.RedirectFromLoginPage(username.Text, false); sms_conn.Close(); else sms_conn.Close(); message.Text = 您必须输入有效的用户名和密码!; protected void Button_Cancel(object sender, EventArgs e) 4.2.2 class.aspxusing Syste
17、m;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.Data.SqlClient;using System.Configuration; public partial cla
18、ss _class : System.Web.UI.Page SqlConnection sms_conn; public int PageCount, PageSize, RecordCount, CurrentPage; protected void Page_Load(object sender, EventArgs e) string sms_connstr = System.Configuration.ConfigurationManager.AppSettingssms_dbconn; / 建立连接 sms_conn = new SqlConnection(sms_connstr)
19、; PageSize =8; if (!IsPostBack) /计算总共有多少记录 ListBind(); ViewStatePageIndex = 0; RecordCount = CalculateRecord(); lblRecordCount.Text = RecordCount.ToString(); /计算总共有多少页 if (RecordCount % PageSize) = 0) PageCount = (RecordCount / PageSize); else PageCount = (RecordCount / PageSize) + 1; lblPageCount.T
20、ext = PageCount.ToString(); ViewStatePageCount = PageCount; sms_conn.Open(); string sms_sqlstr2 = select specialityname from speciality; SqlDataAdapter sms_da2 = new SqlDataAdapter(sms_sqlstr2, sms_conn); DataSet sms_ds2 = new DataSet(); sms_da2.Fill(sms_ds2, T); sms_conn.Close(); DropDownList1.Data
21、Source = sms_ds2.TablesT; DropDownList1.DataTextField = specialityname; DropDownList1.DataValueField = specialityname; DropDownList1.DataBind(); sms_ds2.Clear(); sms_ds2.Dispose(); /计算总共有多少条记录 public int CalculateRecord() int intCount; string strCount = select count(*) as co from class; sms_conn.Ope
22、n(); SqlCommand MyComm = new SqlCommand(strCount, sms_conn); SqlDataReader dr = MyComm.ExecuteReader(); if (dr.Read() intCount = Int32.Parse(drco.ToString(); else intCount = 0; dr.Close(); sms_conn.Close(); return intCount; public ICollection CreateSource() int StartIndex; /设定导入的起终地址 StartIndex = Cu
23、rrentPage * PageSize; string strSel = select * from class,student,speciality where class.specialityid=speciality.specialityid and class.monitorid=student.studentid; DataSet ds = new DataSet(); SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,sms_conn); MyAdapter.Fill(ds, StartIndex, PageSize, gu
24、est); return ds.Tablesguest.DefaultView; #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) / / CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 / InitializeComponent(); base.OnInit(e); / / 设计器支持所需的方法 - 不要使用代码编辑器修改 / 此方法的内容。 / private void InitializeComponent() this.Load += new System.EventHandl
25、er(this.Page_Load); #endregion public void ListBind() sms_class.DataSource = CreateSource(); sms_class.DataBind(); lbnNextPage.Enabled = true; lbnPrevPage.Enabled = true; if (CurrentPage = (PageCount - 1) lbnNextPage.Enabled = false; if (CurrentPage = 0) lbnPrevPage.Enabled = false; lblCurrentPage.T
26、ext = (CurrentPage + 1).ToString(); public void Page_OnClick(Object sender, CommandEventArgs e) CurrentPage = (int)ViewStatePageIndex; PageCount = (int)ViewStatePageCount; string cmd = e.CommandName; /判断cmd,以判定翻页方向 switch (cmd) case next: if (CurrentPage 0) CurrentPage-; break; ViewStatePageIndex =
27、CurrentPage; ListBind(); public void DataList_EditCommand(object sender, DataListCommandEventArgs e) sms_class.EditItemIndex = e.Item.ItemIndex; sms_class.SelectedIndex = -1; ListBind(); public void Datalist_CancelCommand(object sender, DataListCommandEventArgs e) sms_class.EditItemIndex = -1; ListB
28、ind(); public void Datalist_UpdateCommand(object sender, DataListCommandEventArgs e) TextBox spename, cname, ent, monname; Label cid; cid = (Label)(e.Item.FindControl(Lblcid); spename = (TextBox)(e.Item.FindControl(TextBox2); cname = (TextBox)(e.Item.FindControl(TextBox4); ent = (TextBox)(e.Item.FindControl(TextBox3); monname = (TextBox)(e.Item.FindControl(TextBox1); string sms_sqlstr2 = update class set monitorid