asp net课程设计教师信息管理系统.docx
《asp net课程设计教师信息管理系统.docx》由会员分享,可在线阅读,更多相关《asp net课程设计教师信息管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
aspnet课程设计教师信息管理系统
教师信息管理系统
1.课程设计的目的
为了进一步巩固课堂上所学到的知识,锻炼解决实际问题的能力。
利用一周时间,使用VisualStudio2010开发工具完成教师信息管理系统的分析设计和开发。
教师信息管理系统其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,对于前者要求建立起数据库一致性和完整性、安全性好的数据库。
而对于后者则要求应用程序功能完备,易使用的特点。
经过分析,我们使用易于与数据库连接的VisualStudio开发工具,利用其提供的各种面向对象的开发工具,尤其是数据库窗口这一功能强大而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原形,然后对初始原型系统进行需求分析,不断修正和改进,直到形成用户满意的可行系统。
本系统采用软件工程的指导方法,选用B/S模式设计的方案,应用SQLServer2008数据库管理系统,VisualStudio2010开发工具等开发出来的基于WINDOWS系列的教师信息管理系统.该系统面向各部门和全体教师,实现对教师的信息以及公告,通讯情况,又要实现信息共享等。
只有进行实际操作,才能将理论知识和实际应用有机的结合起来。
2.设计方案论证
2.1系统分析
(1)对系统的简要描述
使用了先进的数据库技术与数据管理技术,使数据的准确性与安全性得到了很大的提高,且在用户的并行操作与用户管理方面也有了极大地改善。
(2)行性分析
研究在当前的具体条件下,开发新系统是否具备必要的资源和其它条件。
一般说来,应从技术可行性、经济可行性、运行可行性等方面研究可行性。
可行性研究需要的时间长短取决于工程的规模,一般说来,可行性研究的成本只占预期的工程中成本的5-10%。
(3)技术可行性分析
技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户(这里是校方)提出的要求(如计算机的容量、速度等)。
此外,还要考虑开发人员的水平,作为计算机专业毕业的学生,数据库设计方面对于我们应该还过得去,在学校里生活了五年,对这个管理模式应该比较熟悉。
我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,从一定程度上具备了开发一个小型系统的能力。
(4)经济可行性
主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。
这是个超小型的管理系统,从投入的人力,财力与物力来讲是非常之小的,只要一台电脑,一台打印机,这个系统就可以搞起来。
从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作,可以给教学管理提高一个层次。
(5)运行可行性
Internet正在迅猛发展,学院从硬件到软件都投入了大量的人力、物力、财力,在教务上,给各个办公室配置了计算机,并能联接到互联网,并且学院领导对这方面比较重视,在教务上配置了一定数目的能够训练操作计算机的干事,可以快速、方便、高效地使用计算机进行日常工作。
学院开展了计算机及其维修专业,可让学生以实践方式对系统进行维护,使此系统在实践上具备了可行性。
由此可知,开发教师信息管理系统在学校中具有可行性。
2.2需求分析
任何一个组织或是集体,实现它内部人员的管理或是各个部门的协同工作都是必要的。
作为一个学校,要管理许多教师的档案以及考试,奖惩情况,又要实现信息共享,愈来愈成为老师们管理的一个难题。
因此,一个便利的教师信息管理系统在众人的期盼中需要实现。
随着因特网发展的日新月异,人们利用网络来实现相互之间的协同工作以及资源共享越来越成为时代的潮流,一个不可扭转的趋势。
目前,因特网已经深入到我们生活的各个领域——学校,银行,医院,公司,企业等等。
因此,我们在这里用VisualStudio2005和SQLServer2008开发教师信息管理更是顺应了时代发展的方向。
我们要实现的系统主要面向一个中小学校。
各个部门或老师的主要任务是实现相应的信息发布,更新,录入工作,而教师则主要实现信息的反馈,相应的查询事件。
要实现这个系统,需要先调研,弄清楚各个部门和教师的需求情况,以便于有的放矢。
系统的开发过程需要两台机器,需要安装win2000/xp服务器版以及完成相关的配置。
开发由本人独自开发。
程序完成以后,需要调试运行,整个实现需要一个星期左右。
(1)需求
教师档案管理:
教师的基本信息与个人情况。
(2)性能需求
该档案管理系统主要实现的是信息的录入,发布,更新,因此,不管对学校管理的需要或是教师获知信息的需要以及各个部门之间的紧密衔接关系,网上的数据必须具有高度的完整性和准确性,这就要求系统的高度安全性,可维护性,可靠性及灵活性。
比如教师档案管理,老师在录入档案的时候或是数据库出现异常而产生差错,可能会影响教师奖惩的评定或是造成不该重修的出现重修情况,这就要求系统具有高度的安全性,可维护性和可靠性;灵活性指的是系统要具有强大的功能以适应不同层次的用户不同的需求。
另外,系统的操作界面要求简便,通俗,以便于操作。
2.3系统设计
模块设计
模块是软件结构的基础,软件结构的好坏完全由模块的属性体现出来,把软件模块化的目的是为了降低软件复杂性,使软件设计,测试,调试,维护等工作变得简易,但随着模块数目的增加,通过接口连接这些模块的工作量也随之增加。
从这些特性可得出如图九的一条总的成本(或工作量)曲线,在考虑模块化时,应尽量使模块数接近于图中的M,它使得研制成本最小,而且应尽量避免不足的模块化或超量。
功能分配从程序的结构中可以看出,教师的信息输入功能是由教师进行的。
教师的信息输出功能是由管理员进行的。
教师活动的信息输入输出也是由管理员进行的。
接口设计
由于系统的各种内外部接口是通过借助数据库开发软件来实现的,是完全在数据库内部操作的,故在此略过此内容。
根据使用人员对信息、信息处理和信息安全性、完整性的要求,分别对用户的信息需求目标进行分析:
(1)登录模块:
为了每位教师的个人安全,在进入系统之前先要进行登录,设置了用户名和密码,来保护教师个人信息。
(2)教师模块:
设置修改信息、查看通信录、查看公告等信息处理功能。
(3)管理员模块:
设置了添加教师、查看通信录、查看公告等信息。
分别从教师和管理员对主要功能模块进行描述。
系统功能如图1所示
教师信息管理系统
图1模块图
2.4数据库的设计
进行数据库程序设计,首先要做的工作就是设计数据库表格,就是设计每一个表应该由哪几列构成,这项工作看似很简单,实际上是很复杂的,实现得不好,会使表格中产生大量的重复性数据,造成存储空间的浪费,还有可能造成记录内容的不一致,即所谓的存储异常问题。
数据表格的设计是很重要的,如果设计的不合理,将会带来大量的问题。
为了解决上面这个问题,我们应该将上述表格分成几个表格,具体的如何分解表格才算符合要求,这就需要用到数据组织的规范化形式。
在数据的规范化表达中,一般将一组相关联的数据称为一个关系,而在这个关系下的每个数据指标项则被称为数据元素,这种关系落实到具体数据库上就是基本表,而数据元素就是基本表中的一个字段。
规范化表达还规定在每一个基本表中必须定义一个数据元素为关键字,它可以唯一的标识出该表中其他相关的数据元素。
在规范化理论中表是二维的,它具有如下四个性质:
(1)在表中的任意一列上,数据项应属于同一个属性。
(2)表中所有行都是不相同的,不允许有重复组出现。
(3)在表中,行的顺序无关紧要。
(4)在表中,列的顺序无关紧要,但不能重复。
ASP.NET是借助SQLServer2008来实现的数据库对数据进行统一管理的。
在教师信息管理系统中需创建SQLServer2008数据库“教师信息管理系统”,该数据库包含的表有Admin(管理员信息表)、tblUser(职员信息表)、Teacher(教师表)、Notice(公告信息表)、TeacherAddressBook(教师通讯录表)。
2.4.1Admin管理员信息表
表1Admin表
字段名称
数据类型
允许空
字段说明
username
nvarchar(50)
否
管理员登录名
password
nvarchar(50)
否
管理员密码
addtime
datetime
否
管理员注册时间
2.4.2tblUser职员信息表
表2tblUser表
字段名称
数据类型
允许空
字段说明
username
nvarchar(50)
否
职员登录名
password
nvarchar(50)
否
职员密码
addtime
nvarchar(50)
否
职员注册时间
2.4.3Teacher教师表
3Teacher表
字段名称
类型
长度
允许空
是否主键
字段说明
operator_id
文本
50
否
是
教师编号
operator_name
文本
50
否
否
教师姓名
operatorlevel
文本
50
否
否
教师密码
operator_level
文本
50
否
否
确认密码
operator_phone
文本
50
否
否
电话
2.4.4Notic公共表
表4Notice表
字段名称
数据类型
允许空
字段说明
PID
int
否
公告ID
PName
nvarchar(100)
否
公告名称
CID
int
否
公告类别ID
PCTime
money
否
公告时间
PFPrice
money
否
公告必读
2.4.5TeacherAddressBook教师通讯录
表5TeacherAddressBook表
列名
数据类型
允许空
字段说明
PName
nvarchar(50)
否
教师名称
Phone
int
否
教师号码
PCPrice
money
否
教师编号
Email
nvarchar(50)
否
用户Email
OState
int
否
状态
表6Placard表
序号
列名
数据类型
长度
标识
主键
允许空
字段说明
1
Id
int
4
√
√
公告编号
2
Title
nvarchar
100
标题
3
Body
ntext
16
正文
4
DateAdded
datetime
8
添加日期
数据库管理,利用MicrosoftSQLServer2008数据库管理系统来建立及管理本教师信息管理系统的数据库Teacher.MDF。
2.5面向对象的程序设计
(1)面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和重用性,便于程序的维护与扩展。
(2)所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。
一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。
对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。
用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。
(3)类可视为一个产品模具、一个模块。
在面向对象设计中,类是对象的原型,是对象的制作器。
类的概念是面向对象程序设计最重要的特征。
所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任意对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
(4)面向对象设计的核心是类的设计。
例如:
可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。
只要资源和时间不加以限制,所有的项目都是可行的,然而,由于资源缺乏和交付时间限制的困扰,给基于计算机系统的开发带来了困难。
因此对软件项目的可行性做出细致而谨慎的评估是十分必要的。
如果在定义阶段尽早发现将来可能在开发过程中遇到的问题,及早做出决定,可以避免大量的人工,金钱,时间上的浪费。
因此,我在开发教师信息管理系统之前,对本次开发的可行性进行了分析。
3.设计结果与分析
3.1用户登录模块的实现
在整个教师信息管理系统中,首先要做的就是系统的登录。
只有有正确用户名及密码的用户才能进入系统界面,系统登录界面如图2所示。
图2用户登录界面
系统登录的主要代码如下:
publicpartialclassMyControl_UserLogin:
System.Web.UI.UserControl
{
BaseClassbc=newBaseClass();
protectedvoidPage_Load(objectsender,EventArgse)
{
}
#region登录函数
protectedvoidbtnLogin_Click(objectsender,EventArgse)
{
//先连接
if(txtPwd.Text==""||txtName.Text=="")
{
Response.Write(bc.MessageBox("用户名和密码不能为空"));
return;
}
if(rdoBtnAdmin.Checked)//管理员登录
{
DataSetds=bc.GetDataSet("selectcount(*)fromsy_sysUserwhereuserName='"+txtName.Text+"'anduserPwd='"+txtPwd.Text+"'andsystem=1","sy_sysUser");
if(ds.Tables[0].Rows.Count>0)
{
//如果登录成功,则记录登录时间;
bc.SqlExecute("updatesy_sysUsersetlogintime='"+DateTime.Now+"',sign=1whereuserName='"+txtName.Text+"'");
//存储登录用户名;
Session["LoginName"]=txtName.Text;
//转入管理页面;
Response.Redirect("~/SystemDefault.aspx");
}
else
{
Response.Write(bc.MessageBox("用户名和密码错误!
"));
return;
}
}
else//普通用户登录
{
DataSetds=bc.GetDataSet("selectuserNamefromsy_sysUserwhereuserName='"+txtName.Text+"'anduserPwd='"+txtPwd.Text+"'andsystem=0","sy_sysUser");
inti=ds.Tables[0].Rows.Count;
if(ds.Tables[0].Rows.Count>0)
{
bc.SqlExecute("updatesy_sysUsersetlogintime='"+DateTime.Now+"',sign=1whereuserName='"+txtName.Text+"'");
Session["LoginName"]=txtName.Text;
Response.Redirect("~/SystemDefault.aspx");
}
else
{
Response.Write(bc.MessageBox("用户名和密码错误!
"));
return;
}
}
}
#endregion
protectedvoidbtnCancel_Click(objectsender,EventArgse)
{
this.txtName.Text="";
this.txtPwd.Text="";
}
}
3.2主界面
这里是用户登录后看到的第一个界面,在主界面中可以进行查看公告,查看教师信息,修改教师信息和查看教师通信录。
主界面如图3所示
图3主界面
主界面程序代码如下:
TreeViewID="tree_SysUser"runat="server"ImageSet="Simple"NodeIndent="10"
ShowLines="True">
VerticalPadding="0px"/>
TreeNodeChecked="True"Text="公告管理"Value="公告管理">
TreeNodeText="查看公告"Value="查看公告"NavigateUrl="~/ManageInfo/NoticeList.aspx"Target="MainFrame">
TreeNode>
TreeNodeText="发布公告"Value="发布公告"NavigateUrl="~/ManageInfo/NoticeIssue.aspx"Target="MainFrame">
TreeNode>
TreeNode>
TreeNodeText="教师信息管理"Value="教师信息管理">
TreeNodeNavigateUrl="~/ManageInfo/addteacher.aspx"Target="MainFrame"Text="添加老师"
Value="添加老师">
TreeNode>
TreeNode>
TreeNodeNavigateUrl="~/ManageInfo/tongxun.aspx"Target="MainFrame"Text="老师通讯录"
Value="老师通讯录">
TreeNode>
NodeSpacing="0px"VerticalPadding="0px"/>
TreeView>
TreeViewID="tree_PubUser"runat="server"ImageSet="BulletedList3"ShowExpandCollapse="False">
TreeNodeText="公告"Value="公告">
TreeNodeText="查看公告"Value="查看公告"NavigateUrl="~/ManageInfo/NoticeList.aspx"ShowCheckBox="False"Target="MainFrame">
TreeNode>
TreeNode>
TreeNodeText="教师信息"Value="教师信息">
TreeNodeText="修改信息"Value="修改信息"NavigateUrl="~/ManageInfo/update.aspx"Target="MainFrame">
TreeNode>
TreeNode>
TreeNodeNavigateUrl="~/ManageInfo/tongxun.aspx"Target="MainFrame"Text="教师通讯录"
Value="教师通讯录">
TreeNode>
VerticalPadding="0px"/>
NodeSpacing="0px"VerticalPadding="0px"/>
TreeView>
3.3公告模块
公告模块主要功能可以进行查看学校发布的公告,查看之后对公告进行删除操作。
公告功能功能模块如图4所示。
图4公告功能模块界面
公告模块主要代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Session["LoginName"]==null)
{
Response.Write("");
}
if(!
IsPostBack)
{
DataSetds=bc.GetDataSet("select*fromsy_notice","sy_notice");
this.DataList1.DataKeyField="noticeID";
DataList1.DataSource=ds;
DataList1.DataBind();
}
}
protectedvoidDataList1_DeleteCommand(objectsource,DataListCommandEventArgse)
{
intid=(int)DataList1.DataKeys[e.Item.ItemIndex];
bc.SqlExecute("deletefromsy_noticewherenoticeID='"+